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)
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>
**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)
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)
Problem:
Neovim will not build for ARM64 using MSVC due to misconfigured
gettext dependency build settings.
Solution:
Fix the dependency build settings for gettext when building with MSVC.
(cherry picked from commit 7737f89206)
Problem: Inccommand preview callback may flush inaccurate cmdline cursor position.
Solution: Ensure cursor is where it belongs when doing command preview.
(cherry picked from commit 59e130b6ca)
Problem: Cannot build against Ruby 33 dynamically
Solution: Ruby 33 removed transient heap, so do not use
rb_ary_transient anymore, NoMethodError format changed,
so update test for expected error message
(Isao Sato)
- ruby-3.3 removed transient heap for ruby/dyn
when +ruby/dyn with ruby-3.3 do command :ruby, E448 occur.
ruby-3.3 has no transient heap anymore, so disable rb_ary_transient etc.
$ LC_ALL=C VIMRUNTIME=runtime ./src/vim -u NONE -c 'ruby puts RUBY_VERSION'
"=> Error detected while processing command line:
"=> E448: Could not load library function rb_ary_detransient
"=> E266: Sorry, this command is disabled, the Ruby library could not be
loaded.
- ruby-3.3 changed NoMethodError format:
$ rvm 3.2.2, 3.3.0-rc1 do ruby -e 'begin; nil.name; rescue => e; puts "%s : %s"%[RUBY_VERSION, e.message]; end '
=> 3.2.2 : undefined method `name' for nil:NilClass
=> 3.3.0 : undefined method `name' for nil
so loose pattern in Test_ruby_Vim_buffer_get()
closes: vim/vim#13741443657b32b
Co-authored-by: Isao Sato <svardew@gmail.com>
test(012_directory_spec): fix flakiness on Windows (#30920)
Problem: 012_directory_spec is flaky on Windows.
Solution: Use :%bwipe! instead :qall!.
(cherry picked from commit fffcb88ad6)
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Problem: 'vim.rpcrequest and vim.rpcnotify' is flaky on Windows.
Solution: retry it.
(cherry picked from commit 6fd13eedda)
Co-authored-by: Christian Clason <c.clason@uni-graz.at>
Problem:
Previously the index was only checked against the UTF8 length. This
could cause unexpected behaviours for strings containing multibyte chars
Solution:
Check indicies correctly against their max value before returning the
fallback length
(cherry picked from commit 80e37aa533)
Problem: Setting title while TUI buffer is almost full may cause the
end of a flush to be treated as a part of an OSC 2 or OSC 0
sequence, leading to problems like invisible cursor.
Solution: Make the whole sequence to set title a unibi_ext string.
(cherry picked from commit 4846bf05dc)
Now that #16425 is fixed, use Unicode again to reduce screen height.
Unfortunately composing chars still can't be used, as it turns out that
composing chars may be missing when sent separately from the base char
at the last char a screen line.
(cherry picked from commit 1189c5ce59)
Problem: test_strftime may fail because of missing TZ data
Solution: Use GMT offsets to validate timezone differences (James McCoy)
Some systems only provide timezones that follow the geographical region
naming (e.g. America/New_York) by default and require an additional
install for other names (like EST).
The GMT+<offset> format must always be honored, so use that to generate
distinct data for the test.
closes: vim/vim#15848ea997edc7a
Co-authored-by: James McCoy <jamessan@jamessan.com>
(cherry picked from commit b0ddc1783a)
Problem:
Int pointer cast to unsigned long pointer causes potential memory
corruption.
Solution:
Cast and store value first, then pass the new pointer.
(cherry picked from commit 60e1862ccb)
Problem: screenpos() may return invalid position
after switching buffers (Greg Hurrell)
Solution: reset w_leftcol if wrapping has been set
after copying wrap option
fixes: vim/vim#15792closes: vim/vim#15803b065a10e24
Co-authored-by: Christian Brabandt <cb@256bit.org>
(cherry picked from commit 9f26bdc416)
This is a maintainance release.
FEATURES
--------------------------------------------------------------------------------
- a3f9bd7f79 jumplist: allow opting out of removing unloaded buffers (#30419)
FIXES
--------------------------------------------------------------------------------
- be831a725d api: error properly with invalid field in nvim_open_win (#30078)
- 9b4e7c9a0d api: fix crash/leak with float title/footer on error (#30543)
- 26b72b0f91 api: nvim_buf_get_text() crashes with large negative column #28740
- e537379641 channel: handle writing to file instead of pipe (#30520)
- 1fc09b0738 column: set signcolumn width after splitting window (#30556)
- 5cb3505ab8 completion: don't include <Lua function> in -complete= (#30209)
- 40671f18f7 decor: don't use separate DecorSignHighlight for url (#30096)
- 95c3fd4dc0 decor: exclude invalid marks from meta total
- 21157459fe diagnostics: don't apply extmarks to invalid lines #29321
- f31e29fce4 diff: use mmfile_t in linematch
- 3a23149cfc filetype: handle .in files with no filename (#30487)
- 045afa9e8a float: properly find last window of tabpage (#30571)
- 006fd0304c health: fix pyenv root and python exepath detect issue
- 1e1e4066b1 health: return correct name from 'path2name()'
- 339067ab7e lsp: avoid reusing diagnostics from different servers in actions (#30002)
- 5955ef0ba8 lsp: don't send foreign diagnostics to servers in buf.code_action (#29501)
- e13564b9f4 lsp: handle encoding bounds in str_utfindex_enc
- f3675337f0 lsp: handle nil bytes in strings
- b55435f438 lsp: handle out-of-bounds character positions #30288
- d593b20017 lsp: return call hierarchy item, not the index (#30145)
- fa4bd6994d lua: ignore stdout and stderr for xdg-open
- 7284400a34 man: avoid setting v:errmsg (#30052)
- d000c56373 man: check if buffer is valid before restoring 'tagfunc' (#30180)
- b18538527e regexp: fix typo in E888 error message (#30161)
- ef05c514aa runtime: add remaining missing commentstrings (#30252)
- 7e15526dd2 runtime: sync bundled treesitter queries
- ad393c1fc1 runtime: sync bundled treesitter queries
- 316fa168a1 terminal: interrupt/got_int hangs terminal (#30094)
- c9d7ad4a34 treesitter: EditQuery shows swapfile ATTENTION #30536
- a6b2233c3e treesitter: escape things like `"` in omnifunc results
- 68a2259804 treesitter: indent size for inspect_tree #28727
- ba47b440fd treesitter: lint top-level anonymous nodes
- ee57bb5a8e tui: reset active attr ID when OSC 8 sequence is terminated (#29960)
- bce2364f60 tui: set id parameter in OSC 8 sequences (#29847)
- 4ad864dd09 version: return nil with empty string
- d63d379eec vim.ui.open: prefer xdg-open on WSL #30302
- 1f58e27600 win-msi: set installer scope to machine #29895
- 28fba3bf27 window: making float with title/footer non-float leaks memory (#30551)
- 2f3c447605 window: respect hide flag of float windows when switching (#30507)
- 6a44055a71 fix(vim.fs): dirname() returns "." on mingw/msys2 (#30484)
VIM PATCHES
--------------------------------------------------------------------------------
- 797f524337 7c8bbc6: runtime(doc): use mkdir -p to save a command
- 7550947157 9.0.2149: [security]: use-after-free in exec_instructions()
- 771b3a52c5 9.0.2158: [security]: use-after-free in check_argument_type
- a0a95edb2d 9.1.0638: E1510 may happen when formatting a message for smsg() (#29907)
- 1fda01fa55 9.1.0647: [security] use-after-free in tagstack_clear_entry
- 05e72488b9 9.1.0648: [security] double-free in dialog_changed()
- 2e1f656eb7 9.1.0653: Patch v9.1.0648 not completely right
- eec37b6e6b 9.1.0666: assert_equal() doesn't show multibyte string correctly (#30018)
- 9f8a5cd022 9.1.0667: Some other options reset curswant unnecessarily when set (#30020)
- 1ed493cc96 9.1.0694: matchparen is slow on a long line (#30134)
- 974447bfc3 9.1.0707: [security]: invalid cursor position may cause a crash (#30204)
- 886a8b62c5 9.1.0716: resetting setcellwidth() doesn't update the screen (#30274)
- 260ac4b3a2 9.1.0728: [security]: heap-use-after-free in garbage collection with location list user data
- b4824edac1 9.1.0729: Wrong cursor-screenline when resizing window
- 4abd480e8f 9.1.0730: Crash with cursor-screenline and narrow window
- 687c0078c2 9.1.0753: Wrong display when typing in diff mode with 'smoothscroll' (#30614)
- 8611f4dcf0 b584117: runtime(doc): buffers can be re-used (#30300)
- b5a2d52a36 e2c4e07: runtime(doc): Update :help :command-complete list
- ca6f8ee267 ecd642a: runtime(doc): clarify, that register 1-9 will always be shifted (#29476)
REFACTOR
--------------------------------------------------------------------------------
- 6aba2f3944 move some functions out of eval.c (#29964)
BUILD SYSTEM
--------------------------------------------------------------------------------
- 8d842a301c add quotes around `CMAKE_GENERATOR` variable
- e63e0a2e06 make makefile work on windows
- 1db8824fbc remove nix flakes (#28863)
- 53e37391e8 silence "po" noise #30469
- 983482626d work around bug in make when PATH includes cmake as dir
- 50a021e653 "Makefile: use pattern rules for build/.deps (#10366)"
CI
--------------------------------------------------------------------------------
- b020b66005 add `needs:backport` label on backport PRs with conflict
- 9d7711a732 don't add reviewers for PRs created by a bot
- 6f34f07a31 enable automerge by default when backporting
- 2c95d48083 remove "skip ci" tag
- d585f3103d skip automerge step if backport failed
- b65e978a23 update labeler configuration and add reviewers
TESTING
--------------------------------------------------------------------------------
- d535482ab2 api/buffer_updates_spec: prevent flakiness (#30521)
- 6a0d1eee46 api/window_spec: remove duplicate test (#30538)
- 61b0816790 health: "test_plug/health/init.lua" completes as "test_plug"
- 2a8d80a442 tui_spec: prevent another case of race between paste and input (#30481)
DOCUMENTATION
--------------------------------------------------------------------------------
- b380a8fe21 remove mention of removed parsers
- c7e943a181 eval: fix wrong return type of getcharsearch() (#30176)
- c2625b6fad treesitter: don't quote metadata
Problem: Wrong display when typing in diff mode with 'smoothscroll'.
Solution: Use adjust_plines_for_skipcol() (zeertzjq).
closes: vim/vim#1577647f8584a80
(cherry picked from commit 0e484c2041)
Problem: For :InspectTree, indent size (`&shiftwidth`) for the tree
viewer may be incorrect.
This is because the tree viewer buffer with the filetype `query` does
not explicitly configures the tab size, which can mismatch with the
default indent size (2) assumed by TSTreeView's implementation.
Solution: Set shiftwidth to be the same as TSTreeViewOpts specifies,
which defaults to 2.
(cherry picked from commit 5331f87f61)
Problem:
Linematch used to use strchr to navigate a string, however strchr does
not supoprt embedded NULs.
Solution:
Use `mmfile_t` instead of `char *` in linematch and introduce `strnchr()`.
Also remove heap allocations from `matching_char_iwhite()`
Fixes: #30505
(cherry picked from commit c65646c247)
Problem:
EditQuery shows swapfile ATTENTION, but this buffer is not intended for
preservation (and the dialog breaks the UX).
Solution:
Set 'noswapfile' on the buffer before renaming it.
(cherry picked from commit b63cd8cbae)
Problem:
fnamemodify with the :r flag will not strip extensions if the filename
starts with a ".". This means that files named ".in" could cause an
infinite loop.
Solution:
Add early return if the filename was not changed
(cherry picked from commit 032e024f8a)
fix(vim.fs): dirname() returns "." on mingw/msys2 #30480
Problem:
`vim.fs.dirname([[C:\User\XXX\AppData\Local]])` returns "." on
mingw/msys2.
Solution:
- Check for "mingw" when deciding `iswin`.
- Use `has("win32")` where possible, it works in "fast" contexts since
b02eeb6a72.
Problem: When input immediately follows end of bracketed paste, the
nvim_input may be processed before the nvim_paste.
Solution: Ensure some waiting after the end of a bracketed paste.
(cherry picked from commit 5acdc4499e)
Problem:
Noise in stderr from src/nvim/po/CMakeLists.txt during build:
48 substitutions on 48 lines
"optwin.js" "optwin.js" 1299L, 57582B written
385 substitutions on 385 lines
"nvim.pot" "nvim.pot" 9318L, 180177B written
Solution:
Run with `-c silent source` instead of `-S`.
(cherry picked from commit cac86e9b4c)