diff src/libvterm/src/state.c @ 11715:d7430b56c9ed v8.0.0740

patch 8.0.0740: cannot resize a terminal window by the command commit https://github.com/vim/vim/commit/e906ae85b291ccc7da842b7ac609c697bb582e1f Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 21 21:10:01 2017 +0200 patch 8.0.0740: cannot resize a terminal window by the command Problem: Cannot resize a terminal window by the command running in it. Solution: Add support for the window size escape sequence. Make BS work.
author Christian Brabandt <cb@256bit.org>
date Fri, 21 Jul 2017 21:15:04 +0200
parents b8299e742f41
children 7846efd291d7
line wrap: on
line diff
--- a/src/libvterm/src/state.c
+++ b/src/libvterm/src/state.c
@@ -9,6 +9,8 @@
 # define DEBUG_GLYPH_COMBINE
 #endif
 
+static int on_resize(int rows, int cols, void *user);
+
 /* Some convenient wrappers to make callback functions easier */
 
 static void putglyph(VTermState *state, const uint32_t chars[], int width, VTermPos pos)
@@ -1396,6 +1398,14 @@ static int on_csi(const char *leader, co
 
     break;
 
+  case 0x74:
+    switch(CSI_ARG(args[0])) {
+      case 8: /* CSI 8 ; rows ; cols t  set size */
+	if (argcount == 3)
+	  on_resize(CSI_ARG(args[1]), CSI_ARG(args[2]), state);
+    }
+    break;
+
   case INTERMED('\'', 0x7D): /* DECIC */
     count = CSI_ARG_COUNT(args[0]);
 
@@ -1534,7 +1544,7 @@ static void request_status_string(VTermS
       switch(state->mode.cursor_shape) {
         case VTERM_PROP_CURSORSHAPE_BLOCK:     reply = 2; break;
         case VTERM_PROP_CURSORSHAPE_UNDERLINE: reply = 4; break;
-        case VTERM_PROP_CURSORSHAPE_BAR_LEFT:  reply = 6; break;
+	default: /* VTERM_PROP_CURSORSHAPE_BAR_LEFT */  reply = 6; break;
       }
       if(state->mode.cursor_blink)
         reply--;