summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-12-03 15:13:20 +0100
committerBram Moolenaar <Bram@vim.org>2016-12-03 15:13:20 +0100
commita2477fd3490c1166522631eee53c57d34321086a (patch)
tree0d5b40678aa1e56e026784e911651e7b1293c52f
parent5643db84c6a9f15d14492cefd52647623aa2ac7c (diff)
patch 8.0.0121v8.0.0121
Problem: Setting 'cursorline' changes the curswant column. (Daniel Hahler) Solution: Add the P_RWINONLY flag. (closes #1297)
-rw-r--r--src/option.c9
-rw-r--r--src/testdir/test_goto.vim15
-rw-r--r--src/version.c2
3 files changed, 23 insertions, 3 deletions
diff --git a/src/option.c b/src/option.c
index 7356816b6b..920f163a5f 100644
--- a/src/option.c
+++ b/src/option.c
@@ -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)
diff --git a/src/testdir/test_goto.vim b/src/testdir/test_goto.vim
index d0daeeb760..2573401707 100644
--- a/src/testdir/test_goto.vim
+++ b/src/testdir/test_goto.vim
@@ -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
+
diff --git a/src/version.c b/src/version.c
index a20159cdfc..7089a83a96 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 121,
+/**/
120,
/**/
119,