mirror of
https://github.com/neovim/neovim.git
synced 2025-12-11 17:12:40 +00:00
vim-patch:9.1.1933: completion: complete_match() is not useful (#36726)
Problem: completion: complete_match() Vim script function and
'isexpand' option are not that useful and confusing
(after v9.1.1341)
Solution: Remove function and option and clean up code and documentation
(Girish Palya).
complete_match() and 'isexpand' add no real functionality to Vim. They
duplicate what `strridx()` already does, yet pretend to be part of the
completion system. They have nothing to do with the completion mechanism.
* `f_complete_match()` in `insexpand.c` does not call any completion code.
It’s just a `STRNCMP()` wrapper with fluff logic.
* `'isexpand'` exists only as a proxy argument to that function.
It does nothing on its own and amounts to misuse of a new option.
The following Vim script function can be used to implement the same
functionality:
```vim
func CompleteMatch(triggers, sep=',')
let line = getline('.')->strpart(0, col('.') - 1)
let result = []
for trig in split(a:triggers, a:sep)
let idx = strridx(line, trig)
if l:idx >= 0
call add(result, [idx + 1, trig])
endif
endfor
return result
endfunc
```
related: vim/vim#16716
fixes: vim/vim#18563
closes: vim/vim#18790
cbcbff8712
Co-authored-by: Girish Palya <girishji@gmail.com>
This commit is contained in:
@@ -406,7 +406,6 @@ local options_list = {
|
||||
header = N_ 'language specific',
|
||||
{ 'isfname', N_ 'specifies the characters in a file name' },
|
||||
{ 'isident', N_ 'specifies the characters in an identifier' },
|
||||
{ 'isexpand', N_ 'defines trigger strings for complete_match()' },
|
||||
{ 'iskeyword', N_ 'specifies the characters in a keyword' },
|
||||
{ 'isprint', N_ 'specifies printable characters' },
|
||||
{ 'quoteescape', N_ 'specifies escape characters in a string' },
|
||||
|
||||
Reference in New Issue
Block a user