mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
updated for version 7.3.861
Problem: ":setlocal number" clears global value of 'relativenumber'. Solution: Do it properly. (Markus Heidelberg)
This commit is contained in:
23
src/option.c
23
src/option.c
@@ -7631,22 +7631,33 @@ set_bool_option(opt_idx, varp, value, opt_flags)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 'number', 'relativenumber' */
|
||||
else if ((int *)varp == &curwin->w_p_nu
|
||||
|| (int *)varp == &curwin->w_p_rnu)
|
||||
{
|
||||
/* If 'number' is set, reset 'relativenumber'. */
|
||||
/* If 'relativenumber' is set, reset 'number'. */
|
||||
if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
|
||||
else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
|
||||
{
|
||||
curwin->w_p_rnu = FALSE;
|
||||
|
||||
/* Only reset the global value if the own value is set globally. */
|
||||
if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
|
||||
curwin->w_allbuf_opt.wo_rnu = FALSE;
|
||||
}
|
||||
if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
|
||||
else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
|
||||
{
|
||||
curwin->w_p_nu = FALSE;
|
||||
|
||||
/* Only reset the global value if the own value is set globally. */
|
||||
if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
|
||||
curwin->w_allbuf_opt.wo_nu = FALSE;
|
||||
}
|
||||
else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu
|
||||
&& curwin->w_allbuf_opt.wo_nu)
|
||||
{
|
||||
curwin->w_allbuf_opt.wo_rnu = FALSE;
|
||||
}
|
||||
else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu
|
||||
&& curwin->w_allbuf_opt.wo_rnu)
|
||||
{
|
||||
curwin->w_allbuf_opt.wo_nu = FALSE;
|
||||
}
|
||||
|
||||
else if ((int *)varp == &curbuf->b_p_ro)
|
||||
|
@@ -10,6 +10,43 @@ STARTTEST
|
||||
:$put ='results:'
|
||||
:$put a
|
||||
:$put b
|
||||
:"
|
||||
:set nonu nornu
|
||||
:setglobal nu
|
||||
:setlocal rnu
|
||||
:redir @c | setglobal nu? | redir END
|
||||
:set nonu nornu
|
||||
:setglobal rnu
|
||||
:setlocal nu
|
||||
:redir @d | setglobal rnu? | redir END
|
||||
:$put =':setlocal must NOT reset the other global value'
|
||||
:$put c
|
||||
:$put d
|
||||
:"
|
||||
:set nonu nornu
|
||||
:setglobal nu
|
||||
:setglobal rnu
|
||||
:redir @e | setglobal nu? | redir END
|
||||
:set nonu nornu
|
||||
:setglobal rnu
|
||||
:setglobal nu
|
||||
:redir @f | setglobal rnu? | redir END
|
||||
:$put =':setglobal MUST reset the other global value'
|
||||
:$put e
|
||||
:$put f
|
||||
:"
|
||||
:set nonu nornu
|
||||
:set nu
|
||||
:set rnu
|
||||
:redir @g | setglobal nu? | redir END
|
||||
:set nonu nornu
|
||||
:set rnu
|
||||
:set nu
|
||||
:redir @h | setglobal rnu? | redir END
|
||||
:$put =':set MUST reset the other global value'
|
||||
:$put g
|
||||
:$put h
|
||||
:"
|
||||
:/^results/,$w! test.out
|
||||
:q!
|
||||
ENDTEST
|
||||
|
@@ -5,3 +5,18 @@ nonumber
|
||||
|
||||
nonumber
|
||||
relativenumber
|
||||
:setlocal must NOT reset the other global value
|
||||
|
||||
number
|
||||
|
||||
relativenumber
|
||||
:setglobal MUST reset the other global value
|
||||
|
||||
nonumber
|
||||
|
||||
norelativenumber
|
||||
:set MUST reset the other global value
|
||||
|
||||
nonumber
|
||||
|
||||
norelativenumber
|
||||
|
@@ -728,6 +728,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
861,
|
||||
/**/
|
||||
860,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user