aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/option.c5
-rw-r--r--src/nvim/terminal.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index d7675f48d7..84ace55d91 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -7453,6 +7453,10 @@ dict_T *get_winbuf_options(const int bufopt)
/// global value when appropriate.
long get_scrolloff_value(void)
{
+ // Disallow scrolloff in terminal-mode. #11915
+ if (State & TERM_FOCUS) {
+ return 0;
+ }
return curwin->w_p_so < 0 ? p_so : curwin->w_p_so;
}
@@ -7462,4 +7466,3 @@ long get_sidescrolloff_value(void)
{
return curwin->w_p_siso < 0 ? p_siso : curwin->w_p_siso;
}
-
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index 560a345333..a096b77ac6 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -343,12 +343,16 @@ void terminal_enter(void)
RedrawingDisabled = false;
// Disable these options in terminal-mode. They are nonsense because cursor is
- // placed at end of buffer to "follow" output.
+ // placed at end of buffer to "follow" output. #11072
win_T *save_curwin = curwin;
int save_w_p_cul = curwin->w_p_cul;
int save_w_p_cuc = curwin->w_p_cuc;
+ long save_w_p_so = curwin->w_p_so;
+ long save_w_p_siso = curwin->w_p_siso;
curwin->w_p_cul = false;
curwin->w_p_cuc = false;
+ curwin->w_p_so = 0;
+ curwin->w_p_siso = 0;
adjust_topline(s->term, buf, 0); // scroll to end
// erase the unfocused cursor
@@ -370,6 +374,8 @@ void terminal_enter(void)
if (save_curwin == curwin) { // save_curwin may be invalid (window closed)!
curwin->w_p_cul = save_w_p_cul;
curwin->w_p_cuc = save_w_p_cuc;
+ curwin->w_p_so = save_w_p_so;
+ curwin->w_p_siso = save_w_p_siso;
}
// draw the unfocused cursor