diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-10-29 15:26:57 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-10-29 15:26:57 +0100 |
commit | af2d20c6285c1d2973e3d9b5e8f727e3ed180493 (patch) | |
tree | 63d5f59ae2662b1799728fe8ac7e1144ad09f777 /src | |
parent | d057301b1f28736f094affa17b190244ad56e8d9 (diff) | |
download | vim-git-af2d20c6285c1d2973e3d9b5e8f727e3ed180493.tar.gz |
patch 8.0.1237: ":set scroll&" often gives an errorv8.0.1237
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 1 | ||||
-rw-r--r-- | src/option.c | 7 | ||||
-rw-r--r-- | src/testdir/test_alot.vim | 1 | ||||
-rw-r--r-- | src/testdir/test_scroll_opt.vim | 36 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 43 insertions, 4 deletions
diff --git a/src/Makefile b/src/Makefile index bda65abe4..0b95c6ef7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2242,6 +2242,7 @@ test_arglist \ test_reltime \ test_retab \ test_ruby \ + test_scroll_opt \ test_scrollbind \ test_search \ test_searchpos \ diff --git a/src/option.c b/src/option.c index 320bbfd7c..ceafea389 100644 --- a/src/option.c +++ b/src/option.c @@ -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, @@ -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); diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index ad133033a..b8a56502b 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -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 diff --git a/src/testdir/test_scroll_opt.vim b/src/testdir/test_scroll_opt.vim new file mode 100644 index 000000000..77920eb8b --- /dev/null +++ b/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 diff --git a/src/version.c b/src/version.c index 7a2bcf560..ff69454cf 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1237, +/**/ 1236, /**/ 1235, |