forked from aniani/vim
patch 9.0.1670: resetting local option to global value is inconsistent
Problem: Resetting local option to global value is inconsistent. Solution: Handle "<" specifically for 'scrolloff' and 'sidescrolloff'. (closes #12594)
This commit is contained in:
@@ -2135,10 +2135,14 @@ do_set_option_numeric(
|
|||||||
((flags & P_VI_DEF) || cp_val) ? VI_DEFAULT : VIM_DEFAULT];
|
((flags & P_VI_DEF) || cp_val) ? VI_DEFAULT : VIM_DEFAULT];
|
||||||
else if (nextchar == '<')
|
else if (nextchar == '<')
|
||||||
{
|
{
|
||||||
// For 'undolevels' NO_LOCAL_UNDOLEVEL means to
|
|
||||||
// use the global value.
|
|
||||||
if ((long *)varp == &curbuf->b_p_ul && opt_flags == OPT_LOCAL)
|
if ((long *)varp == &curbuf->b_p_ul && opt_flags == OPT_LOCAL)
|
||||||
|
// for 'undolevels' NO_LOCAL_UNDOLEVEL means using the global value
|
||||||
value = NO_LOCAL_UNDOLEVEL;
|
value = NO_LOCAL_UNDOLEVEL;
|
||||||
|
else if (opt_flags == OPT_LOCAL
|
||||||
|
&& ((long *)varp == &curwin->w_p_siso
|
||||||
|
|| (long *)varp == &curwin->w_p_so))
|
||||||
|
// for 'scrolloff'/'sidescrolloff' -1 means using the global value
|
||||||
|
value = -1;
|
||||||
else
|
else
|
||||||
value = *(long *)get_varp_scope(&(options[opt_idx]), OPT_GLOBAL);
|
value = *(long *)get_varp_scope(&(options[opt_idx]), OPT_GLOBAL);
|
||||||
}
|
}
|
||||||
|
@@ -954,12 +954,16 @@ func Test_local_scrolloff()
|
|||||||
wincmd w
|
wincmd w
|
||||||
call assert_equal(5, &so)
|
call assert_equal(5, &so)
|
||||||
wincmd w
|
wincmd w
|
||||||
|
call assert_equal(3, &so)
|
||||||
setlocal so<
|
setlocal so<
|
||||||
call assert_equal(5, &so)
|
call assert_equal(5, &so)
|
||||||
|
setglob so=8
|
||||||
|
call assert_equal(8, &so)
|
||||||
|
call assert_equal(-1, &l:so)
|
||||||
setlocal so=0
|
setlocal so=0
|
||||||
call assert_equal(0, &so)
|
call assert_equal(0, &so)
|
||||||
setlocal so=-1
|
setlocal so=-1
|
||||||
call assert_equal(5, &so)
|
call assert_equal(8, &so)
|
||||||
|
|
||||||
call assert_equal(7, &siso)
|
call assert_equal(7, &siso)
|
||||||
setlocal siso=3
|
setlocal siso=3
|
||||||
@@ -967,12 +971,16 @@ func Test_local_scrolloff()
|
|||||||
wincmd w
|
wincmd w
|
||||||
call assert_equal(7, &siso)
|
call assert_equal(7, &siso)
|
||||||
wincmd w
|
wincmd w
|
||||||
|
call assert_equal(3, &siso)
|
||||||
setlocal siso<
|
setlocal siso<
|
||||||
call assert_equal(7, &siso)
|
call assert_equal(7, &siso)
|
||||||
|
setglob siso=4
|
||||||
|
call assert_equal(4, &siso)
|
||||||
|
call assert_equal(-1, &l:siso)
|
||||||
setlocal siso=0
|
setlocal siso=0
|
||||||
call assert_equal(0, &siso)
|
call assert_equal(0, &siso)
|
||||||
setlocal siso=-1
|
setlocal siso=-1
|
||||||
call assert_equal(7, &siso)
|
call assert_equal(4, &siso)
|
||||||
|
|
||||||
close
|
close
|
||||||
set so&
|
set so&
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1670,
|
||||||
/**/
|
/**/
|
||||||
1669,
|
1669,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user