patch 9.1.1933: completion: complete_match() is not useful
Commit:
https://github.com/vim/vim/commit/cbcbff871224115c45bbd14582749a487c6fad30
Author: Girish Palya <[email protected]>
Date: Thu Nov 27 21:19:54 2025 +0000
patch 9.1.1933: completion: complete_match() is not useful
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: #16716
fixes: #18563
closes: #18790
Signed-off-by: Girish Palya <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 229832c9d..988824f4b 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2025 Nov 09
+*builtin.txt* For Vim version 9.1. Last change: 2025 Nov 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -136,7 +136,6 @@ complete({startcol}, {matches}) none set Insert mode
completion
complete_add({expr}) Number add completion match
complete_check() Number check for key typed during completion
complete_info([{what}]) Dict get current completion
information
-complete_match([{lnum}, {col}]) List get completion column and
trigger text
confirm({msg} [, {choices} [, {default} [, {type}]]])
Number number of choice picked by user
copy({expr}) any make a shallow copy of {expr}
@@ -2072,51 +2071,6 @@ complete_info([{what}])
*complete_info()*
Return type: dict<any>
-complete_match([{lnum}, {col}])
*complete_match()*
- Searches backward from the given position and returns a List
- of matches according to the 'isexpand' option. When no
- arguments are provided, uses the current cursor position.
-
- Each match is represented as a List containing
- [startcol, trigger_text] where:
- - startcol: column position where completion should start,
- or -1 if no trigger position is found. For multi-character
- triggers, returns the column of the first character.
- - trigger_text: the matching trigger string from 'isexpand',
- or empty string if no match was found or when using the
- default 'iskeyword' pattern.
-
- When 'isexpand' is empty, uses the 'iskeyword' pattern "\k\+$"
- to find the start of the current keyword.
-
- Examples: >
- set isexpand=.,->,/,/*,abc
- func CustomComplete()
- let res = complete_match()
- if res->len() == 0 | return | endif
- let [col, trigger] = res[0]
- let items = []
- if trigger == '/*'
- let items = ['/** */']
- elseif trigger == '/'
- let items = ['/*! */', '// TODO:', '// fixme:']
- elseif trigger == '.'
- let items = ['length()']
- elseif trigger =~ '^\->'
- let items = ['map()', 'reduce()']
- elseif trigger =~ '^ bc'
- let items = ['def', 'ghk']
- endif
- if items->len() > 0
- let startcol = trigger =~ '^/' ? col : col + len(trigger)
- call complete(startcol, items)
- endif
- endfunc
- inoremap <Tab> <Cmd>call CustomComplete()<CR>
-<
- Return type: list<list<any>>
-
-
confirm({msg} [, {choices} [, {default} [, {type}]]]) *confirm()*
confirm() offers the user a dialog, from which a choice can be
made. It returns the number of the choice. For the first
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index c09e8e744..959534529 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -275,7 +275,7 @@ Vim would never have become what it is now, without the
help of these people!
improvements
Doug Kearns Runtime file maintainer
Foxe Chen Wayland support, new features
- glepnir completion feature
+ glepnir work on improving completion feature, fixes
Girish Palya autocompletion (ins/cmdline), omnifunc
composing, search/subst completion, and more.
Hirohito Higashi lots of patches and fixes
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 5ded591bd..03c0c547b 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -5229,23 +5229,6 @@ A jump table for the options with a short description
can be found at |Q_op|.
and there is a letter before it, the completed part is made uppercase.
With 'noinfercase' the match is used as-is.
- *'isexpand'* *'ise'*
-'isexpand' 'ise' string (default: "")
- local to buffer
- Defines characters and patterns for completion in insert mode. Used
- by the |complete_match()| function to determine the starting position
- for completion. This is a comma-separated list of triggers. Each
- trigger can be:
- - A single character like "." or "/"
- - A sequence of characters like "->", "/*", or "/**"
-
- Note: Use "\," to add a literal comma as trigger character, see
- |option-backslash|.
-
- Examples: >
- set isexpand=.,->,/*,\,
-<
-
*'insertmode'* *'im'* *'noinsertmode'* *'noim'*
'insertmode' 'im' boolean (default off)
global
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 0e7000d28..a53a133ec 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -449,8 +449,6 @@ $quote eval.txt /*$quote*
'infercase' options.txt /*'infercase'*
'insertmode' options.txt /*'insertmode'*
'is' options.txt /*'is'*
-'ise' options.txt /*'ise'*
-'isexpand' options.txt /*'isexpand'*
'isf' options.txt /*'isf'*
'isfname' options.txt /*'isfname'*
'isi' options.txt /*'isi'*
@@ -6801,7 +6799,6 @@ complete_add() builtin.txt /*complete_add()*
complete_check() builtin.txt /*complete_check()*
complete_info() builtin.txt /*complete_info()*
complete_info_mode builtin.txt /*complete_info_mode*
-complete_match() builtin.txt /*complete_match()*
completed_item-variable eval.txt /*completed_item-variable*
completion-functions usr_41.txt /*completion-functions*
complex-change change.txt /*complex-change*
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 5880b344f..5fe5e575c 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt* For Vim version 9.1. Last change: 2025 Nov 09
+*usr_41.txt* For Vim version 9.1. Last change: 2025 Nov 27
VIM USER MANUAL by Bram Moolenaar
@@ -1137,8 +1137,6 @@ Insert mode completion:
*completion-functions*
complete_add() add to found matches
complete_check() check if completion should be aborted
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
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 8d47dbb6c..a4bd33be8 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt* For Vim version 9.1. Last change: 2025 Nov 26
+*version9.txt* For Vim version 9.1. Last change: 2025 Nov 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41802,7 +41802,6 @@ Functions: ~
|blob2str()| convert a blob into a List of strings
|bindtextdomain()| set message lookup translation base path
|cmdcomplete_info()| get current cmdline completion info
-|complete_match()| get completion and trigger info
|diff()| diff two Lists of strings
|filecopy()| copy a file {from} to {to}
|foreach()| apply function to List items
@@ -41885,7 +41884,6 @@ Options: ~
'eventignorewin' autocommand events that are ignored in a window
'findfunc' Vim function to obtain the results for a |:find|
command
-'isexpand' defines triggers for completion
'lhistory' Size of the location list stack |quickfix-stack|
'maxsearchcount' Set the maximum number for search-stat |shm-S|
'messagesopt' configure |:messages| and |hit-enter| prompt
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 52ef0514d..7987a4877 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
-" Last Change: 2025 Nov 26
+" Last Change: 2025 Nov 27
" Former Maintainer: Bram Moolenaar <[email protected]>
" If there already is an option window, jump to that one.
@@ -1285,8 +1285,6 @@ call <SID>AddOption("isfname", gettext("specifies the
characters in a file name"
call <SID>OptionG("isf", &isf)
call <SID>AddOption("isident", gettext("specifies the characters in an
identifier"))
call <SID>OptionG("isi", &isi)
-call <SID>AddOption("isexpand", gettext("defines trigger strings for
complete_match()"))
-call append("$", " " .. s:local_to_buffer)
call <SID>AddOption("iskeyword", gettext("specifies the characters in a
keyword"))
call append("$", " " .. s:local_to_buffer)
call <SID>OptionL("isk")
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 747f8b52b..6d1d00381 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <[email protected]>
-" Last Change: 2025 Nov 26
+" Last Change: 2025 Nov 27
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -67,12 +67,12 @@ syn keyword vimStdPlugin contained Arguments Asm Break
Cfilter Clear Continue Di
syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab
arabic arshape arabicshape acd autochdir ac autocomplete acl autocompletedelay
act autocompletetimeout ai autoindent ar autoread asd autoshelldir aw autowrite
awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir
backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval
bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk
breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl
buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert chi
chistory cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw
cinwords cb clipboard cpm clipmethod ch cmdheight cwh cmdwinheight cc
colorcolumn skipwhite nextgroup=vimSetEqual,vimSetMod
syn keyword vimOption contained co columns com comments cms commentstring cp
compatible cpt complete cfu completefunc cia completeitemalign cot completeopt
cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole
conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc
cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst
cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc
cursorcolumn cul cursorline culopt cursorlineopt debug def define deco
delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg
digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc
encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells
ef errorfile skipwhite nextgroup=vimSetEqual,vimSetMod
syn keyword vimOption contained efm errorformat ek esckeys ei eventignore eiw
eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff
fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu
findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde
foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm
foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex
formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault
gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw
guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl
guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden
hl highlight skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained hi history hk hkmap hkp hkmapp hls hlsearch
icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc
imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst
imstyle inc include inex includeexpr is incsearch inde indentexpr indk
indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk
iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel
kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm
langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp
linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins
luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat
matchtime mco maxcombine skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp
maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt
msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod
modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev
mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll
mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev
opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs
paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi
preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev
printdevice penc printencoding pexpr printexpr pfn printfont pheader
printheader pmbcs printmbcharset skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained pmbfn printmbfont popt printoptions prompt pb
pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome
pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe
quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap
rop renderoptions report rs restorescreen ri revins rl rightleft rlc
rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb
scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect
sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf
shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp
shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw
shiftwidth shm shortmess skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained sn shortname sbr showbreak sc showcmd sloc
showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl
showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si
smartindent sta smarttab sms smoothscroll sts softtabstop spell spc
spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb
splitbelow spk splitkeep spr splitright sol startofline stl statusline su
suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol
syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo
tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr
tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding
tgc termguicolors skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained twk termwinkey twsl termwinscroll tws
termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr
thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title
titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm
ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype
udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut
updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile
vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb
visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig
wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak
winaltkeys wcr wincolor wi window skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained wfb winfixbuf wfh winfixheight wfw winfixwidth
wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat
wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany
wb writebackup wd writedelay xtermcodes skipwhite
nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained hi history hk hkmap hkp hkmapp hls hlsearch
icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc
imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst
imstyle inc include inex includeexpr is incsearch inde indentexpr indk
indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword
isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc
keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm
langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp
linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins
luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat
matchtime mco maxcombine mfd maxfuncdepth skipwhite
nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained mmd maxmapdepth mm maxmem mmp maxmempattern
mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem
ml modeline mle modelineexpr mls modelines ma modifiable mod modified more
mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent
mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf
nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc
operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle
pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight
pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr
printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn
printmbfont skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained popt printoptions prompt pb pumborder ph
pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll
pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly
rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions
report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru
ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus
sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm
selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq
shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe
shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn
shortname sbr showbreak skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained sc showcmd sloc showcmdloc sft showfulltag sm
showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso
sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms
smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl
spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr
splitright sol startofline stl statusline su suffixes sua suffixesadd swf
swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal
tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch
tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack
tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey
twsl termwinscroll skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained tws termwinsize twt termwintype terse ta
textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop
to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis
toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym
ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur
undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs
verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif
viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc
wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim
wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf
wfh winfixheight skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained wfw winfixwidth wh winheight wmh winminheight
wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen
wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay
xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
" vimOptions: These are the turn-off setting variants {{{2
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption
contained', END_STR=''
@@ -106,12 +106,12 @@ syn match vimOption contained "t_k;"
syn keyword vimOptionVarName contained al aleph ari allowrevins ambw ambiwidth
arab arabic arshape arabicshape acd autochdir ac autocomplete acl
autocompletedelay act autocompletetimeout ai autoindent ar autoread asd
autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup
bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay
beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin
binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir
bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv
charconvert chi chistory cin cindent cink cinkeys cino cinoptions cinsd
cinscopedecls cinw cinwords cb clipboard cpm clipmethod ch cmdheight cwh
cmdwinheight cc colorcolumn
syn keyword vimOptionVarName contained co columns com comments cms
commentstring cp compatible cpt complete cfu completefunc cia completeitemalign
cot completeopt cpp completepopup csl completeslash cto completetimeout cocu
concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm
cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre
cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb
cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def
define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip
diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo
emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb
errorbells ef errorfile
syn keyword vimOptionVarName contained efm errorformat ek esckeys ei
eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs
fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs
fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen
foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr
foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt
foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs
fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs
guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions
guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang
hid hidden hl highlight
-syn keyword vimOptionVarName contained hi history hk hkmap hkp hkmapp hls
hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey
imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst
imstyle inc include inex includeexpr is incsearch inde indentexpr indk
indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk
iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel
kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm
langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp
linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins
luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat
matchtime
-syn keyword vimOptionVarName contained mco maxcombine mfd maxfuncdepth mmd
maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis
menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls
modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide
mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime
mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth
ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath
para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll
pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev
printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader
-syn keyword vimOptionVarName contained pmbcs printmbcharset pmbfn printmbfont
popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth
pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf
quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu
relativenumber remap rop renderoptions report rs restorescreen ri revins rl
rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr
scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt
sect sections secure sel selection slm selectmode ssop sessionoptions sh shell
shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash
stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround
-syn keyword vimOptionVarName contained sw shiftwidth shm shortmess sn
shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch
smd showmode stal showtabline stpl showtabpanel ss sidescroll siso
sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms
smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl
spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr
splitright sol startofline stl statusline su suffixes sua suffixesadd swf
swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal
tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch
tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack
tcldll term tbidi termbidi
-syn keyword vimOptionVarName contained tenc termencoding tgc termguicolors twk
termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto
tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to
timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis
toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym
ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur
undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs
verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif
viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc
wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim
wildmode wop wildoptions
-syn keyword vimOptionVarName contained wak winaltkeys wcr wincolor wi window
wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight
wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen
wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay
xtermcodes
+syn keyword vimOptionVarName contained hi history hk hkmap hkp hkmapp hls
hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey
imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst
imstyle inc include inex includeexpr is incsearch inde indentexpr indk
indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword
isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc
keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm
langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp
linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins
luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat
matchtime mco maxcombine
+syn keyword vimOptionVarName contained mfd maxfuncdepth mmd maxmapdepth mm
maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt
messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma
modifiable mod modified more mouse mousef mousefocus mh mousehide mousem
mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq
mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu
omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para
paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi
preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev
printdevice penc printencoding pexpr printexpr pfn printfont pheader
printheader pmbcs printmbcharset
+syn keyword vimOptionVarName contained pmbfn printmbfont popt printoptions
prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll
pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc
qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber
remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc
rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb
scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect
sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf
shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp
shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw
shiftwidth shm shortmess
+syn keyword vimOptionVarName contained sn shortname sbr showbreak sc showcmd
sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl
showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si
smartindent sta smarttab sms smoothscroll sts softtabstop spell spc
spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb
splitbelow spk splitkeep spr splitright sol startofline stl statusline su
suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol
syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo
tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr
tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding
tgc termguicolors
+syn keyword vimOptionVarName contained twk termwinkey twsl termwinscroll tws
termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr
thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title
titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm
ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype
udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut
updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile
vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb
visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig
wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak
winaltkeys wcr wincolor
+syn keyword vimOptionVarName contained wi window wfb winfixbuf wfh
winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth
winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm
wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword
vimOptionVarName contained', END_STR=''
syn keyword vimOptionVarName contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD
t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds
t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr
t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf
t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue
t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f
t_8b t_8u t_xo
syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8
t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8
t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI
t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
@@ -154,14 +154,14 @@ syn case match
" Function Names {{{2
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained',
END_STR=''
syn keyword vimFuncName contained abs acos add and append appendbufline argc
argidx arglistid argv asin assert_beeps assert_equal assert_equalfile
assert_exception assert_fails assert_false assert_inrange assert_match
assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan
atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show
balloon_split base64_decode base64_encode bindtextdomain blob2list blob2str
browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr
bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close
ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log
ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw
ch_setoptions ch_status changenr
-syn keyword vimFuncName contained char2nr charclass charcol charidx chdir
cindent clearmatches cmdcomplete_info col complete complete_add complete_check
complete_info complete_match confirm copy cos cosh count cscope_connection
cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler
diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty
environ err_teapot escape eval eventhandler executable execute exepath exists
exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy
filereadable filewritable filter finddir findfile flatten flattennew float2nr
floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext
foldtextresult foreach foreground fullcommand funcref function garbagecollect
-syn keyword vimFuncName contained get getbufinfo getbufline getbufoneline
getbufvar getcellpixels getcellwidths getchangelist getchar getcharmod
getcharpos getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline
getcmdpos getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion
getcompletiontype getcurpos getcursorcharpos getcwd getenv getfontname getfperm
getfsize getftime getftype getimstatus getjumplist getline getloclist
getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg
getreginfo getregion getregionpos getregtype getscriptinfo getstacktrace
gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos
getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key
haslocaldir hasmapto
-syn keyword vimFuncName contained histadd histdel histget histnr hlID hlexists
hlget hlset hostname iconv id indent index indexof input inputdialog inputlist
inputrestore inputsave inputsecret insert instanceof interrupt invert
isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info
job_setoptions job_start job_status job_stop join js_decode js_encode
json_decode json_encode keys keytrans len libcall libcallnr line line2byte
lispindent list2blob list2str list2tuple listener_add listener_flush
listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew
mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend
matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max
menu_info min mkdir mode
-syn keyword vimFuncName contained mzeval nextnonblank ngettext nr2char or
pathshorten perleval popup_atcursor popup_beval popup_clear popup_close
popup_create popup_dialog popup_filter_menu popup_filter_yesno popup_findecho
popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide
popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf
popup_setoptions popup_settext popup_show pow preinserted prevnonblank printf
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex
readfile reduce reg_executing
-syn keyword vimFuncName contained reg_recording reltime reltimefloat
reltimestr remote_expr remote_foreground remote_peek remote_read remote_send
remote_startserver remove rename repeat resolve reverse round rubyeval
screenattr screenchar screenchars screencol screenpos screenrow screenstring
search searchcount searchdecl searchpair searchpairpos searchpos server2client
serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch
setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist
setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar
sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced
sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist
simplify sin sinh slice
-syn keyword vimFuncName contained sort sound_clear sound_playevent
sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand
state str2blob str2float str2list str2nr strcharlen strcharpart strchars
strdisplaywidth strftime strgetchar stridx string strlen strpart strptime
strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo
swapname synID synIDattr synIDtrans synconcealed synstack system systemlist
tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname
term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors
term_getattr term_getcursor term_getjob term_getline term_getscrolled
term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape
term_sendkeys term_setansicolors
-syn keyword vimFuncName contained term_setapi term_setkill term_setrestore
term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir
test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue
test_gui_event test_ignore_error test_mswin_event test_null_blob
test_null_channel test_null_dict test_null_function test_null_job
test_null_list test_null_partial test_null_string test_null_tuple
test_option_not_set test_override test_refcount test_setmouse test_settime
test_srand_seed test_unknown test_void timer_info timer_pause timer_start
timer_stop timer_stopall tolower toupper tr trim trunc tuple2list type typename
undofile undotree uniq uri_decode uri_encode utf16idx values virtcol
virtcol2col visualmode wildmenumode wildtrigger
-syn keyword vimFuncName contained win_execute win_findbuf win_getid
win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator
win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion
winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth
wordcount writefile xor
+syn keyword vimFuncName contained char2nr charclass charcol charidx chdir
cindent clearmatches cmdcomplete_info col complete complete_add complete_check
complete_info confirm copy cos cosh count cscope_connection cursor debugbreak
deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID
digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ
err_teapot escape eval eventhandler executable execute exepath exists
exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy
filereadable filewritable filter finddir findfile flatten flattennew float2nr
floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext
foldtextresult foreach foreground fullcommand funcref function garbagecollect
get getbufinfo
+syn keyword vimFuncName contained getbufline getbufoneline getbufvar
getcellpixels getcellwidths getchangelist getchar getcharmod getcharpos
getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos
getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion
getcompletiontype getcurpos getcursorcharpos getcwd getenv getfontname getfperm
getfsize getftime getftype getimstatus getjumplist getline getloclist
getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg
getreginfo getregion getregionpos getregtype getscriptinfo getstacktrace
gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos
getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key
haslocaldir hasmapto histadd histdel
+syn keyword vimFuncName contained histget histnr hlID hlexists hlget hlset
hostname iconv id indent index indexof input inputdialog inputlist inputrestore
inputsave inputsecret insert instanceof interrupt invert isabsolutepath
isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions
job_start job_status job_stop join js_decode js_encode json_decode json_encode
keys keytrans len libcall libcallnr line line2byte lispindent list2blob
list2str list2tuple listener_add listener_flush listener_remove localtime log
log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd
matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos
matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval
nextnonblank
+syn keyword vimFuncName contained ngettext nr2char or pathshorten perleval
popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog
popup_filter_menu popup_filter_yesno popup_findecho popup_findinfo
popup_findpreview popup_getoptions popup_getpos popup_hide popup_list
popup_locate popup_menu popup_move popup_notification popup_setbuf
popup_setoptions popup_settext popup_show pow preinserted prevnonblank printf
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex
readfile reduce reg_executing reg_recording
+syn keyword vimFuncName contained reltime reltimefloat reltimestr remote_expr
remote_foreground remote_peek remote_read remote_send remote_startserver remove
rename repeat resolve reverse round rubyeval screenattr screenchar screenchars
screencol screenpos screenrow screenstring search searchcount searchdecl
searchpair searchpairpos searchpos server2client serverlist setbufline
setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos
setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist
setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape
shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place
sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh
slice sort sound_clear
+syn keyword vimFuncName contained sound_playevent sound_playfile sound_stop
soundfold spellbadword spellsuggest split sqrt srand state str2blob str2float
str2list str2nr strcharlen strcharpart strchars strdisplaywidth strftime
strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len
strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr
synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr
tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload
term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor
term_getjob term_getline term_getscrolled term_getsize term_getstatus
term_gettitle term_gettty term_list term_scrape term_sendkeys
term_setansicolors term_setapi
+syn keyword vimFuncName contained term_setkill term_setrestore term_setsize
term_start term_wait terminalprops test_alloc_fail test_autochdir
test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue
test_gui_event test_ignore_error test_mswin_event test_null_blob
test_null_channel test_null_dict test_null_function test_null_job
test_null_list test_null_partial test_null_string test_null_tuple
test_option_not_set test_override test_refcount test_setmouse test_settime
test_srand_seed test_unknown test_void timer_info timer_pause timer_start
timer_stop timer_stopall tolower toupper tr trim trunc tuple2list type typename
undofile undotree uniq uri_decode uri_encode utf16idx values virtcol
virtcol2col visualmode wildmenumode wildtrigger win_execute
+syn keyword vimFuncName contained win_findbuf win_getid win_gettype win_gotoid
win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos
win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr
winrestcmd winrestview winsaveview winwidth wordcount writefile xor
" Predefined variable names {{{2
" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained',
END_STR=''
diff --git a/src/buffer.c b/src/buffer.c
index 94c6356f8..90104cf0d 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2499,7 +2499,6 @@ free_buf_options(
clear_string_option(&buf->b_p_cinw);
clear_string_option(&buf->b_p_cot);
clear_string_option(&buf->b_p_cpt);
- clear_string_option(&buf->b_p_ise);
#ifdef FEAT_COMPL_FUNC
clear_string_option(&buf->b_p_cfu);
free_callback(&buf->b_cfu_cb);
diff --git a/src/evalfunc.c b/src/evalfunc.c
index eca95bbcf..222fa4017 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2131,8 +2131,6 @@ static const funcentry_T global_functions[] =
ret_number_bool, f_complete_check},
{"complete_info", 0, 1, FEARG_1, arg1_list_string,
ret_dict_any, f_complete_info},
- {"complete_match", 0, 2, 0, NULL,
- ret_list_any, f_complete_match},
{"confirm", 1, 4, FEARG_1,
arg4_string_string_number_string,
ret_number, f_confirm},
{"copy", 1, 1, FEARG_1, NULL,
diff --git a/src/insexpand.c b/src/insexpand.c
index 1bcadadf8..b44f77d53 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3921,163 +3921,6 @@ f_complete_check(typval_T *argvars UNUSED, typval_T
*rettv)
RedrawingDisabled = save_RedrawingDisabled;
}
-/*
- * Add match item to the return list.
- * Returns FAIL if out of memory, OK otherwise.
- */
- static int
-add_match_to_list(
- typval_T *rettv,
- char_u *str,
- int len,
- int pos)
-{
- list_T *match;
- int ret;
-
- match = list_alloc();
- if (match == NULL)
- return FAIL;
-
- if ((ret = list_append_number(match, pos + 1)) == FAIL
- || (ret = list_append_string(match, str, len)) == FAIL
- || (ret = list_append_list(rettv->vval.v_list, match)) == FAIL)
- {
- vim_free(match);
- return FAIL;
- }
-
- return OK;
-}
-
-/*
- * "complete_match()" function
- */
- void
-f_complete_match(typval_T *argvars, typval_T *rettv)
-{
- linenr_T lnum;
- colnr_T col;
- char_u *line = NULL;
- char_u *ise = NULL;
- regmatch_T regmatch;
- char_u *before_cursor = NULL;
- char_u *cur_end = NULL;
- int bytepos = 0;
- char_u part[MAXPATHL];
- int ret;
-
- if (rettv_list_alloc(rettv) == FAIL)
- return;
-
- ise = curbuf->b_p_ise[0] != NUL ? curbuf->b_p_ise : p_ise;
-
- if (argvars[0].v_type == VAR_UNKNOWN)
- {
- lnum = curwin->w_cursor.lnum;
- col = curwin->w_cursor.col;
- }
- else if (argvars[1].v_type == VAR_UNKNOWN)
- {
- emsg(_(e_invalid_argument));
- return;
- }
- else
- {
- lnum = (linenr_T)tv_get_number(&argvars[0]);
- col = (colnr_T)tv_get_number(&argvars[1]);
- if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count)
- {
- semsg(_(e_invalid_line_number_nr), lnum);
- return;
- }
- if (col < 1 || col > ml_get_buf_len(curbuf, lnum))
- {
- semsg(_(e_invalid_column_number_nr), col + 1);
- return;
- }
- }
-
- line = ml_get_buf(curbuf, lnum, FALSE);
- if (line == NULL)
- return;
-
- before_cursor = vim_strnsave(line, col);
- if (before_cursor == NULL)
- return;
-
- if (ise == NULL || *ise == NUL)
- {
- regmatch.regprog = vim_regcomp((char_u *)"\k\+$", RE_MAGIC);
- if (regmatch.regprog != NULL)
- {
- if (vim_regexec_nl(®match, before_cursor, (colnr_T)0))
- {
- char_u *trig = vim_strnsave(regmatch.startp[0],
- regmatch.endp[0] - regmatch.startp[0]);
- if (trig == NULL)
- {
- vim_free(before_cursor);
- vim_regfree(regmatch.regprog);
- return;
- }
-
- bytepos = (int)(regmatch.startp[0] - before_cursor);
- ret = add_match_to_list(rettv, trig, -1, bytepos);
- vim_free(trig);
- if (ret == FAIL)
- {
- vim_free(before_cursor);
- vim_regfree(regmatch.regprog);
- return;
- }
- }
- vim_regfree(regmatch.regprog);
- }
- }
- else
- {
- char_u *p = ise;
- char_u *p_space = NULL;
-
- cur_end = before_cursor + (int)STRLEN(before_cursor);
-
- while (*p != NUL)
- {
- int len = 0;
- if (p_space)
- {
- len = p - p_space - 1;
- memcpy(part, p_space + 1, len);
- p_space = NULL;
- }
- else
- {
- char_u *next_comma = vim_strchr((*p == ',') ? p + 1 : p, ',');
- if (next_comma && *(next_comma + 1) == ' ')
- p_space = next_comma;
-
- len = copy_option_part(&p, part, MAXPATHL, ",");
- }
-
- if (len > 0 && len <= col)
- {
- if (STRNCMP(cur_end - len, part, len) == 0)
- {
- bytepos = col - len;
- if (add_match_to_list(rettv, part, len, bytepos) == FAIL)
- {
- vim_free(before_cursor);
- return;
- }
- }
- }
- }
- }
-
- vim_free(before_cursor);
-}
-
/*
* Return Insert completion mode name string
*/
diff --git a/src/option.c b/src/option.c
index f903dd79c..b5594dd6e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6508,9 +6508,6 @@ unset_global_local_option(char_u *name, void *from)
clear_string_option(&buf->b_p_cot);
buf->b_cot_flags = 0;
break;
- case PV_ISE:
- clear_string_option(&buf->b_p_ise);
- break;
case PV_DICT:
clear_string_option(&buf->b_p_dict);
break;
@@ -6639,7 +6636,6 @@ get_varp_scope(struct vimoption *p, int scope)
case PV_INC: return (char_u *)&(curbuf->b_p_inc);
#endif
case PV_COT: return (char_u *)&(curbuf->b_p_cot);
- case PV_ISE: return (char_u *)&(curbuf->b_p_ise);
case PV_DICT: return (char_u *)&(curbuf->b_p_dict);
#ifdef FEAT_DIFF
case PV_DIA: return (char_u *)&(curbuf->b_p_dia);
@@ -6727,8 +6723,6 @@ get_varp(struct vimoption *p)
#endif
case PV_COT: return *curbuf->b_p_cot != NUL
? (char_u *)&(curbuf->b_p_cot) : p->var;
- case PV_ISE: return *curbuf->b_p_ise != NUL
- ? (char_u *)&(curbuf->b_p_ise) : p->var;
case PV_DICT: return *curbuf->b_p_dict != NUL
? (char_u *)&(curbuf->b_p_dict) : p->var;
#ifdef FEAT_DIFF
@@ -7579,7 +7573,6 @@ buf_copy_options(buf_T *buf, int flags)
buf->b_p_dia = empty_option;
#endif
buf->b_p_tsr = empty_option;
- buf->b_p_ise = empty_option;
#ifdef FEAT_COMPL_FUNC
buf->b_p_tsrfu = empty_option;
#endif
diff --git a/src/option.h b/src/option.h
index dc67566d6..df073b2b0 100644
--- a/src/option.h
+++ b/src/option.h
@@ -739,7 +739,6 @@ EXTERN char_u *p_inde; // 'indentexpr'
EXTERN char_u *p_indk; // 'indentkeys'
#endif
EXTERN int p_im; // 'insertmode'
-EXTERN char_u *p_ise; // 'isexpand'
EXTERN char_u *p_isf; // 'isfname'
EXTERN char_u *p_isi; // 'isident'
EXTERN char_u *p_isk; // 'iskeyword'
diff --git a/src/optiondefs.h b/src/optiondefs.h
index fda698535..59d363ffa 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -93,7 +93,6 @@
# define PV_INEX OPT_BUF(BV_INEX)
#endif
#define PV_INF OPT_BUF(BV_INF)
-#define PV_ISE OPT_BOTH(OPT_BUF(BV_ISE))
#define PV_ISK OPT_BUF(BV_ISK)
#ifdef FEAT_CRYPT
# define PV_KEY OPT_BUF(BV_KEY)
@@ -1493,10 +1492,6 @@ static struct vimoption options[] =
{"insertmode", "im", P_BOOL|P_VI_DEF|P_VIM,
(char_u *)&p_im, PV_NONE, did_set_insertmode, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"isexpand", "ise", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_ise, PV_ISE, did_set_isexpand, NULL,
- {(char_u *)"", (char_u *)0L}
- SCTX_INIT},
{"isfname", "isf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
(char_u *)&p_isf, PV_NONE, did_set_isopt, NULL,
{
diff --git a/src/optionstr.c b/src/optionstr.c
index d5a81dd42..106e9003d 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -329,7 +329,6 @@ check_buf_options(buf_T *buf)
check_string_option(&buf->b_p_cinw);
check_string_option(&buf->b_p_cot);
check_string_option(&buf->b_p_cpt);
- check_string_option(&buf->b_p_ise);
#ifdef FEAT_COMPL_FUNC
check_string_option(&buf->b_p_cfu);
check_string_option(&buf->b_p_ofu);
@@ -2920,48 +2919,6 @@ did_set_imactivatekey(optset_T *args UNUSED)
}
#endif
-/*
- * The 'isexpand' option is changed.
- */
- char *
-did_set_isexpand(optset_T *args)
-{
- char_u *ise = p_ise;
- char_u *p;
- int last_was_comma = FALSE;
-
- if (args->os_flags & OPT_LOCAL)
- ise = curbuf->b_p_ise;
-
- for (p = ise; *p != NUL;)
- {
- if (*p == '\' && p[1] == ',')
- {
- p += 2;
- last_was_comma = FALSE;
- continue;
- }
-
- if (*p == ',')
- {
- if (last_was_comma)
- return e_invalid_argument;
- last_was_comma = TRUE;
- p++;
- continue;
- }
-
- last_was_comma = FALSE;
- MB_PTR_ADV(p);
- }
-
- if (last_was_comma)
- return e_invalid_argument;
-
- return NULL;
-}
-
-
/*
* The 'iskeyword' option is changed.
*/
diff --git a/src/po/vim.pot b/src/po/vim.pot
index a969a3517..09544a0c0 100644
--- a/src/po/vim.pot
+++ b/src/po/vim.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim
"
"Report-Msgid-Bugs-To: [email protected]
"
-"POT-Creation-Date: 2025-11-27 20:24+0000
"
+"POT-Creation-Date: 2025-11-27 21:26+0000
"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>
"
"Language-Team: LANGUAGE <[email protected]>
"
@@ -10442,9 +10442,6 @@ msgstr ""
msgid "specifies the characters in an identifier"
msgstr ""
-msgid "defines trigger strings for complete_match()"
-msgstr ""
-
msgid "specifies the characters in a keyword"
msgstr ""
diff --git a/src/proto/insexpand.pro b/src/proto/insexpand.pro
index bd84cb259..e973eac4f 100644
--- a/src/proto/insexpand.pro
+++ b/src/proto/insexpand.pro
@@ -69,7 +69,6 @@ int set_ref_in_insexpand_funcs(int copyID);
void f_complete(typval_T *argvars, typval_T *rettv);
void f_complete_add(typval_T *argvars, typval_T *rettv);
void f_complete_check(typval_T *argvars, typval_T *rettv);
-void f_complete_match(typval_T *argvars, typval_T *rettv);
void f_complete_info(typval_T *argvars, typval_T *rettv);
void ins_compl_delete(void);
void ins_compl_insert(int move_cursor, int insert_prefix);
diff --git a/src/proto/optionstr.pro b/src/proto/optionstr.pro
index e5af863cc..b60037024 100644
--- a/src/proto/optionstr.pro
+++ b/src/proto/optionstr.pro
@@ -104,7 +104,6 @@ char *did_set_highlight(optset_T *args);
int expand_set_highlight(optexpand_T *args, int *numMatches, char_u
***matches);
char *did_set_iconstring(optset_T *args);
char *did_set_imactivatekey(optset_T *args);
-char *did_set_isexpand(optset_T *args);
char *did_set_iskeyword(optset_T *args);
char *did_set_isopt(optset_T *args);
char *did_set_jumpoptions(optset_T *args);
diff --git a/src/structs.h b/src/structs.h
index 907d42165..3462aeca9 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -3345,7 +3345,6 @@ struct file_buffer
char_u *b_p_fo; // 'formatoptions'
char_u *b_p_flp; // 'formatlistpat'
int b_p_inf; // 'infercase'
- char_u *b_p_ise; // 'isexpand' local value
char_u *b_p_isk; // 'iskeyword'
#ifdef FEAT_FIND_ID
char_u *b_p_def; // 'define' local value
diff --git a/src/testdir/test_ins_complete.vim
b/src/testdir/test_ins_complete.vim
index 194422b34..c2b8c67bc 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -4808,99 +4808,6 @@ func Test_nearest_cpt_option()
delfunc PrintMenuWords
endfunc
-func Test_complete_match()
- set isexpand=.,/,->,abc,/*,_
- func TestComplete()
- let res = complete_match()
- if res->len() == 0
- return
- endif
- let [startcol, expandchar] = res[0]
-
- if startcol >= 0
- let line = getline('.')
-
- let items = []
- if expandchar == '/*'
- let items = ['/** */']
- elseif expandchar =~ '^/'
- let items = ['/*! */', '// TODO:', '// fixme:']
- elseif expandchar =~ '^\.' && startcol < 4
- let items = ['length()', 'push()', 'pop()', 'slice()']
- elseif expandchar =~ '^\.' && startcol > 4
- let items = ['map()', 'filter()', 'reduce()']
- elseif expandchar =~ '^ bc'
- let items = ['def', 'ghk']
- elseif expandchar =~ '^\->'
- let items = ['free()', 'xfree()']
- else
- let items = ['test1', 'test2', 'test3']
- endif
-
- call complete(expandchar =~ '^/' ? startcol : startcol +
strlen(expandchar), items)
- endif
- endfunc
-
- new
- inoremap <buffer> <F5> <cmd>call TestComplete()<CR>
-
- call feedkeys("S/*\<F5>\<C-Y>", 'tx')
- call assert_equal('/** */', getline('.'))
-
- call feedkeys("S/\<F5>\<C-N>\<C-Y>", 'tx')
- call assert_equal('// TODO:', getline('.'))
-
- call feedkeys("Swp.\<F5>\<C-N>\<C-Y>", 'tx')
- call assert_equal('wp.push()', getline('.'))
-
- call feedkeys("Swp.property.\<F5>\<C-N>\<C-Y>", 'tx')
- call assert_equal('wp.property.filter()', getline('.'))
-
- call feedkeys("Sp->\<F5>\<C-N>\<C-Y>", 'tx')
- call assert_equal('p->xfree()', getline('.'))
-
- call feedkeys("Swp->property.\<F5>\<C-Y>", 'tx')
- call assert_equal('wp->property.map()', getline('.'))
-
- call feedkeys("Sabc\<F5>\<C-Y>", 'tx')
- call assert_equal('abcdef', getline('.'))
-
- call feedkeys("S_\<F5>\<C-Y>", 'tx')
- call assert_equal('_test1', getline('.'))
-
- set ise&
- call feedkeys("Sabc \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[1, 'abc']], g:result)
-
- call assert_fails('call complete_match(99, 0)', 'E966:')
- call assert_fails('call complete_match(1, 99)', 'E964:')
- call assert_fails('call complete_match(1)', 'E474:')
-
- set ise=你好,好
- call feedkeys("S你好 \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[1, '你好'], [4, '好']], g:result)
-
- set ise=\,,->
- call feedkeys("Sabc, \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[4, ',']], g:result)
-
- set ise=\ ,=
- call feedkeys("Sif true \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[8, ' ']], g:result)
- call feedkeys("Slet a = \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[7, '=']], g:result)
- set ise={,\ ,=
- call feedkeys("Sif true \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[8, ' ']], g:result)
- call feedkeys("S{ \<ESC>:let g:result=complete_match()\<CR>", 'tx')
- call assert_equal([[1, '{']], g:result)
-
- bw!
- unlet g:result
- set isexpand&
- delfunc TestComplete
-endfunc
-
func Test_register_completion()
let @a = "completion test apple application"
let @b = "banana behavior better best"
diff --git a/src/testdir/util/gen_opt_test.vim
b/src/testdir/util/gen_opt_test.vim
index 0c02d7d5e..eef332891 100644
--- a/src/testdir/util/gen_opt_test.vim
+++ b/src/testdir/util/gen_opt_test.vim
@@ -236,7 +236,6 @@ let test_values = {
\ 'helplang': [['', 'de', 'de,it'], ['xxx']],
\ 'highlight': [['', 'e:Error'], ['xxx']],
\ 'imactivatekey': [['', 'S-space'], ['xxx']],
- \ 'isexpand': [['', '.,->', '/,/*,\,'], [',,', '\,,']],
\ 'isfname': [['', '@', '@,48-52'], ['xxx', '@48']],
\ 'isident': [['', '@', '@,48-52'], ['xxx', '@48']],
\ 'iskeyword': [['', '@', '@,48-52'], ['xxx', '@48']],
diff --git a/src/version.c b/src/version.c
index 38609746c..27e71d493 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1933,
/**/
1932,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1vOjnb-005JnM-8o%40256bit.org.