forked from aniani/vim
patch 8.0.1237: ":set scroll&" often gives an error
Problem: ":set scroll&" often gives an error. Solution: Don't use a fixed default value, use half the window height. Add a test. (Ozaki Kiichi, closes #2104)
This commit is contained in:
@@ -2242,6 +2242,7 @@ test_arglist \
|
|||||||
test_reltime \
|
test_reltime \
|
||||||
test_retab \
|
test_retab \
|
||||||
test_ruby \
|
test_ruby \
|
||||||
|
test_scroll_opt \
|
||||||
test_scrollbind \
|
test_scrollbind \
|
||||||
test_search \
|
test_search \
|
||||||
test_searchpos \
|
test_searchpos \
|
||||||
|
@@ -2359,7 +2359,7 @@ static struct vimoption options[] =
|
|||||||
SCRIPTID_INIT},
|
SCRIPTID_INIT},
|
||||||
{"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
|
{"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
|
||||||
(char_u *)VAR_WIN, PV_SCROLL,
|
(char_u *)VAR_WIN, PV_SCROLL,
|
||||||
{(char_u *)12L, (char_u *)0L} SCRIPTID_INIT},
|
{(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
|
||||||
{"scrollbind", "scb", P_BOOL|P_VI_DEF,
|
{"scrollbind", "scb", P_BOOL|P_VI_DEF,
|
||||||
#ifdef FEAT_SCROLLBIND
|
#ifdef FEAT_SCROLLBIND
|
||||||
(char_u *)VAR_WIN, PV_SCBIND,
|
(char_u *)VAR_WIN, PV_SCBIND,
|
||||||
@@ -3904,10 +3904,9 @@ set_init_2(void)
|
|||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 'scroll' defaults to half the window height. Note that this default is
|
* 'scroll' defaults to half the window height. The stored default is zero,
|
||||||
* wrong when the window height changes.
|
* which results in the actual value computed from the window height.
|
||||||
*/
|
*/
|
||||||
set_number_default("scroll", (long)((long_u)Rows >> 1));
|
|
||||||
idx = findoption((char_u *)"scroll");
|
idx = findoption((char_u *)"scroll");
|
||||||
if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
|
if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
|
||||||
set_option_default(idx, OPT_LOCAL, p_cp);
|
set_option_default(idx, OPT_LOCAL, p_cp);
|
||||||
|
@@ -41,6 +41,7 @@ source test_popup.vim
|
|||||||
source test_put.vim
|
source test_put.vim
|
||||||
source test_recover.vim
|
source test_recover.vim
|
||||||
source test_reltime.vim
|
source test_reltime.vim
|
||||||
|
source test_scroll_opt.vim
|
||||||
source test_searchpos.vim
|
source test_searchpos.vim
|
||||||
source test_set.vim
|
source test_set.vim
|
||||||
source test_sort.vim
|
source test_sort.vim
|
||||||
|
36
src/testdir/test_scroll_opt.vim
Normal file
36
src/testdir/test_scroll_opt.vim
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
" Test for reset 'scroll'
|
||||||
|
"
|
||||||
|
|
||||||
|
func Test_reset_scroll()
|
||||||
|
let scr = &l:scroll
|
||||||
|
|
||||||
|
setlocal scroll=1
|
||||||
|
setlocal scroll&
|
||||||
|
call assert_equal(scr, &l:scroll)
|
||||||
|
|
||||||
|
setlocal scroll=1
|
||||||
|
setlocal scroll=0
|
||||||
|
call assert_equal(scr, &l:scroll)
|
||||||
|
|
||||||
|
try
|
||||||
|
execute 'setlocal scroll=' . (winheight(0) + 1)
|
||||||
|
" not reached
|
||||||
|
call assert_false(1)
|
||||||
|
catch
|
||||||
|
call assert_exception('E49:')
|
||||||
|
endtry
|
||||||
|
|
||||||
|
split
|
||||||
|
|
||||||
|
let scr = &l:scroll
|
||||||
|
|
||||||
|
setlocal scroll=1
|
||||||
|
setlocal scroll&
|
||||||
|
call assert_equal(scr, &l:scroll)
|
||||||
|
|
||||||
|
setlocal scroll=1
|
||||||
|
setlocal scroll=0
|
||||||
|
call assert_equal(scr, &l:scroll)
|
||||||
|
|
||||||
|
quit!
|
||||||
|
endfunc
|
@@ -761,6 +761,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 */
|
||||||
|
/**/
|
||||||
|
1237,
|
||||||
/**/
|
/**/
|
||||||
1236,
|
1236,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user