]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
23 hours agoruntime(sh): Selectively suppress matching syntax errors master
Aliaksei Budavei [Thu, 13 Aug 2026 18:51:53 +0000 (18:51 +0000)] 
runtime(sh): Selectively suppress matching syntax errors

As a refinement upon "g:sh_no_error", support not matching
particular classes of syntax errors.  Look up syntax rule
names and list them with:
‐-----------------------------------------------------------
let g:sh_no_error_rules = ["shCurlyError", "shParenError"]
‐-----------------------------------------------------------

closes: #20935

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agopatch 9.2.0957: filetype: ArgoCD config file is not recognized v9.2.0957
Fionn Fitzmaurice [Thu, 13 Aug 2026 18:41:59 +0000 (18:41 +0000)] 
patch 9.2.0957: filetype: ArgoCD config file is not recognized

Problem:  filetype: ArgoCD configuration file is not recognized
Solution: Detect */argocd/config as yaml filetype (Fionn Fitzmaurice).

Reference:
https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_configure/#options-inherited-from-parent-commands

closes: #21031

Signed-off-by: Fionn Fitzmaurice <git@fionn.computer>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agoruntime(vim): Update base syntax, match user-command args
Doug Kearns [Thu, 13 Aug 2026 18:37:58 +0000 (18:37 +0000)] 
runtime(vim): Update base syntax, match user-command args

- Trailing bar and tail comments are not explicitly supported.  The
  command is matched to EOL.
- In Vim9 script the following always matches as an assignment:
    UserCommand = 2
  Use a leading colon to force matching the user command:
    :UserCommand = 2
- Add highlighting for utility commands VimFold\a, Vim9, and VimL.

fixes:  #20854
closes: #21035

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
24 hours agoruntime(doc): improve documentation for |v_gF|
Emilien Breton [Thu, 13 Aug 2026 18:30:55 +0000 (18:30 +0000)] 
runtime(doc): improve documentation for |v_gF|

Signed-off-by: Christian Brabandt <cb@256bit.org>
24 hours agoruntime(doc): mark the GTK4 GUI as still experimental
Christian Brabandt [Thu, 13 Aug 2026 18:14:48 +0000 (18:14 +0000)] 
runtime(doc): mark the GTK4 GUI as still experimental

related: #20920
fixes:   #21042

Signed-off-by: Christian Brabandt <cb@256bit.org>
24 hours agoruntime(doc): v:windowid is x11 only
Christoffer Aasted [Thu, 13 Aug 2026 18:09:22 +0000 (18:09 +0000)] 
runtime(doc): v:windowid is x11 only

closes: #21036

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
44 hours agopatch 9.2.0956: GTK4: crash when the window is resized while redrawing v9.2.0956
Hirohito Higashi [Wed, 12 Aug 2026 21:45:46 +0000 (21:45 +0000)] 
patch 9.2.0956: GTK4: crash when the window is resized while redrawing

Problem:  In GTK4, Vim may crash when the window is resized while the
          cursor is displayed.
Solution: Remember the number of cells the cursor covers when the cursor
          is set, instead of deriving it from the drawing position when
          the snapshot is taken (Hirohito Higashi).

fixes:  #21037
closes: #21038

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
44 hours agopatch 9.2.0955: tests: terminal tests are flaky v9.2.0955
Hirohito Higashi [Wed, 12 Aug 2026 21:40:50 +0000 (21:40 +0000)] 
patch 9.2.0955: tests: terminal tests are flaky

Problem:  Test_terminal_aucmd_on_close() is flaky on MS-Windows: the
          tests that wait for a terminal window to close use a timeout
          shorter than the default, which is not enough when starting a
          process is slow.  When the wait fails the test aborts with
          E121 and leaves an autocommand behind for the following tests.
          Test_terminal_unwraps() checks the buffer contents without
          waiting for the job to finish.
Solution: Use the default timeout of WaitForAssert(), initialize the
          variable checked after the wait, and wait for the buffer to
          hold the unwrapped line.

closes: #21039

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>
46 hours agopatch 9.2.0954: u_read_undo() can be improved (after 9.2.0935) v9.2.0954
Hirohito Higashi [Wed, 12 Aug 2026 20:21:43 +0000 (20:21 +0000)] 
patch 9.2.0954: u_read_undo() can be improved (after 9.2.0935)

Problem:  u_read_undo() has comments that do not add anything to what
          the code says (afte rv9.2.0935).
Solution: Drop the redundant comments (Hirohito Higashi).

related: #20942
closes:  #21028

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>
46 hours agopatch 9.2.0953: insert completion code can be improved v9.2.0953
Hirohito Higashi [Wed, 12 Aug 2026 20:17:36 +0000 (20:17 +0000)] 
patch 9.2.0953: insert completion code can be improved

Problem:  The duplicate-check hashtab in insexpand.c has comments that
          do not add anything to what the code says (after v9.2.0909).
Solution: Drop the redundant comments.

related: #20926
closes:  #21027

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>
46 hours agopatch 9.2.0952: locking a container while stringifying can be improved v9.2.0952
Hirohito Higashi [Wed, 12 Aug 2026 20:08:18 +0000 (20:08 +0000)] 
patch 9.2.0952: locking a container while stringifying can be improved

Problem:  The comments on locking a list or dict while stringifying its
          items say the same thing three times over, and at more length
          than the existing comments on the same construct
          (after v9.2.0936).
Solution: Shorten them.

related: #21001
closes:  #21029

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>
46 hours agopatch 9.2.0951: GTK3: cursor does no longer blink v9.2.0951
Christoffer Aasted [Wed, 12 Aug 2026 20:03:01 +0000 (20:03 +0000)] 
patch 9.2.0951: GTK3: cursor does no longer blink

Problem:  GTK3: cursor does no longer blink
          (presuku, after v9.2.0897)
Solution: simplify code, use gui_may_flush()
          (Christoffer Aasted)

fixes:  #20983
closes: #21019

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
46 hours agopatch 9.2.0950: transstr() can be improved (after 9.2.0906) v9.2.0950
Hirohito Higashi [Wed, 12 Aug 2026 19:47:43 +0000 (19:47 +0000)] 
patch 9.2.0950: transstr() can be improved (after 9.2.0906)

Problem:  transstr() has comments that do not add anything to what the
          code says, and it casts a length to int only to cast it back to
          size_t.
Solution: Drop the comments and keep the length in a size_t
          (Hirohito Higashi).

related: #20925
closes:  #21026

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>
46 hours agopatch 9.2.0949: GDK_KEY_VoidSymbol might be undefined v9.2.0949
Christian Brabandt [Wed, 12 Aug 2026 19:43:37 +0000 (19:43 +0000)] 
patch 9.2.0949: GDK_KEY_VoidSymbol might be undefined

Problem:    Build fails because GDK_KEY_VoidSymbol is undefined
            (Hisashi T Fujinaka, after v9.2.0931)
Solution:   Define GDK_KEY_VoidSymbol as GDK_VoidSymbol when not
            already defined, before using it for the non-GTK4 case.

closes: #21024

Signed-off-by: Christian Brabandt <cb@256bit.org>
47 hours agopatch 9.2.0948: GTK4: mouse move starts Visual selection after a dialog v9.2.0948
Hirohito Higashi [Wed, 12 Aug 2026 19:11:17 +0000 (19:11 +0000)] 
patch 9.2.0948: GTK4: mouse move starts Visual selection after a dialog

Problem:  In GTK4, when a dialog pops up while a mouse button is pressed,
          moving the mouse afterwards starts a Visual selection without
          any button being held down.
Solution: Forget about the pressed mouse button when a mouse move reports
          that no button is down, since the button release event may have
          gone to another widget (Hirohito Higashi).

related: #20907
related: #21014
closes:  #21022

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>
47 hours agopatch 9.2.0947: GTK4: screen is cleared when moving the mouse after startup v9.2.0947
Hirohito Higashi [Wed, 12 Aug 2026 19:05:26 +0000 (19:05 +0000)] 
patch 9.2.0947: GTK4: screen is cleared when moving the mouse after startup

Problem:  In GTK4, moving the mouse over the window right after startup
          clears the screen, including the intro message.
Solution: Keep the cached contents of the drawing area in sync with the
          size Vim is going to draw (Hirohito Higashi).

fixes:  #21016
closes: #21021

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>
47 hours agopatch 9.2.0946: GTK2/3: mouse move starts Visual selection after a dialog v9.2.0946
Hirohito Higashi [Wed, 12 Aug 2026 18:53:42 +0000 (18:53 +0000)] 
patch 9.2.0946: GTK2/3: mouse move starts Visual selection after a dialog

Problem:  In GTK2/GTK3, when a dialog pops up while a mouse button is
          pressed, moving the mouse afterwards starts a Visual selection
          without any button being held down.
Solution: Forget about the pressed mouse button when another widget
          shadows the text area with a grab, since the button release
          event goes to that widget (Hirohito Higashi).

fixes:  #20907
closes: #21014

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>
47 hours agopatch 9.2.0945: sort() with a numeric option can be improved v9.2.0945
Hirohito Higashi [Wed, 12 Aug 2026 18:38:28 +0000 (18:38 +0000)] 
patch 9.2.0945: sort() with a numeric option can be improved

Problem:  The comments on the precomputed sort keys explain the code by
          contrasting it with the previous implementation, and one of
          them exceeds 80 columns (after v9.2.0937).
Solution: Drop the redundant comments and shorten the union member ones
          (Hirohito Higashi).

related: #21003
closes:  #21030

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>
47 hours agoruntime(algol68): Update syntax, fix syncing
Doug Kearns [Wed, 12 Aug 2026 18:35:51 +0000 (18:35 +0000)] 
runtime(algol68): Update syntax, fix syncing

Use "fromstart" syncing.

Pragment regions are delimited by shared start/end tokens which render
other syncing types largely useless.  A sync point located in the middle
of a multiline comment cannot distinguish the end token from a start
token and the erroneously created region runs to EOF.

closes: #21032

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0944: test: tests fail when checking for GTK4 feature v9.2.0944
Foxe Chen [Wed, 12 Aug 2026 18:27:13 +0000 (18:27 +0000)] 
patch 9.2.0944: test: tests fail when checking for GTK4 feature

Problem:  test: tests fail when checking for GTK4 feature
          (after v9.2.0942)
Solution: Remove trailing comment, mark a few tests flaky when running
          in GTK4 UI, disable error messages when connecting to socket
          server, skip Test_win_gotoid_in_mapping in GTK4 UI (Foxe Chen).

closes: #21015

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoCI: Keep the GTK4 job from affecting the other jobs
Hirohito Higashi [Tue, 11 Aug 2026 19:49:28 +0000 (19:49 +0000)] 
CI: Keep the GTK4 job from affecting the other jobs

The GTK4 job added in 9.2.0931 timed out after 30 minutes on every run. The
tests did not hang, they were retried: 82 test functions failed under GTK4
against two in the otherwise identical GTK3 job, and runtest.vim runs a flaky
test up to five times with a sleep in between.

Raising the Test step timeout from 20 to 30 minutes for this made it apply to
every other job as well. Once the columns are no longer lost when a window is
split the job needs about sixteen minutes, so put the limit back to 20.

Twelve tests still fail, among them Test_hlsearch_clipboard and
Test_popup_select, which need a working clipboard; this is the only job that
runs a Wayland compositor. Let the job fail without failing the workflow
until that is sorted out. The Build step stays blocking, so a broken GTK4
build is still reported.

Also drop coverage from the job. The GTK3 job runs the same "make testgui"
with coverage enabled, so the instrumentation only makes this job slower.

closes: #21007

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0943: test: test_hardcopy fails on GTK4 UI v9.2.0943
Foxe Chen [Tue, 11 Aug 2026 19:42:18 +0000 (19:42 +0000)] 
patch 9.2.0943: test: test_hardcopy fails on GTK4 UI

Problem:  test: test_hardcopy fails on GTK4 UI, because it opens a
          dialog
Solution: Use :hardcopy! to skip the dialog, set GDK_DEBUG=no-portals
          environment variable (Foxe Chen)

closes: #21009

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0942: test: test_mksession_winpos() fails on GTK4 UI v9.2.0942
Foxe Chen [Tue, 11 Aug 2026 19:37:38 +0000 (19:37 +0000)] 
patch 9.2.0942: test: test_mksession_winpos() fails on GTK4 UI

Problem:  test: test_mksession_winpos() fails on GTK4 UI
Solution: Skip the test on GTK4, since winpos is not supported there
          (Foxe Chen)

closes: #21010

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0941: tests: clipboard tests fail in the GUI when the terminal has no clipboard v9.2.0941
Hirohito Higashi [Tue, 11 Aug 2026 19:27:07 +0000 (19:27 +0000)] 
patch 9.2.0941: tests: clipboard tests fail in the GUI when the terminal has no clipboard

Problem:  Tests that need the clipboard in a Vim started with
          RunVimInTerminal() are not skipped when only the Vim running the
          tests has a clipboard, which is always the case in the GUI.
Solution: Add CheckClipboardInTerminal to ask a Vim started the same way
          whether it can use the clipboard. (Hirohito Higashi).

closes: #21008

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0940: GTK4: columns are lost when a scrollbar appears v9.2.0940
Hirohito Higashi [Tue, 11 Aug 2026 19:21:08 +0000 (19:21 +0000)] 
patch 9.2.0940: GTK4: columns are lost when a scrollbar appears

Problem:  With the GTK4 GUI the shell loses columns every time a window is
          split, so that the text area keeps getting narrower.
Solution: Ignore a size allocation that was computed before the size that
          was last asked for, instead of computing Rows and Columns from
          the old size together with the new base size.

closes: #21006

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0939: mbyte: wrong cell count for an overlong UTF-8 sequence v9.2.0939
Hirohito Higashi [Tue, 11 Aug 2026 19:16:00 +0000 (19:16 +0000)] 
patch 9.2.0939: mbyte: wrong cell count for an overlong UTF-8 sequence

Problem:  An overlong UTF-8 encoding of an unprintable ASCII character is
          displayed as <xx> but counted as two screen cells, so that the
          cursor ends up in the wrong position when editing the line.
Solution: Count four cells for an unprintable overlong sequence.

fixes:  #20988
closes: #21005

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>
2 days agopatch 9.2.0938: cursorbind: cursor in the other window is not updated after undo v9.2.0938
Hirohito Higashi [Tue, 11 Aug 2026 19:10:19 +0000 (19:10 +0000)] 
patch 9.2.0938: cursorbind: cursor in the other window is not updated after undo

Problem:  In diff mode with 'cursorbind' the cursor in the other window is
          not updated after an undo that changes which lines correspond.
Solution: Also check whether the text changed before skipping the update
          (Hirohito Higashi).

fixes:   #20982
related: #13219
related: #13210
closes:  #21004

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0937: sort() with a numeric option converts each item on every comparison v9.2.0937
Samuel Schlesinger [Tue, 11 Aug 2026 19:03:55 +0000 (19:03 +0000)] 
patch 9.2.0937: sort() with a numeric option converts each item on every comparison

Problem:  sort() with "n", "N" or "f" converts an item to its number on
          every comparison.  For "n" that is a tv2string() plus strtod()
          per comparison, so sorting a list of numbers turns each number
          into a string and back O(n log n) times, dwarfing the sort.
Solution: Compute the numeric key of each item once, before the sort,
          and compare the stored key (Samuel Schlesinger).  Only the
          builtin numeric compare modes are affected; uniq(), which
          passes a bare list item to the compare function, and the
          string and user-function paths are unchanged.

Sorting a list of 100000 numbers (min of 3, macOS arm64):
- sort(l, 'n'):  0.205s -> 0.017s
- sort(l, 'N'):  0.017s -> 0.010s
- sort(l, 'f'):  0.014s -> 0.010s
The result is identical, including that a string is still treated as 0
in "n" mode and that "N" keeps full 64-bit precision.

Add Test_sort_numeric_precomputed(): a large shuffled list sorted with
"n", mixed integers and floats, int64 values beyond the exact range of
a double for "N", and uniq() over the non-precomputed path.

closes: #21003

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0936: stringifying a list or dict can free the item being iterated v9.2.0936
Samuel Schlesinger [Tue, 11 Aug 2026 18:28:47 +0000 (18:28 +0000)] 
patch 9.2.0936: stringifying a list or dict can free the item being iterated

Problem:  match(), matchstr(), matchend(), matchlist() and matchstrpos()
          over a list, join() of a list, and string() or :echo of a
          list or dict stringify each item while iterating over the
          container.  For an object item this runs the user-defined
          string() method, which can remove the item the loop is
          standing on, or grow a dict so its hash table is
          reallocated, leaving the loop reading freed memory.
Solution: Lock the container while iterating, so a change from the
          string() method fails with E741 instead of corrupting the
          iterator, the same way filter(), map(), sort() and reduce()
          already do.  For a dict also hash_lock() it, so growing it
          cannot reallocate the hash table, mirroring the dict path of
          filter()/map() (Samuel Schlesinger).

find_some_match() in evalfunc.c, list_join_inner() in list.c and
dict2string() in dict.c each iterated a container while calling
echo_string(); list_reduce() was the existing pattern they were
missing.

Add tests: match() and matchstr() over a list, join() and string() of
a list, and string() of a dict, each with an object whose string()
method mutates the container; every one crashes an unpatched Vim.

closes: #21001

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0935: reading an undo file is slow with many undo headers v9.2.0935
Samuel Schlesinger [Tue, 11 Aug 2026 18:16:45 +0000 (18:16 +0000)] 
patch 9.2.0935: reading an undo file is slow with many undo headers

Problem:  Reading an undo file resolves every stored sequence number
          with a linear scan over all headers, making loading
          quadratic in the number of undo states.
Solution: Sort uhp_table on uh_seq once and resolve each reference
          with a binary search; the duplicate uh_seq check becomes a
          single pass over the sorted table (Samuel Schlesinger).

At the default 'undolevels' of 1000 the quadratic cost is not
measurable; it takes 'undolevels' in the tens of thousands to matter.
Loading an undo file with 20000 states and 50 alternate branches with
:rundo goes from 1.49s to 0.11s (min of 3, macOS arm64), with the
same undotree().

Also make old_idx/new_idx/cur_idx and the loop index "i" long instead
of short/int: they index uhp_table, whose length num_head is a long
read from the file.  A short index truncated above 32767 headers,
making the restored b_u_oldhead/b_u_newhead/b_u_curhead pointers
wrong in exactly the many-headers case this change is about.

Add tests: a round-trip test with alternate branches that compares
the entries of the tree and the text at every sequence number, a
corruption test with a duplicated uh_seq, and a test for reading an
undo file with zero headers, which is written when only the line for
the "U" command is saved.

closes: #20942

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0934: filetype: hlsl files are not recognized v9.2.0934
Maxim Kim [Tue, 11 Aug 2026 18:03:33 +0000 (18:03 +0000)] 
patch 9.2.0934: filetype: hlsl files are not recognized

Problem:  filetype: hlsl files are not recognized
Solution: Detect *.hlsl files hlsl filetype, include
          ftplugin, indent and syntax plugins, update
          gvim menu (Maxim Kim)

Note to Neovim devs: runtime files are in vim9script

closes: #20993

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): clarify diff_filler() function
Christian Brabandt [Tue, 11 Aug 2026 17:45:16 +0000 (17:45 +0000)] 
runtime(doc): clarify diff_filler() function

fixes: #20990

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0933: u_read_undo() leaks the file name when the undo file owner differs v9.2.0933
Samuel Schlesinger [Mon, 10 Aug 2026 20:46:08 +0000 (20:46 +0000)] 
patch 9.2.0933: u_read_undo() leaks the file name when the undo file owner differs

Problem:  When the owner of an undo file differs from the owner of
          the text file and the current user, u_read_undo() returns
          without freeing the file name it allocated with
          u_get_undo_file_name().
Solution: Free the file name before returning (Samuel Schlesinger).

Every other exit of the function frees it under the "theend" label;
this early return sits before the file pointer is initialized, so it
cannot use that label.

closes: #20987

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0932: NFA engine fallback can double free the compiled program v9.2.0932
Samuel Schlesinger [Mon, 10 Aug 2026 20:17:42 +0000 (20:17 +0000)] 
patch 9.2.0932: NFA engine fallback can double free the compiled program

Problem:  When the automatic regexp engine falls back to the
          backtracking engine in vim_regexec_string(), the compiled
          program is freed before the replacement is compiled; when
          saving the pattern fails from being out of memory the
          caller's "regprog" is left pointing to freed memory and
          is freed again.
Solution: Free the previous program only after compiling the
          replacement succeeded, like vim_regexec_multi() already
          does (Samuel Schlesinger).

closes: #20986

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0931: the GTK4 GUI is still experimental and untested by CI v9.2.0931
Foxe Chen [Mon, 10 Aug 2026 20:08:09 +0000 (20:08 +0000)] 
patch 9.2.0931: the GTK4 GUI is still experimental and untested by CI

Problem:  the GTK4 GUI is still experimental and untested by CI
Solution: Stabilize the GTK4 code, Fix a few minor issues, include a
          GTK4 CI job (Foxe Chen).

closes: #20920

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0930: floating point exception when displaying pum v9.2.0930
Christian Brabandt [Mon, 10 Aug 2026 19:36:32 +0000 (19:36 +0000)] 
patch 9.2.0930: floating point exception when displaying pum

Problem:  floating point exception when displaying pum
          (dvaave2025)
Solution: Verify that curwin->w_width > 0

fixes:  #20985
closes: #20994

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(colors): update colorschemes
Maxim Kim [Mon, 10 Aug 2026 19:28:53 +0000 (19:28 +0000)] 
runtime(colors): update colorschemes

changes:
- habamax, lunaperche, wildcharm: bold PmenuMatch/PmenuMatchSel
- catppuccin: softer VertSplit and PmenuBorder, fix Spell*
- habamax: less contrast for Constant (yellowish instead of red)
- the rest: update PmenuKind/PmenuExtra for non-colored term

closes: #20996

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(vim): Update base syntax, contain more ex commands
Doug Kearns [Mon, 10 Aug 2026 19:26:02 +0000 (19:26 +0000)] 
runtime(vim): Update base syntax, contain more ex commands

- Contain some straggler ex commands
- Fix some typos vimSep -> vimCmdSep

closes: #20995

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(strace): highlight stack trace as comment
Josef Schönberger [Mon, 10 Aug 2026 18:58:53 +0000 (18:58 +0000)] 
runtime(strace): highlight stack trace as comment

strace supports printing a complete stack trace for each syscall using
the `-k` (`--stack-trace`) flag. Highlight the trace as a comment.

closes: #20998

Signed-off-by: Josef Schönberger <josef.schoenberger@tum.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0929: incorrect completion for 'pumopt' and 'pumborder' v9.2.0929
Shane Harper [Mon, 10 Aug 2026 18:47:11 +0000 (18:47 +0000)] 
patch 9.2.0929: incorrect completion for 'pumopt' and 'pumborder'

Problem:  Incorrect completions are offered for the 'pumopt' and
          'pumborder' options.
Solution: Fix expand_set_pumborder() and expand_set_pumopt() to only
          offer valid completions (Shane Harper).

The "single", "double" and "round" border styles aren't offered when
they cannot be used: 'encoding' must be "utf-8" and 'ambiwidth' must be
"single" to use them.

"custom:" is now offered instead of "custom".

For 'pumopt', previously sub-option names were incorrectly offered as
the only possible completions for a sub-option value.

No completions are offered for the values of 'pumopt' sub-options that
take a number. Offering all of the integers from 0 to 100 for "opacity:"
wouldn't be useful.

related: #20676
closes:  #20910

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): Improve :help expr-number, mention unary +/-
Doug Kearns [Mon, 10 Aug 2026 18:36:35 +0000 (18:36 +0000)] 
runtime(doc): Improve :help expr-number, mention unary +/-

- Mention unary +/- use in both integer and floating-point descriptions.
- Add "0b" binary prefix tag to match existing "0o" and "0x" tags.

closes: #20997

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0928: MinGW: tests hang when Vim is built with coverage enabled v9.2.0928
Hirohito Higashi [Mon, 10 Aug 2026 18:31:42 +0000 (18:31 +0000)] 
patch 9.2.0928: MinGW: tests hang when Vim is built with coverage enabled

Problem:  When building with MinGW and COVERAGE=yes the tests hang: a
          command started from Vim never returns, although the child
          process has already exited.
Solution: Do not build vimrun.exe with coverage instrumentation.

fixes:  #20976
closes: #20991

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.0927: curswant not set on 8g8 v9.2.0927
Emilien Breton [Sun, 9 Aug 2026 15:07:19 +0000 (15:07 +0000)] 
patch 9.2.0927: curswant not set on 8g8

Problem:  curswant not set on 8g8
Solution: Set curswant, adjust tests (Emilien Breton)

closes: #20979

Signed-off-by: Emilien Breton <bricktech2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Improve :help expr-number
Doug Kearns [Sat, 8 Aug 2026 17:59:27 +0000 (17:59 +0000)] 
runtime(doc): Improve :help expr-number

closes: #20956

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoCI: Bump github/codeql-action
dependabot[bot] [Sat, 8 Aug 2026 17:50:06 +0000 (17:50 +0000)] 
CI: Bump github/codeql-action

Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 4.37.3 to 4.37.4
- [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.3...v4.37.4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

closes: #20974

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0926: filetype: Business Central files are not recognized v9.2.0926
Torben Leth [Sat, 8 Aug 2026 17:24:06 +0000 (17:24 +0000)] 
patch 9.2.0926: filetype: Business Central files are not recognized

Problem:  filetype: Business Central files are not recognized
Solution: Add filetype detection logic for *.al files to detect perl or
          use either perl or al filetype (Torben Leth).

Reference:
https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-dev-overview

closes: #20975

Supported by AI.

Signed-off-by: Torben Leth <SShadowS@SShadowS.dk>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): DocBook syntax variable scopes are not clearly documented
Bogdan Barbu [Sat, 8 Aug 2026 17:11:42 +0000 (17:11 +0000)] 
runtime(doc): DocBook syntax variable scopes are not clearly documented

Problem:  DocBook syntax variable scopes of docbk_type and docbk_ver
          are not clearly documented: docbk_type uses the wrong scope
          (it should be buffer-local) and docbk_ver also has an
          undocumented buffer-local version.
Solution: Correct the docbk_type examples and describe the docbk_ver
          precedence.

closes: #20977

Signed-off-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0925: crash when getcompletiontype() gets a NULL string v9.2.0925
Christian Brabandt [Fri, 7 Aug 2026 20:22:20 +0000 (20:22 +0000)] 
patch 9.2.0925: crash when getcompletiontype() gets a NULL string

Problem:  Crash when getcompletiontype()/getcompletion() gets a NULL string
          (dvaave2025).
Solution: Do not write the NUL terminator in set_cmd_context() when the
          cursor column is at or past the end of the string, since the
          string may be a read-only literal.

fixes:  #20963
closes: #20964

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0924: tests: Test_termwinscroll() fails on FreeBSD v9.2.0924
neil [Fri, 7 Aug 2026 20:17:03 +0000 (20:17 +0000)] 
patch 9.2.0924: tests: Test_termwinscroll() fails on FreeBSD

Problem:  tests: Test_termwinscroll() fails on FreeBSD
Solution: Explicitly disable line-editor feature (neil).

closes: #20966

Supported by AI.

Signed-off-by: neil <github@neilpang.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoCI: Add Github runner for Cygwin
Hirohito Higashi [Fri, 7 Aug 2026 20:12:39 +0000 (20:12 +0000)] 
CI: Add Github runner for Cygwin

Vim can be built for Cygwin with the Unix Makefile, but nothing covers it.
The Windows runner builds with MSVC and MinGW only, and the Cirrus CI job
that was removed in 0abffbff ran FreeBSD alone.

Add a GitHub Actions workflow that configures and builds under Cygwin.  It
runs once per day instead of per push, and skips the run when nothing was
committed since the previous one, because the Cygwin runner is slow.  Only
the tiny test suite, the unit tests and the libvterm tests are run: the
script tests need sockets, PowerShell, network access and POSIX file
permissions, which do not behave the same under Cygwin.

closes: #20970

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.0923: tabpage: closing a tab page loses the alternate tab page v9.2.0923
Hirohito Higashi [Fri, 7 Aug 2026 20:09:30 +0000 (20:09 +0000)] 
patch 9.2.0923: tabpage: closing a tab page loses the alternate tab page

Problem:  Closing the current tab page resets the alternate tab page, even
          when that is another tab page which still exists, so that
          CTRL-Tab stops working (igorlfs).
Solution: Restore the last used tab page after entering another one to
          close the current one (Hirohito Higashi).

related: #20965
closes:  #20973

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.0922: Wayland: modeless selection not redrawn v9.2.0922
Christoffer Aasted [Fri, 7 Aug 2026 20:01:34 +0000 (20:01 +0000)] 
patch 9.2.0922: Wayland: modeless selection not redrawn

Problem:  Modeless mouse selection on Wayland may not redraw while Vim
          is waiting for input, causing the selection highlight to lag
          behind mouse movement (lilydjwg).
Solution: Flush pending GUI updates while a modeless selection is in
          progress (Christoffer Aasted).

* X11 was not affected.
* Tested FEAT_TINY, 'clipboard', 'mouse' settings.

fixes:  #20969
closes: #20971

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): fix typo in netrw help file
Rochish Manda [Fri, 7 Aug 2026 19:55:47 +0000 (19:55 +0000)] 
runtime(doc): fix typo in netrw help file

closes: #20968

Signed-off-by: Rochish Manda <28740792+Rochish-Manda@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0921: test: terminal tests fail on FreeBSD v9.2.0921
neil [Fri, 7 Aug 2026 19:47:24 +0000 (19:47 +0000)] 
patch 9.2.0921: test: terminal tests fail on FreeBSD

Problem:  terminal test fail on FreeBSD: the shell enables its line
          editor when interactive on a terminal, which echoes the typed
          command a second time and shifts the output down by one line,
          so getline(2) returns "exit" instead of the value.
Solution: Point $ENV to a startup file that turns the line editor off in
          Run_shell_in_terminal().  POSIX shells read it at startup and
          it produces no output of its own; shells that do not use $ENV
          ignore it (neil).

closes: #20972

Signed-off-by: neil <github@neilpang.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0920: filetype: json-ld files are not recognized v9.2.0920
Bogdan Barbu [Thu, 6 Aug 2026 20:16:23 +0000 (20:16 +0000)] 
patch 9.2.0920: filetype: json-ld files are not recognized

Problem:  filetype: json-ld files are not recognized
Solution: Detect *.jsonld files as jsonld filetype, include
          filetype, indent and syntax plugins (Bogdan Barbu).

Reference:
https://www.w3.org/TR/json-ld11/

closes: #20954

Signed-off-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0919: screen: the wrong array is copied into ScreenCols on a resize v9.2.0919
Hirohito Higashi [Thu, 6 Aug 2026 19:38:04 +0000 (19:38 +0000)] 
patch 9.2.0919: screen: the wrong array is copied into ScreenCols on a resize

Problem:  When the screen is resized without clearing, screenalloc() copies
          ScreenAttrs[] into the new ScreenCols[] instead of using
          ScreenCols[], so the virtual columns are replaced by attribute
          values.  Since colnr_T is twice the size of sattr_T it also
          reads twice the intended number of bytes.
Solution: Copy from ScreenCols[].

closes: #20961

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.0918: screen: fill char with a zero low byte is stored as a NUL cell v9.2.0918
Hirohito Higashi [Thu, 6 Aug 2026 19:23:04 +0000 (19:23 +0000)] 
patch 9.2.0918: screen: fill char with a zero low byte is stored as a NUL cell

Problem:  Using a multibyte fill character whose lower byte is zero, such
          as U+2500 for a popup border or 'fillchars', stores a NUL in
          ScreenLines[].  That marks the cell as the right half of a
          double-width character, and the GUI reports E340 when the window
          is resized (iranoan).
Solution: Store 0x80 instead of the truncated character code, like
          fold_line() already does (Hirohito Higashi)

related: vim-jp/issues#1460
closes:  #20960

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.0917: :quitall not allowed in the command-line window v9.2.0917
Doug Kearns [Thu, 6 Aug 2026 19:12:56 +0000 (19:12 +0000)] 
patch 9.2.0917: :quitall not allowed in the command-line window

Problem:  :quitall not allowed in the command-line window.
Solution: Synchronise the command definition with that of the :qall
          alias, adding EX_CMDWIN and EX_LOCK_OK (Doug Kearns).

closes: #20959

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(sh): Fix shFunctionTwo and shFunctionFour definitions for Bash
Aliaksei Budavei [Thu, 6 Aug 2026 18:58:42 +0000 (18:58 +0000)] 
runtime(sh): Fix shFunctionTwo and shFunctionFour definitions for Bash

Claim e.g. "function f () { :; }" as shFunctionTwo while
observing that parentheses after the function name are
optional when the "function" word is used and do not delimit
its body if the latter follows them in "{}" (which should
not be taken for granted with limited backtracking).

closes: #20878

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(sh): Do not conflate comments and function declarations in Bash
Aliaksei Budavei [Thu, 6 Aug 2026 18:56:02 +0000 (18:56 +0000)] 
runtime(sh): Do not conflate comments and function declarations in Bash

Bash identifiers declared in scripts cannot have a leading
"#" in their names.  And neither "namespace" nor "function"
can be followed by a newline before an identifier.

related: #20878

Co-authored-by: Christoffer Aasted <dezzadk@gmail.com>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.2.0916: configure: honor `--disable-hardcopy-pango` with GTK UI v9.2.0916
Wei Tang [Thu, 6 Aug 2026 18:32:38 +0000 (18:32 +0000)] 
patch 9.2.0916: configure: honor `--disable-hardcopy-pango` with GTK UI

Problem:  The configure script enables Pango hardcopy automatically
          when the GTK GUI is selected, even when the user explicitly
          specified `--disable-hardcopy-pango` (after v9.2.0898).
Solution: Only enable Pango hardcopy by default when the option was not
          explicitly specified, verify that pango library is at least v1.44
          (Wei Tang, Hirohito Higashi)

fixes:  #20952
closes: #20945

Co-Authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.2.0915: tests: two terminal tests in test_popupwin fail on FreeBSD v9.2.0915
Hirohito Higashi [Wed, 5 Aug 2026 19:29:01 +0000 (19:29 +0000)] 
patch 9.2.0915: tests: two terminal tests in test_popupwin fail on FreeBSD

Problem:  Two terminal tests in test_popupwin fail on FreeBSD, where the
          shell echoes the typed character more than once (neil).
Solution: Only assert the start of the terminal line.

fixes:  #20955
closes: #20957

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 agoruntime(make): variables in make target lists use wrong highlighting
Bogdan Barbu [Wed, 5 Aug 2026 19:14:54 +0000 (19:14 +0000)] 
runtime(make): variables in make target lists use wrong highlighting

Problem:  Variables in make target lists are highlighted as targets when
          the prerequisite list is non-empty.
Solution: Match target lists separately from prerequisite regions so
          that contained identifiers are highlighted correctly.  Add
          regression test.

closes: #20947

Signed-off-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.2.0914: diff: undo after :diffget into an empty buffer leaves a line behind v9.2.0914
Hirohito Higashi [Wed, 5 Aug 2026 19:05:25 +0000 (19:05 +0000)] 
patch 9.2.0914: diff: undo after :diffget into an empty buffer leaves a line behind

Problem:  After :diffget into an empty buffer, undo does not restore the
          empty buffer, the last line stays behind (Narendran
          Gopalakrishnan)
Solution: Include the empty line of the empty buffer in the undo
          information, it is deleted once the first line was obtained
          (Hirohito Higashi).

fixes:  #20950
closes: #20951

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.0913: statusline: cell below the vertical separator keeps the old highlight v9.2.0913
Hirohito Higashi [Wed, 5 Aug 2026 18:58:22 +0000 (18:58 +0000)] 
patch 9.2.0913: statusline: cell below the vertical separator keeps the old highlight

Problem:  When 'statusline' is set, the cell below a vertical separator keeps
          the highlight of the previous status line update and only catches
          up on the next key press (dougaak).
Solution: Also update that cell when the status line of the current window is
          redrawn while showing the ruler (Hirohito Higashi).

related: #20182
fixes:   #20948
closes:  #20949

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.0912: hardcopy: prototypes are hand-written instead of generated v9.2.0912
Hirohito Higashi [Wed, 5 Aug 2026 18:52:06 +0000 (18:52 +0000)] 
patch 9.2.0912: hardcopy: prototypes are hand-written instead of generated

Problem:  The prototypes for the pango and PostScript hardcopy functions
          are written by hand in hardcopy_pango.h and
          hardcopy_postscript.h, instead of being generated into proto/
          like for every other source file.
Solution: Generate proto/hardcopy_pango.pro and
          proto/hardcopy_postscript.pro, include them from proto.h and
          drop the hand-written declarations.  hardcopy_pango.h only held
          prototypes and is removed; hardcopy_postscript.h keeps its
          defines and the mbfont_opts declaration.

closes: #20946

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.0911: makefiles do not build hardcopy_postscript.c v9.2.0911
Wei Tang [Wed, 5 Aug 2026 18:34:20 +0000 (18:34 +0000)] 
patch 9.2.0911: makefiles do not build hardcopy_postscript.c

Problem:  A recent commit moved the original content of hardcopy.c
          into hardcopy_postscript.c, but the makefiles were not
          updated to compile and link the new source file, causing
          build failures on Windows and other systems (after 9.2.0898).
Solution: Add hardcopy_postscript.c to the makefiles,  hardcopy_pango.c
          is only built with GTK/cairo/pango (using autoconf), so
          the Win32/Amiga/VMS makefiles do not need it (Wei Tang).

related: #20648
closes:  #20944

Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(c): compound literal braces are highlighted as errors
Bogdan Barbu [Tue, 4 Aug 2026 21:11:56 +0000 (21:11 +0000)] 
runtime(c): compound literal braces are highlighted as errors

Problem: Braces in C compound literals and initializers inside parentheses
         and brackets are highlighted as errors.

Solution: Recognize those initializer blocks while preserving syntax recovery
          for malformed parentheses.

fixes:  #18709
closes: #20842

Signed-off-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0910: runtime(vim): Update syntax, contain Ex commands v9.2.0910
Doug Kearns [Tue, 4 Aug 2026 21:00:38 +0000 (21:00 +0000)] 
patch 9.2.0910: runtime(vim): Update syntax, contain Ex commands

Problem:  Vim Syntax Script can be improved
Solution: Rework syntax script, update syntax tests and unit tests
          (Doug Kearns).

- Contain Ex commands to valid syntactic contexts.
- Add full address (:range) matching.
- Match :Next, :Print, :X, :global, :&, :~, :>, :<, :# and := commands.
- Match text input commands with folding.

Use :syn-keyword to match all commands except when immediately following
\w range characters where :syn-match is employed.

fixes:  #20250 (variables with s_ prefix are wrongly highlighted)
fixes:  #17543 (do not highlight vim commands within :runtime)
fixes:  #16937 (do not highlight vim commands after packadd)
fixes:  #14895 (incorrect highlighting of Vim syntax)
fixes:  #14020 (insert commands)
closes: #19331

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoCI: bump clang to v22 in ci-linux_asan
Philip H. [Tue, 4 Aug 2026 20:41:29 +0000 (20:41 +0000)] 
CI: bump clang to v22 in ci-linux_asan

closes: #20928

Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0909: insert completion is slow to collect many matches v9.2.0909
Samuel Schlesinger [Tue, 4 Aug 2026 20:31:44 +0000 (20:31 +0000)] 
patch 9.2.0909: insert completion is slow to collect many matches

Problem:  ins_compl_add() checks for a duplicate by scanning the whole
          match list, making collection of N matches quadratic.
Solution: Look matches up in a hashtab instead; each entry counts the
          matches with that string (Samuel Schlesinger).

closes: #20926

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime: Update Syntax Menus
Christian Brabandt [Tue, 4 Aug 2026 20:12:32 +0000 (20:12 +0000)] 
runtime: Update Syntax Menus

Update makemenu.vim and re-generate synmenu.vim (using make menu).

closes:  #20932
related: #20930

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0908: cannot use a {} block in a nested :autocmd v9.2.0908
Hirohito Higashi [Tue, 4 Aug 2026 19:50:18 +0000 (19:50 +0000)] 
patch 9.2.0908: cannot use a {} block in a nested :autocmd

Problem:  At script level a "{" block is only recognized when it is the
          whole argument of :autocmd or :command, so an :autocmd that is
          the command of another :autocmd cannot use a block.  In a :def
          function a trailing "{" is accepted instead, and there any
          command ending in "{", such as "normal! {", is mistaken for the
          start of a block (lacygoill).
Solution: Locate the block by following the argument of the command,
          descending into a nested :autocmd or :command, and use that
          everywhere a block needs to be recognized (Hirohito Higashi).

fixes:  #20918
closes: #20933

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>
9 days agoruntime(dart): Update compiler plugins
Doug Kearns [Tue, 4 Aug 2026 19:43:26 +0000 (19:43 +0000)] 
runtime(dart): Update compiler plugins

Use the unified dart command for all.

closes: #20936

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): add a few more references to 'guiligatures'
Ubaldo Tiberi [Tue, 4 Aug 2026 19:39:05 +0000 (19:39 +0000)] 
runtime(doc): add a few more references to 'guiligatures'

closes: #20937

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@volvo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0907: popup: virtual text is not redrawn when a text property changes v9.2.0907
Hirohito Higashi [Mon, 3 Aug 2026 20:38:42 +0000 (20:38 +0000)] 
patch 9.2.0907: popup: virtual text is not redrawn when a text property changes

Problem:  Adding or removing a text property in the buffer of a popup
          window does not update the popup on the screen.  The old
          virtual text stays visible until something else causes a
          redraw.
Solution: Also mark popup windows displaying the buffer for redrawing in
          redraw_buf_later() (Hirohito Higashi).

fixes:  #19297
closes: #20931

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>
10 days agopatch 9.2.0906: slow transstr() with long strings v9.2.0906
Samuel Schlesinger [Mon, 3 Aug 2026 20:30:09 +0000 (20:30 +0000)] 
patch 9.2.0906: slow transstr() with long strings

Problem:  transstr() appends with STRCAT()/STRLEN() from the start of
          the result on every iteration, making it quadratic to the
          length of the string.
Solution: Keep a tail pointer and append at it. (Samuel Schlesinger).

closes: #20925

Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0905: MS-Windows: ghost cursor with ligatures v9.2.0905
Foxe Chen [Mon, 3 Aug 2026 20:13:17 +0000 (20:13 +0000)] 
patch 9.2.0905: MS-Windows: ghost cursor with ligatures

Problem:  With ligatures enabled, a ghost cursor can be left on screen
          because the cursor is marked valid before the ligature
          cleanup, which redraws the cell with gui_screenchar() and
          invalidates the cursor again (ubaldot)
Solution: Set gui.cursor_is_valid only after the ligature redraw is
          done, so it isn't cleared afterwards (Foxe Chen).

fixes:  #20916
closes: #20924

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0904: "zb" scrolls incorrectly with cursor just above fold v9.2.0904
zeertzjq [Mon, 3 Aug 2026 20:08:04 +0000 (20:08 +0000)] 
patch 9.2.0904: "zb" scrolls incorrectly with cursor just above fold

Problem:  "zb" scrolls incorrectly with cursor just above fold.
Solution: Handle boff.lnum being set to the last line of a fold
          (zeertzjq).

With the cursor just above fold, botline_forw() moves boff.lnum to the
last line of the fold, but curwin->w_botline is at the first line of the
fold, so the boff.lnum == curwin->w_botline condition never holds.

Instead, check that boff.lnum has just moved to or past w_botline by
comparing its previous value with w_botline.

Also make a similar change to the loff.lnum check above for symmetry.
That one doesn't change behavior, as topline_back() sets loff.lnum to
the first line of a fold.

related: neovim/neovim#41122
closes:  #20923

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0903: Vim9: cannot use an exported function of an autoload import v9.2.0903
Hirohito Higashi [Mon, 3 Aug 2026 20:02:51 +0000 (20:02 +0000)] 
patch 9.2.0903: Vim9: cannot use an exported function of an autoload import

Problem:  Using an exported function of a script imported with "import
          autoload" as a value gives E121, unless the script is under an
          "autoload" directory.
Solution: When the name is not a script variable also look for an exported
          function and push a funcref for it (Hirohito Hirohito).

fixes:  #20911
closes: #20922

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>
10 days agopatch 9.2.0902: Vim9: iterating over a tuple leaks memory v9.2.0902
Samuel Schlesinger [Mon, 3 Aug 2026 19:54:50 +0000 (19:54 +0000)] 
patch 9.2.0902: Vim9: iterating over a tuple leaks memory

Problem:  Looping over a tuple with ":for" copies each item with
          copy_tv() but never clears the copy, leaking the value on
          every iteration (26MB over 100k iterations of a two-string
          tuple).  Container items keep an extra reference forever,
          also defeating garbage collection.
Solution: Clear the copied typval on both return paths, like the
          string branch of next_for_item() already does
          (Samuel Schlesinger).

closes: #20914

Supported by AI.

Signed-off-by: Samuel Schlesinger <sgschlesinger@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(doc): remove todo entries that are fixed
Hirohito Higashi [Mon, 3 Aug 2026 19:50:33 +0000 (19:50 +0000)] 
runtime(doc): remove todo entries that are fixed

The 'smoothscroll' scroll position is kept when a window is squeezed since
patch 9.2.0885, and the Tab size in a line with virtual text above it is
correct since patch 9.2.0896.

closes: #20921

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agoruntime: Add TOML entry to the syntax menu
Doug Kearns [Mon, 3 Aug 2026 18:21:30 +0000 (18:21 +0000)] 
runtime: Add TOML entry to the syntax menu

fixes:  #20927
closes: #20930

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0901: textprop: wrong cursor line with truncated virtual text v9.2.0901
Hirohito Higashi [Sun, 2 Aug 2026 19:25:12 +0000 (19:25 +0000)] 
patch 9.2.0901: textprop: wrong cursor line with truncated virtual text

Problem:  The cursor is displayed in the wrong line when virtual text below
          an empty line is truncated.
Solution: Do not count an extra column for an empty line that has virtual
          text below it, its width already includes filling up the line.
          (Hirohito Higashi).

fixes:  #12493
closes: #20917

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>
11 days agopatch 9.2.0900: FocusGained still triggered when closing dialog v9.2.0900
Christoffer Aasted [Sun, 2 Aug 2026 19:00:41 +0000 (19:00 +0000)] 
patch 9.2.0900: FocusGained still triggered when closing dialog

Problem:  FocusGained still triggered when closing dialog
          (after v9.2.0851)
Solution: Track that dialog is active and suppress the FocusGained
          autocommand (Christoffer Aasted)

related: #20780
closes:  #20894

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0899: command output temporary files may collide v9.2.0899
Sam Roeca [Sun, 2 Aug 2026 18:41:16 +0000 (18:41 +0000)] 
patch 9.2.0899: command output temporary files may collide

Problem:  On MS-Windows, get_cmd_output() removes its reserved temporary
          file before the shell opens it, allowing another Vim process to
          reuse the same name.
Solution: Keep the temporary file reserved until command output handling is
          complete (Sam Roeca).

closes: #20915

Signed-off-by: Sam Roeca <samuel.roeca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0898: printing support is lacking v9.2.0898
Foxe Chen [Sun, 2 Aug 2026 18:27:01 +0000 (18:27 +0000)] 
patch 9.2.0898: printing support is lacking

Problem:  printing support is lacking
Solution: Improve printing support by making use of pango and cairo
          libraries, use a graphical dialog for :hardcopy in the GTK4 ui
          (Foxe Chen).

fixes:  #8935
closes: #20648

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0897: GTK3 X11 redraws are not coalesced v9.2.0897
Christoffer Aasted [Sun, 2 Aug 2026 18:01:14 +0000 (18:01 +0000)] 
patch 9.2.0897: GTK3 X11 redraws are not coalesced

Problem:  GTK3 X11 redraws are not coalesced
Solution: Improve redrawing logic, unify Wayland with X11 redraw
          code (Christoffer Aasted)

closes: #20909

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agoruntime(vimgoto): make 'gf' find imported python files
Mateo Gjika [Sun, 2 Aug 2026 17:49:36 +0000 (17:49 +0000)] 
runtime(vimgoto): make 'gf' find imported python files

In Vim script with this line:
py3 import file

make gf work using vimgoto plugin.

closes: #20908

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0896: scroll: 'smoothscroll' position is lost when splitting a window
Hirohito Higashi [Sun, 2 Aug 2026 17:25:35 +0000 (17:25 +0000)] 
patch 9.2.0896: scroll: 'smoothscroll' position is lost when splitting a window

Problem:  With 'smoothscroll' the position in a long line is lost when a
          window is split and closed again.
Solution: With 'splitkeep' "screen" keep the skipped columns, they are part
          of keeping the same screen lines.  Otherwise put the cursor in the
          row that keeps its relative position, instead of the last row.

closes: #20912

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>
12 days agopatch 9.2.0896: textprop: wrong Tab size in a line with virtual text above it v9.2.0896
Hirohito Higashi [Sun, 2 Aug 2026 17:20:29 +0000 (17:20 +0000)] 
patch 9.2.0896: textprop: wrong Tab size in a line with virtual text above it

Problem:  In a line with virtual text above it a Tab does not have the right
          size, depending on the width of the window.
Solution: Do not count the columns of the virtual text for the size of the
          Tab, neither when drawing nor when computing the column.

fixes:  #12232
closes: #20901

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>
12 days agopatch 9.2.0895: test: Test_aucmd_win_scroll_multibyte() is flaky in the GUI v9.2.0895
Hirohito Higashi [Sun, 2 Aug 2026 17:13:43 +0000 (17:13 +0000)] 
patch 9.2.0895: test: Test_aucmd_win_scroll_multibyte() is flaky in the GUI

Problem:  The test comparing the top line before and after using the
          autocommand window is flaky in the GUI.
Solution: Run the test in a window with a fixed size.  In the GUI a
          pending resize of the shell is applied at the end of a screen
          update, thus the size may change between the two measurements.

related: #20884
closes:  #20913

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>
13 days agopatch 9.2.0894: filetype: ed script files not recognised v9.2.0894
Doug Kearns [Sat, 1 Aug 2026 13:57:32 +0000 (13:57 +0000)] 
patch 9.2.0894: filetype: ed script files not recognised

Problem:  filetype: ed script files not recognised.
Solution: Add filetype detection for *.ed files and shebang lines,
          include syntax script and syntax tests.

Features of the ed syntax file:
- BSD and GNU extensions are supported
- Andrew L. Moore's ed extensions are not supported
- Rebuild synmenu.vim

closes: #19602

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.2.0893: MS-Windows: "*.vim" also matches files with a longer extension v9.2.0893
Hirohito Higashi [Sat, 1 Aug 2026 13:47:20 +0000 (13:47 +0000)] 
patch 9.2.0893: MS-Windows: "*.vim" also matches files with a longer extension

Problem:  On MS-Windows a pattern like "path/*.vim" also matches files such
          as "foo.vim9", because the 8.3 short name "FOO~1.VIM" is used for
          matching as well.  These files are then sourced.
Solution: Only match against the short name when the pattern contains a '~'
          (Hirohito Higashi).

closes: #20899

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>
13 days agoruntime(doc): remove todo entry for test_codestyle errors
Hirohito Higashi [Sat, 1 Aug 2026 13:42:54 +0000 (13:42 +0000)] 
runtime(doc): remove todo entry for test_codestyle errors

The two reported problems are gone: keycode_check.vim has no space before a
tab and setup.vim, now util/setup.vim, has no trailing white space.  Since
patch 9.2.0195 the check is not part of the test suite but a separate
"make codestyle" target.

closes: #20900

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>
13 days agopatch 9.2.0892: highlight: wrong column highlighted with 'cursorcolumn' v9.2.0892
Hirohito Higashi [Sat, 1 Aug 2026 13:32:48 +0000 (13:32 +0000)] 
patch 9.2.0892: highlight: wrong column highlighted with 'cursorcolumn'

Problem:  With 'virtualedit' set to "all" and 'cursorcolumn' set, the wrong
          column may be highlighted after a command that moved the cursor
          into virtual space and back (van-de-bugger).
Solution: Make sure the virtual column is up to date before drawing the
          window (Hirohito Higashi).

fixes:  #2576
closes: #20902

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>
13 days agopatch 9.2.0891: MS-Windows: filename-modifier ":8:t" causes underflow v9.2.0891
Hirohito Higashi [Sat, 1 Aug 2026 13:26:21 +0000 (13:26 +0000)] 
patch 9.2.0891: MS-Windows: filename-modifier ":8:t" causes underflow

Problem:  On MS-Windows using ":8" with ":t", ":e" or ":r" in one
          fnamemodify() gives a wrong result or an out of memory error.
Solution: Recompute the tail after ":8" replaced the name
          (Hirohito Higashi).

related: #20899
closes:  #20903

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>
13 days agoCI: Bump github/codeql-action
dependabot[bot] [Sat, 1 Aug 2026 13:18:08 +0000 (13:18 +0000)] 
CI: Bump github/codeql-action

Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 4.37.1 to 4.37.3
- [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.1...v4.37.3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

closes: #20905

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.2.0890: test: test for patch v9.2.0888 can be clarified v9.2.0890
Hirohito Higashi [Sat, 1 Aug 2026 10:51:44 +0000 (10:51 +0000)] 
patch 9.2.0890: test: test for patch v9.2.0888 can be clarified

Problem:  test for patch v9.2.0888 can be clarified
          (zeertzjq)
Solution: use <NL> instead of CTRL-J for a NL

The comment says "A NL", using <NL> makes the intent clearer.

related: #20898
closes:  #20906

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>
13 days agopatch 9.2.0889: VMS: spurious "INVALID DECC FEATURE VALUE" message at every startup v9.2.0889
Scott Klein [Sat, 1 Aug 2026 10:44:01 +0000 (10:44 +0000)] 
patch 9.2.0889: VMS: spurious "INVALID DECC FEATURE VALUE" message at every startup

Problem:  On OpenVMS, Vim prints "INVALID DECC FEATURE VALUE" once per
          DECC feature at every startup whenever that feature is already
          set to the value Vim wants -- e.g. when DECC$ARGV_PARSE_STYLE,
          DECC$EFS_CASE_PRESERVE or DECC$EFS_CHARSET are defined as
          logical names. Conversely, a genuinely out-of-range value is
          silently ignored, so the diagnostic fires exactly when it
          should not and never when it should (after v9.1.1591)
Solution: Add braces so that the "else" binds to the range check rather
          than to the inner "if", matching the existing indentation and
          the evident intent (Scott Klein).

related: #17810
closes:  #20904

Supported by AI.

Signed-off-by: Scott Klein <kleinmatic@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>