neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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:
Msrc/nvim/ops.c | 4++--
Mtest/functional/editor/fold_spec.lua | 10++++++++++
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)