]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
4 days agoruntime(zip): Improve Compatibility for powershell 5 and pwsh 7
curbe454 [Thu, 30 Jul 2026 18:14:51 +0000 (18:14 +0000)] 
runtime(zip): Improve Compatibility for powershell 5 and pwsh 7

related: #20832

Co-Authored-By: curbe454 <asu454@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0875: GTK4: GUI does not support command-line arguments v9.2.0875
Foxe Chen [Wed, 29 Jul 2026 19:34:29 +0000 (19:34 +0000)] 
patch 9.2.0875: GTK4: GUI does not support command-line arguments

Problem:  The GTK4 GUI does not support command-line arguments
Solution: Parse the supported GUI arguments in gui_mch_prepare()
          and add the GTK4-specific --prg-name argument (Foxe Chen).

closes: #20847

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(doc): clarify 'laststatus' effect
Christian Brabandt [Wed, 29 Jul 2026 19:22:21 +0000 (19:22 +0000)] 
runtime(doc): clarify 'laststatus' effect

fixes: #20875

Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0874: fold size is compared against 'foldminlines' of the wrong window v9.2.0874
Igor Mikushkin [Wed, 29 Jul 2026 18:53:08 +0000 (18:53 +0000)] 
patch 9.2.0874: fold size is compared against 'foldminlines' of the wrong window

Problem:  checkSmall() compares the fold size of window "wp" against
          the current window's 'foldminlines'.  A fold of another
          window, e.g. measured while it is redrawn, is judged by an
          unrelated option value.
Solution: Use 'foldminlines' of the window containing the fold
          (Igor Mikushkin).

closes: #20864

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Igor Mikushkin <igor.mikushkin@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0873: :redrawstatus does not update the ruler of the last window v9.2.0873
Hirohito Higashi [Wed, 29 Jul 2026 18:45:28 +0000 (18:45 +0000)] 
patch 9.2.0873: :redrawstatus does not update the ruler of the last window

Problem:  When the last window has no status line the ruler takes its
          place in the last screen line, but ":redrawstatus" and
          re-setting 'rulerformat' or 'statusline' do not update it
          there.  An item such as a clock in 'rulerformat' can therefore
          not be refreshed from a timer (watael)
Solution: Also mark the ruler for redrawing when the last window has no
          status line and 'ruler' is set.  Update the documentation,
          tests and add a new test (Hirohito Higashi)

Reported: https://groups.google.com/g/vim_use/c/VKCL2bH8xlk
closes: #20865

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0872: popup with opacity does not use the font of the highlight group v9.2.0872
Hirohito Higashi [Wed, 29 Jul 2026 18:38:53 +0000 (18:38 +0000)] 
patch 9.2.0872: popup with opacity does not use the font of the highlight group

Problem:  When a popup window has an opacity between 0 and 99 the "font"
          item of its highlight group is ignored and the regular font is
          used instead.  The same applies to "ctermfont", and to the
          popup menu when the "opacity:" value of 'pumopt' is used
          (Salman Halim).
Solution: Also take the font from the popup highlight when blending the
          cell attributes (Hirohito Higashi)

fixes:  #20551
closes: #20866

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): GTK: document that "font" in a highlight group has no effect
Hirohito Higashi [Tue, 28 Jul 2026 20:53:34 +0000 (20:53 +0000)] 
runtime(doc): GTK: document that "font" in a highlight group has no effect

Problem:  It is not documented that in the GTK GUI the "font" item of a
          highlight group only works for the "Normal" group.  The example
          even uses another group, so it does not work there.
Solution: Mention the restriction and use the "Normal" group in the
          example.

closes: #20867

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Update popup width rule
Hirohito Higashi [Tue, 28 Jul 2026 20:50:27 +0000 (20:50 +0000)] 
runtime(doc): Update popup width rule

Problem:  The documentation says the width of a popup window is equal to
          the longest visible line, while since 9.2.0419 it is the
          longest line in the buffer, also when that line is not
          displayed.
Solution: Update the documentation and correct a comment that says
          otherwise.

Reported: https://groups.google.com/g/vim_use/c/_rOLxGz5kNM

related: #20042
closes:  #20870

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0871: screen line is lost when splitting a 'winfixheight' window v9.2.0871
Hirohito Higashi [Tue, 28 Jul 2026 20:45:27 +0000 (20:45 +0000)] 
patch 9.2.0871: screen line is lost when splitting a 'winfixheight' window

Problem:  When the only window has 'winfixheight' set and 'laststatus'
          is one, splitting it leaves one screen line unused.  This
          happens for example when jumping to an item from a maximized
          quickfix window (rendcrx)
Solution: Do not subtract the height of the status line twice
          (Hirohito Higashi)

fixes:  #20495
closes: #20871

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Vim9: dictionary in a lambda block is not documented
Hirohito Higashi [Tue, 28 Jul 2026 20:39:43 +0000 (20:39 +0000)] 
runtime(doc): Vim9: dictionary in a lambda block is not documented

Problem:  It is not documented that inside a lambda block the closing "}"
          of a dictionary must not be at the start of a line.  The note
          is only given for a command block, while the restriction is the
          same.
Solution: Mention it at |inline-function| and refer to |command-block|.

closes: #20872
fixes:  #20693

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(karel): improve indent plugin
Patrick Meiser-Knosowski [Tue, 28 Jul 2026 20:36:22 +0000 (20:36 +0000)] 
runtime(karel): improve indent plugin

closes: #20873

Signed-off-by: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0870: filetype: marko files are not recognized v9.2.0870
Brian Carbone [Tue, 28 Jul 2026 19:03:49 +0000 (19:03 +0000)] 
patch 9.2.0870: filetype: marko files are not recognized

Problem:  filetype: marko files are not recognized
Solution: Detect *.marko files as marko filetype, include a syntax
          plugin and add syntax tests (Brian Carbone)

References:
https://markojs.com
https://github.com/marko-js/tree-sitter
https://github.com/marko-js/language-server
https://v5.markojs.com/docs/editor-plugins/

closes: #20863

Signed-off-by: Brian Carbone <brian@briancarbone.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0869: buf_copy_options() can lose the P_INSECURE flag v9.2.0869
Christian Brabandt [Tue, 28 Jul 2026 18:52:44 +0000 (18:52 +0000)] 
patch 9.2.0869: buf_copy_options() can lose the P_INSECURE flag

Problem:  An insecurely-set 'indentexpr', 'formatexpr', 'includeexpr'
          or 'complete' value can end up evaluated outside the
          sandbox after buf_copy_options() and clears the flag.
Solution: Copy the insecure flag alongside the value in
          buf_copy_options(), and make 'complete' a per-buffer
          insecure-flags field

Supported by AI.

closes: #20861

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0868: GTK: Window Manager hint prevents giving focus to dialog v9.2.0868
Christoffer Aasted [Tue, 28 Jul 2026 18:43:56 +0000 (18:43 +0000)] 
patch 9.2.0868: GTK: Window Manager hint prevents giving focus to dialog

Problem:  GTK: Window Manager hint prevents giving focus to dialog
          (Allen Wild, after v9.1.0881)
Solution: Remove Window Manager hint again (Christoffer Aasted)

related: #16100
fixes:   #17760
closes:  #20727

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(m4): Prevent the m4Disabled region from nesting within itself.
Sam Williams [Tue, 28 Jul 2026 18:33:49 +0000 (18:33 +0000)] 
runtime(m4): Prevent the m4Disabled region from nesting within itself.

closes: #20801

Signed-off-by: Sam Williams <sam@badcow.co>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0867: MS-Windows: messages are not in the display language v9.2.0867
Hirohito Higashi [Mon, 27 Jul 2026 22:04:06 +0000 (22:04 +0000)] 
patch 9.2.0867: MS-Windows: messages are not in the display language

Problem:  On MS-Windows the messages use the language of the regional
          format, not the language that Windows is displayed in
          (Markus Nißl)
Solution: Use the display language for the messages, with the other
          preferred languages as fall back.  Make ":language messages"
          overrule it (Hirohito Higashi).

fixes:  #20855
closes: #20860

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0866: MS-Windows: ":language messages" only works once v9.2.0866
Hirohito Higashi [Mon, 27 Jul 2026 21:55:27 +0000 (21:55 +0000)] 
patch 9.2.0866: MS-Windows: ":language messages" only works once

Problem:  On MS-Windows ":language messages" has no effect once messages
          have been translated, the previous language keeps being used.
Solution: Make gettext drop the translations it cached.

related: #18622
closes:  #20862

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0865: GTK4: non-hardware accelerated UI is too slow v9.2.0865
Foxe Chen [Mon, 27 Jul 2026 20:43:18 +0000 (20:43 +0000)] 
patch 9.2.0865: GTK4: non-hardware accelerated UI is too slow

Problem:  GTK4: non-hardware accelerated UI is too slow
Solution: Remove the sofware rendering (cairo) backend, make the GTK4
          hardware accelerated rendering the default (Foxe Chen).

closes: #20844

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0864: Using some dead code in Wayland feature v9.2.0864
Foxe Chen [Mon, 27 Jul 2026 20:28:31 +0000 (20:28 +0000)] 
patch 9.2.0864: Using some dead code in Wayland feature

Problem:  Using some dead code in Wayland feature
Solution: Cleanup configure check and remove HAVE_SHM_OPEN test, remove
          mch_open_anon_file(), Show result "no" when disabling Wayland
          via configure, regenerate auto/configure (Foxe Chen)

closes: #20859

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0863: MS-Windows GUI: window contents can be missing when VimEnter is slow v9.2.0863
Hirohito Higashi [Mon, 27 Jul 2026 20:19:48 +0000 (20:19 +0000)] 
patch 9.2.0863: MS-Windows GUI: window contents can be missing when VimEnter is slow

Problem:  On MS-Windows the text area can stay undrawn while a slow VimEnter
          autocommand runs, so the window shows what was on the screen behind
          it. Whether this happens depends on when the first paint message
          arrives.
Solution: Draw the text area when the window is opened, instead of waiting for
          the message loop.

related: #20807
closes:  #20858

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0862: Missing test change from v9.2.0857 v9.2.0862
mityu [Mon, 27 Jul 2026 19:25:56 +0000 (19:25 +0000)] 
patch 9.2.0862: Missing test change from v9.2.0857

Problem:  Missing test change from v9.2.0857
Solution: Update the test (mityu)

related: #20848
closes:  #20850

Signed-off-by: mityu <mityu.mail@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0861: GTK4: bleed region updates in jumps v9.2.0861
Foxe Chen [Mon, 27 Jul 2026 19:13:22 +0000 (19:13 +0000)] 
patch 9.2.0861: GTK4: bleed region updates in jumps

Problem:  In the GTK4 GUI (GtkSnapshot) the bleed region is only
          repainted when the text grid changes by a whole cell,
          so during a resize it updates in jumps of several pixels
          instead of following the window edge smoothly.
Solution: Redraw the draw area whenever the bleed values change
          (Foxe Chen).

closes: #20851

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0860: filetype: xilinx design constraint files are not recognized v9.2.0860
Wu, Zhenyu [Mon, 27 Jul 2026 18:55:11 +0000 (18:55 +0000)] 
patch 9.2.0860: filetype: xilinx design constraint files are not recognized

Problem:  filetype: xilinx design constraint files are not recognized
Solution: Detect *.xdc files as tcl filetype (Wu, Zhenyu)

Reference:
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/About-XDC-Constraints

closes: #20853

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): clarify vim9 script autoload mechanism
Ubaldo Tiberi [Mon, 27 Jul 2026 18:40:49 +0000 (18:40 +0000)] 
runtime(doc): clarify vim9 script autoload mechanism

closes: #20833

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@volvo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0859: GTK2: Link error v9.2.0859
Olaf Seibert [Mon, 27 Jul 2026 17:53:33 +0000 (17:53 +0000)] 
patch 9.2.0859: GTK2: Link error

Problem:  GTK2: Link error (after v9.2.0853)
Solution: Adjust ifdef and include only when using at least GTK 3.10
          (Olaf Seibert)

Error message:
ld: objects/gui_gtk_x11.o: in function `gui_mch_init':
gui_gtk_x11.c:(.text+0x33f1): undefined reference to `gtk_widget_get_scale_factor'
link.sh: Linking failed
*** Error code 1

closes: #20857

Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(python): highlight the 'lazy' soft keyword
Jon Parise [Sun, 26 Jul 2026 15:20:02 +0000 (15:20 +0000)] 
runtime(python): highlight the 'lazy' soft keyword

Lazy imports (PEP 810, to be released in Python 3.15) introduces a
`lazy` soft keyword that's recognized when it precedes a `from` or
`import` keyword.

closes: #20342

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.2.0858: MS-Windows GUI: white flash when VimEnter is slow v9.2.0858
Hirohito Higashi [Sun, 26 Jul 2026 14:56:09 +0000 (14:56 +0000)] 
patch 9.2.0858: MS-Windows GUI: white flash when VimEnter is slow

Problem:  In the MS-Windows GUI the window is shown before the screen is
          drawn for the first time.  Until then it displays undefined
          content, which appears as a white flash when a VimEnter
          autocommand delays the first redraw.
Solution: Use the background color for the window as long as the screen
          contents are not available, and paint it again when the
          background color changes while only that color is shown.

fixes:  #20757
closes: #20807

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.2.0857: popup: opacity popup over a terminal is not cleared when closed v9.2.0857
mityu [Sun, 26 Jul 2026 14:40:46 +0000 (14:40 +0000)] 
patch 9.2.0857: popup: opacity popup over a terminal is not cleared when closed

Problem:  A semi-transparent (opacity) popup shown over a terminal window
          leaves its old cells on screen when it is closed.
Solution: When a semi-transparent popup is closed, trigger full redraw
          of underlying terminal windows.

fixes:  #20846
closes: #20848

Signed-off-by: mityu <mityu.mail@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(python): Fix indenting for brackets within python byte strings
qwavies [Sun, 26 Jul 2026 14:28:29 +0000 (14:28 +0000)] 
runtime(python): Fix indenting for brackets within python byte strings

Problem:  s:SearchBracket()'s skip-expression matches syntax group
          names ending in "Comment", "Todo", or "String" to decide
          whether a candidate bracket is inside a string/comment
          and should be skipped for indentation purposes. Byte and
          raw-byte string literals (b"...", rb"...") are highlighted
          via the pythonBytes/pythonRawBytes syntax groups, which
          don't end in "String", so brackets inside them (e.g.
          b"[") were never skipped and were counted as real,
          unmatched brackets, producing incorrect indentation.

Solution: Add "Bytes" to the indent script's existing suffix match,
          so pythonBytes/pythonRawBytes are recognized directly, the
          same way pythonString/pythonFString/pythonRawString
          already are.

          This supersedes an earlier version of this fix that
          renamed pythonBytes/pythonRawBytes to
          pythonBytesString/pythonRawBytesString in
          runtime/syntax/python.vim.

fixes:  #20812
closes: #20827

Signed-off-by: qwavies <qwavsbusiness@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(sh): fix Bash/Ksh array highlighting after an escaped paren
frapank [Sat, 25 Jul 2026 17:03:08 +0000 (17:03 +0000)] 
runtime(sh): fix Bash/Ksh array highlighting after an escaped paren

fixes:  #18712
closes: #20705

Signed-off-by: frapank <francesco.pankov+github@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0856: GTK4: undercurl rendering is inefficient v9.2.0856
Foxe Chen [Sat, 25 Jul 2026 16:57:36 +0000 (16:57 +0000)] 
patch 9.2.0856: GTK4: undercurl rendering is inefficient

Problem:  In the GTK4 GUI the undercurl is drawn by building a path
          across the whole width of each decorated row.  With many
          undercurls on screen this causes frame drops.
Solution: Render a single cycle of the undercurl and tile it across the
          row with a repeating node, so the Vulkan and OpenGL
          renderers can repeat directly (Foxe Chen).

closes: #20829

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoCI: Bump the github-actions group across 1 directory with 3 updates
dependabot[bot] [Sat, 25 Jul 2026 16:51:19 +0000 (16:51 +0000)] 
CI: Bump the github-actions group across 1 directory with 3 updates

Bumps the github-actions group with 3 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [github/codeql-action](https://github.com/github/codeql-action) and [actions/labeler](https://github.com/actions/labeler).

Updates `actions/checkout` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v7.0.0...v7.0.1)

Updates `github/codeql-action` from 4.37.0 to 4.37.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.37.0...v4.37.1)

Updates `actions/labeler` from 6.2.0 to 7.0.0
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v6.2.0...v7.0.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.37.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/labeler
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

closes: #20838

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0855: 'showcmd' not redrawn with empty mapping triggered on timeout v9.2.0855
zeertzjq [Sat, 25 Jul 2026 16:46:29 +0000 (16:46 +0000)] 
patch 9.2.0855: 'showcmd' not redrawn with empty mapping triggered on timeout

Problem:  'showcmd' not redrawn with empty mapping triggered on timeout.
Solution: Don't postpone redraw when inside vgetorpeek(). Also move test
          for tabline 'showcmd' to test_tabline.vim.

fixes:  #20839
closes: #20840

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(osc52): don't use osc52 provider if gui is running
Foxe Chen [Sat, 25 Jul 2026 16:44:20 +0000 (16:44 +0000)] 
runtime(osc52): don't use osc52 provider if gui is running

closes: #20841

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): clarify expandcmd() and "~" behaviour
Hirohito Higashi [Sat, 25 Jul 2026 16:40:40 +0000 (16:40 +0000)] 
runtime(doc): clarify expandcmd() and "~" behaviour

fixes: #20793

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): Tweak documentation style a bit
Hirohito Higashi [Sat, 25 Jul 2026 16:36:52 +0000 (16:36 +0000)] 
runtime(doc): Tweak documentation style a bit

closes: #20843

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): remove incorrect note about spellcapcheck and the first word
Christian Brabandt [Sat, 25 Jul 2026 16:27:18 +0000 (16:27 +0000)] 
runtime(doc): remove incorrect note about spellcapcheck and the first word

'spellcapcheck' checks the first word in the file for a capital like any
sentence start: capcol is seeded to 0 for line 1 in spell_check_sblock().

This has been the case since the feature was added in v7.0100, so the note
that it "doesn't work for the first word in the file" is incorrect.

related: f9184a1d3151b5b727fec86c2ac0946c9c68df4d (code change)
related: 0d9c26dd8333aae4b20015f13fe2e8e1f07037bd (initial doc patch,
         just a few minutes later)
related: #20715

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): document &t_8u as &t_8f and &t_8b
Shay Hill [Sat, 25 Jul 2026 16:08:14 +0000 (16:08 +0000)] 
runtime(doc): document &t_8u as &t_8f and &t_8b

fixes:  #20413
closes: #20837

Signed-off-by: Shay Hill <shay_public@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0854: memory leak when reading a spell file with SN_SAL and SN_SOFO v9.2.0854
Christian Brabandt [Fri, 24 Jul 2026 22:51:53 +0000 (22:51 +0000)] 
patch 9.2.0854: memory leak when reading a spell file with SN_SAL and SN_SOFO

Problem:  Memory leak when a spell file has an SN_SAL section before an
          SN_SOFO section: set_sofo() reuses sl_sal without freeing the
          salitem_T entries left by read_sal_section() (after v9.2.0846).
Solution: Factor the SAL free loop into free_sal_items() and call it
          before set_sofo() reuses sl_sal.

closes:  #20836

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): Fix truncated sentence in :h map()
Christian Brabandt [Fri, 24 Jul 2026 22:23:34 +0000 (22:23 +0000)] 
runtime(doc): Fix truncated sentence in :h map()

fixes: #20725

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0853: popup: popup images do not support scaling v9.2.0853
Foxe Chen [Fri, 24 Jul 2026 21:56:37 +0000 (21:56 +0000)] 
patch 9.2.0853: popup: popup images do not support scaling

Problem:  popup: popup images do not support scaling
Solution: Add popup scaling support for GTK4 UI
          (Foxe Chen).

closes: #20611

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0852: GTK: ligatures not correctly displayed v9.2.0852
Foxe Chen [Fri, 24 Jul 2026 20:51:52 +0000 (20:51 +0000)] 
patch 9.2.0852: GTK: ligatures not correctly displayed

Problem:  GTK: ligatures not correctly displayed
          (thunderbird-1990)
Solution: Split ligatures at cursor location (Foxe Chen).

fixes:  #12901
closes: #20708

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0851: Focus autocommands triggered inconsistently v9.2.0851
Christoffer Aasted [Fri, 24 Jul 2026 20:31:48 +0000 (20:31 +0000)] 
patch 9.2.0851: Focus autocommands triggered inconsistently

Problem:  Focus autocommands triggered inconsistently
Solution: Suppress dialog-generated focus events while a dialog is
          active and on X11 ignore the restoring focus_in_event()
          from closing a dialog (Christoffer Aasted).

closes: #20780

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoUpdate .gitignore and .hgignore files
qeatzy [Fri, 24 Jul 2026 20:28:03 +0000 (20:28 +0000)] 
Update .gitignore and .hgignore files

Ignore everything below auto/ except for configure

fixes:  #20814
closes: #20815

Signed-off-by: qeatzy <qeatzy@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0850: MS-Windows: commands from a client can be lost v9.2.0850
Hirohito Higashi [Fri, 24 Jul 2026 20:20:54 +0000 (20:20 +0000)] 
patch 9.2.0850: MS-Windows: commands from a client can be lost

Problem:  On MS-Windows commands sent by a client in quick succession,
          e.g. repeated "--remote-tab", can be lost: the files are not
          all opened (eight)
Solution: In the GUI the client message is handled re-entrantly, e.g.
          while a command line is being read during a redraw. Inserting
          the received keys into the typeahead buffer then corrupts it.
          Postpone inserting the keys until a safe point where the
          typeahead buffer is empty (Hirohito Higashi).

fixes:  #20810
closes: #20816

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0849: filetype: osquery config files are not recognized v9.2.0849
Fionn Fitzmaurice [Fri, 24 Jul 2026 20:11:25 +0000 (20:11 +0000)] 
patch 9.2.0849: filetype: osquery config files are not recognized

Problem:  filetype: osquery config files are not recognized.
Solution: Detect osquery.conf as jsonc filetype (Fionn Fitzmaurice).

Reference:
https://osquery.readthedocs.io/en/stable/deployment/configuration/#configuration-components

closes: #20826

Signed-off-by: Fionn Fitzmaurice <git@fionn.computer>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0848: tagfunc "cmd" with a generic Ex command corrupts the tag entry v9.2.0848
Hirohito Higashi [Fri, 24 Jul 2026 20:04:21 +0000 (20:04 +0000)] 
patch 9.2.0848: tagfunc "cmd" with a generic Ex command corrupts the tag entry

Problem:  When a tagfunc returns a "cmd" that is neither a line number nor
          a search pattern, the tag entry is corrupted: the "kind" field is
          lost and taglist() returns a mangled "cmd".
Solution: Accept any Ex command in "cmd" as in a tags file, terminate a
          generic command with a bar so the trailing fields are preserved,
          and reject a value that cannot be stored in a tag line with E987
          (Hirohito Higashi).

fixes:   #20781
related: #20790
closes:  #20828

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(iar): Add iar compiler plugin
Andrey Starodoubtsev [Fri, 24 Jul 2026 20:00:13 +0000 (20:00 +0000)] 
runtime(iar): Add iar compiler plugin

closes: #20830

Signed-off-by: Andrey Starodoubtsev <andrey.starodoubtsev@gehealthcare.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(go): update Go syntax file
Billie Cleek [Fri, 24 Jul 2026 19:43:04 +0000 (19:43 +0000)] 
runtime(go): update Go syntax file

Update the Go syntax file with some recent changes made to vim-go to
correctly highlight the second and later lines of concatenated strings
in var or const blocks.

closes: #20835

Signed-off-by: Billie Cleek <bhcleek@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0847: [security]: vimball: code execution via .VimballRecord file v9.2.0847
Christian Brabandt [Fri, 24 Jul 2026 15:43:51 +0000 (17:43 +0200)] 
patch 9.2.0847: [security]: vimball: code execution via .VimballRecord file

Problem:  [security]: vimball: code execution via .VimballRecord file
          (tdjackey)
Solution: Forbid arbitrary commands, fix broken directory deletion code,
          refactor code

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-r22p-fhw4-84p2

Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0846: [security]: heap buffer overflow in set_sofo() v9.2.0846
Yasuhiro Matsumoto [Thu, 23 Jul 2026 15:58:37 +0000 (00:58 +0900)] 
patch 9.2.0846: [security]: heap buffer overflow in set_sofo()

Problem:  [security]: heap buffer overflow in set_sofo()
          (Yazan Balawneh)
Solution: Reset sl_sal_first (Yasuhiro Matsumoto).

A crafted spell file with an empty SN_SAL section before an SN_SOFO
section reaches set_sofo() with sl_sal_first[] already set to -1 by
set_sal_first(). The counting loop then under-counts colliding
multi-byte "from" characters, allocates an undersized list and writes
past its end.

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-9jqx-hgpr-6v64

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0845: [security]: arbitrary Ex command execution during C omni-completion v9.2.0845
Yasuhiro Matsumoto [Fri, 17 Jul 2026 00:11:42 +0000 (09:11 +0900)] 
patch 9.2.0845: [security]: arbitrary Ex command execution during C omni-completion

Problem:  [security]: arbitrary Ex command execution during C
          omni-completion (Threonine)
Solution: Match tags typeref literally to block Ex command injection
          (Yasuhiro Matsumoto).

Escaping only "/" and "\" left the typeref able to break out of the
:vimgrep pattern without a "/": an unclosed "[" makes vimgrep's pattern
skipping fail, and the parser then treats a following "|" as a command
separator, so the tag value runs as Ex commands during C omni-completion.
Match the field literally with \V so no regex metacharacter can affect
pattern parsing.

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-cx73-phcg-3j5g

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0844: [security]: use-after-free on json decode error v9.2.0844
Yasuhiro Matsumoto [Thu, 16 Jul 2026 09:39:24 +0000 (18:39 +0900)] 
patch 9.2.0844: [security]: use-after-free on json decode error

Problem:  [security]: use-after-free on json decode error
          (@tdjackey)
Solution: Report the position from the current reader
          (Matsumoto Yasuhiro)

json_decode_item() caches "p" into js_buf, but json_decode_string() can
refill via channel_fill(), which frees the old js_buf. When the string
parse then fails (e.g. an invalid \u escape), the shared error path passed
the now-dangling "p" to semsg(), a heap use-after-free read reachable
pre-auth through the socketserver.

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-69ch-22ch-r887

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0843: [security]: popup: opacity mask indexed out of bounds v9.2.0843
Hirohito Higashi [Wed, 22 Jul 2026 05:51:00 +0000 (14:51 +0900)] 
patch 9.2.0843: [security]: popup: opacity mask indexed out of bounds

Problem:  [security]: A "clipwindow" popup with "opacity" anchored to a
          text property can keep a negative window row when the anchor
          scrolls above the top of the host window.  The opacity mask
          loop then indexes the screen array before its start, causing
          an out-of-bounds read and a conditional out-of-bounds write
          (tdjackey).
Solution: Keep the popup window row at the first visible row and record
          the clipped-off top rows only in the top offset, so no
          consumer has to clamp the row and the opacity mask loop stays
          in bounds (Hirohito Higashi).

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-pmvp-6rcj-98p4

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0842: [security]: stack buffer overflow in socket server v9.2.0842
Yasuhiro Matsumoto [Thu, 23 Jul 2026 20:50:10 +0000 (20:50 +0000)] 
patch 9.2.0842: [security]: stack buffer overflow in socket server

Problem:  [security]: stack buffer overflow in socket server
          (tdjackey)
Solution: Cap accepted socketserver clients (Yasuhiro Matsumoto)

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-49m8-wwxj-mr69

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0841: [security]: heap overflow when adding > 65535 text properties v9.2.0841
Yasuhiro Matsumoto [Thu, 23 Jul 2026 20:14:13 +0000 (20:14 +0000)] 
patch 9.2.0841: [security]: heap overflow when adding > 65535 text properties

Problem:  [security]: heap overflow when adding > 65535 text properties
          (Wang1rrr).
Solution: Verify that the number of text properties falls within the
          limit (Yasuhiro Matsumoto).

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-hm4g-pjfx-m27j

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0840: [security]: code injection in netrw via bookmarks v9.2.0840
Yasuhiro Matsumoto [Mon, 6 Jul 2026 04:54:03 +0000 (13:54 +0900)] 
patch 9.2.0840: [security]: code injection in netrw via bookmarks

Problem:  [security]: code injection in netrw via bookmarks and history
          (David Carliez)
Solution: Escape the '|' explicitly (Yasuhiro Matsumoto)

The bookmark and history menu builders interpolate paths into :execute'd
:menu commands using g:netrw_menu_escape, which did not escape the Ex
command separator '|'. A crafted path could break out of the :menu command
and run arbitrary Ex/shell commands when the menu was built or triggered.

Add '|' to g:netrw_menu_escape for the menu names, escape the :e right-hand
side with fnameescape(), and quote the netrw#MakeTgt() argument with
string() instead of raw single-quote interpolation.

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-rcr7-f3wr-22r2

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0839: [security]: arbitrary code execution via keyword lookup v9.2.0839
Yasuhiro Matsumoto [Thu, 23 Jul 2026 19:13:15 +0000 (19:13 +0000)] 
patch 9.2.0839: [security]: arbitrary code execution via keyword lookup

Problem:  [security]: arbitrary code execution via keyword lookup in
          sh.vim, zsh.vim and ps1.vim filetype plugin
          (manus-use)
Solution: For powershell, quote the commands using single quotes, for
          sh/zsh pass the argument as a separate list item to term_start()/system()
          (Yasuhiro Matsumoto).

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-r5v6-q6j8-8qw2

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agoruntime(spellfile): xdg: Do not assume $HOME/.vim directory
Christian Brabandt [Wed, 22 Jul 2026 21:49:18 +0000 (21:49 +0000)] 
runtime(spellfile): xdg: Do not assume $HOME/.vim directory

fixes: #20794

Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(doc): clarify re-sourcing of Vim9 script behaviour
Christian Brabandt [Wed, 22 Jul 2026 21:18:31 +0000 (21:18 +0000)] 
runtime(doc): clarify re-sourcing of Vim9 script behaviour

related: #19205

Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0838: searchcount() returns wrong cached maxcount v9.2.0838
glepnir [Wed, 22 Jul 2026 20:08:06 +0000 (20:08 +0000)] 
patch 9.2.0838: searchcount() returns wrong cached maxcount

Problem:  Cached searchcount() returns 'maxsearchcount' instead of the
          requested maxcount.
Solution: return the remembered last_maxcount (glepnir)

closes: #20701

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0837: Using wrong colors in hl_blend_attr() v9.2.0837
Shad [Wed, 22 Jul 2026 20:01:09 +0000 (20:01 +0000)] 
patch 9.2.0837: Using wrong colors in hl_blend_attr()

Problem:  Using wrong colors in hl_blend_attr()
          (after v9.2.0715)
Solution: Use the correct background color
          (Shad)

related: #20624
closes:  #20704

Signed-off-by: Shad <shadow.walker@free.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0836: filetype: .git-blame-ignore-revs file is not recognized v9.2.0836
Fionn Fitzmaurice [Wed, 22 Jul 2026 19:49:58 +0000 (19:49 +0000)] 
patch 9.2.0836: filetype: .git-blame-ignore-revs file is not recognized

Problem:  filetype: .git-blame-ignore-revs file is not recognized
Solution: Detect .git-blame-ignore-revs file as gitrevlist filetype,
          include syntax and filetype plugins (Fionn Fitzmaurice)

A Git revision list is

> a list of object names (i.e. one unabbreviated SHA-1 per line)...,
> comments (#), empty lines, and any leading and trailing whitespace are
> ignored.

(from Git's fsck.skipList documentation).

The default output of git rev-list will match this. It is also suitable
as input to git blame --ignore-revs-file.

This adds filetype detection matching .git-blame-ignore-revs files,
syntax highlighting and basic filetype settings.

closes: #20702

Signed-off-by: Fionn Fitzmaurice <fionn@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0835: features in version.c are not sorted v9.2.0835
Muraoka Taro [Wed, 22 Jul 2026 19:18:03 +0000 (19:18 +0000)] 
patch 9.2.0835: features in version.c are not sorted

Problem:  features in version.c are not sorted
Solution: Sort features case-insensitively (Taro Muraoka)

closes: #20717

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0834: cleared last search pattern is restored from viminfo v9.2.0834
Barrett Ruth [Wed, 22 Jul 2026 18:48:47 +0000 (18:48 +0000)] 
patch 9.2.0834: cleared last search pattern is restored from viminfo

Problem:  cleared last search pattern is restored from viminfo
Solution: Do not apply the search pattern and 'hlsearch' state read
          from viminfo while writing (Barrett Ruth).

fixes:  #20718
closes: #20720

Signed-off-by: Barrett Ruth <br@barrettruth.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0833: GTK4: menu mnemonics do not work properly v9.2.0833
Foxe Chen [Wed, 22 Jul 2026 18:29:31 +0000 (18:29 +0000)] 
patch 9.2.0833: GTK4: menu mnemonics do not work properly

Problem:  GTK4: menu mnemonics do not work properly
Solution: Force "mnemonics-visible" back on via a notify handler and
          set the active item on "mnemonic-activate" (Foxe Chen).

closes: #20722

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(netrw): fix E471 in Neovim when g:netrw_chgwin is one past the last window
erdivartanovich [Wed, 22 Jul 2026 18:22:15 +0000 (18:22 +0000)] 
runtime(netrw): fix E471 in Neovim when g:netrw_chgwin is one past the last window

Problem:  Opening a file from a netrw listing throws
          "E471: Argument required: keepj keepalt 2wincmd 1" when
          g:netrw_chgwin equals winnr('$')+1, e.g. after opening
          :Lexplore (which sets g:netrw_chgwin=2) and closing the
          sidebar, then browsing with :Explore in the remaining window.
          s:NetrwBrowseChgDir builds the window jump as
          "g:netrw_chgwin wincmd curwin", passing the saved window
          NUMBER where wincmd expects its single-letter argument.
Solution: Jump back to the saved window with "curwin wincmd w", as the
          surrounding comment intends; the following statement then
          performs the actual jump to g:netrw_chgwin.

The faulty line dates back to at least Vim 9.0
(runtime/autoload/netrw.vim:4976 at v9.0.0000).

Reported (against the since-archived netrw repo) in
saccarosium/netrw.vim#98 and neovim/neovim#34169.

Note: no test, because the error reproduces only in Neovim.

closes: #20741

Signed-off-by: erdivartanovich <erdivartanovich@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0832: socketserver: remote commands can be processed in reverse order v9.2.0832
Hirohito Higashi [Wed, 22 Jul 2026 18:15:02 +0000 (18:15 +0000)] 
patch 9.2.0832: socketserver: remote commands can be processed in reverse order

Problem:  When several clients send a command in quick succession, e.g.
          ":drop" from repeated "--remote-tab", the commands can be
          processed in reverse order, so the files open in the wrong
          order.
Solution: The server inserts a newly accepted client at the head of the
          client list, so pending clients are handled newest-first.
          Append the client to the end of the list instead, so they are
          handled in the order they were accepted (Hirohito Higashi).

closes: #20813

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0831: diff highlighting hard to read with syntax enabled v9.2.0831
Maxim Kim [Wed, 22 Jul 2026 17:22:44 +0000 (17:22 +0000)] 
patch 9.2.0831: diff highlighting hard to read with syntax enabled

Problem:  diff highlighting hard to read with syntax enabled and
          terminals having 256 or less colors (Andrey Butirsky)
Solution: Set a cterm foreground color (Maxim Kim)

fixes:  #4071
closes: #20711

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoUpdate .gitignore and .hgignore files
Christian Brabandt [Wed, 22 Jul 2026 17:15:59 +0000 (17:15 +0000)] 
Update .gitignore and .hgignore files

Ignore everything below auto/ except for configure

fixes: #20814

Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0830: the completion menu is not used on terminals without colors v9.2.0830
Hirohito Higashi [Wed, 22 Jul 2026 10:03:11 +0000 (10:03 +0000)] 
patch 9.2.0830: the completion menu is not used on terminals without colors

Problem:  When the terminal reports no colors ("t_Co" is 0 or 1) the
          insert mode completion popup menu is not shown at all, while
          the command line completion popup menu ('wildoptions' contains
          "pum") is shown.  In 'wildmenu' completion the current match
          cannot be told apart from the other matches (Maxim Kim)
Solution: Show the insert mode completion popup menu regardless of the
          number of colors and add "term" attributes to the default
          highlighting of Pmenu, PmenuSel and PmenuThumb.  The wildmenu
          is drawn with the attributes of the status line, which is
          reversed, and on most terminals the standout mode is the same
          as the reverse mode, thus use the underline mode for the
          default highlighting of WildMenu (Hirohito Higashi).

fixes:  #20800
closes: #20803

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(colors): update colorschemes
Maxim Kim [Wed, 22 Jul 2026 09:54:31 +0000 (09:54 +0000)] 
runtime(colors): update colorschemes

1. new colorscheme `novum` port of nvim dev_theme
2. minor updates to
    - catppuccin
    - habamax
    - lunaperche
    - retrobox
    - ron
    - shine
    - wildcharm

closes: #20723

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0829: Sessions do not preserve script version for expression options v9.2.0829
Illia Bobyr [Wed, 22 Jul 2026 09:48:19 +0000 (09:48 +0000)] 
patch 9.2.0829: Sessions do not preserve script version for expression options

Problem:  Sessions do not preserve script version for option holding
          expressions
Solution: Remember script version for string options, and add a
          ":legacy" prefix for ":set"/":setlocal" calls when necessary

Since patch v9.2.0579 (":mksession, :mkview and :mkvimrc emit legacy Vim
script") session files are marked as Vim9 script.  A few options have
Vim expressions as their values.  When inserted their values literally
into a Vim9 script, these expressions are now evaluated as Vim9
expressions.  But the original value might have been set by a legacy
script.

In order to be backward compatible and not break most of the existing
file type plugin scripts, we need to consider the script version of the
option value.  If an option was set in a legacy script, or via "legacy
set"/"legacy setlocal", we need to restore it using the "legacy" prefix
as well.

Options are not marked as expression options, vs string options, vs bool
options.  We only know if an option is a bool, number or a string
option.  It seems safe to set bool and number options using Vim9
semantics.  But for string options we do not know if an option value is
a Vim expression.  And so, if it was set by a legacy script we just
use a conservative approach and prefix the "set" or "setlocal" command
with "legacy" for all string options set in a legacy context.

related: #20152
closes:  #20696

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(doc): improve suggested detection method for WSL
Mao-Yining [Wed, 22 Jul 2026 09:44:53 +0000 (09:44 +0000)] 
runtime(doc): improve suggested detection method for WSL

Current method can't work in Windows Terminal as far as I know.

This is a way that already had been adopted in `dist/vim9.vim`.

closes: #20714

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(doc): clarify 'icon' and 'title' interaction for screen 5
Christoffer Aasted [Wed, 22 Jul 2026 09:39:02 +0000 (09:39 +0000)] 
runtime(doc): clarify 'icon' and 'title' interaction for screen 5

related: #20553
related: #20604
closes:  #20703

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0828: GTK4: hardware rendering can be improved v9.2.0828
Foxe Chen [Wed, 22 Jul 2026 09:31:53 +0000 (09:31 +0000)] 
patch 9.2.0828: GTK4: hardware rendering can be improved

Problem:  GTK4: hardware rendering can be improved
Solution: Refactor code (Foxe Chen)

This change does the following:

- Make each cell have its own array of glyphs, that represent it. Before
  glyphs were stored per span of drawn text.
- Background color, invert blend is now stored as a single row pixel
  buffer, that is scaled up to size when rendering. No need to have logic
  for merging visual attributes together.
- Underlines, undercurls, and strikethroughs use a mask outline, and a
  pixel buffer (similar to the above) that is opaque at parts where there
  are under decorations. This means having 100 individual undercurls that
  are all separated by spaces in a row will only result in a single mask
  node.
- Render nodes are cached per row, because creating render nodes are
  cheap. The actual heavy stuff would be shaping text into glyphs, which
  are cached per cell.
- Use PangoAttrFontFeatures to handle guiligatures option, instead of
  manually splitting draw calls, which is buggy and complex (some complex
  unicode characters are not rendered correctly).
- Render block cursor separately, this prevents a full redraw of the text
  for the row the cursor is on (only if glyphs in cell underneath cursor
  did not change).

Complex unicode characters that bleed outside of the cell should look
better, since the background is always rendered before all glyphs,
meaning they are not clipped off.

fixes:  #13435
closes: #20674

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0827: :startinsert enters Insert mode in a non-modifiable buffer v9.2.0827
Hirohito Higashi [Wed, 22 Jul 2026 09:23:31 +0000 (09:23 +0000)] 
patch 9.2.0827: :startinsert enters Insert mode in a non-modifiable buffer

Problem:  ":startinsert" enters Insert mode in a buffer where
          'modifiable' is off, the error only appears when a character
          is typed.  Typing "i" gives the error right away (Barrett Ruth)
Solution: Give the error when the buffer is not modifiable, like "i"
          does.  Keep ignoring the command in a terminal window, where
          ":startinsert" is documented to be ineffective, and keep
          accepting it when 'insertmode' is set, like "i" does
          (Hirohito Higashi).

fixes:  #20804
closes: #20806

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0826: highlighting for broken terminals can be improved v9.2.0826
Maxim Kim [Wed, 22 Jul 2026 09:16:53 +0000 (09:16 +0000)] 
patch 9.2.0826: highlighting for broken terminals can be improved

Problem:  highlighting for broken terminals can be improved
          (Maxim Kim)
Solution: Make the highlighting work better when the terminal does not
          support colors (Maxim Kim)

In a colorless or broken terminal emulator current syntax highlighting
is too intense with using bold and underline for various syntax
elements.

In this scenario, when the colors are not available at all, the most
important part of the syntax is the comments, something that is not
executed or compiled.

- Comments are highlighted as bold
- All other syntax elements are set to NONE
- LineNr is not highlighted (was underline)
- SpecialKey is not highlighted (was bold)

fixes:  #20712
closes: #20799

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0825: regexp: submatch in a look-behind is empty with the NFA engine v9.2.0825
Hirohito Higashi [Wed, 22 Jul 2026 08:49:26 +0000 (08:49 +0000)] 
patch 9.2.0825: regexp: submatch in a look-behind is empty with the NFA engine

Problem:  With the NFA engine a sub-expression inside a variable width
          look-behind, e.g. "\v(.)@<=", is empty for the first match on
          every line except the first one.  The old engine is correct
          (Mukundan)
Solution: The look-behind is retried from the previous line, because the
          width of "." is over-estimated.  While scanning that line the
          start state is added at the end of the line, where it gets the
          position of the line break as its start position, even though
          the match actually starts on the next line.  Use the position
          of the start of the next line in that case (Hirohito Higashi).

fixes:  #20802
closes: #20805

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0824: Makefile: Make tags depends on configure v9.2.0824
Christoffer Aasted [Wed, 22 Jul 2026 08:42:59 +0000 (08:42 +0000)] 
patch 9.2.0824: Makefile: Make tags depends on configure

Problem:  Makefile: Make tags depends on configure
Solution: Separate the make tags into a separate makefile
          (Christoffer Aasted)

closes: #20707

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.2.0823: tests: Test_clientserver_servlist_list may fail v9.2.0823
James McCoy [Tue, 21 Jul 2026 16:28:59 +0000 (16:28 +0000)] 
patch 9.2.0823: tests: Test_clientserver_servlist_list may fail

Problem:  tests: Test_clientserver_servlist_list may fail
Solution: Skip Test_clientserver_serverlist_list for non-gvim GUI builds
          (James McCoy)

Running a GUI build that cannot access the GUI clientserver will fail
like below

    command line..script /build/package/src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_clientserver_serverlist_list[16]..WaitForAssert[2]..<SNR>4_WaitForCommon[11]..<lambda>23 line 1: Pattern 'XVIMTEST' does not match ''
    command line..script /build/package/src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_clientserver_serverlist_list line 18: Expected 'list<string>' but got 'string'
    Caught exception in Test_clientserver_serverlist_list(): Vim(call):E897: List or Blob required @ command line..script /build/package/src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_clientserver_serverlist_list, line 19

closes: #20719

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.2.0822: GTK4: crash menu id is null in gui_mch_destroy_menu() v9.2.0822
Foxe Chen [Tue, 21 Jul 2026 16:23:32 +0000 (16:23 +0000)] 
patch 9.2.0822: GTK4: crash menu id is null in gui_mch_destroy_menu()

Problem:  GTK4: crash menu id is null in gui_mch_destroy_menu()
Solution: Check that menu->id is not null before calling
          vim_menu_remove() (Foxe Chen).

closes: #20724

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.2.0821: filetype: msmtp system-wide rc file not detected v9.2.0821
Doug Kearns [Tue, 21 Jul 2026 16:15:48 +0000 (16:15 +0000)] 
patch 9.2.0821: filetype: msmtp system-wide rc file not detected

Problem:  filetype: msmtp system-wide rc file not detected (chdiza).
Solution: Detect 'msmtprc' as filetype msmtp, like '.msmtprc'
          (Doug Kearns).

fixes:  #20751
closes: #20752

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0820: GUI: hidden popup image is displayed and not erased v9.2.0820
Hirohito Higashi [Mon, 20 Jul 2026 17:50:06 +0000 (17:50 +0000)] 
patch 9.2.0820: GUI: hidden popup image is displayed and not erased

Problem:  In the GUI a popup image is drawn even when the popup is
          hidden, and hiding a popup leaves part of the image on the
          screen (Bakudankun).
Solution: Skip hidden popups when repainting images after the cursor is
          undrawn or the window is exposed.  Redraw the area the image
          covered when the popup is hidden or closed, also for the GDI
          backend (Hirohito Higashi).

fixes:  #20796
closes: #20798

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0819: MS-Windows: sixel image shown as raw text in the console v9.2.0819
Hirohito Higashi [Mon, 20 Jul 2026 17:44:27 +0000 (17:44 +0000)] 
patch 9.2.0819: MS-Windows: sixel image shown as raw text in the console

Problem:  On the MS-Windows console a popup image is displayed as the raw
          sixel escape sequence instead of the image, unless
          'termguicolors' is set (Bakudankun).
Solution: Write a DCS sequence with the console API that lets the console
          parse it, no matter which write path the current colors select.
          Keep track of the terminator across writes, since a long
          sequence is split up (Hirohito Higashi).

fixes:  #20795
closes: #20797

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0818: tests: client-server test fails without X11 server v9.2.0818
Muraoka Taro [Mon, 20 Jul 2026 17:31:59 +0000 (17:31 +0000)] 
patch 9.2.0818: tests: client-server test fails without X11 server

Problem:  When unable to connect to X11, serverlist({'list':1}) returns
          a string instead of a list. This causes Test_remote_serverlist() in
          test_vim9_builtin.vim to fail.
Solution: Raise E240 (No connection to the X server)

Additionally, This fix `Test_clientserver_env_method()` keeping
`VIM_CLIENTSERVER` environment variable instead of deleting it. This
allows certain `+clientserver` tests to pass, even in environments where
the X11 server is unavailable, provided that `VIM_CLIENTSERVER=socket`
is set.

closes: #20716

Co-Authored-By: James McCoy <jamessan@jamessan.com>
Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0817: crash when building a stacktrace during an autocommand v9.2.0817
Hirohito Higashi [Mon, 20 Jul 2026 17:11:43 +0000 (17:11 +0000)] 
patch 9.2.0817: crash when building a stacktrace during an autocommand

Problem:  Vim can crash while building a stack trace when an autocommand
          is being triggered but has not matched a pattern yet, for
          example at the more prompt with 'verbose' set (stefanos82).
Solution: Handle the autocommand entry on the execution stack that does
          not have a script context yet (Hirohito Higashi).

fixes:  #20730
closes: #20732

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(zathurarc): sync options with latest zathura master
Jian-Shuo Huang [Mon, 20 Jul 2026 17:09:39 +0000 (17:09 +0000)] 
runtime(zathurarc): sync options with latest zathura master

closes: #20733

Signed-off-by: Jian-Shuo Huang <jianshuo.huang@tuta.io>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0816: GTK4: Memory leak in gui_gtk_set_dnd_targets() v9.2.0816
Foxe Chen [Mon, 20 Jul 2026 17:00:22 +0000 (17:00 +0000)] 
patch 9.2.0816: GTK4: Memory leak in gui_gtk_set_dnd_targets()

Problem:  GTK4: Memory leak in gui_gtk_set_dnd_targets()
Solution: Unref formats (Foxe Chen)

closes: #20729

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0815: deeply nested regexp patterns may cause stack overflow v9.2.0815
lipengyu [Mon, 20 Jul 2026 16:55:55 +0000 (16:55 +0000)] 
patch 9.2.0815: deeply nested regexp patterns may cause stack overflow

Problem:  Deeply nested regexp groups can cause uncontrolled recursion
          in the regexp compiler and exhaust the C stack.
Solution: Limit recursive regexp parsing depth in both the backtracking
          and NFA compilers (lipengyu)

closes: #20731

Signed-off-by: lipengyu <lipengyu@kylinos.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0814: Vim9: E1041 when reloading an autoload script with exported variables v9.2.0814
Hirohito Higashi [Mon, 20 Jul 2026 16:47:57 +0000 (16:47 +0000)] 
patch 9.2.0814: Vim9: E1041 when reloading an autoload script with exported variables

Problem:  Sourcing a Vim9 autoload script more than once fails with E1041
          for its exported variables and constants, while exported functions
          reload without error (ubaldot)
Solution: Give exported variables and constants the same clean slate as
          functions on reload by removing them from the global namespace, so
          the script body can define them again.  Keep classes and enums:
          objects created from the previous definition still refer to it, so
          they are not redefined this way (Hirohito Higashi)

fixes:  #19205
closes: #20726

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0813: dict_add_func() may corrupt funcref count on failure v9.2.0813
Yasuhiro Matsumoto [Mon, 20 Jul 2026 16:02:56 +0000 (16:02 +0000)] 
patch 9.2.0813: dict_add_func() may corrupt funcref count on failure

Problem:  dict_add_func() references the function only after a
          successful dict_add(), on failure dictitem_free()
          calls func_unref() without a matching func_ref(), corrupting
          the reference count of a lambda or numbered function.
Solution: Take the reference before dict_add() so the unref on the
          failure path is balanced (Yasuhiro Matsumoto).

related: #20668
closes:  #20742

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0812: :argdelete with pattern leads to wrong argidx() v9.2.0812
zeertzjq [Mon, 20 Jul 2026 15:19:20 +0000 (15:19 +0000)] 
patch 9.2.0812: :argdelete with pattern leads to wrong argidx()

Problem:  :argdelete with pattern leads to wrong argidx().
Solution: Correct argidx() in both branches of ex_argdelete().  Also use
          ARGCOUNT macro in two more places (zeertzjq).

related: patch 7.4.1119
related: neovim/neovim#40564
closes:  #20697

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0811: mksession writes terminal command unquoted v9.2.0811
Arkissa [Sun, 19 Jul 2026 18:30:01 +0000 (18:30 +0000)] 
patch 9.2.0811: mksession writes terminal command unquoted

Problem:  mksession writes terminal command unquoted
          (after v9.2.0732)
Solution: Quote the terminal command (Arkissa)

fixes:  #20788
closes: #20789

Signed-off-by: Arkissa <mrarkssac@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0810: add_llist_tags() uses wrong function to free dict v9.2.0810
Yasuhiro Matsumoto [Sun, 19 Jul 2026 16:17:11 +0000 (16:17 +0000)] 
patch 9.2.0810: add_llist_tags() uses wrong function to free dict

Problem:  add_llist_tags() uses wrong function to free dict on alloc
          failure
Solution: Use dict_unref() (Yasuhiro Matsumoto).

add_llist_tags() released a dict_alloc()'d dict with vim_free() when
list_append_dict() failed, leaving a dangling pointer in the dict
garbage-collection chain. Use dict_unref().

related: #20668
closes:  #20743

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0809: getframelayout() uses wrong function to free lists v9.2.0809
Yasuhiro Matsumoto [Sun, 19 Jul 2026 16:13:29 +0000 (16:13 +0000)] 
patch 9.2.0809: getframelayout() uses wrong function to free lists

Problem:  getframelayout() uses wrong function to free lists on alloc
          failure.
Solution: Use list_free() on alloc failure (Yasuhiro Matsumoto).

get_framelayout() released a list_alloc()'d list with vim_free() when
list_append_list() failed, leaving a dangling pointer in the list
garbage-collection chain. Use list_free() so it is unlinked.

related: #20668
related: #20743

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0808: getregionpos: double-free on alloc failure v9.2.0808
Yasuhiro Matsumoto [Sun, 19 Jul 2026 16:02:10 +0000 (16:02 +0000)] 
patch 9.2.0808: getregionpos: double-free on alloc failure

Problem:  getregionpos: double-free on alloc failure
Solution: Only free lists that were not appended (Yasuhiro Matsumoto).

add_regionpos_range() freed lists already linked into the result tree when
a later list_alloc()/list_append_list() failed, causing a double-free and
use-after-free. Only free lists that were not appended, and free them with
list_free() so they are unlinked from the garbage-collection chain.

related: #20668
closes:  #20744

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0807: MS-Windows: ellipsis character is garbled v9.2.0807
Sergey Vlasov [Sun, 19 Jul 2026 15:14:02 +0000 (15:14 +0000)] 
patch 9.2.0807: MS-Windows: ellipsis character is garbled

Problem:  Source code is not treated as utf-8 by MSVC, so '…'
          character in string literal is interpreted wrong.
Solution: Set utf-8 for both source and execution charsets.

closes: #20755

Co-Authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0806: 'showcmd' may show internal command keys v9.2.0806
Barrett Ruth [Sun, 19 Jul 2026 14:53:55 +0000 (14:53 +0000)] 
patch 9.2.0806: 'showcmd' may show internal command keys

Problem:  The `showcmd` statusline item may show internal command keys when a
          `<Cmd>` or `<ScriptCmd>` mapping redraws the statusline, and may
          leave stale text behind when `%S` is rendered directly.
Solution: Do not add these internal mapping dispatch keys to the `showcmd`
          buffer, and keep the clear state in sync when `%S` renders it
          (Barrett Ruth)

closes: #20769

Co-authored-by: zeertzjq <35768171+zeertzjq@users.noreply.github.com>
Signed-off-by: Barrett Ruth <br@barrettruth.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0805: screenpos() "curscol" is wrong with 'rightleft' v9.2.0805
Hirohito Higashi [Sat, 18 Jul 2026 17:36:43 +0000 (17:36 +0000)] 
patch 9.2.0805: screenpos() "curscol" is wrong with 'rightleft'

Problem:  With 'rightleft' set, the "curscol" value of screenpos() does not
          point to the screen column where the cursor is placed.
Solution: Count "curscol" from the left side of the window, leaving "col"
          and "endcol" as reading-order columns (Hirohito Higashi)

related: #20763
closes:  #20786

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>