aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
authorAxel Forsman <axelsfor@gmail.com>2022-08-22 06:48:18 +0200
committerGitHub <noreply@github.com>2022-08-21 21:48:18 -0700
commitd4d27c41b3298c25ae62bc067472bef37bc61c99 (patch)
tree46f56c3cafeb1a59535959a08bc0da36c1eca563 /test/functional
parent4f6d0d6da971ee837864bf96aa28cc24c2d58b5a (diff)
downloadrneovim-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.lua8
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')