vim-patch:8.1.2052: using "x" before a closed fold may delete that fold

Problem:    Using "x" before a closed fold may delete that fold.
Solution:   Do not translate 'x' do "dl". (Christian Brabandt, closes vim/vim#4927)
7a9bd7c1e0
This commit is contained in:
Daniel Hahler 2019-09-22 19:49:03 +02:00
parent 6807779c68
commit 97b82553e0
2 changed files with 20 additions and 1 deletions

View File

@ -6248,8 +6248,15 @@ static void nv_optrans(cmdarg_T *cap)
if (cap->count0) {
stuffnumReadbuff(cap->count0);
}
// If on an empty line and using 'x' and "l" is included in the
// whichwrap option, do not delete the next line.
if (cap->cmdchar == 'x' && vim_strchr(p_ww, 'l') != NULL
&& gchar_cursor() == NUL) {
stuffReadbuff((char *)"dd");
} else {
stuffReadbuff(ar[strchr(str, (char)cap->cmdchar) - str]);
}
}
cap->opcount = 0;
}

View File

@ -756,3 +756,15 @@ func Test_fold_delete_with_marker()
bwipe!
bwipe!
endfunc
func Test_fold_delete_with_marker_and_whichwrap()
new
let content1 = ['']
let content2 = ['folded line 1 "{{{1', ' test', ' test2', ' test3', '', 'folded line 2 "{{{1', ' test', ' test2', ' test3']
call setline(1, content1 + content2)
set fdm=marker ww+=l
normal! x
call assert_equal(content2, getline(1, '$'))
set fdm& ww&
bwipe!
endfunc