| Commit message (Collapse) | Author | Age |
... | |
|\
| |
| | |
refactor(lua): use Arena when converting from lua stack to API args
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Per :help sign_getplaced():
- Parameter {dict}: lnum also accepts integer as well as string
- Return value: item has field bufnr, not buf
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
(#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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|\
| |
| | |
fix(exitfree): don't use ex commands to close windows in free_all_mem()
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| | |
Minor "best practices" nudge.
|
|\ \
| | |
| | | |
fix: crashes with large msgpack messages
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | | |
The offset was not taken into account when calculating the remaining buffer size.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem:
Virtual text not redrawn properly after undo moves its extmark.
Solution:
Redraw the moved extmark's pre-undo position.
|
| | | |
|
| |/
|/| |
|
| |
| |
| |
| | |
Fixes #27424
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| | |
Invalidation of most w_valid flags isn't needed when adding or removing
virtual text below cursor.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| | |
| | | |
refactor(lsp): fix type annotations and add shared diagnostic helper
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
refactor(api): use an arena for nvim_buf_get_lines and buffer updates
|
|/ / /
| | |
| | |
| | |
| | | |
Refactor some earlier "temporary Array" code in buffer_updates.c to use
the modern style of MAXSIZE_TEMP_ARRAY and ADD_C
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |
| | |
| | | |
Follows up on rename of `FloatConfig` to `WinConfig` in #27397.
|
|\ \ \
| | | |
| | | | |
feat(lsp): add opts to vim.lsp.codelens.refresh
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
vim-patch:9.1.{0089,0093}: qsort() comparison function fixes
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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>
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
refactor(api): use arena for more stuff
|
| | | | | |
|
| | | | | |
|