diff options
author | Axel Forsman <axelsfor@gmail.com> | 2022-08-22 06:48:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-21 21:48:18 -0700 |
commit | d4d27c41b3298c25ae62bc067472bef37bc61c99 (patch) | |
tree | 46f56c3cafeb1a59535959a08bc0da36c1eca563 /test/functional | |
parent | 4f6d0d6da971ee837864bf96aa28cc24c2d58b5a (diff) | |
download | rneovim-d4d27c41b3298c25ae62bc067472bef37bc61c99.tar.gz rneovim-d4d27c41b3298c25ae62bc067472bef37bc61c99.tar.bz2 rneovim-d4d27c41b3298c25ae62bc067472bef37bc61c99.zip |
fix(edit.c): indentkeys double indent after "!" #12894
which is both unexpected and different from the Vim behaviour.
Indent was triggered once by the '!' check in insert_execute(), and
inserting the char was correctly skipped, but then triggered again in
insert_check() (provided that cindent was not being ignored after manual
indentation, i.e. `can_cindent == true`).
While this is the smallest fix, another solution would be to remove
VimState#check and instead move that to *_enter()/-_execute(), since the
control flow is pretty unnecessarily convoluted as is. That would also
have the benefit of differing less from the Vim source code.
Diffstat (limited to 'test/functional')
-rw-r--r-- | test/functional/editor/mode_insert_spec.lua | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/functional/editor/mode_insert_spec.lua b/test/functional/editor/mode_insert_spec.lua index e3d3cdbd85..cd51a65be3 100644 --- a/test/functional/editor/mode_insert_spec.lua +++ b/test/functional/editor/mode_insert_spec.lua @@ -6,12 +6,20 @@ local expect = helpers.expect local command = helpers.command local eq = helpers.eq local eval = helpers.eval +local curbuf_contents = helpers.curbuf_contents describe('insert-mode', function() before_each(function() clear() end) + it('indents only once after "!" keys #12894', function() + command('let counter = []') + command('set indentexpr=len(add(counter,0))') + feed('i<C-F>x') + eq(' x', curbuf_contents()) + end) + it('CTRL-@', function() -- Inserts last-inserted text, leaves insert-mode. insert('hello') |