Skip to content

Commit

Permalink
patch 8.0.1237: ":set scroll&" often gives an error
Browse files Browse the repository at this point in the history
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)
  • Loading branch information
brammool committed Oct 29, 2017
1 parent d057301 commit af2d20c
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/Makefile
Expand Up @@ -2242,6 +2242,7 @@ test_arglist \
test_reltime \
test_retab \
test_ruby \
test_scroll_opt \
test_scrollbind \
test_search \
test_searchpos \
Expand Down
7 changes: 3 additions & 4 deletions src/option.c
Expand Up @@ -2359,7 +2359,7 @@ static struct vimoption options[] =
SCRIPTID_INIT},
{"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
(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,
#ifdef FEAT_SCROLLBIND
(char_u *)VAR_WIN, PV_SCBIND,
Expand Down Expand Up @@ -3904,10 +3904,9 @@ set_init_2(void)
int idx;

/*
* 'scroll' defaults to half the window height. Note that this default is
* wrong when the window height changes.
* 'scroll' defaults to half the window height. The stored default is zero,
* 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");
if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
set_option_default(idx, OPT_LOCAL, p_cp);
Expand Down
1 change: 1 addition & 0 deletions src/testdir/test_alot.vim
Expand Up @@ -41,6 +41,7 @@ source test_popup.vim
source test_put.vim
source test_recover.vim
source test_reltime.vim
source test_scroll_opt.vim
source test_searchpos.vim
source test_set.vim
source test_sort.vim
Expand Down
36 changes: 36 additions & 0 deletions src/testdir/test_scroll_opt.vim
@@ -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
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -761,6 +761,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1237,
/**/
1236,
/**/
Expand Down

0 comments on commit af2d20c

Please sign in to comment.