mirror of
https://github.com/neovim/neovim.git
synced 2025-10-03 16:36:30 +00:00
vim-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: vim/vim#18314
closes: vim/vim#18387
c05335082a
Co-authored-by: Girish Palya <girishji@gmail.com>
This commit is contained in:
42
runtime/lua/vim/_meta/options.lua
generated
42
runtime/lua/vim/_meta/options.lua
generated
@@ -1183,11 +1183,22 @@ vim.go.cia = vim.go.completeitemalign
|
||||
--- 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
|
||||
@@ -1220,22 +1231,21 @@ vim.go.cia = vim.go.completeitemalign
|
||||
--- with "menu" or "menuone". Overrides "preview".
|
||||
---
|
||||
--- 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", "preinsert" and "preview" have an effect when
|
||||
--- 'autocomplete' is enabled.
|
||||
--- Only "fuzzy", "longest", "popup", "preinsert" and "preview" have an
|
||||
--- effect when 'autocomplete' is enabled.
|
||||
---
|
||||
--- This option does not apply to `cmdline-completion`. See 'wildoptions'
|
||||
--- for that.
|
||||
|
8
runtime/lua/vim/_meta/vimfn.lua
generated
8
runtime/lua/vim/_meta/vimfn.lua
generated
@@ -6554,6 +6554,14 @@ function vim.fn.perleval(expr) end
|
||||
--- @return number
|
||||
function vim.fn.pow(x, y) end
|
||||
|
||||
--- 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 number
|
||||
function vim.fn.preinserted() end
|
||||
|
||||
--- Return the line number of the first line at or above {lnum}
|
||||
--- that is not blank. Example: >vim
|
||||
--- let ind = indent(prevnonblank(v:lnum - 1))
|
||||
|
Reference in New Issue
Block a user