aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Merge pull request #27428 from bfredl/luarenabfredl2024-02-13
|\ | | | | refactor(lua): use Arena when converting from lua stack to API args
| * refactor(lua): use a keyset for vim.diff opts parsingbfredl2024-02-13
| |
| * refactor(lua): use Arena when converting from lua stack to API argsbfredl2024-02-13
|/ | | | | | | | | | | | and for return value of nlua_exec/nlua_call_ref, as this uses the same family of functions. NB: the handling of luaref:s is a bit of a mess. add api_luarefs_free_XX functions as a stop-gap as refactoring luarefs is a can of worms for another PR:s. as a minor feature/bug-fix, nvim_buf_call and nvim_win_call now preserves arbitrary return values.
* fix(loader): remove cyclic dependency on vim.fs (when --luamod-dev)Jongwook Choi2024-02-13
| | | | | | | | | | Problem: Loading `vim.fs` via the `vim.loader` Lua package loader will result in a stack overflow due to a cyclic dependency. This may happen when the `vim.fs` module isn't byte-compiled, i.e. when `--luamod-dev` is used (#27413). Solution: `vim.loader` depends on `vim.fs`. Therefore `vim.fs` should be loaded in advance.
* docs(builtin): fix lua types for vim.fn.sign_getplacedJongwook Choi2024-02-13
| | | | | | | Per :help sign_getplaced(): - Parameter {dict}: lnum also accepts integer as well as string - Return value: item has field bufnr, not buf
* docs: stricter bufname and bufnr types (#27454)Maria José Solano2024-02-13
|
* vim-patch:9.1.0101: upper-case of German sharp s should be U+1E9E (#27449)zeertzjq2024-02-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: upper-case of ß should be U+1E9E (CAPITAL LETTER SHARP S) (fenuks) Solution: Make gU, ~ and g~ convert the U+00DF LATIN SMALL LETTER SHARP S (ß) to U+1E9E LATIN CAPITAL LETTER SHARP S (ẞ), update tests (glepnir) This is part of Unicode 5.1.0 from April 2008, so should be fairly safe to use now and since 2017 is part of the German standard orthography, according to Wikipedia: https://en.wikipedia.org/wiki/Capital_%E1%BA%9E#cite_note-auto-12 There is however one exception: UnicodeData.txt for U+00DF LATIN SMALL LETTER SHARP S does NOT define U+1E9E LATIN CAPITAL LETTER SHARP S as its upper case version. Therefore, toupper() won't be able to convert from lower sharp s to upper case sharp s (the other way around however works, since U+00DF is considered the lower case character of U+1E9E and therefore tolower() works correctly for the upper case version). fixes: vim/vim#5573 closes: vim/vim#14018 https://github.com/vim/vim/commit/bd1232a1faf56b614a1e74c4ce51bc6e0650ae00 Co-authored-by: glepnir <glephunter@gmail.com>
* vim-patch:9.1.0103: 'breakindentopt' "min" not correct with 'signcolumn' ↵zeertzjq2024-02-13
| | | | | | | | | | | (#27451) Problem: 'breakindentopt' "min" works incorrectly with 'signcolumn'. Solution: Use win_col_off() and win_col_off2(). (zeertzjq) closes: vim/vim#14014 https://github.com/vim/vim/commit/f0a9d65e0a1d693cdfa964aa72de5b93b4cacdea
* vim-patch:9.1.0102: settabvar() may change the last accessed tabpage (#27450)zeertzjq2024-02-13
| | | | | | | | | Problem: settabvar() may change the last accessed tabpage. Solution: Save and restore lastused_tabpage. (zeertzjq) closes: vim/vim#14017 https://github.com/vim/vim/commit/b47fbb40837512cdd2d8c25eaf9952154836b99d
* perf(redraw): reduce redraw with undo and extmarks or 'spell' (#27442)zeertzjq2024-02-13
| | | | | | | | | | | | | | | | vim-patch:9.1.0100: Redrawing can be improved with undo and 'spell' Problem: When undoing with 'spell', redrawWinline() is called after changed_lines(), while later win_update() sets redraw type to UPD_NOT_VALID, even though w_redraw_top and w_redraw_bot are still valid. Solution: Only set redraw type to UPD_NOT_VALID when inserting/deleting lines after parts of window has pending redraw, i.e., when changed_lines() is called after redrawWinline(). (zeertzjq) closes: vim/vim#14019 https://github.com/vim/vim/commit/f2d90a351159fd6843f450850f52004f42e00183
* vim-patch:9.0.0245: mechanism to prevent recursive screen updating is ↵zeertzjq2024-02-13
| | | | | | | | | | | incomplete (#27448) Problem: Mechanism to prevent recursive screen updating is incomplete. Solution: Add "redraw_not_allowed" and set it in build_stl_str_hl(). (issue vim/vim#10952) https://github.com/vim/vim/commit/471c0fa3eed4f6207d1cb7636970547bfd2eee26 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* Merge pull request #27439 from bfredl/nofreeallmembfredl2024-02-12
|\ | | | | fix(exitfree): don't use ex commands to close windows in free_all_mem()
| * fix(exitfree): don't use ex commands to close windows in free_all_mem()bfredl2024-02-12
| | | | | | | | | | | | Attempting to manipulate the window layout via ex commands is not safe here. It is also redundant: `win_free_all()` can free multiple windows by itself perfectly fine.
* | refactor(tests): get channel id via nvim_get_chan_info #27441Justin M. Keyes2024-02-12
| | | | | | Minor "best practices" nudge.
* | Merge pull request #27348 from fredizzimo/fsundvik/fix-ext-hlstatebfredl2024-02-12
|\ \ | | | | | | fix: crashes with large msgpack messages
| * | fix: splitting of big UI messagesFred Sundvik2024-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | Determine the needed buffer space first, instead of trying to revert the effect of prepare_call if message does not fit. The previous code did not revert the full state, which caused corrupted messages to be sent. So, rather than trying to fix all of that, with fragile and hard to read code as a result, the code is now much more simple, although slightly slower.
| * | fix: buffer overrun in lmpack_session_receiveFred Sundvik2024-02-06
| | | | | | | | | | | | The offset was not taken into account when calculating the remaining buffer size.
| * | test: add more hlstate testsFred Sundvik2024-02-05
| | |
* | | fix(extmarks): redraw pre-undo position (#27437)zeertzjq2024-02-12
| | | | | | | | | | | | | | | | | | | | | Problem: Virtual text not redrawn properly after undo moves its extmark. Solution: Redraw the moved extmark's pre-undo position.
* | | fix(lsp): re-add client.commands and mark privateLewis Russell2024-02-12
| | |
* | | docs: correct on_key docs (#27429)altermo2024-02-12
| |/ |/|
* | fix(lsp): semantic token defer loadingLewis Russell2024-02-12
| | | | | | | | Fixes #27424
* | vim-patch:9.1.0098: CompleteChanged not triggered when new leader added ↵Raphael2024-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | without matches (#27436) Problem: CompleteChanged not triggered when new leader added causing no matching item in the completion menu Solution: When completion is active but no items matched still trigger CompleteChanged event (glepnir) closes: vim/vim#13982 https://github.com/vim/vim/commit/0d3c0a66a39570cbc52b9536604c39e324b989b3 Fix #15077
* | perf(extmarks): avoid unnecessary invalidations for virt_text (#27435)zeertzjq2024-02-12
| | | | | | | | Invalidation of most w_valid flags isn't needed when adding or removing virtual text below cursor.
* | vim-patch:b614b284ee06 (#27433)zeertzjq2024-02-12
| | | | | | | | | | | | | | | | | | | | | | | | runtime(vim): Update syntax file (vim/vim#14009) - allow comments after :highight commands - match the bang in a :highlight[!] command - highlight the bang in :map[!], :menu[!] and :unlet[!] with vimOper like all other commands https://github.com/vim/vim/commit/b614b284ee06523511308f8381b47db34d921d39 Co-authored-by: dkearns <dougkearns@gmail.com>
* | fix(column): use a single path for sign sorting (#27431)luukvbaal2024-02-12
| | | | | | | | | | | | Problem: #25826 added a (duplicate) sign comparison function, which was modified and strayed from the original in #27418. Solution: Merge the two functions and add a display test that actually tests for this order in addition to the legacy tests.
* | vim-patch:9.1.0097: 'breakindent' behaves inconsistently with 'list' and ↵zeertzjq2024-02-12
| | | | | | | | | | | | | | | | | | | | | | | | splits (#27432) Problem: 'breakindent' behaves inconsistently with 'list' and splits. Solution: Use 'listchars' from the correct window and handle caching properly. Move cheaper comparisons to the top. (zeertzjq) closes: vim/vim#14008 https://github.com/vim/vim/commit/efabd7c8d4f733350364356b8950a11f013aec49
* | refactor(indent): refactor computing of a string's indent size (#27252)VanaIgr2024-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `get_indent_str_vtab()` function currently calls `tabstop_padding()` every time a tab is encountered (unless tabstops aren't used). `tabstop_padding()` either does a division by 'tabstop' If 'vartabstop' is not set, or iterates through the 'vartabstop' list to find current tab width. Since the virtual column only increases, we can keep track of where the next tabstop would be, and update this information once it was reached. `get_indent_str_vtab()` also depends on 'listchars' "tab" value from the current window, even though it may be called for a line from the same buffer in a different window. In most cases, it is called with tabstops enabled (last argument was `false`), so I split the function into one that uses tabstops and the other that doesn't. I removed `get_indent_str()` since I couldn't find any calls to it.
* | vim-patch:6d91227267a5Christian Clason2024-02-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime(gpg): Mark dangerous use-embedded-filename with WarningMsg The syntax highlighter is likely to encourage people to use the listed commands. But `use-embedded-filename` is a dangerous option that can cause GnuPG to write arbitrary data to arbitrary files whenever GnuPG encounters malicious data. GnuPG upstream explicitly warns against using this option: https://dev.gnupg.org/T4500 https://dev.gnupg.org/T6972 However, since this is a valid option, we cannot just drop it from the syntax script. Instead, let's mark it with the WarningMsg highlighting to make it obvious, that this option is different (and should not be used for security reasons). closes: vim/vim#13961 https://github.com/vim/vim/commit/6d91227267a5f7e21fc9b30443687618e92751bf Co-authored-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
* | refactor(lsp): move more code to client.luaLewis Russell2024-02-11
| | | | | | | | | | | | | | | | | | | | | | | | The dispatchers used by the RPC client should be defined in the client, so they have been moved there. Due to this, it also made sense to move all code related to client configuration and the creation of the RPC client there too. Now vim.lsp.start_client is significantly simplified and now mostly contains logic for tracking open clients. - Renamed client.new -> client.start
* | Merge pull request #27420 from MariaSolOs/warning-anxietyLewis Russell2024-02-11
|\ \ | | | | | | refactor(lsp): fix type annotations and add shared diagnostic helper
| * | refactor(lsp): add vim.lsp.sync.Range typeMaria José Solano2024-02-10
| | |
| * | refactor(lsp): add shared diagnostic handlerMaria José Solano2024-02-10
| | |
| * | refactor(lsp): add type annotationsMaria José Solano2024-02-10
| | |
* | | Merge pull request #27414 from bfredl/arenalinesbfredl2024-02-11
|\ \ \ | | | | | | | | refactor(api): use an arena for nvim_buf_get_lines and buffer updates
| * | | refactor(api): use an arena for nvim_buf_get_lines and buffer updatesbfredl2024-02-11
|/ / / | | | | | | | | | | | | Refactor some earlier "temporary Array" code in buffer_updates.c to use the modern style of MAXSIZE_TEMP_ARRAY and ADD_C
* | | fix(messages): clear new lines when increasing 'cmdheight' (#27421)zeertzjq2024-02-11
| | |
* | | feat(shortmess): "q" flag fully hides recording message (#27415)Trevor Arjeski2024-02-11
| | | | | | | | | | | | | | | | | | | | | When "q" is set in 'shortmess' it now fully hides the "recording @a" message when you are recording a macro instead of just shortening to "recording". This removes duplication when using reg_recording() in the statusline. Related #19193
* | | refactor: rename w_float_config to w_config #27419Will Hopkins2024-02-10
| | | | | | | | | Follows up on rename of `FloatConfig` to `WinConfig` in #27397.
* | | Merge pull request #27253 from MariaSolOs/codelens-refreshbfredl2024-02-10
|\ \ \ | | | | | | | | feat(lsp): add opts to vim.lsp.codelens.refresh
| * | | feat(lsp): add opts paramater to vim.lsp.codelens.refreshMaria José Solano2024-02-08
| | | |
* | | | Merge pull request #27418 from zeertzjq/vim-9.1.0089zeertzjq2024-02-10
|\ \ \ \ | | | | | | | | | | vim-patch:9.1.{0089,0093}: qsort() comparison function fixes
| * | | | refactor: don't use subtraction in qsort() comparison functionszeertzjq2024-02-10
| | | | |
| * | | | vim-patch:9.1.0093: Still a qsort() comparison function that returns result ↵zeertzjq2024-02-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of subtraction Problem: Still a qsort() comparison function fuzzy_match_item_compare() that returns result of subtraction (after 9.1.0089). Solution: Use an explicit comparison instead of subtraction. (zeertzjq) closes: vim/vim#14004 https://github.com/vim/vim/commit/77078276bfe695070441a1bbdc02949d31de8922
| * | | | vim-patch:9.1.0089: qsort() comparison functions should be transitivezeertzjq2024-02-10
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: qsort() comparison functions should be transitive Solution: Do not subtract values, but rather use explicit comparisons Improve qsort() comparison functions There has been a recent report on qsort() causing out-of-bounds read & write in glibc for non transitive comparison functions https://www.qualys.com/2024/01/30/qsort.txt Even so the bug is in glibc's implementation of the qsort() algorithm, it's bad style to just use substraction for the comparison functions, which may cause overflow issues and as hinted at in OpenBSD's manual page for qsort(): "It is almost always an error to use subtraction to compute the return value of the comparison function." So check the qsort() comparison functions and change them to be safe. closes: vim/vim#13980 https://github.com/vim/vim/commit/e06e43766500ecb4cd1031fa16cf9cbebdb222c1 Co-authored-by: Christian Brabandt <cb@256bit.org>
* | | | build(deps): bump tree-sitter-bash to v0.20.5Christian Clason2024-02-10
| | | |
* | | | refactor: reduce some globals #27406Justin M. Keyes2024-02-10
| | | |
* | | | Merge pull request #27398 from bfredl/arena2bfredl2024-02-10
|\ \ \ \ | | | | | | | | | | refactor(api): use arena for more stuff
| * | | | refactor(api): use arena for nvim_get_option_info()bfredl2024-02-09
| | | | |
| * | | | refactor(api): use arena for nvim_parse_cmd()bfredl2024-02-09
| | | | |