Commit Graph

37792 Commits

Author SHA1 Message Date
Christian Clason
b0aadfe12d build(deps): bump tree-sitter and wasmtime (#41411)
* build(deps): bump tree-sitter to baad4174e

* build(deps): bump wasmtime to v48.0.0

Tree-sitter bumped their wasmtime dependency from v36 to v48 (the new LTS), so we must follow suit. This change brings in significant performance improvements for wasm parsers (although they are still significantly slower than native parsers).
2026-08-22 10:14:13 +02:00
Justin M. Keyes
e7eb541580 Merge #41410 from janlazo/vimpatch-na-regexp-escape-fixup 2026-08-22 04:09:41 -04:00
zeertzjq
f9ea56f959 test: fix $NVIM_LOG_FILE from environment being overwritten (#41420)
Instead of setting it in the test runner (which runs in an Nvim instance
that already has a log file), make run_tests.zig set a $NVIM_LOG_FILE
fallback path like what RunTests.cmake does.
2026-08-22 15:58:47 +08:00
Jan Edmund Lazo
39a7b68539 feat(vim-patch): ignore vim-patch tokens from commit list
Sort vimpatch_commit_ignore.txt based on "git log" order
else "diff" fails to filter out reverted vim-patch tokens.
Put latest commit to revert on top of file.
2026-08-21 22:42:45 -04:00
Justin M. Keyes
6423657352 feat(cmdatom)!: eliminate the need for vim-repeat #41414
Problem:
- `lhs` is not fully realized. E.g. for a "payload" mapping
  `lhs` omits the `getchar()` payload during a mapping (vim-surround
  `ds'` reports `lhs="ds"`). This means plugins like vim-repeat are
  still needed...
- The "delta" fields of a CmdAtom are calculated too late.
  - `<abuf>` and `changed` check whatever (wrong) buffer a command
    (":bnext") might land in.
  - CTRL-W_w between two windows on the same buffer reports type="motion".

Solution:
- `CmdOrigin` samples (buf/win/cursor/changedtick) at each "scope" entry
  (CmdFrame, composite, Visual session, insert session).
- `dd<C-w>l` reports `changed=true` for the buffer it edited, regardless
  of where the cursor ends up.
- New fields:
  - `pos`: cursor position at command start.
  - `moved`: indicates whether the cursor moved (in same buffer).
  - `undoseq`: undo state at settlement.
- lhs now includes the payload: "ds)" reports lhs="ds)" instead of "ds".
  - Easy for users to "replay" any atom.
- Rename: type "command" => "normal", "ex" => "excmd"; `arg` => `cmdarg`
- Drop `cascade` field (no reason to expose it)
2026-08-21 13:42:17 -04:00
Christian Clason
8e0e19c08b build(deps): bump luajit to 1ee778a4e 2026-08-21 09:57:19 +02:00
Jan Edmund Lazo
03ec1b37d3 fix(vim-patch): :redrawtabpanel regexp, delay grep on hunk
Too many suggestions in
bcf116cc2f

Multi-line grep on the hunk contents before filtering by hunk header
prevents vim-patch.sh from detecting v8.1.2195 and v8.1.2219 as N/A.

Revisit multi-line parsing for `runtime/doc/*.txt`
when Vim v9.2+ has new runtime/doc/ patches
about features that require "has()/exists()" guards.
2026-08-20 22:20:24 -04:00
zeertzjq
12c3e59e6a vim-patch:76f1eed: runtime(doc): clarify how setbufvar() handles window options (#41408)
related: vim/vim#21089
closes:  vim/vim#21104

76f1eed3a5

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2026-08-21 09:25:40 +08:00
zeertzjq
3733a31cd8 vim-patch:ee1517d: runtime(pov): nested pov comments break highlighting (#41407)
A line comment nested in a block comment (the comment plugin uses a
block comment on every line) break syntax highlighting and shade the
rest of the file as a comment.

closes: vim/vim#21109

ee1517df53

Co-authored-by: Shay Hill <shay_public@hotmail.com>
2026-08-21 09:25:27 +08:00
zeertzjq
eaff5417be vim-patch:9.2.0987: heap-buffer-overflow in spell_suggest() (#41406)
Problem:  Heap-buffer-overflow in spell_suggest() when the cursor is
          beyond the end of the line, because a SpellFileMissing
          autocommand changed the buffer (dvaave2025).
Solution: parse_spelllang() may run autocommands, so validate the cursor
          position and re-take the saved position afterwards.

fixes:  vim/vim#21097
closes: vim/vim#21100

Supported by AI.

6073903cda

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-08-21 08:51:56 +08:00
zeertzjq
af37d459a6 vim-patch:9.2.0985: Multiline messages not visible when mapping starts cmdline (#41405)
Problem:  Multiline messages exceeding 'cmdheight' not visible when a
          mapping starts cmdline immediately after it (after 9.2.0967).
Solution: Revert patch 9.2.0967 and use a different solution (zeertzjq).

fixes:  vim/vim#21098
closes: vim/vim#21101

fb4866a2dd
2026-08-21 07:46:34 +08:00
Marc Maravall Díez
2dd6e9d6a2 refactor(drawline.c): flatten condition #41382 2026-08-20 11:40:42 -04:00
Justin M. Keyes
31de0d69fc fix(cmdatom): lhs not always reported in CmdAtom #41386
Problem:
An unreplayable Visual operation does not emit a CmdAtom event. That's
maybe not super important, but it hints at a flaw in how `vatom`
"voiding" is plumbed: `vatom.state=kVatomVoid` replaces the "kind", so
that info is lost to later parts in the lifecycle.

Solution:
- Define `VatomState` as "flags", so `kVatomVoid` can "poison"
  `vatom.state` without losing its kind flag.
- Unify `lhs`: always report the original user input in `CmdAtom.lhs`,
  for all kinds of user actions: visual, "translated"/"stuffed" cmds,
  and dot-repeat (".") itself.
- Unreplayable Visual atom emits CmdAtom with non-empty `lhs` and empty
  `keys`, like a mapping/macro composite.
2026-08-20 05:18:36 -04:00
github-actions[bot]
bcf116cc2f docs: update version.c #41362
vim-patch:8.1.2195: Vim does not exit when the terminal window is last window
vim-patch:8.1.2219: no autocommand for open window with terminal
vim-patch:8.2.0897: list of functions in patched version is outdated
vim-patch:8.2.3323: Vim9: Cannot use :silent with :endwhile
vim-patch:8.2.3589: failure when "term_rows" of term_start() is an unusual value
vim-patch:8.2.3597: Vim seems to hang when writing a long text to a terminal
vim-patch:8.2.3913: help for expressions does not mention Vim9 syntax
vim-patch:8.2.4153: MS-Windows: Global IME is no longer supported
vim-patch:8.2.4586: Vim9: no error for using lower case name for "func" argument
vim-patch:b09c32003 patch 8.2.4720: ABB Rapid files are not recognized properly
vim-patch:8.2.5000: no patch for documentation updates
vim-patch:eb4904187 release version 9.0
vim-patch:9.0.1818: dynamically linking perl is broken
vim-patch:6ffcc58be runtime(help): Updated documentation on editorconfig
vim-patch:b043ff34c runtime(doc): fix two typos in `vim9.txt` and `options.txt` 
vim-patch:9.0.1994: inconsistent feature description
vim-patch:9.0.2026: win32: python3 dll loading can be improved
vim-patch:3c81f47a0 runtime(doc): correct <PageUp>/<PageDown> behavior in 'wildmenu' 
vim-patch:a5a153475 runtime(doc): small updates to the documentation for varargs
vim-patch:5985879e3 runtime(doc): Fix typos in several documents 
vim-patch:a56f02d82 runtime(doc): missing code formatting in if_pyth.txt
vim-patch:5f5131d77 runtime(doc): clarify bracketed paste mode
vim-patch:08b1c61e8 runtime(doc): clarify terminal capabilities for focus reporting
vim-patch:bee966d3f runtime(doc): clarify `:help inclusion` section
vim-patch:2c5240ec8 runtime(doc): Update usr_51.txt to be more inclusive 
vim-patch:6ffe084e6 runtime(doc): document proper notation of gVim, document vim-security list
vim-patch:ca2eca7c7 runtime(doc): reference 'go-!' inside os_win32.txt for !start
vim-patch:0280c0b9a runtime(doc): sort option-list alphabetically 
vim-patch:c23fc3647 runtime(doc): Update eval.txt 
vim-patch:5872bcb6e runtime(doc): Create Changelog until v9.0.2175 
vim-patch:59df9ad68 runtime(doc): Include Vim9 class features in version9.txt
vim-patch:74512e0ad runtime(doc): Add help tags to items in version9.txt 
vim-patch:0ede5e361 runtime(doc): Update Version9.txt for release 9.1 
vim-patch:6c1afa3d0 runtime(doc): add missing help tags
vim-patch:963fd7d6e runtime(doc): Fix typos in reltime() help. 
vim-patch:7b7672d5c runtime(doc): Fix typos in version9.txt 
vim-patch:9.1.0050: Win32 Keyboard handling is sub-optimal
vim-patch:1b7fbe726 runtime(doc): Update help for Wayland support
vim-patch:ec9c32637 runtime(doc): clarify expand() for :terminal windows
vim-patch:db7622ea8 runtime(doc): Fix typo in usr_41.txt
vim-patch:b1289f19e runtime(doc): Fix typo under *kitty-terminal* in term.txt
vim-patch:0e17f7e97 runtime(doc): clarify close behaviour for :term
vim-patch:7f0bba259 runtime(doc): Improve docs for empty(), len(), and string() on objects
vim-patch:9.1.0233: Vim9: string() output of enum is problematic
vim-patch:957402258 runtime(doc): Fill in a few details regarding :enums 
vim-patch:9.1.0270: a few minor issues to fix
vim-patch:7b0c4b64e runtime(doc): typo in intro.txt
vim-patch:014b7759e runtime(doc): fix typos in starting.txt
vim-patch:a13290f82 runtime(doc): minor fixes to starting.txt
vim-patch:158673680 runtime(doc): minor spell fix in starting.txt
vim-patch:5400a5d42 runtime(comment): include a simple comment toggling plugin
vim-patch:ca4b81a7a runtime(doc): Add tags about lazyloading of menu 
vim-patch:fb745756d runtime(doc): add MsgArea to 'highlight' option description
vim-patch:93e0d2e81 runtime(doc): update vi_diff.txt: add default value for 'flash'
vim-patch:e595e9c31 runtime(doc): clarify instal instructions for comment package
vim-patch:9.1.0417: if_py: find_module has been removed in Python 3.12.0a7
vim-patch:5cf5301e2 runtime(doc): clarify temporary file clean up
vim-patch:5f7571473 runtime(doc): clarify why E195 is returned
vim-patch:d801edfb1 runtime(doc): mention comment plugin at :h 'commentstring'
vim-patch:ce6fe84db runtime(man): update Vim manpage
vim-patch:5674c9a7d runtime(doc): add return type info for Vim function descriptions
vim-patch:c593b9ead runtime(doc): Added definitions of Vim scripts and plugins
vim-patch:c52a85607 runtime(doc): revert unintended formatting changes for termdebug
vim-patch:946f61c40 runtime(doc): clarify when text properties are cleared
vim-patch:84ac2126f runtime(doc): Fix typos in several documents
vim-patch:f0837ba0b runtime(doc): In builtin overview use {buf} as param for appendbufline/setbufline 
vim-patch:950292152 runtime(doc): mention $XDG_CONFIG_HOME instead of $HOME/.config
vim-patch:49ddeefec runtime(doc): add reference to xterm-focus-event from FocusGained/Lost
vim-patch:b3c232215 runtime(doc): Correct shell command to get $VIMRUNTIME into shell
vim-patch:7298565c8 runtime(doc): autocmd_add() accepts a list not a dict
vim-patch:c5e24ee24 runtime(doc): add a note for netrw bug reports
vim-patch:6d6dffa61 runtime(doc): document global insert behavior
vim-patch:03d20aaac runtime(doc): 'cpoptions': Include "z" in the documented default
vim-patch:d24aaa998 runtime(doc): using wrong highlight for UTF-8
vim-patch:e7a4523b0 runtime(doc): fix typo "a xterm" -> "an xterm"
vim-patch:52e7cc26d runtime(doc): tweak documentation style a bit
vim-patch:90e1fe4b7 runtime(doc): fix a few style issues
vim-patch:ff1680722 runtime(doc): Remove mentioning of the voting feature
vim-patch:890f97ce5 runtime(doc): improve typedchar documentation for KeyInputPre autocmd
vim-patch:fd01eb21e runtime(doc): Update outdated man.vim plugin information
vim-patch:82f6134b1 runtime(doc): Update version9.txt and mention $MYVIMDIR
vim-patch:0b2285c96 runtime(doc): Fix typo in :help :hide text
vim-patch:fdd1819b5 runtime(doc): reword and reformat how to use defaults.vim
vim-patch:770b38df4 runtime(doc): fix typo in version9.txt nrformat -> nrformats
vim-patch:8ee0e0b8e runtime(doc): Fix to two-space convention in user manual
vim-patch:738ebfea4 runtime(doc): Fix style in documents
vim-patch:6e56484f0 runtime(doc): correct `vi` registers 1-9 documentation error
vim-patch:015c84ce5 runtime(doc): add missing usr_52 entry to toc
vim-patch:1961cafc9 runtime(doc): mention conversion rules for remote_expr()
vim-patch:5dcee3c72 runtime(doc): link help-writing from write-local-help
vim-patch:539349cb3 runtime(doc): improve the :colorscheme documentation
vim-patch:92b59c628 runtime(doc): Fix wrong Mac default options
vim-patch:d52fb2fab runtime(doc): Clean up minor formatting issues for builtin functions
vim-patch:b3ec5643c runtime(doc): include a TOC Vim9 plugin
vim-patch:6081c1789 runtime(doc): update help-toc description
vim-patch:ac2bb9dfe runtime(doc): add help specific modeline to pi_tutor.txt
vim-patch:39cd9061b runtime(doc): update default value for fillchars option
vim-patch:c9e864047 runtime(doc): Add pi_tutor.txt to help TOC
vim-patch:624bb8361 runtime(doc): Tweak documentation style a bit
vim-patch:18defabae runtime(doc): add a table of supported Operating Systems
vim-patch:dbf231a4b runtime(doc): mention option-backslash at :h CompilerSet
vim-patch:cb34507b5 runtime(doc): add helptag for :HelpToc command
vim-patch:a01148d2c runtime(doc): Expand docs on :! vs. :term
vim-patch:b534e8000 runtime(doc): Tweak documentation style a bit
vim-patch:73785accf runtime(doc): updated version9.txt with changes from v9.1.0905
vim-patch:9.1.0932: new Italian tutor not installed
vim-patch:9c3330de2 runtime(doc): fix some small errors
vim-patch:af0fed598 runtime(doc): Add a note about handling symbolic links in starting.txt
vim-patch:08be9ddc8 runtime(doc): move help tag E1182
vim-patch:ae01b9600 runtime(help): fix typo s/additional/arbitrary/
vim-patch:223d6c0a9 runtime(doc): update version9.txt for bash filetype
vim-patch:f6ba8defc runtime(doc): update for new keyprotocol option value (after v9.1.0969)
vim-patch:6de7191c3 runtime(doc): mention how NUL bytes are handled
vim-patch:34e271b32 runtime(doc): use standard SGR format at :h xterm-true-color
vim-patch:e80f345b5 runtime(doc): Tweak documentation about base64 function
vim-patch:27f2e473e runtime(doc): update index.txt
vim-patch:9598a6369 runtime(doc): add package-<name> helptags for included packages
vim-patch:6472e5836 runtime(doc): fix base64 encode/decode examples
vim-patch:71028a32d runtime(doc): rename last t_BG reference to t_RB
vim-patch:195fcc90d runtime(doc): Tweak documentation style a bit
vim-patch:9.1.1105: Vim9: no support for protected new() method
vim-patch:14e8208d8 runtime(doc): get rid of the titlestring hack for terminal-api
vim-patch:8d67cbfa1 runtime(doc): document vim syntax switches
vim-patch:7db96134c runtime(doc): Update doc 52.6
vim-patch:5f2a95955 runtime(doc): symlinking netrw.txt causes problems during install on Windows
vim-patch:9.1.1230: inconsistent CTRL-C behaviour for popup windows
vim-patch:932a535bf runtime(doc): update and correct str2blob() and blob2str() examples
vim-patch:92e109fc1 runtime(doc): Fix an omission in the documentation.
vim-patch:721be7fd0 runtime(doc): add back help tag "pi_netrw.txt"
vim-patch:1c2f47585 runtime(doc): Update the tuple help text
vim-patch:9.1.1274: Vim9: no support for object<type> as variable type
vim-patch:2afdb3a65 runtime(doc): Fix minor typo in options.txt
vim-patch:2525573de runtime(doc): rename wrong option to 'pummaxwidth'
vim-patch:0ed11ba22 runtime(doc): Tweak documentation style a bit
vim-patch:f39de6060 runtime(doc): style: clarify to prefer 2 spaces after a sentence
vim-patch:b753d80e5 runtime(doc): clarify return type for findfile()/finddir()
vim-patch:ba0062b0c runtime(helptoc): the helptoc package can be improved
vim-patch:9.1.1368: GTK3 and GTK4 will drop numeric cursor support.
vim-patch:ba19b6589 runtime(doc): fix typo in description of :redrawtabpanel
vim-patch:9.1.1418: configures GUI auto detection favors GTK2
vim-patch:d65cdadb7 runtime(doc): Fix typos and language in documentation for tabpanel.
vim-patch:6b2c1ad05 runtime(doc): clarify behaviour of set maxcombine=0
vim-patch:8f7256a5e runtime(doc): fix some style issues and remove obsolete docs
vim-patch:b657310bd runtime(doc): Fix modeline in wayland.txt
vim-patch:651edf33e runtime(doc): Tweak documentation style
vim-patch:57d6d0043 runtime(doc): Add documentation style
vim-patch:9.1.1529: Win32: the toolbar in the GUI is old and dated
vim-patch:bc84fd145 runtime(doc): handle newlines in base64 string encode example
vim-patch:d3170f59e runtime(doc): Tweak documentation about tab pages
vim-patch:9340aa1bf runtime(helptoc): add s keymap to split and jump to selected entry
vim-patch:fc3c204bb runtime(doc): Fix style and typos in builtin.txt and usr_41.txt
vim-patch:6b9cf3139 runtime(doc): update :call with a range and remove space
vim-patch:308a3130b runtime(doc): Update help for the items() function
vim-patch:39a67920f runtime(doc): Fix missing heading in remote.txt
vim-patch:dc725a04f runtime(doc): update termguicolors default description
vim-patch:e0196f3e2 runtime(doc): Tweak documentation style
vim-patch:6a2d0496a runtime(doc): add missing da1 value to TermResponseAll doc
vim-patch:5f8e31fec runtime(doc): remove documentation for t_Ms terminal code
vim-patch:b2e21cccc runtime(doc): Tweak documentation in vi_diff.txt
vim-patch:9.1.1743: Haiku: no full-screen support
vim-patch:5291fe89b runtime(doc): mention hl-PreInsert in version9.txt
vim-patch:f35a2af8e runtime(doc): improve 'complete' option description
vim-patch:450d59145 runtime(doc): tweak documentation style
vim-patch:235e77a3a runtime(doc): Tweak documentation style more in options and ft_hare
vim-patch:f9dad9e39 runtime(doc): Fix typos in eval.txt
vim-patch:f79e262ff runtime(doc): clarify how to call complete() funcs
vim-patch:a73963ed8 runtime(doc): fix typo, reorder, mention zip plugin at :h changed-9.2
vim-patch:a7680a1a6 runtime(doc): mention improved rendering with 'termguicolors'
vim-patch:07c68245d runtime(doc): MS-Windows: Improve documentation about VTP support
vim-patch:377339dff runtime(doc): make order of verbs match order of operators
vim-patch:4aa4a5690 runtime(doc): update getwininfo() documentation about popups
vim-patch:3b1901eb5 runtime(doc): Tweak documentation style
vim-patch:a67f2699b runtime(doc): update if_perl after v9.1.1822)
vim-patch:9.1.1826: Patch v9.1.1230 causes confusion about Ctrl-C behaviour
vim-patch:c58f91c03 runtime(doc): Whitespace updates
vim-patch:7bb56b49e runtime(doc): Fix option markup at :help 'pumborder'
vim-patch:9.1.1882: Vim9: Not able to use a lambda with :defer
vim-patch:07da26710 runtime(doc): Fix a few typos
vim-patch:7f60105cb runtime(doc): fix typo in "appendbufline()", builtin.txt
vim-patch:4bb44b287 runtime(doc): Change termdebug_config debug value to v:true in terminal.txt
vim-patch:911ecdcd0 runtime(doc): fix return value in 'exists' and 'exists_compiled()'
vim-patch:e9a983326 runtime(doc): Tweak documentation style in eval.txt and options.txt
vim-patch:a2b45646a runtime(doc): Update version9.txt for v9.1.1966
vim-patch:fdd21ca37 runtime(doc): fix wrong help tag reference in eval.txt
vim-patch:93d9d196e runtime(doc): use codepoint consistently
vim-patch:a820a4540 runtime(doc): Fix "Vim script" formatting at :help clipboard-providers
vim-patch:3913f13a7 runtime(doc): Improve :help builtin-function-list table formatting
vim-patch:08953f711 runtime(doc): Minor updates to version9.txt
vim-patch:745335c87 runtime(doc): fix return type in getqflist() and getloclist()
vim-patch:5268b9515 runtime(doc): clarify the help style a bit
vim-patch:7599a1899 runtime(doc): Mark the use of "\n" in the tabpanel as experimental
vim-patch:f39e7a89f runtime(doc): update win_findbuf() return value
vim-patch:db4ff9a40 runtime(doc): Add Swedish to help-translated list
vim-patch:f73bd2546 runtime(doc): clarify term_cols allowed range in terminal.txt
vim-patch:52507a733 runtime(doc): Mark 'scrollfocus' as non-functional
vim-patch:b8f58dd69 runtime(doc): Fix typos in version9.txt
vim-patch:ac1d379f3 runtime(doc): correct XDG runtimepath
vim-patch:48677d774 runtime(doc): Update version9.txt, update the description of getwininfo()
vim-patch:9ebb666b8 runtime(doc): Update runtimepath default locations
vim-patch:06a604dc8 runtime(doc): Mention xdg.vim in version9.txt
vim-patch:3c1594533 runtime(doc): update option type of 'termresize' option (after v9.2.0139)
vim-patch:751b59e53 runtime(doc): clarify :silent usage for system()/systemlist()
vim-patch:7a9548c40 runtime(doc): Update help tags references
vim-patch:3f53a2ce2 runtime(doc): Fix typo in cmdline.txt
vim-patch:9.2.0198: cscope: can escape from restricted mode
vim-patch:9.2.0205: xxd: Cannot NUL terminate the C include file style
vim-patch:9.2.0248: json_decode() is not strict enough
vim-patch:0646047b6 runtime(doc): clarify term_start() I/O behavior for Unix pty and MS-Windows ConPTY
vim-patch:9d9381fb2 runtime(doc): Tweak documentation style a bit
vim-patch:01e967021 runtime(doc): Update documentation on statusline click handler
vim-patch:9.2.0336: libvterm: no terminal reflow support
vim-patch:4b6f3f1d1 runtime(doc): Tweak documentation style in options.txt
vim-patch:32a30cb5a runtime(doc): Update docs about tabpanel
vim-patch:9.2.0404: redraw_listener_add() does not check secure flag
vim-patch:30b424073 runtime(doc): Update docs related to tabpanel
vim-patch:9.2.0412: channel: term_start() out_cb/err_cb no longer deliver raw chunks
vim-patch:e7e35b9e3 runtime(doc): clarify that viminfo file should be trusted
vim-patch:f793e9806 runtime(doc): clarify separator cell on status line rows
vim-patch:37d61dae7 runtime(doc): update doc for clipboard provider
vim-patch:07dc94023 runtime(doc): document new GTK4 GUI in version9.txt
vim-patch:d0af3bcee runtime(doc): fix help tags for removed/reused error codes
vim-patch:6574102fb runtime(doc): Tweak documentation style
vim-patch:9.2.0534: GTK UI does not support fullscreen mode
vim-patch:18c6b91ca runtime(doc): fix a typo in :write-plugin
vim-patch:66a42052e runtime(doc): document that +multi_byte is always enabled
vim-patch:4bc842b0b runtime(doc): Tweak some documentation style
vim-patch:9.2.0723: term_start() does not support "noclose"
vim-patch:26dfed583 runtime(doc): Add installer updates to version9.txt
vim-patch:5680e3b29 runtime(doc): clarify behaviour of 'title' and 'iconstring'
vim-patch:7b11d840c runtime(doc): Improve fuzzy file picker doc
vim-patch:648d16e4c runtime(doc): clarify 'icon' and 'title' interaction for screen 5
vim-patch:726ce3094 runtime(doc): improve suggested detection method for WSL
vim-patch:02c0a9040 runtime(doc): document &t_8u as &t_8f and &t_8b
vim-patch:ac78f14b9 runtime(doc): Tweak documentation style a bit
vim-patch:4a997e146 runtime(doc): GTK: document that "font" in a highlight group has no effect
vim-patch:b4ae16ca3 runtime(doc): clarify 'laststatus' effect
vim-patch:7203411bc runtime(doc): add a few more references to 'guiligatures'
vim-patch:9.2.0916: configure: honor `--disable-hardcopy-pango` with GTK UI
vim-patch:95e8f2e93 runtime(doc): v:windowid is x11 only
vim-patch:b4b3a62a4 runtime(doc): mark the GTK4 GUI as still experimental
vim-patch:a0f057dac runtime(doc): Tweak documentation style a bit
vim-patch:1d14eea96 runtime(doc): Add clipboard provider example for WSL
vim-patch:9.2.0973: Vim9: internal error when a class member is initialized with a closure
vim-patch:9.2.0974: tests: Test_clientserver_serverlist_list() is flaky
vim-patch:9.2.0975: Vim9: assignment to a member of an object member fails
vim-patch:9.2.0977: tests: test_terminal_visual_empty_listchars() is flaky
2026-08-20 04:05:10 -04:00
zeertzjq
40740f49f8 vim-patch:9.2.0982: tests: test_substitute leaves swapfiles behind (#41390)
Problem:  tests: test_substitute leaves swapfiles behind
Solution: Close open buffer using :bw!

be66c98572

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-08-20 01:51:34 +00:00
zeertzjq
0e140ded51 vim-patch:bce3eb1: runtime(doc): clarify the 'findfunc' option (#41389)
Remove the note about "this function is called only once per :find
command invocation".

fixes: vim/vim#21062

bce3eb1fae

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-08-20 09:11:13 +08:00
Justin M. Keyes
b997265f64 Merge #41376 from justinmk/fixci 2026-08-19 15:22:25 -04:00
Justin M. Keyes
2fea699b96 revert: "fix(lifecycle): on Windows, CTRL_CLOSE kills Nvim mid-teardown"
Revert commit 5a71131282

That change seems good in theory, but it consistently causes 2 failures

    FAILED   …/api/vim_spec.lua @ 3213: API nvim_list_chans, nvim_get_chan_info stream=job :terminal channel
    Expected values to be equal.
    Expected:
    {
      argv = { "D:/a/neovim/neovim/build/bin/nvim.exe", "-u", "NONE", "-i", "NONE" },
      exitcode = 129,
      id = 4,
      mode = "terminal",
      pty = "?",
      stream = "job"
      ...
    }
    Actual:
    {
      argv = { "D:/a/neovim/neovim/build/bin/nvim.exe", "-u", "NONE", "-i", "NONE" },
      exitcode = 143,
      id = 4,
      mode = "terminal",
      pty = "?",
      stream = "job",
      ...
    }
    stack traceback:
            …/api/vim_spec.lua:3257: in function <…/api/vim_spec.lua:3213>

    FAILED   …/terminal/tui_spec.lua @ 3669: TUI exits immediately when stdin is closed
    …/terminal/tui_spec.lua:3669: retry() attempts: 69
    Expected values to be equal.
    Expected:
    vim.NIL
    Actual:
    {
      name = "nvim.exe",
      pid = 2256,
      ppid = 8200,
    }
    stack traceback:
            …/testutil.lua:98: in function 'retry'
            …/terminal/tui_spec.lua:3669: in function <…/terminal/tui_spec.lua:3656>
2026-08-19 20:36:14 +02:00
Justin M. Keyes
5a71131282 fix(lifecycle): on Windows, CTRL_CLOSE kills Nvim mid-teardown
Problem:
`signal_ignore_deadly` doesn't work for Windows, where the console still
may terminate Nvim during teardown (after `signal_teardown`), while it
is already trying to exit. Besides interrupting any housekeeping we are
doing, it results in an unpredictable exit code (flaky tests).

    [Process exited -1073741510]  // 0xC000013A STATUS_CONTROL_C_EXIT

Solution:
Register our own CTRL_CLOSE_EVENT handler which "blocks" the signal.
Note: if exit takes longer than 5s, Windows will consider the process
"hung" and kill it anyway.
2026-08-19 15:46:58 +02:00
Justin M. Keyes
5b1c21f4b8 fix(lifecycle): late signal kills Nvim mid-teardown
Problem:
A deadly signal arriving during teardown can kill Nvim while it is
preserving swapfiles. `os_exit()` ignores deadly signals via
`signal_reject_deadly()`, but `signal_teardown()` => `uv_signal_stop()`
resets them to the default behavior, so SIGHUP arriving after that
kills the process:

    [Process exited 129]      // 128 + SIGHUP

This is a race when closing a pty: kernel sends SIGHUP to foreground
process group *and* the reads return EOF, so `chanclose()` on a TUI job
prepares to exit twice. This means it is unpredictable whether Nvim
exits 1 or is terminated.

Solution:
Ignore deadly signals once the watchers are closed. Only SIGKILL
interrupts it now.
2026-08-19 15:46:58 +02:00
Justin M. Keyes
9bd18d04f1 revert: "build(deps): bump luajit to 27f169c6c" #41380
This reverts commit fce4d4502a.
2026-08-19 09:46:42 -04:00
zeertzjq
2cd4229d01 fix(window): crash when closing new curwin during CTRL-W_x (#41378)
Problem:  Crash when closing the new current window during CTRL-W_x.
Solution: Remove a duplicate redraw of a window that should normally be
          already mark for redraw in the previous call.
2026-08-19 20:13:08 +08:00
Christian Clason
fce4d4502a build(deps): bump luajit to 27f169c6c 2026-08-19 13:40:02 +02:00
Barrett Ruth
743bca9202 fix(zip): lost password if sent before unzip disables echo #41377 2026-08-19 07:35:26 -04:00
Justin M. Keyes
0a414a7fbb vim-patch: num -> bool patches #41375
Notes:
- 8.2.1614 also flips searchcount()'s "recompute" default to FALSE;
- 8.2.1620 flips it back, so the default stays true here.

vim-patch:8.2.1601: Vim9: cannot use 'true" with garbagecollect()
2df4731042

vim-patch:8.2.1602: Vim9: cannot use 'true" with getbufinfo()
036c2cf719

vim-patch:8.2.1603: Vim9: cannot use "true" with getchar()
c08cc72947

vim-patch:8.2.1604: Vim9: cannot use "true" with getcompletion()
d217a87755

vim-patch:8.2.1614: Vim9: cannot pass "true" to searchcount()
597aaac9d2

vim-patch:8.2.1615: Vim9: cannot pass "true" to searchdecl()
30788d3d37

vim-patch:8.2.1616: Vim9: cannot pass "true" to synID()
fcb6d7082d

vim-patch:8.2.1617: Vim9: cannot pass "true" to win_splitmove()
4b9bd692bd

vim-patch:8.2.1619: Vim9: cannot pass "true" to spellsuggest()
7c27f337bf

vim-patch:8.2.1620: searchcount() test fails
4140c4f3ff

N/A patches:
vim-patch:8.2.1606: has() takes no second argument in Nvim
04637e243d
vim-patch:8.2.1610: list2str()/str2list() take no "utf8" argument
a48f786787
vim-patch:8.2.1611: nr2char() ignores its "utf8" argument
ed6a430fae
2026-08-19 07:18:34 -04:00
Justin M. Keyes
b1ce3d3eb7 Merge #41372 from janlazo/na-patch-9010000
build(vim-patch): detect n/a patch from vim9,popupwin,tabpanel
2026-08-19 04:00:19 -04:00
Justin M. Keyes
9b2dbc264b Merge #41370 from justinmk/fixci 2026-08-19 03:52:46 -04:00
Jan Edmund Lazo
3e487dd145 build(vim-patch): n/a tabpanel docs from v9.1.1391 2026-08-19 01:24:03 -04:00
Jan Edmund Lazo
c8da9f3df2 build(vim-patch): n/a patterns for popupwin. v9.2.0636 2026-08-19 00:49:08 -04:00
Jan Edmund Lazo
855e973bf2 build(vim-patch): v9.1.0050 is n/a 2026-08-19 00:16:44 -04:00
Jan Edmund Lazo
ba32f10632 build(vim-patch): vim9 parse_argument_types is n/a
Vim9script has incompatible lambda syntax to support argument types.
Target v9.1.0270.
2026-08-19 00:08:00 -04:00
Jan Edmund Lazo
a98858651e build(vim-patch): n/a docs from 9.0.1481, keep hunks without header
switch/case and goto labels v9.0.1481 and similar patches
from auto-N/A.
Blacklist as much as possible to auto-N/A later crypt patches.

Hunks without header in "*.h" is valid if only littered with #ifdefs
or change is isolated to 1st line
but "src/feature.h" should be mostly N/A
after Nvim removed "FEAT_" guards.
Wonder if certain patches with only "*.h" changes were mistakenly
marked N/A.
2026-08-18 21:40:04 -04:00
zeertzjq
53211ade2b vim-patch:9.2.0969: runtime(shaderslang): matchit % breaks on braces (#41371)
Problem:  b:match_words groups "{" with the if/for/while/switch keywords
          and "}" with "break" which breaks % matching on braces
Solution: Drop the brace and bracket groups, matchit appends
          'matchpairs' by itself (Matthias Bruns).

matchit counts every alternative in a group instead of pairing the
alternatives with each other.  Listing `{` alongside the if, for,
while, switch, struct and class keywords therefore makes a line such
as `for (...) {` count as two openers, and listing `break` alongside
`}` lets a brace pair with a break statement.  As a result % on the
opening brace of a function does not move at all, and % on
`switch (x) {` jumps to `break;` instead of the closing brace.

Braces and brackets do not need to be listed: matchit appends
'matchpairs' to b:match_words by itself.  Drop them and leave the
preprocessor group unchanged.

closes: vim/vim#21064

08c74ce09a

Co-authored-by: Matthias Bruns <matthiasbruns35@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 07:47:24 +08:00
Chen, Ting-An
b524338261 fix(l10n): refresh Traditional Chinese message catalog #41273
Problem:
The zh_TW catalog was stale, omitted 743 messages from the current source, and contained empty, fuzzy, and format-unsafe translations.

Solution:
Regenerate the catalog with the official translation build, preserve the focused translation repairs, and translate the reported E5200 diagnostic.
2026-08-18 16:27:14 -04:00
Justin M. Keyes
73e766f8f6 fix(lifecycle): json_create_config leak
Problem:
As it turns out, when you have 17 different ways to "exit", you need to
plug 17 different holes.

Leak still reported by ASAN CI, even after 1eae512285 f238788601.

    ERROR: LeakSanitizer: detected memory leaks
        strbuf_init src/cjson/strbuf.c:62:22
        json_create_config src/cjson/lua_cjson.c:635:5
        lua_cjson_new src/cjson/lua_cjson.c:2060:5
        nlua_state_add_stdlib src/nvim/lua/stdlib.c:840:3
        nlua_state_init src/nvim/lua/executor.c:973:3

Analysis:
`os_breakcheck()` may process a `exit_event` placed by
`exit_on_closed_chan()` during shutdown. This would re-enter
`preserve_exit()`, which then skips everything because it sees
`really_exiting=true`.

Solution:
Set `exiting` in `preserve_exit()`, not only in `getout()`.
2026-08-18 21:43:35 +02:00
Justin M. Keyes
c184ca2c68 fix(lifecycle): ignore signals during os_exit
Problem:
SIGTERM received during `os_exit()` can cause it to "nest":

    os_exit src/nvim/main.c:720
    preserve_exit src/nvim/main.c:910
    deadly_signal src/nvim/os/signal.c:205
    on_signal src/nvim/os/signal.c:240
    signal_event src/nvim/event/signal.c:45
    multiqueue_process_events src/nvim/event/multiqueue.c:159
    event_teardown src/nvim/main.c:178
    os_exit src/nvim/main.c:720

Solution:
Call `signal_reject_deadly()` at the start of `os_exit()` like
`preserve_exit()` already does.
2026-08-18 18:04:19 +02:00
Justin M. Keyes
f238788601 fix(tui): ui may attempt reattach during shutdown #41368
Problem:
TSan CI, always at exit:

    WARNING: ThreadSanitizer: use of an invalid mutex (e.g. uninitialized or destroyed)
        #1 uv_mutex_lock
        #2 tui_flush src/nvim/tui/tui.c:1708
        #3 ui_client_event_flush
        #4 parse_msgpack src/nvim/msgpack_rpc/channel.c:259
        ...
        #10 event_teardown src/nvim/main.c:187
        #11 os_exit src/nvim/main.c:720
        ...
        #19 tinput_done_event src/nvim/tui/input.c:184

Analysis (guess):
`rpc_close_event()` may run during `event_teardown()` and reattach to
a restarted server, then `ui_client_attached=true` gets set and redraws
resume in an already-stopped TUI.

Solution:
Check `!exiting` in `rpc_close_event`, like we already do in
`channel_proc_exit_cb()`.
2026-08-18 11:38:52 -04:00
Justin M. Keyes
0c091cedc2 test(tui): unreliable "TUI exits immediately when stdin is closed" #41367
Problem:
Unreliable test on slow CI (ASAN/TSAN):

    FAILED  .../tui_spec.lua @ 3054: TUI exits immediately when stdin is closed
    retry() attempts: 1
    Expected: vim.NIL
    Actual: { name = "nvim", pid = 33201, ppid = -1 }

The test asserts "immediate" exit of the Nvim process, but this may be
subject to OS delays outside of our control.

Solution:
Make the "timed out waiting for DA1" log conditional on the actual
timeout, and assert the logs in the test.
2026-08-18 09:22:05 -04:00
Goldpigg
ab82c2c6b0 feat(extmark): virt_lines can highlight until EOL #41289 2026-08-18 08:35:22 -04:00
Justin M. Keyes
1eae512285 fix(lifecycle): Lua state not freed if free_all_mem() is re-entered #41366
Problem:
Leak reported by ASAN CI, always at Lua state init.

      ERROR: LeakSanitizer: detected memory leaks
          strbuf_init src/cjson/strbuf.c:62:22
          json_create_config src/cjson/lua_cjson.c:635:5
          lua_cjson_new src/cjson/lua_cjson.c:2060:5
          nlua_state_add_stdlib src/nvim/lua/stdlib.c:840:3
          nlua_state_init src/nvim/lua/executor.c:973:3
      ...
      SUMMARY: AddressSanitizer: 1055 byte(s) leaked in 2 allocation(s).

Analysis:
`getout()` may run during `free_all_mem()` (that's why it checks
`!entered_free_all_mem`). If that happens, the second `os_exit()`
returns early from `free_all_mem()` then `exit()` is called and Lua
state is never closed.

Solution:
Always call `nlua_free_all_mem()` in the early-return case.
2026-08-18 08:30:42 -04:00
Justin M. Keyes
f6bf814378 fixfix(cmdatom): repeat Visual <Cmd>; CmdFrame + stage #41355
Problem:
- Dot-repeat of a Visual selection prepared by a `<Cmd>` mapping,
  results in E1255 and leaves Visual mode active.
- Visual-mode capture is implemented as a second, parallel "capture
  engine": it re-composes a CmdSpec from cmdarg_T per key and decides
  replayability from its own table of "void" key classes.

Solution:
- Model nested `normal_execute()` as a `CmdFrame` stack,
  instead of a single module-scoped `stage`.
  - Capture `<Cmd>` ":norm …" commands as subatoms from its nested frames.
- Produce every command exactly once; atom_push_raw() routes the atom to
  the Visual composite while a selection is open, like it already does
  for mapping composites.
  - `v/pat<CR>d` is now repeatable and cascades.
2026-08-18 07:50:27 -04:00
Justin M. Keyes
c5ea9ca2ad fix(zip): missed "password:" prompt if output trails it #41364
Problem:
Flaky test:

    RUN      T1158 nvim.zip reports an incorrect archive password: 11092.84 ms FAIL

The prompt is detected only if the pty output *ends* with "password: ",
but a read may return the prompt plus following bytes.

Solution:
- Match anywhere in the output since the last password was sent. The
  buffer is cleared before each send, so won't match stale text.
- Assert on the reported message, so a failure shows what was reported.
2026-08-18 06:23:59 -04:00
Marcus Caisey
d9b4fb1273 feat(lsp): fallback to textDocument/formatting from vim.lsp.formatexpr #40079
Problem:
With the addition of the `:help al` text object, you can now easily
format the whole buffer with `gqal`. However, `vim.lsp.formatexpr` only
uses `textDocument/rangeFormatting` which some language servers (like
gopls) don't support.

Solution:
- Fall back to `textDocument/formatting` if the whole buffer is being formatted
  and the server doesn't support `textDocument/rangeFormatting`.
  - In theory, these two methods should return the same response if the whole
    buffer is being formatted, but I preserved the existing behaviour of
    prioritising `textDocument/rangeFormatting` in case that does not hold (i.e.
    LS bug).
- Also: `vim.lsp.formatexpr` had no tests at all, so actually add tests for it.
2026-08-18 05:16:16 -04:00
Justin M. Keyes
27d40762bc Merge #41350 from janlazo/vim-8.1.1880
vim-patch:8.1.1880,9.0.0885
2026-08-18 04:35:47 -04:00
Max Coplan
750c665ab3 build(zig): keep all symbols for native Lua modules #41361
Native Lua modules loaded with `require` or `package.loadlib` resolve Lua
C API symbols from the nvim executable itself. Those symbols must stay in
the binary even when nothing inside nvim references them.

`rdynamic` is enough on Linux. On macOS the linker dead-strips
unreferenced symbols before rdynamic exports them, so `_lua_tothread` is
missing from the executable and loading such a module fails with:

    symbol not found in flat namespace '_lua_tothread'

Disable section garbage collection so all non-static symbols are kept.
2026-08-18 04:16:35 -04:00
github-actions[bot]
4a77d1e1db docs: update version.c #41307
vim-patch:8.2.0514: several global functions are used in only one file
vim-patch:8.2.1814: missing change to remove "static"
vim-patch:8.2.2860: adding a text property causes the whole window to be redawn
vim-patch:8.2.3276: Vim9: exists() can only be evaluated at runtime
vim-patch:8.2.3753: Vim9: function unreferenced while called is never deleted
vim-patch:8.2.4669: in compiled code len('string') is not inlined
vim-patch:9.0.1821: Vim9 constructors are always static
vim-patch:9.0.1953: Misplaced comment in errors.h
vim-patch:9.1.0349: Vim9: need static type for typealias
vim-patch:9.1.0584: Warning about redeclaring f_id() non-static
vim-patch:ae3a8664b runtime(doc): Add explanation for Vim's IME
vim-patch:9.1.2033: tests: Test_terminal_cwd flaky when using ConPTY
vim-patch:9.2.0026: The ss_pending_cmds variable is visible globally
vim-patch:9.2.0643: Missing Image ifdefs
vim-patch:381da9f85 CI: Bump github/codeql-action
vim-patch:9.2.0965: GTK4: blurry text rendering
vim-patch:9.2.0966: GTK4: window opens two lines too small
vim-patch:0b7700e1a runtime(doc): add PREVENT LOADING section for pi_getscript.txt
vim-patch:068657ffc runtime(vimlogo): remove coincident lines and reshade vimlogo.svg

vim-patch:8.2.0149: maintaining a Vim9 branch separately is more work
vim-patch:8.2.0173: build fails with old compiler
vim-patch:8.2.0191: cannot put a terminal in a popup window
vim-patch:8.2.0194: some commands can cause problems in terminal popup
vim-patch:8.2.0196: blocking commands for a finished job in a popup window
vim-patch:8.2.0202: when 'lazyredraw' is set the window title may not be updated
vim-patch:8.2.0204: crash when using winnr('j') in a popup window
vim-patch:8.2.0320: no Haiku support
vim-patch:8.2.0328: no redraw when leaving term-normal mode in popup terminal
vim-patch:8.2.0364: printf test failing on Haiku
vim-patch:8.2.0367: can use :pedit in a popup window
vim-patch:8.2.0399: various memory leaks
vim-patch:8.2.0516: client-server code is spread out
vim-patch:8.2.0557: no IPv6 support for channels
vim-patch:8.2.0574: ipv6 feature not shown in :version output
vim-patch:8.2.0588: Putty does not use "sgr" 'ttymouse' by default
vim-patch:8.2.0596: crash in test49
vim-patch:8.2.0611: Vim9: no check for space before #comment
vim-patch:8.2.0613: Vim9: no check for space before #comment
vim-patch:8.2.0624: Vim9: no check for space before #comment
vim-patch:8.2.0641: Vim9:  not expanded in :hardcopy and syn-include
vim-patch:8.2.0650: Vim9: script function can be deleted
vim-patch:8.2.0653: using uninitialized pointer
vim-patch:8.2.0656: MS-Windows: redrawing right screen edge may not be needed
vim-patch:8.2.0694: Haiku: channel and terminal do not work
vim-patch:8.2.0718: gcc warning for returning pointer to local variable
vim-patch:8.2.0747: cannot forcefully close all popups
vim-patch:8.2.0748: cannot get a list of all popups
vim-patch:8.2.1601: Vim9: cannot use 'true" with garbagecollect()
vim-patch:8.2.1602: Vim9: cannot use 'true" with getbufinfo()
vim-patch:8.2.1603: Vim9: cannot use "true" with getchar()
vim-patch:8.2.1604: Vim9: cannot use "true" with getcompletion()
vim-patch:8.2.1606: Vim9: cannot use "true" with has()
vim-patch:8.2.1610: Vim9: cannot pass "true" to list2str() and str2list()
vim-patch:8.2.1611: Vim9: cannot pass "true" to nr2char()
vim-patch:8.2.1614: Vim9: cannot pass "true" to searchcount()
vim-patch:8.2.1615: Vim9: cannot pass "true" to searchdecl()
vim-patch:8.2.1616: Vim9: cannot pass "true" to synID()
vim-patch:8.2.1617: Vim9: cannot pass "true" to win_splitmove()
vim-patch:8.2.1619: Vim9: cannot pass "true" to spellsuggest()
vim-patch:8.2.4597: LuaV_debug() not covered by tests
vim-patch:8.2.4648: handling LSP messages is a bit slow
vim-patch:8.2.4650: "import autoload" only works with using 'runtimepath'
vim-patch:8.2.4653: "import autoload" does not check the file name

vim-patch:8.2.0528: Vim9: function arguments insufficiently tested
vim-patch:9.0.0375: the footer feature is unused
vim-patch:9.1.0202: leaking memory in add_user() on failure
2026-08-18 03:32:47 -04:00
zeertzjq
82c751db4e vim-patch:9.2.0967: hit-enter prompt eats keys from a running mapping (#41359)
Problem:  The hit-enter prompt fires whenever a message scrolls the screen.
          When this happens while a mapping is being processed, it consumes
          the mapping's next key, causing unexpected behavior for users.
Solution: Similar to what 9.1.1969 did for stuffed characters, skip the
          hit-enter prompt when there are still keys pending from a mapping
          in the typeahead buffer.

related: neovim/neovim#38298
related: neovim/neovim#20635
related: neovim/neovim#30890
closes:  vim/vim#20753

AI assisted.

6025ea9e02

Co-authored-by: XiaowenHu96 <me@xiaowenhu.com>
2026-08-18 09:23:34 +08:00
zeertzjq
bce3bf06a3 vim-patch:9.2.0963: crash when sound-folding a crafted spell file (#41358)
Problem:  A SAL rule longer than MAXWLEN is silently truncated to an
          empty lead.  set_sal_first() then reorders the sl_sal entries
          by their index byte and can move the terminating sentinel out
          of the last slot, so spell_soundfold_wsal() reads past the end
          of the array, e.g. when soundfold() or spellsuggest() is used
          (Erick Alex).
Solution: Bound the sound-folding loops against sl_sal.ga_len.

closes: vim/vim#21076

6ac008db96

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-18 09:03:37 +08:00
zeertzjq
cc25b2f13c vim-patch:9.2.0960: double-free in string_reduce() (#41357)
Problem:  string_reduce() copies *rettv into argv[0] before calling
          eval_expr_typval().  When the evaluator fails early, rettv is
          never reset and still aliases argv[0] v_string.
          clear_tv(&argv[0]) frees it, leaving rettv dangling and when
          in vim9script get_func_tv() frees it again (Ave Dva).
Solution: Set rettv->v_type = VAR_UNKNOWN like what is done in
          list_reduce() and tuple_reduce(), use tv_get_string_strict()
          in f_reduce()

closes: vim/vim#21048

Supported by AI.

cd59994c45

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-08-18 09:03:27 +08:00
Justin M. Keyes
b107154ba2 docs: misc, cwd, vimscript.txt #41356
Extract vimscript.txt from repeat.txt
2026-08-17 13:37:08 -04:00