diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-12-13 21:17:57 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-12-16 19:38:28 -0500 |
commit | 63cd5dd0ae3e079e0b69382f905637978a1e2300 (patch) | |
tree | 33aca5f499b73c2cde9bd13df0090d86dfe117fe | |
parent | 251b20e5334e1ff8af7fdd37ca1770ad485f031b (diff) | |
download | rneovim-63cd5dd0ae3e079e0b69382f905637978a1e2300.tar.gz rneovim-63cd5dd0ae3e079e0b69382f905637978a1e2300.tar.bz2 rneovim-63cd5dd0ae3e079e0b69382f905637978a1e2300.zip |
vim-patch:8.2.0002: "dj" only deletes first line of closed fold
Problem: "dj" only deletes first line of closed fold.
Solution: Adjust last line of operator for linewise motion. (closes vim/vim#5354)
https://github.com/vim/vim/commit/3b68123cd271fb781da4055cf1a1cf52f4fee6a5
-rw-r--r-- | src/nvim/normal.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_fold.vim | 25 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c index b9dbcc6805..9c5434a0dd 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -1553,7 +1553,9 @@ void do_pending_operator(cmdarg_T *cap, int old_col, bool gui_yank) if (!VIsual_active) { if (hasFolding(oap->start.lnum, &oap->start.lnum, NULL)) oap->start.col = 0; - if ((curwin->w_cursor.col > 0 || oap->inclusive) + if ((curwin->w_cursor.col > 0 + || oap->inclusive + || oap->motion_type == kMTLineWise) && hasFolding(curwin->w_cursor.lnum, NULL, &curwin->w_cursor.lnum)) { curwin->w_cursor.col = (colnr_T)STRLEN(get_cursor_line_ptr()); diff --git a/src/nvim/testdir/test_fold.vim b/src/nvim/testdir/test_fold.vim index 324f3f8cf2..56ed543d4b 100644 --- a/src/nvim/testdir/test_fold.vim +++ b/src/nvim/testdir/test_fold.vim @@ -769,3 +769,28 @@ func Test_fold_delete_with_marker_and_whichwrap() set fdm& ww& bwipe! endfunc + +func Test_fold_delete_first_line() + new + call setline(1, [ + \ '" x {{{1', + \ '" a', + \ '" aa', + \ '" x {{{1', + \ '" b', + \ '" bb', + \ '" x {{{1', + \ '" c', + \ '" cc', + \ ]) + set foldmethod=marker + 1 + normal dj + call assert_equal([ + \ '" x {{{1', + \ '" c', + \ '" cc', + \ ], getline(1,'$')) + bwipe! + set foldmethod& +endfunc |