| Commit message (Collapse) | Author | Age |
... | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Can modify a:000 when using a reference.
Solution: Make check for locked variable stricter. (Ozaki Kiichi,
closes vim/vim#3930)
https://github.com/vim/vim/commit/05c00c038bc16e862e17f9e5c8d5a72af6cf7788
|
| | |
| | |
| | |
| | |
| | |
| | | |
It is wrong to assume that you can't shorten a path if it's in `/`: you
can always shorten it by removing the forward slash.
Closes #14512
|
| | | |
|
|\ \ \
| | | |
| | | | |
fix(runtime): Fix bugs regarding lua runtime files
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It's happening because do_source is only expected to return FAIL when it
was unable to open file . But `nlua_exec_file` returns fail for parsing
and execution error too . Those errors are emitted through `nlua_error`.
So now return value of nlua_exec_file is ignored like do_cmdline. It now
only returns fail when it was unable to open file that check is done
before calling nlua_exec_file or do_cmdline. Errors in nlua_exec_file
are still directly emitted through nlua_error like before.
|
|\ \ \
| | | |
| | | | |
Fix deletable nodes in MarkTree sometimes getting skipped
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As per #14236, performing extmark cleanup in a certain namespace does
not guarantee removing all the extmarks inside given namespace.
The issue resides within the tree node removal method and results in
a couple of rare edge cases.
To demonstrate what causes this bug, I'll give an example covering one
of the edge cases.
=== AN EXAMPLE ===
(A) (B) (C) (D) (E)
--------- --------- --------- --------- ---------
<0, 1> <0, 1> <0, 1> <0, 1> <0, 1>
<0, 2> <0, 2> <0, 2> <0, 2> <0, 2>
<0, 3> <0, 3> <0, 3> <0, 3> <0, 3>
<0, 4> <0, 4> <0, 4> <0, 4> <0, 4>
<0, 5> <0, 5> <0, 5> <0, 5> <0, 5>
<0, 6> <0, 6> <0, 6> <0, 6> <0, 6>
<0, 7> <0, 7> <0, 7> <0, 7> <0, 7>
<0, 8> <0, 8> <0, 8> <0, 8> <0, 8>
<0, 9> <0, 9> * * <0, 9> * <0, 9>
[0, 10] * [0, 10] <0, 9> [0, 11] [0, 11]
[0, 11] [0, 11] [0, 11] [0, 12] [0, 12] *
[0, 12] [0, 12] [0, 12] [0, 13] [0, 13]
[0, 13] [0, 13] [0, 13] [0, 14] [0, 14]
[0, 14] [0, 14] [0, 14] [0, 15] [0, 15]
[0, 15] [0, 15] [0, 15] [0, 16] [0, 16]
[0, 16] [0, 16] [0, 16] [0, 17] [0, 17]
[0, 17] [0, 17] [0, 17] [0, 18] [0, 18]
[0, 18] [0, 18] [0, 18] [0, 19] [0, 19]
[0, 19] [0, 19] [0, 19] [0, 20] [0, 20]
[0, 20] [0, 20] [0, 20]
DIAGRAM EXPLANATION
* Every column is a state of the marktree at a certain stage.
* To make it simple, I don't draw the whole tree. What you see are
2 leftmost parent nodes ([0, 10], [0, 20]) and their children placed
in order `MarkTreeIter` would iterate through. From top to bottom.
* Numbers on this diagram represent extmark coordinates. Relative
positioning and actual mark IDs used by the marktree are avoided
for simplicity.
* 2 types of brackets around coordinates represent 2 different
extmark namespaces (`ns_id`s).
* '*' shows iterator position.
ACTUAL EXPLANATION
Let's assume, we have two sets of extmarks from 2 different plugins:
* Plugin1: <0, 1-9>
* Plugin2: [0, 10-20]
1. Plugin2 calls
`vim.api.nvim_buf_clear_namespace(buf_handle, ns_id, 0, -1)`
to clear all its extmarks which results in `extmark_clear` call.
2. The iteration process goes on ignoring extmarks with irrelevant
`ns_id` from Plugin1, until it reaches [0, 10], entering state (A).
3. At the end of cleaning up process, `marktree_del_itr` gets called.
This function is supposed to remove given node and, if necessary,
restructure the tree. Also, move the iterator to the next node.
The bug occurs in this function.
4. The iterator goes backwards to the node's last child, to put it
in the place of its deleted parent later. (B)
5. The parent node is deleted and replaced with its child node. (C)
6. Since now this node has 8 children, which is less than
`MT_BRANCH_FACTOR - 1`, it get's merged with the next node. (D)
7. Finally, since at (B) the iterator went backward, it goes forward
twice, skipping [0, 11] node, causing this extmark to persist,
causing the bug. (E)
ANALYSIS AND SOLUTION
The algorithm works perfectly when the parent node gets replaced by
its child, but no merging occurs. I.e. the exact same diagram,
but without the (D) stage. If not for (D), it would iterate to <0, 9>
and then to [0, 11]. So, iterating twice makes sense. The actual problem
is in (C) stage, because the iterator index isn't adjusted and still
pointing to no longer existent node. So my solution is to adjust
iterator index after removing the child node.
More info: https://github.com/neovim/neovim/pull/14719
|
|/ / |
|
|\ \
| | |
| | | |
feat(lsp): Add codelens support
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
Add `borders = "rounded"` preset for `nvim_open_win`, equivalent to
border = {"╭", "─", "╮", "│", "╯", "─", "╰", "│"}
Also add undocumented "solid" preset to docs.
|
|\ \
| | |
| | | |
fixup(runtime): Fix lua runtime files not listed in :scriptnames
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
lua runtime files weren't listed in :scriptname & profiler.
This fixes that.
* Add tests
* Small doc tweeks
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Spell suggestions insufficiently tested.
Solution: Add spell suggestion tests. (Dominique Pelle, closes vim/vim#5398)
https://github.com/vim/vim/commit/e9a8d1f9adaf4599b5a7923f8db8e207ed6e7eca
Requires latest en.utf-8.spl from
https://ftp.nluug.nl/pub/vim/runtime/spell/.
Include the following patch because patch v8.2.0946 was merged:
vim-patch:8.2.0948: spell test fails
Problem: Spell test fails.
Solution: Adjust expected text of the prompt.
https://github.com/vim/vim/commit/d281b7c227bc4c78813fdc297ccee4b2cad7e605
|
|/ /
| |
| |
| |
| |
| | |
Problem: There is :spellwrong and :spellgood but not :spellrare.
Solution: Add :spellrare. (Martin Tournoij, closes vim/vim#4291)
https://github.com/vim/vim/commit/08cc374dabd2a02785129fa1c0100f7745c244ad
|
| | |
|
| |
| |
| |
| | |
Refs #12985
|
| |
| |
| |
| |
| |
| | |
So now :source can run lua files too :)
* feat: Add support for :[ranged]source for lua files
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
* tests(runtime): move runtime/plugin tests to functional/lua/runtime_spec
|
|/
|
|
|
|
| |
For opt plugins these files are sourced on `:packadd`
* `:runtime` Now can exexute lua files
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Makes it easier to re-use the logic to populate the quickfix list
instead of the location list.
|
|
|
|
|
|
| |
uv_process_options_t "args" member was set to a local array from stack.
when uv_process_options_t variable is outside the function.
https://pvs-studio.com/en/docs/warnings/v507/
|
| |
|
|
|
|
|
|
| |
This option, when set, stops nvim_open_win() from potentially firing
buffer-related autocmd events
(BufEnter, BufLeave and BufWinEnter in the case of nvim_open_win()).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lua: Add vim.opt
* fixup: cleaning
* fixup: comments
* ty clason
* fixup: comments
* this is the last commit. period.
|
|\
| |
| | |
[RDY] Generate PARAM_COUNT macro
|
| |
| |
| |
| |
| |
| | |
Iterating over PARAM_COUNT is wrong as PARAM_COUNT also counts the last
element of the options array, which has a NULL fullname in order to
signal the end of the array.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: Problem restoring 'packpath' in session.
Solution: Let "skiprtp" also apply to 'packpath'.
https://github.com/vim/vim/commit/d23b714d8b9ed8e16ef553098acc6da0979e94fc
Port Test_mksession_skiprtp() to lua functional test.
|
|/
|
|
|
|
| |
Problem: Cannot use "q" to cancel a number prompt.
Solution: Recognize "q" instead of ignoring it.
https://github.com/vim/vim/commit/eebd555733491cb55b9f30fe28772c0fd0ebacf7
|
|\
| |
| | |
fix(bufupdate): send events when inserting with virtualedit
|
| |
| |
| |
| |
| | |
Problem first raised
https://github.com/nvim-treesitter/nvim-treesitter/issues/1304
|
|\ \
| | |
| | | |
Deduplicate env var names on Windows
|
| |/
| |
| |
| |
| | |
Since Windows is case-insensitive, there should only be a single env var
in visible in the resulting job. However, non-Windows should see both.
|
|\ \
| | |
| | | |
lsp: handle case where CompletionItem.insertTextFormat is nil
|
| | |
| | |
| | |
| | | |
* Update tests to use explicit insertTextFormat for snippets
|
| | | |
|
| | |
| | |
| | |
| | | |
References https://github.com/neovim/neovim/issues/14571
|
| |/
|/|
| |
| | |
This reverts commit 8885ea7f244ee49b0018dc57be84917ea7886c2d.
|
|\ \
| | |
| | | |
[WIP] z-index!
|
| | | |
|
|\ \ \
| | | |
| | | | |
vim-patch:8.0.1394,8.1.1967,8.2.{23,1000,1059,2354,2419,2433,2473,2850}
|