diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2025-11-28 10:10:31 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-28 10:10:31 +0800 |
| commit | 2c6469aca451027648c3317f11ffb6b35b7f835b (patch) | |
| tree | dcdc582ed137cf23b2a57949e97e1c0a4f731aba /test/functional/vimscript/executable_spec.lua | |
| parent | 19d5b289774d7308c824a64a7f4414e34e1bb968 (diff) | |
| download | rneovim-2c6469aca451027648c3317f11ffb6b35b7f835b.tar.gz rneovim-2c6469aca451027648c3317f11ffb6b35b7f835b.tar.bz2 rneovim-2c6469aca451027648c3317f11ffb6b35b7f835b.zip | |
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
https://github.com/vim/vim/commit/cbcbff871224115c45bbd14582749a487c6fad30
Co-authored-by: Girish Palya <girishji@gmail.com>
Diffstat (limited to 'test/functional/vimscript/executable_spec.lua')
0 files changed, 0 insertions, 0 deletions