diff options
author | lePerdu <zdpeltzer@gmail.com> | 2018-05-02 18:22:25 -0400 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-03-03 23:08:08 +0100 |
commit | f288a64264d1c7a2bd07c0d9cb4b1f9809d5868b (patch) | |
tree | 300089e7a72f98b2aa69831d81d2480e8e8c73ba /test/functional/viml/completion_spec.lua | |
parent | bcbb96e31b88eff7a1629c7c8a5f1d4eacb32829 (diff) | |
download | rneovim-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.lua | 113 |
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") |