aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluukvbaal <luukvbaal@gmail.com>2024-12-02 15:11:38 +0100
committerGitHub <noreply@github.com>2024-12-02 06:11:38 -0800
commitc7ec010ade0832e43c7a319ea69fae642771479d (patch)
tree30069d1b922083b11828512624f702b2eb32e011
parent9d0117fd305d4a52552eca407dacb429132df82c (diff)
downloadrneovim-c7ec010ade0832e43c7a319ea69fae642771479d.tar.gz
rneovim-c7ec010ade0832e43c7a319ea69fae642771479d.tar.bz2
rneovim-c7ec010ade0832e43c7a319ea69fae642771479d.zip
fix(extmark): builtin completion can still affect nearby extmarks #31387
Problem: Built-in completion can still affect nearby extmarks. #31384 Solution: Restore extmarks when completion leader changes.
-rw-r--r--src/nvim/insexpand.c1
-rw-r--r--test/functional/editor/completion_spec.lua10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c
index 820647df97..a1cebb407e 100644
--- a/src/nvim/insexpand.c
+++ b/src/nvim/insexpand.c
@@ -1805,6 +1805,7 @@ static void ins_compl_new_leader(void)
ins_compl_del_pum();
ins_compl_delete();
ins_bytes(compl_leader + get_compl_len());
+ restore_orig_extmarks();
compl_used_match = false;
if (compl_started) {
diff --git a/test/functional/editor/completion_spec.lua b/test/functional/editor/completion_spec.lua
index 030181764d..da4d7a6640 100644
--- a/test/functional/editor/completion_spec.lua
+++ b/test/functional/editor/completion_spec.lua
@@ -1302,5 +1302,15 @@ describe('completion', function()
aaaaa |
{5:-- INSERT --} |
]])
+ -- Also when completion leader is changed #31384
+ feed('<Esc>hi<C-N><C-P>a')
+ screen:expect({
+ grid = [[
+ {9:aa}a^aa |
+ {4:aaaa } |
+ {4:aaaaa } |
+ {5:-- Keyword completion (^N^P) }{19:Back at original} |
+ ]],
+ })
end)
end)