forked from aniani/vim
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:
37
src/option.c
37
src/option.c
@@ -7631,22 +7631,33 @@ set_bool_option(opt_idx, varp, value, opt_flags)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* 'number', 'relativenumber' */
|
/* If 'number' is set, reset 'relativenumber'. */
|
||||||
else if ((int *)varp == &curwin->w_p_nu
|
/* If 'relativenumber' is set, reset 'number'. */
|
||||||
|| (int *)varp == &curwin->w_p_rnu)
|
else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
|
||||||
{
|
{
|
||||||
/* If 'number' is set, reset 'relativenumber'. */
|
curwin->w_p_rnu = FALSE;
|
||||||
/* If 'relativenumber' is set, reset 'number'. */
|
|
||||||
if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
|
/* Only reset the global value if the own value is set globally. */
|
||||||
{
|
if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
|
||||||
curwin->w_p_rnu = FALSE;
|
|
||||||
curwin->w_allbuf_opt.wo_rnu = FALSE;
|
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;
|
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;
|
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)
|
else if ((int *)varp == &curbuf->b_p_ro)
|
||||||
|
@@ -10,6 +10,43 @@ STARTTEST
|
|||||||
:$put ='results:'
|
:$put ='results:'
|
||||||
:$put a
|
:$put a
|
||||||
:$put b
|
:$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
|
:/^results/,$w! test.out
|
||||||
:q!
|
:q!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
@@ -5,3 +5,18 @@ nonumber
|
|||||||
|
|
||||||
nonumber
|
nonumber
|
||||||
relativenumber
|
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[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
861,
|
||||||
/**/
|
/**/
|
||||||
860,
|
860,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user