| Commit message (Collapse) | Author | Age |
... | |
|\ \ \ \ \ |
|
| | | | | | |
|
| | |_|_|/
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* str_utf_start/end both cast the offset into the utf string
to a char_u, a pointer + long is well-defined and the cast is
unnecessary. This previously resulted in issues for offsets greater than
256.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Problem: .csx files and .sln files are not recognized.
Solution: Add filetype patterns. (Doug Kearns)
https://github.com/vim/vim/commit/cfabad9bcf45650dee1f1f41ec4047f82a12f323
|
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When filling a quickfix/loclist from a string-typed VimL variable, the
complexity is O(N^2) in the number of lines in the variable.
The problem is caused by using `xstrlcpy(3)` to copy the characters from
the current position up to the next newline into the quickfix/loclist
buffer in a loop.
strlcpy(3) returns the length of `src`, so by necessity it has to
compute `strlen(src)`. This means scanning the full rest of the typval
on every iteration while only copying a small fraction (up to the next
'\n').
This is not a problem whenever the srclen-to-copylen ratio is close to
1, which it usually is. But not in this case. Since we already
calculated exactly how many bytes we want to copy, we should be using
memcpy(3).
This problem is not present in Vim, as it uses `vim_strncpy`, a
`strncpy(3)`-alike, which stops at either `\0` or `n`, whichever comes
first.
The quickfix/loclist window can be filled using a:
1. File (used by commands like :grep/:make/... to source directly
from their errorfile)
2. Buffer (used by :cbuffer and its variants)
3. Typval
a. String (used by :cexpr and its variants)
b. List of strings (used by setqflist(), setloclist(), :cepxr and its
variants)
This commit optimizes case (3a), especially when the typval is a long
string.
The pathological path is triggered by (e.g.) :grep enhancements as found
in https://gist.github.com/romainl/56f0c28ef953ffc157f36cc495947ab3:
function! Grep(...)
return system(join([&grepprg] + a:000), ' '))
endfunction
:cgetexpr Grep('foo')
It would've been better for Neovim to use `systemlist` here, before this
commit.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Problem: i3config files are not recognized.
Solution: Add patterns to match i3config files. (Quentin Hibon,
closes vim/vim#7969)
https://github.com/vim/vim/commit/8176be159859deb9cf6455565bd7b24b3dcf17b9
|
|\ \ \ \
| |_|_|/
|/| | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
vim-patch:8.2.3777: spell file write error not checked
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
Problem: Spell file write error not checked.
Solution: Check writing the prefix conditions. (Björn Linse, closes vim/vim#9323)
|
|\ \ \ \
| | | | |
| | | | | |
refactor: get rid of misc1.c ("functions that didn't seem to fit elsewhere")
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Possibly dialog code is messages.c could be moved here as well.
misc1.c is now empty, so delete it.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
These are used in various places, but were grouped with open_line()
which has a lot of comment prefix logic originally.
|
| |/ / / |
|
|/ / / |
|
|\ \ \
| |_|/
|/| | |
refactor: move out some long-hanging fruit from misc1.c
|
| | | |
|
| | |
| | |
| | |
| | | |
Also make some function names more descriptive/regular.
|
| | | |
|
| |/ |
|
|\ \
| | |
| | | |
vim-patch:8.2.3664,8.2.3743,8.2.3747,8.2.3748,8.2.3757
|
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: An overlong highlight group name is silently truncated.
Solution: Give an error if the name is too long. (closes vim/vim#9289)
https://github.com/vim/vim/commit/f7f7aaf8aaad34a38d3f159e031c5bcf3394f8f1
|
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Giving an error for an empty sign argument breaks a plugin.
Solution: Do not give an error.
https://github.com/vim/vim/commit/e5710a02cb78c2a0a868ea55740835c78ddecbb4
|
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Cannot remove highlight from an existing sign. (James McCoy)
Solution: Only reject empty argument for a new sign.
https://github.com/vim/vim/commit/0bac5fc5e125b7aa0f3b596c9b7f4381279e6688
|
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: ":sign" can add a highlight group without a name.
Solution: Give an error if the group name is missing. (closes vim/vim#9280)
https://github.com/vim/vim/commit/5e18ccc60bdddc4aa39ab039f1a7c918f29e67ce
|
| |/
| |
| |
| |
| |
| |
| | |
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.
|
|\ \ \
| | | |
| | | | |
Portability improvements, first steps at getting neovim on x86_64 SunOS
|
| | | |
| | | |
| | | |
| | | |
| | | | |
cfsetspeed is not available on SunOS, use cfsetispeed and cfsetospeed
instead.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Older SunOS systems come without strnlen, add STRNLEN macro in line with
the other str* compat macros.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
On SunOS NAME_MAX is not defined, _XOPEN_NAME_MAX is so fall back to
defining NAME_MAX from _XOPEN_NAME_MAX.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
libutil is not available on Solaris variants, even on Solaris 11 where
forkpty is available.
|
| |_|/
|/| |
| | |
| | |
| | | |
Problem: Zig files are not recognized.
Solution: Add *.zig. (Gregory Anders, closes vim/vim#9313)
https://github.com/vim/vim/commit/4c8c634365bc6d4d462635aed5e0f7ad2262d590
|
|\ \ \
| | | |
| | | | |
fix(terminal): use coladvance() to calculate buffer cursor position
|
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | | |
Fixes `q` in more pager, where `:highlight` can be quit out of with a
single `q` keystroke, while in `:lua print(vim.inspect(vim))` it just
scrolls down a page.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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: Cannot backspace in prompt buffer after using cursor-left. (Maxim
Kim)
Solution: Ignore "arrow_used" in a prompt buffer. (closes vim/vim#7281)
https://github.com/vim/vim/commit/6f6244855fbce5aaa718cd5001a29aac3c5c15d6
cmdchar_todo wasn't adapted properly for Nvim's state system, which caused it to
be a dead store and such was removed in #11900.
Re-introduce cmdchar_todo properly.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Try-catch test fails.
Solution: Don't call win_enter(), only call enterering_window().
https://github.com/vim/vim/commit/bdf931c25b4fe78877106ca529baee7899d0f6a4
v8.2.1781 caused Test_reload_in_try_catch() from v8.2.0004 to fail in Vim, but
it has not been ported yet.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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).
|