Commit Graph

36923 Commits

Author SHA1 Message Date
bfredl
f653ca5ace Merge pull request #40323 from bfredl/no_default_again
fix(tests): use builtin default attributes in more places
2026-06-19 21:11:13 +02:00
bfredl
90157d3790 fix(tests): use builtin default attributes in more places 2026-06-19 19:42:28 +02:00
jdrouhard
b5181300ae refactor(lsp): refactor linked_editing_range to use vim.lsp._capability (#40327)
Problem: linked_editing_range was still doing most of the capability
boilerplate itself.

Solution: refactor it to make use of the common Capability framework for
handling enabling, disabling, etc.
2026-06-19 10:42:14 -07:00
Ryan Patterson
08b47b1964 test: wasm tree-sitter #40304
Problem:
No CI coverage for wasm builds.

Solution:
Add a basic workflow that builds with ENABLE_WASMTIME
and runs wasm-specific tests.
2026-06-19 05:51:30 -04:00
zeertzjq
1e30f5d242 fix(:checkhealth): open after current tabpage (#40319) 2026-06-19 17:45:21 +08:00
zeertzjq
0639f6e41a Merge pull request #40317 from zeertzjq/vim-9.2.0673
vim-patch: test fixes and runtime updates
2026-06-19 10:04:20 +08:00
zeertzjq
cb33b05ba3 vim-patch:8181c6e: runtime(luau): runtime support is incomplete
Problem:  runtime(luau): runtime support is incomplete.
Solution: Add Luau syntax, indent, filetype plugin and indent tests.

closes: vim/vim#20544

8181c6e313

Co-authored-by: Lopy <70210066+lopi-py@users.noreply.github.com>
2026-06-19 09:45:06 +08:00
zeertzjq
dc1393d9c1 vim-patch:9.2.0675: tests: Test_cd_from_non_existing_dir() fails on Solaris
Problem:  tests: Test_cd_from_non_existing_dir() fails on Solaris
Solution: Skip the test on Solaris (Vladimír Marek).

Test_cd_from_non_existing_dir() depends on deleting the current working
directory.  Solaris does not allow that, so skip the test there.

closes: vim/vim#20563

b464c36bf9

Co-authored-by: Vladimír Marek <vlmarek13@gmail.com>
2026-06-19 09:44:42 +08:00
zeertzjq
3e851d407e vim-patch:b0ce576: runtime(tar): fix lz4 extraction on non-Linux systems
Patch 9.2.0306 fixed malformed lz4 extraction commands by using "tar -I lz4"
on Linux and leaving non-Linux tar implementations to auto-detect lz4 input.
That still fails on systems where tar does not support either -I lz4 or
automatic lz4 decompression, such as Solaris /usr/bin/tar.

Keep the existing Linux path using GNU tar's "-I lz4" support.  For non-Linux
systems, use lz4 explicitly to decompress the archive to stdout and feed the
resulting tar stream to the configured tar extraction command.  This is the
same style tar.vim already used for lz4 archives before patch 9.2.0306.

Follow-up for vim/vim#19925

closes: vim/vim#20555

b0ce576fbc

Co-authored-by: Vladimír Marek <vlmarek13@gmail.com>
2026-06-19 09:44:07 +08:00
zeertzjq
147872452e vim-patch:9.2.0673: tests: Test_recover_corrupted_swap_file() cannot handle symlinks
Problem:  tests: Test_recover_corrupted_swap_file() cannot handle
          symlinks
Solution: Use writefile(readblob()) instead (Vladimír Marek)

Test_recover_corrupted_swap_file1() copies prebuilt corrupt swap samples
before recovering them.  In an out-of-source-tree build those sample
files may be symlinks into the source tree.  filecopy() preserves
symlinks, so the copied target may remain a symlink.  Recovery opens
swap files with O_NOFOLLOW, so that copied symlink cannot be opened.
Read the sample as a blob and write it back so the recovery target is a
real swap file.

closes: vim/vim#20561

88cbd00312

Co-authored-by: Vladimír Marek <vlmarek13@gmail.com>
2026-06-19 09:43:55 +08:00
zeertzjq
025a3e2baf vim-patch:9.2.0479: [security]: runtime(tar): command injection in tar plugin
Problem:  [security]: runtime(tar): command injection in tar plugin
          (Christopher Lusk)
Solution: Use the correct shellescape(args, 1) form for a :! command

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-2fpv-9ff7-xg5w

3fb5e58fbc

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-06-19 09:43:55 +08:00
zeertzjq
f5ad6763b6 vim-patch:9.2.0677: Cannot clear the alternate file register # (#40316)
Problem:  Cannot clear the alternate file register #
Solution: Allow to clear it (Christoffer Aasted)

closes: vim/vim#20537

9db6fe4b17

Co-authored-by: Christoffer Aasted <dezzadk@gmail.com>
2026-06-19 01:30:41 +00:00
zeertzjq
1cfbf104f5 vim-patch:9.2.0676: MS-Windows: cannot switch to a buffer with '%' in its name (#40315)
Problem:  On MS-Windows it is not possible to switch to a buffer by name
          with ":b" (including via command-line completion) when the
          buffer name contains '%'.
Solution: Do not escape '%' and '#' for the ":buffer" command on
          MS-Windows.  Since ":buffer" has no EX_XFILE these are not
          expanded, and escaping them as "\%"/"\#" makes buffer name
          matching fail when '%'/'#' is in 'isfname' (the backslash is
          treated as a path separator).

fixes:  vim/vim#20529
closes: vim/vim#20548

1a96e07bf6

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:57:03 +08:00
Jan Edmund Lazo
2370fc1d91 vim-patch:9.2.0586: Crash with TextPut autocmd when pasting in terminal buffer (#40314)
Problem:  Crash with TextPut autocmd when pasting in normal mode in a
          terminal buffer.
Solution: Skip the TextPut autocmds when reg and insert are both NULL
          and regname is not '.' (Foxe Chen).

closes: vim/vim#20407

2e7833bde9

Co-authored-by: Foxe Chen <chen.foxe@gmail.com>
2026-06-19 08:41:56 +08:00
trobicho
cd72e1308f fix(libvterm): crash when bad escape sequence enter SS3 handler #40296 2026-06-18 19:59:11 -04:00
J. Adly
67b3cceaa7 fix(man.lua): highlight codeblocks #40310
Problem:
:Man does not syntax highlight codeblocks (injected language).

Analysis:
init_pager() swapped pcall(parse_ref, ref) return values order, so
vim.b.man_sect was set to the manpage name instead of the section
number, so C syntax highlighting did not load.

Solution:
Swap the calls.
2026-06-18 19:03:01 -04:00
Justin M. Keyes
a1da5d1f14 fix(:restart): set job env instead of mutating parent env #40308
Problem:
- Transient mutation of the parent env is visible to any concurrent
  code. Or at least just kinda sloppy.
- Latent bug:`channel_job_start` queues the spawn and returns before
  `uv_spawn` runs, so the prior `os_unsetenv` immediately after the call
  could in principle race with the deferred spawn.

Solution:
Pass `env` to the channel.
2026-06-18 17:44:29 -04:00
Nathan Zeng
ae426ee465 feat(:restart): v:startreason #40186
Problem:
It's clumsy for scripts to handle a "restart", without custom mappings or
global vars.

Solution:
Introduce `v:startreason`
2026-06-18 15:49:12 -04:00
Jan Edmund Lazo
b8887b6d0e docs: reorder mailmap entry for janlazo #40301 2026-06-18 09:06:50 -04:00
zeertzjq
b8e3f3f4e0 vim-patch:partial:4bc842b: runtime(doc): Tweak some documentation style (#40300)
closes: vim/vim#20540

4bc842b0ba

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2026-06-18 08:45:41 +08:00
dependabot[bot]
b153cbbb75 ci: bump github/codeql-action
Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.36.1 to 4.36.2
- [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.1...v4.36.2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-17 14:43:35 +02:00
Gregory Anders
ed267268b8 fix(lsp): allow specifying bufnr + client_id filter when enabling capabilities #37690
Today there is a constraint that these arguments to the enable filter be
mutually exclusive, but I do not know why such a constraint exists (it
is perfectly reasonable to want to enable a capabilility for just one
buffer and just one client).
2026-06-17 07:26:18 -04:00
zeertzjq
24cdc44902 Merge pull request #40291 from zeertzjq/vim-9.2.0661
vim-patch:9.2.{0661,0662,0663}
2026-06-17 15:36:44 +08:00
zeertzjq
c4ce10930c vim-patch:9.2.0663: [security]: runtime(netrw): code injection in local file deletion
Problem:  [security]: s:NetrwLocalRmFile() escapes only the backslash in
          the file name before passing it to :execute, so a name
          containing "|" injects arbitrary Ex commands when the file is
          deleted (cipher-creator)
Solution: Use fnameescape() to correctly escape the file name
          (Yasuhiro Matsumoto).

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-vhh8-v6wx-hjjh

Supported by AI

55bc757a5d

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
2026-06-17 15:22:04 +08:00
zeertzjq
52d7bbd1a0 vim-patch:9.2.0662: [security] Stack out-of-bounds write in dump_prefixes()
Problem:  [security]: a crafted spell file with a self-referential
          BY_INDEX node in the prefix tree can drive dump_prefixes()
          past the end of its MAXWLEN-sized depth arrays on :spelldump
          (cipher-creator)
Solution: only descend while depth < MAXWLEN - 1, as the sibling trie
          walkers already do (Yasuhiro Matsumoto)

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-qm9w-fmpj-879h

Supported by AI

8325b193bb

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
2026-06-17 15:22:04 +08:00
Jan Edmund Lazo
f50ec42da2 vim-patch:9.2.0567: dict function name allocation failure not handled (#40287)
Problem:  When defining a dictionary function, the function name string
          is allocated with vim_strnsave() but the result is not
          checked. On allocation failure the dict entry is left with
          type VAR_FUNC and a NULL name, and in the overwrite case the
          previous entry has already been freed before the NULL is
          stored.
Solution: Allocate the name before modifying the dict entry and bail out
          on failure, freeing it on all error paths (thinca)

closes: vim/vim#20376

2b2dfc4f5a

Co-authored-by: thinca <thinca@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-06-17 04:44:48 +00:00
zeertzjq
806af4bd90 Merge pull request #40277 from zeertzjq/vim-9.2.0651
vim-patch:9.2.{0651,0656}
2026-06-17 09:16:30 +08:00
zeertzjq
1abb41f38e vim-patch:9.2.0656: completion: using wrong tolower() in smartcase filtering
Problem:  ins_compl_equal_sc() uses MB_TOLOWER() on single bytes, but
          it indexes raw bytes, not decoded characters (after v9.1.0651).
Solution: Use TOLOWER_LOC(), matching what STRNICMP()/ins_compl_equal()
          does (glephunter).

closes: vim/vim#20535

9f5d32cf5c

Co-authored-by: glepnir <glephunter@gmail.com>
2026-06-17 09:01:03 +08:00
zeertzjq
62cb36927d vim-patch:9.2.0651: completion: 'smartcase' doesn't work with 'longest'
Problem:  With 'longest', 'smartcase' is ignored when filtering matches:
          "inp" offers only "InputEvent", and an uppercase pattern gives
          different results for CTRL-N and CTRL-P.
Solution: 'longest' rewrites the leader with the common prefix, picking
          up uppercase the user never typed.  Judge case from the typed
          text instead, and match the auto-inserted part of the leader
          case-insensitively so CTRL-N and CTRL-P give the same result.
          (glepnir)

related: neovim/neovim#40259
closes:  vim/vim#20533

50fe45aca7

Co-authored-by: glepnir <glephunter@gmail.com>
2026-06-17 08:56:24 +08:00
Steve Huff
942778c758 fix(lsp): catch another nil buffer state #40285 2026-06-16 16:20:17 -04:00
tao
0a5f40c207 fix(path): open swapfile when using device path #39982
Problem:
Can't open swapfile when using a device path starting with `//?/`,
because `?` is a reserved char on Widnows.

Solution:
For device UNC paths, replace `//?/UNC/` and `//./UNC/` with `//`.
For other device paths, just strip their prefix (i.e. `//?/`, `//./`).
This aligns swapfile naming for device paths with regular UNC and DOS
paths.

Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2026-06-16 12:34:43 -04:00
Ryan Patterson
355d010ddf fix(treesitter): give each wasm parser its own TSWasmStore #40163
All wasm parsers shared a single global TSWasmStore via
ts_parser_set_wasm_store(). A TSWasmStore is owned by exactly one parser:
ts_parser_delete() frees it through ts_wasm_store_delete(). So the first
wasm parser collected freed the shared store, leaving the global pointer
dangling, and creating the next wasm parser dereferenced freed memory in
ts_wasm_store_reset() -> wasmtime_store_context(), crashing with SIGSEGV.

Give each parser its own store via ts_wasm_store_new() instead. This is
the 1:1 store-per-parser model intended by tree-sitter (see
tree-sitter/tree-sitter#3454): the global store remains only as the
language loader, ts_parser_delete() cleanly frees each parser's own
store, and the wasm engine is shared safely because ts_wasm_store_new()
clones its engine reference internally.

AI-assisted: Claude Code
2026-06-16 08:22:33 -04:00
glepnir
823517ad1d fix(highlight): keep guisp underline color in float with 'winblend' #40283
Problem:
A colored (guisp) underline showing through a 'winblend' float
lost its special color and followed the foreground instead.

Solution:
In the blend-through case, blend the underline's special color
only when the cell below sets sp explicitly; otherwise clear it.
2026-06-16 07:39:32 -04:00
Jan Edmund Lazo
ac0585270c vim-patch:9.1.1335: Coverity complains about Null pointer dereferences #40280
Problem:  Coverity complains about Null pointer dereferences
Solution: before accessing ccline->cmdbuff check that ccline is not NULL

Fixes: Coverity issue 1646601
closes: vim/vim#17189

362be6ba27

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-06-16 07:19:38 -04:00
github-actions[bot]
72ba16f819 docs: update version.c (#40256)
vim-patch:9.2.0641: GTK4: crash in gui_mch_menu_hidden()
vim-patch:47bb4bed4 editorconfig: don't change spaces to tabs in git commit message
vim-patch:9.2.0644: popup image: duplicate sync-output code
vim-patch:9.2.0646: GTK3 GUI slow on HiDPI/4K with software rendering
vim-patch:9.2.0650: Vim aborts at startup when built with the example -O2 CFLAGS
vim-patch:9.2.0652: popup: stale kitty image after clipwindow scrolls out of view

vim-patch:9.0.1865: Vim9: garbage collection may cause crash

vim-patch:9.1.0481: Vim9: term_getjob() throws an exception on error
vim-patch:9.1.0625: tests: test output all translated messages for all translations
vim-patch:9.1.0682: Vim9: Segfault with uninitialized funcref
vim-patch:9.1.1225: extra NULL check in VIM_CLEAR()
vim-patch:9.1.1696: tabnr from getwininfo() for popup windows is always 0
vim-patch:9.1.2113: potential NULL pointer dereference issues

vim-patch:9.2.0648: MS-Windows: Compile warnings
2026-06-16 07:18:55 -04:00
zeertzjq
635939da3e vim-patch:9.2.0653: [security]: out-of-bounds write in tree_count_words() (#40279)
Problem:  [security]: a crafted spell file can drive tree_count_words()
          past the end of its MAXWLEN-sized depth arrays; the descent
          loop has no depth bound.
Solution: only descend while depth < MAXWLEN - 1, as the sibling trie
          walkers already do; apply the same guard to sug_filltree().

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-wgh4-64f7-q3jq

Supported by AI.

a80874d9b8

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-06-16 09:57:45 +08:00
zeertzjq
17d4f4c5d8 Merge pull request #40255 from janlazo/vim-8.2.1821
vim-patch:8.2.1821,9.0.{927,2123},9.1.1233
2026-06-16 09:53:21 +08:00
Jan Edmund Lazo
e8ab90dcc3 vim-patch:9.0.0927: Coverity warns for using a NULL pointer
Problem:    Coverity warns for using a NULL pointer.
Solution:   Check for memory allocaion failure.

96cbbe29de

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-06-15 21:39:24 -04:00
zeertzjq
c10a827289 vim-patch:c6705b2: runtime(erlang): Optimize operators and bitstring types (#40278)
This commit makes processing the erlangOperator and erlangBitType syntax
items faster.

- erlangOperator changes:
  - Vim now parses erlangOperator faster because we define the operators
    individually.
  - The order of operators in erlangOperator had to be changed to make
    the edge cases work the same as before (for example
    erlangEqualsBinary).
- erlangBitType changes:
  - Vim now parses erlangBitType faster because:
    1. Now the long `\%(integer\|float\|...\)` sections are preceded by
       "beginning of word" patterns (`\<`).
    2. Now we use the old regexp engine (`\%#=1`).

Previously when an Erlang file contained long lines with erlangOperator
or erlangBitType patterns near the end, redrawing these lines was slow,
and typing at the end of the line was also slow.

For example, redrawing a 1787 characters long test line is now roughly
six times faster.

fixes:  vim/vim#5593
closes: vim/vim#20524

c6705b2c3e

Co-authored-by: Csaba Hoch <csaba.hoch@gmail.com>
2026-06-16 09:12:22 +08:00
glepnir
02b7415324 fix(lsp): requery empty isIncomplete completion lists #40100
Problem:
an empty `{ isIncomplete = true, items = {} }` ends completion
instead of requerying.

Solution:
keep isIncomplete on empty lists and retrigger on keypress while incomplete.
Reset on <C-e> so it doesn't immediately re-query.
2026-06-15 18:29:27 -04:00
glepnir
724e1421f8 fix(api): keep highlight font through set/get and redraws #40200
Problem: a font set via nvim_set_hl is lost or corrupted with font-only groups,
attribute combining, and update=true, and is dropped on any attr-table rebuild.
nvim__inspect_cell also frees the font name while a returned dict still borrows it.

Solution: register font-only groups, carry font through hl_combine_attr, inherit
it on update, and persist sg_font so a rebuild can restore it. Keep interned font
names across a rebuild instead of clearing them. Add the missing font field to
get_hl_info.

Co-authored-by: Ryan Patterson <cgamesplay@cgamesplay.com>
2026-06-15 17:51:42 -04:00
Justin M. Keyes
4ed844be59 fix(autoread): 'autoread' error if file goes missing #40276
Problem:
'autoread' error if file goes missing.

    E211: File "runtime/lua/nvim/autoread.lua" no longer available
    vim.schedule callback: /usr/local/share/nvim/runtime/lua/nvim/autoread.lua:146:
    Vim:E211: File "test/functional/options/autoread_spec.lua" no longer available
    stack traceback:
    [C]: in function 'checktime'
    /usr/local/share/nvim/runtime/lua/nvim/autoread.lua:146:
    in function </usr/local/share/nvim/runtime/lua/nvim/autoread.lua:138>

Solution:
Ignore E211 thrown by `:checktime`.
2026-06-15 13:14:46 -04:00
Oleh Volynets
b55a868309 feat(diagnostic): debounce current-line render #39542
Problem: vim.diagnostic.Opts.VirtualLines.current_line and
         vim.diagnostic.Opts.VirtualText.current_line cause redraw
         on every CursorMoved event that makes the text jump
         uncomfortably with rapid cursor movement.

Solution: `current_line` state is applied only on CursorHold,
          while still being cleared on CursorMoved making it so that
          until the cursor has stopped on a line, its diagnostic
          looks like cursor is not on the line preventing flicker.
2026-06-15 11:11:57 -04:00
Justin M. Keyes
145b20eb89 test: unreliable "with 'statuscolumn' wraps text" #40273
Problem:
flaky test:

    FAILED   ...st_xdg_terminal/test/functional/terminal/window_spec.lua @ 175: :terminal window with 'statuscolumn' wraps text
    ...st_xdg_terminal/test/functional/terminal/window_spec.lua:175: Row 1 did not match.
    Expected:
      |*{121:++ 7  }                                            |
      |*{121:++ 8  }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR|
      |*{121:++ 9  }STUVWXYZ                                    |
      |*{121:++10  }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR|
      |*{121:++11  }STUVWXYZrows: 6, cols: 44                   |
      |*{121:++12  }^                                            |
      |{5:-- TERMINAL --}                                    |
    Actual:
      |*{121:++ 8  }                                            |
      |*{121:++ 9  }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR|
      |*{121:++10  }STUVWXYZ                                    |
      |*{121:++11  }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR|
      |*{121:++12  }STUVWXYZrows: 6, cols: 44                   |
      |*{121:++13  }^                                            |
      |{5:-- TERMINAL --}                                    |

Solution:
Relax the screen test. The `feed_data` + `tty-test` handling is racey;
'statusline' is correctly reporting the line-numbers, and that's all
that matters.
2026-06-15 10:30:55 -04:00
Justin M. Keyes
9ac89aacb2 test(autoread): unreliable "coalesces rapid changes via debouncing" #40272 2026-06-15 09:36:53 -04:00
Justin M. Keyes
436761cba2 fix(tui): late-arriving OSC11 response triggers OptionSet #40270
Problem:
This test is flaky since fff9897ce3 :

    FAILED   ...Xtest_xdg_terminal/test/functional/terminal/tui_spec.lua @ 4359:
    TUI bg color does not trigger OptionSet from automatic background processing
    Expected values to be equal.
    Expected:
    { true, 0 }
    Actual:
    { true, 1 }
    stack traceback:
    ...Xtest_xdg_terminal/test/functional/terminal/tui_spec.lua:4380:
    in function <...Xtest_xdg_terminal/test/functional/terminal/tui_spec.lua:4359>

`apply_optionset_autocmd_now` does not emit `OptionSet` during startup:

    void apply_optionset_autocmd_now(...) {
      // Don't do this while starting up, failure or recursively.
      if (starting || errmsg != NULL || *get_vim_var_str(VV_OPTION_TYPE) != NUL) {
        return;
      }
      ...
    }

but if OSC 11 response arrives AFTER VimEnter, then
`nvim_set_option_value('background',…)` call triggers `OptionSet`.

Solution:
Use `:noautocmd` when setting 'background'.
Per fff9897ce3, OSC11 is not intended to trigger OptionSet.

fix https://github.com/neovim/neovim/issues/40235
2026-06-15 09:12:15 -04:00
Kyle
ebc69b387c fix(tui): patch reset-cursor-style seq regardless of terminfo #40249
Problem:
Terminfo sucks.

Solution:
Patch Ss/Se (set/reset cursor style) sequences when we know what they
should be.

close #38987
2026-06-15 07:41:40 -04:00
jdrouhard
859790e244 feat(lsp): clean up semantic token initialization and debounce #40254
Problem: The refactor to use Capability left around some cruft and
semi-broken configuration for debounce.

Solution: Clean up now-unnecessary helper methods and simplify
deprecated ones to pass through to the non-deprecated ones. `debounce`
now defaults to 200 for all buffers but is overridable via the
deprecated start() method, which continues to take the max value
specified for any client attached to the buffer.

If we wish to expose changing the debounce in a non-deprecated way, we
will need to consider a "configuration" function, or even a bespoke
method to set the debounce time on the main metaclass (or provide
options to override for a particular buffer). General configuration of
specific LSP features is an as-of-yet unsolved problem.
2026-06-15 07:19:09 -04:00
tao
6acde1fcf0 fix(shada): prevent case-duplicate :oldfiles #40013
Problem:
On Windows and macOS, entries in `oldfiles` may differ only in case,
but actually refer to the same file.

Solution:
Previously, deduplication used `Set_cstr_t`. We can add a similar `Set_path_t`
that performs path-aware comparisons, ignoring case differences. On Windows, it
could also ignore path separator differences, and treat `C:\foo` and `\foo` as
the same path when the current drive is `C:`.

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2026-06-15 07:02:17 -04:00
Vahur Sinijärv
db0fca2443 fix(mappings): 'langmap' with multibyte chars #40148
Problem:
On some non-US keyboards, like Estonian/Swedish/etc, widely used []
characters in vim are hard to type. One way to overcome this is to use langmap
option to map accented characters, that are in the same place as [] on US
keyboards to []. Unfortunately this does not work currently in neovim, it
cannot map multibyte characters via langmap.

Solution:
The fix iterates over characters in typeahead and key buffers, instead of bytes,
in getchar.c handle_mapping(). It does not handle macros though, these tests are
still failing when turned on.

Closes #2420
Closes #27776

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2026-06-15 06:49:41 -04:00