0
0
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:
Bram Moolenaar
2013-03-13 20:42:32 +01:00
parent 1e284f5155
commit 20754027b3
4 changed files with 78 additions and 13 deletions

View File

@@ -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'. */
else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
{
/* If 'number' is set, reset 'relativenumber'. */
/* If 'relativenumber' is set, reset 'number'. */
if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
{
curwin->w_p_rnu = FALSE;
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)
{
curwin->w_p_nu = FALSE;
}
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)

View File

@@ -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

View File

@@ -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

View File

@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
861,
/**/
860,
/**/