vimlc/lc.vim

29 lines
625 B
VimL
Raw Normal View History

2023-05-27 00:29:20 -04:00
vim9script
def GetMatch(b: string, l: string): list<any>
var s = b
while stridx(l, s) == -1
s = strpart(s, 1)
if strlen(s) == 0
return [0, ""]
endif
endwhile
const idx = stridx(l, s)
const slen = strlen(s)
return [slen, b .. strpart(l, idx + slen)]
enddef
export def WholeLineCompl(f: bool, b: string): any
if f
return 0
endif
return getline(0, '$')
->sort()
->uniq()
->map( (_, v) => GetMatch(b, v) )
->sort( (x, y) => y[0] - x[0] )
->map( (_, v) => v[1] )
enddef
setlocal completefunc=WholeLineCompl