aboutsummaryrefslogtreecommitdiff
path: root/test/functional/viml/completion_spec.lua
diff options
context:
space:
mode:
authorlePerdu <zdpeltzer@gmail.com>2018-05-02 18:22:25 -0400
committerJustin M. Keyes <justinkz@gmail.com>2019-03-03 23:08:08 +0100
commitf288a64264d1c7a2bd07c0d9cb4b1f9809d5868b (patch)
tree300089e7a72f98b2aa69831d81d2480e8e8c73ba /test/functional/viml/completion_spec.lua
parentbcbb96e31b88eff7a1629c7c8a5f1d4eacb32829 (diff)
downloadrneovim-f288a64264d1c7a2bd07c0d9cb4b1f9809d5868b.tar.gz
rneovim-f288a64264d1c7a2bd07c0d9cb4b1f9809d5868b.tar.bz2
rneovim-f288a64264d1c7a2bd07c0d9cb4b1f9809d5868b.zip
edit.c: Disable indent during completion
closes #8345
Diffstat (limited to 'test/functional/viml/completion_spec.lua')
-rw-r--r--test/functional/viml/completion_spec.lua113
1 files changed, 113 insertions, 0 deletions
diff --git a/test/functional/viml/completion_spec.lua b/test/functional/viml/completion_spec.lua
index 70b4717c32..cd1b312265 100644
--- a/test/functional/viml/completion_spec.lua
+++ b/test/functional/viml/completion_spec.lua
@@ -466,6 +466,7 @@ describe('completion', function()
]])
expect('August')
end)
+
it("repeats correctly after backspace #2674", function ()
feed('o<C-x><C-u>Ja')
screen:expect([[
@@ -712,6 +713,118 @@ describe('completion', function()
end)
end)
+ it("does not indent until an item is selected #8345", function ()
+ -- Indents on "ind", unindents on "unind".
+ source([[
+ function! TestIndent()
+ let line = getline(v:lnum)
+ if (line =~ '^\s*ind')
+ return indent(v:lnum-1) + shiftwidth()
+ elseif (line =~ '^\s*unind')
+ return indent(v:lnum-1) - shiftwidth()
+ else
+ return indent(v:lnum-1)
+ endif
+ endfunction
+ set indentexpr=TestIndent()
+ set indentkeys=o,O,!^F,=ind,=unind
+ set completeopt+=menuone
+ ]])
+
+ -- Give some words to complete.
+ feed("iinc uninc indent unindent<CR>")
+
+ -- Does not indent when "ind" is typed.
+ feed("in<C-X><C-N>")
+ -- Completion list is generated incorrectly if we send everything at once
+ -- via nvim_input(). So wait() before sending <BS>. #8480
+ wait()
+ feed("<BS>d")
+
+ screen:expect([[
+ inc uninc indent unindent |
+ ind^ |
+ {2:indent }{0: }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {3:-- Keyword Local completion (^N^P) }{4:match 1 of 2} |
+ ]])
+
+ -- Indents when the item is selected
+ feed("<C-Y>")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent^ |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {3:-- INSERT --} |
+ ]])
+ -- Indents when completion is exited using ESC.
+ feed("<CR>in<C-N><BS>d<Esc>")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent |
+ in^d |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ -- Works for unindenting too.
+ feed("ounin<C-X><C-N>")
+ helpers.wait()
+ feed("<BS>d")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent |
+ ind |
+ unind^ |
+ {0:~ }{2: unindent }{0: }|
+ {0:~ }|
+ {0:~ }|
+ {3:-- Keyword Local completion (^N^P) }{4:match 1 of 2} |
+ ]])
+ -- Works when going back and forth.
+ feed("<BS>c")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent |
+ ind |
+ uninc^ |
+ {0:~ }{2: uninc }{0: }|
+ {0:~ }|
+ {0:~ }|
+ {3:-- Keyword Local completion (^N^P) }{4:match 1 of 2} |
+ ]])
+ feed("<BS>d")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent |
+ ind |
+ unind^ |
+ {0:~ }{2: unindent }{0: }|
+ {0:~ }|
+ {0:~ }|
+ {3:-- Keyword Local completion (^N^P) }{4:match 1 of 2} |
+ ]])
+ feed("<C-N><C-N><C-Y><Esc>")
+ screen:expect([[
+ inc uninc indent unindent |
+ indent |
+ ind |
+ uninden^t |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ end)
it('disables folding during completion', function ()
feed_command("set foldmethod=indent")