Commit Graph

36795 Commits

Author SHA1 Message Date
zeertzjq
d4e6f92f52 vim-patch:9.2.0610: cindent: closing brace in a comment affects the next line's indent (#40155)
Problem:  A '}' inside a // line comment changes the indentation of the
          following line inside an enum or struct (rendcrx).
Solution: Stop scanning the line once a line comment is reached, so a brace
          inside the comment is no longer mistaken for an unmatched brace.

fixes:  vim/vim#20455
closes: vim/vim#20458

9dd86dff9b

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 07:37:08 +08:00
dependabot[bot]
5a9a357bf0 ci: bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v6.0.3)

Updates `github/codeql-action` from 4.36.0 to 4.36.1
- [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.0...v4.36.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-09 18:41:29 +02:00
zeertzjq
fcd2adf8ae test: virt_lines_overflow=wrap with virt_lines_leftcol (#40147) 2026-06-09 02:30:38 +00:00
James McCoy
6c2f2b73eb fix(unittest): preprocess failure when __typeof declarations present #40145
On Debian's ppc64el build, the unittests are failing during preprocess
with

    test/unit/testutil.lua:298: declaration specifier expected near '__typeof' at line 298
    test/unit/testutil.lua:282: assertion failed!

Running with NVIM_TEST_PRINT_I set shows these lines as being the
problem when trying to preprocess test/unit/fixtures/posix.h.

    690     extern __typeof (strtold) strtold ;
    691     extern __typeof (strtold_l) strtold_l ;
    692     extern __typeof (strfroml) strfroml ;
    693     extern __typeof (qecvt) qecvt ;
    694     extern __typeof (qfcvt) qfcvt ;
    695     extern __typeof (qgcvt) qgcvt ;
    696     extern __typeof (qecvt_r) qecvt_r ;
    697     extern __typeof (qfcvt_r) qfcvt_r ;
2026-06-08 18:28:54 -04:00
Justin M. Keyes
8f584031bc docs: misc #40126 2026-06-08 16:12:14 -04:00
zeertzjq
bedfa7d58f Merge pull request #40113 from jreidx/feat/virt-lines-wrap
feat(extmark): virt_lines_overflow "wrap" and "auto"
2026-06-08 22:57:57 +08:00
zeertzjq
5e8fbfd043 perf(extmark): fix performance regression for non-wrapped virt lines 2026-06-08 22:37:43 +08:00
jreidx
d9aa06eed8 feat(extmark): virt_lines_overflow "wrap" and "auto"
Problem: Extmark has support for horizontal scrolling and truncating, but not wrapping.

Solution: Extend virt_lines_overflow flags to support "wrap" and "auto" based on proposed changes in #18282.
2026-06-08 22:19:25 +08:00
zeertzjq
bb93ad2258 test: add benchmark for drawing many non-wrapped virt lines (#40143) 2026-06-08 22:14:22 +08:00
zeertzjq
4ab670399b vim-patch:9.2.0596: cmdline completion popup cannot be scrolled with the mouse (#40142)
Problem:  In command-line completion with a popup menu ('wildoptions'
          contains "pum"), the info popup shown next to the menu could
          not be scrolled, unlike the Insert mode completion info popup
          which scrolls with the mouse wheel.
Solution: When the mouse pointer is on top of the info popup, scroll it
          with the mouse wheel in command-line mode as well, without
          closing the completion popup menu.

closes: vim/vim#20146
closes: vim/vim#20418

96dbab257a

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 20:53:10 +08:00
glepnir
3f37b230af vim-patch:9.2.0601: matchfuzzypos() returns garbage positions for long candidates (#40140)
Problem:  A needle that only matches past char 1024 gives an INT_MIN + 1
          score with unset positions, e.g.
          matchfuzzypos([repeat('a',1024)..'z'], 'az').
Solution: Drop the candidate when match_positions() returns SCORE_MIN.

closes: vim/vim#20435

52003f7fc1
2026-06-08 05:27:20 +00:00
zeertzjq
9aa33a37d8 Merge pull request #40141 from zeertzjq/vim-1fa6fed
vim-patch: runtime file updates
2026-06-08 05:57:22 +02:00
zeertzjq
7367ab0d79 vim-patch:19a5020: runtime(doc): Fix paypal link
19a5020347

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-06-08 11:43:52 +08:00
zeertzjq
a28b619956 vim-patch:4eb50ba: runtime(nsis): Update NSIS plugin
closes: vim/vim#20439

4eb50ba61c

Co-authored-by: K.Takata <kentkt@csc.jp>
2026-06-08 11:43:36 +08:00
zeertzjq
413731d0b1 vim-patch:1fa6fed: runtime(javascript): add 'Symbol' as a type; add 'void' as a reserved word
closes: vim/vim#20440

1fa6fed846

Co-authored-by: Ilia Dubovik <askdubovik@gmail.com>
2026-06-08 11:43:14 +08:00
Justin M. Keyes
ec7dab077b fix(vim.hl): range(0,…) highlight not cleared after buffer-switch #40130
Problem:
When `vim.hl.range(0, …, { timeout = N })` is called, the deferred
`range_hl_clear` captures `buf=0`, which resolves to an arbitrary
"current buffer" at timeout. This may cause a stale highlight that never
gets cleared.

Solution:
Resolve `buf=0` explicitly, before `range_hl_clear` captures it.
2026-06-06 10:26:12 +00:00
zeertzjq
9bdbc176eb vim-patch:9.2.0598: tests: Test_statusline() is flaky (#40128)
Problem:  Test_statusline() occasionally fails in CI, reading buffer text
          instead of the status line (e.g. '9012...' instead of '57,39').
Solution: In s:get_statusline() redraw unconditionally and read the screen
          cells directly with screenstring(), instead of relying on
          ScreenLines() whose own redraw! can process events and change the
          window layout between the redraw and reading the cells.  This
          matches the already-stable s:Assert_match_statusline() helper in
          test_statuslineopt.vim.

closes: vim/vim#20428

db3ce018b5

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 06:33:02 +02:00
glepnir
11b9e6f193 fix(option): allow empty/blank edges in 'winborder' #40112
Problem:
The comma form of 'winborder' is split with copy_option_part(),
whose skip_to_option_part() eats spaces after a comma, and empty
fields are rejected.

Solution:
Split the comma form literally on ',', keeping empty fields and
single-space fields.
2026-06-05 06:37:07 -04:00
zeertzjq
e887cfb3b5 vim-patch:9.2.0597: [security]: possible code execution with python complete (#40117)
Problem:  [security]: another possible code execution with python complete
          (David Carliez)
Solution: Strip default expressions and annotations from generated
          source for pythoncomplete and python3complete.

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-65p9-mwwx-7468

c8c63673bc

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-06-05 04:59:44 +02:00
James McCoy
9ffa2069c1 Merge pull request #40116 from jamessan/terminfo-check
fix(test): only test for unibilium if a compilation string exists
2026-06-04 21:17:01 -04:00
James McCoy
b7fd8cbd2b fix(test): only test for unibilium if a valid compilation string exists
Builds with -DNDEBUG do not contain the compilation string, so the test
will fail even if nvim is built with unibilium.

Similarly, zig builds only report "Compilation: TODO", so they also fail
the test even when build with unibilium

Detect both scenarios and skip the test, rather than failing it.
2026-06-04 17:29:28 -04:00
bfredl
fd4655ea3a Merge pull request #40099 from bfredl/uniluna
feat(startup)!: "standalone" mode -ll is kill
2026-06-04 15:04:03 +02:00
bfredl
03aff28b73 feat(startup)!: "standalone" mode -ll is kill
This was originally used because we needed a lua interpreter to run the
standalone _busted_ lua application (except we used fuckery behind the
scenes to fake its binary dependencies with our own binary
dependencies). Now we longer do that, we instead run `test.harness` as a
standard nvim -l script. as this mode is no longer used in tests it
risks going to bitrot anyway.

NB: -ll mode still had some theoretical benefits like quicker
initialization and more "native" printing behavior, etc.
But we can incrementally work on "nvim -l" mode instead
of maintaining a separate special thing.
2026-06-04 14:35:41 +02:00
Yi Ming
fecc151d03 fix(lsp): always respond to requests, even on handler error #40076
Problem:
We perform validations after the request handler is called.
When these validations fail, `error()` and `assert()` will prevent the
subsequent code from running, meaning the server will never receive a response.

Solution:
Always respond to requests.
2026-06-04 07:02:19 -04:00
bfredl
45d7201b83 Merge pull request #40048 from bfredl/noinstall
fix(build.zig): fixes and improvements
2026-06-04 12:36:37 +02:00
bfredl
d8e9593024 feat(build.zig): easier cross-complilation
invocation of cross-compilation changed, see news.txt blurb
2026-06-04 11:33:35 +02:00
bfredl
2a78df3a5a refactor(build.zig): no need to pass around b.graph.io next to b 2026-06-04 11:33:35 +02:00
bfredl
b9913e78cc build(ci): check zig fmt 2026-06-04 11:33:35 +02:00
bfredl
3f67dabcc7 fix(test): check for SIGINT between tests
when running `zig build functionaltest`, it might
take a while until the test harness nvim instance checks
for interrupts, which causes a lot of tests to keep running after
CTRL+C. Check after each test instead
2026-06-04 11:33:35 +02:00
bfredl
aceb0627c8 fix(build.zig): do not depend on b.install_path on configure time
This is in preparation of zig 0.17 where b.install_path is no
longer known inside `pub fn build()`.

Builds which should hardcode a runtime path into the binary has to specify it.
We could use a nlua0 helper to encode the install path at build time but
I think this is cleaner anyway. (like currently the appimage still
encodes a temporary build path which is nonsensical, it is better to
just include none)

Similarily b.args will not be available anymore (there will just
be an opaque pass-through)
2026-06-04 11:33:35 +02:00
dependabot[bot]
03f746e913 ci: bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `actions/checkout` from 6 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v6.0.2)

Updates `github/codeql-action` from 4.35.5 to 4.36.0
- [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.35.5...v4.36.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 10:28:00 +02:00
yilisharcs
10d0931d44 refactor(quickfix): remove duplicate unset of qf_ptr and qf_start (#40109)
Problem: in 'qf_free_items', 'qf_ptr' and 'qf_start' are set to NULL
         twice. this looks like a leftover from a previous refactor.

Solution: remove the first instance of both duplicates.
2026-06-04 05:51:22 +00:00
glepnir
5e3b655ad4 vim-patch:9.2.0591: 'scrolljump' ignored when scrolling up (#40106)
Problem:  srolljump=-100 only scrolls half a page going up, but works
          fine going down. update_topline() always falls back to
          scroll_cursor_halfway() when the cursor is far above topline.
Solution: Only center when sj is smaller than half the window. Otherwise
          call scroll_cursor_top like the downward path does (glepnir).

fixes:  vim/vim#1527
closes: vim/vim#20366

a4a60c0fdb
2026-06-04 06:21:59 +02:00
Justin M. Keyes
85b607d797 Merge #40088 from justinmk/doc2
docs: misc, lsp
2026-06-03 16:57:13 -04:00
zeertzjq
b6511b717a vim-patch:dec5b3a: runtime(doc): Update mapping descriptions (#40104)
closes: vim/vim#20411

dec5b3a72a

Co-authored-by: nyngwang <nyngwang@gmail.com>
2026-06-03 20:28:41 +00:00
zeertzjq
845616ee93 vim-patch:8eceeba: runtime(kitty): Fix regex for kittyMapSeq region (#40103)
closes: vim/vim#20422

8eceebae71

Co-authored-by: bbnolauv <86621528+bbnolauv@users.noreply.github.com>
2026-06-03 22:12:22 +02:00
zeertzjq
fa5ed94852 vim-patch:9.2.0589: filetype: xinitrc files are not recognized (#40102)
Problem:  filetype: xinitrc files are not recognized
Solution: Detect xinitrc and xserverrc files as sh filetype
          (Enrico Maria De Angelis)

Reference:
https://wiki.archlinux.org/title/Xinit#Configuration

closes: vim/vim#20419

5b76ddcc52

Co-authored-by: Enrico Maria De Angelis <enricomaria.dean6elis@gmail.com>
2026-06-03 22:12:11 +02:00
Tomasz N
2f577f7c5c fix(messages): no prompt/newlines for ext_messages filter command #39786)
Problem:  Redundant newlines and "Press any key" prompt with ext_messages
          for Visual filter command.

Solution: Remove newlines and prompt with ext_messages.
2026-06-03 10:20:28 -04:00
Justin M. Keyes
cbadc4f164 docs: misc, lsp
Problem:
This doc on `vim.lsp.completion.get()`:

    --- Used by the default LSP |omnicompletion| provider |vim.lsp.omnifunc()|, thus |i_CTRL-X_CTRL-O|
    --- invokes this in LSP-enabled buffers. Use CTRL-Y to select an item from the completion menu.
    --- |complete_CTRL-Y|

...makes two wrong claims:

1. "Used by the default LSP omnicompletion provider vim.lsp.omnifunc()"
    - `_omnifunc` does not call `M.get()`, it calls the internal `trigger()` directly.
2. "thus |i_CTRL-X_CTRL-O| invokes this in LSP-enabled buffers"
    - The two paths use different client sets:
        - `M.get()` reads `buf_handles[bufnr].clients` (clients
          explicitly registered via `vim.lsp.completion.enable(true, ...)`).
        - `_omnifunc` reads `lsp.get_clients({method='textDocument/completion'})` (every
          completion client, regardless of `enable()`).

Solution:
Update docs.

Co-authored-by: Koichi Shiraishi <zchee.io@gmail.com>
Co-authored-by: y9san9 / Alex Sokol <y9san9@gmail.com>
Co-authored-by: adv0r <>
2026-06-03 12:27:30 +02:00
Justin M. Keyes
5cff3c0b97 refactor: drop os_fileid_equal_fileinfo 2026-06-03 12:26:31 +02:00
github-actions[bot]
1c0ffbcc9f docs: update version.c #40055
vim-patch:9.0.0887: cannot easily try out what codes various keys produce
vim-patch:9.0.0889: keycode check script has a few flaws
vim-patch:9.0.0955: libvterm does not support the XTQMODKEYS request
vim-patch:9.2.0556: GTK4: scrollbars not shown and do not respond to clicks
vim-patch:9.2.0563: GTK3/Wayland: crash with right mouse-button in tabline
vim-patch:9.2.0564: GTK4: tabline does not respond to mouse clicks
vim-patch:0e8cf80ca CI: Bump github/codeql-action
vim-patch:9.2.0569: out-of-bounds access in libvterm CSI 8 t resize
vim-patch:9.2.0570: GTK4: mouse wheel scrolling does not work correctly
vim-patch:9.2.0571: Vim9: memory leak in compile_nested_function() on failure
vim-patch:905312e0e NSIS: Fix 32-bit context menu
vim-patch:9.2.0574: tests: missing test for v9.2.0572
vim-patch:9.2.0577: GTK4: window resizing issues
vim-patch:9.2.0578: GTK4: :unmenu does not remove entries from the menubar
vim-patch:9.2.0580: xxd: binary output is not colored with -R
vim-patch:b7d07d3e8 translation(it): Update Italian xxd man page
vim-patch:9.2.0584: GTK4: missing UI features
vim-patch:9.2.0587: GTK4: left scrollbar overlaps drawarea
vim-patch:9.2.0588: GTK4: drawing area loses focus after closing a menubar popover
2026-06-03 05:45:43 -04:00
tao
13b2b14275 fix(path): prevent infinite loop when re-editing file without drive-letter
Problem:
Edit a file with a drive-letter path, then re-edit it without the drive letter
and colon. This cause `path_fnamencmp` to loop infinitely as `len` never
reaches 0, while `c1` and `c2` are already NUL.

Commit e18a578 accidentally used || before `(p_fic`, commit 4bcee96 fixed that,
but also moved the NUL check into a grouped condition. The bug remained hidden
because there weren't any cases where strings had different lengths and c1 and
c2 could both reach NUL. `c:/foo` vs `/foo` happens to be such a case, which is
why the infinite loop finally showed up.

Solution:
Break the loop when either `c1` or `c2` is NUL.
2026-06-02 18:59:13 -04:00
Artem Krinitsyn
738cd366f9 fix(diagnostic): stack _tags hl-groups in a single extmark #38654
Problem:
Diagnostic highlight groups were applied by iterating and calling
`vim.hl.range` for each group individually. That resulted in multiple
extmarks with the same priority being created separately, which does not
allow `DiagnosticUnnecessary` and `DiagnosticDeprecated` with matching
options override `Diagnostic*` styling.

Solution:
Pass the list of hl-groups to `vim.hl.range` so they are applied
together in the correct order.
2026-06-02 18:36:03 -04:00
Yi Ming
cf9ad39267 fix(lsp): handle requests with null id #40073
Problem:
PR #38340 prevented messages we receive with id:null from being
incorrectly classified as notifications, but caused us to ignore all
messages with id:null, including requests.

Solution:
Handle requests with id:null. When we receive a request, we only need to
respond based on the `method` and `param`.

(The original so-called `notification_received` in the test was actually
semantically `request_or_notification_received`.)
2026-06-02 17:39:56 -04:00
zeertzjq
31a8bf1a63 vim-patch:de18ef6: runtime(doc): Tweak documentation style (#40093)
closes: vim/vim#20412

de18ef6284

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2026-06-02 18:55:44 +00:00
zeertzjq
5a8e4cc5fa vim-patch:9.2.0581: After maximizing and deleting the quickfix buffer, window height is wrong (#40092)
Problem:  After maximizing and deleting the quickfix buffer, window
          height is wrong (tertium)
Solution: Reset the winfixheight option when a quickfix buffer is
          deleted from a window (Yegappan Lakshmanan)

fixes:  vim/vim#3378
closes: vim/vim#20403

07f055f579

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2026-06-02 18:30:20 +00:00
zeertzjq
75ee4272a6 vim-patch:7895c9e: runtime(vim): Update ftplugin, add heredocs to b:match_words (#40091)
This depends on chrisbra/matchit#61 for full support of non-alphnum
heredoc markers.

closes: vim/vim#20399

7895c9e6b8

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2026-06-02 16:55:20 +00:00
Kevin
d0c7f870c2 refactor(docs): extract HTML-specific bits from gen_help_html #39946
Problem:
We'd like to export a PDF version of the user manual
(https://github.com/neovim/neovim.github.io/issues/477), but
`gen_help_html.lua` assumes an HTML output in several places.

Solution:
- Make gen() take an output param
- Rename gen_one() -> gen_one_html()
- Rename visit_node() -> ts_node_to_html()
- Add a mapping to gen() that calls the correct gen_one*() function.

This prepares the addition of new methods for Typst output.
2026-06-02 10:28:01 -04:00
Justin M. Keyes
7f233449f1 Merge #40083 from ofseed/pos-get-lines-improve
fix(pos): various improvements on `pos._util.get_lines()`
2026-06-02 09:56:49 -04:00
Justin M. Keyes
70f8c7bbf3 Merge #40057 from luukvbaal/hidenodraw
perf(redraw): don't redraw hidden windows
2026-06-02 08:51:08 -04:00