commit 824639c7c17c4870cde83dd28fed7ed6be0ed4c9
parent dd80ee0ca948bb548a8af804523ea7ea29c18279
Author: Brandon Simmons <34775764+simmsbra@users.noreply.github.com>
Date: Thu, 6 Apr 2023 11:08:46 -0500
fix(folds): handle visual blockwise indent insertion correctly (#22898)
Previously, the fold information was incorrect because it wasn't
being updated during the blockwise insertion.
(Solution by zeertzjq)
Diffstat:
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
@@ -623,9 +623,9 @@ static void block_insert(oparg_T *oap, char *s, int b_insert, struct block_def *
}
} // for all lnum
- changed_lines(oap->start.lnum + 1, 0, oap->end.lnum + 1, 0L, true);
-
State = oldstate;
+
+ changed_lines(oap->start.lnum + 1, 0, oap->end.lnum + 1, 0L, true);
}
/// Handle reindenting a block of lines.
diff --git a/test/functional/editor/fold_spec.lua b/test/functional/editor/fold_spec.lua
@@ -359,4 +359,14 @@ a]], '13m7')
eq(10, funcs.foldclosedend(7))
eq(14, funcs.foldclosedend(11))
end)
+ it('updates correctly with indent method and visual blockwise insertion', function()
+ insert([[
+ a
+ b
+ ]])
+ feed_command('set foldmethod=indent', 'set shiftwidth=2')
+ feed('gg0<C-v>jI <Esc>') -- indent both lines using visual blockwise mode
+ eq(1, funcs.foldlevel(1))
+ eq(1, funcs.foldlevel(2))
+ end)
end)