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)
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>
Shane Harper [Sun, 28 Jun 2026 17:24:04 +0000 (17:24 +0000)]
patch 9.2.0743: string macros silently accept a size of the wrong type
Problem: Several string and memory wrapper macros cast their size
argument to size_t although the wrapped function's prototype
already declares that parameter size_t; such casts silence the
warning a compiler would otherwise give when a value of the
wrong type, such as a pointer, is passed as the size.
Solution: Where the wrapped function's prototype already declares the
parameter size_t, remove the cast so that a size argument of
the wrong type can be reported at compile time (K.Takata,
Shane Harper).
From gcc 14 on, -Wint-conversion is an error by default.
With gcc, passing a signed value where size_t is expected triggers
-Wsign-conversion, but the check is off by default and the build already
emits many such warnings.
related: #20642
closes: #20656
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>
Doug Kearns [Sun, 28 Jun 2026 17:22:16 +0000 (17:22 +0000)]
runtime(vim): Fix heredoc triggering misidentifcation of Vim9 script
The following let-heredoc can cause legacy scripts to be misidentified
as Vim9 script if it appears early in the file. Only match :vim9script
at the start of a line where it sensibly belongs.
let x =<< trim LINES
vim9script
...
LINES
fixes: #20647 (reported by Maxim Kim).
closes: #20654
Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.2.0742: filetype: SSH keys and related filetypes not recognized
Problem: filetype: SSH keys and related filetypes not recognized
Solution: Detect sshpublickey, sshknownhosts sshauthorizedkeys and
sshallowedsigners filetypes, add syntax scripts for those
filetypes (Fionn Fitzmaurice)
This adds syntax highlighting for SSH public keys, as well as related
filetypes derived from this (SSH authorized keys, SSH known hosts and
SSH allowed signers).
Also add filetype detection based on the path and name.
closes: #20635
Signed-off-by: Fionn Fitzmaurice <git@fionn.computer> Signed-off-by: Christian Brabandt <cb@256bit.org>
Jay Sitter [Sun, 28 Jun 2026 16:59:26 +0000 (16:59 +0000)]
runtime(css): add more missing CSS properties
This is defined in the 'CSS Overflow Module Level 3' spec[1] and
supported by recent versions of all browsers reported by MDN[2], see the
MDN page also for the available values.
Co-Authored-by: Matthew Hughes <matthewhughes934@gmail.com> Signed-off-by: Jay Sitter <jay@jaysitter.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
glepnir [Sun, 28 Jun 2026 16:51:26 +0000 (16:51 +0000)]
patch 9.2.0741: complete_check() does not return TRUE for mapped input
Problem: Mapped typed keys didn't interrupt completion in
complete_check() (Yikai Zhao)
Solution: Also interrupt when in_compl_func and not replaying a register.
(glepnir)
closes: #5547
closes: #20643
Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Hirohito Higashi [Sun, 28 Jun 2026 16:24:13 +0000 (16:24 +0000)]
patch 9.2.0739: completion: 'autocompletedelay' blocks the main loop and drops autocommands
Problem: With a non-zero 'autocompletedelay', Insert-mode autocommands
(TextChangedI, TextChangedP, CursorMovedI) are delayed, and
while typing faster than the delay they are dropped entirely,
because the delay blocks the main loop.
Solution: Make 'autocompletedelay' non-blocking: instead of busy-waiting
before showing the popup menu, defer it with an input-wait
timeout (K_COMPLETE_DELAY) modeled on CursorHoldI, so typing
stays responsive and the Insert-mode autocommands fire normally.
The delay timer coexists with 'updatetime': the main loop waits for the
sooner of the two and triggers the event whose deadline was reached, so
'autocompletedelay' no longer shadows CursorHold timing. Changing the
completion leader, for example with Backspace, updates the visible popup
immediately like a zero delay; only the first popup is deferred.
Update the 'autocompletedelay' screendumps for the non-blocking display.
One test opened the menu with CTRL-N right after the delay expired and
could race with the deferred popup, so it now waits a little longer than
the delay before sending the key.
fixes: #20591
closes: #20598
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>
Normalize the 15 existing guards to the documented two-level form
get(g:, 'X_recommended_style', get(g:, 'filetype_recommended_style', 1)):
fix the two non-standard "!exists() || != 0" guards (python, arduino) and
tolk's wrong fallback variable, and convert the simple one-level guards.
Add the guard to filetype plugins that set stylistic indentation/format
options without one: aap, abap, ada, cabal, cobol, elixir, falcon,
graphql, heex, idris2, mermaid, occam, racket, scala, swift, tera.
Settings that are required rather than stylistic are left untouched, e.g.
make/gomod/scdoc (mandatory tabs), chatito and vroom (indent mandated by
the format), and the textwidth/formatoptions cases in gitcommit/help/
jjdescription.
Supported by AI.
fixes: #20036
closes: #20650
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.2.0738: ml_recover() may write beyond block buffer
Problem: A crafted swap file can cause an out-of-bounds write during
recovery when the same block is referenced twice with
different pe_page_count values (cipher-creator)
Solution: Check hp->bh_page_count against page_count after mf_get() and
clamp page_count to the actual block size.
Hirohito Higashi [Fri, 26 Jun 2026 11:07:01 +0000 (20:07 +0900)]
patch 9.2.0736: potential command execution in PHP omni-completion
Problem: With PHP omni-completion, a crafted file can potentially
execute arbitrary commands when completing a class member.
Solution: Quote the class name before inserting it into the search()
pattern run via win_execute().
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>
Hirohito Higashi [Fri, 26 Jun 2026 06:41:24 +0000 (15:41 +0900)]
patch 9.2.0735: [security]: arbitrary Ex command execution during C omni-completion
Problem: [security]: With C omni-completion, a crafted tags file can execute
arbitrary Ex commands when completing a struct/union member
(cipher-creator)
Solution: Escape the type field before inserting it into the :vimgrep
pattern so it cannot close the pattern and start a new command
(Hirohito Higashi).
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>
Shane Harper [Fri, 26 Jun 2026 20:45:25 +0000 (20:45 +0000)]
patch 9.2.0734: function pointer passed to STRNCMP() instead of a length
Problem: In the popup 'close' option-value completion check, a function
pointer (the address of close()) was passed as STRNCMP()'s
third argument instead of the string length.
Solution: Pass the length (close_len). (Shane Harper)
The user-visible effect was negligible: ":set completepopup=close:o<Tab>"
offered no completions instead of "on" and "off".
closes: #20642
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>
Hirohito Higashi [Fri, 26 Jun 2026 20:19:50 +0000 (20:19 +0000)]
patch 9.2.0733: GTK3: GUI slow on X11 since dropping the alpha channel
Problem: With the GTK3 GUI, scrolling and moving the window are slow on
X11 on setups where the accelerated drawing path expects an
ARGB surface (after v9.2.0646)
Solution: Choose the offscreen surface content per display backend: keep the
alpha-less surface on Wayland, where it avoids needless alpha
compositing, and use an ARGB surface on X11 again, which is the
accelerated path there, restoring the speed (Hirohito Higashi).
fixes: #20603
closes: #20634
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>
Foxe Chen [Fri, 26 Jun 2026 20:12:56 +0000 (20:12 +0000)]
patch 9.2.0732: session: terminal restored using absolute columns/rows
Problem: session: terminal restored using absolute columns/row values
Solution: Implement proportional scaling using the new rows and column
values (Foxe Chen).
closes: #20627
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Foxe Chen [Fri, 26 Jun 2026 20:09:48 +0000 (20:09 +0000)]
patch 9.2.0731: GTK4 GUI scrollbar size not updated when restoring a session
Problem: GTK4 GUI scrollbar size not updated when restoring a session
Solution: In vim_form_move_resize() queue a resize for a hidden widget
(Foxe Chen).
closes: #20633
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Barrett Ruth [Fri, 26 Jun 2026 19:46:11 +0000 (19:46 +0000)]
patch 9.2.0729: % skips parens on continued quoted lines
Problem: The "%" command and bracket/text-object motions can skip the
matching paren or bracket on a line with quotes and a trailing
backslash.
Solution: Use the quote state at the search start when an odd-quote line
is continued with a backslash, instead of always treating the
search as starting in quotes (Barrett Ruth).
closes: #20631
Signed-off-by: Barrett Ruth <br@barrettruth.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
glepnir [Wed, 24 Jun 2026 20:37:21 +0000 (20:37 +0000)]
patch 9.2.0726: filetype detect missing from completion
Problem: ":filetype detect" is a valid command but not offered by
command-line completion.
Solution: Add "detect" to the completion candidates (glepnir)
closes: #20625
Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Hirohito Higashi [Mon, 22 Jun 2026 04:00:36 +0000 (13:00 +0900)]
patch 9.2.0725: [security]: Stack out-of-bounds write in spell_soundfold_sal()
Problem: [security]: A crafted spell file with non-collapsing SAL rules
can make soundfold() write one byte past the end of the
MAXWLEN result buffer. This is the same class of
out-of-bounds write as GHSA-q8mh-6qm3-25g4 (fixed in 9.2.0698
for the SOFO branch), found while auditing the surrounding
code.
Solution: Bound the single-byte SAL result writes and the terminating
NUL to MAXWLEN - 1, matching the SOFO branch.
The single-byte branch of spell_soundfold_sal() guarded its writes with
"reslen < MAXWLEN", allowing reslen to reach MAXWLEN (254). The trailing
"res[reslen] = NUL" then wrote at index 254 of the 254-byte stack buffer
res[MAXWLEN], an off-by-one out-of-bounds write. Input is case-folded to
about 253 characters, so a 253-character argument together with a SAL map
that does not collapse (collapse_result false) reaches the boundary.
Related to previous issue
[GHSA-q8mh-6qm3-25g4](https://github.com/vim/vim/security/advisories/GHSA-q8mh-6qm3-25g4)
(9.2.0698)
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>
Foxe Chen [Wed, 24 Jun 2026 18:57:35 +0000 (18:57 +0000)]
patch 9.2.0722: GTK4: find/replace dialog can be improved
Problem: GTK4: find/replace dialog can be improved
Solution: Store the action buttons in the dialog struct, update their
sensitivity when the search field changes, close the dialog on
Escape and set the dialog's default widget (Foxe Chen)
closes: #20613
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Foxe Chen [Wed, 24 Jun 2026 18:40:50 +0000 (18:40 +0000)]
patch 9.2.0721: serverlist() returns strings separated by \n
Problem: serverlist() returns strings separated by \n
(Christian J. Robinson)
Solution: Return a list of server names when given the
option dict argument (Foxe Chen).
fixes: #20582
closes: #20601
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Foxe Chen [Wed, 24 Jun 2026 18:19:53 +0000 (18:19 +0000)]
patch 9.2.0719: GTK4: default menu is lacking
Problem: GTK4: default menu is lacking: accelerator
text is not shown, mnemonics and 'winaltkeys' do not work
Solution: Replace the GMenuModel-based menus with a custom widget set
(VimMenuBar, VimMenuBarItem, VimMenu, VimMenuItem) in a new
gui_gtk4_menu.c, modelled on the GTK3 menu bar: show accelerator
text, support mnemonics and 'winaltkeys', add keyboard
navigation, instant tooltips, and the popup and F10 menus, and
implement the previously stubbed menu functions (Foxe Chen).
closes: #20593
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Dmytro Meleshko [Wed, 24 Jun 2026 17:51:22 +0000 (17:51 +0000)]
patch 9.2.0718: :syn sync without an argument also lists syntax cluster
Problem: :syn sync without an argument also lists every defined cluster
Solution: Fix control flow in syn_cmd_list() so that only the syncing
items are printed when this function gets called by :syn sync.
(dmitmel)
closes: #20614
Signed-off-by: Dmytro Meleshko <dmytro.meleshko@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
config:
~/.local/share/supertux2/config: supertux config
https://github.com/SuperTux/supertux/wiki/S-Expression#supertux-config-file
*.stsg: supertux save game
Hirohito Higashi [Tue, 23 Jun 2026 21:02:46 +0000 (21:02 +0000)]
patch 9.2.0713: completion: ruler not updated correctly when the popup menu is visible
Problem: While the insert-mode completion popup menu is visible, the
ruler - and the ruler shown in a status line when 'laststatus'
is set - shows the column where the completion started instead
of the real cursor column. With a status line the ruler can
also stay at the column from before the completion until the
next key is pressed.
Solution: Position the popup menu at the completion start column without
moving the cursor there, so the ruler keeps reflecting the
real cursor column. Also mark the status line for redraw
before the menu is shown, so its ruler is updated for the real
cursor column while the menu is visible.
closes: #20626
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>
Foxe Chen [Tue, 23 Jun 2026 20:03:31 +0000 (20:03 +0000)]
patch 9.2.0710: GTK4 GUI resize handling can be improved
Problem: GTK4 GUI resize handling can be improved
Solution: Remove the resize debounce, set the draw area's size request
in gui_mch_set_text_area_pos() via vim_form_move_resize()
(Foxe Chen).
reverts: #20327
closes: #20486
Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Barrett Ruth [Mon, 22 Jun 2026 20:13:22 +0000 (20:13 +0000)]
patch 9.2.0707: completion: popup misplaced when text before it is concealed
Problem: When the cursor line has concealed text before the start of the
completion, the insert-mode completion popup is drawn at the wrong
screen column and the cursor no longer lines up with the completed
text.
Solution: Record the concealed width before the cursor on its screen line in
a new `win_T` field while `win_line()` draws it, subtract it in
`pum_display()` to place the menu over the visible text, and redraw
the cursor line so `win_line()` corrects the cursor too.
closes: #20539
Signed-off-by: Barrett Ruth <br@barrettruth.com> Signed-off-by: Christian Brabandt <cb@256bit.org>