Commit Graph
9863 Commits
Author SHA1 Message Date
Rob Pilling fa8e4e65ca fix: update lua types for commands 2025-12-05 11:25:05 +00:00
Olivia Kinnear 903335a6d5 feat(lsp): Client:stop() defaults to exit_timeout #36783
Problem:
If a `vim.lsp.config` explicitly sets `exit_timeout`, that indicates the
config wants that behavior for most usages of `:stop()`.

Solution:
Update `:stop()` to use `force=exit_timeout` if `force` was not
explicitly passed.
2025-12-04 22:50:00 -05:00
zeertzjq a8a0bba2f8 fix(ui): close outdated cmdline pum on redraw (#36815) 2025-12-05 00:23:22 +00:00
zeertzjqandHirohito Higashi e8fdc7ef9a vim-patch:9.1.1944: getwininfo() does not return if statusline is visible (#36828)
Problem:  gewininfo() does not return if statusline is visible
Solution: Add status_height to the dict items returned by
          getwininfo() (Hirohito Higashi)

closes: vim/vim#18841

https://github.com/vim/vim/commit/a04ab5f04c1a9e794ed45ff5f8f7e1f9c5e1a535

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2025-12-05 07:38:05 +08:00
zeertzjqandChristian Brabandt bfe007a187 vim-patch:9.1.1948: Windows: Vim adds current directory to search path
Problem:  Windows: Vim always adds the current directory to search path.
          This should only happen when using cmd.exe as 'shell'. For
          example, powershell won't run binaries from the current
          directory.
Solution: Only add current directory to system path, when using cmd.exe
          as 'shell'.

related: vim/vim#10341
related: 083ec6d9a3b7

https://github.com/vim/vim/commit/4d87c9742a544a58c05cb34d4fbaac47e410b369

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-12-04 11:54:27 +08:00
zeertzjqandChristian Brabandt ac3e2ca675 vim-patch:9.1.1947: [security]: Windows: Vim may execute commands from current directory
Problem:  [security]: Windows: Vim may execute commands from current
          directory (Simon Zuckerbraun)
Solution: Set the $NoDefaultCurrentDirectoryInExePath before running
          external commands.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-g77q-xrww-p834

https://github.com/vim/vim/commit/083ec6d9a3b7b09006e0ce69ac802597d25856d6

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-12-04 11:54:26 +08:00
zeertzjqandJosef Litoš 42449088c7 vim-patch:b46cbec: runtime(swayconfig): separate identifier groups + cleanup
- cleanup of PR for tearing and other output options
  - removed `allow_tearing` from global keywords (it's only an output option)
  - moved `...clockwise` directives from general to transform options
  - separated `icc` highlight to correctly detect and highlight paths
  - updated output bg to use the same approach as `icc` for file path
- separated all identifier-matchers into their own groups
- added support for bar identifiers

closes: vim/vim#18851

https://github.com/vim/vim/commit/b46cbecb1d02de7df7525a31c4519ed897a0a6ec

Co-authored-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
2025-12-04 08:53:36 +08:00
zeertzjqandJosef Litoš 5685a5b69c vim-patch:20d35f9: runtime(i3config): highlight identifiers separately
- mapped all identifier-highlighting groups to a new group `i3ConfigIdent`
- i3config bar is now split into keyword and block matches
- support `xft:` namespace in fonts
- Update maintainer information in i3config.vim

related: vim/vim#18851

https://github.com/vim/vim/commit/20d35f9eb976cda700d872b94b7760c61c4ad1f8

Co-authored-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
2025-12-04 08:53:15 +08:00
zeertzjqandDoug Kearns e7e3351954 vim-patch:89f422d: runtime(quarto): add missing loaded guard
closes: vim/vim#18630

https://github.com/vim/vim/commit/89f422df41dd9073626ce08cc1b066539ed84fa1

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-12-04 08:52:42 +08:00
zeertzjqandRob B a278eebcfb vim-patch:8d8c907: runtime(python): Highlight t-strings
- Highlight t-strings
- Update comments
- Add tests

closes: vim/vim#18679

https://github.com/vim/vim/commit/8d8c9074c3cbb33b2b8b97556bdb7267e2617b93

Co-authored-by: Rob B <github@0x7e.net>
2025-12-04 08:52:06 +08:00
zeertzjqandDoug Kearns 69758e2918 vim-patch:85fc83f: runtime(sml): Update syntax, improve special constant matching
- Match \dE\d real literal form
- Match all string escape sequences
- Add related tests

closes: vim/vim#18723

https://github.com/vim/vim/commit/85fc83f8490b957e3dbb3b7f51fbd7264a7208b6

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-12-04 08:51:43 +08:00
zeertzjqandD. Ben Knoble c81ff490dc vim-patch:ffc7f8c: runtime(hog): set undo_ftplugin correctly, delete trailing whitespace
closes: vim/vim#18727

https://github.com/vim/vim/commit/ffc7f8c9dac67cce6c020e8c4158972e2a88ce24

Co-authored-by: D. Ben Knoble <ben.knoble+github@gmail.com>
2025-12-04 08:51:25 +08:00
Olivia Kinnear e62dd13f83 fix(lsp): default ClientConfig.exit_timeout to false #36811 2025-12-03 00:58:46 -05:00
zeertzjq a702534c50 fix(lsp): close timer when client exits (#36795)
Also, don't start the timer at all when a previous shutdown failed, as
in this case a forced shutdown is used and no timer is needed.

This fixes most of the delays caused by #36750.
The delays caused by #36378 still seem to remain.
2025-12-03 07:44:27 +08:00
Justin M. Keyes 672f6e60c1 fix(health): bug-report formatting, version check #36809
Problem:
Version check failed because of "equality" comparison, so a version
string of "123abc" would not match "123abcdef".

Solution:
- Adjust verison check.
- Improve bug-report formatting.
2025-12-02 17:36:27 +00:00
Chris Grieser 4e2ed1d03c fix(treesitter): missing nowait for :InspectTree keymaps #36804 2025-12-02 10:49:58 -05:00
Elias Assaf 310d01d8fa fix(clipboard): tmux clipboard data may be stale #36787
Problem:
When Nvim wants to paste from tmux, it doesn't tell tmux to read the OS
clipboard first, so it may have stale clipboard state.

Solution:
Tickle `tmux refresh-client -l`, before requesting paste, as recommended
in the tmux manpage. https://man7.org/linux/man-pages/man1/tmux.1.html

Fixes https://github.com/neovim/neovim/issues/36786

Signed-off-by: Elias Assaf <elyas51000@gmail.com>
2025-12-01 21:52:40 -05:00
zeertzjqandChristian Brabandt 832ce0ac4b vim-patch:c3cfdef: runtime(doc): clarify the use of v:errormsg (#36789)
fixes: vim/vim#18825

https://github.com/vim/vim/commit/c3cfdefdeee3928671809a20f86ddc5d0fe4cc74

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-12-02 00:38:18 +00:00
zeertzjqandCatsDeservePets ade9eac8ca vim-patch:cce452f: runtime(lf): update syntax to support lf version r39 (#36790)
closes: vim/vim#18846

https://github.com/vim/vim/commit/cce452f52d6b52b1f1b630206ba3b54a12465152

Co-authored-by: CatsDeservePets <145048791+CatsDeservePets@users.noreply.github.com>
2025-12-02 00:36:39 +00:00
Tristan Knight 1de77c608f fix(lsp): handle nil request in semantic tokens #36780
Allow the `request` parameter in `tokens_to_ranges` to be `nil` and
update version checking logic accordingly. This prevents errors when
the request is not present and improves robustness of semantic token
handling.
2025-12-01 12:51:04 -05:00
Olivia Kinnear acfb9bc614 feat(lsp): graduate ClientConfig exit_timeout #36750
Problem:
The `flags` field calls its sub-fields "experimental".
But `exit_timeout` is now used for multiple purposes.

Solution:
Graduate `exit_timeout` to a top-level ClientConfig field.
2025-11-30 21:41:43 -05:00
zeertzjqandJon Parise 3f8e51cee7 vim-patch:9.1.1936: filetype: Erlang lexical files are not recognized
Problem:  filetype: Erlang lexical files are not recognized
Solution: Detect *.xrl files as leex filetype, include syntax and
          filetype plugins (Jon Parise).

leex is the lexical analyzer generator for Erlang. Its input file format
follows a section-based structure and uses the `.xrl` file extension.

This initial work includes file detection, an ftplugin (which inherits
the Erlang configuration), and a syntax definition.

Reference:
-  https://www.erlang.org/doc/apps/parsetools/leex.html

related: vim/vim#18819
closes: vim/vim#18832

https://github.com/vim/vim/commit/b087c5452b4c12bfc9e7f6cecbee34aab64c92d8

Co-authored-by: Jon Parise <jon@indelible.org>
2025-12-01 10:11:34 +08:00
zeertzjqandJon Parise 8310f20526 vim-patch:9.1.1935: filetype: not all Erlang files are recognized
Problem:  filetype: not all Erlang files are recognized
Solution: Detect *.app.src and rebar.config files as erlang filetype
          (John Parise).

*.app.src files contain Erlang application definitions. (There are also
*.app files, which are similar but more often build artifacts, and that
file extension is too ambiguous to be recognized by default.)

Reference:
- https://www.erlang.org/doc/system/applications.html

Rebar is the Erlang build tool. rebar.config uses Erlang syntax.

Reference:
- https://rebar3.org/docs/configuration/configuration/

closes: vim/vim#18835

https://github.com/vim/vim/commit/2b2580e61a853617173f907bd42e12a073cf2410

Co-authored-by: Jon Parise <jon@indelible.org>
2025-12-01 10:11:34 +08:00
Tristan Knight 23ddb2028b feat(lsp): semanticTokens/range #36705
Problem:
Nvim supports `textDocument/semanticTokens/full` and `…/full/delta`
already, but most servers don't support `…/full/delta` and Nvim will try
to request and process full semantic tokens response on every buffer
change. Even though the request is debounced, there is noticeable lag if
the token response is large (in a big file).

Solution:
Support `textDocument/semanticTokens/range`, which requests semantic
tokens for visible screen only.
2025-11-30 21:06:56 -05:00
zeertzjqandDoug Kearns cdc6f85111 vim-patch:a4c43a6: runtime(vim): Update base syntax, match full :language command (#36766)
closes: vim/vim#18808

https://github.com/vim/vim/commit/a4c43a6cf54b1916339641439b74f05499a4d9dd

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-12-01 09:24:33 +08:00
fredizzimo 6ebeb07c56 feat(api): experimental nvim__exec_lua_fast #35758
Problem:
Remote UIs can't execute lua code when a blocking prompt is waiting for
input. This is needed when implementing IME pre-edit for example.

Solution:
Add an `nvim__exec_lua_fast` experimental API function, which is allowed
to run instead of being queued until after the message has been shown.
2025-11-30 19:27:02 -05:00
zeertzjqandDoug Kearns 8c1327a622 vim-patch:49f731d: runtime(doc): Improve :help :catch command specification (#36758)
The pattern argument is optional.  See :help :sort for another example.

closes: vim/vim#18834

https://github.com/vim/vim/commit/49f731d2431b2422b97f1e756c120453ce1ca984

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-11-30 18:55:38 +08:00
Olivia Kinnear 12d4c624bb feat(ex_cmds): consistent :restart behavior (#36723) 2025-11-30 02:14:28 -08:00
ymich9963 c87d92c3b4 fix(ui.open): use "start" instead of deprecated "rundll32" #36731
Problem:
The rundll32 utility is a leftover from Windows 95, and it has
been deprecated since at least Windows Vista.

Solution:
Use the start command through Command Prompt instead.
2025-11-30 00:11:43 -05:00
Riley Bruins 03d6cf7aae feat(lsp): support version in textDocument/publishDiagnostics #36754
This commit makes it so that push diagnostics received for an outdated
document version are ignored.
2025-11-29 23:38:11 -05:00
Olivia Kinnear a4b2192690 feat(lsp): lsp.enable() auto-escalates forced shutdown #36458
Problem:
LSP server may not exit even after the client was stopped/disabled via enable(false).

Solution:
Automatically force-stop after a timeout, unless `client.flags.exit_timeout = false`.
2025-11-29 14:36:29 -05:00
zeertzjqandChristian Brabandt a950e8ea9d vim-patch:ab09099: runtime(netrw): fix undefined variable curwin in s:NetrwMenu() (#36744)
fixes: vim/vim#18829

https://github.com/vim/vim/commit/ab090993ad0d9134837a0299a5c7589c66ef4db5

Co-authored-by: Christian Brabandt <cb@256bit.org>
2025-11-29 00:35:34 +00:00
zeertzjqandBruno Belanyi da6edcb91b vim-patch:9.1.1934: filetype: not all starlark files are recognized (#36743)
Problem:  filetype: not all starlark files are recognized
Solution: Detect *.sky files as starlark filetype (Bruno Belanyi)

References:
- https://docs.bazel.build/versions/0.17.1/skylark/spec.html

closes: vim/vim#18807

https://github.com/vim/vim/commit/3ba6a97fea3e62857fe473d8c08415a05b9c316b

Co-authored-by: Bruno Belanyi <bruno@belanyi.fr>
2025-11-29 00:31:52 +00:00
zeertzjqandShin Rag 8c4e675983 vim-patch:afd46fd: runtime(doc): Correct typo in usr_30.txt regarding softtabstop (#36742)
Fix typo in explanation of softtabstop and shiftwidth.

closes: vim/vim#18823

https://github.com/vim/vim/commit/afd46fd9c944804bf63ffac160a64c611ccd40be

Co-authored-by: Shin Rag <62047911+aquanjsw@users.noreply.github.com>
2025-11-29 00:22:24 +00:00
glepnir eb3201c772 fix(float): null pointer dereference, redundant call #36727
Problem: Null pointer dereference when checking *wp->w_p_stl.
win_set_inner_size called twice in win_new_float.

Solution: Add null check for wp->w_p_stl. Remove redundant
win_set_inner_size call as win_config_float already calls it.
2025-11-28 11:27:19 -08:00
zeertzjqandGirish Palya 2c6469aca4 vim-patch:9.1.1933: completion: complete_match() is not useful (#36726)
Problem:  completion: complete_match() Vim script function and
          'isexpand' option are not that useful and confusing
          (after v9.1.1341)
Solution: Remove function and option and clean up code and documentation
          (Girish Palya).

complete_match() and 'isexpand' add no real functionality to Vim. They
duplicate what `strridx()` already does, yet pretend to be part of the
completion system. They have nothing to do with the completion mechanism.

* `f_complete_match()` in `insexpand.c` does not call any completion code.
   It’s just a `STRNCMP()` wrapper with fluff logic.
* `'isexpand'` exists only as a proxy argument to that function.
   It does nothing on its own and amounts to misuse of a new option.

The following Vim script function can be used to implement the same
functionality:

```vim
  func CompleteMatch(triggers, sep=',')
    let line = getline('.')->strpart(0, col('.') - 1)
    let result = []
    for trig in split(a:triggers, a:sep)
      let idx = strridx(line, trig)
      if l:idx >= 0
        call add(result, [idx + 1, trig])
      endif
    endfor
    return result
  endfunc
```

related: vim/vim#16716
fixes: vim/vim#18563
closes: vim/vim#18790

https://github.com/vim/vim/commit/cbcbff871224115c45bbd14582749a487c6fad30

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-11-28 10:10:31 +08:00
zeertzjq 0b888ea039 vim-patch:b217ffb: runtime(doc): remove outdated help about 'completeopt' "fuzzy"
closes: vim/vim#18815

https://github.com/vim/vim/commit/b217ffbef27c416d6c9b4b7e5a08f61f54013748
2025-11-28 07:53:49 +08:00
zeertzjqandGirish Palya 812186e2dc vim-patch:9.1.1930: completion: 'completefuzzycollect' is too obscure
Problem:  completion: 'completefuzzycollect' option is too obscure
Solution: Deprecate the option, but don't error out for existing scripts,
          behave like 'completefuzzycollect' is set when fuzzy
          completion is enabled (Girish Palya).

fixes: vim/vim#18498
closes: vim/vim#18788

https://github.com/vim/vim/commit/33fbfe003c17ad25bf3903aaa89a55fe372086ba

Remove this option completely, as it's introduced in Nvim v0.12 cycle.

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-11-28 07:53:49 +08:00
glepnir e4ce0c7270 fix(health): git check and autocmd clean #36713
Problem: Incorrect Git check and improper autocmd cleanup

Solution: Add once to the autocmd and fix the Git check condition
2025-11-26 20:12:50 -08:00
zeertzjqandRobertus Chris 2c97ea3f04 vim-patch:25a736e: runtime(i3config/swayconfig): add all option for i3config only (#36710)
Since i3 version 4.24, popup_during_fullscreen has new
option `all`. So add the `all` option for popup_during_fullscreen to
prevent `all` option highlighted as error.

However, sway won't implement `all` option for popup_during_fullscreen,
so let's remove the extra options from the syntax cluster in swayconfig
syntax script after sourcing the i3config.

Reference:
- https://i3wm.org/docs/userguide.html#_popups_during_fullscreen_mode
- https://github.com/swaywm/sway/issues/8746

closes: vim/vim#18760

https://github.com/vim/vim/commit/25a736e323af9f5d22b3710ea9535a1a0dcf9a17

Co-authored-by: Robertus Chris <robertusdchris@gmail.com>
2025-11-27 01:46:05 +00:00
zeertzjqandBrent Pappas 933df98270 vim-patch:712b650: runtime(doc): Fix typo in "Jumping to Changes", usr_08.txt (#36707)
- Change "Prepended" (past tense) to "Prepend" (present tense,
  imperative).
- Add short examples clarifying the behavior of prepending a count to
  commands that jump to changes in diff mode.

closes: vim/vim#18810

https://github.com/vim/vim/commit/712b650332788011a90ffdef684e42c8af8afd1c

Co-authored-by: Brent Pappas <pappasbrent@gmail.com>
2025-11-27 07:49:44 +08:00
Miika Tuominen 7ebfc50775 fix(lsp): ignore invalid fold ranges (#36708) 2025-11-26 18:47:07 -05:00
glepnir 8a626e5c4a feat(float): 'statusline' in floating windows #36521
Problem:
Can't show 'statusline' in floating windows.

Solution:
Use window-local 'statusline' to control floating window statusline visibility.
2025-11-26 09:10:45 -08:00
glepnir 13ed225054 feat(health): create a bug report #31842
Problem:
Creating a bug report is somewhat tedious for users.
Bug reports sometimes are missing useful info.

Solution:
Add a feature to :checkhealth which automatically gets
system info and includes it in a new bug report.
2025-11-25 21:21:32 -08:00
Rob Pilling 612b2e7850 feat(api): nvim_get_commands returns function fields #36415
Problem:
nvim_get_commands does not return callbacks defined for
"preview", "complete", or the command itself.

Solution:
- Return Lua function as "callback" field in a Lua context.
- Return "preview" function in a Lua context.
- BREAKING: Return "complete" as a function instead of a boolean.
2025-11-25 21:12:39 -08:00
Maria Solano 7e09fedf43 feat(diagnostic): config.status #36693
Problem:
`diagnostic.status()` is configured via `config.signs`, but users may
want diagnostics only in statusline, not in the gutter (signs).

Solution:
Add `config.status`.
2025-11-25 21:00:00 -08:00
Muhammad Saheed 87bd16e470 fix(man.lua): :Man slow/hangs if MANPAGER is set #36689
Problem:
When `MANPAGER` is set to something like 'nvim +Man!',
`vim.system({ 'nvim' })` call waits forever for input and times out
after 10 seconds in `system()` and the assert on `stdout` being not
`nil` fails.

Solution:
Set `MANPAGER=cat` when calling `system()`
2025-11-25 12:38:32 -08:00
Riley Bruins 4107442103 feat(diagnostic): highlights in diagnostic.status() #36685
Applies the appropriate `DiagnosticSign*` highlight to each group,
resetting the highlights at the end of the expression.
2025-11-25 10:14:46 -08:00
Riley Bruins 8d8f17c924 refactor(defaults): deduplicate selection_range() mappings #36686
We don't need to specify the timeout ms here anymore, because the
implementation was changed to use it by default.
2025-11-25 10:00:28 -08:00
Branden Call e82aef2e22 feat(lsp): incremental-selection operator-pending mode #36575
Problem:
LSP incremental selection provides default visual-mode keymaps for `an`
and `in`. Operator-pending mode is not supported, so `dan` and `can` do
not apply the operation.

Solution:
Modify selection_range() to be synchronous.
Add operator-pending mappings.
2025-11-24 17:10:50 -08:00