diff options
Diffstat (limited to 'src/nvim/option.c')
-rw-r--r-- | src/nvim/option.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c index 7d0a16b051..8990b59f57 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -3994,16 +3994,7 @@ set_num_option ( /* * Number options that need some action when changed */ - if (pp == &p_scbk) { - // 'scrollback' - if (p_scbk < 1) { - errmsg = e_invarg; - p_scbk = 0; - } else if (p_scbk > 100000) { - errmsg = e_invarg; - p_scbk = 100000; - } - } else if (pp == &p_wh || pp == &p_hh) { + if (pp == &p_wh || pp == &p_hh) { if (p_wh < 1) { errmsg = e_positive; p_wh = 1; @@ -4205,7 +4196,19 @@ set_num_option ( FOR_ALL_TAB_WINDOWS(tp, wp) { check_colorcolumn(wp); } - + } else if (pp == &curbuf->b_p_scbk) { + // 'scrollback' + if (!curbuf->terminal) { + errmsg = e_invarg; + curbuf->b_p_scbk = -1; + } else { + if (curbuf->b_p_scbk < -1 || curbuf->b_p_scbk > 100000) { + errmsg = e_invarg; + curbuf->b_p_scbk = 1000; + } + // Force the scrollback to take effect. + terminal_resize(curbuf->terminal, UINT16_MAX, UINT16_MAX); + } } /* @@ -5641,7 +5644,7 @@ void buf_copy_options(buf_T *buf, int flags) buf->b_p_ai = p_ai; buf->b_p_ai_nopaste = p_ai_nopaste; buf->b_p_sw = p_sw; - buf->b_p_scbk = p_scbk; + buf->b_p_scbk = -1; buf->b_p_tw = p_tw; buf->b_p_tw_nopaste = p_tw_nopaste; buf->b_p_tw_nobin = p_tw_nobin; |