From e41e3b41f991bd610f889dea57676526704fea5f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 11 Aug 2017 16:24:50 +0200 Subject: patch 8.0.0898: can't use the alternate screen in a terminal window Problem: Can't use the alternate screen in a terminal window. Solution: Initialze the alternate screen. (Yasuhiro Matsumoto, closes #1957) Add term_getaltscreen(). --- src/terminal.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/terminal.c') diff --git a/src/terminal.c b/src/terminal.c index b1cb61fc0..e22f7bcf7 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -146,6 +146,8 @@ struct terminal_S { VTermPos tl_cursor_pos; int tl_cursor_visible; + + int tl_using_altscreen; }; #define TMODE_ONCE 1 /* CTRL-\ CTRL-N used */ @@ -1316,6 +1318,11 @@ handle_settermprop( out_flush(); break; + case VTERM_PROP_ALTSCREEN: + /* TODO: do anything else? */ + term->tl_using_altscreen = value->boolean; + break; + default: break; } @@ -1865,6 +1872,9 @@ create_vterm(term_T *term, int rows, int cols) /* Required to initialize most things. */ vterm_screen_reset(screen, 1 /* hard */); + + /* Allow using alternate screen. */ + vterm_screen_enable_altscreen(screen, 1); } /* @@ -1938,6 +1948,19 @@ term_get_buf(typval_T *argvars) return buf; } +/* + * "term_getaltscreen(buf)" function + */ + void +f_term_getaltscreen(typval_T *argvars, typval_T *rettv) +{ + buf_T *buf = term_get_buf(argvars); + + if (buf == NULL) + return; + rettv->vval.v_number = buf->b_term->tl_using_altscreen; +} + /* * "term_getattr(attr, name)" function */ -- cgit v1.2.1