]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
8 hours agopatch 9.2.0823: tests: Test_clientserver_servlist_list may fail master 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>
8 hours 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>
8 hours 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>
30 hours 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>
31 hours 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>
31 hours 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>
31 hours 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>
31 hours 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>
31 hours 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>
31 hours 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>
31 hours 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>
32 hours 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>
33 hours 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 days 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 days 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 days 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 days 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 days 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 days 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 days 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>
3 days agopatch 9.2.0804: wincol() is wrong for a double-wide character with 'rightleft' v9.2.0804
Hirohito Higashi [Sat, 18 Jul 2026 16:57:57 +0000 (16:57 +0000)] 
patch 9.2.0804: wincol() is wrong for a double-wide character with 'rightleft'

Problem:  With 'rightleft' set and the cursor on a double-wide character,
          wincol() returns the column one to the right of where the cursor
          actually is (after v9.2.0791)
Solution: Take the width of the character under the cursor into account,
          like the cursor positioning already does.

related: #20763
closes:  #20785

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>
3 days agopatch 9.2.0803: Memory leak on alloc failure with taglist/gettagstack() v9.2.0803
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:41:24 +0000 (14:41 +0000)] 
patch 9.2.0803: Memory leak on alloc failure with taglist/gettagstack()

Problem:  Memory leak on alloc failure with taglist/gettagstack()
Solution: Free the dict on list_append_dict() failure
          (Yasuhiro Matsumoto).

taglist() and gettagstack() ignored the append failure and leaked the
dict, and continued populating an orphaned dict. Free it and stop.

closes:  #20745
related: #20668

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0802: Memory leak with list_append_dict/dict_add_list on alloc failure v9.2.0802
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:37:14 +0000 (14:37 +0000)] 
patch 9.2.0802: Memory leak with list_append_dict/dict_add_list on alloc failure

Problem:  Memory leak with list_append_dict()/dict_add_list() on alloc
          failure
Solution: Free the list/dict when dict_add_list()/list_append_dict()
          failed (Yasuhiro Matsumoto)

Various getinfo-style builtins ignored the return of list_append_dict()/
dict_add_list() and leaked the freshly allocated, GC-linked dict or list on
allocation failure. Check the return and unref on failure. Affects
getreginfo/setreg event (register.c), hlget (highlight.c), prop_list
(textprop.c), getmatches (match.c), menu_getinfo (menu.c),
popup_getoptions (popupwin.c), sign_getplaced (sign.c), job_info (job.c),
term_getcursor/term_scrape (terminal.c), diff() (diff.c), complete_info
(insexpand.c), cmdcomplete_info (cmdexpand.c).

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0801: Memory leak in f_getreginfo() on alloc failure v9.2.0801
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:35:21 +0000 (14:35 +0000)] 
patch 9.2.0801: Memory leak in f_getreginfo() on alloc failure

Problem:  Memory leak in f_getreginfo() on alloc failure
Solution: Call list_unref() with list var (Yasuhiro Matsumoto).

Since dict_add_list() leaves ownership with the caller on failure, the
freshly built list must be freed when the add fails.

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0800: Memory leak in call_func() on alloc failure v9.2.0800
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:30:50 +0000 (14:30 +0000)] 
patch 9.2.0800: Memory leak in call_func() on alloc failure

Problem:  Memory leak in call_func() on alloc failure
Solution: goto theend for the cleanup (Yasuhiro Matsumoto).

The early return bypassed the theend cleanup, leaking the parsed generic
function type arguments. Use goto theend.

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0799: Memory leak in compile_def_function_body() on alloc failure v9.2.0799
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:27:24 +0000 (14:27 +0000)] 
patch 9.2.0799: Memory leak in compile_def_function_body() on alloc failure

Problem:  Memory leak in compile_def_function_body() on alloc failure
Solution: Call vim_free with the line var (Yasuhiro Matsumoto).

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0798: Memory leak in compile_expr6() on alloc failure v9.2.0798
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:25:10 +0000 (14:25 +0000)] 
patch 9.2.0798: Memory leak in compile_expr6() on alloc failure

Problem:  Memory leak in compile_expr6() on alloc failure
Solution: Free left string when constant string concat alloc fails
          (Yasuhiro Matsumoto).

compile_expr6() overwrote tv1's string pointer before allocating the
concatenation buffer, leaking the original left-hand string on failure.

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0797: Memory leak in get_qfline_items() on alloc failure v9.2.0797
Yasuhiro Matsumoto [Sat, 18 Jul 2026 14:22:31 +0000 (14:22 +0000)] 
patch 9.2.0797: Memory leak in get_qfline_items() on alloc failure

Problem:  Memory leak in get_qfline_items() on alloc failure
Solution: Call dict_unref() with the dict (Yasuhiro Matsumoto).

related: #20668
related: #20745

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0796: Visual block reselection wrong with 'virtualedit' v9.2.0796
zeertzjq [Sat, 18 Jul 2026 14:14:12 +0000 (14:14 +0000)] 
patch 9.2.0796: Visual block reselection wrong with 'virtualedit'

Problem:  Visual block reselection wrong with 'virtualedit' when line
          lengths are different (Alex Yang, after 8.2.3494).
Solution: Set the entire cursor position to old position when computing
          target curswant, since the check_cursor() added in 8.2.3494
          may change cursor column as well (zeertzjq).

fixes:  #20746
closes: #20748

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0795: popup menu shadow is not cleared when the menu shrinks v9.2.0795
Hirohito Higashi [Sat, 18 Jul 2026 14:10:41 +0000 (14:10 +0000)] 
patch 9.2.0795: popup menu shadow is not cleared when the menu shrinks

Problem:  When the popup menu shrinks its shadow is not cleared: a stale
          shadow cell is left on the empty (~) lines near the menu, and when
          the menu also gets narrower the border and text of the larger menu
          show through the shadow (Maxim Kim)
Solution: Exclude the shadow corner cells that are never drawn, and when the
          menu is redrawn redraw the background under the shadow first, so
          content left by a larger menu is cleared instead of showing through
          (Hirohito Higashi).

fixes:  #20740
closes: #20750

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>
3 days agoruntime(jinja): Include ftplugin for jinja filetype
Wu, Zhenyu [Sat, 18 Jul 2026 14:06:57 +0000 (14:06 +0000)] 
runtime(jinja): Include ftplugin for jinja filetype

closes: #20778

Co-Authored-by: Alejandro Sanchez <hiphish@posteo.de>
Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0794: extend() and extendnew() don't handle NULL expr2 properly v9.2.0794
zeertzjq [Sat, 18 Jul 2026 13:57:04 +0000 (13:57 +0000)] 
patch 9.2.0794: extend() and extendnew() don't handle NULL expr2 properly

Problem:  extend() and extendnew() don't handle NULL expr2 properly
          (Mao-Yining)
Solution: Still set the return value when expr2 is NULL (zeertzjq).

fixes:  #20758
closes: #20759

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0793: If session restored a tiny window, restore fails v9.2.0793
Illia Bobyr [Sat, 18 Jul 2026 13:52:22 +0000 (13:52 +0000)] 
patch 9.2.0793: If session restored a tiny window, restore fails

Problem:  If session restored a tiny window, restore fails
Solution: Extend window sizes to be at least the minimum size during
          session restore (Illia Bobyr)

If session contains a window that is shorter/narrower than the current
`&winminheight` and `&winminwidth`, respectively, Vim will fail when
assigning original values to the `&winminheight`/`&winminwidth` and the
session restore will be slightly incomplete.

It seems reasonable to assume that if the user have selected certain
values for these minimum size settings, it is safe to just make the
restored windows big enough to match the minimums and continue without
producing an error.

This fix allows `Test_mksession_winminheight()` to start with the
default values of `&winheight`/`&winwidth` and only change them after
the session restore.

closes: #20692

Supported by AI.

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0792: runtime(netrw): Explore without optional dir broken v9.2.0792
Mark Woods [Sat, 18 Jul 2026 13:25:17 +0000 (13:25 +0000)] 
patch 9.2.0792: runtime(netrw): Explore without optional dir broken

Problem:  runtime(netrw): Explore without optional [dir] argument should
          open directory of the current file
Solution: Make it work as documented (Mark Woods)

Broken by fix for #20636 in PR #20663

related: #20663
closes:  #20761

Signed-off-by: Mark Woods <mwoods.online.ie@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agotranslation(hy): Update Armenian language translation
Gagik Hakobyan [Sat, 18 Jul 2026 13:16:22 +0000 (13:16 +0000)] 
translation(hy): Update Armenian language translation

Supported by AI.

closes: #20762

Signed-off-by: Gagik Hakobyan <hakgagik@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0791: wincol() counts from right side for 'rightleft' v9.2.0791
Sergey Vlasov [Sat, 18 Jul 2026 13:11:06 +0000 (13:11 +0000)] 
patch 9.2.0791: wincol() counts from right side for 'rightleft'

Problem:  wincol() counts cells from right side of the window if
          'rightleft' is enabled.
Solution: Fix wincol() to count from left side of the window
          as documented (Sergey Vlasov).

closes: #20763

Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): Improve fuzzy file picker doc
Mao-Yining [Sat, 18 Jul 2026 12:48:23 +0000 (12:48 +0000)] 
runtime(doc): Improve fuzzy file picker doc

1. Only reset cache after used.
2. Use `expand('**', 1, 1)` than `globpath('.', '**', 1, 1)`.

| Environment     | expand (s) | globpath (s) | expand faster |
| --------------- | ---------- | ------------ | ------------- |
| WSL (small)     | 0.0491     | 0.0537       | 9.4%          |
| Windows (large) | 1.6606     | 2.3565       | 41.9%         |

3. fnamemodify() is useless here.

closes: #20767

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0790: 'completeslash' breaks :find completion with 'findfunc' v9.2.0790
glepnir [Sat, 18 Jul 2026 09:50:11 +0000 (09:50 +0000)] 
patch 9.2.0790: 'completeslash' breaks :find completion with 'findfunc'

Problem:  On MS-Windows with 'completeslash' set, an item completed by
          'findfunc' cannot be opened with :find, E345 is given (Mao-Yining)
Solution: Do not apply 'completeslash' to matches returned by 'findfunc',
          they are opaque strings that are passed back to the function
          unchanged (glepnir)

fixes:  #20770
closes: #20771

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0789: 'statuslineopt' status line too high after a window is minimized v9.2.0789
Hirohito Higashi [Sat, 18 Jul 2026 09:46:33 +0000 (09:46 +0000)] 
patch 9.2.0789: 'statuslineopt' status line too high after a window is minimized

Problem:  With a global 'statuslineopt' maxheight, the status line height is
          not reduced to what every window can afford.  After a window is put
          at its minimum height (e.g. CTRL-W_), setting 'statuslineopt' still
          gives a status line taller than the small window can display,
          instead of the best-effort height that fits all windows.
Solution: Let every window using the global 'statuslineopt' constrain the
          best-effort height, including windows at their minimum height.
          Correct a misleading test comment and add a test (Hirohito Higashi).

closes: #20772

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>
3 days agoruntime(cuda): Fix typo in cuda syntax file
Christian Brabandt [Sat, 18 Jul 2026 09:43:15 +0000 (09:43 +0000)] 
runtime(cuda): Fix typo in cuda syntax file

related: #20773

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0788: filetype: hip files are not recognized v9.2.0788
Young [Sat, 18 Jul 2026 09:39:58 +0000 (09:39 +0000)] 
patch 9.2.0788: filetype: hip files are not recognized

Problem:  filetype: hip files are not recognized
Solution: Detect *.hip files as hip filetype, include filetype, syntax
          and indent plugins, update makemenu.vim and synmenu.vim (Young)

Round out HIP (Heterogeneous-compute Interface for Portability) support
to mirror the existing CUDA files:

- autoload/dist/ft.vim: detect the ".hip" extension as filetype "hip"
- ftplugin/hip.vim: behave like C++ by sourcing ftplugin/cpp.vim
- indent/hip.vim: use cindent, like indent/cuda.vim
- makemenu.vim / synmenu.vim: add a Syntax menu entry

The syntax/hip.vim file already sources syntax/cpp.vim and adds the
HIP-specific keywords, matching syntax/cuda.vim.

closes: #20773

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Young <young20050727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0787: regexp: code 0x1ecb duplicated for equivalence class v9.2.0787
Christian Brabandt [Sat, 18 Jul 2026 03:53:47 +0000 (03:53 +0000)] 
patch 9.2.0787: regexp: code 0x1ecb duplicated for equivalence class

Problem:  regexp: code 0x1ecb duplicated for equivalence class
          (Sami Farin)
Solution: Remove it

fixes:  #8029#issuecomment-4998990223
closes: #20782

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0786: filetype: Containerfile is not recognized v9.2.0786
Omer Tuchfeld [Sat, 18 Jul 2026 03:47:31 +0000 (03:47 +0000)] 
patch 9.2.0786: filetype: Containerfile is not recognized

Problem:  filetype: Containerfile is not recognized
Solution: Detect *.[Cc]ontainerfiles as dockerfile filetype
          (Omer Tuchfeld)

closes: #20783

Supported by AI.

Signed-off-by: Omer Tuchfeld <omer@tuchfeld.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoCI: Bump the github-actions group across 1 directory with 2 updates
dependabot[bot] [Sat, 18 Jul 2026 03:41:27 +0000 (03:41 +0000)] 
CI: Bump the github-actions group across 1 directory with 2 updates

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

Updates `github/codeql-action` from 4.36.3 to 4.37.0
- [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.36.3...v4.37.0)

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

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/labeler
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

closes: #20784

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0785: WinResized not triggered when the whole Vim is resized v9.2.0785
Hirohito Higashi [Fri, 17 Jul 2026 15:03:10 +0000 (15:03 +0000)] 
patch 9.2.0785: WinResized not triggered when the whole Vim is resized

Problem:  When the whole Vim (terminal or GUI) is resized, VimResized fires
          right away but WinResized does not: it only triggers on the next
          typed command, even though the windows already changed size
          (Mao-Yining).
Solution: Trigger the WinResized (and WinScrolled) check right after firing
          VimResized on a shell resize, so window size changes are reported
          immediately instead of waiting for the next command
          (Hirohito Higashi).

fixes:  #20774
closes: #20775

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>
4 days agopatch 9.2.0784: crash when borrowing statusline highlight in silent Ex mode v9.2.0784
Hirohito Higashi [Fri, 17 Jul 2026 14:52:07 +0000 (14:52 +0000)] 
patch 9.2.0784: crash when borrowing statusline highlight in silent Ex mode

Problem:  Vim crashes with a NULL pointer dereference when a status line is
          redrawn next to a vertical separator in silent Ex mode, where the
          screen cell arrays are not allocated (tdjackey).
Solution: Skip borrowing the vertical separator highlight when the screen is
          not allocated (Hirohito Higashi).

closes: #20776

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>
4 days agoCI: Bump the github-actions group across 1 directory with 2 updates
dependabot[bot] [Fri, 17 Jul 2026 14:38:04 +0000 (14:38 +0000)] 
CI: Bump the github-actions group across 1 directory with 2 updates

Bumps the github-actions group with 2 updates in the / directory: [actions/cache](https://github.com/actions/cache) and [github/codeql-action](https://github.com/github/codeql-action).

Updates `actions/cache` from 5.0.5 to 6.1.0
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5.0.5...v6.1.0)

Updates `github/codeql-action` from 4.36.2 to 4.36.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.36.2...v4.36.3)

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

closes: #20749

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(netrw): Fix `reset_ssl` reference error on file rename
yasuda [Fri, 17 Jul 2026 14:31:48 +0000 (14:31 +0000)] 
runtime(netrw): Fix `reset_ssl` reference error on file rename

fixes:  #20710
closes: #20777
closes: #20698

Co-Authored-by: Doruk Özer <dorukozer@protonmail.com>
Signed-off-by: yasuda <yasuda@kyoto-sr.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0783: tests: personal spell files leak into later tests v9.2.0783
coyaSONG [Fri, 17 Jul 2026 14:13:53 +0000 (14:13 +0000)] 
patch 9.2.0783: tests: personal spell files leak into later tests

Problem:  Test_spelldump_prefixtree_overflow() resets 'runtimepath' to
          defaults, which can expose personal spell files to later tests
          (Jun-ichi Takimoto, after v9.2.0662)
Solution: Save and restore the test runner's 'runtimepath' value (coyaSONG).

fixes:  #20765
closes: #20766

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: coyaSONG <66289470+coyaSONG@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0782: tests: missing cleanup in test_mksession.vim v9.2.0782
Illia Bobyr [Fri, 3 Jul 2026 16:24:57 +0000 (16:24 +0000)] 
patch 9.2.0782: tests: missing cleanup in test_mksession.vim

Problem:  Some test_mksession tests do not cleanup all the state
Solution: Add commands to clean up state introduced by the test
          (Illia Bobyr)

Before this change the following 4 tests were failing when executed
individually:

  Test_mksession_arglocal_localdir
  Test_mksession_buffer_count
  Test_mksession_one_buffer_two_windows
  Test_mksession_winminheight

As in
```
  TEST_FILTER=winminheight make test_mksession
```
Yet, when ran as part of the whole test suite they succeeded.

This was due to some state leaking from one test into another.

I think this is bad, as it can confuse someone making changes in the
relevant area.

`Test_mksession_winminheight` is actually still broken a bit, and
requires `winheight` and `winwidth` set at the beginning of the test,
rather than later, when it actually matters.  This exposes a subtle bug
in the session restore script.  I have a patch in a separate commit.

closes: #20691

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): clarify behaviour of 'title' and 'iconstring'
Celelibi [Fri, 3 Jul 2026 16:22:04 +0000 (16:22 +0000)] 
runtime(doc): clarify behaviour of 'title' and 'iconstring'

Document that some terminals sets the 'icon' as window title. Just like
'title' would.  Which can be confusing and need to be documented for
both options.

closes: #20553

Signed-off-by: Celelibi <celelibi@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(syntax-tests): add typst syntax tests
Maxim Kim [Fri, 3 Jul 2026 16:15:35 +0000 (16:15 +0000)] 
runtime(syntax-tests): add typst syntax tests

closes: #20694

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0781: tests: Test_fuzzy_completion_bufname_fullpath() creates unnecessary dir v9.2.0781
zeertzjq [Thu, 2 Jul 2026 20:35:25 +0000 (20:35 +0000)] 
patch 9.2.0781: tests: Test_fuzzy_completion_bufname_fullpath() creates unnecessary dir

Problem:  tests: Test_fuzzy_completion_bufname_fullpath() creates an
          unnecessary directory with the name of a file.
Solution: Only create the parent directory of the file (zeertzjq).

closes: #20695

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0780: Memory leak in evalvars.c on alloc failure v9.2.0780
Christian Brabandt [Thu, 2 Jul 2026 20:06:33 +0000 (20:06 +0000)] 
patch 9.2.0780: Memory leak in evalvars.c on alloc failure

Problem:  Memory leak in evalvars.c on alloc failure (Ao Xijie)
Solution: free new_tuple when tuple_append_tv() fails and clear typeval,
          add a test.

closes: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0779: Memory leak in type_name_func() on alloc failure v9.2.0779
Christian Brabandt [Thu, 2 Jul 2026 20:01:50 +0000 (20:01 +0000)] 
patch 9.2.0779: Memory leak in type_name_func() on alloc failure

Problem:  Memory leak in type_name_func() on alloc failure (Ao Xijie)
Solution: Free ret_free variable on failure

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0778: Memory Leak in compile_dict() on alloc failure v9.2.0778
Christian Brabandt [Thu, 2 Jul 2026 19:58:13 +0000 (19:58 +0000)] 
patch 9.2.0778: Memory Leak in compile_dict() on alloc failure

Problem:  Memory Leak in compile_dict() on allocation failure (Ao Xijie)
Solution: Use goto failret consistently

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0777: Memory leak in add_defer() on alloc failure v9.2.0777
Christian Brabandt [Thu, 2 Jul 2026 19:54:49 +0000 (19:54 +0000)] 
patch 9.2.0777: Memory leak in add_defer() on alloc failure

Problem:  Memory leak in add_defer() on allocation failure (Ao Xijie)
Solution: Free saved_name when ga_grow() fails, propagate failure from
          add_defer_function() to the caller, add a test for alloc
          failure

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0776: Memory leak in sign_getlist() on alloc failure v9.2.0776
Christian Brabandt [Thu, 2 Jul 2026 19:51:00 +0000 (19:51 +0000)] 
patch 9.2.0776: Memory leak in sign_getlist() on alloc failure

Problem:  Memory leak in sign_getlist() on allocation failure
          (Ao Xijie)
Solution: Call dict_unref() on failure to free the previously
          allocated dict.

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0775: Memory Leak in highlight_get_info() on alloc failure v9.2.0775
Christian Brabandt [Thu, 2 Jul 2026 19:46:18 +0000 (19:46 +0000)] 
patch 9.2.0775: Memory Leak in highlight_get_info() on alloc failure

Problem:  Memory Leak in highlight_get_info() on alloc failure
          (Ao Xijie)
Solution: Free attr_dict, on failure using dict_unref() and not
          vim_free()

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0774: Memory leak in f_getscriptinfo() on alloc failure v9.2.0774
Christian Brabandt [Thu, 2 Jul 2026 19:42:36 +0000 (19:42 +0000)] 
patch 9.2.0774: Memory leak in f_getscriptinfo() on alloc failure

Problem:  Memory leak in the script info code on allocation failure
Solution: Route the failures through the existing cleanup with "goto
          theend", and unref var_dict and the functions list when
          dict_add_dict()/dict_add_list() fail.

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0773: Memory leak in evalfunc.c on alloc failure v9.2.0773
Christian Brabandt [Thu, 2 Jul 2026 19:38:26 +0000 (19:38 +0000)] 
patch 9.2.0773: Memory leak in evalfunc.c on alloc failure

Problem:  Memory leak in evalfunc.c on alloc failure
Solution: Call dict_unref() when list_append_dict() fails before
          returning.

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0772: Vim9: Null dereference inside alloc_type() v9.2.0772
Christian Brabandt [Thu, 2 Jul 2026 19:36:42 +0000 (19:36 +0000)] 
patch 9.2.0772: Vim9: Null dereference inside alloc_type()

Problem:  Vim9: Null dereference inside alloc_type(),
          Missing NULL check after ALLOC_ONE() (Ao Xijie)
Solution: Check that the returned value from ALLOC_ONE() is not NULL

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0771: dict_add_list() has inconsistent ownership on failure v9.2.0771
Christian Brabandt [Thu, 2 Jul 2026 19:33:45 +0000 (19:33 +0000)] 
patch 9.2.0771: dict_add_list() has inconsistent ownership on failure

Problem:  dict_add_list() frees the passed list on failure path
          (when dict_add() fails) but not on the other (when
          dictitem_alloc() fails), so a caller cannot tell whether it
          still owns the list after a failure.
Solution: On failure leave the passed list untouched and owned by the
          caller; only take a reference on success.

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0770: dict_add_dict() has inconsistent ownership on failure v9.2.0770
Christian Brabandt [Thu, 2 Jul 2026 19:30:45 +0000 (19:30 +0000)] 
patch 9.2.0770: dict_add_dict() has inconsistent ownership on failure

Problem:  dict_add_dict() frees the passed dict on one failure path
          (when dict_add() fails) but not on the other (when
          dictitem_alloc() fails), so a caller cannot tell whether it
          still owns the dict after a failure.  Callers that unref the
          dict on failure (e.g. in window.c) then double-free it when
          dict_add() fails.
Solution: Make the failure contract consistent: on failure leave the
          passed dict untouched and owned by the caller; only take a
          reference on success.

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agotranslation(zh_CN): Add Chinese man pages
Mao-Yining [Thu, 2 Jul 2026 19:24:19 +0000 (19:24 +0000)] 
translation(zh_CN): Add Chinese man pages

Problem:  No Simplified Chinese man pages.
Solution: Add Simplified Chinese translations of man pages.

closes: #19464

Co-Authored-By: yianwillis <yianwillis@gmail.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0769: conversion to utf-16be using iconv is inconsistent v9.2.0769
Manoj Panda [Thu, 2 Jul 2026 19:10:36 +0000 (19:10 +0000)] 
patch 9.2.0769: conversion to utf-16be using iconv is inconsistent

Problem:  enc_canonize function changes utf-16be to utf-16 but in linux
          type utf-16 defaults to utf-16le.
Solution: Creating a separate entry for utf-16be in enc_canon_table.
          Note: the effect is only visible on iconv implementations that
          treat "utf-16" and "utf-16be" differently, so the test does
          not necessarily fail on an unpatched Vim (Manoj Panda)

closes: #20681

Signed-off-by: Manoj Panda <manojpandawork@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0768: legacy/vim9cmd modifiers are not exclusive v9.2.0768
Illia Bobyr [Thu, 2 Jul 2026 18:51:04 +0000 (18:51 +0000)] 
patch 9.2.0768: legacy/vim9cmd modifiers are not exclusive

Problem:  legacy/vim9cmd modifiers are not exclusive
Solution: when parsing command modifiers clear the other flag
          (Illia Bobyr)

When one of the ":legacy" or ":vim9cmd" prefixes is used, it sets a
flag.  As the rest of the code might check either of the flags, setting
both could produce confusing results.  It does not make a lot of sense
to use both prefixes in the same command.  But just in case it is used,
selecting the last prefix seems reasonable.

closes: #20682

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0767: legacy/vim9cmd modifiers do not set script version for options values v9.2.0767
Illia Bobyr [Thu, 2 Jul 2026 18:40:03 +0000 (18:40 +0000)] 
patch 9.2.0767: legacy/vim9cmd modifiers do not set script version for options values

Problem:  legacy/vim9cmd modifiers do not set script version for options
          values
Solution: Set the correct script version depending on command modifier
          flags (Illia Bobyr)

When remembering script context for an option value we should consider
flags "CMOD_LEGACY" and "CMOD_VIM9CMD" set in "cmdmod.cmd_flags" by the
":legacy" and ":vim9cmd" command prefixes.  Otherwise, if an option
value is an expression, it might be evaluated in an incorrect context.

closes: #20683

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0766: quick_tab entries for empty letters point to the wrong index v9.2.0766
Illia Bobyr [Thu, 2 Jul 2026 18:28:59 +0000 (18:28 +0000)] 
patch 9.2.0766: quick_tab entries for empty letters point to the wrong index

Problem:  Letters with no options (like "y" and "z") have their
          quick_tab entry left at 0, so lookups for those letters start
          scanning at options[0] instead of failing fast.
Solution: Set entries for letters with no option names to the last-option
          index, so such lookups stop immediately (Illia Bobyr)

closes: #20684

Signed-off-by: Illia Bobyr <illia.bobyr@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0765: popup: opacity popup over a terminal is not cleared when moved v9.2.0765
Hirohito Higashi [Thu, 2 Jul 2026 17:59:24 +0000 (17:59 +0000)] 
patch 9.2.0765: popup: opacity popup over a terminal is not cleared when moved

Problem:  A semi-transparent (opacity) popup shown over a terminal window
          leaves its old cells on screen when it is moved or its text
          changes, and typing in the terminal makes them accumulate.  Only
          a full redraw (CTRL-L) clears them.
Solution: When redrawing the background under an opacity popup, force a full
          repaint of an underlying terminal window so the blend uses the
          terminal's true background instead of stale, already-blended
          cells.

fixes:  #20679
closes: #20688

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.0764: Compiler warning about unused function v9.2.0764
Christian Brabandt [Thu, 2 Jul 2026 17:52:00 +0000 (17:52 +0000)] 
patch 9.2.0764: Compiler warning about unused function

Problem:  Compiler warning about unused function
          (Tony Mechelynck, after v9.2.0762)
Solution: Add ifdefs

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agotranslation(sr): Update Serbian translation
Ivan Pešić [Wed, 1 Jul 2026 21:06:10 +0000 (21:06 +0000)] 
translation(sr): Update Serbian translation

closes: #20689

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0763: tests: style issue in test_plugin_netrw v9.2.0763
Christian Brabandt [Thu, 2 Jul 2026 06:12:32 +0000 (08:12 +0200)] 
patch 9.2.0763: tests: style issue in test_plugin_netrw

Problem:  tests: style issue in test_plugin_netrw (after v9.2.0761)
Solution: Clean-up newly created directory, use consistent concat
          operator

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(xml): Update xml syntax file
Christian Brabandt [Wed, 1 Jul 2026 20:53:52 +0000 (20:53 +0000)] 
runtime(xml): Update xml syntax file

Improve performance

related: chrisbra/vim-xml-runtime#36

Co-Authored-by: Dmytro Meleshko <dmytro.meleshko@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): regenerate help tags
Christian Brabandt [Wed, 1 Jul 2026 20:44:37 +0000 (20:44 +0000)] 
runtime(doc): regenerate help tags

forgotten from dd8975428bae4139d400df1ebac

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0762: duplicated sub-option name check in :set completion v9.2.0762
Shane Harper [Wed, 1 Jul 2026 20:40:51 +0000 (20:40 +0000)] 
patch 9.2.0762: duplicated sub-option name check in :set completion

Problem:  The same sub-option name check appears ten times.
Solution: Extract the check into new completing_value_for_subopt()
          function (Shane Harper).

No functional change.

Previously is_borderhighlight in expand_set_popupoption() was always
false: STRNCMP was given "highlight:" instead of "borderhighlight:" as
its second argument. There was no user-visible problem with this:
is_highlight was already true for "borderhighlight:" (it ends in
"highlight:") and the completions for both "borderhighlight:" and
"highlight:" are the same.

closes: #20676

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(screen): Bring the syntax up to version 5
Aliaksei Budavei [Wed, 1 Jul 2026 20:38:10 +0000 (20:38 +0000)] 
runtime(screen): Bring the syntax up to version 5

* Match command names introduced in v.5.0.0 (August 2024):
  "auth", "multiinput", "status", "truecolor".
* Match command names introduced in v.4.5.0 (January 2017):
  "defdynamictitle" and "dynamictitle".
* Deprecate command names that have been retired thus far:
  "debug", "maxwin", "nethack", "password", "time".
* Remove a spurious "defzombie" command name (this name is
  just lamented over in the documentation entry for the
  "zombie" command as being more fitting than "zombie"
  because its effects are not local to a window; no such
  name is entered in "comm.c").
* Separately group the Braille navigation commands, "bd_*",
  that may belong to another, superset program Dotscreen:
  (see doc/README.DOTSCREEN and commit 848af83f5 elsewhere).
* Revise string escape characters:
    - Recognise more characters, "%[`<>=eEfFHOPSxX]".
    - Recognise undocumented characters, "%[gNpT]", and list
      relevant Screen commits in the comments.
    - Match optional qualifiers, "%\%([-+L]\|\d\+\).".
* Match more items in double-quoted command arguments.
* Match unquoted environment variable references.
* Match octal numbers, e.g. "defmode 0622".
* Match escaped octal numbers, e.g. "bind \077 help".

Unless a Dotscreen program (c. 1995) or an older than
v.4.3.1 (c. 2015) Screen program, that was compiled with
"HAVE_BRAILLE" defined, is installed and needs configuring,
add to ".vim/after/syntax/screen.vim":
-----------------------------------------------------------
if hlexists('dotscreenCommands')
    syn clear dotscreenCommands
endif
-----------------------------------------------------------

To BACKPORT the updated syntax file to version 4 of Screen,
add to ".vim/after/syntax/screen.vim":
-----------------------------------------------------------
if hlexists('screenDeprecatedCommands')
    syn clear screenDeprecatedCommands
endif

if hlexists('screenVersion5Commands')
    syn clear screenVersion5Commands
endif
-----------------------------------------------------------

References:
https://lists.gnu.org/archive/html/info-gnu/2024-08/msg00004.html
https://lists.gnu.org/archive/html/info-gnu/2017-01/msg00007.html
https://git.savannah.gnu.org/git/screen.git

closes: #20550

Co-authored-by: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(typst): Improve ftplugin, and syntax file
Doug Kearns [Wed, 1 Jul 2026 20:35:32 +0000 (20:35 +0000)] 
runtime(typst): Improve ftplugin, and syntax file

- Move whitespace formatting settings from the indent to the filetype
  plugin behind a "typst_recommended_style" config option.
- Set browsefilter
- Improve syntax file

Thanks to Maxim Kim for taking on maintainership of the typst runtime
files.

related: #20036
closes:  #20077

Co-authored-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0761: runtime(netrw): Unix: unable to open '\' file v9.2.0761
Manoj Panda [Wed, 1 Jul 2026 19:46:47 +0000 (19:46 +0000)] 
patch 9.2.0761: runtime(netrw): Unix: unable to open '\' file

Problem:  runtime(netrw): Unix: unable to open '\' file
Solution: Adjust directory pattern (Manoj Panda)

closes: #20685

Signed-off-by: Manoj Panda <manojpandawork@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0760: Compiler warning for using potentially uninitialized var v9.2.0760
Christian Brabandt [Wed, 1 Jul 2026 18:55:04 +0000 (18:55 +0000)] 
patch 9.2.0760: Compiler warning for using potentially uninitialized var

Problem:  Compiler warning for using potentially uninitialized var
          (John Marriott, after v9.2.0612)
Solution: Initialize the variables at declaration

related: #20136

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0759: Some code for 'autocompletedelay' is no longer needed v9.2.0759
zeertzjq [Wed, 1 Jul 2026 18:31:14 +0000 (18:31 +0000)] 
patch 9.2.0759: Some code for 'autocompletedelay' is no longer needed

Problem:  Some code for 'autocompletedelay' is no longer needed now that
          'autocompletedelay' doesn't block redraw (after 9.2.0739).
Solution: Remove unnecessary code. Also remove a duplicate screendump
          and an outdated comment in test (zeertzjq)

closes: #20686

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(autoload/dist): gx may use xdg-open on macOS
Lifepillar [Wed, 1 Jul 2026 18:24:44 +0000 (18:24 +0000)] 
runtime(autoload/dist): gx may use xdg-open on macOS

Problem:  gx mapping: when macOS have xdg-open in PATH, that takes
          precedence over open.
Solution: check for 'osx' feature instead of executables, and do it
          before checking for executables.

closes: #20687

Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0758: pum: No opacity when background not set for Popup menu group v9.2.0758
Shad [Tue, 30 Jun 2026 18:56:46 +0000 (18:56 +0000)] 
patch 9.2.0758: pum: No opacity when background not set for Popup menu group

Problem:  pum: When the Pmenu highlight group has no guibg/ctermbg the
          popup menu becomes fully transparent.
Solution: Create an entry if no popup_attr exists (highlight group
          cleared for example), and test if popup_attr exists but
          without guibg/ctermbg attributes to fallback to normal bg
          color. Similar to patch 9.2.0602 for popup window (Shad).

closes: #20638

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Shad <shadow.walker@free.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0757: tests: test_popupwin fails with zsh because of the prompt v9.2.0757
Christian Brabandt [Tue, 30 Jun 2026 18:38:14 +0000 (18:38 +0000)] 
patch 9.2.0757: tests: test_popupwin fails with zsh because of the prompt

Problem:  tests: test_popupwin fails with zsh: it asserts against screen
          cells next to the cursor, which break when zsh draws its own
          prompt.
Solution: Pass an env dict to term_start() clearing $HOME and $PS1
          and assert against term_getline() instead of screenstring().
          While at it fix indentation.

closes: #20664

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0756: Session with multiple tabpages sets 'winminheight' to 0 v9.2.0756
zeertzjq [Tue, 30 Jun 2026 18:34:12 +0000 (18:34 +0000)] 
patch 9.2.0756: Session with multiple tabpages sets 'winminheight' to 0

Problem:  Session with multiple tabpages sets 'winminheight' to 0.
Solution: Only save 'winminheight' and 'winminwidth' once (zeertzjq).

related: #8119
related: neovim/neovim#40493
closes: #20673

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0755: 'autocomplete' behaves inconsistently when recording v9.2.0755
zeertzjq [Tue, 30 Jun 2026 18:27:55 +0000 (18:27 +0000)] 
patch 9.2.0755: 'autocomplete' behaves inconsistently when recording

Problem:  If 'autocompletedelay' is non-zero, 'autocomplete' doesn't
          work when recording a register (after 9.2.0750).
Solution: Still produce K_COMPLETE_DELAY when recording a register, and
          drop it in gotchars_add_byte() instead (zeertzjq).

This patch only changes the behavior when recording a register.
Replaying a register with 'autocomplete' still doesn't fully work
regardless of 'autocompletedelay', as 'autocomplete' isn't triggered
when there is pending input.

closes: #20675

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0754: repeated completion length lookup in search_for_exact_line v9.2.0754
glepnir [Mon, 29 Jun 2026 22:37:25 +0000 (22:37 +0000)] 
patch 9.2.0754: repeated completion length lookup in search_for_exact_line

Problem:  search_for_exact_line() repeatedly calls ins_compl_len() and
          relies on ternary operator precedence.
Solution: Cache the completion length and parenthesize the ternary
          expression.

closes: #20678

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0753: GTK GUI deferred redraw skipped on 'lazyredraw' v9.2.0753
Christoffer Aasted [Mon, 29 Jun 2026 22:28:52 +0000 (22:28 +0000)] 
patch 9.2.0753: GTK GUI deferred redraw skipped on 'lazyredraw'

Problem:  GTK GUI deferred redraw skipped on 'lazyredraw'
Solution: Drop the redrawing() condition so a redraw is
          flushed regardless of 'lazyredraw'
          (Christoffer Aasted)

related: #20528
closes:  #20677

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime: add missing fnameescape()/shellescape() in a few runtime files
Yasuhiro Matsumoto [Mon, 29 Jun 2026 21:45:53 +0000 (21:45 +0000)] 
runtime: add missing fnameescape()/shellescape() in a few runtime files

ping @jamessan for the debugchangelog change.

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0752: GTK4: drag-and-drop does not support HTML v9.2.0752
Foxe Chen [Mon, 29 Jun 2026 21:11:23 +0000 (21:11 +0000)] 
patch 9.2.0752: GTK4: drag-and-drop does not support HTML

Problem:  In the GTK4 GUI drag-and-drop does not support HTML.
Solution: Refactor GTK 4 drag-and-drop and clipboard handling.

closes: #20637

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0751: GTK3 GUI is slow under Wayland v9.2.0751
Christoffer Aasted [Mon, 29 Jun 2026 21:04:52 +0000 (21:04 +0000)] 
patch 9.2.0751: GTK3 GUI is slow under Wayland

Problem:  GTK3 GUI redraws are slow under Wayland because each draw
          operation queues its own draw area.
Solution: Defer redraws under Wayland: coalesce dirty rectangles and
          flush them once in gui_mch_flush(), route draw calls through a
          queue_draw_area() wrapper (Christoffer Aasted)

closes: #20528

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agotranslation(ru): Updated message files
RestorerZ [Mon, 29 Jun 2026 21:00:06 +0000 (21:00 +0000)] 
translation(ru): Updated message files

closes: #20671

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0750: completion: 'autocompletedelay' deferral leaks state v9.2.0750
Hirohito Higashi [Sun, 28 Jun 2026 19:48:02 +0000 (19:48 +0000)] 
patch 9.2.0750: completion: 'autocompletedelay' deferral leaks state

Problem:  After 'autocompletedelay' was made non-blocking, the deferred
          popup can misbehave: a pending autocomplete survives leaving
          Insert mode and then keeps waking the editor in Normal mode,
          the deferral is recorded into registers while recording a
          macro, the popup appears an extra 'updatetime' late when
          'autocompletedelay' is larger and a CursorHoldI autocommand
          exists, CursorHoldI can fire twice without an intervening
          keypress, and an open balloon is dismissed (after v9.2.0739)
Solution: Treat the deferral like CursorHold: only keep it pending in
          Insert mode and not while recording, with pending typeahead,
          or when completion is already active; drop it when Insert mode
          ends; measure the delay from when the user typed so a
          CursorHold in between does not push the popup back; and do not
          let the deferral re-enable CursorHoldI or dismiss the balloon.
          (Hirohito Higashi).

closes: #20669

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>
3 weeks agopatch 9.2.0749: 'autocompletedelay' interferes with i_CTRL-K v9.2.0749
zeertzjq [Sun, 28 Jun 2026 19:30:58 +0000 (19:30 +0000)] 
patch 9.2.0749: 'autocompletedelay' interferes with i_CTRL-K

Problem:  'autocompletedelay' interferes with i_CTRL-K (after 9.2.0739).
Solution: Clear the pending autocompltion from the previous key when a
          new key is typed.

closes: #20666

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0748: 'autocompletedelay' interferes with CTRL-G U v9.2.0748
zeertzjq [Sun, 28 Jun 2026 19:27:31 +0000 (19:27 +0000)] 
patch 9.2.0748: 'autocompletedelay' interferes with CTRL-G U

Problem:  'autocompletedelay' interferes with CTRL-G U (after 9.2.0739).
Solution: Restore the flag for CTRL-G U.

related: #8937
related: #20666

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(netrw): Use consistent forward slashes
Christian Brabandt [Sun, 28 Jun 2026 19:00:30 +0000 (19:00 +0000)] 
runtime(netrw): Use consistent forward slashes

fixes:  #20636
closes: #20663

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0747: cscope: connection leak when growing the array fails v9.2.0747
Christian Brabandt [Sun, 28 Jun 2026 18:57:22 +0000 (18:57 +0000)] 
patch 9.2.0747: cscope: connection leak when growing the array fails

Problem:  In cs_insert_filelist() a failed vim_realloc() when growing the
          csinfo[] array frees the array and resets csinfo/csinfo_size,
          discarding the still-open existing connections: their fname,
          ppath and flags are leaked and the cscope child processes are
          orphaned, since cs_end()/cs_reset() can no longer reach them.
          (Ao Xijie)
Solution: On realloc() failure keep the original array, which is still
          valid, and only fail to add the new database.

closes: #20662

Supported by AI.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0746: NULL pointer dereference in gui_photon v9.2.0746
Christian Brabandt [Sun, 28 Jun 2026 18:53:06 +0000 (18:53 +0000)] 
patch 9.2.0746: NULL pointer dereference in gui_photon

Problem:  NULL pointer dereference in gui_photon (Ao Xijie)
Solution: after realloc() validate the buffer is not NULL.

closes: #20661

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0745: Crash with truncated spellfile v9.2.0745
Christian Brabandt [Sun, 28 Jun 2026 18:49:06 +0000 (18:49 +0000)] 
patch 9.2.0745: Crash with truncated spellfile

Problem:  Crash when reading truncated spellfile (MarkLee131)
Solution: Set sl_sofo to TRUE in set_sofo() once sl_sal has been
          converted to the soundfold layout.

Supported by AI.

closes: #20660

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0744: popup_atcursor() closes immediately on white space v9.2.0744
Yasuhiro Matsumoto [Sun, 28 Jun 2026 18:43:03 +0000 (18:43 +0000)] 
patch 9.2.0744: popup_atcursor() closes immediately on white space

Problem:  popup_atcursor() closes immediately on white space (Mao-Yining)
Solution: Set w_popup_mincol and w_popup_maxcol to the cursor column
          (Yasuhiro Matsumoto)

When the cursor is on white space find_ident_under_cursor() skips forward
to the next word, so the moved range did not cover the cursor column and
popup_check_cursor_pos() closed the popup right away.  Keep the cursor
column in that case.

fixes:  #20652
closes: #20659

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>