diff options
author | Daniel Hahler <git@thequod.de> | 2019-09-22 19:49:03 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2019-09-22 20:11:04 +0200 |
commit | 97b82553e09b949cae90c6e755d218d5cdca8f12 (patch) | |
tree | 8e1b36302490df8331213af293b4038978c7e0e7 /src | |
parent | 6807779c68220e738b99486118c97c0ebc108b0e (diff) | |
download | rneovim-97b82553e09b949cae90c6e755d218d5cdca8f12.tar.gz rneovim-97b82553e09b949cae90c6e755d218d5cdca8f12.tar.bz2 rneovim-97b82553e09b949cae90c6e755d218d5cdca8f12.zip |
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)
https://github.com/vim/vim/commit/7a9bd7c1e0ce1baf5a02daf36eeae3638aa315c7
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/normal.c | 9 | ||||
-rw-r--r-- | src/nvim/testdir/test_fold.vim | 12 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c index e7e6d2b365..ffdc8e23d7 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -6248,7 +6248,14 @@ static void nv_optrans(cmdarg_T *cap) if (cap->count0) { stuffnumReadbuff(cap->count0); } - stuffReadbuff(ar[strchr(str, (char)cap->cmdchar) - str]); + // 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; } diff --git a/src/nvim/testdir/test_fold.vim b/src/nvim/testdir/test_fold.vim index 3cb42579be..03723b3cb5 100644 --- a/src/nvim/testdir/test_fold.vim +++ b/src/nvim/testdir/test_fold.vim @@ -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 |