Commit Graph

34191 Commits

Author SHA1 Message Date
Maria Solano
bd41f6eb6c fix(lsp): add deprecation comment to gen_lsp (#36185) 2025-10-14 16:55:06 -04:00
zeertzjq
41199c45d6 fix(clipboard): avoid using stale register width (#36178)
Fix #36177
Follow-up to #35038
2025-10-14 05:04:37 +00:00
zeertzjq
55bd54e526 Merge pull request #36174 from zeertzjq/vim-0940465
vim-patch: rst runtime file updates
2025-10-14 11:38:55 +08:00
zeertzjq
c5d85646eb vim-patch:64c8105: runtime(rst): Preserve indentation of directives
This patch preserves indentation in comments.  It work by removing the
explicit 3-space indentation and replaces with with an expression which
uses the current value with a minimum of three spaces.

Discussed in the mailing list:

    https://groups.google.com/g/vim_dev/c/rn8ZLDrCbYU

Thanks to Friedrich Romstedt for reporting and Christian Brabandt for
investigating the issue.

closes: vim/vim#18566

64c8105867

Co-authored-by: Marshall Ward <marshall.ward@gmail.com>
2025-10-14 10:44:57 +08:00
zeertzjq
1ccbaa6c25 vim-patch:5ffb23c: runtime(rst): Update b:undo_ftplugin variable
The value of this variable is evaluated when the 'filetype' option is
changed and should be a command string that will undo any configuration
changes that the plugin has made.

See :help undo_indent for details

related: vim/vim#18566

5ffb23c967

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-14 10:44:47 +08:00
zeertzjq
6a6ba5c567 vim-patch:46d8697: runtime(rst): Style update
Minor style and whitespace changes to the reST syntax file, to sync with
the development branch.

related: vim/vim#18566

46d86979a9

Co-authored-by: Marshall Ward <marshall.ward@gmail.com>
2025-10-14 10:44:37 +08:00
zeertzjq
d6a9679b46 vim-patch:a70f346: runtime(rst): Enable spell checking for more syntax constructs
Enable spell checking for more recognised constructs:

* comments
* footnotes
* citations
* directives
* inline markup (*text*, **text**, ...)

related: vim/vim#18566

a70f346706

Co-authored-by: Kirk Roemer <91125534+kirk-roemer@users.noreply.github.com>
2025-10-14 10:44:28 +08:00
zeertzjq
263d0f86b4 vim-patch:d7fb4cd: runtime(rst): Inline literal escape support
Escape character support was disabled for inline literals, which are
handled separately from standard inline highlights, in that escape
characters are unsupported.

related: vim/vim#18566

d7fb4cd2f8

Co-authored-by: Marshall Ward <marshall.ward@gmail.com>
2025-10-14 10:44:20 +08:00
zeertzjq
08e29ec4a1 vim-patch:5485827: runtime(rst): Recognise numeric footnotes [1] correctly
The markup for footonotes [1] and citations [2] are almost identical.
The difference is that footnotes allow numeric values but citations
allow every valid reference name except numeric values.

The regex for matching citations currently only checks for valid
reference names but does not exclude number-only labels, thus also
matches numeric footnotes.  To match such footnotes, e.g. ``[1]`` define
the syntax rule for footnotes after the syntax rule for citations so it
gets higher precedence and matches first.

[1] https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#footnotes
[2] https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#citations

related: vim/vim#18566

5485827c5f

Co-authored-by: Kirk Roemer <91125534+kirk-roemer@users.noreply.github.com>
2025-10-14 10:44:09 +08:00
zeertzjq
2b2a297bf1 vim-patch:4e9f16d: runtime(rst): Correctly end nested comments
Previously, a comment in a directive block would incorrectly mark
all subsequent lines in the directive block as comment, because the
syn-region did not check the leading indent.

related: vim/vim#18566

4e9f16dd1e

Co-authored-by: Antony Lee <anntzer.lee@gmail.com>
2025-10-14 10:43:48 +08:00
zeertzjq
6b006a03c4 vim-patch:47949b4: runtime(rst): Fix highlights nested in directive body
The leading two dots of a RST directive gets matched by
rstExplicitMarkup group first, and then the directive name and directive
body will be matched by the groups contained in rstDirectives cluster in
order.

The rstExDirective group in rstDiretives matches any RST directives
other than footnote, citation and hyperlink target, therefore admonition
and code block will be matched by rstExDirective. This fix has
rstExDirective contain rstExplicitMarkup so as to enable recursive RST
directives match.

The interpreted texts enclosed in quotes are not highlighted within a
RST directive body, because the rstCruft cluster contains a non-existing
rstInterpretedText group.It should be renamed to
rstInterpretedTextOrHyperlinkReference which is defined in a
DefineInlineMarkup function call.

related: vim/vim#18566

47949b4b46

Co-authored-by: Minjie Xu <madjxatw@gmail.com>
2025-10-14 10:43:09 +08:00
zeertzjq
dbddd5989a vim-patch:310082f: runtime(rst): Add support for rst_minlines
Following the approach used in other syntax definitions, add support for
defining the "syntax sync minlines=..." values for rst files in the
users' ~/.vimrc files, to allow the users to adjust that value in case
syntax highlighting stops working for some of the files they edit.

related: vim/vim#18566

310082f3cf

Co-authored-by: Dragan Simic <dsimic@manjaro.org>
2025-10-14 10:42:43 +08:00
zeertzjq
7455c5ce88 vim-patch:0940465: runtime(rst): Fix doctest block syntax
A doctest block usually spans multiple lines, e.g.

>>> print('this is a Doctest block')
this is a Doctest block

Remove ``oneline`` argument to syntax region as this requirement is not
met.  Consequently, also remove ``display`` as the prerequisite (the
syntax region is on a single line) is no longer met.

----

Recognise '>>>' inside doctest blocks

Recognise subsequent '>>>' prompts in doctest blocks, e.g.

>>> print('this is a Doctest block')
this is a Doctest block
>>> print('this is a second Doctest block')
this is a second Doctest block
A doctest block usually spans multiple lines, e.g.

>>> print('this is a Doctest block')
this is a Doctest block

related: vim/vim#18566

0940465866

Co-authored-by: Kirk Roemer <91125534+kirk-roemer@users.noreply.github.com>
2025-10-14 10:41:58 +08:00
zeertzjq
fc74b9fb34 vim-patch:83eb1da: runtime(doc): Normalise formatting of builtin function descriptions (#36172)
- Column align tags
- Move tags to the same line as the function signature
- Move descriptions to the line below the function signature
- Add missing hyperlinks to builtins in the description text

closes: vim/vim#18478

83eb1da19e

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-14 02:23:26 +00:00
zeertzjq
72578e5e28 vim-patch:5fe4faa: runtime(bitbake): fix multiline Python function parameter syntax (#36173)
Fix syntax highlighting for def-style Python functions, with their
parameters spanning multiple lines. E.g. the following should match as
valid Python code in Bitbake recipes:

    def myFunction(one, two, \
                   three, four):
        pass

For this to work, use the prefix modifier "\_" before the wildcard ".",
to also match newline characters.

closes: vim/vim#18565

5fe4faa711

Co-authored-by: Martin Schwan <m.schwan@phytec.de>
2025-10-14 02:17:24 +00:00
zeertzjq
c5ed5504f4 vim-patch:6ab4547: runtime(doc): fix inconsistent alignment (#36171)
closes: vim/vim#18562

6ab45471d4
2025-10-14 01:51:23 +00:00
zeertzjq
d78215f6a2 vim-patch:9.1.1854: unnecessary code in optionstr.c (#36170)
Problem:  unnecessary code in optionstr.c
Solution: Remove it (Hirohito Higashi)

fixes: vim/vim#18551
closes: vim/vim#18554

91959a797d

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2025-10-14 01:49:17 +00:00
zeertzjq
b1b6234208 Merge pull request #36169 from zeertzjq/vim-9.1.1849
vim-patch:9.1.{1849,1853}
2025-10-14 09:12:17 +08:00
zeertzjq
93d1473732 vim-patch:9.1.1853: Ctrl-F and Ctrl-B at more prompt not working with key protocol
Problem:  Ctrl-F and Ctrl-B at more prompt not working with kitty
          keyboard protocol or modifyOtherKeys (after v9.1.1849).
Solution: Call merge_modifyOtherKeys() in get_keystroke() (zeertzjq).

closes: vim/vim#18558

6622dc2ded
2025-10-14 08:46:54 +08:00
zeertzjq
92b834fc7a vim-patch:9.1.1849: CTRL-F and CTRL-B don't work in more prompt
Problem:  CTRL-F and CTRL-B don't work in more prompt
Solution: Make CTRL-F and CTRL-B scroll by a screen down/up
          (Bjoern Foersterling)

closes: vim/vim#18545

fcf4c435af

Co-authored-by: bfoersterling <bjoern.foersterling@gmail.com>
2025-10-14 08:42:06 +08:00
Tomas Slusny
d590644620 fix(difftool): silence :only command in setup_layout #36168
Suppresses output from the :only command by passing the { silent = true }
modifier to vim.cmd.only(). This prevents unnecessary messages when
setting up the diff layout.

Closes #36167
2025-10-13 17:04:48 -07:00
Ethan Praeter
0ed5e00077 fix(coverity/532324): free skip_until to prevent leak #36109 2025-10-13 16:29:37 -07:00
Tomas Slusny
aaec3e5b0d fix(difftool): add check for window number when cleaning up layout #36161
- Move autocmd cleanup logic back to setup_layout as WinClosed autocmds
  were triggering for every closed window even when buf scoped, and when
  buf scoped, pattern filter did not work.
- Cleanup when quickfix window is closed as well to prevent state where
  on closing quickfix setup_layout will reset it after with empty
  content because of WinClosed autocmds triggering.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-10-13 11:12:42 -07:00
Yochem van Rosmalen
25322a3a3b fix(help): only set url for help files in $VIMRUNTIME #36165
Problem:
Checking if the tag is nvim-owned (defined in a $VIMRUNTIME/doc/*.txt
file) is too expensive for now without non-obvious workarounds

Solution:
Only set url extmarks for $VIMRUNTIME/doc/*.txt files.

Closes: #36163
2025-10-13 11:08:37 -07:00
zeertzjq
a65202e6bd vim-patch:partial:c58f91c: runtime(doc): Whitespace updates (#36160)
Use double sentence spacing and wrap lines at 'textwidth'.  Code
examples and tables were not wrapped unless this had already been done
locally.

closes: vim/vim#18453

c58f91c035

Fix incorrect docs in :h ModeChanged.
Cherry-pick :h bufnr() changes from patch 8.1.2080.

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-13 08:53:21 +00:00
zeertzjq
7468db5187 vim-patch:partial:9.1.1847: No cmdline completion for :echoconsole and :echowindow (#36157)
Problem:  No cmdline completion for :echoconsole, :echowindow and second
          expression after :echoerr.
Solution: Set EXPAND_EXPRESSION for :echoconsole and :echowindow, and
          check for multiple expressions after :echoerr (zeertzjq).

closes: vim/vim#18552

7aaca97fc5
2025-10-13 15:35:16 +08:00
zeertzjq
7ac6e91d06 Merge pull request #36159 from janlazo/vim-8.2.3962
vim-patch:8.2.{2423,3962,3968,4773}
2025-10-13 13:07:55 +08:00
Jan Edmund Lazo
b764a1ba93 vim-patch:8.2.2423: missing error message
Problem:    Missing error message.
Solution:   Add the error message.

61015162ba

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-10-13 00:17:39 -04:00
Jan Edmund Lazo
e96c61d92d vim-patch:8.2.4773: build failure without the +eval feature
Problem:    Build failure without the +eval feature.
Solution:   Use other error message.  Avoid warnings.

a9549c9e8f

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-10-12 23:57:19 -04:00
Jan Edmund Lazo
24675ffa97 vim-patch:8.2.3968: build failure
Problem:    Build failure.
Solution:   Add missing changes.

e70cec9760

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-10-12 23:33:20 -04:00
Jan Edmund Lazo
f211af3ab7 vim-patch:8.2.3962: build fails for missing error message
Problem:    Build fails for missing error message.
Solution:   Add changes in missed file.

d0819d11ec

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-10-12 23:33:20 -04:00
zeertzjq
446161ae08 vim-patch:2a33b49: runtime(make): syntax highlighting update for makeDefine (#36158)
Previously contents in makeDefine are nearly highlighted as Define, so
comments and targets shares the same color as Define, making it hard to
distinguish if someone write large block of targets-recipes as defined
function.

Such scenario is common in building data analysis pipeline. Recipes are
reused and targets may have multiple variables, and a single % implicit
rule is not enough.

closes: vim/vim#18403

2a33b499a3

Co-authored-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
2025-10-13 08:57:59 +08:00
zeertzjq
83c7193c11 vim-patch:9.1.1850: completion: not triggered after i_Ctrl-W/i_Ctrl-U (#36156)
Problem:  completion: not triggered after i_Ctrl-W/i_Ctrl-U
Solution: Trigger autocomplete when entering Insert mode
          (Girish Palya).

fixes: vim/vim#18535
closes: vim/vim#18543

da2dabc6f7

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-10-13 00:08:53 +00:00
glepnir
72b0bfa1fb fix(api): nvim_parse_cmd handle nextcmd for commands without EX_TRLBAR (#36055)
Problem: nvim_parse_cmd('exe "ls"|edit foo', {}) fails to separate
nextcmd, returning args as { '"ls"|edit', 'foo' } instead of { '"ls"' }
with nextcmd='edit foo'.

Solution: Skip expressions before checking for '|' separator.
2025-10-13 07:36:06 +08:00
zeertzjq
b0edab3631 vim-patch:40dec46: runtime(doc): Replace rotted URL links (#36151)
Both links to libXpm and mysyntax.vim are up but the listed
libXpm version is not offered anymore and mysyntax.vim is no
longer served at all.  The link for searching dictionary
extensions of Apache OpenOffice is broken; an alternative
link can be discovered from the home page.  Finally, the
English dictionaries Apache OpenOffice extension is probably
gone for good (is it incompatible with more recent versions
of the suite?) as its page neither available directly nor
discoverable through search.

closes: 18549

40dec4609d

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2025-10-13 07:24:58 +08:00
zeertzjq
398c861daf vim-patch:37c8ce7: runtime(cangjie): Fixes and improvements for syntax script (#36150)
Housekeeping:
- Add GitHub repository link
- Update Last Change date

Style:
- Add Vim modeline for consistent formatting
- Unify indentation style (spaces to tabs)
- Wrap long cluster definitions for readability

New Features:
- Add highlighting for escape sequences
- Add error highlighting for invalid rune literals
- Add syntax-based folding support

Fixes:
- Fix rune matching to allow only a single character/escape
- Fix highlighting for double-quoted rune literals
- Fix highlighting for floats with exponents and type suffixes

37c8ce7fac

Co-authored-by: Wu Junkai <wujunkai20041123@outlook.com>
Co-authored-by: dkearns <dougkearns@gmail.com>
2025-10-13 07:24:45 +08:00
Yochem van Rosmalen
62d3a2110d fix(help): wrong tag url in third-party help docs #36115
fix(help): only set url for nvim-owned tags

Problem:
1. gx on |nonexistingtag| opens
https://neovim.io/doc/user/helptag.html?nonexistingtag.
2. b:undo_ftplugin doesn't remove url extmarks.

Solution:
1. Check if the tag is defined in a help file in $VIMRUNTIME.
2. Solution: clear namespace for buffer in b:undo_ftplugin.
2025-10-12 15:08:18 -07:00
Tomas Slusny
c6113da5a9 fix(difftool): fully resolve symlinks when comparing paths #36147
Fixes issue on mac where it was constantly reloading buffers as paths
were not being normalized and resolved correctly (in relation to buffer
name).

Quickfix entry:
/var/folders/pt/2s7dzyw12v36tsslrghfgpkr0000gn/T/git-difftool.m95lj8/right/app.vue

Buffer name:
/private/var/folders/pt/2s7dzyw12v36tsslrghfgpkr0000gn/T/git-difftool.m95lj8/right/app.vue

/var was synlinked to /private/var and this was not being properly
handled.

Also added lazy redraw to avoid too many redraws when this happens in
future and added test for symlink handling.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-10-12 18:25:14 +00:00
Vlad
638d44ded8 test(shada/buffers_spec): cleanup output file #36154
Problem

As part of https://github.com/neovim/neovim/pull/34373 a unit test was
added that executes the `write` command. This causes a file to be
created named `Xtestfile-functional-shada-buffers-2`. In general tests
should cleanup resources they create.

Solution

Remove the call to `write`, test functions correctly without it.
2025-10-12 11:09:37 -07:00
Tomas Slusny
c9b74f8b7e fix(difftool): ensure split layout, use systemlist #36145
- Always open the right window to the right, regardless of 'splitright'
  setting, ensuring the left window is always leftmost.
- Use `vim.fn.systemlist` for diffr output to avoid manual splitting.
- Add a test to verify window layout consistency with 'splitright' and
  'nosplitright' options.
- Escape quotes in git difftool example properly.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-10-12 05:11:27 +00:00
zeertzjq
f4e4799f27 docs: small fixes (#36146)
Close #35989
Close #36031
Close #36107

Co-authored-by: Kieran Moy <kfatyuip@gmail.com>
Co-authored-by: William Sprent <william@sprent.dk>
Co-authored-by: David Briscoe <43559+idbrii@users.noreply.github.com>
2025-10-12 12:16:14 +08:00
Vlad
2ea7333f64 test(plugin/pack_spec): handle pcall path truncation #36143
Problem

In `vim.pack` the source of any errors is included in the `update`
buffer from lua's `pcall` method. Since the full path is known it is
replaced in the unit test by the string `VIM_PACK_RUNTIME`. The issue is
that `pcall` does not necessarily include the full path, it instead uses
the `lua_Debug` `short_src` value which can be truncated. This means
depending on where you've cloned the repo locally the test can fail.

Solution

Change the replacement pattern for the traceback to be more generic and
handle any path prefix, not just the value of `vim.env.VIMRUNTIME`.
2025-10-12 03:23:19 +00:00
glepnir
072f126453 fix(ui): 'pumborder' parsing, shadow #36127
Problem:
1. Setting `pumborder=+,+,+,+,+,+,+,+` failed to render the custom
   border characters correctly. The issue occurred in `parse_winborder()`
   where it incorrectly used `p_winborder` instead of the `border_opt`
   parameter when the option value didn't contain commas.
2. In `pum_redraw()`, calling `parse_border_style()` directly with the
   option string failed to parse comma-separated border characters.
3. Missing documentation for PmenuShadow and PmenuShadowThrough
   highlight groups used by the shadow border style.
4. Coverity reports CID 631420: passing WinConfig (480 bytes) by value
   in `grid_draw_border()`.
5. crash when using `shadow` value on pumborder.

Solution:
1. Fix `parse_winborder()` to use `border_opt` parameter consistently,
   ensuring the correct option value is parsed regardless of which
   option (winborder/pumborder) is being set.
2. Update `pum_redraw()` to call `parse_winborder()` instead of
   `parse_border_style()`, properly handling both predefined styles
   and custom comma-separated border characters.
3. Add documentation for PmenuShadow (blended shadow areas) and
   PmenuShadowThrough (see-through corners) highlight groups.
4. Change `grid_draw_border()` to accept WinConfig by pointer.
5. When the "shadow" style is used, no additional row and column offset
   is applied, and the border width is reduced.
2025-10-11 19:48:27 -07:00
luukvbaal
c7fd0c17b1 fix(window): don't make hidden/unfocusable previous window current #36142
Problem:  Previous window is made current while it is unfocusable/hidden.
Solution: Treat hidden/unfocusable window as an invalid previous window.
2025-10-11 19:41:09 -07:00
Tomas Slusny
fec02ae8e4 feat(plugins): nvim.difftool can compare directories #35448
Problem:
Built-in diff mode (nvim -d) does not support directory diffing
as required by git difftool -d. This makes it difficult to compare
entire directories, detect renames, and navigate changes efficiently.

Solution:
Add a DiffTool plugin and command that enables side-by-side diffing of
files and directories in Neovim. The plugin supports rename detection,
highlights changes in the quickfix list, and provides a user command for
easy invocation. This allows proper integration with git difftool -d for
directory comparison.

Example git config:

```ini
[diff]
    tool = nvim_difftool

[difftool "nvim_difftool"]
    cmd = nvim -c "packadd nvim.difftool" -c "DiffTool $LOCAL $REMOTE"
```

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
Co-authored-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com>
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2025-10-11 19:24:39 -07:00
zeertzjq
bc2fe135d1 vim-patch:6800da6: runtime(doc): Add missing optional tail command-name specs (#36140)
- Use the optional tail command-name specs at help entries for :keepalt,
  :lcd, :cfdo, :lfdo, :wundo, :rundo, :bdelete and :bunload.
- Add missing shortname tags.

closes: vim/vim#18547

6800da6ff1

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-11 23:41:13 +00:00
zeertzjq
b261515775 vim-patch:37aabac: runtime(doc): update credit section for Girish Palya (#36132)
closes: vim/vim#18544

37aabaca64

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-10-12 07:04:53 +08:00
atusy
97ab24b9c7 fix(lsp): _get_workspace_folders does not handle root_dir() function #36071
* fix(lsp): type of root_dir should be annotated with string|fun|nil
* feat(lsp): support root_dir as function in _get_workspace_folders
* feat(lsp): let checkhealth support root_dir() function

Examples:

    vim.lsp: Active Clients ~
    - lua_ls (id: 1)
      - Version: <Unknown>
      - Root directories:
          ~/foo/bar
          ~/dev/neovim

Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2025-10-11 16:01:05 -07:00
phanium
020d5e0f7e fix: stale lines("w$") after nvim_win_set_height when splitkeep=screen #36056
Problem: when splitkeep=screen, after enlarge float window with
nvim_win_set_height, lines("w$") return stale value

Solution: update in win_set_inner_size
2025-10-11 14:48:39 -07:00
Yochem van Rosmalen
26bd9bfab8 fix(undotree): highlight extmarks like normal text #36087
Problem:
Difference in highlight color between normal lines and extmark lines is
distracting and conveys little information.

Solution:
Set extmarks highlight to the Normal group.
2025-10-11 13:39:51 -07:00