aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* perf(lsp): replace file polling on linux with per dir watcher (#26108)Mathias Fußenegger2023-11-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Should help with https://github.com/neovim/neovim/issues/23291 On linux `new_fs_event` doesn't support recursive watching, but we can still use it to watch folders. The downside of this approach is that we may end up sending some false `Deleted` events. For example, if you save a file named `foo` there will be a intermediate `foo~` due to the save mechanism of neovim. The events we get from vim.uv in that case are: - rename: foo~ - rename: foo~ - rename: foo - rename: foo - change: foo - change: foo The mechanism in this PR uses a debounce to reduce this to: - deleted: foo~ - changed: foo `foo~` will be the false positive. I suspect that for the LSP case this is good enough. If not, we may need to follow up on this and keep a table in memory that tracks available files.
* fix(sign): do not error when defining sign without attributes (#26106)luukvbaal2023-11-19
| | | Fix https://github.com/airblade/vim-gitgutter/issues/875
* Merge pull request #26104 from bfredl/noextmarkinfobfredl2023-11-18
|\ | | | | refactor(extmark): redundant ExtmarkInfo delenda est, use MTPair instead
| * refactor(extmark): redundant ExtmarkInfo delenda est, use MTPair insteadbfredl2023-11-18
|/
* build: various cmake fixesdundargoc2023-11-18
| | | | | | | | | | - Correct MSVC warning suppression. The C4003 warning is issued during file generation and not for the actual source files. - Remove non-existent "scripts/pvscheck.sh" file from `lintsh` target. - Remove spaces inside for loops with uncrustify. - Point dependencies to use a git tag rather than releases, as releases might have changes that deviate from the actual source code. - Automatically update uncrustify config before formatting or linting.
* Merge pull request #25724 from luukvbaal/signmergebfredl2023-11-18
|\ | | | | refactor(sign): move legacy signs to extmarks
| * refactor(sign): move legacy signs to extmarksLuuk van Baal2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: The legacy signlist data structures and associated functions are redundant since the introduction of extmark signs. Solution: Store signs defined through the legacy commands in a hashmap, placed signs in the extmark tree. Replace signlist associated functions. Usage of the legacy sign commands should yield no change in behavior with the exception of: - "orphaned signs" are now always removed when the line it is placed on is deleted. This used to depend on the value of 'signcolumn'. - It is no longer possible to place multiple signs with the same identifier in a single group on multiple lines. This will now move the sign instead. Moreover, both signs placed through the legacy sign commands and through |nvim_buf_set_extmark()|: - Will show up in both |sign-place| and |nvim_buf_get_extmarks()|. - Are displayed by increasing sign identifier, left to right. Extmark signs used to be ordered decreasingly as opposed to legacy signs.
* | fix(completion): filter results with complete+=f (#26029)Raphael2023-11-18
| |
* | Merge pull request #26096 from gpanders/tui-input-refactorGregory Anders2023-11-17
|\ \ | | | | | | TUI input refactors
| * | refactor(tui): use termkey_interpret_modereportGregory Anders2023-11-17
| | | | | | | | | | | | | | | The sign extension issue has been fixed upstream, so we no longer need to use our own workaround.
| * | refactor(tui): refactor Kitty keyboard query implementationGregory Anders2023-11-17
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor our implementation of querying for Kitty keyboard protocol support: - Remove usage of the "extkeys" term. This is not standard or really used elsewhere. Use "key encoding" instead - Replace usages of "CSIu" with "Kitty". "Kitty keyboard protocol" is vastly more common than "CSIu" now - Replace the countdown response counter with a simple boolean flag. We don't actually need a countdown counter because we request the primary device attributes along with the Kitty keyboard query, so we will always receive a "terminating event", making a countdown/timer unnecessary - Move the CSI response handling into a dedicated function - Bypass Unibilium for sending key encoding escape sequences. These sequences are not part of terminfo and do not have any parameters, so there's no reason to go through Unibilium
* | refactor(snippet): rename test utilitiesMaria José Solano2023-11-17
| |
* | feat(lsp): support for choice snippet nodesMaria José Solano2023-11-17
| |
* | fix(tui): handle cursor visibility properly (#26091)zeertzjq2023-11-17
| | | | | | | | The test is for the case without 'termsync' because libvterm doesn't support synchronized output, and it passes without this PR.
* | docs: document breaking change of cursor blink behavior (#26075)Gregory Anders2023-11-17
| |
* | Merge pull request #25934 from bfredl/screenlinecharbfredl2023-11-17
|\ \ | | | | | | refactor(grid): make screen rendering more multibyte than ever before
| * | refactor(grid): make screen rendering more multibyte than ever beforebfredl2023-11-17
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: buffer text with composing chars are converted from UTF-8 to an array of up to seven UTF-32 values and then converted back to UTF-8 strings. Solution: Convert buffer text directly to UTF-8 based schar_T values. The limit of the text size is now in schar_T bytes, which is currently 31+1 but easily could be raised as it no longer multiplies the size of the entire screen grid when not used, the full size is only required for temporary scratch buffers. Also does some general cleanup to win_line text handling, which was unnecessarily complicated due to multibyte rendering being an "opt-in" feature long ago. Nowadays, a char is just a char, regardless if it consists of one ASCII byte or multiple bytes.
* | fix(lua): only disable vim.schedule() when closing main loop (#26090)zeertzjq2023-11-17
| |
* | Merge pull request #26083 from zeertzjq/vim-9.0.1854zeertzjq2023-11-17
|\ \ | | | | | | vim-patch:9.0.{1854,1857,1858,partial:1859,1860,1864,1868,1872,1873,1878,1881,1882,1969,1992,2004,2010,2106}
| * | vim-patch:9.0.2106: [security]: Use-after-free in win_close()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: Use-after-free in win_close() Solution: Check window is valid, before accessing it If the current window structure is no longer valid (because a previous autocommand has already freed this window), fail and return before attempting to set win->w_closing variable. Add a test to trigger ASAN in CI https://github.com/vim/vim/commit/25aabc2b8ee1e19ced6f4da9d866cf9378fc4c5a Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.2010: [security] use-after-free from buf_contents_changed()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security] use-after-free from buf_contents_changed() Solution: block autocommands https://github.com/vim/vim/commit/41e6f7d6ba67b61d911f9b1d76325cd79224753d Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1992: [security] segfault in exmodezeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: segfault in exmode when redrawing Solution: skip gui_scroll when exmode_active https://github.com/vim/vim/commit/20d161ace307e28690229b68584f2d84556f8960 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1969: [security] buffer-overflow in trunc_string()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: buffer-overflow in trunc_string() Solution: Add NULL at end of buffer Currently trunc_string() assumes that when the string is too long, buf[e-1] will always be writeable. But that assumption may not always be true. The condition currently looks like this else if (e + 3 < buflen) [...] else { // can't fit in the "...", just truncate it buf[e - 1] = NUL; } but this means, we may run into the last else clause with e still being larger than buflen. So a buffer overflow occurs. So instead of using `buf[e - 1]`, let's just always truncate at `buf[buflen - 1]` which should always be writable. https://github.com/vim/vim/commit/3bd7fa12e146c6051490d048a4acbfba974eeb04 vim-patch:9.0.2004: Missing test file Problem: Missing test file Solution: git-add the file to the repo closes: vim/vim#13305 https://github.com/vim/vim/commit/d4afbdd0715c722cfc73d3a8ab9e578667615faa Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1882: Trailing white space in testszeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Trailing white space in tests Solution: Delete it This causes test_codestyle to fail, so we need to remove it again. Hopefully that makes the CI green again. Note: I will start using annotated tags from now on. https://github.com/vim/vim/commit/da200c2f78ef3c91557a2b484d284eb0c1c62776 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1881: Test_crash fails on Maczeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Test_crash fails on Mac Solution: Skip test on Mac https://github.com/vim/vim/commit/5856b07795dff69e3bac57deb5033b5839c1dfb8 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1878: tests running sh have problemszeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: tests running sh have problems Solution: Check that dash is installed closes: vim/vim#13040 https://github.com/vim/vim/commit/1690ec64ffd784cddddb937870f5891adbb21986 Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com> Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1873: [security] heap-buffer-overflow in vim_regsub_bothzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: heap-buffer-overflow in vim_regsub_both Solution: Disallow exchanging windows when textlock is active https://github.com/vim/vim/commit/f6d28fe2c95c678cc3202cc5dc825a3fcc709e93 Cherry-pick test_crash.vim change from patch 9.0.1876. Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1872: CI: test_crash() fails on CIzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: CI: test_crash() fails on CI Solution: Skip test on BSD https://github.com/vim/vim/commit/d2a08ba0fa4a25f31cee9d9f33b0aa8237227387 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1868: test_crash still fails for circle cizeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: test_crash still fails for circle ci Solution: give even more time to complete https://github.com/vim/vim/commit/59adcb4c203371258c72e76011da93eac8540317 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1864: still crash with bt_quickfix1_poczeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: crash with bt_quickfix1_poc when cleaning up and EXITFREE is defined Solution: Test if buffer is valid in a window, else close window directly, don't try to access buffer properties While at it, increase the crash timeout slightly, so that CI has a chance to finish processing the test_crash() test. https://github.com/vim/vim/commit/623ba31821a41acee7e948794e84867680b97885 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1860: CI: test_crash1() is flakyzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: CI: test_crash1() is flaky Solution: Wait a bit longer https://github.com/vim/vim/commit/f44cbe96fa44d10d6dd717e0a9f6ef0f104ee98a Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:partial:9.0.1859: heap-use-after-free in bt_normal()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: heap-use-after-free in bt_normal() Solution: check that buffer is still valid https://github.com/vim/vim/commit/6e60cf444a8839ca1694319bf9a82e7b097e5c4d Test change only. Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1858: [security] heap use after free in ins_compl_get_exp()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: heap use after free in ins_compl_get_exp() Solution: validate buffer before accessing it https://github.com/vim/vim/commit/ee9166eb3b41846661a39b662dc7ebe8b5e15139 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1857: [security] heap-use-after-free in is_qf_win()zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: heap-use-after-free in is_qf_win() Solution: Check buffer is valid before accessing it https://github.com/vim/vim/commit/fc68299d436cf87453e432daa77b6d545df4d7ed Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1854: test_crash1() fails on CIzeertzjq2023-11-17
|/ / | | | | | | | | | | | | | | | | | | | | Problem: test_crash1() fails on CI Solution: don't run Screendump test, verify that it doesn't crash by running it through a shell command line, testing the exit value and concatenating success cmd using '&&' https://github.com/vim/vim/commit/db510ca8052884fd260f425025bacf44f6c92fa9 Co-authored-by: Christian Brabandt <cb@256bit.org>
* | fix(osc52): use `p` for primary selection instead of `s` (#26076)Tomasz N2023-11-16
| | | | | | Co-authored-by: Gregory Anders <greg@gpanders.com>
* | vim-patch:9.0.2107: [security]: FPE in adjust_plines_for_skipcol (#26082)zeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: FPE in adjust_plines_for_skipcol Solution: don't divide by zero, return zero Prevent a floating point exception when calculating w_skipcol (which can happen with a small window when the number option is set and cpo+=n). Add a test to verify https://github.com/vim/vim/commit/cb0b99f0672d8446585d26e998343dceca17d1ce Co-authored-by: Christian Brabandt <cb@256bit.org>
* | Merge pull request #26081 from zeertzjq/vim-9.0.2108zeertzjq2023-11-17
|\ \ | | | | | | vim-patch:9.0.{1532,1534,1535,2108,2109,2110,2111}
| * | vim-patch:9.0.2111: [security]: overflow in get_numberzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: overflow in get_number Solution: Return 0 when the count gets too large [security]: overflow in get_number When using the z= command, we may overflow the count with values larger than MAX_INT. So verify that we do not overflow and in case when an overflow is detected, simply return 0 https://github.com/vim/vim/commit/73b2d3790cad5694fc0ed0db2926e4220c48d968 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.2110: [security]: overflow in ex address parsingzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: overflow in ex address parsing Solution: Verify that lnum is positive, before substracting from LONG_MAX [security]: overflow in ex address parsing When parsing relative ex addresses one may unintentionally cause an overflow (because LONG_MAX - lnum will overflow for negative addresses). So verify that lnum is actually positive before doing the overflow check. https://github.com/vim/vim/commit/060623e4a3bc72b011e7cd92bedb3bfb64e06200 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.2109: [security]: overflow in nv_z_get_countzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: overflow in nv_z_get_count Solution: break out, if count is too large When getting the count for a normal z command, it may overflow for large counts given. So verify, that we can safely store the result in a long. https://github.com/vim/vim/commit/58f9befca1fa172068effad7f2ea5a9d6a7b0cca Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.2108: [security]: overflow with count for :s commandzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: [security]: overflow with count for :s command Solution: Abort the :s command if the count is too large If the count after the :s command is larger than what fits into a (signed) long variable, abort with e_value_too_large. Adds a test with INT_MAX as count and verify it correctly fails. It seems the return value on Windows using mingw compiler wraps around, so the initial test using :s/./b/9999999999999999999999999990 doesn't fail there, since the count is wrapping around several times and finally is no longer larger than 2147483647. So let's just use 2147483647 in the test, which hopefully will always cause a failure https://github.com/vim/vim/commit/ac63787734fda2e294e477af52b3bd601517fa78 Co-authored-by: Christian Brabandt <cb@256bit.org>
| * | vim-patch:9.0.1535: test commented out in a wrong wayzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Test commented out in a wrong way. Solution: Use legacy script comment character. https://github.com/vim/vim/commit/a4467c433a767cc2dc046ff134094c1b6305b678 Co-authored-by: Bram Moolenaar <Bram@vim.org>
| * | vim-patch:9.0.1534: test for expanding "~" in substitute takes too longzeertzjq2023-11-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Test for expanding "~" in substitute takes too long. Solution: Disable the test for now. https://github.com/vim/vim/commit/916d6dd5b1834293e21a72ef70175aae57e78fba Co-authored-by: Bram Moolenaar <Bram@vim.org>
| * | vim-patch:9.0.1532: crash when expanding "~" in substitute causes very long textzeertzjq2023-11-17
|/ / | | | | | | | | | | | | | | | | Problem: Crash when expanding "~" in substitute causes very long text. Solution: Limit the text length to MAXCOL. https://github.com/vim/vim/commit/ab9a2d884b3a4abe319606ea95a5a6d6b01cd73a Co-authored-by: Bram Moolenaar <Bram@vim.org>
* | build: update libtermkey commitdundargoc2023-11-16
| | | | | | | | | | | | | | | | | | The new commit includes the following patches: https://github.com/neovim/libtermkey/commit/bf544610f5bd1a4e049b9ba0f94d2a588d1312ce https://github.com/neovim/libtermkey/commit/dcb198a85c520ce38450a5970c97f8ff03b50f0e Fixes https://github.com/neovim/neovim/issues/26038.
* | fix(osc52): enable OSC 52 by default in tmux sessions (#26072)Gregory Anders2023-11-16
| | | | | | | | | | tmux has a set-clipboard option which, when set to 'on', allows applications to set the system clipboard using the usual OSC 52 escape sequence.
* | refactor: use optional base argument of tonumber (#26070)Gregory Anders2023-11-16
| |
* | feat(clipboard): enable OSC 52 clipboard provider by default (#26064)Gregory Anders2023-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | Use the XTGETTCAP sequence to determine if the host terminal supports the OSC 52 sequence and, if it does, enable the OSC 52 clipboard provider by default. This is only done automatically when all of the following are true: 1. Nvim is running in the TUI 2. 'clipboard' is not set to unnamed or unnamedplus 3. g:clipboard is unset 4. Nvim is running in an SSH connection ($SSH_TTY is set) 5. Nvim is not running inside tmux ($TMUX is unset)
* | feat: add vim.text module (#26069)Gregory Anders2023-11-16
| |