aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/normal.c
diff options
context:
space:
mode:
authorDaniel Hahler <git@thequod.de>2019-09-22 20:04:34 +0200
committerDaniel Hahler <git@thequod.de>2019-09-22 20:11:04 +0200
commit6c3d34e4dfc7fd3f810dd78f9dec016540c13bda (patch)
treec641bdaf14179c71be50af8f4c6442c3ca5a4deb /src/nvim/normal.c
parent97b82553e09b949cae90c6e755d218d5cdca8f12 (diff)
downloadrneovim-6c3d34e4dfc7fd3f810dd78f9dec016540c13bda.tar.gz
rneovim-6c3d34e4dfc7fd3f810dd78f9dec016540c13bda.tar.bz2
rneovim-6c3d34e4dfc7fd3f810dd78f9dec016540c13bda.zip
vim-patch:8.1.2059: fix for "x" deleting a fold has side effects
Problem: Fix for "x" deleting a fold has side effects. Solution: Fix it where the fold is included. https://github.com/vim/vim/commit/56ebbabea1d8409ba67127b9674f6c714739c8e0
Diffstat (limited to 'src/nvim/normal.c')
-rw-r--r--src/nvim/normal.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index ffdc8e23d7..4dfde96e94 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -1553,9 +1553,11 @@ 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 (hasFolding(curwin->w_cursor.lnum, NULL,
- &curwin->w_cursor.lnum))
+ if ((curwin->w_cursor.col > 0 || oap->inclusive)
+ && hasFolding(curwin->w_cursor.lnum, NULL,
+ &curwin->w_cursor.lnum)) {
curwin->w_cursor.col = (colnr_T)STRLEN(get_cursor_line_ptr());
+ }
}
oap->end = curwin->w_cursor;
curwin->w_cursor = oap->start;
@@ -5125,14 +5127,10 @@ static void nv_right(cmdarg_T *cap)
break;
} else if (PAST_LINE) {
curwin->w_set_curswant = true;
- if (virtual_active())
+ if (virtual_active()) {
oneright();
- else {
- if (has_mbyte)
- curwin->w_cursor.col +=
- (*mb_ptr2len)(get_cursor_pos_ptr());
- else
- ++curwin->w_cursor.col;
+ } else {
+ curwin->w_cursor.col += (*mb_ptr2len)(get_cursor_pos_ptr());
}
}
}
@@ -6248,14 +6246,7 @@ 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]);
- }
+ stuffReadbuff(ar[strchr(str, (char)cap->cmdchar) - str]);
}
cap->opcount = 0;
}