patch 9.1.1797: completion: autocompletion can be improved
Problem: completion: autocompletion can be improved
Solution: Add support for "longest" and "preinsert" in 'autocomplete';
add preinserted() (Girish Palya)
* Add support for "longest" in 'completeopt' when 'autocomplete'
is enabled. (Note: the cursor position does not change automatically
when 'autocomplete' is enabled.)
* Add support for "preinsert" when 'autocomplete' is enabled. Ensure
"preinsert" works the same with and without 'autocomplete'
* introduce the preinserted() Vim script function, useful for defining
custom key mappings.
fixes: #18314
closes: #18387
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
3fc1f2a00e
commit
c05335082a
@ -453,6 +453,7 @@ popup_setoptions({id}, {options})
|
||||
popup_settext({id}, {text}) none set the text of popup window {id}
|
||||
popup_show({id}) Number unhide popup window {id}
|
||||
pow({x}, {y}) Float {x} to the power of {y}
|
||||
preinserted() Number whether text is inserted after cursor
|
||||
prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
|
||||
printf({fmt}, {expr1}...) String format text
|
||||
prompt_getprompt({buf}) String get prompt text
|
||||
@ -8033,6 +8034,15 @@ pow({x}, {y}) *pow()*
|
||||
Return type: |Number|
|
||||
|
||||
|
||||
preinserted() *preinserted()*
|
||||
Returns non-zero if text has been inserted after the cursor
|
||||
because "preinsert" is present in 'completeopt', or if
|
||||
"longest" is present in 'completeopt' while 'autocomplete'
|
||||
is enabled. Otherwise returns zero.
|
||||
|
||||
Return type: |Number|
|
||||
|
||||
|
||||
prevnonblank({lnum}) *prevnonblank()*
|
||||
Return the line number of the first line at or above {lnum}
|
||||
that is not blank. Example: >
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Sep 22
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Sep 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -2256,11 +2256,22 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
to gather more alternatives for your candidate list,
|
||||
see 'completefuzzycollect'.
|
||||
|
||||
longest Only insert the longest common text of the matches. If
|
||||
the menu is displayed you can use CTRL-L to add more
|
||||
characters. Whether case is ignored depends on the kind
|
||||
of completion. For buffer text the 'ignorecase' option is
|
||||
used.
|
||||
longest
|
||||
When 'autocomplete' is not active, only the longest
|
||||
common prefix of the matches is inserted. If the popup
|
||||
menu is displayed, you can use CTRL-L to add more
|
||||
characters. Whether case is ignored depends on the type
|
||||
of completion. For buffer text the 'ignorecase' option
|
||||
applies.
|
||||
|
||||
When 'autocomplete' is active and no completion item is
|
||||
selected, the longest common prefix of the matches is
|
||||
inserted after the cursor. The prefix is taken either
|
||||
from all displayed items or only from items in the current
|
||||
buffer. The inserted text is highlighted with
|
||||
|hl-PreInsert|, and the cursor position does not change
|
||||
(similar to `"preinsert"`). Press CTRL-Y to accept.
|
||||
See also |preinserted()|.
|
||||
|
||||
menu Use a popup menu to show the possible completions. The
|
||||
menu is only shown when there is more than one match and
|
||||
@ -2302,22 +2313,21 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{only works when compiled with the |+textprop| feature}
|
||||
|
||||
preinsert
|
||||
When 'autocomplete' is not active, inserts the part of the
|
||||
first candidate word beyond the current completion leader,
|
||||
highlighted with |hl-PreInsert|. The cursor doesn't move.
|
||||
Requires "fuzzy" unset and "menuone" in 'completeopt'.
|
||||
|
||||
When 'autocomplete' is active, inserts the longest common
|
||||
prefix of matches (from all shown items or from the
|
||||
current buffer items). This occurs only when no menu item
|
||||
is selected. Press CTRL-Y to accept.
|
||||
Inserts the text of the first completion candidate
|
||||
beyond the current leader, highlighted with |hl-PreInsert|.
|
||||
The cursor does not move.
|
||||
Requires "fuzzy" to be unset, and either "menuone" in
|
||||
'completeopt' or 'autocomplete' enabled. When
|
||||
'autocomplete' is enabled, this does not work if
|
||||
'ignorecase' is set without 'infercase'.
|
||||
See also |preinserted()|.
|
||||
|
||||
preview Show extra information about the currently selected
|
||||
completion in the preview window. Only works in
|
||||
combination with "menu" or "menuone".
|
||||
|
||||
Only "fuzzy", "popup", "popuphidden", "preinsert" and "preview" have
|
||||
an effect when 'autocomplete' is enabled.
|
||||
Only "fuzzy", "longest", "popup", "popuphidden", "preinsert" and
|
||||
"preview" have an effect when 'autocomplete' is enabled.
|
||||
|
||||
This option does not apply to |cmdline-completion|. See 'wildoptions'
|
||||
for that.
|
||||
|
||||
@ -9774,6 +9774,7 @@ postscript-print-util print.txt /*postscript-print-util*
|
||||
postscript-printing print.txt /*postscript-printing*
|
||||
pow() builtin.txt /*pow()*
|
||||
ppwiz.vim syntax.txt /*ppwiz.vim*
|
||||
preinserted() builtin.txt /*preinserted()*
|
||||
press-enter message.txt /*press-enter*
|
||||
press-return message.txt /*press-return*
|
||||
prevcount-variable eval.txt /*prevcount-variable*
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 9.1. Last change: 2025 Aug 23
|
||||
*usr_41.txt* For Vim version 9.1. Last change: 2025 Sep 26
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -1135,6 +1135,7 @@ Insert mode completion: *completion-functions*
|
||||
complete_info() get current completion information
|
||||
complete_match() get insert completion start match col and
|
||||
trigger text
|
||||
preinserted() check if text is inserted after cursor
|
||||
pumvisible() check if the popup menu is displayed
|
||||
pum_getpos() position and size of popup menu if visible
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Sep 22
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Sep 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -41803,6 +41803,8 @@ Functions: ~
|
||||
|matchstrlist()| all the matches of a pattern in a List of strings
|
||||
|ngettext()| lookup single/plural message translation
|
||||
|popup_setbuf()| switch to a different buffer in a popup
|
||||
|preinserted()| whether preinserted text has been inserted during
|
||||
completion (see 'completeopt')
|
||||
|str2blob()| convert a List of strings into a blob
|
||||
|test_null_tuple()| return a null tuple
|
||||
|tuple2list()| turn a Tuple of items into a List
|
||||
|
||||
Reference in New Issue
Block a user