]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
3 months agopatch 9.2.0208: MS-Windows: excessive scroll-behaviour with go+=! v9.2.0208
Yasuhiro Matsumoto [Thu, 19 Mar 2026 21:48:57 +0000 (21:48 +0000)] 
patch 9.2.0208: MS-Windows: excessive scroll-behaviour with go+=!

Problem:  MS-Windows: excessive scroll-behaviour with go+=! after
          switching to ConPTY as default (after v9.2.0048).
Solution: Use tl_cursor_pos to determine the number of lines to scroll
          (Yasuhiro Matsumoto).

Since patch 9.2.0048 (71cc1b12) made ConPTY the default on Windows 11,
running :!cmd with guioptions+=! scrolls up the entire window height
instead of only the output lines.

ConPTY damages all terminal rows on initialization even when they are
empty, which causes tl_dirty_row_end to equal Rows.  The scroll-up loop
in update_system_term() then scrolls the full screen because
(Rows - tl_toprow) < tl_dirty_row_end is always true until tl_toprow
reaches 0.

Use the cursor position instead of tl_dirty_row_end for the scroll
calculation, since it reflects where actual content has been written.

The scroll bug only occurs with ConPTY.  With winpty the terminal
finishes too quickly for the timer-based screen check to work.

closes: #19735

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0207: MS-Windows: freeze on second :hardcopy v9.2.0207
Yasuhiro Matsumoto [Thu, 19 Mar 2026 21:40:25 +0000 (21:40 +0000)] 
patch 9.2.0207: MS-Windows: freeze on second :hardcopy

Problem:  MS-Windows: freeze on second :hardcopy
          (antoniopaolini)
Solution: Enable PrintHookProc in GUI mode to ensure the print dialog is
          brought to the foreground (Yasuhiro Matsumoto).

Enable PrintHookProc for GUI mode so that the print dialog is brought
to the foreground via BringWindowToTop/SetForegroundWindow.  Without
the hook, the second PrintDlgW() modal dialog appears behind gvim due
to Windows foreground lock timeout, making gvim unresponsive.

Also add NULL checks for hDlgPrint in SendMessage calls.

fixes:  #19715
closes: #19754

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0206: MS-Window: stripping all CSI sequences v9.2.0206
Yasuhiro Matsumoto [Thu, 19 Mar 2026 21:31:34 +0000 (21:31 +0000)] 
patch 9.2.0206: MS-Window: stripping all CSI sequences

Problem:  MS-Window: stripping all CSI sequences
          (Ke Mao, after v9.2.0184)
Solution: Restore vtp_printf() to pass-through DECSUSR codes
          (Yasuhiro Matsumoto).

Patch 9.2.0184 discards all CSI sequences in mch_write() when VTP is
active to prevent unwanted DECRQM responses.  However, this also
removed the existing DECSCUSR pass-through, breaking cursor shape
changes (t_SI/t_SR/t_EI) on Windows Terminal.

Restore vtp_printf() pass-through for DECSCUSR (final byte 'q') while
continuing to discard other CSI sequences.

related: #19694
related: #11532
fixes:   #19750
closes:  #19755

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): disable color codes when generating ascii man pages in Makefile
Christian Brabandt [Thu, 19 Mar 2026 21:26:50 +0000 (21:26 +0000)] 
runtime(doc): disable color codes when generating ascii man pages in Makefile

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0205: xxd: Cannot NUL terminate the C include file style v9.2.0205
Lukáš Jiřiště [Thu, 19 Mar 2026 20:33:18 +0000 (20:33 +0000)] 
patch 9.2.0205: xxd: Cannot NUL terminate the C include file style

Problem:  xxd: Cannot NUL terminate the C include file style
Solution: Add option -t to end output with terminating null
          (Lukáš Jiřiště).

fixes:  #14409
closes: #19745

Signed-off-by: Lukáš Jiřiště <kyci@ljiriste.work>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0204: filetype: cps files are not recognized v9.2.0204
Guillaume Barbier [Thu, 19 Mar 2026 20:24:40 +0000 (20:24 +0000)] 
patch 9.2.0204: filetype: cps files are not recognized

Problem:  filetype: cps files are not recognized
Solution: Detect *.cps files as json filetype (Guillaume Barbier).

Reference:
https://github.com/cps-org/cps
https://cps-org.github.io/cps/

closes: #19758

Signed-off-by: Guillaume Barbier <barbier.guillaume60@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0203: Patch v9.2.0185 was wrong v9.2.0203
Hirohito Higashi [Thu, 19 Mar 2026 20:19:07 +0000 (20:19 +0000)] 
patch 9.2.0203: Patch v9.2.0185 was wrong

Problem:  Patch v9.2.0185 was wrong
Solution: Revert patch v9.2.0185, root cause fixed in v9.2.0197
          (Hirohito Higashi).

related: #19730
related: #19734
closes:  #19749

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0202: [security]: command injection via newline in glob() v9.2.0202
pyllyukko [Thu, 19 Mar 2026 19:58:05 +0000 (19:58 +0000)] 
patch 9.2.0202: [security]: command injection via newline in glob()

Problem:  The glob() function on Unix-like systems does not escape
          newline characters when expanding wildcards. A maliciously
          crafted string containing '\n' can be used as a command
          separator to execute arbitrary shell commands via
          mch_expand_wildcards(). This depends on the user's 'shell'
          setting.
Solution: Add the newline character ('\n') to the SHELL_SPECIAL
          definition to ensure it is properly escaped before being
          passed to the shell (pyllyukko).

closes: #19746

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-w5jw-f54h-x46c

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0201: filetype: Wireguard config files not recognized v9.2.0201
Furkan Sahin [Thu, 19 Mar 2026 19:28:39 +0000 (19:28 +0000)] 
patch 9.2.0201: filetype: Wireguard config files not recognized

Problem:  filetype: Wireguard config files not recognized
Solution: Detect /etc/wireguard/*.conf files as dosini filetype
          (Furkan Sahin).

closes: #19751

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0200: term: DECRQM codes are sent too early v9.2.0200
Foxe Chen [Thu, 19 Mar 2026 19:10:32 +0000 (19:10 +0000)] 
patch 9.2.0200: term: DECRQM codes are sent too early

Problem:  term: DECRQM codes are sent too early, the resulting DECRPM
          responses can arrive after Vim has already exited, leaking
          into the shell's input buffer (Christian Brabandt).
Solution: Only send DECRQM codes once termcap_active is set
          (Foxe Chen).

related: #19660
fixes:   #19660#issuecomment-4085448070
closes:  #19748

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoCI: make dependabot monitor `.github/actions` directory
ichizok [Thu, 19 Mar 2026 19:03:40 +0000 (19:03 +0000)] 
CI: make dependabot monitor `.github/actions` directory

and also set `cooldown`, `groups`

related: #19747
closes:  #19756

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0199: tests: test_startup.vim fails v9.2.0199
Christian Brabandt [Thu, 19 Mar 2026 18:54:09 +0000 (18:54 +0000)] 
patch 9.2.0199: tests: test_startup.vim fails

Problem:  tests: test_startup.vim fails, because the command line is
          getting too long so that the shell prompt line get shifted by one
          additional screen line down (after v9.2.0194).
Solution: Partly revert Patch v9.2.0194 and do not set termresize and
          termsync options.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0198: cscope: can escape from restricted mode v9.2.0198
Christian Brabandt [Wed, 18 Mar 2026 21:27:38 +0000 (21:27 +0000)] 
patch 9.2.0198: cscope: can escape from restricted mode

Problem:  cscope: can escape from restricted mode (pyllyukko)
Solution: Disallow :cscope in restricted mode (like :grep),
          add a tests for restricted mode using :grep and :cscope

closes: #19731

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): Fix typo in if_pyth.txt
Barrett Ruth [Wed, 18 Mar 2026 21:22:46 +0000 (21:22 +0000)] 
runtime(doc): Fix typo in if_pyth.txt

closes: #19733

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0197: tabpanel: frame width not updated for existing tab pages v9.2.0197
Hirohito Higashi [Wed, 18 Mar 2026 21:16:14 +0000 (21:16 +0000)] 
patch 9.2.0197: tabpanel: frame width not updated for existing tab pages

Problem:  When 'showtabpanel' is set before any window exists (e.g. via
          --cmd) and multiple tab pages are opened with -p, the tabpanel
          appears when the second tab page is created.  At that point
          shell_new_columns() only updates the current (new) tab page's
          frame width; existing tab pages retain the wrong width.
Solution: After calling shell_new_columns() in win_new_tabpage(), iterate
          all other tab pages and update their frame widths with
          frame_new_width() (Hirohito Higashi).

related: #19730
closes:  #19734

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(yara): add ftplugin for yara filetype
Thomas Dupuy [Wed, 18 Mar 2026 21:13:12 +0000 (21:13 +0000)] 
runtime(yara): add ftplugin for yara filetype

Add a minimal ftplugin `runtime/ftplugin/yara.vim` that sets:
- `commentstring` for YARA line comments (`//`)
- `comments` for YARA block comment (`/* */`)
- `formatoptions` to wrap comment lines and continue comment after newlines
This was heavily inspired from `runtime/ftplugin/c.vim`

closes: #19736

Signed-off-by: Thomas Dupuy <thom4s.d@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0196: textprop: negative IDs and can cause a crash v9.2.0196
Hirohito Higashi [Wed, 18 Mar 2026 21:03:17 +0000 (21:03 +0000)] 
patch 9.2.0196: textprop: negative IDs and can cause a crash

Problem:  textprop: negative IDs and can cause a crash without "text"
          (Paul Ollis)
Solution: Strictly reserve negative IDs for virtual text, ignore "id"
          when "text" is provided in prop_add() (Hirohito Higashi).

When prop_add() was called with a negative id and no "text", the
property was stored with a negative tp_id.  A subsequent call to
prop_list() or screen redraw would then treat it as a virtual text
property and dereference b_textprop_text.ga_data, which is NULL when
no virtual text properties exist.

Negative ids are reserved for virtual text properties, so always
reject them with E1293 regardless of whether virtual text properties
exist.  Also, when "text" is specified any user-provided id is now
silently ignored and an internal negative id is assigned.

Remove the now-unnecessary did_use_negative_pop_id flag and E1339.
Update E1293's message and the documentation accordingly.

related: #19684
closes:  #19741

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoCI: bump actions/upload-artifact to v7
ichizok [Wed, 18 Mar 2026 20:57:15 +0000 (20:57 +0000)] 
CI: bump actions/upload-artifact to v7

closes: #19747

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0195: CI: test-suite gets killed for taking too long v9.2.0195
Christian Brabandt [Wed, 18 Mar 2026 20:47:45 +0000 (20:47 +0000)] 
patch 9.2.0195: CI: test-suite gets killed for taking too long

Problem:  test_codestyle.vim takes too much time and takes more than
          90s, this contributes to the overall time for all runners and
Solution: Create a dedicated 'make codestyle' target in the testdir
          Makefiles. Remove test_codestyle from the main test list.
          Update GitHub CI to run this check as a separate step
          in the 'normal' features build.
          Increase CI timeout to 45 minutes.

fixes: #19740

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0194: tests: test_startup.vim leaves temp.txt around v9.2.0194
Christian Brabandt [Wed, 18 Mar 2026 20:42:22 +0000 (20:42 +0000)] 
patch 9.2.0194: tests: test_startup.vim leaves temp.txt around

Problem:  tests: test_startup.vim leaves temp.txt around
Solution: Disable termresize and termsync explicitly to stop outputting
          DEC mode chars, delete all chars before the rm command

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0193: using copy_option_part() can be improved v9.2.0193
John Marriott [Wed, 18 Mar 2026 19:25:22 +0000 (19:25 +0000)] 
patch 9.2.0193: using copy_option_part() can be improved

Problem:  using copy_option_part() can be improved
Solution: Refactor and use the return value of copy_option_part() to
          avoid strlen() calls (John Marriott).

In addition, this commit includes the following changes:

memline.c:
- In recover_names():
  - Replace calls to vim_strsave() with vim_strnsave() for the literal
    strings
  - Use a string_T to store local variable dir_name.

bufwrite.c:
- In buf_write()
  - move variable wp to where it is used.

help.c:
- In fix_help_buffer():
  - replace call to add_pathsep() with after_pathsep()

optionstr.c:
- In export_myvimdir():
  - use a string_T to store local variable buf
  - replace call to add_pathsep() with after_pathsep()

scriptfile.c:
- In do_in_path():
  - use a string_T to store local variable buf
  - measure the lengths of prefix and name once before the while loop
  - replace call to add_pathsep() with after_pathsep()
  - move some variables closer to where they are used

spellfile.c:
- In init_spellfile():
  - use a string_T to store local variable buf

closes: #19725

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0192: not correctly recognizing raw key codes v9.2.0192
AstroSnail [Tue, 17 Mar 2026 21:24:43 +0000 (21:24 +0000)] 
patch 9.2.0192: not correctly recognizing raw key codes

Problem:  When "k" is excluded from cpoptions, vim should be able to
          recognize raw key codes in mappings and replace them with
          builtin codes (e.g. ^[OA is replaced with <Up>) so that
          changing the builtin code also changes the mapping to match.
          Currently, this only works properly if the builtin code does
          not contain modifiers (e.g. @;*).
Solution: Teach find_term_bykeys how to recognize keys with modifiers
          (AstroSnail).

fixes:  #19182
closes: #19643

Signed-off-by: AstroSnail <astrosnail@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0191: Not possible to know if Vim was compiled with Android support v9.2.0191
TomIO [Tue, 17 Mar 2026 21:08:44 +0000 (21:08 +0000)] 
patch 9.2.0191: Not possible to know if Vim was compiled with Android support

Problem:  The "android" and "termux" feature flags have been shipped in
          Termux's downstream vim / vim-gtk package for 5+ years but were
          never properly documented in the downstream patch.
Solution: Upstream the "android" and "termux" feature flags into Vim as
          decoupled feature flags, this enables the "android" feature in
          particular to be available independently of the "termux"
          feature for builds of Vim against the Android NDK, but not
          including the Termux NDK patchset.

closes: #19623

Co-authored-by: Lethal Lisa <43791059+lethal-lisa@users.noreply.github.com>
Co-authored-by: shadmansaleh <13149513+shadmansaleh@users.noreply.github.com>
Signed-off-by: TomIO <tom@termux.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0190: Status line height mismatch in vertical splits v9.2.0190
Hirohito Higashi [Tue, 17 Mar 2026 21:00:45 +0000 (21:00 +0000)] 
patch 9.2.0190: Status line height mismatch in vertical splits

Problem:  When 'laststatus' changes, the status line can become
          misaligned.
Solution: Update last_status_rec() to calculate the maximum status line
          height required across all windows in a vertical row.

closes: #19688

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0189: MS-Windows: opacity popups flicker during redraw in the console v9.2.0189
Yasuhiro Matsumoto [Tue, 17 Mar 2026 20:51:22 +0000 (20:51 +0000)] 
patch 9.2.0189: MS-Windows: opacity popups flicker during redraw in the console

Problem:  When using transparent popups in the Win32 console, redrawing
          background windows causes flickering. This happens because
          the background is drawn opaquely before the popup blends
          and draws on top.
Solution: Implement a Z-index mask  to suppress screen_char() output for
          cells covered by an opacity popup. Disable the Clear-to-EOL
          (T_CE) optimization for lines overlapping these popups to
          prevent accidental erasure (Yasuhiro Matsumoto).

closes: #19697
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0188: Can set environment variables in restricted mode v9.2.0188
pyllyukko [Tue, 17 Mar 2026 20:15:44 +0000 (20:15 +0000)] 
patch 9.2.0188: Can set environment variables in restricted mode

Problem:  Can set environment variables in restricted mode
Solution: Disallow setting environment variables using legacy Vim script
          (pyllyukko).

related: #13394
related: #19705
closes:  #19704

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0187: MS-Windows: rendering artifacts with DirectX renderer v9.2.0187
Yasuhiro Matsumoto [Tue, 17 Mar 2026 19:37:02 +0000 (19:37 +0000)] 
patch 9.2.0187: MS-Windows: rendering artifacts with DirectX renderer

Problem:  MS-Windows: rendering artifacts with DirectX renderer
Solution: Enable ETO_CLIPPED for DirectWrite rendering in
          gui_mch_draw_string() to ensure glyphs stay within their
          cell boundaries (Yasuhiro Matsumoto).

closes: #19711

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0186: heap buffer overflow with long generic function name v9.2.0186
Kaixuan Li [Tue, 17 Mar 2026 19:07:53 +0000 (19:07 +0000)] 
patch 9.2.0186: heap buffer overflow with long generic function name

Problem:   Using a long generic function name may cause a heap buffer
           overflow in common_function().
Solution:  Allocate memory for the full name instead of using IObuff
           (Kaixuan Li).

closes: #19727

Signed-off-by: Kaixuan Li <kaixuanli0131@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0185: buffer overflow when redrawing custom tabline v9.2.0185
thinca [Tue, 17 Mar 2026 18:52:58 +0000 (18:52 +0000)] 
patch 9.2.0185: buffer overflow when redrawing custom tabline

Problem:  When drawing a custom tabline, if topframe->fr_width is
          larger than Columns (possible during tab closure with
          showtabpanel=1), Vim writes past the end of the
          TabPageIdxs[] array.
Solution: Cap the column limit at Columns to ensure TabPageIdxs is
          never accessed out-of-bounds (thinca).

closes: #19725

Supported by AI

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): Fix typo in cmdline.txt
elig0n [Mon, 16 Mar 2026 22:19:44 +0000 (22:19 +0000)] 
runtime(doc): Fix typo in cmdline.txt

closes: #19724

Signed-off-by: elig0n <31196036+elig0n@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0184: MS-Windows: screen flicker with termguicolors and visualbell v9.2.0184
Yasuhiro Matsumoto [Mon, 16 Mar 2026 22:06:47 +0000 (22:06 +0000)] 
patch 9.2.0184: MS-Windows: screen flicker with termguicolors and visualbell

Problem:  When 'termguicolors' is used on MS-Windows (VTP mode), sending
          CSI query sequences (like DECRQM) causes the console to
          generate responses that are misinterpreted as keystrokes.
          The leading ESC triggers a beep or 'visualbell' flash.
Solution: In mch_write(), discard CSI sequences when USE_VTP is active
          so the console does not process queries and generate unwanted
          input responses (Yasuhiro Matsumoto).

related: #11532
closes:  #19694

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0183: channel: using deprecated networking APIs v9.2.0183
Yasuhiro Matsumoto [Mon, 16 Mar 2026 21:59:40 +0000 (21:59 +0000)] 
patch 9.2.0183: channel: using deprecated networking APIs

Problem:  gethostbyname() and inet_ntoa() are deprecated and cause
          build errors on modern MSVC versions.
Solution: Use getaddrinfo() and inet_ntop() when FEAT_IPV6 and
          HAVE_INET_NTOP are defined. Keep the old functions as
          fallbacks for legacy platforms (Yasuhiro Matsumoto).

closes: #19719

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0182: autocmds may leave windows with w_locked set v9.2.0182
Sean Dewar [Mon, 16 Mar 2026 21:54:28 +0000 (21:54 +0000)] 
patch 9.2.0182: autocmds may leave windows with w_locked set

Problem:  autocmds that switch windows may cause them to remain with
          w_locked set, preventing them from being closed longer than
          intended.
Solution: Unset w_locked in the window where it was set (Sean Dewar).

closes: #19716

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0181: line('w0') moves cursor in terminal-normal mode v9.2.0181
ichizok [Mon, 16 Mar 2026 21:47:36 +0000 (21:47 +0000)] 
patch 9.2.0181: line('w0') moves cursor in terminal-normal mode

Problem:  line('w0') moves cursor in terminal-normal mode
          (Biebar, after v9.2.0127)
Solution: Check that the terminal is not in terminal-normal-mode
          (Ozaki Kiichi).

fixes:  #19717
closes: #19718

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0180: possible crash with winminheight=0 v9.2.0180
Hirohito Higashi [Mon, 16 Mar 2026 21:41:47 +0000 (21:41 +0000)] 
patch 9.2.0180: possible crash with winminheight=0

Problem:  possible crash with winminheight=0
          (Emilien Breton)
Solution: Use <= instead of < when checking reserved room in
          frame_setheight() to correctly handle the zero-height
          boundary case (Hirohito Higashi).

In frame_setheight(), when shrinking the current window and the only
other window has 'winfixheight' with 'winminheight'=0, room_reserved
was not cleared because the condition used '<' instead of '<='.
The freed rows were discarded, leaving fr_height sum less than
topframe fr_height.  Subsequent resize operations then computed a
wrong room_cmdline that expanded topframe beyond the screen, causing
a crash.

fixes:  #19706
closes: #19712

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0179: MS-Windows: Compiler warning for converting from size_t to int v9.2.0179
ichizok [Mon, 16 Mar 2026 21:31:14 +0000 (21:31 +0000)] 
patch 9.2.0179: MS-Windows: Compiler warning for converting from size_t to int

Problem:  MS-Windows: Compile warning for converting from size_t to int
          breaks the Appveyor CI (after v9.2.0168)
Solution: Explicitly cast to int in convert_string() (ichizok).

closes: #19722

Signed-off-by: ichizok <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0178: DEC mode requests are sent even when not in raw mode v9.2.0178
Foxe Chen [Mon, 16 Mar 2026 21:25:10 +0000 (21:25 +0000)] 
patch 9.2.0178: DEC mode requests are sent even when not in raw mode

Problem:  Vim sends DEC mode query requests (DECRQM) regardless of the
          terminal mode.
Solution: Only send DEC mode requests when cur_tmode is TMODE_RAW, but
          e.g not for gui mode (Foxe Chen).

fixes:  #19709
closes: #19710

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0177: Vim9: Can set environment variables in restricted mode v9.2.0177
pyllyukko [Mon, 16 Mar 2026 21:19:08 +0000 (21:19 +0000)] 
patch 9.2.0177: Vim9: Can set environment variables in restricted mode

Problem:  Vim9: Can set environment variables in restricted mode
Solution: Disallow settings variables in exec_instructions() when in
          restricted mode (pyllyukko)

related: #13394
closes:  #19705

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0176: external diff is allowed in restricted mode v9.2.0176
pyllyukko [Mon, 16 Mar 2026 19:46:27 +0000 (19:46 +0000)] 
patch 9.2.0176: external diff is allowed in restricted mode

Problem:  When 'diffopt' does not include "internal", Vim attempts to
          execute an external diff command even in restricted mode.
          This could be used to bypass restricted mode.
Solution: Call check_restricted() in diff_file() before attempting to
          execute an external diff (pyllyukko).

closes: #19696

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0175: No tests for what v9.2.0141 and v9.2.0156 fixes v9.2.0175
Christian Brabandt [Mon, 16 Mar 2026 19:36:46 +0000 (19:36 +0000)] 
patch 9.2.0175: No tests for what v9.2.0141 and v9.2.0156 fixes

Problem:  No tests for what v9.2.0141 and v9.2.0156 fixes
Solution: Add tests for using :perldo and rubeval() in sandbox mode

related: #19664
related: #19653
closes:  #19699

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0174: diff: inline word-diffs can be fragmented v9.2.0174
HarshK97 [Mon, 16 Mar 2026 19:23:45 +0000 (19:23 +0000)] 
patch 9.2.0174: diff: inline word-diffs can be fragmented

Problem:  When using 'diffopt=inline:word', lines were excessively
          fragmented with punctuation creating separate highlight
          blocks, making it harder to read the diffs.
Solution: Added 'diff_refine_inline_word_highlight()' to merge
          adjacent diff blocks that are separated by small gaps of
          non-word characters (up to 5 bytes by default) (HarshK97).

When using inline:word diff mode, adjacent changed words separated by
punctuation or whitespace are now merged into a single highlight block
if the gap between them contains fewer than 5 non-word characters.

This creates more readable diffs and closely matches GitHub's own diff
display.

closes: #19098

Signed-off-by: HarshK97 <harshkapse1234@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0173: tests: Test_balloon_eval_term_visual is flaky v9.2.0173
Christian Brabandt [Sun, 15 Mar 2026 15:42:34 +0000 (15:42 +0000)] 
patch 9.2.0173: tests: Test_balloon_eval_term_visual is flaky

Problem:  tests: Test_balloon_eval_term_visual is flaky
Solution: Use redraw and WaitForAssert() to make it more reliable

Previously, it failed about 1 out of 4 runs for me, now I got it down to
1 out of 10. It's not perfect, but better than before.

closes: #19692

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0172: Missing semicolon in os_mac_conv.c v9.2.0172
Yasuhiro Matsumoto [Sun, 15 Mar 2026 15:35:01 +0000 (15:35 +0000)] 
patch 9.2.0172: Missing semicolon in os_mac_conv.c

Problem:  Missing semicolon in os_mac_conv.c (after v9.2.0168)
Solution: Add it (Yasuhiro Matsumoto).

The missing semicolon was introduced in patch 9.2.0168
(b00f441e6), which breaks the macOS build.

closes: #19695

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0171: MS-Windows: version detection is deprecated v9.2.0171
Mao-Yining [Sun, 15 Mar 2026 09:49:33 +0000 (09:49 +0000)] 
patch 9.2.0171: MS-Windows: version detection is deprecated

Problem:  MS-Windows: GetVersionEx() is deprecated since Windows 8.
          Version checks for specific features (like dark mode or title
          bar colors) are duplicated across files using multiple boolean flags.
Solution: Use RtlGetVersion() to centralize detection in a single
          win_version variable. Use the MAKE_VER() macro to check
          against major, minor, and build numbers. Update titlebar
          colors and dark theme to use proper version thresholds
          (Mao-Yining).

closes: #19673

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agotranslation(zh_CN): Fix translation for 'paste' in zh_CN.UTF-8.po
Murasame [Sun, 15 Mar 2026 09:38:31 +0000 (09:38 +0000)] 
translation(zh_CN): Fix translation for 'paste' in zh_CN.UTF-8.po

Corrected the translation for 'paste' from '粘帖' to '粘贴'.

In Chinese, the correct term for the computer action "paste" is 粘贴
(zhān tiē). The original translation used 粘帖, which contains a very
common typo. The second character was mistakenly written as 帖 (which
means a note or invitation) instead of the correct character 贴 (which
means to stick or paste).

closes: #19689

Signed-off-by: Murasame <88932464+CuteMurasame@users.noreply.github.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): Update help tags references
Christian Brabandt [Sun, 15 Mar 2026 09:34:54 +0000 (09:34 +0000)] 
runtime(doc): Update help tags references

related: #19691

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0170: channel: some issues in ch_listen() v9.2.0170
Yasuhiro Matsumoto [Sun, 15 Mar 2026 09:22:29 +0000 (09:22 +0000)] 
patch 9.2.0170: channel: some issues in ch_listen()

Problem:  channel: some issues in ch_listen()
          (char101, after v9.2.0153)
Solution: On MS-Windows, initialize using channel_init_winsock() and use
          SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR, allow to use port
          0 to have the OS assign a port (Yasuhiro Matsumoto).

related: #19231
closes:  #19690

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): clarify :silent usage for system()/systemlist()
Yasuhiro Matsumoto [Sun, 15 Mar 2026 09:16:42 +0000 (09:16 +0000)] 
runtime(doc): clarify :silent usage for system()/systemlist()

When system() or systemlist() is called without :silent from a
statusline expression, autocommand, or timer callback, the terminal
is temporarily set to cooked mode, which re-enables ECHO on the tty.
If a terminal response (e.g. DECRPM for cursor blink mode) arrives
during this window, the tty driver echoes it to the screen, leaving
stray characters that require CTRL-L to remove.

This behavior was intentionally addressed in patch 7.4.427 by
skipping cooked mode when :silent is prepended.  However, the
documentation only mentioned this for system() and did not cover
systemlist() at all.  The guidance to use :silent in non-interactive
contexts (statusline, autocommands, timers) was also not explicit.

closes #19691

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0169: assertion failure in syn_id2attr() v9.2.0169
Foxe Chen [Sun, 15 Mar 2026 09:05:14 +0000 (09:05 +0000)] 
patch 9.2.0169: assertion failure in syn_id2attr()

Problem:  assertion failure in syn_id2attr()
          (@julio-b, after v9.2.0093)
Solution: Set tp_curwin to a valid window in popup_close_tabpage()
          and return early in update_winhighlight() if there are
          no highlight overrides to update (Foxe Chen).

fixes:  #19650
closes: #19670

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0168: invalid pointer casting in string_convert() arguments v9.2.0168
James McCoy [Sun, 15 Mar 2026 08:58:11 +0000 (08:58 +0000)] 
patch 9.2.0168: invalid pointer casting in string_convert() arguments

Problem:  invalid pointer casting in string_convert() arguments
Solution: Use a temporary local int variable (James McCoy)

string_convert()/string_convert_ext() accept an "int *lenp" parameter,
however a few call sites were taking the address of a possibly larger
type (long, size_t) and casting it as an int * when calling these
functions.

On big-endian platforms, this passes the (likely) zeroed high bytes of
the known length through to string_convert(). This indicates it received
an empty string and returns an allocated empty string rather than
converting the input. This is exhibited by test failures like

  From test_blob.vim:
  Found errors in Test_blob2str_multi_byte_encodings():
  command line..script src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 2: Expected ['Hello'] but got ['']
  command line..script src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 3: Expected ['Hello'] but got ['']
  command line..script srctestdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 6: Expected ['Hello'] but got ['']

Instead, use a temporary local int variable as the in/out variable for
string_convert() and assign the result back to the larger typed length
variable post-conversion.

closes: #19672

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0167: terminal: setting buftype=terminal may cause a crash v9.2.0167
Christian Brabandt [Sat, 14 Mar 2026 17:31:45 +0000 (17:31 +0000)] 
patch 9.2.0167: terminal: setting buftype=terminal may cause a crash

Problem:  setting buftype=terminal may cause a crash
          (lacygoill, after v9.2.0127)
Solution: Validate that curwin->w_buffer->b_term is not null

fixes:  #19686
closes: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0166: Coverity warning for potential NULL dereference v9.2.0166
Christian Brabandt [Sat, 14 Mar 2026 17:27:47 +0000 (17:27 +0000)] 
patch 9.2.0166: Coverity warning for potential NULL dereference

Problem:  Coverity warning for potential NULL dereference in channel.c
          (after v9.2.0153)
Solution: Use empty string in case hostname is NULL.

CID: 1686330

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0165: tests: perleval fails in the sandbox v9.2.0165
Christian Brabandt [Sat, 14 Mar 2026 17:23:04 +0000 (17:23 +0000)] 
patch 9.2.0165: tests: perleval fails in the sandbox

Problem:  tests: perleval fails in the sandbox
          (after v9.2.0156)
Solution: Update tests and assert that it fails

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0164: build error when XCLIPBOARD is not defined v9.2.0164
Christian Brabandt [Sat, 14 Mar 2026 17:10:21 +0000 (17:10 +0000)] 
patch 9.2.0164: build error when XCLIPBOARD is not defined

Problem:  build error when XCLIPBOARD is not defined
          (Tony Mechelynck, after v9.2.0158)
Solution: Update ifdefs

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0163: MS-Windows: Compile warning for unused variable v9.2.0163
John Marriott [Sat, 14 Mar 2026 17:05:52 +0000 (17:05 +0000)] 
patch 9.2.0163: MS-Windows: Compile warning for unused variable

Problem:  MS-Windows: Compile warning for unused variable
          (after v9.2.0160)
Solution: Add ifdef HAVE_TGETENT (John Marriott).

related: #19676

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0162: tests: unnecessary CheckRunVimInTerminal in test_quickfix v9.2.0162
zeertzjq [Sat, 14 Mar 2026 16:50:43 +0000 (16:50 +0000)] 
patch 9.2.0162: tests: unnecessary CheckRunVimInTerminal in test_quickfix

Problem:  tests: unnecessary CheckRunVimInTerminal in test_quickfix.vim
          (after v9.2.0159)
Solution: Remove it (zeertzjq).

closes: #19671

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0161: intro message disappears on startup in some terminals v9.2.0161
Foxe Chen [Fri, 13 Mar 2026 22:14:36 +0000 (22:14 +0000)] 
patch 9.2.0161: intro message disappears on startup in some terminals

Problem:  intro message disappears on startup in some terminals
          (chdiza, after v9.2.0139)
Solution: Only call set_shellsize() in handle_csi() if the reported
          width or height actually differs from the current
          Rows or Columns. (Foxe Chen)

fixes:  #19656
closes: #19660

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0160: terminal DEC mode handling is overly complex v9.2.0160
Foxe Chen [Fri, 13 Mar 2026 21:55:16 +0000 (21:55 +0000)] 
patch 9.2.0160: terminal DEC mode handling is overly complex

Problem:  terminal DEC mode handling is overly complex (after v9.2.0139)
Solution: Refactor DEC mode handling (Foxe Chen).

related: #19596
related: #19541
closes:  #19641

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0159: Crash when reading quickfix line v9.2.0159
Christian Brabandt [Fri, 13 Mar 2026 21:45:26 +0000 (21:45 +0000)] 
patch 9.2.0159: Crash when reading quickfix line

Problem:  Crash when reading quickfix line (Kaiyu Xie)
Solution: Make sure line is terminated by NUL

closes: #19667

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0158: Visual highlighting might be incorrect v9.2.0158
Shane Harper [Fri, 13 Mar 2026 21:39:46 +0000 (21:39 +0000)] 
patch 9.2.0158: Visual highlighting might be incorrect

Problem:  Vim could use the VisualNOS highlight group when not connected
          to an X server.
Solution: Always highlight visual selections with Visual when not
          connected to an X server (Shane Harper)

When Vim is running with X11 support it chooses between the Visual and
VisualNOS highlight groups for a visual selection based on whether it
believes it owns the X selection. According to :help hl-VisualNOS,
VisualNOS should only be used by the X11 GUI or when using the
xterm-clipboard feature, however, prior to this commit Vim could choose
VisualNOS when a clipboard provider was used, even when Vim was not
connected to an X server.

closes: #19659

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0157: Vim9: concatenation can be improved v9.2.0157
John Marriott [Fri, 13 Mar 2026 21:26:55 +0000 (21:26 +0000)] 
patch 9.2.0157: Vim9: concatenation can be improved

Problem:  Vim9: concatenation can be improved
Solution: Cache string segments lengths in exe_concat() and avoid
          strlen() calls (John Marriott).

closes: #19647

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0156: perleval() and rubyeval() ignore security settings v9.2.0156
pyllyukko [Fri, 13 Mar 2026 21:15:44 +0000 (21:15 +0000)] 
patch 9.2.0156: perleval() and rubyeval() ignore security settings

Problem:  perleval() and rubyeval() ignore security settings
Solution: Disable those functions in restricted (-Z) or 'secure' mode
          (pyllyukko).

closes: #19664

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0155: filetype: ObjectScript are not recognized v9.2.0155
Hannah [Fri, 13 Mar 2026 21:04:26 +0000 (21:04 +0000)] 
patch 9.2.0155: filetype: ObjectScript are not recognized

Problem:  filetype: ObjectScript are not recognized
Solution: Add ObjectScript filetype detection for *.cls files
          (Hannah Kimura)).

Reference:
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_intro

closes: #19668

Signed-off-by: Hannah <hannah.kimura@intersystems.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0154: if_lua: runtime error with lua 5.5 v9.2.0154
Christian Brabandt [Fri, 13 Mar 2026 19:21:43 +0000 (19:21 +0000)] 
patch 9.2.0154: if_lua: runtime error with lua 5.5

Problem:  Lua 5.5 makes for-loop control variables read-only.
          The path-parsing logic in if_lua.c attempts to modify the
          loop variable 's', causing the script to fail during
          runtime initialization (Binbin Qian)
Solution: Use a Lua capture group in gmatch() to extract the path
          without the semicolon, avoiding the need to re-assign
          to the loop variable.

fixes:  #19639
closes: #19658

supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0153: No support to act as a channel server v9.2.0153
Yasuhiro Matsumoto [Fri, 13 Mar 2026 19:05:45 +0000 (19:05 +0000)] 
patch 9.2.0153: No support to act as a channel server

Problem:  Vim can only act as a channel client (ch_open). There is
          no way for an external process to initiate a connection
          to a running Vim instance using the Channel API.
Solution: Implement ch_listen() and the underlying server-side
          socket logic. This allows Vim to listen on a port or
          Unix domain socket. When a client connects, a new
          channel is automatically created and passed to a
          user-defined callback (Yasuhiro Matsumoto).

closes: #19231

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
3 months agopatch 9.2.0152: concatenating strings is slow v9.2.0152
Yasuhiro Matsumoto [Fri, 13 Mar 2026 17:45:36 +0000 (17:45 +0000)] 
patch 9.2.0152: concatenating strings is slow

Problem:  concatenating strings is slow
Solution: Use grow_string_tv() to grow the existing string buffer in
          place when possible (Yasuhiro Matsumoto).

closes: #19642

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0151: blob_from_string() is slow for long strings v9.2.0151
Yasuhiro Matsumoto [Fri, 13 Mar 2026 17:36:34 +0000 (17:36 +0000)] 
patch 9.2.0151: blob_from_string() is slow for long strings

Problem:  blob_from_string() is slow for long strings
Solution: Use ga_grow() to allocate memory once, perform a bulk copy
          with mch_memmove() then translate NL to NUL in-place
          (Yasuhiro Matsumoto).

closes: #19665

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0150: synchronized terminal update may cause display artifacts v9.2.0150
Yasuhiro Matsumoto [Fri, 13 Mar 2026 17:08:17 +0000 (17:08 +0000)] 
patch 9.2.0150: synchronized terminal update may cause display artifacts

Problem:  When using synchronized terminal output, the internal
          output buffer  is not flushed before sending the
          End Synchronized Update (ESU) sequence. This causes
          redrawing artifacts.
Solution: Call out_flush() immediately before sending the ESU
          sequence to ensure all pending drawing commands are
          contained within the synchronized update window.
          (Yasuhiro Matsumoto)

closes: #19662

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0149: Vim9: segfault when unletting an imported variable v9.2.0149
Christian Brabandt [Fri, 13 Mar 2026 16:57:00 +0000 (16:57 +0000)] 
patch 9.2.0149: Vim9: segfault when unletting an imported variable

Problem:  do_unlet_var() unconditionally calls dictitem_remove() in its
          final else branch, but for imported items lp->ll_dict is NULL,
          causing a segfault (Peter Kenny)
Solution: Add a NULL check and return E1260 instead.

Affects :unlet at vim9script level and inside legacy :function.
The :def case already worked (handled in vim9cmds.c).

fixes:  #19637
closes: #19657

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0148: Compile error when FEAT_DIFF is not defined v9.2.0148
John Marriott [Thu, 12 Mar 2026 21:27:58 +0000 (21:27 +0000)] 
patch 9.2.0148: Compile error when FEAT_DIFF is not defined

Problem:  Compile error when FEAT_DIFF is not defined (after v9.2.0144)
Solution: Add ifdefs around those lines (John Marriott).

related: #19622

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(ssh): ignore case in 'keywordprg', update syntax script
Eisuke Kawashima [Thu, 12 Mar 2026 20:01:27 +0000 (20:01 +0000)] 
runtime(ssh): ignore case in 'keywordprg', update syntax script

- ftplugin(sshdconfig): use "-I" for 'keywordprg' to search
  case-insensitive in the man page
- syntax(sshdconfig,sshconfig): Mark "lowdelay", "throughput", and
  "reliability" as deprecated for IPQoS, highlighting them as
  errors/warnings to reflect OpenSSH 10.1p1 release

Reference:
https://www.openssh.org/releasenotes.html#10.1p1

closes: #19636

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Jakub Jelen <jakuje@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0147: blob: concatenation can be improved v9.2.0147
Yasuhiro Matsumoto [Thu, 12 Mar 2026 19:35:42 +0000 (19:35 +0000)] 
patch 9.2.0147: blob: concatenation can be improved

Problem:  blob: concatenation can be improved
Solution: Use ga_grow() to allocate space once and mch_memmove() to copy
          the blob data as a single block and fall back to the previous
          byte by byte append (Yasuhiro Matsumoto).

closes: #19645

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0146: dictionary lookups can be improved v9.2.0146
Yasuhiro Matsumoto [Thu, 12 Mar 2026 19:26:01 +0000 (19:26 +0000)] 
patch 9.2.0146: dictionary lookups can be improved

Problem:  dictionary lookups can be improved
Solution: Replace the vim_strncpy() by mch_memmove() call.
          (Yasuhiro Matsumoto).

closes: #19646

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0145: UTF-8 decoding and length calculation can be improved v9.2.0145
Yasuhiro Matsumoto [Thu, 12 Mar 2026 19:15:28 +0000 (19:15 +0000)] 
patch 9.2.0145: UTF-8 decoding and length calculation can be improved

Problem:  Vim often calls utf_ptr2char() and utf_ptr2len() separately.
Solution: Refactor UTF-8 hot paths into utf_ptr2char_and_len() to
          decode the codepoint and byte length in a single pass.
          Fold combining character logic into the same optimized flow.
          Improves redraw performance by ~8-10% in UTF-8 heavy
          scenarios (Yasuhiro Matsumoto).

closes: #19649

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0144: 'statuslineopt' is a global only option v9.2.0144
Hirohito Higashi [Thu, 12 Mar 2026 18:49:38 +0000 (18:49 +0000)] 
patch 9.2.0144: 'statuslineopt' is a global only option

Problem:  'statuslineopt' is a global only option and configuring the
          line height is limited.
Solution: Make 'statuslineopt' global-local to a window and allow to
          configure a fixed-height height statusline per window
          (Hirohito Higashi).

closes: #19622

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0143: termdebug: no support for thread and condition in :Break v9.2.0143
Yinzuo Jiang [Thu, 12 Mar 2026 18:28:34 +0000 (18:28 +0000)] 
patch 9.2.0143: termdebug: no support for thread and condition in :Break

Problem:  termdebug :Break does not support `thread` and `if` arguments
Solution: extend :Break and :Tbreak to accept optional location, thread
          {nr}, and if {expr} arguments (Yinzuo Jiang).

closes: #19613

Signed-off-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0142: Coverity: Dead code warning v9.2.0142
Christian Brabandt [Wed, 11 Mar 2026 22:02:38 +0000 (22:02 +0000)] 
patch 9.2.0142: Coverity: Dead code warning

Problem:  Coverity: Dead code warning for expressions in non-gui builds
          (after v9.2.0139)
Solution: add ifdef FEAT_GUI

CID: 1685426
closes: #19654

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0141: :perl ex commands allowed in restricted mode v9.2.0141
Christian Brabandt [Wed, 11 Mar 2026 21:50:48 +0000 (21:50 +0000)] 
patch 9.2.0141: :perl ex commands allowed in restricted mode

Problem:  :perl ex commands allowed in restricted mode (pyllyukko)
Solution: Add EX_RESTRICT flag to :perldo/:perl command definition.

closes: #19653

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): update option type of 'termresize' option (after v9.2.0139)
Christian Brabandt [Wed, 11 Mar 2026 21:46:27 +0000 (21:46 +0000)] 
runtime(doc): update option type of 'termresize' option (after v9.2.0139)

as reported by: Antonio Giovanni Colombo <azc100@gmail.com>

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0140: file reading performance can be improved v9.2.0140
Yasuhiro Matsumoto [Wed, 11 Mar 2026 20:18:26 +0000 (20:18 +0000)] 
patch 9.2.0140: file reading performance can be improved

Problem:  Reading large files is slow because UTF-8 validation and
          newline scanning are performed byte-by-byte. Initial file
          loading also triggers listener and channel processing.
Solution: Use memchr() for SIMD-optimized newline scanning, implement
          word-at-a-time ASCII skipping during UTF-8 validation using a
          bitmask, skip listener/netbeans/channel notifications
          when the ML_APPEND_NEW flag is set during readfile()
          (Yasuhiro Matsumoto).

closes: #19612

Co-authored-by: NRK <nrk@disroot.org>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0139: Cannot configure terminal resize event v9.2.0139
Foxe Chen [Wed, 11 Mar 2026 20:03:36 +0000 (20:03 +0000)] 
patch 9.2.0139: Cannot configure terminal resize event

Problem:  Cannot configure terminal resize event
Solution: Add the 'termresize' option and allow to use in-band window
          resize events (Foxe Chen).

closes: #19596

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(python): Update syntax, improve pythonNumber pattern performance
Doug Kearns [Wed, 11 Mar 2026 19:47:55 +0000 (19:47 +0000)] 
runtime(python): Update syntax, improve pythonNumber pattern performance

- Improve the performance of all pythonNumber patterns by unrolling
  digit/underscore sequence loops.
- Split the float literal pattern into two simpler patterns.

fixes:  #19625 (Reported by James McCoy)
closes: #19630

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0138: winhighlight option handling can be improved v9.2.0138
Foxe Chen [Wed, 11 Mar 2026 19:37:26 +0000 (19:37 +0000)] 
patch 9.2.0138: winhighlight option handling can be improved

Problem:  winhighlight option handling can be improved
          (after: v9.2.0093)
Solution: Check entire override stack in update_highlight_overrides();
          update w_hl of every window in highlight_changed() (Foxe Chen).

closes: #19633

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(sudoers): update filetype plugin and syntax script
Eisuke Kawashima [Wed, 11 Mar 2026 19:33:36 +0000 (19:33 +0000)] 
runtime(sudoers): update filetype plugin and syntax script

- remove `set isk+=-` to highlight `-=` operator correctly
- implement highlighting of GID
- fix highlight of hostname and add special value ALL
- fix highlight of IP address
- update include and includedir patterns
- remove duplicate syntax rules
- add missing options
- fix highlight of parameter assignment (limit operators to list
  parameters)
- fix highlight of string and list parameters with trailing whitespaces
- implement highlight of permission (octal)
- implement highlight of floating point numbers
- implement highlight of timeout-specific options
- support highlight of negatable options (integer, mode, float, timeout,
  string)
- allow sudoersListParameter to be negated
- fix highlight of comma-separated parameter list used as boolean
- fix highlight of parameter negation (prevent highlighting ill-formed `! !`)
- fix highlight of Tag_Spec
- allow empty Runas spec: `()` and `(:)`
- fix highlight of comma-concatenated commands, hosts, and users
- check word boundaries for special value ALL
- implement highlight of Option_Spec
- fix highlight in User_Spec (specifically for Host position)
- fix highlight of `Default!` command
- support highlight of digests (sha224, etc.)
- add syntax test and update header

closes: #19634

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agogitattributes: mark dump files as linguist-generated
Eisuke Kawashima [Wed, 11 Mar 2026 19:21:39 +0000 (19:21 +0000)] 
gitattributes: mark dump files as linguist-generated

closes: #19635

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0137: [security]: crash with composing char in collection range v9.2.0137
Christian Brabandt [Wed, 11 Mar 2026 13:16:29 +0000 (14:16 +0100)] 
patch 9.2.0137: [security]: crash with composing char in collection range

Problem:  Using a composing character as the end of a range inside a
          collection may corrupt the NFA postfix stack
          (Nathan Mills, after v9.1.0011)
Solution: When a character is used as the endpoint of a range, do not emit
          its composing characters separately. Range handling only uses
          the base codepoint.

supported by AI

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-9phh-423r-778r

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(open): Use job_start() on Linux
Christian Brabandt [Tue, 10 Mar 2026 20:42:43 +0000 (20:42 +0000)] 
runtime(open): Use job_start() on Linux

Problem:  With zsh, executing :!nohup xdg-open url >/dev/null 2>&1 &
          does not launch the browser. This occurs presumably because
          gvim/zsh cleans up background processes in a non-interactive
          session too quickly.
Solution: Use job_start() with "stoponexit" set to an empty string.
          This bypasses the shell entirely (fixing the zsh issue)
          and ensures the browser process is not killed when Vim exits.
          On Linux, shellescape() is removed as job_start() in list
          mode handles special characters natively.

fixes: #19594

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(toml): update syntax script and fix highlight of dates and escapes
Martin Tournoij [Tue, 10 Mar 2026 20:02:05 +0000 (20:02 +0000)] 
runtime(toml): update syntax script and fix highlight of dates and escapes

From upstream:
https://github.com/cespare/vim-toml/pull/69
https://github.com/cespare/vim-toml/pull/70

closes: #19591

Signed-off-by: Martin Tournoij <martin@arp242.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0136: memory leak in add_interface_from_super_class() v9.2.0136
Huihui Huang [Tue, 10 Mar 2026 19:56:08 +0000 (19:56 +0000)] 
patch 9.2.0136: memory leak in add_interface_from_super_class()

Problem:  memory leak in add_interface_from_super_class() in
          src/vim9class.c
Solution: Free variable intf_name in the error case, decrement the
          impl_gap grow array (Huihui Huang).

closes: #19629

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0135: memory leak in eval_tuple() v9.2.0135
Huihui Huang [Tue, 10 Mar 2026 19:49:55 +0000 (19:49 +0000)] 
patch 9.2.0135: memory leak in eval_tuple()

Problem:  memory leak in eval_tuple() in src/tuple.c
Solution: Free variable tuple on early return (Huihui Huang).

closes: #19628

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0134: memory leak in socket_server_send_reply() v9.2.0134
Huihui Huang [Tue, 10 Mar 2026 19:40:33 +0000 (19:40 +0000)] 
patch 9.2.0134: memory leak in socket_server_send_reply()

Problem:  memory leak in socket_server_send_reply() in src/os_unix.c
Solution: Free final in the error case when returning early
          (Huihui Huang).

closes: #19627

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0133: memory leak in netbeans_file_activated() v9.2.0133
Huihui Huang [Tue, 10 Mar 2026 19:33:22 +0000 (19:33 +0000)] 
patch 9.2.0133: memory leak in netbeans_file_activated()

Problem:  memory leak in netbeans_file_activated()
Solution: Free q on early return (Huihui Huang).

closes: #19626

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0132: tests: Test_recover_corrupted_swap_file1 fails on be systems v9.2.0132
James McCoy [Tue, 10 Mar 2026 18:39:40 +0000 (18:39 +0000)] 
patch 9.2.0132: tests: Test_recover_corrupted_swap_file1 fails on be systems

Problem:  tests: Test_recover_corrupted_swap_file1 fails on big-ending
          systems (after v9.2.0077)
Solution: Skip the test on big-endian systems (James McCoy)

The POC files were generated on 64-bit little-endian systems and
therefore are not portable to any other system type.

Extract the 64-bit / endianness detection from
Test_recover_corrupted_swap_file() into a SetUp() function and use that
data to determine if the test should be run.

closes: #19620

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0131: potential buffer overflow in regdump() v9.2.0131
Christian Brabandt [Sun, 8 Mar 2026 19:18:28 +0000 (19:18 +0000)] 
patch 9.2.0131: potential buffer overflow in regdump()

Problem:  Potential buffer overflow in regdump()
Solution: Add the size to the compiled regular expression and ensure we
          don't read over the limit.

Note: this is not a security issue, because regdump() is typically not
compiled in any version of Vim, so should not affect anybody.

supported by AI claude.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0130: missing range flags for the :tab command v9.2.0130
Doug Kearns [Mon, 9 Mar 2026 19:52:30 +0000 (19:52 +0000)] 
patch 9.2.0130: missing range flags for the :tab command

Problem:  :tab accepts a tab address range but doesn't specify this in
          the command specification.
Solution: Add EX_RANGE and EX_ZEROR to the command specification and use
          ADDR_TABS (Doug Kearns).

As command modifers are handled separately before these flags are tested
in the ex-command parser they have no effect.  However, it's better to
use an accurate description and the command specification table has uses
in other areas like runtime file generation for the Vim filetype.

closes: #19100

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0129: popup: wrong handling of wide-chars and opacity:0 v9.2.0129
Yasuhiro Matsumoto [Mon, 9 Mar 2026 18:47:10 +0000 (18:47 +0000)] 
patch 9.2.0129: popup: wrong handling of wide-chars and opacity:0

Problem:  popup: wrong handling of wide-chars and opacity:0
Solution: Correctly handle opacity 0, correctly handle wide chars
          (Yasuhiro Matsumoto)

closes: #19606

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0128: Wayland: using _Boolean instead of bool type v9.2.0128
Christoffer Aasted [Mon, 9 Mar 2026 18:33:51 +0000 (18:33 +0000)] 
patch 9.2.0128: Wayland: using _Boolean instead of bool type

Problem:  Wayland: using _Boolean instead of bool type
Solution: Change type of variable (Christoffer Aasted).

related: #19473
closes:  #19610

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0127: line('w0') and line('w$') return wrong values in a terminal v9.2.0127
Christian Brabandt [Mon, 9 Mar 2026 18:26:41 +0000 (18:26 +0000)] 
patch 9.2.0127: line('w0') and line('w$') return wrong values in a terminal

Problem:  In a terminal window, line('w0') and line('w$') return wrong
          values instead of the first and last visible line number,
          because a terminal buffer does not go through the normal
          redraw path that updates w_topline and w_botline (ubaldot).
Solution: Before computing w0 and w$, sync the terminal contents to the
          buffer by calling may_move_terminal_to_buffer() so that
          w_topline and w_botline are correctly updated.

fixes:  #19585
closes: #19615

supported by AI claude.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agopatch 9.2.0126: String handling can be improved v9.2.0126
John Marriott [Mon, 9 Mar 2026 18:17:22 +0000 (18:17 +0000)] 
patch 9.2.0126: String handling can be improved

Problem:  String handling can be improved
Solution: Pass string length where it is known to avoid strlen() calls,
          do a few minor refactors (John Marriott).

This commit changes some calls to function `set_vim_var_string()` to pass
the string length where it is known or can be easily calculated.

In addition:
In `evalvars.c`:
  * In function `set_reg_var()` turn variable `regname` into a C string
    because that is how it used.
  * Small cosmetics.
In `option.c`:
  * Slightly refactor function `apply_optionset_autocmd()` to move some
    variables closer to where they are used.
In `getchar.c`:
  * Slightly refactor function `do_key_input_pre()`:
    -> change call to `dict_add_string()` to `dict_add_string_len()` and
       pass it the length of `buf`.
    -> only call `get_vim_var_string()` once.
In `message.c`:
  * Use a `string_T` to store local variable `p`.
In `normal.c`:
  * Move some variables closer to where they are used.

closes: #19618

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 months agoruntime(doc): Update intro.txt about Neovim
Phạm Bình An [Sun, 8 Mar 2026 20:58:44 +0000 (20:58 +0000)] 
runtime(doc): Update intro.txt about Neovim

Just to fix some phrases:
- "A Vim clone". Neovim document says that it is not a clone, but just a
  fork https://neovim.io/doc/user/nvim/#nvim
- "Supports a remote GUI". Neovim supports any UI (both GUI and TUI)
  that implements its UI protocol, so "a" is not correct
- "Integration with scripting languages". This is true, but it is also
  true to Vim (which supports 8 scripting languages AFAIK), so this
  probably doesn't need to be said in this document. Instead, what makes
  Neovim unique in this "scripting languages" aspect is its first class
  support for Lua.

closes: #19605

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>