aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* fix(highlight): update `PmenuSel` for colored completion items #30183Evgeni Chasnovski2024-08-29
| | | | | | | | | | | | | | | | | | | | | Problem: completion items can now have dedicated highlighting (through `hl_group` and `kind_hlgroup` fields). Both of the fields combine their highlight attributes with the underlying `PmenuXxx` group. As default color scheme `Pmenu` and `PmenuSel` are intentionally almost inverted versions of one another, the added highlighting will be unreadable in one of them if done only through foreground (which is the most convenient way for users and being able to do so is arguably the biggest benefit of actually combining added highlighting). Solution: adjust `PmenuSel` to utilize `attr=reverse`. This works because `fg`/`bg` are first combined and only then reversed. This results in a colored background for items with `hl_group` and `kind_hlgroup` using text highlighting. This also results in the same background for regular selected item, while intentionally changing foreground from `Nvim{Light,Dark}Grey3` to (essentially) `Nvim{Light,Dark}Grey2`. This both provides better contrast ratio and does not need realigning of the whole block.
* Merge pull request #26950 from bfredl/s390x_fixbfredl2024-08-29
|\ | | | | fix issues with s390x CI on master (xdiff and others)
| * fix(build): issues with s390x CIbfredl2024-08-29
| | | | | | | | | | Does not fix everything, but at least let's test run to finish before timeout
* | docs(eval): fix wrong return type of getcharsearch() (#30176)glepnir2024-08-29
|/
* vim-patch:9.1.0699: "dvgo" is not always an inclusive motion (#30173)zeertzjq2024-08-29
| | | | | | | | | | | | Problem: "dvgo" is not always an inclusive motion (Iain King-Speir) Solution: initialize the inclusive flag to false fixes: vim/vim#15580 closes: vim/vim#15582 https://github.com/vim/vim/commit/f8702aeb8ff85554d909901ae45b50c3d532bf70 Co-authored-by: Christian Brabandt <cb@256bit.org>
* docs: misc (#29719)dundargoc2024-08-29
| | | | | | | | | Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: Lauri Heiskanen <lauri.heiskanen@nimble.fi> Co-authored-by: Piotr Doroszewski <5605596+Doroszewski@users.noreply.github.com> Co-authored-by: Tobiasz Laskowski <tobil4sk@outlook.com> Co-authored-by: ariel-lindemann <41641978+ariel-lindemann@users.noreply.github.com> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* fix(regexp): fix typo in E888 error message (#30161)Eisuke Kawashima2024-08-28
| | | Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
* feat(treesitter): add support for wasm parsersLewis Russell2024-08-26
| | | | | | | | | | | | | | | | | | | | Problem: Installing treesitter parser is hard (harder than climbing to heaven). Solution: Add optional support for wasm parsers with `wasmtime`. Notes: * Needs to be enabled by setting `ENABLE_WASMTIME` for tree-sitter and Neovim. Build with `make CMAKE_EXTRA_FLAGS=-DENABLE_WASMTIME=ON DEPS_CMAKE_FLAGS=-DENABLE_WASMTIME=ON` * Adds optional Rust (obviously) and C11 dependencies. * Wasmtime comes with a lot of features that can negatively affect Neovim performance due to library and symbol table size. Make sure to build with minimal features and full LTO. * To reduce re-compilation times, install `sccache` and build with `RUSTC_WRAPPER=<path/to/sccache> make ...`
* vim-patch:9.1.0692: Wrong patlen value in ex_substitute() (#30131)zeertzjq2024-08-24
| | | | | | | | | | | | Problem: Wrong patlen value in ex_substitute() (after 9.1.0426). Solution: Compute patlen after finding end separator. (zeertzjq) Add a more explicit test. The test already passes as the only case where a overlarge patlen value matters was fixed by patch 9.1.0689. closes: vim/vim#15565 https://github.com/vim/vim/commit/d1c8d2de4b9fa44b3d2b39b7ed8b92846c5502b7
* vim-patch:9.1.0690: cannot set special highlight kind in popupmenu (#30128)zeertzjq2024-08-24
| | | | | | | | | | | Problem: cannot set special highlight kind in popupmenu Solution: add kind_hlgroup item to complete function (glepnir) closes: vim/vim#15561 https://github.com/vim/vim/commit/38f99a1f0d61e9bde3f4a3d0cbe2d06185c4a57f Co-authored-by: glepnir <glephunter@gmail.com>
* vim-patch:9.1.0683: mode() returns wrong value with <Cmd> mapping (#30109)zeertzjq2024-08-22
| | | | | | | | | | | Problem: mode() returns wrong value with <Cmd> mapping Solution: Change decision priority of VIsual_active and move visual mode a bit further down (kuuote) closes: vim/vim#15533 https://github.com/vim/vim/commit/0fd1cb1b1fc90b68cb37f71e65289eadac3588a6 Co-authored-by: kuuote <znmxodq1@gmail.com>
* fix(decor): don't use separate DecorSignHighlight for url (#30096)zeertzjq2024-08-20
|
* fix(terminal): interrupt/got_int hangs terminal (#30056)ibhagwan2024-08-20
| | | | | | | | | | | | | | | | | | | | | | | | | | Upon `terminal_enter`, `mapped_ctrl_c` is set in order to avoid `CTRL-C` interrupts (which is proxied to the terminal process instead), `os_inchar` will then test `mapped_ctrl_c` against `State` and set `ctrl_c_interrupts=false` which prevents `process_ctrl_c` from setting `got_int=true` in a terminal state. However, if `got_int` is set outside of `process_ctrl_c`, e.g. via `interrupt()`, this will hang the neovim process as `terminal_execute` will enter an endless loop as `got_int` will never be cleared causing `safe_vgetc` to always return `Ctrl_C`. A minimal example reproducing this bug: ```vim :autocmd TermEnter * call timer_start(500, {-> interrupt()}) :terminal :startinsert ``` To fix, we make sure `got_int` is cleared inside `terminal_execute` when it detects `Ctrl_C`. Closes #20726 Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* fix(terminal): handle C0 characters in OSC terminator (#30090)Gregory Anders2024-08-19
| | | | | | | | | | | | | | When a C0 character is present in an OSC terminator (i.e. after the ESC but before a \ (0x5c) or printable character), vterm executes the control character and resets the current string fragment. If the C0 character is the final byte in the sequence, the string fragment has a zero length. However, because the VT parser is still in the "escape" state, vterm attempts to subtract 1 from the string length (to account for the escape character). When the string fragment is empty, this causes an underflow in the unsigned size variable, resulting in a buffer overflow. The fix is simple: explicitly check if the string length is non-zero before subtracting.
* fix(api): error properly with invalid field in nvim_open_win (#30078)zeertzjq2024-08-17
|
* vim-patch:9.1.0677: :keepp does not retain the substitute patternzeertzjq2024-08-17
| | | | | | | | | | | | | Problem: :keeppatterns does not retain the substitute pattern for a :s command Solution: preserve the last substitute pattern when used with the :keeppatterns command modifier (Gregory Anders) closes: vim/vim#15497 https://github.com/vim/vim/commit/3b59be4ed8a145d3188934f1a5cd85432bd2433d Co-authored-by: Gregory Anders <greg@gpanders.com>
* vim-patch:9.1.0679: Rename from w_closing to w_locked is incompletezeertzjq2024-08-17
| | | | | | | | | | | Problem: Rename from w_closing to w_locked is incomplete (after 9.1.0678). Solution: Rename remaining occurrences of w_closing to w_locked and update comments (zeertzjq). closes: vim/vim#15504 https://github.com/vim/vim/commit/bc11f6d9d4f580179d3963f3c489881904d6cd62
* vim-patch:9.1.0678: [security]: use-after-free in alist_add()zeertzjq2024-08-17
| | | | | | | | | | | | | Problem: [security]: use-after-free in alist_add() (SuyueGuo) Solution: Lock the current window, so that the reference to the argument list remains valid. This fixes CVE-2024-43374 https://github.com/vim/vim/commit/0a6e57b09bc8c76691b367a5babfb79b31b770e8 Co-authored-by: Christian Brabandt <cb@256bit.org>
* feat(diff): do not try external when out of memoryLewis Russell2024-08-15
| | | | - Also merge diff_buf_idx_tp into diff_buf_idx.
* feat(term): support OSC 8 hyperlinks in :terminal (#30050)Gregory Anders2024-08-15
|
* fix(highlight): fix the seg fault caused by the invalid linked hl idsWilliam Wong2024-08-14
|
* refactor(fileio): use os_copy() to copy file (#30030)zeertzjq2024-08-13
| | | | It uses sendfile(), which is faster than combining read() and write(), and it also copies permissions.
* vim-patch:9.1.0672: marker folds may get corrupted on undo (#30026)zeertzjq2024-08-11
| | | | | | | | | | | | | Problem: marker folds may get corrupted on undo (Yousef Mohammed) Solution: when adjusting folds, make sure that line1 is the lower limit and line2 is the upper line limit. In particular, line2 should not be able to get smaller than line1. fixes: vim/vim#15455 closes: vim/vim#15466 https://github.com/vim/vim/commit/8d02e5cf961b06da5bc490ac5972bcbc252c4793 Co-authored-by: Christian Brabandt <cb@256bit.org>
* test(lsp): refactor and tidyLewis Russell2024-08-11
| | | | | | | - Merge all the top level 'LSP' describe blocks - Refactor text edit tests - Fix typing errors - Add linebreaks between tests
* feat(term): enable reflow by default (#21124)Christian Clason2024-08-10
| | | | | | | | | | | | Problem: Contents of terminal buffer are not reflown when Nvim is resized. Solution: Enable reflow in libvterm by default. Now that libvterm is vendored, also fix "TUI rapid resize" test failures there. Note: Neovim's scrollback buffer does not support reflow (yet), so lines vanishing into the buffer due to a too small window will be restored without reflow.
* build(deps): vendor libvterm at v0.3.3Christian Clason2024-08-10
| | | | | | | | Problem: Adding support for modern Nvim features (reflow, OSC 8, full utf8/emoji support) requires coupling libvterm to Nvim internals (e.g., utf8proc). Solution: Vendor libvterm at v0.3.3.
* vim-patch:9.1.0667: Some other options reset curswant unnecessarily when set ↵zeertzjq2024-08-10
| | | | | | | | | | | | | (#30020) Problem: Some other options reset curswant unnecessarily when set. (Andrew Haust) Solution: Don't reset curswant when setting 'comments', 'commentstring' or 'define' (zeertzjq) fixes: vim/vim#15462 closes: vim/vim#15467 https://github.com/vim/vim/commit/b026a293b1e9d7a30f7717e256fe5f7f1dfa20d7
* vim-patch:9.1.0666: assert_equal() doesn't show multibyte string correctly ↵zeertzjq2024-08-10
| | | | | | | | | | | (#30018) Problem: assert_equal() doesn't show multibyte string correctly Solution: Properly advance over a multibyte char. (zeertzjq) closes: vim/vim#15456 https://github.com/vim/vim/commit/9c4b2462bb498f44044616f7309d111d12170369
* docs: update version.c (#30016)github-actions[bot]2024-08-09
| | | Co-authored-by: marvim <marvim@users.noreply.github.com>
* vim-patch:0cc5dce: runtime(doc): clarify directory of Vim's executable vs CWDzeertzjq2024-08-09
| | | | | | | | | | According to :h win32-PATH, "the same directory as Vim" means the same directory as the Vim executable, not Vim's current directory. In patch 8.2.4860 these two concepts were mixed up. closes: vim/vim#15451 https://github.com/vim/vim/commit/0cc5dce5780d39fe621f6146d4fb862318918125
* vim-patch:8.2.4860: MS-Windows: always uses current directory for executableszeertzjq2024-08-09
| | | | | | | | | | | | Problem: MS-Windows: always uses current directory for executables. Solution: Check the NoDefaultCurrentDirectoryInExePath environment variable. (Yasuhiro Matsumoto, closes vim/vim#10341) https://github.com/vim/vim/commit/05cf63e9bdca1ac070df3e7d9c6dfc45e68ac916 Omit doc change: override in later doc update. Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
* vim-patch:8.1.1413: error when the drive of the swap file was disconnected ↵zeertzjq2024-08-08
| | | | | | | | | | (#30009) Problem: Error when the drive of the swap file was disconnected. Solution: Try closing and re-opening the swap file. (closes vim/vim#4378) https://github.com/vim/vim/commit/b58a4b938c4bc7e0499700859bd7abba9acc5b11 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:8.2.3476: renaming a buffer on startup may cause using freed memoryzeertzjq2024-08-08
| | | | | | | | | | | Problem: Renaming a buffer on startup may cause using freed memory. Solution: Check if the buffer is used in a window. (closes vim/vim#8955) https://github.com/vim/vim/commit/d3710cf01ef6ab1b2f233866ff01dab76686f642 Cherry-pick Test_echo_true_in_cmd() from Vim. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* refactor!: use utf8proc full casefoldingdundargoc2024-08-07
| | | | | | | | | | | | | | | | | | | | According to `CaseFolding-15.1.0.txt`, full casefolding should be preferred over simple casefolding as it's considered to be more correct. Since utf8proc already provides full casefolding it makes sense to switch to it. This will also remove a lot of unnecessary build code. Temporary exceptions are made for two sets characters: - `ß` will still be considered `ß` (instead of `ss`) as using a full casefolding requires interfering with upstream spell files in some form. - `İ` will still be considered `İ` (instead of `i̇`) as using full casefolding requires making a value judgement on the "correct" behavior. There are two, equally valid case-insensetive comparison for this character according to unicode. It is essentially up to the implementor to decide which conversion is correct. For this reason it might make sense to allow users to decide which conversion should be done as an added option to `casemap` in a future PR.
* vim-patch:partial:8.1.0914: code related to findfile() is spread out (#30000)zeertzjq2024-08-07
| | | | | | | | | | Problem: Code related to findfile() is spread out. Solution: Put findfile() related code into a new source file. (Yegappan Lakshmanan, closes vim/vim#3934) https://github.com/vim/vim/commit/5fd0f5052f9a312bb4cfe7b4176b1211d45127ee Keep functions related to wildcard expansion in path.c, as in Vim they are now spread out among multiple files, which isn't really ideal.
* vim-patch:9.1.0662: filecopy() may return wrong value when readlink() fails ↵zeertzjq2024-08-07
| | | | | | | | | | | (#29998) Problem: filecopy() may return wrong value when readlink() fails. Solution: Set ret to -1 so that 0 is returned when readlink() fails. (zeertzjq) closes: vim/vim#15438 https://github.com/vim/vim/commit/da090f95df6c015e4f7fc9e1036795a370503a83
* fix(filetype): fix :filetype detect error with -u NONE (#29991)zeertzjq2024-08-06
| | | | :filetype detect should enable filetype detection when it hasn't been enabled before.
* vim-patch:8.2.4838: checking for absolute path is not trivial (#29990)zeertzjq2024-08-06
| | | | | | | | | | Problem: Checking for absolute path is not trivial. Solution: Add isabsolutepath(). (closes vim/vim#10303) https://github.com/vim/vim/commit/dca1d40cd0f2af0755519e7028378bd3c8fefd31 vim-patch:8a3b805c6c9c Co-authored-by: LemonBoy <thatlemon@gmail.com>
* vim-patch:9.1.0465: missing filecopy() function (#29989)zeertzjq2024-08-06
| | | | | | | | | | | Problem: missing filecopy() function Solution: implement filecopy() Vim script function (Shougo Matsushita) closes: vim/vim#12346 https://github.com/vim/vim/commit/60c8743ab6c90e402e6ed49d27455ef7e5698abe Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
* refactor: extract eval/fs.c from eval/funcs.c (#29985)zeertzjq2024-08-06
| | | | | | In Vim a lot of filesystem functions have been moved to filepath.c. However, some of these functions actually deal with file contents, and Nvim's filesystem-related functions are spread out in a different way. Therefore, it's better to use a different file for these functions.
* Merge pull request #29540 from bfredl/neoshadabfredl2024-08-05
|\ | | | | refactor(shada): rework msgpack decoding without msgpack-c
| * build(deps): remove msgpack-c dependencybfredl2024-08-05
| |
| * refactor(shada): rework msgpack decoding without msgpack-cbfredl2024-08-05
| | | | | | | | | | | | | | This also makes shada reading slightly faster due to avoiding some copying and allocation. Use keysets to drive decoding of msgpack maps for shada entries.
* | fix(build): surpress spurious warnings from gcc in -E preprocessor modebfredl2024-08-05
|/ | | | | | | | | | | | | Since #29315 we are also preprocessing header files in order to find functions which need prototype declarations. gcc emits a spurious "warning: #pragma once in main file" even when when you are just using `gcc -E` which causes a bit of noise in compiler output. As a workaround, surpress all warnings for this step, this should be pretty much harmless as we will still get preprocessor warnings when doing actual compilation `gcc -c` later. reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89808
* vim-patch:9.1.0653: Patch v9.1.0648 not completely rightzeertzjq2024-08-03
| | | | | | | | | | | | Problem: Patch v9.1.0648 not completely right (zeertzjq) Solution: Remove always true condition closes: vim/vim#15415 https://github.com/vim/vim/commit/a0b5bc12850f1d87fa51fb7be42df0ea835ccf21 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.1.0648: [security] double-free in dialog_changed()zeertzjq2024-08-03
| | | | | | | | | | | | | | | | | Problem: [security] double-free in dialog_changed() (SuyueGuo) Solution: Only clear pointer b_sfname pointer, if it is different than the b_ffname pointer. Don't try to free b_fname, set it to NULL instead. fixes: vim/vim#15403 Github Advisory: https://github.com/vim/vim/security/advisories/GHSA-46pw-v7qw-xc2f https://github.com/vim/vim/commit/b29f4abcd4b3382fa746edd1d0562b7b48c9de60 Co-authored-by: Christian Brabandt <cb@256bit.org>
* refactor: move some functions out of eval.c (#29964)zeertzjq2024-08-02
| | | | | | - common_function() has always been in evalfunc.c in Vim - return_register() has always been in evalfunc.c in Vim - get_user_input() was moved to ex_getln.c in Vim 8.1.1957 - tv_get_lnum_buf() was moved to typval.c in Vim 8.2.0847
* fix(tui): reset active attr ID when OSC 8 sequence is terminated (#29960)Gregory Anders2024-08-02
| | | | | | | | | | | | When the cursor is moved we terminate any active OSC 8 sequences to prevent the sequence from inadvertently spanning regions it is not meant to span. However, if we do not also reset the TUI's active attr id (print_attr_id) then the TUI does not "know" that it's current attribute set has changed. When cursor_goto is called to wrap a line, the TUI does not recompute the attributes so the OSC 8 sequence is not restarted again. When we terminate an OSC 8 sequence before moving the cursor, also reset the active attr id so that the attributes are recomputed for URLs.
* fix(eval): handle wrong v:lua in expr option properly (#29953)zeertzjq2024-08-02
|
* refactor(eval): treat v:lua call as simple functionzeertzjq2024-08-02
|