Mercurial > vim
changeset 10456:536a7d49249c v8.0.0121
commit https://github.com/vim/vim/commit/a2477fd3490c1166522631eee53c57d34321086a
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 3 15:13:20 2016 +0100
patch 8.0.0121
Problem: Setting 'cursorline' changes the curswant column. (Daniel Hahler)
Solution: Add the P_RWINONLY flag. (closes https://github.com/vim/vim/issues/1297)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 03 Dec 2016 15:15:03 +0100 |
parents | e7cbe2896bfe |
children | 8a2db028d418 |
files | src/option.c src/testdir/test_goto.vim src/version.c |
diffstat | 3 files changed, 23 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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 +