summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-10-29 15:26:57 +0100
committerBram Moolenaar <Bram@vim.org>2017-10-29 15:26:57 +0100
commitaf2d20c6285c1d2973e3d9b5e8f727e3ed180493 (patch)
tree63d5f59ae2662b1799728fe8ac7e1144ad09f777 /src
parentd057301b1f28736f094affa17b190244ad56e8d9 (diff)
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/Makefile1
-rw-r--r--src/option.c7
-rw-r--r--src/testdir/test_alot.vim1
-rw-r--r--src/testdir/test_scroll_opt.vim36
-rw-r--r--src/version.c2
5 files changed, 43 insertions, 4 deletions
diff --git a/src/Makefile b/src/Makefile
index bda65abe48..0b95c6ef78 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 320bbfd7ca..ceafea389e 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 ad133033ac..b8a56502b1 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 0000000000..77920eb8b0
--- /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 7a2bcf5606..ff69454cf8 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,