mirror of
https://github.com/vim/vim.git
synced 2025-08-30 20:43:35 -04:00
patch 9.1.0114: Setting some options may change curswant
Problem: Setting some options changes curswant unnecessarily. Solution: Add a P_HLONLY flag that prevents changing curswant. (zeertzjq) closes: #14044 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
79230f027a
commit
fcaed6a70f
18
src/option.c
18
src/option.c
@ -4596,8 +4596,10 @@ set_bool_option(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
comp_col(); // in case 'ruler' or 'showcmd' changed
|
comp_col(); // in case 'ruler' or 'showcmd' changed
|
||||||
|
|
||||||
if (curwin->w_curswant != MAXCOL
|
if (curwin->w_curswant != MAXCOL
|
||||||
&& (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0)
|
&& (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0
|
||||||
|
&& (options[opt_idx].flags & P_HLONLY) == 0)
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
|
|
||||||
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
||||||
@ -4839,9 +4841,12 @@ set_num_option(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
comp_col(); // in case 'columns' or 'ls' changed
|
comp_col(); // in case 'columns' or 'ls' changed
|
||||||
|
|
||||||
if (curwin->w_curswant != MAXCOL
|
if (curwin->w_curswant != MAXCOL
|
||||||
&& (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0)
|
&& (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0
|
||||||
|
&& (options[opt_idx].flags & P_HLONLY) == 0)
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
|
|
||||||
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
||||||
check_redraw(options[opt_idx].flags);
|
check_redraw(options[opt_idx].flags);
|
||||||
|
|
||||||
@ -4862,11 +4867,14 @@ check_redraw(long_u flags)
|
|||||||
status_redraw_all();
|
status_redraw_all();
|
||||||
|
|
||||||
if ((flags & P_RBUF) || (flags & P_RWIN) || all)
|
if ((flags & P_RBUF) || (flags & P_RWIN) || all)
|
||||||
changed_window_setting();
|
{
|
||||||
|
if (flags & P_HLONLY)
|
||||||
|
redraw_later(UPD_NOT_VALID);
|
||||||
|
else
|
||||||
|
changed_window_setting();
|
||||||
|
}
|
||||||
if (flags & P_RBUF)
|
if (flags & P_RBUF)
|
||||||
redraw_curbuf_later(UPD_NOT_VALID);
|
redraw_curbuf_later(UPD_NOT_VALID);
|
||||||
if (flags & P_RWINONLY)
|
|
||||||
redraw_later(UPD_NOT_VALID);
|
|
||||||
if (doclear)
|
if (doclear)
|
||||||
redraw_all_later(UPD_CLEAR);
|
redraw_all_later(UPD_CLEAR);
|
||||||
else if (all)
|
else if (all)
|
||||||
|
@ -38,8 +38,8 @@
|
|||||||
#define P_RSTAT 0x1000 // redraw status lines
|
#define P_RSTAT 0x1000 // redraw status lines
|
||||||
#define P_RWIN 0x2000 // redraw current window and recompute text
|
#define P_RWIN 0x2000 // redraw current window and recompute text
|
||||||
#define P_RBUF 0x4000 // redraw current buffer and recompute text
|
#define P_RBUF 0x4000 // redraw current buffer and recompute text
|
||||||
#define P_RALL 0x6000 // redraw all windows
|
#define P_RALL 0x6000 // redraw all windows and recompute text
|
||||||
#define P_RCLR 0x7000 // clear and redraw all
|
#define P_RCLR 0x7000 // clear and redraw all and recompute text
|
||||||
|
|
||||||
#define P_COMMA 0x8000 // comma separated list
|
#define P_COMMA 0x8000 // comma separated list
|
||||||
#define P_ONECOMMA 0x18000L // P_COMMA and cannot have two consecutive
|
#define P_ONECOMMA 0x18000L // P_COMMA and cannot have two consecutive
|
||||||
@ -58,7 +58,7 @@
|
|||||||
#define P_CURSWANT 0x4000000L // update curswant required; not needed when
|
#define P_CURSWANT 0x4000000L // update curswant required; not needed when
|
||||||
// there is a redraw flag
|
// there is a redraw flag
|
||||||
#define P_NDNAME 0x8000000L // only normal dir name chars allowed
|
#define P_NDNAME 0x8000000L // only normal dir name chars allowed
|
||||||
#define P_RWINONLY 0x10000000L // only redraw current window
|
#define P_HLONLY 0x10000000L // option only changes highlight, not text
|
||||||
#define P_MLE 0x20000000L // under control of 'modelineexpr'
|
#define P_MLE 0x20000000L // under control of 'modelineexpr'
|
||||||
#define P_FUNC 0x40000000L // accept a function reference or a lambda
|
#define P_FUNC 0x40000000L // accept a function reference or a lambda
|
||||||
#define P_COLON 0x80000000L // values use colons to create sublists
|
#define P_COLON 0x80000000L // values use colons to create sublists
|
||||||
|
@ -402,7 +402,7 @@ static struct vimoption options[] =
|
|||||||
{"autowriteall","awa", P_BOOL|P_VI_DEF,
|
{"autowriteall","awa", P_BOOL|P_VI_DEF,
|
||||||
(char_u *)&p_awa, PV_NONE, NULL, NULL,
|
(char_u *)&p_awa, PV_NONE, NULL, NULL,
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"background", "bg", P_STRING|P_VI_DEF|P_RCLR,
|
{"background", "bg", P_STRING|P_VI_DEF|P_RCLR|P_HLONLY,
|
||||||
(char_u *)&p_bg, PV_NONE, did_set_background, expand_set_background,
|
(char_u *)&p_bg, PV_NONE, did_set_background, expand_set_background,
|
||||||
{
|
{
|
||||||
#if (defined(MSWIN)) && !defined(FEAT_GUI)
|
#if (defined(MSWIN)) && !defined(FEAT_GUI)
|
||||||
@ -609,7 +609,7 @@ static struct vimoption options[] =
|
|||||||
{"cmdwinheight", "cwh", P_NUM|P_VI_DEF,
|
{"cmdwinheight", "cwh", P_NUM|P_VI_DEF,
|
||||||
(char_u *)&p_cwh, PV_NONE, NULL, NULL,
|
(char_u *)&p_cwh, PV_NONE, NULL, NULL,
|
||||||
{(char_u *)7L, (char_u *)0L} SCTX_INIT},
|
{(char_u *)7L, (char_u *)0L} SCTX_INIT},
|
||||||
{"colorcolumn", "cc", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_RWIN,
|
{"colorcolumn", "cc", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_RWIN|P_HLONLY,
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
(char_u *)VAR_WIN, PV_CC, did_set_colorcolumn, NULL,
|
(char_u *)VAR_WIN, PV_CC, did_set_colorcolumn, NULL,
|
||||||
#else
|
#else
|
||||||
@ -774,21 +774,21 @@ static struct vimoption options[] =
|
|||||||
{"cursorbind", "crb", P_BOOL|P_VI_DEF,
|
{"cursorbind", "crb", P_BOOL|P_VI_DEF,
|
||||||
(char_u *)VAR_WIN, PV_CRBIND, NULL, NULL,
|
(char_u *)VAR_WIN, PV_CRBIND, NULL, NULL,
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWINONLY,
|
{"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWIN|P_HLONLY,
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
(char_u *)VAR_WIN, PV_CUC, NULL, NULL,
|
(char_u *)VAR_WIN, PV_CUC, NULL, NULL,
|
||||||
#else
|
#else
|
||||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||||
#endif
|
#endif
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"cursorline", "cul", P_BOOL|P_VI_DEF|P_RWINONLY,
|
{"cursorline", "cul", P_BOOL|P_VI_DEF|P_RWIN|P_HLONLY,
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
(char_u *)VAR_WIN, PV_CUL, NULL, NULL,
|
(char_u *)VAR_WIN, PV_CUL, NULL, NULL,
|
||||||
#else
|
#else
|
||||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||||
#endif
|
#endif
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"cursorlineopt", "culopt", P_STRING|P_VI_DEF|P_RWIN|P_ONECOMMA|P_NODUP,
|
{"cursorlineopt", "culopt", P_STRING|P_VI_DEF|P_RWIN|P_HLONLY|P_ONECOMMA|P_NODUP,
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
(char_u *)VAR_WIN, PV_CULOPT,
|
(char_u *)VAR_WIN, PV_CULOPT,
|
||||||
did_set_cursorlineopt, expand_set_cursorlineopt,
|
did_set_cursorlineopt, expand_set_cursorlineopt,
|
||||||
@ -1304,7 +1304,7 @@ static struct vimoption options[] =
|
|||||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||||
#endif
|
#endif
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"hlsearch", "hls", P_BOOL|P_VI_DEF|P_VIM|P_RALL,
|
{"hlsearch", "hls", P_BOOL|P_VI_DEF|P_VIM|P_RALL|P_HLONLY,
|
||||||
#if defined(FEAT_SEARCH_EXTRA)
|
#if defined(FEAT_SEARCH_EXTRA)
|
||||||
(char_u *)&p_hls, PV_NONE, did_set_hlsearch, NULL,
|
(char_u *)&p_hls, PV_NONE, did_set_hlsearch, NULL,
|
||||||
#else
|
#else
|
||||||
@ -2350,14 +2350,14 @@ static struct vimoption options[] =
|
|||||||
{"sourceany", NULL, P_BOOL|P_VI_DEF,
|
{"sourceany", NULL, P_BOOL|P_VI_DEF,
|
||||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"spell", NULL, P_BOOL|P_VI_DEF|P_RWIN,
|
{"spell", NULL, P_BOOL|P_VI_DEF|P_RWIN|P_HLONLY,
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
(char_u *)VAR_WIN, PV_SPELL, did_set_spell, NULL,
|
(char_u *)VAR_WIN, PV_SPELL, did_set_spell, NULL,
|
||||||
#else
|
#else
|
||||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||||
#endif
|
#endif
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
{"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF,
|
{"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_HLONLY,
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
(char_u *)&p_spc, PV_SPC, did_set_spellcapcheck, NULL,
|
(char_u *)&p_spc, PV_SPC, did_set_spellcapcheck, NULL,
|
||||||
{(char_u *)"[.?!]\\_[\\])'\" ]\\+", (char_u *)0L}
|
{(char_u *)"[.?!]\\_[\\])'\" ]\\+", (char_u *)0L}
|
||||||
@ -2377,7 +2377,7 @@ static struct vimoption options[] =
|
|||||||
#endif
|
#endif
|
||||||
SCTX_INIT},
|
SCTX_INIT},
|
||||||
{"spelllang", "spl", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA
|
{"spelllang", "spl", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA
|
||||||
|P_RBUF|P_EXPAND,
|
|P_RBUF|P_HLONLY|P_EXPAND,
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
(char_u *)&p_spl, PV_SPL, did_set_spelllang, NULL,
|
(char_u *)&p_spl, PV_SPL, did_set_spelllang, NULL,
|
||||||
{(char_u *)"en", (char_u *)0L}
|
{(char_u *)"en", (char_u *)0L}
|
||||||
@ -2387,7 +2387,7 @@ static struct vimoption options[] =
|
|||||||
#endif
|
#endif
|
||||||
SCTX_INIT},
|
SCTX_INIT},
|
||||||
{"spelloptions", "spo", P_STRING|P_ALLOCED|P_VI_DEF
|
{"spelloptions", "spo", P_STRING|P_ALLOCED|P_VI_DEF
|
||||||
|P_ONECOMMA|P_NODUP|P_RBUF,
|
|P_ONECOMMA|P_NODUP|P_RBUF|P_HLONLY,
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
(char_u *)&p_spo, PV_SPO, did_set_spelloptions, expand_set_spelloptions,
|
(char_u *)&p_spo, PV_SPO, did_set_spelloptions, expand_set_spelloptions,
|
||||||
{(char_u *)"", (char_u *)0L}
|
{(char_u *)"", (char_u *)0L}
|
||||||
@ -2596,7 +2596,7 @@ static struct vimoption options[] =
|
|||||||
(char_u *)FALSE,
|
(char_u *)FALSE,
|
||||||
#endif
|
#endif
|
||||||
(char_u *)0L} SCTX_INIT},
|
(char_u *)0L} SCTX_INIT},
|
||||||
{"textwidth", "tw", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
|
{"textwidth", "tw", P_NUM|P_VI_DEF|P_VIM|P_RBUF|P_HLONLY,
|
||||||
(char_u *)&p_tw, PV_TW, did_set_textwidth, NULL,
|
(char_u *)&p_tw, PV_TW, did_set_textwidth, NULL,
|
||||||
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
|
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
|
||||||
{"thesaurus", "tsr", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
|
{"thesaurus", "tsr", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
|
||||||
|
@ -4510,7 +4510,8 @@ did_set_string_option(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (curwin->w_curswant != MAXCOL
|
if (curwin->w_curswant != MAXCOL
|
||||||
&& (get_option_flags(opt_idx) & (P_CURSWANT | P_RALL)) != 0)
|
&& (get_option_flags(opt_idx) & (P_CURSWANT | P_RALL)) != 0
|
||||||
|
&& (get_option_flags(opt_idx) & P_HLONLY) == 0)
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
|
|
||||||
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
if ((opt_flags & OPT_NO_REDRAW) == 0)
|
||||||
|
@ -312,18 +312,23 @@ func Test_gd_string_only()
|
|||||||
call XTest_goto_decl('gd', lines, 5, 10)
|
call XTest_goto_decl('gd', lines, 5, 10)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" Check that setting 'cursorline' does not change curswant
|
" Check that setting some options does not change curswant
|
||||||
func Test_cursorline_keep_col()
|
func Test_set_options_keep_col()
|
||||||
new
|
new
|
||||||
call setline(1, ['long long long line', 'short line'])
|
call setline(1, ['long long long line', 'short line'])
|
||||||
normal ggfi
|
normal ggfi
|
||||||
let pos = getcurpos()
|
let pos = getcurpos()
|
||||||
normal j
|
normal j
|
||||||
set cursorline
|
set invhlsearch spell spelllang=en,cjk spelloptions=camel textwidth=80
|
||||||
|
set cursorline cursorcolumn cursorlineopt=line colorcolumn=+1
|
||||||
|
set background=dark
|
||||||
|
set background=light
|
||||||
normal k
|
normal k
|
||||||
call assert_equal(pos, getcurpos())
|
call assert_equal(pos, getcurpos())
|
||||||
bwipe!
|
bwipe!
|
||||||
set nocursorline
|
set hlsearch& spell& spelllang& spelloptions& textwidth&
|
||||||
|
set cursorline& cursorcolumn& cursorlineopt& colorcolumn&
|
||||||
|
set background&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_gd_local_block()
|
func Test_gd_local_block()
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
114,
|
||||||
/**/
|
/**/
|
||||||
113,
|
113,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user