mirror of
https://github.com/neovim/neovim.git
synced 2025-12-21 22:05:39 +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:
@@ -379,7 +379,6 @@ EXTERN int p_is; ///< 'incsearch'
|
||||
EXTERN char *p_inde; ///< 'indentexpr'
|
||||
EXTERN char *p_indk; ///< 'indentkeys'
|
||||
EXTERN char *p_icm; ///< 'inccommand'
|
||||
EXTERN char *p_ise; ///< 'isexpand'
|
||||
EXTERN char *p_isf; ///< 'isfname'
|
||||
EXTERN char *p_isi; ///< 'isident'
|
||||
EXTERN char *p_isk; ///< 'iskeyword'
|
||||
|
||||
Reference in New Issue
Block a user