mirror of
https://github.com/neovim/neovim.git
synced 2025-10-17 07:16:09 +00:00
Merge pull request #35712 from zeertzjq/vim-9.1.1750
vim-patch:9.1.{1750,1752},b2c8848
This commit is contained in:
@@ -1134,7 +1134,7 @@ autocompletion. To use |i_CTRL-N| or |i_CTRL-X_CTRL-N| specifically, press
|
|||||||
|CTRL-E| first to dismiss the popup menu (see |complete_CTRL-E|).
|
|CTRL-E| first to dismiss the popup menu (see |complete_CTRL-E|).
|
||||||
|
|
||||||
*ins-autocompletion-example*
|
*ins-autocompletion-example*
|
||||||
Example setup~
|
Example setup ~
|
||||||
A typical configuration for automatic completion with a popup menu: >
|
A typical configuration for automatic completion with a popup menu: >
|
||||||
set autocomplete
|
set autocomplete
|
||||||
set complete=.^5,w^5,b^5,u^5
|
set complete=.^5,w^5,b^5,u^5
|
||||||
|
@@ -1675,15 +1675,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
with "menu" or "menuone". Overrides "preview".
|
with "menu" or "menuone". Overrides "preview".
|
||||||
|
|
||||||
preinsert
|
preinsert
|
||||||
When autocompletion is not enabled, inserts the part of the
|
When 'autocomplete' is not active, inserts the part of the
|
||||||
first candidate word beyond the current completion leader,
|
first candidate word beyond the current completion leader,
|
||||||
highlighted with |hl-ComplMatchIns|. The cursor does not
|
highlighted with |hl-PreInsert|. The cursor doesn't move.
|
||||||
move. Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
||||||
|
|
||||||
When 'autocomplete' is enabled, inserts the longest common
|
When 'autocomplete' is active, inserts the longest common
|
||||||
prefix of matches (from all shown items or buffer-specific
|
prefix of matches (from all shown items or from the
|
||||||
matches), highlighted with |hl-PreInsert|. This occurs only
|
current buffer items). This occurs only when no menu item
|
||||||
when no menu item is selected. Press CTRL-Y to accept.
|
is selected. Press CTRL-Y to accept.
|
||||||
|
|
||||||
preview Show extra information about the currently selected
|
preview Show extra information about the currently selected
|
||||||
completion in the preview window. Only works in
|
completion in the preview window. Only works in
|
||||||
|
@@ -5354,7 +5354,7 @@ PmenuMatchSel Popup menu: Matched text in selected item. Combined with
|
|||||||
*hl-ComplMatchIns*
|
*hl-ComplMatchIns*
|
||||||
ComplMatchIns Matched text of the currently inserted completion.
|
ComplMatchIns Matched text of the currently inserted completion.
|
||||||
*hl-PreInsert*
|
*hl-PreInsert*
|
||||||
PreInsert Text inserted during autocompletion when "preinsert".
|
PreInsert Text inserted when "preinsert" is in 'completeopt'.
|
||||||
*hl-ComplHint*
|
*hl-ComplHint*
|
||||||
ComplHint Virtual text of the currently selected completion.
|
ComplHint Virtual text of the currently selected completion.
|
||||||
*hl-ComplHintMore*
|
*hl-ComplHintMore*
|
||||||
|
14
runtime/lua/vim/_meta/options.lua
generated
14
runtime/lua/vim/_meta/options.lua
generated
@@ -1218,15 +1218,15 @@ vim.go.cia = vim.go.completeitemalign
|
|||||||
--- with "menu" or "menuone". Overrides "preview".
|
--- with "menu" or "menuone". Overrides "preview".
|
||||||
---
|
---
|
||||||
--- preinsert
|
--- preinsert
|
||||||
--- When autocompletion is not enabled, inserts the part of the
|
--- When 'autocomplete' is not active, inserts the part of the
|
||||||
--- first candidate word beyond the current completion leader,
|
--- first candidate word beyond the current completion leader,
|
||||||
--- highlighted with `hl-ComplMatchIns`. The cursor does not
|
--- highlighted with `hl-PreInsert`. The cursor doesn't move.
|
||||||
--- move. Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
--- Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
||||||
---
|
---
|
||||||
--- When 'autocomplete' is enabled, inserts the longest common
|
--- When 'autocomplete' is active, inserts the longest common
|
||||||
--- prefix of matches (from all shown items or buffer-specific
|
--- prefix of matches (from all shown items or from the
|
||||||
--- matches), highlighted with `hl-PreInsert`. This occurs only
|
--- current buffer items). This occurs only when no menu item
|
||||||
--- when no menu item is selected. Press CTRL-Y to accept.
|
--- is selected. Press CTRL-Y to accept.
|
||||||
---
|
---
|
||||||
--- preview Show extra information about the currently selected
|
--- preview Show extra information about the currently selected
|
||||||
--- completion in the preview window. Only works in
|
--- completion in the preview window. Only works in
|
||||||
|
@@ -1095,10 +1095,14 @@ static void ins_compl_insert_bytes(char *p, int len)
|
|||||||
/// -1 means normal item.
|
/// -1 means normal item.
|
||||||
int ins_compl_col_range_attr(linenr_T lnum, int col)
|
int ins_compl_col_range_attr(linenr_T lnum, int col)
|
||||||
{
|
{
|
||||||
|
const bool has_preinsert = ins_compl_has_preinsert();
|
||||||
|
|
||||||
int attr;
|
int attr;
|
||||||
if ((get_cot_flags() & kOptCotFlagFuzzy)
|
if ((get_cot_flags() & kOptCotFlagFuzzy)
|
||||||
|| (!compl_autocomplete
|
|| (!has_preinsert
|
||||||
&& (attr = syn_name2attr("ComplMatchIns")) == 0)
|
&& (attr = syn_name2attr("ComplMatchIns")) == 0)
|
||||||
|
|| (!compl_autocomplete && has_preinsert
|
||||||
|
&& (attr = syn_name2attr("PreInsert")) == 0)
|
||||||
|| (compl_autocomplete
|
|| (compl_autocomplete
|
||||||
&& (!compl_autocomplete_preinsert
|
&& (!compl_autocomplete_preinsert
|
||||||
|| (attr = syn_name2attr("PreInsert")) == 0))) {
|
|| (attr = syn_name2attr("PreInsert")) == 0))) {
|
||||||
@@ -2283,9 +2287,7 @@ static void ins_compl_new_leader(void)
|
|||||||
compl_enter_selects = false;
|
compl_enter_selects = false;
|
||||||
} else if (ins_compl_has_preinsert() && compl_leader.size > 0) {
|
} else if (ins_compl_has_preinsert() && compl_leader.size > 0) {
|
||||||
if (compl_started && compl_autocomplete && !ins_compl_preinsert_effect()) {
|
if (compl_started && compl_autocomplete && !ins_compl_preinsert_effect()) {
|
||||||
if (ins_compl_insert(true, true) != OK) {
|
if (ins_compl_insert(true, true) == OK) {
|
||||||
(void)ins_compl_insert(false, false);
|
|
||||||
} else {
|
|
||||||
compl_autocomplete_preinsert = true;
|
compl_autocomplete_preinsert = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
-- vim: tw=80
|
-- vim: tw=78
|
||||||
|
|
||||||
--- @class vim.option_meta
|
--- @class vim.option_meta
|
||||||
--- @field full_name string
|
--- @field full_name string
|
||||||
@@ -1700,15 +1700,15 @@ local options = {
|
|||||||
with "menu" or "menuone". Overrides "preview".
|
with "menu" or "menuone". Overrides "preview".
|
||||||
|
|
||||||
preinsert
|
preinsert
|
||||||
When autocompletion is not enabled, inserts the part of the
|
When 'autocomplete' is not active, inserts the part of the
|
||||||
first candidate word beyond the current completion leader,
|
first candidate word beyond the current completion leader,
|
||||||
highlighted with |hl-ComplMatchIns|. The cursor does not
|
highlighted with |hl-PreInsert|. The cursor doesn't move.
|
||||||
move. Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
||||||
|
|
||||||
When 'autocomplete' is enabled, inserts the longest common
|
When 'autocomplete' is active, inserts the longest common
|
||||||
prefix of matches (from all shown items or buffer-specific
|
prefix of matches (from all shown items or from the
|
||||||
matches), highlighted with |hl-PreInsert|. This occurs only
|
current buffer items). This occurs only when no menu item
|
||||||
when no menu item is selected. Press CTRL-Y to accept.
|
is selected. Press CTRL-Y to accept.
|
||||||
|
|
||||||
preview Show extra information about the currently selected
|
preview Show extra information about the currently selected
|
||||||
completion in the preview window. Only works in
|
completion in the preview window. Only works in
|
||||||
|
@@ -26,6 +26,7 @@ describe('completion', function()
|
|||||||
screen:add_extra_attr_ids {
|
screen:add_extra_attr_ids {
|
||||||
[100] = { foreground = Screen.colors.Gray0, background = Screen.colors.Yellow },
|
[100] = { foreground = Screen.colors.Gray0, background = Screen.colors.Yellow },
|
||||||
[101] = { background = Screen.colors.Gray0 },
|
[101] = { background = Screen.colors.Gray0 },
|
||||||
|
[102] = { foreground = Screen.colors.SeaGreen },
|
||||||
}
|
}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -1501,7 +1502,7 @@ describe('completion', function()
|
|||||||
foo |
|
foo |
|
||||||
foobar |
|
foobar |
|
||||||
foobarbaz |
|
foobarbaz |
|
||||||
f^oo |
|
f{102:^oo} |
|
||||||
{12:foo }{1: }|
|
{12:foo }{1: }|
|
||||||
{4:foobar }{1: }|
|
{4:foobar }{1: }|
|
||||||
{4:foobarbaz }{1: }|
|
{4:foobarbaz }{1: }|
|
||||||
|
@@ -5755,6 +5755,12 @@ func Test_autocomplete_completeopt_preinsert()
|
|||||||
call feedkeys($"cwch\<C-N>\<Esc>n.n.", 'tx')
|
call feedkeys($"cwch\<C-N>\<Esc>n.n.", 'tx')
|
||||||
call assert_equal(repeat(['changed'], 3), getline(1, 3))
|
call assert_equal(repeat(['changed'], 3), getline(1, 3))
|
||||||
|
|
||||||
|
" Select a match and delete up to text equal to another match
|
||||||
|
%delete
|
||||||
|
call setline(1, ["foobar", "foo"])
|
||||||
|
call feedkeys("Go\<ESC>", 'tx')
|
||||||
|
call DoTest("f\<C-N>\<C-N>\<BS>\<BS>\<BS>\<BS>", 'foo', 3)
|
||||||
|
|
||||||
%delete _
|
%delete _
|
||||||
let &l:undolevels = &l:undolevels
|
let &l:undolevels = &l:undolevels
|
||||||
normal! ifoo
|
normal! ifoo
|
||||||
|
Reference in New Issue
Block a user