Commit Graph

32845 Commits

Author SHA1 Message Date
Justin M. Keyes
cd90ec7cdc NVIM v0.11.7
Following is a list of commits (fixes/features only) in this release.
See `:help news` in Nvim for release notes.

FIXES
--------------------------------------------------------------------------------
- b1f2fe46cd lsp.enable() don't work correctly inside FileType event #37538
- 9b13ee041f api: nvim_set_hl crashes when url= key is passed
- 3a94763124 channel: crash on failed sockconnect() (#37811)
- 7281cf883e channel: possible hang after connecting with TCP times out (#37813)
- 7bb3c3068c highlight: setting 'winhl' doesn't work with global ns (#37868)
- cf6660d3c1 mpack: boundary values for negative integer encoding (#38411)
- f9c67c40bc lsp: call `on_list` before reading `loclist` #37645
- 818b97173e process: avoid buffering unnecessary UI event with PTY CWD (#37582)
- 3eef5752b3 terminal: heap UAF if buffer deleted during TermRequest (#37612)
- 37738d5ae0 terminal: reset `w_leftcol` after resizing terminal
- e0ea90070a treesitter: escape hyphen in lua pattern
- 85d4822797 treesitter: normalize language aliases
- 03815969c4 watch: invalid joined path #37973

PERFORMANCE
--------------------------------------------------------------------------------
- 768b624c40 filetype: vim.filetype.get_option cache miss when option value is false #37593

VIM PATCHES
--------------------------------------------------------------------------------
- c7f48e40b8 9.1.2119: tests: Test_language_cmd fails on OpenBSD (#37503)
- d47d317a79 9.1.2128: Heap use after free in buf_check_timestamp()
- 79ed49cc69 9.1.2130: Page scrolling in Insert mode beeps (#37710)
- 4792c29969 9.1.2132: [security]: buffer-overflow in 'helpfile' option handling (#37735)
- 03e68ad5d3 9.1.2133: Another case of buffer overflow with 'helpfile' (#37746)
- 5f6b195402 9.1.2136: :tab sbuffer may close old tabpage (#37765)
- b072f89d1e 9.2.0004: Changing hidden prompt buffer cancels :startinsert/:stopinsert (#37881)
- de20500b40 9.2.0028: matchadd() conceal may use unrelated syntax cchar (#37974)
- 7fc228d94f 9.2.0077: [security]: Crash when recovering a corrupted swap file (#38104)
- b9459fba26 9.2.0078: [security]: stack-buffer-overflow in build_stl_str_hl() (#38102)
- 976db1ba4b 9.2.0137: [security]: crash with composing char in collection range (#38261)
- bea7f3a44e 9.2.0202: [security]: command injection via newline in glob() (#38385)
v0.11.7
2026-03-28 17:51:08 +01:00
zeertzjq
bea7f3a44e vim-patch:9.2.0202: [security]: command injection via newline in glob() (#38385)
Problem:  The glob() function on Unix-like systems does not escape
          newline characters when expanding wildcards. A maliciously
          crafted string containing '\n' can be used as a command
          separator to execute arbitrary shell commands via
          mch_expand_wildcards(). This depends on the user's 'shell'
          setting.
Solution: Add the newline character ('\n') to the SHELL_SPECIAL
          definition to ensure it is properly escaped before being
          passed to the shell (pyllyukko).

closes: vim/vim#19746

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-w5jw-f54h-x46c

645ed6597d

Co-authored-by: pyllyukko <pyllyukko@maimed.org>
(cherry picked from commit f577e05522)
2026-03-28 06:34:52 +00:00
Justin M. Keyes
cf6660d3c1 backport: fix(mpack): boundary values for negative integer encoding (#38411)
fix(mpack): boundary values for negative integer encoding

Problem:
libmpack encodes boundary values -129 and -32769 with wrong integer
sizes:
- -129 as int8 instead of int16
- -32769 as int16 instead of int32
because the boundary checks compare against the wrong values (e.g., lo
< 0xffffff7f instead of lo < 0xffffff80). This caused data corruption:
-129 would decode as 127.

Solution:
Fix off-by-one errors in the two's complement boundary constants:
0xffffff80 (-128, min int8) and 0xffff8000 (-32768, min int16).

Co-authored-by: benarcher2691 <ben.archer2691@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-21 21:30:02 -04:00
zeertzjq
8189bb8e48 test: include :cd in pcall() in rmdir() (#38278)
If the Nvim session has exited, the nvim_command will fail too.

ERROR    test/functional/core/fileio_spec.lua @ 342: tmpdir failure modes
test\functional\testnvim.lua:133: sending request after EOF from Nvim

stack traceback:
	test\functional\testnvim.lua:133: in function 'command'
	test\functional\testnvim.lua:847: in function 'rmdir'
	test/functional/core\fileio_spec.lua:353: in function <test/functional/core\fileio_spec.lua:342>

(cherry picked from commit b027de3a87)
2026-03-13 00:25:33 +00:00
zeertzjq
976db1ba4b vim-patch:9.2.0137: [security]: crash with composing char in collection range (#38261)
Problem:  Using a composing character as the end of a range inside a
          collection may corrupt the NFA postfix stack
          (Nathan Mills, after v9.1.0011)
Solution: When a character is used as the endpoint of a range, do not emit
          its composing characters separately. Range handling only uses
          the base codepoint.

supported by AI

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-9phh-423r-778r

36d6e87542

Co-authored-by: Christian Brabandt <cb@256bit.org>
(cherry picked from commit e5667b9c15)
2026-03-12 01:35:01 +00:00
Stefan VanBuren
e0ea90070a fix(treesitter): escape hyphen in lua pattern
Ref: https://github.com/neovim/neovim/pull/38140#discussion_r2897235978
(cherry picked from commit d8e03d5d5a)
2026-03-07 10:33:03 +00:00
glepnir
9b13ee041f fix(api): nvim_set_hl crashes when url= key is passed
Problem: Calling nvim_set_hl() with url= crashes because it tries to
free arena-owned string memory.

Solution: Remove the bad free and return a validation error instead.
(cherry picked from commit d19dc6339d)
2026-03-06 11:43:01 +00:00
Stefan VanBuren
85d4822797 fix(treesitter): normalize language aliases
Hyphenated language names are silently dropped when used as injections
(see #38132).

This combines the normalization of language aliases into `resolve_lang`,
and also adds the normalization of hyphens to underscores, which allows
for handling of injected language tags with hyphens in their names.

Fixes #38132.

(cherry picked from commit 01817eb6f3)
2026-03-04 18:30:41 +00:00
zeertzjq
7fc228d94f vim-patch:9.2.0077: [security]: Crash when recovering a corrupted swap file (#38104)
Problem:  memline: a crafted swap files with bogus pe_page_count/pe_bnum
          values could cause a multi-GB allocation via mf_get(), and
          invalid pe_old_lnum/pe_line_count values could cause a SEGV
          when passed to readfile() (ehdgks0627, un3xploitable)
Solution: Add bounds checks on pe_page_count and pe_bnum against
          mf_blocknr_max before descending into the block tree, and
          validate pe_old_lnum >= 1 and pe_line_count > 0 before calling
          readfile().

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-r2gw-2x48-jj5p

65c1a143c3

Co-authored-by: Christian Brabandt <cb@256bit.org>
(cherry picked from commit 7e8bdd348c)
2026-02-28 04:59:31 +00:00
zeertzjq
b9459fba26 vim-patch:9.2.0078: [security]: stack-buffer-overflow in build_stl_str_hl() (#38102)
Problem:  A stack-buffer-overflow occurs when rendering a statusline
          with a multi-byte fill character on a very wide terminal.
          The size check in build_stl_str_hl() uses the cell width
          rather than the byte length, allowing the subsequent fill
          loop to write beyond the 4096-byte MAXPATHL buffer
          (ehdgks0627, un3xploitable).
Solution: Update the size check to account for the byte length of
          the fill character (using MB_CHAR2LEN).

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-gmqx-prf2-8mwf

4e5b9e31cb

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-02-28 11:37:11 +08:00
Oleksandr Chekhovskyi
03815969c4 fix(watch): invalid joined path #37973
Problem:
When vim._watch.watch() is used to watch a single file, libuv returns
the basename as the filename argument in the callback. The code joins
this with the watched path, producing a nonsensical path like
"/path/to/file.lua/file.lua", which causes ENOTDIR errors on
subsequent fs_stat calls.

Solution:
Check whether the watched path is a directory before joining the
filename. When watching a file, ignore the filename from libuv and
use the watched path directly.

(cherry picked from commit d9d8c660fd)
2026-02-24 07:44:21 +00:00
zeertzjq
de20500b40 vim-patch:9.2.0028: matchadd() conceal may use unrelated syntax cchar (#37974)
Problem:  matchadd() conceal may use unrelated syntax cchar.
Solution: Only use syntax cchar when syntax_flags has HL_CONCEAL
          (zeertzjq).

closes: vim/vim#19459

d01f234ec1
(cherry picked from commit 785ac9f228)
2026-02-19 23:31:23 +00:00
Christian Clason
5655de0926 ci(deps): don't brew install ninja on macOS
Problem: `install_deps.sh` tries to install `ninja` on macOS, but it is
installed on the runners by default, triggering warnings (and wasting
time) on CI.

Solution: Don't `brew install ninja`.
(cherry picked from commit 4b14ba5258)
2026-02-18 23:33:33 +00:00
zeertzjq
f7af59d29b test(win_scrolled_resized_spec): fix flaky test (#37942)
(cherry picked from commit d23f28cca2)
2026-02-18 14:46:10 +00:00
zeertzjq
437f2e5a57 test(screen): fix minimal timeout too small for "intermediate" (#37933)
After #27620 flags.timeout is no longer used as the minimal timeout for
"intermediate", but the default minimal timeout shouldn't be too small.

(cherry picked from commit d0c699ec7b)
2026-02-18 12:18:09 +00:00
zeertzjq
f6bc9efe62 test: fix test failure causing following tests to fail (#37932)
(cherry picked from commit a520d9c4ea)
2026-02-18 10:17:38 +00:00
zeertzjq
b072f89d1e vim-patch:9.2.0004: Changing hidden prompt buffer cancels :startinsert/:stopinsert (#37881)
Problem:  Changing hidden prompt buffer cancels :startinsert/:stopinsert
          (after 9.0.1439).
Solution: Don't change mode for a prompt buffer in an autocommand
          window (zeertzjq).

closes: vim/vim#19410

8b81a6b6e1
(cherry picked from commit 7d8653575f)
2026-02-15 23:29:26 +00:00
zeertzjq
7bb3c3068c fix(highlight): setting 'winhl' doesn't work with global ns (#37868)
Problem:  Setting 'winhighlight' doesn't after setting global namespace
          using nvim_win_set_hl_ns().
Solution: Check if using another namespace when setting 'winhighlight'
          instead of disabling 'winhighlight' in nvim_win_set_hl_ns().
(cherry picked from commit f8d59cfab9)
2026-02-15 00:56:10 +00:00
glepnir
5c7a93917a test: move deprecated highlight API tests #37801
Problem: Tests for deprecated highlight API were mixed with current API tests.

Solution: Move them to deprecated_spec.lua and update highlight_spec.lua to use nvim_get_hl.
(cherry picked from commit 31c45f1aa4)
2026-02-15 00:30:10 +00:00
zeertzjq
7281cf883e fix(channel): possible hang after connecting with TCP times out (#37813)
Problem:  Possible hang after connecting with TCP times out.
Solution: Wait for the close callback to arrive.
2026-02-11 03:15:26 +00:00
zeertzjq
3a94763124 fix(channel): crash on failed sockconnect() (#37811)
Problem:  Crash on failed sockconnect() if a new connection is accepted
          while polling for uv events.
Solution: Don't use channel_destroy_early().

Also test "tcp" mode failure properly.

(cherry picked from commit 64ce5382bd)
2026-02-11 03:15:26 +00:00
zeertzjq
8fc81bc9e9 test: wait for uv.pipe_connect() callback (#37640)
Problem:
On Windows, writing to a pipe doesn't work if the pipe isn't connected
yet. This causes an RPC request to a session newly created by connect()
to hang, as it's waiting for a response to a request that never reaches
the server.

Solution:
Wait for uv.pipe_connect() callback to be called when using connect().
2026-02-11 03:15:26 +00:00
Sean Dewar
ddd7494ff9 test(terminal): skip flaky test on Windows (#37774)
Ref: https://github.com/neovim/neovim/pull/37758#discussion_r2778065203
(cherry picked from commit c90593ed5f)
2026-02-08 02:59:41 +00:00
zeertzjq
154f1c5abd test(api/server_requests_spec): fix flaky test (#37771)
Sometimes the scheduled :qall can arrive too late, so that EOF isn't
received in the same uv_run() call as the response.

(cherry picked from commit a9454f8511)
2026-02-08 01:18:45 +00:00
zeertzjq
79ed49cc69 vim-patch:9.1.2130: Page scrolling in Insert mode beeps (#37710)
Problem:  Page scrolling in Insert mode beeps (after 9.1.0211).
Solution: Fix incorrect return value of pagescroll(). Also invert the
          return value of scroll_with_sms() to be less confusing and
          match comments (zeertzjq).

fixes:  vim/vim#19326
closes: vim/vim#19327

a8ce914db1
(cherry picked from commit bdd886622d)
2026-02-07 15:54:31 +00:00
zeertzjq
5f6b195402 vim-patch:9.1.2136: :tab sbuffer may close old tabpage (#37765)
Problem:  :tab sbuffer may close old tabpage if BufLeave autocommand
          splits window (after 9.1.0143).
Solution: Only close other windows if the buffer will be unloaded
          (zeertzjq).

related: neovim/neovim#37749
closes: vim/vim#19352

6da9f757c4
(cherry picked from commit e704529909)
2026-02-07 15:54:06 +00:00
horrifyingHorse
37738d5ae0 fix(terminal): reset w_leftcol after resizing terminal
Problem: windows may scroll horizontally upon resize using the old terminal
size, which may be unnecessary and cause the content to be partially out-of-view.

Solution: reset the horizontal scroll after resizing.

Adjust expected highlights, as commit e946951f6a isn't backported.

(cherry picked from commit ba6440c106)
2026-02-06 16:37:43 +00:00
zeertzjq
03e68ad5d3 vim-patch:9.1.2133: Another case of buffer overflow with 'helpfile' (#37746)
Problem:  Another case of buffer overflow with 'helpfile'.
Solution: Leave room for "tags" in the buffer (zeertzjq).

closes: vim/vim#19340

21d591fb12
(cherry picked from commit 15061d322d)
2026-02-06 11:54:58 +00:00
zeertzjq
818b97173e fix(process): avoid buffering unnecessary UI event with PTY CWD (#37582)
Problem:
Calling os_chdir() to change the child processes' CWD may cause some
unnecessary UI events to be buffered. These UI events don't go anywhere
as execvp() is called before flushing the UI buffer.

Solution:
Use uv_chdir() instead of os_chdir(). Also fix getting error string
incorrectly. Add test for the current behavior.

(cherry picked from commit 6291256868)
2026-02-06 01:30:33 +00:00
Kevin Goodsell
c7f48e40b8 vim-patch:9.1.2119: tests: Test_language_cmd fails on OpenBSD (#37503)
Problem:  tests: Test_language_cmd fails on OpenBSD because the test
          uses an invalid locale name and expects the command to produce
          an error. OpenBSD accepts (almost) any locale name as valid by
          design, so the :lang command succeeds and the test fails.
Solution: Slightly update the "bad" locale name to make it something
          that OpenBSD considers invalid by adding a dot (but not ending
          with ".UTF-8"). Maintain the original two underscores in the
          name because that ensures Windows will also see it as invalid
          (Kevin Goodsell).

closes: vim/vim#19280

371583642a
(cherry picked from commit 5e1a3df5ae)
2026-02-06 01:21:36 +00:00
zeertzjq
151d6c7c41 test: add reasons to some skipped tests (#37632)
(cherry picked from commit 1e6c4ea896)
2026-02-06 01:17:06 +00:00
zeertzjq
3eef5752b3 fix(terminal): heap UAF if buffer deleted during TermRequest (#37612)
Problem:  Heap UAF if a terminal buffer is deleted during TermRequest in
          Normal mode.
Solution: Increment terminal refcount before triggering TermRequest, and
          destroy the terminal if the buffer is closed during that.
(cherry picked from commit b40880f88f)
2026-02-06 01:07:03 +00:00
zeertzjq
4792c29969 vim-patch:9.1.2132: [security]: buffer-overflow in 'helpfile' option handling (#37735)
Problem:  [security]: buffer-overflow in 'helpfile' option handling by
          using strcpy without bound checks (Rahul Hoysala)
Solution: Limit strncpy to the length of the buffer (MAXPATHL)

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-5w93-4g67-mm43

0714b15940

Co-authored-by: Christian Brabandt <cb@256bit.org>
(cherry picked from commit db133879b2)
2026-02-06 00:06:46 +00:00
zeertzjq
a3c8c593f2 test(terminal/cursor_spec): fix flaky test (#37715)
Problem:  Cursor visibility test may fail if the :sleep lasts too long.
Solution: Wait for the TermLeave autocommand to finish.
(cherry picked from commit b95e0a8d20)
2026-02-05 07:12:35 +00:00
zeertzjq
ba7456b91a test(terminal/cursor_spec): fix flaky test (#37681)
(cherry picked from commit 963162b338)
2026-02-05 07:02:49 +00:00
Kevin Locke
b90b0c8d17 docs: setting g:clipboard after provider init #37705
Problem:
Users may be unaware that setting `g:clipboard` after providers are
initialized has no effect, and that `has('clipboard')` initializes
providers, as in #13062.

Solution:
Note the restriction and link to workarounds in FAQ for discoverability.

(cherry picked from commit 2a906bfad6)
2026-02-04 19:19:58 +00:00
Sean Dewar
d47d317a79 vim-patch:9.1.2128: Heap use after free in buf_check_timestamp()
Problem:  heap UAF if autocommands from reloading a file changed outside
          of Vim wipe its buffer.
Solution: Validate the bufref after buf_reload (Sean Dewar)

closes: vim/vim#19317

392b428d12

Co-authored-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
(cherry picked from commit fede568692)
2026-02-04 12:09:02 +00:00
Maria Solano
f9c67c40bc fix(lsp): call on_list before reading loclist #37645
Problem:
`on_list` is supposed to replace the default list-handler. With the current order of these `if` statements `on_list` won't be called if `loclist` is true.

Solution:
Change the order of the relevant blocks.

(cherry picked from commit 0501c5fd09)
2026-02-01 12:41:57 +00:00
phanium
768b624c40 perf(filetype): vim.filetype.get_option cache miss when option value is false #37593
Problem: when option value is false, it's treated as invalid
then trigger FileType event again

Solution: use cached false value
(cherry picked from commit babdab2f70)
2026-01-28 11:32:15 +00:00
phanium
b1f2fe46cd fix: lsp.enable() don't work correctly inside FileType event #37538
Problem:
Two cases lsp.enable() won't work in the first FileType event
1. lsp.enable luals inside FileType or ftplugin/lua.lua, then:
```
nvim a.lua
```

2. lsp.enable luals inside FileType or ftplugin/lua.lua, then:
```
nvim -> :edit a.lua -> :mksession! | restart +qa! so Session.vim
```

Solution:
Currently `v:vim_did_enter` is used to detected two cases:
1. "maunally enabled" (lsp.enable() or `:lsp enable`)
2. "inside FileType event"

To detect 2. correctly we use did_filetype().

(cherry picked from commit fd45bc8cab)
2026-01-27 23:21:22 +00:00
Justin M. Keyes
1b7c56db1e Release Nvim 0.11.6 #37564 2026-01-26 11:50:17 -05:00
Justin M. Keyes
cd82f11253 version bump 2026-01-26 16:29:56 +01:00
Justin M. Keyes
e8b87a554f NVIM v0.11.6
Following is a list of fix/feature commits in this release.
See `:help news` in Nvim for release notes.

FEATURES
--------------------------------------------------------------------------------
- b92e92b20d lsp: support auto-force escalation in client stop #36430
- 808d973fb0 lsp: warn about unknown filetype #36910

FIXES
--------------------------------------------------------------------------------
- 5e7af0ba01 :ls: check for finished terminal properly (#37303)
- 6ce7b9b851 api: autocmds mess up nvim_get_option_value's dummy buffer
- c124594b22 api: buffer overflow in nvim_buf_get_extmarks overlap #37184
- 7f51431c12 api: crash when moving curwin to other tabpage #35679
- 7896fe2dea api: do not allow opening float to closing buffer
- 91ebbc6c4e api: ignore split_disallowed when opening a float
- 10a1df2789 api: nvim_get_option_value dummy buffer crashes
- da825e5541 api: on_bytes gets stale data on :substitute #36487
- a9ffdca528 api: open_win leak from naughty autocommands
- 92849eacff api: parse_expression crash with ident and curly
- 1db945b584 api: parse_expression crash with unopened ] and node
- 79b67ce331 appimage: wrong $ARCH used by linuxdeploy #36712
- 46011a4e87 autocmd: fire TabClosed after freeing tab page
- a512d43716 autocmd: heap UAF with :bwipe in Syntax autocmd
- bea500dbeb autocmd: parsing of comma-separated buflocal patterns
- 648cf4e586 autocmd: skip empty comma-separated patterns properly
- fa24e045e9 buffer: defer w_buffer clearing to prevent dict watcher crash #36748
- 9fb49aacde buffer: don't allow changedtick watcher to delete buffer (#36764)
- cae3c838a7 buffer: don't reuse 1-line terminal buffer (#37261)
- 6f84ea7c66 buffer: switching buffer should respect jumpoptions+=view (#36969)
- 16ca7ceaed build: disable problematic marktree assert in RelWithDebInfo builds
- c469cba162 channel: unreference list after callback finishes (#37358)
- 43f5297fe3 clipboard: tmux clipboard data may be stale #36787
- 0358f37e3d clipboard: use tmux only in a tmux session (#36603)
- 7e99466a89 eval: 0 should mean current tabpage in gettabvar() (#36891)
- 656ff4c438 events: crash on WinScrolled #35995
- 63c5a101af install: only install "tee" on Windows #36629
- e8c21a8b51 langmap: assert failure on mapping to char >= 256 (#37291)
- 890c257194 lsp: check `nvim.lsp.enable` before `doautoall` #36518
- 275c769f01 lua: don't remove first char of non-file stacktrace source (#37008)
- 83c589d95f lua: relax `vim.wait()` timeout validation (#36907)
- bd2317f17f lua: separate vim.{g,b,w,t} types #37081
- f21c169a02 lua: vim._with() doesn't save boolean options properly (#37354)
- 9acbf5102f lua: vim.wait(math.huge) fails #36885
- 5143419e22 man.lua: :Man slow/hangs if MANPAGER is set #36689
- df9452ea9e man.lua: show_toc condition may cause infinite loop #36979
- 124c18261c marks: wrong line('w$', win) with conceal_lines (#37047)
- 6ef1b655fe normal: assertion failure with "gk" in narrow window (#37444)
- 5ca2eb5e48 remote: remote-ui connect timeout on slow networks #36800
- 2a3cd8dc80 rpc: don't overwrite already received results on error (#37339)
- e0fdfd3d4b scripts: release.sh
- ba600c495f session: window sizes not stored with float windows (#37344)
- 53090ab6a8 statusline: scope truncation bookkeeping
- 800118e204 terminal: :edit should respect 'bufhidden' with exited job (#37301)
- 4b41c284ed terminal: <Ignore> should be no-op (#37494)
- 074d342f63 terminal: avoid multiple terminals writing to same buffer (#37219)
- 2cc78732fc terminal: crash when TermClose deletes other buffers
- ea871923eb terminal: crash when TermClose switches back to terminal buffer
- ceed171485 terminal: crash with race between buffer close and OSC 2 (#37225)
- acc46e1dd7 terminal: handle closing terminal with pending TermRequest (#37227)
- bb31e7b345 terminal: inconsistent mode change when switching buffer (#37215)
- 40c974e689 terminal: restore options properly when switching buffer (#37485)
- 46f569a890 treesitter: use metadata in :EditQuery captures #37116
- 076f7994be trust: :trust command on Windows #36509
- d997c8e344 tutor: escape tutor filename #36539
- fcd0517dee ui.open: use "start" instead of deprecated "rundll32" #36731
- 6a507bad18 vim.fs: abspath(".") returns "/…/." (#36584)
- d974c684da vim.fs: root() should always return absolute path #36466
- 91fd4d127e vim.loader: randomized AppImage path pollutes luac cache #35636
- 45cda1bcf4 vim.loader: randomized AppImage path pollutes luac cache #36944
- d9631c7678 window: crash closing only non-float if autocmds :tabonly (#37218)
- f7e2554bfb window: crash closing split if autocmds close other splits (#37233)
- 7a9bced071 window: disallow closing autocmd window in other tabpage
- 88619e1aaf window: handle closing the only non-float in other tabpage
- d38ba7e2b8 window: restore b_nwindows if win_close_othertab keeps window
- 6338d2d54b window: win_move_after UAF from naughty autocmds (#37065)
- fac7c10eb8 windows: set manifest resource ID to 1 in nvim.rc for MinGW (#36611)

BUILD
--------------------------------------------------------------------------------
- d0ed06dcea haiku os support #36639
- a94647bb08 build(windows): restore "tee" on Windows #36627
- 1f93acc293 build(windows): vendor xxd.c (#36755)

REVERTED CHANGES
--------------------------------------------------------------------------------
- ae25f6942e fix: vim.lsp.omnifunc should not throw away other items

VIM PATCHES
--------------------------------------------------------------------------------
- b3eab00e55 229f79c: runtime(yaml): fix wrong order of undo_ftplugin suboptions
- 89f8e97099 3a324c8: runtime(doc): Fix typo in syntax.txt (#37522)
- d1cd79a4b6 64799a5: runtime(doc): clarify the behavior of CTRL-Z
- 0978d83c6e 7bc9880: runtime(make): do not automatically indent after a special target
- 781da755e8 8.1.0753: printf format not checked for semsg() (#37248)
- 44eae48b75 9.1.0893: No test that undofile format does not regress (#37193)
- 9a50420461 9.1.1872: Cmdline history not updated when mapping <Up> and <CR> (#36334)
- d1604e0f38 9.1.1969: Wrong cursor position after formatting with long 'formatprg' (#36918)
- fda8d2c717 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars (#37133)
- f96e401b7e 9.1.2055: Division by zero in :file after failing to wipe buffer (#37268)
- f8961c3878 9.1.2058: b_locked_split is not checked for :sbuffer
- 9f2b991331 9.1.2066: :wqall! doesn't close a terminal like :qall! does (#37314)
- b1fa8f1430 9.1.2068: :bd/bw may try to switch to a closing buffer
- 600d9f35a4 9.1.2086: Memory leak when skipping invalid literal dict
- 0cc15be15d 9.1.2087: Crash when using :tabonly in BufUnload
- d052d22979 9.1.2090: Last buffer not freed with EXITFREE
- 537e8d69f8 9.1.2095: :wqall! doesn't quit when using :quit in BufWritePost
- 0b1f5a1d60 9.1.2105: tests: not enough tests for using plain_vgetc() (#37521)
- 0da1e4b1c5 9.1.2107: :normal may change cmdline history (#37523)
- a66fce6fab 98a0cbf: patch 9.1.1971: crash with invalid positional argument 0 in printf() (#36919)
- 85404d18fe eb732ed: runtime(doc): Wrap overlength lines in uganda.txt (#36550)
- a93b5a7104 fe8c8b1: runtime(doc): fix outdated :function help
- 0706c55ab1 partial:9.1.1955: sort() does not handle large numbers correctly (#36840)
v0.11.6
2026-01-26 16:27:53 +01:00
glepnir
1772203187 docs: nvim_set_hl fg_index, bg_indexed #37534
(cherry picked from commit 543e14d040)
2026-01-26 14:06:34 +00:00
zeertzjq
0da1e4b1c5 vim-patch:9.1.2107: :normal may change cmdline history (#37523)
Problem:  :normal may change cmdline history if the keys don't
          explicitly leave Cmdline mode (after 9.1.1872).
Solution: Check ex_normal_busy (zeertzjq)

closes: vim/vim#19237

85241020e8
(cherry picked from commit f10a1dcf4d)
2026-01-24 01:47:39 +00:00
zeertzjq
0b1f5a1d60 vim-patch:9.1.2105: tests: not enough tests for using plain_vgetc() (#37521)
Problem:  Not enough tests for using plain_vgetc().
Solution: Add tests for using plain_vgetc() during various commands.
          (zeertzjq)

closes: vim/vim#19236

2b6bdbc697
(cherry picked from commit e0b724de09)
2026-01-24 00:59:54 +00:00
zeertzjq
89f8e97099 vim-patch:3a324c8: runtime(doc): Fix typo in syntax.txt (#37522)
closes: vim/vim#19239

3a324c83ab

Co-authored-by: Antoine Saez Dumas <antoine.saezdumas.git@gmail.com>
(cherry picked from commit 7daf8d2363)
2026-01-24 00:21:51 +00:00
zeertzjq
9a50420461 vim-patch:9.1.1872: Cmdline history not updated when mapping <Up> and <CR> (#36334)
Problem:  Cmdline history not updated when mapping both <Up> and <CR>.
Solution: Consider the command typed when in Cmdline mode and there is
          no pending input (zeertzjq).

Although the existing behavior technically does match documentation, the
"completely come from mappings" part is a bit ambiguous, because one may
argue that the command doesn't completely come from mappings as long as
the user has typed a key in Cmdline mode.  I'm not entirely sure if this
change will cause problems, but it seems unlikely.

fixes: vim/vim#2771
related: neovim/neovim#36256
closes: vim/vim#18607

97b6e8b424
(cherry picked from commit 2407833ba1)
2026-01-23 23:54:40 +00:00
zeertzjq
4b41c284ed fix(terminal): <Ignore> should be no-op (#37494)
(cherry picked from commit 196df35cca)
2026-01-22 01:58:47 +00:00
zeertzjq
40c974e689 fix(terminal): restore options properly when switching buffer (#37485)
(cherry picked from commit 25ce44845d)
2026-01-21 11:19:30 +00:00