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>
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>
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>
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>
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>
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>
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>
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>
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).
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>
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>
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>
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.
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)
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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)
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>
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>
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)
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).
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>
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>
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>
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
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.
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
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.
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.
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>
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>
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>
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>
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>
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>
* 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
-----------------------------------------------------------
- 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>
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>
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>
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>
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.
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>
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>
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>
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>
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>
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>
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.
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.
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>