aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-03-02 06:40:52 +0800
committerzeertzjq <zeertzjq@outlook.com>2025-03-02 07:02:10 +0800
commit13513835798c732554de277229d4c6744df11502 (patch)
treed3e6bc7de1f3f81d0a70b40c4665002a9a46824c
parent26775183ff67968cef06d42666f451c0d1e5c4dc (diff)
downloadrneovim-13513835798c732554de277229d4c6744df11502.tar.gz
rneovim-13513835798c732554de277229d4c6744df11502.tar.bz2
rneovim-13513835798c732554de277229d4c6744df11502.zip
vim-patch:9.1.1161: preinsert requires bot "menu" and "menuone" to be set
Problem: preinsert requires bot "menu" and "menuone" to be set, but "menu" is redundant (after v9.1.1160) Solution: preinsert only requires menuone (glepnir) closes: vim/vim#16763 https://github.com/vim/vim/commit/94a045ed56d7616c0cd0080d3f308d6cf9fbe64c Co-authored-by: glepnir <glephunter@gmail.com>
-rw-r--r--runtime/doc/options.txt5
-rw-r--r--runtime/lua/vim/_meta/options.lua5
-rw-r--r--src/nvim/insexpand.c9
-rw-r--r--src/nvim/options.lua5
-rw-r--r--test/old/testdir/test_ins_complete.vim5
5 files changed, 15 insertions, 14 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 96bf1eb7bd..8ea05aba58 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1574,9 +1574,8 @@ A jump table for the options with a short description can be found at |Q_op|.
preinsert
Preinsert the portion of the first candidate word that is
not part of the current completion leader and using the
- |hl-ComplMatchIns| highlight group. Does not work when
- "fuzzy" is set. Requires both "menu" and "menuone" to be
- set.
+ |hl-ComplMatchIns| highlight group. In order for it to
+ work, "fuzzy" must not bet set and "menuone" must be set.
preview Show extra information about the currently selected
completion in the preview window. Only works in
diff --git a/runtime/lua/vim/_meta/options.lua b/runtime/lua/vim/_meta/options.lua
index 4fce3e9af2..25cc3aae00 100644
--- a/runtime/lua/vim/_meta/options.lua
+++ b/runtime/lua/vim/_meta/options.lua
@@ -1101,9 +1101,8 @@ vim.go.cia = vim.go.completeitemalign
--- preinsert
--- Preinsert the portion of the first candidate word that is
--- not part of the current completion leader and using the
---- `hl-ComplMatchIns` highlight group. Does not work when
---- "fuzzy" is set. Requires both "menu" and "menuone" to be
---- set.
+--- `hl-ComplMatchIns` highlight group. In order for it to
+--- work, "fuzzy" must not bet set and "menuone" must be set.
---
--- preview Show extra information about the currently selected
--- completion in the preview window. Only works in
diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c
index 2664fc8045..d02a698f08 100644
--- a/src/nvim/insexpand.c
+++ b/src/nvim/insexpand.c
@@ -1808,13 +1808,12 @@ int ins_compl_len(void)
return compl_length;
}
-/// Return TRUE when preinsert is set AND both 'menu' and 'menuone' flags
-/// are also set, otherwise return FALSE.
+/// Return true when the 'completeopt' "preinsert" flag is in effect,
+/// otherwise return false.
static bool ins_compl_has_preinsert(void)
{
- return (get_cot_flags()
- & (kOptCotFlagFuzzy|kOptCotFlagPreinsert|kOptCotFlagMenu|kOptCotFlagMenuone))
- == (kOptCotFlagPreinsert|kOptCotFlagMenu|kOptCotFlagMenuone);
+ return (get_cot_flags() & (kOptCotFlagFuzzy|kOptCotFlagPreinsert|kOptCotFlagMenuone))
+ == (kOptCotFlagPreinsert|kOptCotFlagMenuone);
}
/// Returns true if the pre-insert effect is valid and the cursor is within
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index 73605024db..ff919bb522 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -1543,9 +1543,8 @@ local options = {
preinsert
Preinsert the portion of the first candidate word that is
not part of the current completion leader and using the
- |hl-ComplMatchIns| highlight group. Does not work when
- "fuzzy" is set. Requires both "menu" and "menuone" to be
- set.
+ |hl-ComplMatchIns| highlight group. In order for it to
+ work, "fuzzy" must not bet set and "menuone" must be set.
preview Show extra information about the currently selected
completion in the preview window. Only works in
diff --git a/test/old/testdir/test_ins_complete.vim b/test/old/testdir/test_ins_complete.vim
index d1f9d77287..d339bbe4e1 100644
--- a/test/old/testdir/test_ins_complete.vim
+++ b/test/old/testdir/test_ins_complete.vim
@@ -3116,6 +3116,11 @@ function Test_completeopt_preinsert()
call assert_equal("foo1bar", getline('.'))
call assert_equal(7, col('.'))
+ set cot=preinsert,menuone
+ call feedkeys("Sfoo1 foo2\<CR>f\<C-X>\<C-N>", 'tx')
+ call assert_equal("foo1", getline('.'))
+ call assert_equal(1, col('.'))
+
bw!
set cot&
set omnifunc&