commit a1c50825839efef91915d9d70eb7e6607058d572 Author: Balakrishnan Balasubramanian Date: Sat May 27 00:29:20 2023 -0400 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..6dc1e0e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Smart Whole line completion diff --git a/exp.txt b/exp.txt new file mode 100644 index 0000000..89eb9fc --- /dev/null +++ b/exp.txt @@ -0,0 +1,23 @@ + +fo +bar +bar +hello +bar +hello +hello +f +abcd +fo +hello +fo +bcd +hello world and ha ha ha +foo bar and ha ha ha +xdfadf bar and ha ha he +skafjds bar and ha ha ha +hello ha ha ha +foob and ha ha ha +skafjds bar and ha ha ha + + diff --git a/lc.vim b/lc.vim new file mode 100644 index 0000000..5b2fc2e --- /dev/null +++ b/lc.vim @@ -0,0 +1,28 @@ +vim9script + +def GetMatch(b: string, l: string): list + 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