Commit Graph

29977 Commits

Author SHA1 Message Date
Justin M. Keyes
46cc8a52b2 Merge pull request #32102 from tomtomjhj/cherrypick-ts-foldexpr
Backport treesitter foldexpr fixes
2025-01-19 11:31:47 -08:00
Igor
a3cc513b67 fix(treesitter.foldexpr): only refresh valid buffers
Problem: autocmd to refresh folds always uses the current buffer if the
option type is local. However, the current buffer may not have a parser,
and thus the assert that checks for a parser could fail.

Solution: check if the foldinfo contains the buffer, and only refresh if
so.
2025-01-20 00:27:42 +09:00
Jaehwang Jung
a986048cb0 fix(treesitter.foldexpr): refresh in the buffers affected by OptionSet 2025-01-20 00:27:39 +09:00
Jaehwang Jung
d7ee06124d fix(treesitter.foldexpr): robustness against ctrl-c
Problem:
Exiting the insert mode with ctrl-c does not trigger InsertLeave
autocmd. This may lead to nil error in treesitter foldexpr.

Solution:
Check nil. Folds still can be stale after exiting the insert mode with
ctrl-c, but it will be eventually updated correctly.

An alternative solution would be to ensure that exiting the insert mode
always triggers do_foldupdate. This can be done either by "fixing"
ctrl-c or with on_key callback that checks ctrl-c (nvim-cmp does this).
2025-01-20 00:26:52 +09:00
Jaehwang Jung
ca10442e01 fix(treesitter): don't open fold when o/O adds a line below #28709
Problem:
`o`-ing on a folded line opens the fold, because the new line gets the
fold level from the above line (level '='), which extends the fold to
the new line. `O` has a similar problem when run on the line below a
fold.

Solution:
Use -1 for the added line to get the lower level from the above/below
line.
2025-01-20 00:26:03 +09:00
neovim-backports[bot]
4b25fe09cc fix(lua): prevent SIGSEGV when lua error is NULL in libuv_worker (#32091)
Problem:
Calling `xstrdup` with a NULL pointer causes a SIGSEGV if `lua_tostring` returns
NULL in `nlua_luv_thread_common_cfpcall`.

Crash stack trace:
- `_platform_strlen` → `xstrdup` (memory.c:469)
- `nlua_luv_thread_common_cfpcall` (executor.c:281)

Solution:
Check if `lua_tostring` returns NULL and pass NULL to `event_create` to avoid the crash.

(cherry picked from commit a5b1b83a26)

Co-authored-by: 林玮 (Jade Lin) <linw1995@icloud.com>
2025-01-19 01:00:18 +00:00
dundargoc
baaaf6a9e7 build: fix install 2025-01-15 21:27:02 +01:00
luukvbaal
e477ac7c45 fix(marks): revise metadata for start mark of revalidated pair #32017
Problem:  Metadata may be revised for end mark of a revalidated pair.
Solution: Revise metadata for start mark of a revalidated pair.
(cherry picked from commit 5cc93ef472)
2025-01-15 10:56:52 +00:00
dundargoc
3b5c2213fd build: fix make install on cmake 3.13 and 3.14
Closes https://github.com/neovim/neovim/issues/30756.
2025-01-15 09:33:30 +01:00
Justin M. Keyes
5aabe5695f Update test/functional/plugin/lsp_spec.lua 2025-01-14 12:36:42 +00:00
Xuyuan Pang
b0b383bff9 fix(lsp): minimum height for floating popup #31990
Problem:
The floating window for hover and signature help always cuts off a few lines,
because the `_make_floating_popup_size` function counts empty lines as having
zero height.

Solution:
Ensure the height is at least 1.

(cherry picked from commit a4f575abd8)
2025-01-14 12:36:42 +00:00
Horror Proton
323c43e1c4 fix(treesitter): uv_dlclose after uv_dlerror
(cherry picked from commit 5a54681025)
2025-01-14 09:48:10 +00:00
Luuk van Baal
2bc5e1be0f fix(decor): set invalid flag for end of invalidated paired marks
(cherry picked from commit 87610d82db)
2025-01-10 07:41:32 +00:00
Emilia Simmons
87440e7bc5 fix(runtime): let matchit and matchparen skips fallback on treesitter captures
When treesitter is enabled, by default syntax groups are not defined, but these
groups are used to identify where to skip matches in matchit and matchparen.

This patch does three things:
1. If syntax is enabled regardless of treesitter (`vim.bo.syntax='on'`):
   Use original implementation.
2. If treesitter is enabled and syntax is not:
   Match the syntax groups (i.e. `comment\|string`) against treesitter captures
   to check for skipped groups.
3. Add an explicit treesitter syntax for marking captures to skip:
   matchit uses `b:match_skip` to determine what counts as skippable
   Where 's:comment\|string' uses a match of the named syntax groups against
   a regex match of comment\|string, 't:comment\|string' now uses vim regex
   to match against the names of the treesitter capture groups.

(cherry picked from commit 69aa33d890)
2025-01-04 19:48:25 +00:00
Gregory Anders
357ee88606 fix(jobs): do not block UI when jobwait() doesn't block (#31803)
(cherry picked from commit efe1732c6f)
2025-01-03 17:16:40 +00:00
luukvbaal
6a6c6b2658 vim-patch:9.1.0708: Recursive window update does not account for reset skipcol (#30217)
Problem:  Window is updated with potentially invalid skipcol in recursive
          window update path. I.e. cursor outside of visible range in
          large line that does not fit.
Solution: Make sure it is valid (Luuk van Baal).

3d5065fc75
2024-12-28 17:16:37 +00:00
fredizzimo
79030bf196 fix(ui): ensure screen update before waiting for input #30576
Ensure the screen is fully updated before blocking for input. This did
not always happen before, for example when setting `cursorline
scrolloff=9999`, which lead to jerky movement when using some GUI
applications.

Because of the duality of redraw_later, this can't be done in
command-line or when waiting for "Press ENTER". In many of those cases
the redraw is expected AFTER the key press, while normally it should
update the screen immediately. So, those special cases are excluded.

(cherry picked from commit 7eba016c86)
2024-12-28 17:16:37 +00:00
dundargoc
aa2b69b178 ci(build.yml): disable security restriction
A new security restriction in Ubuntu 24.04 prevents users from using
`unshare`, so we need to disable it in order for the test to work
properly.
2024-12-26 22:35:35 +01:00
dundargoc
b36cadcb8e build: specify POST_BUILD when using add_custom_command
This is needed specifically for the second signature of
add_custom_command, which appends an operation to an existing target.
This will prevent the cmake warning CMP0175.

Reference: https://cmake.org/cmake/help/latest/policy/CMP0175.html
(cherry picked from commit 07b14c8e2e)
2024-12-26 15:22:07 +01:00
Christian Clason
d8149e5af9 fix(inspect): use correct default highlight
Problem: `vim.highlight` was renamed on `master`, breaking the
backported fix.

Solution: Use old name.

Fixup for 650dcbbafe
2024-12-23 11:23:41 +01:00
bfredl
4e1b1b6fd7 version bump 2024-12-21 18:16:24 +01:00
bfredl
9b5ee7df4e NVIM 0.10.3
Christmas edition. This is a maintenance release, focusing on fixes.

FEATURES
--------------------------------------------------------------------------------
- 085f1cc99d main: expand file ~\ or ~/ prefix on Windows

FIXES
--------------------------------------------------------------------------------
- f8ee92feec deps build for ARM64 MSVC
- 163a532cfa api: make `nvim_set_hl()` respect all `cterm` attributes (#31390)
- 6a63034b51 completion: avoid deleting text when completion leader changes #31448
- c257fe5582 coverity/510275: linematch out of bounds access (#30687)
- 7ca0408a1f defaults: don't replace keycodes in Visual search mappings (#31460)
- 71faa2be88 events: don't expand `args.file` for Lua callback (#31473)
- e80e8a0980 extmark: builtin completion can still affect nearby extmarks #31387
- 7abc58349e filetype: make filetype detection work with :doautocmd (#31470)
- 98ec48eefb inccommand: ensure cursor is where it belongs
- 650dcbbafe inspect: always show priority
- b5b84b806a inspect: show priority for treesitter highlights
- bf66871113 lsp: cancel pending requests before refreshing (#31500)
- 308e9719cf lsp: retrigger diagnostics request on server cancellation (#31345) (#31427)
- 84bbbd9fbe lsp: str_byteindex_enc bounds checking #30747
- 01fe4fc589 marks: skip right_gravity marks when deleting text
- 57b0fecd47 startup: report --startuptime error to stderr (#31131)
- 3c0e1a89d9 treesitter: show proper node name error messages
- bbefbc995e tui: avoid flushing buffer halfway an OSC 2 sequence (#30793)
- 424a452401 uri: uri_encode encodes brackets incorrectly for RFC2732 #31284
- 1a030f6e04 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638
- ee7885aa21 9.1.0759: screenpos() may return invalid position (#30681)

REFACTOR
--------------------------------------------------------------------------------
- b286ba419a fix incorrect use of enum (#30924)
- fb5a0e28db sort various Lua tables in src/ alphabetically (#30978)

DOCUMENTATION
--------------------------------------------------------------------------------
- 9455686b6f misc (#29410)
- 5480c0bd75 lua: "vim.bo" is always equivalent to :setlocal (#30733)
- 27fca9c7d2 lua: clarify when on_key "typed" will be empty (#30774)
v0.10.3
2024-12-21 18:15:18 +01:00
Dan Pascu
1a030f6e04 fix(vim.system): invalid MAX_TIMEOUT for 32-bit systems #31638
The maximum signed value on 32-bit systems is 2 ^ 31 - 1. When using 2 ^ 31 for
the default timeout, the value would overflow on such systems resulting in
a negative value, which caused a stack trace when calling wait() without
a timeout.

(cherry picked from commit 4e130c1ee4)
2024-12-20 14:06:53 +00:00
Tristan Knight
bf66871113 fix(lsp): cancel pending requests before refreshing (#31500)
Problem:
Diagnostics and inlay hints can be expensive to calculate, and we
shouldn't stack them as this can cause noticeable lag.

Solution:
Check for duplicate inflight requests and cancel them before issuing a new one.
This ensures that only the latest request is processed, improving
performance and preventing potential conflicts.
2024-12-16 03:17:40 -08:00
Jonny Kong
424a452401 fix(uri): uri_encode encodes brackets incorrectly for RFC2732 #31284
**Problem:**
The brackets in the RFC2732 regular expression are currently unescaped,
causing them to be misinterpreted as special characters denoting
character groups rather than as literal characters.

**Solution:**
Escape the brackets.
Fix #31270

(cherry picked from commit 442d338cb5)
2024-12-11 14:14:33 +00:00
Luuk van Baal
01fe4fc589 fix(marks): skip right_gravity marks when deleting text
Problem:  Marks that are properly restored by the splice associated with
          an undo edit, are unnecessarily pushed to the undo header. This
          results in incorrect mark tracking in the "copy_only"
          save/restore completion path.
Solution: Avoid pushing left gravity marks at the beginning of the range,
          and right gravity marks at the end of the range to the undo
          header.
(cherry picked from commit c4f76299f0)
2024-12-10 12:50:54 +00:00
zeertzjq
7abc58349e fix(filetype): make filetype detection work with :doautocmd (#31470)
(cherry picked from commit 1077843b9b)
2024-12-10 03:17:12 +00:00
zeertzjq
8fbe3e3941 Merge pull request #31532 from zeertzjq/backport
fix(events): don't expand `args.file` for Lua callback (#31473)
2024-12-10 10:51:40 +08:00
zeertzjq
71faa2be88 fix(events): don't expand args.file for Lua callback (#31473)
Problem:  In an autocommand Lua callback whether `args.file` is expanded
          depends on whether `expand('<afile>')` has been called.
Solution: Always use the unexpanded file name for `args.file`.

Related to #31306 and vim/vim#16106. This doesn't provide `sfname`, but
at least makes `args.file` have a consistent value.
2024-12-10 10:19:01 +08:00
Christian Clason
650dcbbafe fix(inspect): always show priority
Problem: It is not obvious if a treesitter highlight priority shown in
`:Inspect` is higher or lower than the default.

Solution: Also print default priority (`vim.hl.priorities.treesitter`).
Add padding for better readability.

(cherry picked from commit b52ffd0a59)
2024-12-07 16:51:17 +00:00
luukvbaal
6a63034b51 fix(completion): avoid deleting text when completion leader changes #31448
Problem:  When completion leader changes, text that might be reinserted
          immediately after is deleted. This unnecessarily affects
          extmarks. #31387 restored the original extmarks but that
          prevents end_right_gravity marks from growing.
Solution: Avoid deleting leader text that will be reinserted.
(cherry picked from commit e788d1a3a9)
2024-12-07 14:54:33 +00:00
Christian Clason
b5b84b806a fix(inspect): show priority for treesitter highlights
Problem: `:Inspect` does not show priority for treesitter highlights,
leading to confusion why sometimes earlier highlights override later
highlights.

Solution: Also print priority metadata if set.
(cherry picked from commit 9c278af7cc)
2024-12-07 09:51:46 +00:00
zeertzjq
950048b206 Merge pull request #31461 from zeertzjq/backport
fix(defaults): don't replace keycodes in Visual search mappings (#31460)
2024-12-05 19:52:55 +08:00
zeertzjq
7ca0408a1f fix(defaults): don't replace keycodes in Visual search mappings (#31460)
Also remove "silent" to be more consistent with Normal mode search.
2024-12-05 19:33:33 +08:00
James McCoy
78a36cdd55 Merge pull request #31452 from jamessan/backport-31358
Backport release build test fixes
2024-12-04 19:51:39 -07:00
James McCoy
694c3992ea test(marktree): expose test functions in release builds
In order to run the marktree unit test in release mode, the test functions need to be available even when NDEBUG is defined.

Keep the body of marktree_check a nop during release builds, which limits the usefulness of the testing, but at least lets the tests run.
2024-12-04 21:30:53 -05:00
James McCoy
9695650c0c ci: run tests directly rather than via the Makefile
Since the Makefile is not used to build, running the tests via the Makefile causes cmake to reconfigure and revert the release build back to debug.
2024-12-04 21:30:52 -05:00
James McCoy
7781111fef test(main_spec): make "nvim -v" test agnostic to build type
In release builds, the Compilation: line is omitted so the build is reproducible. Since the "fall-back for $VIM" line is always present, check for that instead.
2024-12-04 21:30:52 -05:00
James McCoy
4007c42b77 test(version_spec): expect vim.NIL, not nil, for "build" if not in a git clone 2024-12-04 21:30:52 -05:00
James McCoy
584b811aee test(main_spec): use CMakePresets.json instead of .git for root marker 2024-12-04 21:30:51 -05:00
James McCoy
a930b2666e ci(test): remove the .git directory for Linux
Tests should not rely on being run inside a git clone, so the Linux
builds cover this use case. The macOS builds will continue running with
the .git directory so there's still unix-ish coverage within a git
clone.
2024-12-04 21:30:51 -05:00
James McCoy
c36c4ddae2 ci: run one set of tests with a release build
This ensures that no tests fail due to differences between release and debug builds.

The release build-type check is now unnecessary, too, so remove it.
2024-12-04 21:30:43 -05:00
Gregory Anders
308e9719cf fix(lsp): retrigger diagnostics request on server cancellation (#31345) (#31427)
Co-authored-by: Jesse <github@jessebakker.com>
(cherry picked from commit 29c72cdf4a)
2024-12-02 12:13:23 -06:00
luukvbaal
e80e8a0980 fix(extmark): builtin completion can still affect nearby extmarks #31387
Problem:
Built-in completion can still affect nearby extmarks. #31384

Solution:
Restore extmarks when completion leader changes.

(cherry picked from commit c7ec010ade)
2024-12-02 15:28:38 +00:00
Evgeni Chasnovski
163a532cfa fix(api): make nvim_set_hl() respect all cterm attributes (#31390)
(cherry picked from commit 8de1dc6923)
2024-12-02 00:51:14 +00:00
zeertzjq
1a12dea191 test(filetype): symlink detection works after expand('<afile>') (#31307)
Also add a test for #31306, which currently fails.

(cherry picked from commit c697c49a76)
2024-11-22 11:44:04 +00:00
zeertzjq
6f2786433d test(autocmd/termxx_spec): fix TextChangedT test flakiness (#31296)
Problem:  The E937 error appears for too short in TextChangedT test.
Solution: Only feed an Enter key after seeing the error.
(cherry picked from commit 3597633075)
2024-11-22 00:32:36 +00:00
Rafael Kitover
085f1cc99d feat(main): expand file ~\ or ~/ prefix on Windows
In command_line_scan() for MSWIN, expand "~\" or "~/" prefixed paths to
the USERPROFILE environment variable for the user's profile directory.

Rename the static os_homedir() to os_uv_homedir() to emphasize that it
is a wrapper around a libuv function.

Add the function os_get_homedir() to os/env.c to return the cached
homedir value as a const. Must be called after homedir is initialized or
it fails.

The difference between this function and the static os_uv_homedir() is
that the latter gets the homedir from libuv and is used to initialize
homedir in init_homedir(), while os_get_homedir() just returns homedir
as a const if it's initialized and is public.

Use the os_get_homedir() accessor for ~/ expansion on Windows to make
the code more concise.

Add a Windows section to main_spec.lua with tests for expanding ~/ and
~\ prefixes for files passed in on the command-line.

Fix #23901

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-11-19 07:26:37 +08:00
Riley Bruins
3c0e1a89d9 fix(treesitter): show proper node name error messages
**Problem:** Currently node names with non-alphanumeric, non
underscore/hyphen characters (only possible with anonymous nodes) are
not given a proper error message. See tree-sitter issue 3892 for more
details.

**Solution:** Apply a different scanning logic to anonymous nodes to
correctly identify the entire node name (i.e., up until the final double
quote)

(cherry picked from commit 36990f324d)
2024-11-13 13:03:00 +00:00
zeertzjq
57b0fecd47 fix(startup): report --startuptime error to stderr (#31131)
Problem:  Crash when initializing for --startuptime errors.
Solution: Report the error to stderr, as neither logging nor messages
          have been initialized yet.
(cherry picked from commit 17e00d0cc6)
2024-11-13 05:47:28 +00:00