]> granicus.if.org Git - vim/commitdiff
patch 8.0.0121 v8.0.0121
authorBram Moolenaar <Bram@vim.org>
Sat, 3 Dec 2016 14:13:20 +0000 (15:13 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 3 Dec 2016 14:13:20 +0000 (15:13 +0100)
Problem:    Setting 'cursorline' changes the curswant column. (Daniel Hahler)
Solution:   Add the P_RWINONLY flag. (closes #1297)

src/option.c
src/testdir/test_goto.vim
src/version.c

index 7356816b6b512336bbd257a62ad78b7d4707d687..920f163a5fa30f6a93ba7c2d192035768c9f5da7 100644 (file)
@@ -435,8 +435,8 @@ struct vimoption
 
                                /* when option changed, what to display: */
 #define P_RSTAT                0x1000  /* redraw status lines */
-#define P_RWIN         0x2000  /* redraw current window */
-#define P_RBUF         0x4000  /* redraw current buffer */
+#define P_RWIN         0x2000  /* redraw current window and recompute text */
+#define P_RBUF         0x4000  /* redraw current buffer and recompute text */
 #define P_RALL         0x6000  /* redraw all windows */
 #define P_RCLR         0x7000  /* clear and redraw all */
 
@@ -457,6 +457,7 @@ struct vimoption
 #define P_CURSWANT    0x4000000L /* update curswant required; not needed when
                                  * there is a redraw flag */
 #define P_NDNAME      0x8000000L /* only normal dir name chars allowed */
+#define P_RWINONLY   0x10000000L /* only redraw current window */
 
 #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
 
@@ -967,7 +968,7 @@ static struct vimoption options[] =
                            (char_u *)NULL, PV_NONE,
 #endif
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
-    {"cursorline",   "cul", P_BOOL|P_VI_DEF|P_RWIN,
+    {"cursorline",   "cul", P_BOOL|P_VI_DEF|P_RWINONLY,
 #ifdef FEAT_SYN_HL
                            (char_u *)VAR_WIN, PV_CUL,
 #else
@@ -9055,6 +9056,8 @@ check_redraw(long_u flags)
        changed_window_setting();
     if (flags & P_RBUF)
        redraw_curbuf_later(NOT_VALID);
+    if (flags & P_RWINONLY)
+       redraw_later(NOT_VALID);
     if (doclear)
        redraw_all_later(CLEAR);
     else if (all)
index d0daeeb7608859b62fc200d111775dc3392efff4..2573401707f7778dea5c4c6029f153a0bec08c45 100644 (file)
@@ -273,3 +273,18 @@ func Test_gd_string_only()
        \ ]
   call XTest_goto_decl('gd', lines, 5, 10)
 endfunc
+
+" Check that setting 'cursorline' does not change curswant
+func Test_cursorline_keep_col()
+  new
+  call setline(1, ['long long long line', 'short line'])
+  normal ggfi
+  let pos = getcurpos()
+  normal j
+  set cursorline
+  normal k
+  call assert_equal(pos, getcurpos())
+  bwipe!
+  set nocursorline
+endfunc
+
index a20159cdfc8129c9c3ddf22277a8e677cee023c9..7089a83a962d916281a56ec230f539c3445d5349 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    121,
 /**/
     120,
 /**/