Commit Graph

9677 Commits

Author SHA1 Message Date
zeertzjq
046c9b678c vim-patch:8e600ad: runtime(doc): Normalise heredoc end marker label at :help const
Match the name used at :help :let-heredoc, {endmarker}.

closes: vim/vim#18638

8e600aded2

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-27 08:20:14 +08:00
zeertzjq
2407833ba1 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
2025-10-26 22:19:32 +08:00
Justin M. Keyes
07461bac27 Merge #34940 refactor(spell): migrate to Lua, drop netrw dep 2025-10-25 20:08:02 -04:00
Justin M. Keyes
4d501c93bb refactor(spell): cleanup
- prefer `stdpath(data)/site/spell` instead of looking for random dirs in 'runtimepath'.
- drop unused functions `choose_directory`, `setup`, etc.
2025-10-26 01:28:37 +02:00
zeertzjq
a121ede1bf vim-patch:7193cab: runtime(make): Prevent makeTargetinDefine matching extra line
This fixes a bug introduced in 2a33b499a3d7f46dc307234847a6562cef6cf1d8:
When makeTargetinDefine ends with makeIdent, makeSpecTarget or
makeComment, the following line is also matched as makeTargetinDefine.

So, add keepend to prevent that just as makeTarget does.

related: vim/vim#18403
closes: vim/vim#18570

7193cab6c8

Co-authored-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
2025-10-26 07:22:59 +08:00
zeertzjq
4a2b9ec3c7 vim-patch:bbf4a10: runtime(unison): update syntax from upstream repository
closes: vim/vim#18623

bbf4a10fe4

Co-authored-by: Anton Parkhomenko <mailbox@chuwy.me>
2025-10-26 07:22:59 +08:00
Tom Ampuero
7c5ff99e8a refactor(spell): migrate to Lua, drop netrw dependency
Problem:
Spell file downloads relied on Vimscript and netrw (:Nread). If netrw is
disabled, downloads fail.

Solution:
Port the logic to Lua as `nvim.spellfile` and wire it via a Lua plugin that
handles `SpellFileMissing`. Use `vim.net.request()` with a timeout for HTTP,
prompt via `vim.fn.input` and report via `vim.notify`.

Closes #7189
2025-10-26 00:33:41 +02:00
skewb1k
e239179871 fix(lsp): ensure bufnr is passed for buffer-local requests (#36325)
Problem:
Some LSP method handlers were making requests without specifying a
bufnr, defaulting to 0 (current). This works in most cases but
fails when client attaches to background buffers, causing
assertions in handlers to fail.

Solution:
Ensure bufnr is passed to Client.request for buffer-local methods.
2025-10-25 14:51:13 -07:00
Justin M. Keyes
fe4faaf81a docs: dev-quickstart, dev-test #36304 2025-10-24 17:24:51 -07:00
zeertzjq
520568f40f fix(terminal): adjust marks when deleting scrollback lines (#36294)
This also fixes inconsistent scrolling behavior on terminal output when
cursor is in the middle of the buffer and the scrollback is full.
2025-10-25 06:48:04 +08:00
xvzc
095b9f98f3 fix(filetype): handle invalid bufnr in _getlines(), _getline() #36272
**Problem:**
`vim.filetype.match({ filename = 'a.sh' })` returns `nil` because
an invalid buffer ID is passed to `vim.api.nvim_buf_get_lines()`.
For filetypes like `csh`, `txt`, or any other extensions that call
`_getlines()` or `_getline()` to detect their filetypes, the same
issue occurs.

When only the `filename` argument is passed, an error is raised
inside a `pcall()` that wraps the filetype detection function,
causing it to return no value without showing any error message.

**Solution:**
Validate the `bufnr` value in `_getlines()` and `_getline()`.
2025-10-23 17:34:12 -07:00
Justin M. Keyes
a983e69708 docs: dev_tools, dev_arch 2025-10-24 02:14:29 +02:00
Justin M. Keyes
1f2883e879 fix(outline): use 2-space indent instead of 1-space
2 spaces is more visually distinct at very little cost.
2025-10-24 02:07:37 +02:00
Justin M. Keyes
6f8ef3bdb4 docs(faq): h3 => h2 2025-10-24 02:07:37 +02:00
Justin M. Keyes
7838c242e9 docs: types, news, lua-plugin
- mention "lua_ls", not "luals". https://github.com/neovim/neovim/discussions/36182

Co-authored-by: Maria Solano <majosolano99@gmail.com>
2025-10-24 02:07:37 +02:00
Justin M. Keyes
4129fa5bac Merge #36299 improve PackChanged event 2025-10-23 18:29:24 -04:00
zeertzjq
67832710a5 fix(terminal): wrong row in TermRequest with full scrollback (#36298)
Problem:  Wrong row in TermRequest with full scrollback.
Solution: Subtract by the number of lines deleted from scrollback.
2025-10-24 06:01:13 +08:00
Evgeni Chasnovski
83f7d98518 docs(pack): add plugin hooks example
Problem: No examples of how to use `PackChanged[Pre]` for plugin hooks.

Solution: Add examples of creating plugin hooks.
2025-10-23 20:28:13 +03:00
Evgeni Chasnovski
16a6559ec6 fix(pack)!: do not trigger PackChanged[Pre] kind=update during install
Problem: `PackChanged[Pre]` events with `kind=update` are triggered both
  during plugin's initial installation and after already installed
  plugin was updated.

  It was a deliberate decision to allow writing only a single update
  hook to act as a dedicated "build" entry point (like execute `make` or
  `cargo build —release`). This mimics how other plugin managers have a
  single "build" command.

  This was a result of 'mini.deps' experience with the different
  approach: "update" hooks are not run during install. This proved to be
  confusing as it requires to write two hooks. But also the reason might
  be that 'mini.deps' names it "checkout" hook instead of "update".

  However, the `vim.pack` event approach makes it lower cost to handle
  separate "update" and "install" events. Something like
  `if ev.data.kind == 'install' or ev.data.kind == 'update' then`
  instead of two autocommands.
  Plus this makes clearer separation of events.

Solution: do not trigger `PackChanged[Pre] kind=update` event during
  install.
2025-10-23 20:28:09 +03:00
Evgeni Chasnovski
a9db6ec6fa feat(pack): add active field to PackChanged event data
Problem: Inside `PackChanged[Pre]` callbacks it might be useful to tell
  if the affected plugin is active or not. It is already possible via
    extra `vim.pack.get({ 'plug-name' })[1].active`, but it is not quite
    user-friendly for something that might be needed frequently in real
    world use cases.

Solution: Supply extra `active` event data field.
2025-10-23 17:50:03 +03:00
Fredrik Lanker
323d5527ee fix(lsp): set 'linebreak' in floating windows (#36275)
Set linebreak to avoid splitting words.

Fix #36268
2025-10-22 13:38:47 -04:00
luukvbaal
c94b7b93c0 fix(ui2): start treesitter after deleting cmdline buffer (#36274)
Problem:  Treesitter is not started in new cmdline buffer after deletion.
Solution: Start treesitter when highlighter buffer no longer matches.
2025-10-22 16:16:36 +02:00
Robert
cf48741227 docs(vimfn): getcwd() behavior #36222 2025-10-21 10:40:02 -07:00
Riley Bruins
3c4acc0f1a fix(lsp): noisy log message when enabling server without config #36264
This warning doesn't really make sense, since the `enable()` call is
meant to be run before the `lsp.config` calls. It will be logged many
times (once for each enabled LSP) at startup.

This is especially annoying because calling `enable()` after
configuration causes the first opened buffer not to have its filetype
set in some situations. This is a separate bug which really needs to be
fixed, and makes this superfluous logging more likely.
2025-10-21 07:16:19 -07:00
Till Bungert
b67eff38fe fix(lsp): deduplicate completion items #36166
The current implementation has a race condition where items are appended
to the completion list twice when a second completion runs while the
first is still going. This hotfix just deduplicates the entire list.

Co-authored-by: Tomasz N <przepompownia@users.noreply.github.com>
2025-10-20 15:45:37 -07:00
Maria Solano
c90135d6e5 docs(ui): 'pumborder' #36255 2025-10-20 15:10:03 -07:00
An Guoli
671841673e vim-patch:ce4f9d2: runtime(nohlsearch): fix CursorHold loop (#36221)
fix exception when entering the insert mode with paste

closes: vim/vim#16818

ce4f9d2a10
2025-10-18 09:28:58 +08:00
Calum Smith
d3f5437542 docs(lsp): specify exactly how vim.lsp.config merges configs (#36214)
docs(lsp): specify exactly how `vim.lsp.config` merges configs…

Problem:

It already says that the behaviour is defined by `vim.tbl_deep_extend`,
but that can mean very different things depending on the `behavior`
parameter.

Solution:

Specify that it uses "force".
2025-10-16 18:43:15 -07:00
David
371ad48135 fix(lsp): replace string types with LSP method alias type annotations where appropriate. (#36180)
fix(lsp): replace `string` types with LSP method alias where appropriate
2025-10-16 12:39:53 -04:00
Davidyz
b459bf5961 fix(lsp): include missing LSP methods and update type annotations 2025-10-16 11:05:28 +01:00
Maria Solano
382963891c fix(undotree): check foldmethod before invoking fold (#36192) 2025-10-14 21:59:25 -07:00
Mathias Fußenegger
cdc3702f8d revert "fix(lsp): _get_workspace_folders does not handle root_dir() function" #36183
This reverts commit 97ab24b9c7.

See discussion in https://github.com/neovim/neovim/pull/36071
2025-10-14 19:26:01 -07:00
Tomasz N
106cacc93b fix(pumblend): do not apply special highlight attrs from bg layer #36186
Problem: if pumblend >= 50, non-whitespace menu character gets italic,
bold, underline (or similar) attribute from the cell underneath, which
is not really useful and can't be "blended".

Solution: drop highlight combination for that special case (@zeertzjq
on #36133).

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2025-10-14 18:48:27 -07:00
Justin M. Keyes
bf4710d8c3 fix(lsp): "attempt to index nil config" #36189
Problem:
If a client doesn't have a config then an error may be thrown.
Probably caused by: 2f78ff816b

    Lua callback: …/lsp.lua:442: attempt to index local 'config' (a nil value)
    stack traceback:
            …/lsp.lua:442: in function 'can_start'
            …/lsp.lua:479: in function 'lsp_enable_callback'
            …/lsp.lua:566: in function <…/lsp.lua:565>

Solution:
Not all clients necessarily have configs.
- Handle `config=nil` in `can_start`.
- If user "enables" an invalid name that happens to match a *client*
  name, don't auto-detach the client.
2025-10-15 00:43:25 +00:00
zeertzjq
c8d6f3cf8a vim-patch:c95e143: runtime(doc): Miscellaneous documentation fixes (#36187)
- Use full option name for 'clipboard' at :help :put.
- Minor rewordings, typo fixes, and formatting fixes.

related: vim/vim#18453
closes: vim/vim#18572

c95e143819

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2025-10-14 23:09:25 +00: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
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