local to window
Number of lines to scroll with CTRL-U and CTRL-D commands. Will be
set to half the number of lines in the window when the window size
- changes. If you give a count to the CTRL-U or CTRL-D command it will
+ changes. This may happen when enabling the |status-line| or
+ 'tabline' option after setting the 'scroll' option.
+ If you give a count to the CTRL-U or CTRL-D command it will
be used as the new value for 'scroll'. Reset to half the window
height with ":set scroll=0".
/*
* Get a pointer to a script name. Used for ":verbose set".
+ * Message appended to "Last set from "
*/
char_u *
get_scriptname(scid_T id)
return (char_u *)_("environment variable");
if (id == SID_ERROR)
return (char_u *)_("error handler");
+ if (id == SID_WINLAYOUT)
+ return (char_u *)_("changed window size");
return SCRIPT_ITEM(id)->sn_name;
}
setlocal keywordprg&
endfunc
+" Test that resetting laststatus does change scroll option
+func Test_opt_reset_scroll()
+ CheckRunVimInTerminal
+ let vimrc =<< trim [CODE]
+ set scroll=2
+ set laststatus=2
+ [CODE]
+ call writefile(vimrc, 'Xscroll')
+ let buf = RunVimInTerminal('-S Xscroll', {'rows': 16, 'cols': 45})
+ call term_sendkeys(buf, ":verbose set scroll?\n")
+ call WaitForAssert({-> assert_match('Last set.*window size', term_getline(buf, 15))})
+ call assert_match('^\s*scroll=7$', term_getline(buf, 14))
+ call StopVimInTerminal(buf)
+
+ " clean up
+ call delete('Xscroll')
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2236,
/**/
2235,
/**/
#define SID_ENV -4 // for sourcing environment variable
#define SID_ERROR -5 // option was reset because of an error
#define SID_NONE -6 // don't set scriptID
+#define SID_WINLAYOUT -7 // changing window size
/*
* Events for autocommands.
void
win_comp_scroll(win_T *wp)
{
+#if defined(FEAT_EVAL)
+ int old_w_p_scr = wp->w_p_scr;
+#endif
+
wp->w_p_scr = ((unsigned)wp->w_height >> 1);
if (wp->w_p_scr == 0)
wp->w_p_scr = 1;
+#if defined(FEAT_EVAL)
+ if (wp->w_p_scr != old_w_p_scr)
+ {
+ // Used by "verbose set scroll".
+ wp->w_p_script_ctx[WV_SCROLL].sc_sid = SID_WINLAYOUT;
+ wp->w_p_script_ctx[WV_SCROLL].sc_lnum = 0;
+ }
+#endif
}
/*