1
0
forked from aniani/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 #5354)
This commit is contained in:
Bram Moolenaar 2019-12-13 19:35:55 +01:00
parent 74ee5e2384
commit 3b68123cd2
3 changed files with 29 additions and 1 deletions

View File

@ -4233,7 +4233,8 @@ do_pending_operator(cmdarg_T *cap, int old_col, int gui_yank)
{
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 == MLINE)
&& hasFolding(curwin->w_cursor.lnum, NULL,
&curwin->w_cursor.lnum))
curwin->w_cursor.col = (colnr_T)STRLEN(ml_get_curline());

View File

@ -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

View File

@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2,
/**/
1,
/**/