From 10bd41db5a5c6daa38f4c9beda56cee2577161e9 Mon Sep 17 00:00:00 2001 From: baabelfish Date: Thu, 17 Mar 2016 01:00:16 +0200 Subject: [PATCH] Add autocomplete test Fixes #23 Write tests for autocompletion --- autoload/omni.vim | 24 +++++++++++++++++++++--- tests/tests/vim/autocomplete.vader | 12 ++++++++++++ tests/tests/vim/definition.vader | 8 +++++++- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 tests/tests/vim/autocomplete.vader diff --git a/autoload/omni.vim b/autoload/omni.vim index ed8a75f..1fc4216 100644 --- a/autoload/omni.vim +++ b/autoload/omni.vim @@ -27,14 +27,14 @@ endfunction function! omni#nimsuggest(file, l, c) let completions = [] let tempfile = util#WriteMemfile() - let query = "sug " . a:file . ";" . tempfile . ":" . a:l . ":" . a:c let jobcmdstr = g:nvim_nim_exec_nimsuggest . " --threads:on --colors:off --compileOnly --experimental --v2 --stdin " . a:file let fullcmd = 'echo -e "' . query . '"|' . jobcmdstr let completions_raw = util#FilterCompletions(split(system(fullcmd), "\n")) for line in completions_raw - call add(completions, omni#item(util#ParseV2(line))) + let parsed = util#ParseV2(line) + call add(completions, omni#item(parsed)) endfor return completions @@ -49,9 +49,27 @@ function! omni#modulesuggest(file, l, c) return completions endfunction +function! s:findStart() + let pos = col(".") + let cline = getline(".") + + while pos > 1 + let ch = char2nr(cline[pos - 2]) + if !((48 <= ch && ch <= 57) + \ || (65 <= ch && ch <= 90) + \ || (97 <= ch && ch <= 122) + \ || ch == 95) + break + endif + let pos = pos - 1 + endwhile + + return pos - 1 +endfunction + function! omni#nim(findstart, base) if a:findstart && empty(a:base) - return col('.') + return s:findStart() endif let completions = [] diff --git a/tests/tests/vim/autocomplete.vader b/tests/tests/vim/autocomplete.vader new file mode 100644 index 0000000..3254ed2 --- /dev/null +++ b/tests/tests/vim/autocomplete.vader @@ -0,0 +1,12 @@ +Given nim: + 5. + +Execute: + set buftype= + saveas! autocomplete.nim + +Do: + A\\\\ + +Expect: + 5.alloc diff --git a/tests/tests/vim/definition.vader b/tests/tests/vim/definition.vader index dea5317..a1c923a 100644 --- a/tests/tests/vim/definition.vader +++ b/tests/tests/vim/definition.vader @@ -7,9 +7,15 @@ Given nim: Execute: set buftype="" saveas! vader_workbench.nim - w! norm G^ NimDefinition Then: AssertEqual 2, line(".") + +Do: + G^ + \ + +Then: + AssertEqual 2, line(".")