aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Merge pull request #26813 from VanaIgr/screen-pos-speedupzeertzjq2024-01-22
|\ | | | | | | | | | | | | perf: make screen size and position calculations more efficient N/A patches for version.c: vim-patch:9.1.0037: Calling get_breakindent_win() repeatedly when computing virtcol vim-patch:9.1.0038: Unnecessary loop in getvcol()
| * perf: reuse fast character size calculation algorithm from getvcol()VanaIgr2024-01-22
| |
| * perf: don't decode utf8 character multiple times in getvcol()VanaIgr2024-01-22
| | | | | | | | | | | | | | | | The optimized virtual column calculation loop in getvcol() was decoding the current character twice: once in ptr2cells() and the second time in utfc_ptr2len(). For combining charcters, they were decoded up to 2 times in utfc_ptr2len(). Additionally, the function used to decode the character could be further optimised.
| * perf: remove loop for computing last position in getvcol()VanaIgr2024-01-18
| | | | | | | | | | | | | | | | The function computed the start of the multibyte character and iterated until the current character reached this position. The loop at the start of the function handed the case where the index passed to the function was past the end of the line. This loop can be removed if the function instead compares the next position against the end position end exits the loop if it is greater than the end position.
| * perf: cache breakindent/showbreak width in win_lbr_chartabsizeVanaIgr2024-01-18
| | | | | | | | | | | | breakindent was recomputed on every call to win_lbr_charbabsize() when the character is past the end of the first row of a wrapped line. Even though the function for computing breakindent cached the last result, reusing the cached value required strcmp of the cached line with the given line.
* | fix(rpc): assertion failure due to invalid msgpack inputnwounkn2024-01-21
| | | | | | | | | | | | | | | | | | Problem: rbuffer_consumed assertion fails if Unpacker fails to parse msgpack, because it doesn't consume bytes on errors Solution: Call rbuffer_consumed_compact only if Unpacker isn't closed
* | build: create BINARY_LIB_DIR directory before adding parserdundargoc2024-01-22
| | | | | | | | | | | | cmake -E copy_directory behaves differently depending on if the directory in question exists or not. Always create it to ensure it behaves consistently.
* | fix(extmarks): missing "spell" and "conceal" in details (#27116)zeertzjq2024-01-22
| |
* | build: fix parser installation locationdundargoc2024-01-21
| | | | | | | | | | Cmake's `install()` functions like rsync where a trailing slash changes whether the directory or its contents will be copies.
* | feat(treesitter)!: new standard capture namesChristian Clason2024-01-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Sharing queries with upstream and Helix is difficult due to different capture names. Solution: Define and document a new set of standard captures that matches tree-sitter "standard captures" (where defined) and is closer to Helix' Atom-style nested groups. This is a breaking change for colorschemes that defined highlights based on the old captures. On the other hand, the default colorscheme now defines links for all standard captures (not just those used in bundled queries), improving the out-of-the-box experience.
* | build: create separate targets for nvim with and without runtime filesdundargoc2024-01-20
| | | | | | | | | | | | | | This distinction is important for correct dependency management, as the nvim binary is used to create some runtime files. The nvim binary (and the target to build it) is thus called `nvim_bin` and the target to build all of nvim (binary+runtime) is called `nvim`.
* | feat(api): support getting abbreviations (#26868)Raphael2024-01-20
| |
* | feat(ui): add chdir UI event (#27093)Gregory Anders2024-01-19
| | | | | | | | | | | | When an embedded Nvim instance changes its current directory a "chdir" UI event is emitted. Attached UIs can use this information however they wish. In the TUI it is used to synchronize the cwd of the TUI process with the cwd of the embedded Nvim process.
* | Merge pull request #27061 from luukvbaal/extmarkbfredl2024-01-19
|\ \ | |/ |/| fix(extmarks): do not remove invalid marks from decor upon deletion
| * refactor(extmarks): remove unused new pos from ExtmarkSavePosLuuk van Baal2024-01-18
| |
| * docs(extmarks): add undocumented "details" array fieldsLuuk van Baal2024-01-18
| |
| * fix(extmarks): do not remove invalid marks from decor upon deletionLuuk van Baal2024-01-17
| |
* | fix(inccommand): improve preview buffer number handling (#27087)zeertzjq2024-01-19
| |
* | refactor(drawline): get_rightmost_vcol()Lewis Russell2024-01-18
| |
* | refactor(drawline): add more constsLewis Russell2024-01-18
| |
* | refactor(drawline): localise more variables in win_line()Lewis Russell2024-01-18
| |
* | refactor(drawline): more win_line() improvementsLewis Russell2024-01-18
| | | | | | | | | | | | | | | | `win_line()` previously used a conspicuous `ptrdiff_t v` variable in many different places for different reasons. The change encapsulates those uses and introduces local variables in each with a reduced scope. Also add `const` to some fields in winlinevars_T.
* | docs: various #25289Justin M. Keyes2024-01-18
| | | | | | | | | | | | Co-authored-by: Jongwook Choi <wookayin@gmail.com> Co-authored-by: Oliver Marriott <hello@omarriott.com> Co-authored-by: Benoit de Chezelles <bew@users.noreply.github.com> Co-authored-by: Jongwook Choi <wookayin@gmail.com>
* | fix(drawline): update prev_ptr after getting syntax attrs (#27072)zeertzjq2024-01-18
| |
* | vim-patch:9.1.0040: issue with prompt buffer and hidden buffer (#27071)zeertzjq2024-01-18
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Modifying a hidden buffer still interferes with prompt buffer mode changes. Solution: Save and restore b_prompt_insert. (zeertzjq) closes: vim/vim#13875 Modifying hidden buffer still interferes with prompt buffer mode changes https://github.com/vim/vim/commit/f267847017976ab85117bdf75b45e769836f8d69
* | vim-patch:9.1.0039: too vague errors for 'listchars'/'fillchars' (#27070)zeertzjq2024-01-18
| | | | | | | | | | | | | | | | | | | | | | | | Problem: too vague errors for 'listchars'/'fillchars' Solution: Include the field name in error message. (zeertzjq) related: #27050 closes: vim/vim#13877 https://github.com/vim/vim/commit/6a8d2e1634f8f0d7463a2786dbcbe0f38dd287a7 Co-authored-by: Cole Frankenhoff <cole.nhf@gmail.com>
* | fix(column): remove sign from line it was previously on with undoLuuk van Baal2024-01-17
|/
* fix(column): pass kFalse when initializing "b_signcols.count"Luuk van Baal2024-01-17
| | | | | | | Problem: Wrong "clear" argument passed to buf_signcols_count_range when initializing "b_signcols.count" for the first time. Solution: Pass kFalse so that the "nested" counter is not incorrectly decremented.
* docs: various fixes (#26929)dundargoc2024-01-17
| | | | Co-authored-by: Patrick Bollinger <owner@pjbollinger.com> Co-authored-by: vilo1839 <139687192+vilo1839@users.noreply.github.com>
* vim-patch:9.1.0033: Insert mode not stopped if closing prompt buffer ↵zeertzjq2024-01-17
| | | | | | | | | | | | modifies hidden buffer (#27051) Problem: Insert mode not stopped if an autocommand modifies a hidden buffer while closing a prompt buffer. Solution: Don't set b_prompt_insert if stop_insert_mode is already set. (zeertzjq) closes: vim/vim#13872 https://github.com/vim/vim/commit/96958366ad6159efe708b694055320ed19357e61
* vim-patch:9.1.0035: i_CTRL-] triggers InsertCharPre (#27049)altermo2024-01-17
| | | | | | | | | | | | | | * vim-patch:9.1.0035: i_CTRL-] triggers InsertCharPre Problem: i_CTRL-] triggers InsertCharPre Solution: Return if CTRL-] is received. InsertCharPre is supposed to be only used for chars to be inserted but i_CTRL-] triggers expansion and is not inserted into the buffer (altermo) closes: vim/vim#13853 closes: vim/vim#13864 https://github.com/vim/vim/commit/7d711fe2092d0438d2df5054df735ec34926e2bc
* docs(column): 'statuscolumn' redraw interaction with 'relativenumber'Luuk van Baal2024-01-16
|
* fix(column): redraw 'statuscolumn' on wrapped lines with 'relativenumber'Luuk van Baal2024-01-16
| | | | | | | Problem: The 'statuscolumn' is not redrawn on the wrapped part of a line when moving the cursor with 'relativenumber' set. Solution: Redraw the 'statuscolumn' for the entire line height in the "col_rows" win_line() code path.
* version.c: update (#27036)github-actions[bot]2024-01-16
| | | Co-authored-by: marvim <marvim@users.noreply.github.com>
* docs(builtin): remove signatures of undocumented functions (#27039)zeertzjq2024-01-16
| | | | | | Having an empty signature causes an empty line in generated docs, so remove it. Also change ">" to ">vim" in foreach() docs.
* vim-patch:partial:9.1.0027: Vim is missing a foreach() func (#27037)zeertzjq2024-01-16
| | | | | | | | | | | | | | | | | | | | Problem: Vim is missing a foreach() func Solution: Implement foreach({expr1}, {expr2}) function, which applies {expr2} for each item in {expr1} without changing it (Ernie Rael) closes: vim/vim#12166 https://github.com/vim/vim/commit/e79e2077607e8f829ba823308c91104a795736ba Partial port as this doesn't handle non-materialized range() lists. vim-patch:c92b8bed1fa6 runtime(help): delete duplicate help tag E741 (vim/vim#13861) https://github.com/vim/vim/commit/c92b8bed1fa632569c8358feb3b72dd6a0844ef7 Co-authored-by: Ernie Rael <errael@raelity.com>
* fix(edit): don't go to Terminal mode when stopping Insert mode (#27033)zeertzjq2024-01-16
|
* vim-patch:8.1.1968: crash when using nested map() (#27029)zeertzjq2024-01-16
| | | | | | | | | | | Problem: Crash when using nested map(). Solution: Clear the pointer in prepare_vimvar(). (Ozaki Kiichi, closes vim/vim#4890, closes vim/vim#4891) https://github.com/vim/vim/commit/27da7de7c547dbf983ed7dd901ea59be4e7c9ab2 Cherry-pick Test_filter_map_nested() from patch 8.1.1964. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.1.0009: Cannot easily get the list of matches (#27028)zeertzjq2024-01-16
| | | | | | | | | | | | | | | | | | | | Problem: Cannot easily get the list of matches Solution: Add the matchstrlist() and matchbufline() Vim script functions (Yegappan Lakshmanan) closes: vim/vim#13766 Omit CHECK_LIST_MATERIALIZE(): it populates a List with numbers only, and there is a check for strings below. https://github.com/vim/vim/commit/f93b1c881a99fa847a1bafa71877d7e16f18e6ef vim-patch:eb3475df0d92 runtime(doc): Replace non-breaking space with normal space (vim/vim#13868) https://github.com/vim/vim/commit/eb3475df0d927a178789cf8e7fc4983932e1cdbe Co-authored-by: Yegappan Lakshmanan <4298407+yegappan@users.noreply.github.com>
* fix(coverity/477623,477624): guard null pointer dereference in kv_concat_len ↵Gregory Anders2024-01-15
| | | | | | | | | | | | (#27022) Coverity warns about a possible null pointer dereference in the `memcpy` call in `kv_concat_len`. The `memcpy` follows `kv_ensure_space` which (re)allocates the `items` pointer if the vector's capacity is not large enough to contain all of the items being appended. The only way `items` would be NULL at this point is if `capacity` were mistakenly set to some large number without `items` ever having being set in the first place. This should not happen when using the kvec API so if this condition is ever false it is a bug, which the `assert` will catch.
* fix(grid): handle clearing half a double-width char (#27023)zeertzjq2024-01-15
|
* docs(vvars): fix wrong lua types in vim.v variablesJongwook Choi2024-01-15
| | | | | | | | - cmdarg: string[] -> string - shell_error: string -> int - stderr: string -> int - Add types for: cmdbang, errors, exception, false, true
* fix(column): keep track of number of lines with number of signsLuuk van Baal2024-01-15
| | | | | | | | | | | | | | | | | | | Problem: Some edge cases to the old (pre-#26406) and current "b_signcols" structure result in an incorrectly sized "auto" 'signcolumn'. Solution: * Implement a simpler 'signcolumn' validation strategy by immediately counting the number of signs in a range upon sign insertion and deletion. Decrease in performance here but there is a clear path forward to decreasing this performance hit by moving signs to a dedicated marktree, or by adding meta-data to the existing marktree which may be queried more efficiently? * Also replace "max_count" and keep track of the number of lines with a certain number of signs. This makes it so that it is no longer necessary to scan the entire buffer when the maximum number of signs decreases. This likely makes the commit a net increase in performance. * To ensure correctness we also have re-initialize the count for an edited region that spans multiple lines. Such an edit may move the signs within it. Thus we count and decrement before splicing the marktree and count and increment after.
* docs: add lua typing for `vim.NIL`Jongwook Choi2024-01-15
|
* build: disable conversion warnings for older GCC versionsdundargoc2024-01-14
| | | | | The conversion warnings from GCC versions 10 and less give too many false positives and should be disabled.
* docs(builtin): overload functions with union return typesaltermo2024-01-14
|
* docs: auto-generate docs for `vim.lpeg` and `vim.re`Jongwook Choi2024-01-14
| | | | | | | | | | | | | | | | | - Add section `VIM.LPEG` and `VIM.RE` to docs/lua.txt. - Add `_meta/re.lua` which adds luadoc and type annotations, for the vendored `vim.re` package. - Fix minor style issues on `_meta/lpeg.lua` luadoc for better vimdocs generation. - Fix a bug on `gen_vimdoc` where non-helptags in verbatim code blocks were parsed as helptags, affecting code examples on `vim.lpeg.Cf`, etc. - Also move the `vim.regex` section below so that it can be located closer to `vim.lpeg` and `vim.re`.
* fix(ops.c): remove duplicate u_save_cursor()zeertzjq2024-01-14
|
* docs(builtin): fix mapset() signature (#27008)zeertzjq2024-01-14
|
* fix(colorscheme): default statusline groups usability #26921Evgeni Chasnovski2024-01-13
| | | | | | | | | | | | | | | | | | Problem: Current values of `StatusLine` and `StatusLineNC` are currently designed to be visually distinctive while being not intrusive. However, the compromise was more shifted towards "not intrusive". After the feedback, statusline highlight groups should be designed to: - Make current window clearly noticeable. Meaning `StatusLine` and `StatusLineNC` should obviously differ. - Make non-current windows clearly separable. Meaning `StatusLineNC` and `Normal`/`NormalNC` should obviously differ. Solution: - Update `StatusLineNC` to have more visible background. - Update `StatusLine` to be inverted variant of `StatusLineNC`. - Update `WinBar` and `WinBarNC` to not link to `StatusLine` and `StatusLineNC` because it makes two goals harder to achieve. - Update `TabLine` to link to `StatusLineNC` instead of `StatusLine` to not be very visually intrusive.