neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 13513835798c732554de277229d4c6744df11502
parent 26775183ff67968cef06d42666f451c0d1e5c4dc
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun,  2 Mar 2025 06:40:52 +0800

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>

Diffstat:
Mruntime/doc/options.txt | 5++---
Mruntime/lua/vim/_meta/options.lua | 5++---
Msrc/nvim/insexpand.c | 9++++-----
Msrc/nvim/options.lua | 5++---
Mtest/old/testdir/test_ins_complete.vim | 5+++++
5 files changed, 15 insertions(+), 14 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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&