]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
3 days agoCI: Bump the github-actions group across 1 directory with 2 updates dependabot/github_actions/github-actions-266aa57830 20749/head
dependabot[bot] [Sat, 11 Jul 2026 02:34:02 +0000 (02:34 +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
...

Signed-off-by: dependabot[bot] <support@github.com>
11 days agopatch 9.2.0782: tests: missing cleanup in test_mksession.vim master 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>
11 days 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>
11 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
12 days 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>
13 days 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>
12 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
13 days 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 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>
2 weeks agoruntime(odin): Update indent script, add indent tests
Maxim Kim [Sun, 28 Jun 2026 17:30:30 +0000 (17:30 +0000)] 
runtime(odin): Update indent script, add indent tests

following odin code is incorrectly indented:

        ...
            fmt.println("Hellope")
        }

        // Fallthrough statement

    // fallthrough can be used to explicitly fall through into the next case block:

closes: 20658

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: MS-Windows: Run gvim/vim tests in parallel
K.Takata [Sun, 28 Jun 2026 17:28:17 +0000 (17:28 +0000)] 
CI: MS-Windows: Run gvim/vim tests in parallel

https://github.blog/changelog/2026-06-25-actions-steps-can-now-be-run-in-parallel/

closes: #20655

Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0743: string macros silently accept a size of the wrong type v9.2.0743
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>
2 weeks agoruntime(vim): Fix heredoc triggering misidentifcation of Vim9 script
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>
2 weeks agopatch 9.2.0742: filetype: SSH keys and related filetypes not recognized v9.2.0742
Fionn Fitzmaurice [Sun, 28 Jun 2026 17:04:55 +0000 (17:04 +0000)] 
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>
2 weeks agoruntime(css): add more missing CSS properties
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.

Link: https://drafts.csswg.org/css-overflow/#scrollbar-gutter-property
Link: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/scrollbar-gutter#browser_compatibility
related: #20639
closes:  #20653

Co-Authored-by: Matthew Hughes <matthewhughes934@gmail.com>
Signed-off-by: Jay Sitter <jay@jaysitter.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0741: complete_check() does not return TRUE for mapped input v9.2.0741
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>
2 weeks agopatch 9.2.0740: GTK4: scrollbar wrongly displayed v9.2.0740
Foxe Chen [Sun, 28 Jun 2026 16:46:50 +0000 (16:46 +0000)] 
patch 9.2.0740: GTK4: scrollbar wrongly displayed

Problem:  GTK4: scrollbar wrongly displayed
Solution: Calculate scrollbar size in gui_mch_enable_scrollbar for gtk4
          gui (Foxe Chen)

closes: #20628

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0739: completion: 'autocompletedelay' blocks the main loop and drops autoco... v9.2.0739
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>
2 weeks agoruntime: guard recommended style settings consistently
Christian Brabandt [Sun, 28 Jun 2026 16:18:45 +0000 (16:18 +0000)] 
runtime: guard recommended style settings consistently

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>
2 weeks agopatch 9.2.0738: ml_recover() may write beyond block buffer v9.2.0738
Christian Brabandt [Sat, 27 Jun 2026 08:39:43 +0000 (08:39 +0000)] 
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.

closes: #20645

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Bump actions/checkout in the github-actions group across 1 directory
dependabot[bot] [Sat, 27 Jun 2026 08:38:13 +0000 (08:38 +0000)] 
CI: Bump actions/checkout in the github-actions group across 1 directory

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

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

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

closes: #20646

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0737: tests: comment test can be improved v9.2.0737
Maxim Kim [Sat, 27 Jun 2026 08:35:08 +0000 (08:35 +0000)] 
patch 9.2.0737: tests: comment test can be improved

Problem:  tests: comment test can be improved
Solution: Simplify tests (Maxim Kim)

Currently test suite for the comment package uses separate vim in
terminal to do tests, which is inefficient and unnecessary complex.

The reason is the comment.Toggle() uses '<stack>' to get function name
for the opfunc and this fools vim's test runner.

- use lambda func for opfunc inside Toggle()
- simplify tests not to use terminal

closes: #20649

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0736: potential command execution in PHP omni-completion v9.2.0736
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>
2 weeks agopatch 9.2.0735: [security]: arbitrary Ex command execution during C omni-completion v9.2.0735
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).

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-mf92-v4xw-j45x

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Tweak documentation style and typo
Hirohito Higashi [Fri, 26 Jun 2026 20:54:47 +0000 (20:54 +0000)] 
runtime(doc): Tweak documentation style and typo

closes: #20644

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0734: function pointer passed to STRNCMP() instead of a length v9.2.0734
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>
2 weeks agoruntime(cabal): Update compiler, ftplugin, syntax, add indent script
Mateo Gjika [Fri, 26 Jun 2026 20:29:50 +0000 (20:29 +0000)] 
runtime(cabal): Update compiler, ftplugin, syntax, add indent script

closes: #20623

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0733: GTK3: GUI slow on X11 since dropping the alpha channel v9.2.0733
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>
2 weeks agopatch 9.2.0732: session: terminal restored using absolute columns/rows v9.2.0732
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>
2 weeks agopatch 9.2.0731: GTK4 GUI scrollbar size not updated when restoring a session v9.2.0731
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>
2 weeks agopatch 9.2.0730: GTK4 GUI tabline is not updated v9.2.0730
Foxe Chen [Fri, 26 Jun 2026 20:06:25 +0000 (20:06 +0000)] 
patch 9.2.0730: GTK4 GUI tabline is not updated

Problem:  GTK4 GUI tabline is not updated
Solution: Call gui_mch_update() in gui_mch_show_tabline(), matching the
          GTK3 GUI (Foxe Chen).

related: #20633

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0729: % skips parens on continued quoted lines v9.2.0729
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>
2 weeks agoruntime(doc): Add installer updates to version9.txt
K.Takata [Fri, 26 Jun 2026 19:16:25 +0000 (19:16 +0000)] 
runtime(doc): Add installer updates to version9.txt

The NSIS installer has been reworked in https://github.com/vim/vim-win32-installer/pull/457.
Add the updates to version9.txt.

closes: #20630

Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0728: filetype: supertux info pattern is relative to current dir v9.2.0728
zeertzjq [Fri, 26 Jun 2026 19:03:59 +0000 (19:03 +0000)] 
patch 9.2.0728: filetype: supertux info pattern is relative to current dir

Problem:  filetype: supertux info pattern is relative to current
          directory (after 9.2.0716).
Solution: Add `*/` to the start of the pattern (zeertzjq)

closes: #20629

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0727: popup images not rendered correctly when unfocused v9.2.0727
Christoffer Aasted [Wed, 24 Jun 2026 20:44:15 +0000 (20:44 +0000)] 
patch 9.2.0727: popup images not rendered correctly when unfocused

Problem:  popup images not rendered correctly when unfocused
Solution: Avoid refreshing on update_cursor() calls, silence GTK2
          deprecation warnings (Christoffer Aasted)

closes: #20610

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0726: filetype detect missing from completion v9.2.0726
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>
2 weeks agopatch 9.2.0725: [security]: Stack out-of-bounds write in spell_soundfold_sal() v9.2.0725
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)

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-m3hf-xcm3-xhm2

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.0724: Use-after-free when freeing exit_cb job on exit v9.2.0724
Foxe Chen [Wed, 24 Jun 2026 19:40:51 +0000 (19:40 +0000)] 
patch 9.2.0724: Use-after-free when freeing exit_cb job on exit

Problem:  Use-after-free when freeing exit_cb job on exit
Solution: Return when def_functions has been freed already
          (Foxe Chen)

closes: #20621

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0723: term_start() does not support "noclose" v9.2.0723
Foxe Chen [Wed, 24 Jun 2026 19:35:59 +0000 (19:35 +0000)] 
patch 9.2.0723: term_start() does not support "noclose"

Problem:  term_start() does not support "noclose"
Solution: Add support for "noclose" for the "term_finish" option of
          term_start() (Foxe Chen)

closes: #20620

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0722: GTK4: find/replace dialog can be improved v9.2.0722
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>
2 weeks agopatch 9.2.0721: serverlist() returns strings separated by \n v9.2.0721
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>
2 weeks agopatch 9.2.0720: GTK4: no support for browsefilter v9.2.0720
Foxe Chen [Wed, 24 Jun 2026 18:29:23 +0000 (18:29 +0000)] 
patch 9.2.0720: GTK4: no support for browsefilter

Problem:  GTK4: no support for browsefilter
Solution: Add browsefilter support (Foxe Chen)

closes: #20612

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0719: GTK4: default menu is lacking v9.2.0719
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>
2 weeks agopatch 9.2.0718: :syn sync without an argument also lists syntax cluster v9.2.0718
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>
2 weeks agopatch 9.2.0717: tests: strange indent in Test_autocmd_dup_arg() v9.2.0717
zeertzjq [Wed, 24 Jun 2026 17:45:48 +0000 (17:45 +0000)] 
patch 9.2.0717: tests: strange indent in Test_autocmd_dup_arg()

Problem:  tests: strange indent in Test_autocmd_dup_arg()
          (after v9.2.0708)
Solution: Indent using the settings in the modeline.

closes: #20619

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0716: filetype: not all supertux files are recognized v9.2.0716
Wu, Zhenyu [Wed, 24 Jun 2026 17:34:25 +0000 (17:34 +0000)] 
patch 9.2.0716: filetype: not all supertux files are recognized

Problem:  filetype: not all supertux files are recognized
Solution: Detect more supertux related files as scheme filetype
          (Wu Zhenyu)

levels:
*.stwm: supertux world map
https://github.com/SuperTux/supertux/wiki/Worldmap-Format
*.stl: supertux level
https://github.com/SuperTux/supertux/wiki/Level-Format
*.stxt: supertux scrolling texts
https://github.com/SuperTux/supertux/wiki/File_formats#scrolling-texts

images:
*.sprite: supertux sprite
https://github.com/SuperTux/supertux/wiki/Sprite
*.strf: supertux tileset
https://github.com/SuperTux/supertux/wiki/Tileset
*.satc: supertux autotiles configuration
*.stcd: supertux converter data

font:
*.stf: supetux font

particles:
*.stcp: supertux custom particle

music:
*.music: supertux music

config:
~/.local/share/supertux2/config: supertux config
https://github.com/SuperTux/supertux/wiki/S-Expression#supertux-config-file
*.stsg: supertux save game

info:
info: https://github.com/SuperTux/supertux/wiki/File_formats#level-subsets

related: #16287
closes:  #20615

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0715: Coverity warns about copy/paste error in hl_blend_attr() v9.2.0715
Christian Brabandt [Wed, 24 Jun 2026 17:30:22 +0000 (17:30 +0000)] 
patch 9.2.0715: Coverity warns about copy/paste error in hl_blend_attr()

Problem:  Coverity warns about copy/paste error in hl_blend_attr()
Solution: Use foreground color instead, regenerate dump

closes: #20624

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0714: Coverity warns for NULL deref v9.2.0714
Christian Brabandt [Wed, 24 Jun 2026 17:29:22 +0000 (17:29 +0000)] 
patch 9.2.0714: Coverity warns for NULL deref

Problem:  Coverity warns for NULL dereference in f_remote_startserver()
Solution: Return early if the server name is null.

related: #20624

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0713: completion: ruler not updated correctly when the popup menu is visible v9.2.0713
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>
3 weeks agopatch 9.2.0712: GTK4: dialogs not handling mnemonics correctly v9.2.0712
Foxe Chen [Tue, 23 Jun 2026 20:32:43 +0000 (20:32 +0000)] 
patch 9.2.0712: GTK4: dialogs not handling mnemonics correctly

Problem:  GTK4: dialogs not handling mnemonics correctly
Solution: Allow using mnemonics without alt key (Foxe Chen).

closes: #20618

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0711: leak in ins_compl_infercase_gettext() in error case v9.2.0711
Christian Brabandt [Tue, 23 Jun 2026 20:16:49 +0000 (20:16 +0000)] 
patch 9.2.0711: leak in ins_compl_infercase_gettext() in error case

Problem:  leak in ins_compl_infercase_gettext() in error case
          (Cheng)
Solution: free wca before returning.

closes: #20607

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0710: GTK4 GUI resize handling can be improved v9.2.0710
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>
3 weeks agopatch 9.2.0709: GTK4: a few minor issues v9.2.0709
Foxe Chen [Tue, 23 Jun 2026 19:51:54 +0000 (19:51 +0000)] 
patch 9.2.0709: GTK4: a few minor issues

Problem:  GTK4: a few minor issues
Solution: Update docs for 'mouseshape' option, remove unnecessary code,
          respect "v" flag in 'guioptions' (Foxe Chen)

closes: #20609

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0708: Leaks in do_autocmd in error case v9.2.0708
Christian Brabandt [Tue, 23 Jun 2026 19:44:48 +0000 (19:44 +0000)] 
patch 9.2.0708: Leaks in do_autocmd in error case

Problem:  Leak in do_autocmd in error case (Cheng)
Solution: goto err_exit in the error case and clean up, make the double
          ++once an actual error

closes: #20606

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(dnsmasq): add new keywords and order existing keywords alphabetically
Pooyan Khanjankhani [Tue, 23 Jun 2026 19:22:53 +0000 (19:22 +0000)] 
runtime(dnsmasq): add new keywords and order existing keywords alphabetically

closes: #20616

Signed-off-by: Pooyan Khanjankhani <pooyankhan@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoCI: Restore daily Coverity Scan
Christian Brabandt [Tue, 23 Jun 2026 17:49:27 +0000 (17:49 +0000)] 
CI: Restore daily Coverity Scan

I finally got a note that Coverity is online back again.

This partially reverts commit 0abffbff23adc4ae6e3c78af921a8c9a8cb6670f.
("CI: Remove Cirrus CI and Coverity Scan")

related: #20431

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.2.0707: completion: popup misplaced when text before it is concealed v9.2.0707
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>