| Commit message (Collapse) | Author | Age |
|\
| |
| | |
Truncate double-width character at the end of popup menu correctly
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Nvim already resizes grid to the required width, so there is no need to
truncate the text in pum_redraw(). What's more, truncation is currently
done incorrectly because Vim patch 8.2.1995 was ported incorrectly.
This nearly reverts the truncation part of Vim patch 8.2.1995, but not
the part that reduces unnecessary calls to pum_redraw(). The original PR
https://github.com/vim/vim/pull/7306 didn't explain much about which
part of it actually reduces redraws.
|
|/
|
|
|
|
|
|
|
| |
Empty string values for these options aren't actually allowed, but
check_opt_strings allows empty string options.
It so happens that 'scl' handles empty string like "auto", but empty 'fdc'
causes glitchiness (win_fdccol_count returns an incorrect value).
Just disallow empty string values for these options completely.
|
|
|
|
| |
For special options such as 'undolevels' and 'scrolloff', this sets the
local value to the special "unset" value (e.g. -12345 for 'undolevels').
|
|
|
|
|
| |
This allows the user to detach an active buffer from the language
client. If no clients remain attached to a buffer, the on_lines callback
is used to cancel nvim_buf_attach.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Closes https://github.com/neovim/neovim/issues/16625 https://github.com/neovim/neovim/issues/12923
The first defined CursorMoved autocommand will immediately
fire if the cursor has previously moved upon definition
of the autocommand.
Plugins add dummy autocommands such as:
```lua
autocmd CursorMoved * execute ''
```
to avoid this behavior.
Instead, when defining a new CursorHold autocommand, force
update the last cursor position.
See https://github.com/vim/vim/issues/2053
|
|\
| |
| | |
test: require fewest number of main loop iterations possible
|
| |
| |
| |
| |
| | |
Change exc_exec to pcall_err to reduce one main loop iteration.
No need to call poke_eventloop() unless after nvim_input().
|
| | |
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
feat(eval): add reg_recorded()
This function is used the get the last recorded register.
style(Recording): rename handler to match suggestions
fix(RecordingLeave): send autocommand earlier
This makes the autocommand fire just before setting reg_recorded to
reg_recording, this way we clearly show that we are actually just before
actually quitting the recording mode.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
incremental sync (#16670)
Closes #16624
Fixes two issues with aligning the start position and end position to
codepoints when calculating the start and end range.
When aligning the start position:
* use aligned byte index to calculate character index rather than
the unadjusted byte
When aligning the end position:
* do not adjust the end byte if it falls on a UTF-8 codepoint
* align byte to the first byte of the next codepoint rather than the
last byte of the current codepoint
* compute character character end range on the aligned byte index
This commit also adds additional test coverage, including multibyte operations
that previously failed before this commit.
|
| |
| |
| |
| |
| |
| | |
The Lua modules that make up vim.lua are embedded as raw source files into the
nvim binary. These sources are loaded by the Lua runtime on startuptime. We can
pre-compile these sources into Lua bytecode before embedding them into the
binary, which minimizes the size of the binary and improves startuptime.
|
|\ \
| | |
| | | |
fix(screenpos, float): add top and left border adjustment
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
refresh_scrollback assumes pending scrollback rows exist only if the
terminal window height decreased (or the screen was full).
However, after accumulating scrollback, it's possible in some cases for
the terminal height to increase before refresh_scrollback is called via
invalidation (especially when the terminal buffer isn't initially
displayed in a window before nvim_open_term), which may crash.
As we'll have enough room for some scrollback rows, just append them to
the top of the buffer until it fills the window, then continue with the
previous logic for any remaining scrollback rows if necessary.
|
| | |
|
|\ \ |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Based on https://github.com/neovim/neovim/pull/14445
This extends `vim.treesitter.query.get_node_text` to return the text
that spans a node's range even if start_row ~= end_row.
|
| | | |
|
|/ / |
|
|\ \
| | |
| | | |
vim-patch:8.2.3664,8.2.3743,8.2.3747,8.2.3748,8.2.3757
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Cannot adjust sign highlighting for 'cursorline'.
Solution: Add CursorLineSign and CursorLineFold highlight groups.
(Gregory Anders, closes vim/vim#9201)
https://github.com/vim/vim/commit/e413ea04b716effb28eb49dbc98ad3f9f761545a
|
|\ \ \
| |/ /
|/| | |
fix(terminal): return early if there are no invalid rows
|
| | |
| | |
| | |
| | | |
Prevent on_lines emitting out-of-bounds line indexes.
|
|\ \ \
| | | |
| | | | |
fix(terminal): use coladvance() to calculate buffer cursor position
|
| |/ / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The overwhelming majority of use cases for `open_float` are to view
diagnostics from the current buffer in a floating window. Thus, most use
cases will just `0` or `nil` as the first argument, which makes the
argument effectively useless and wasteful.
In the cause of optimizing for the primary use case, make the `bufnr`
parameter an optional parameter in the options table. This still allows
using an alternative buffer for those that wish to do so, but makes the
"primary" use case much easier.
The old signature is preserved for backward compatibility, though it can
likely be fully deprecated at some point.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
nvim_buf_get_extmark uses "end_row" rather than "end_line" in its
'details' dict, which means callers must modify the key names if they
want to re-use the information. Change the parameter name in
nvim_buf_set_extmark to "end_row" and use "end_line" as an alias
to make this more consistent.
|
|\ \ \
| |/ /
|/| | |
vim-patch:8.1.{35,42,64},8.2.{1781,1783,1976,2014,3671}
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Restarting Insert mode in prompt buffer too often when a callback
switches windows and comes back. (Sean Dewar)
Solution: Do not set "restart_edit" when already in Insert mode.
https://github.com/vim/vim/commit/34c20ff85b87be587ea5d0398812441b502ee6a5
As Test_prompt_switch_windows is skipped, implement it in prompt_buffer_spec.
Replace the 50ms term_wait calls with poke_eventloop (test seems to work anyway
without them, so maybe they're not required?)
The new test does include a duplicate screen test that may generate a "screen
test succeeded immediately" warning, but this is done to match the Vim test.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I already ported v8.1.1984 previously, but hadn't updated prompt_buffer_spec to
match test_prompt_buffer (which we have but due to Vim features such as
term_sendkeys it's mostly skipped).
Required for v8.2.3671.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Using CTRL-O in a prompt buffer moves cursor to start of the line.
Solution: Do not move the cursor when restarting edit. (closes vim/vim#7330)
https://github.com/vim/vim/commit/ee8b787bcd15f63a938243770065e704c9b5c85f
Test_prompt_editing is skipped, so edit the Lua test in prompt_buffer_spec.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Writing to prompt buffer interferes with insert mode.
Solution: Use win_enter() instead of just setting "curwin". (Ben Jackson,
closes vim/vim#7035)
https://github.com/vim/vim/commit/4537bcc88956f86267c25edf8008e0dbde598652
Vim test will be skipped, so add a Lua test.
The problem boils down to the use of aucmd_restbuf in a callback, so just test
that (via nvim_buf_set_lines).
|
|\ \ \
| | | |
| | | | |
fix(highlight): always update window highlight if highlight changed
|
| |/ / |
|
|/ / |
|
|\ \
| | |
| | | |
vim-patch:7.4.1777,8.1.{1925,1995,2011,2012,2013,2166},8.2.{0532,0871,1168,1241,3576}
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Newly added features can escape the sandbox.
Solution: Add checks for restricted and secure. (Yasuhiro Matsumoto)
https://github.com/vim/vim/commit/3849992b16011e36a5cb5be4b127f843389b96fd
timer_start is missing check_secure.
The timer callback can, for example, call a function defined from outside the sandbox that does
stuff that would be disallowed from inside the sandbox. This is usually not allowed.
Cherry-pick eval.txt change from:
https://github.com/vim/vim/commit/68e6560b84f196c82e27a72669684d5506a3a837
Required for v8.1.2013.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: More functions can be used as methods.
Solution: Make various functions usable as a method.
https://github.com/vim/vim/commit/196b4664432f932625cfb6371dc42c24efe6c203
server2client requires +clientserver, which hasn't been ported yet.
The eval.txt docs and test_clientserver.vim tests for server2client already exist, so include those
changes.
test_bufline.vim: Test for setbufline requires v8.1.1189 (which was reverted in #10848).
|
|\ \ \
| | | |
| | | | |
vim-patch:8.1.1542,8.2.3549: an OptionSet autocommand does not get enough info
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Problem: An OptionSet autocommand does not get enough info.
Solution: Add v:option_command, v:option_oldlocal and v:option_oldglobal.
(Latrice Wilgus, closes vim/vim#4118)
https://github.com/vim/vim/commit/d7c968794710f338d491072171df48f96612cf72
|
| | | |
| | | |
| | | |
| | | | |
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Gregory Anders <greg@gpanders.com>
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The legacy test was converted to a new style Vim test in
8b812183002ec869b20ae33ee7ec52452470fc52.
|
|\ \ \ \
| | | | |
| | | | | |
test(api): mark "notify cancels stale events on channel close" fragile
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is already skipped in all CI environments, so it should also be
skipped in environments that don't like fragile tests. Since there's no
convenient way to express these concisely, add the explicit fragile
skip.
|