| Commit message (Collapse) | Author | Age |
... | |
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Implement api_keydict_to_dict as the complement to api_dict_to_keydict
Fix a conversion error when nvim_get_win_config gets called from lua,
where Float values "x" and "y" didn't get converted to lua numbers.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
`utf_char2cells()` calls `utf_printable()` twice (sometimes indirectly,
through `vim_isprintc()`) for characters >= 128. The function can be
refactored to call to it only once.
`utf_printable()` uses binary search on ranges of unprintable characters
to determine if a given character is printable. Since there are only 9
ranges, and the first range contains only one character, binary search
can be replaced with SSE2 SIMD comparisons that check 8 ranges at a
time, and the first range is checked separately. SSE2 is enabled by
default in GCC, Clang and MSVC for x86-64.
Add 3-byte utf-8 to screenpos_spec benchmarks.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem:
When nvim_input is followed immediately by non-fast events on RPC, both
events and input are available after the polling done by the os_inchar()
in state_enter(), but state_enter() then chooses to process events even
if input is available, which is inconsistent with state_handle_k_event()
that stops processing events once input is available.
Solution:
Also check for available input after the os_inchar() in state_enter().
|
| |
| |
| |
| | |
There doesn't seem to be an easy solution that doesn't involve a goto.
Also remove duplicate assignment in win_line().
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(#27363)
Problem: LineNrAbove and LineNrBelow background wrong on wrapped lines.
Solution: Update number column also for wrapped part of a line.
(zeertzjq)
closes: vim/vim#13974
https://github.com/vim/vim/commit/ebfd856cfdf6ea0b16c8d115000961c998ce97da
Cherry-pick test_number.vim changes from patch 9.0.0626.
|
| |
| |
| | |
Co-authored-by: Matthieu Coudron <886074+teto@users.noreply.github.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
nv_mousescroll() (#27359)
Problem: The call to redraw_for_cursorline() in nv_mousescroll() is
unnecessary because redraw_for_cursorline() only sets redraw
type to UPD_VALID, and all code paths in do_mousescroll()
already set redraw type to at least UPD_VALID.
Solution: Remove call to redraw_for_cursorline() in nv_mousescroll().
(zeertzjq)
closes: vim/vim#13979
https://github.com/vim/vim/commit/3f1b5312e0fa0089f255bf9c0c3b27590552119e
|
|/
|
|
|
|
|
|
|
| |
Problem: `tui->space_buf` may be smaller than the width of the TUI or widest
grid, causing an overflow when calling `tui_grid_clear` if `print_spaces` is
called from `clear_region` (clears the TUI's screen since #23428).
Solution: resize `space_buf` to be wide enough to fit the TUI or widest grid.
Didn't bother shrinking the allocation if the max widths decrease.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
(#27332)
Problem: insert completion not correct when adding new leader
Solution: Reset compl_curr_match to compl_shown_match
(glepnir)
closes: vim/vim#13957
https://github.com/vim/vim/commit/cbb46b439888e10f87baaca504eafd191723c44b
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: did_set_breakat() should be in optionstr.c as 'breakat' is a
string option.
Solution: Move did_set_breakat() to optionstr.c.
(zeertzjq)
closes: vim/vim#13958
https://github.com/vim/vim/commit/eac3fdcfa0b54281c37ffb66b4d4e8d1072cca1c
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Looping over modifier_keys_table[] unnecessarily with only
MOD_MASK_ALT or MOD_MASK_CMD, as modifier_keys_table[] only
contains MOD_MASK_SHIFT and MOD_MASK_CTRL, and the loop won't
do anything.
Solution: Remove MOD_MASK_ALT and MOD_MASK_CMD from the condition.
(zeertzjq)
closes: vim/vim#13963
https://github.com/vim/vim/commit/0c989e4a3ae50085aa8c6bed5d6701760191bc1d
|
| |
|
|
|
|
| |
Problem: Double xmalloc usage led to excess memory allocations.
Solution: Switch to xrealloc to adjust memory as needed, minimizing allocations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Code is indented more than necessary.
Solution: Use an early return where it makes sense. (Yegappan Lakshmanan,
closes vim/vim#11813)
https://github.com/vim/vim/commit/e8575988969579f9e1439181ae338b2ff74054a8
Skip list_alloc_with_items().
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
|
|
|
|
|
|
|
|
|
|
| |
Problem: Code is indented too much.
Solution: Use an early return. (Yegappan Lakshmanan, closes vim/vim#11756)
https://github.com/vim/vim/commit/87c1cbbe984e60582f2536e4d3c2ce88cd474bb7
Omit free_eval_tofree_later(): Vim9 script only.
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
|
| |
|
|
|
| |
Note that this only works when stdin is a pipe.
|
|
|
|
|
|
| |
Problem: Erroring when both {range} and {code} are supplied to
:lua is inconvenient and may break mappings.
Solution: Don't error, ignore {range} and execute {code} when both
are supplied.
|
|\
| |
| | |
fix(column): clear "b_signcols" before moving saved marks
|
| |
| |
| |
| |
| |
| | |
Problem: Marks moved by undo may be lost to "b_signcols.count".
Solution: Count signs for each undo object separately instead of
once for the entire undo.
|
| |
| |
| |
| |
| |
| |
| | |
- Consistently use the variable CMAKE_BUILD_TYPE to select build type.
- Remove broken `doc_html` target.
- Remove swap files created by oldtest when cleaning.
- Only rerun `lintdoc` if any documentation files has changed.
|
| |
| |
| |
| | |
Since keydicts are already zero-initialized, HAS_KEY() isn't needed if
the zero-initialized value can satisfy some other condition.
|
| |
| |
| |
| | |
Adds support to `nvim_open_win` and `nvim_win_set_config` for creating
and manipulating split (non-floating) windows.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: Dead code in builtin functions.
Solution: Clean up the code.
https://github.com/vim/vim/commit/3d8a513b46b586cb5d2893e7f28c5f51c4dfdc17
Co-authored-by: Bram Moolenaar <Bram@vim.org>
|
| |
| |
| |
| |
| | |
- Update to ncurses 6.4.20230520
- Disable smglp and smgrp for vtpcon and conemu
- Add xterm+sl to vtpcon, fix #26880
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: Segfault with CompleteChanged autocommand
(markonm )
Solution: Test match->cp_prev for being NULL before accessing it
closes: vim/vim#13929
https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef
Co-authored-by: Christian Brabandt <cb@256bit.org>
|
| |
| |
| |
| | |
Allows setting the current window of a non-current tabpage
without switching tabpages.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The "priority" field of extmarks can be used to set priorities of
extmarks which dictates which highlight group a range will actually have
when there are multiple extmarks applied. However, when multiple
extmarks have the same priority, the only way to enforce an actual
priority is through the order in which the extmarks are set.
It is not always possible or desirable to set extmarks in a specific
order, however, so we add a new "subpriority" field that explicitly
enforces the ordering of extmarks that have the same priority.
For now this will be used only to enforce priority of treesitter
highlights. A single node in a treesitter tree may match multiple
captures, in which case that node will have multiple extmarks set. The
order in which captures are returned from the treesitter API is not
_necessarily_ in the same order they are defined in a query file, so we
use the new subpriority field to force that ordering.
For now subpriorites are not documented and are not meant to be used by
external code, and it only applies to ephemeral extmarks. We indicate
the "private" nature of subpriorities by prefixing the field name with
an "_".
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem:
- Navigation is not always symmetric: pressing Ctrl+o n times followed
by Ctrl+i n times does not always gets me back to where I started.
- Invalid buffers are not skipped by Ctrl+i/o, I have to press Ctrl+i/o
multiple times to get to the next/previous buffer.
Solution:
- Remove all entries of a buffer from the jump list when deleting it.
- Don't add a new entry to the jump list if the next buffer to be
displayed is already in the jump list.
Closes #25365
|
| | |
|
| |
| |
| | |
It's the "tree-sitter" project, but "treesitter" in our code and docs.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(#27247)
Problem: Recorded register cannot be translated using keytrans() when
it involves character search (iddqd505)
Solution: Record a K_IGNORE instead of a K_NOP (zeertzjq)
related: vim/vim#13916
closes: vim/vim#13925
https://github.com/vim/vim/commit/bf321806bf44d59f108fd7e5a0eaead04682701d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary: Separate the lint job (`make lintdoc`) to validate runtime/doc,
it is no longer as a part of functionaltest (help_spec).
Build (cmake) and CI:
- `make lintdoc`: validate vimdoc files and test-generate HTML docs.
CI will run this as a part of the "docs" workflow.
- `scripts/lintdoc.lua` is added as an entry point (executable script)
for validating vimdoc files.
scripts/gen_help_html.lua:
- Move the tests for validating docs and generating HTMLs from
`help_spec.lua` to `gen_help_html`. Added:
- `gen_help_html.run_validate()`.
- `gen_help_html.test_gen()`.
- Do not hard-code `help_dir` to `build/runtime/doc`, but resolve from
`$VIMRUNTIME`. Therefore, the `make lintdoc` job will check doc files
on `./runtime/doc`, not on `./build/runtime/doc`.
- Add type annotations for gen_help_html.
|
| | |
|
|\ \
| | |
| | | |
vim-patch:9.1.{0047,0048,0049}: fun cmdwin fixes
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: E95 is possible if a buffer called "[Command Line]" already
exists when opening the cmdwin. This can also happen if the
cmdwin's buffer could not be deleted when closing.
Solution: Un-name the cmdwin buffer, and give it a special name instead,
similar to what's done for quickfix buffers and for unnamed
prompt and scratch buffers. As a result, BufFilePre/Post are
no longer fired when opening the cmdwin. Add a "command" key
to the dictionary returned by getbufinfo() to differentiate
the cmdwin buffer instead. (Sean Dewar)
Cherry-pick test_normal changes from v9.0.0954.
https://github.com/vim/vim/commit/1fb41032060df09ca2640dc49541f11062f6dfaa
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Autocmds triggered from opening the cmdwin (in win_split and
do_ecmd) can cause issues such as E199, as the current checks
are insufficient.
Solution: Commands executed from the cmdwin apply to the old curwin/buf,
so they should be kept in a "suspended" state; abort if
they've changed. Also abort if cmdwin/buf was tampered with,
and check that curwin is correct. Try to clean up the cmdwin
buffer (only if hidden and non-current to simplify things; the
same approach is used when closing cmdwin normally), and add a
beep. (Sean Dewar)
Rename the old Test_cmdwin_interrupted() like in the patch (can be moved to
test_cmdwin.vim when v9.0.0027 is ported).
Move the error message to `e_active_window_or_buffer_changed_or_deleted`.
https://github.com/vim/vim/commit/43b395ec2e7d24a067d7cb00109818b64da144a5
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Things that temporarily change/restore curwin/buf (e.g:
win_execute, some autocmds) may break assumptions that
curwin/buf is the cmdwin when "cmdwin_type != 0", causing
issues.
Solution: Expose the cmdwin's real win/buf and check that instead. Also
try to ensure these variables are NULL if "cmdwin_type == 0",
allowing them to be used directly in most cases without
checking cmdwin_type. (Sean Dewar)
Reset and save `cmdwin_old_curwin` in a similar fashion.
Apply suitable changes for API functions and add Lua tests.
https://github.com/vim/vim/commit/988f74311c26ea9917e84fbae608de226dba7e5f
|
|\ \ \
| |/ /
|/| | |
Fix bugs found by coverity
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
strrchr returns null pointer if '.' is not present in file name. Notice
that filenames are filtered to match "doc/*.??[tx]" pattern earlier so
we shouldn't expect null pointer here. However later in code strrchr
return value is checked so it seems better and more consistent to do the
same here too.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
- `:lua (no file)` is misleading because `:lua` never takes a file arg,
unlike `:source`.
- Update various related docs.
|
| |/
|/|
| |
| |
| |
| | |
The data.sh.url field is valid only when item.kind is
kDecorKindHighlight. The `if` block just before this line already does
that check (as well as checking `active`) so move the access of
`data.sh.url` into that block.
|