changeset 12646:b908a3682f6e v8.0.1201

patch 8.0.1201: "yL" is affected by 'scrolloff' commit https://github.com/vim/vim/commit/44cc4cf72fdd12cd9a779031d443aac4254d51ae Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 15 22:13:37 2017 +0200 patch 8.0.1201: "yL" is affected by 'scrolloff' Problem: "yL" is affected by 'scrolloff'. (Eli the Bearded) Solution: Don't use 'scrolloff' when an operator is pending.
author Christian Brabandt <cb@256bit.org>
date Sun, 15 Oct 2017 22:15:05 +0200
parents 8ae2050dcae9
children c95072b87faa
files runtime/doc/motion.txt src/normal.c src/version.c
diffstat 3 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1317,7 +1317,10 @@ the current line is included.  You can t
 H			To line [count] from top (Home) of window (default:
 			first line on the window) on the first non-blank
 			character |linewise|.  See also 'startofline' option.
-			Cursor is adjusted for 'scrolloff' option.
+			Cursor is adjusted for 'scrolloff' option, unless an
+			operator is pending, in which case the text may
+			scroll.  E.g. "yH" yanks from the first visible line
+			until the cursor line (inclusive).
 
 						*M*
 M			To Middle line of window, on the first non-blank
@@ -1327,7 +1330,10 @@ M			To Middle line of window, on the fir
 L			To line [count] from bottom of window (default: Last
 			line on the window) on the first non-blank character
 			|linewise|.  See also 'startofline' option.
-			Cursor is adjusted for 'scrolloff' option.
+			Cursor is adjusted for 'scrolloff' option, unless an
+			operator is pending, in which case the text may
+			scroll.  E.g. "yL" yanks from the cursor to the last
+			visible line.
 
 <LeftMouse>		Moves to the position on the screen where the mouse
 			click is |exclusive|.  See also |<LeftMouse>|.  If the
--- a/src/normal.c
+++ b/src/normal.c
@@ -5954,7 +5954,9 @@ nv_scroll(cmdarg_T *cap)
 	    curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
     }
 
-    cursor_correct();	/* correct for 'so' */
+    /* Correct for 'so', except when an operator is pending. */
+    if (cap->oap->op_type == OP_NOP)
+	cursor_correct();
     beginline(BL_SOL | BL_FIX);
 }
 
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1201,
+/**/
     1200,
 /**/
     1199,