Mercurial > vim
diff src/libvterm/src/vterm_internal.h @ 13531:9f857e6310b6 v8.0.1639
patch 8.0.1639: libvterm code lags behind master
commit https://github.com/vim/vim/commit/b5b49a3b430ea0aaf8cce6b7bc0e444f0211ddfb
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 25 16:20:37 2018 +0200
patch 8.0.1639: libvterm code lags behind master
Problem: Libvterm code lags behind master.
Solution: Sync to head, solve merge problems.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 25 Mar 2018 16:30:06 +0200 |
parents | 8bdcc8faeb32 |
children | 2449b6ce1456 |
line wrap: on
line diff
--- a/src/libvterm/src/vterm_internal.h +++ b/src/libvterm/src/vterm_internal.h @@ -27,6 +27,11 @@ #define ESC_S "\x1b" +#define INTERMED_MAX 16 + +#define CSI_ARGS_MAX 16 +#define CSI_LEADER_MAX 16 + typedef struct VTermEncoding VTermEncoding; typedef struct { @@ -118,6 +123,7 @@ struct VTermState unsigned int screen:1; unsigned int leftrightmargin:1; unsigned int bracketpaste:1; + unsigned int report_focus:1; } mode; VTermEncodingInstance encoding[4], encoding_utf8; @@ -148,6 +154,13 @@ struct VTermState } saved; }; +typedef enum { + VTERM_PARSER_OSC, + VTERM_PARSER_DCS, + + VTERM_N_PARSER_TYPES +} VTermParserStringType; + struct VTerm { VTermAllocatorFunctions *allocator; @@ -161,22 +174,37 @@ struct VTerm unsigned int ctrl8bit:1; } mode; - enum VTermParserState { - NORMAL, - CSI, - OSC, - DCS, - ESC, - ESC_IN_OSC, - ESC_IN_DCS - } parser_state; - const VTermParserCallbacks *parser_callbacks; - void *cbdata; + struct { + enum VTermParserState { + NORMAL, + CSI_LEADER, + CSI_ARGS, + CSI_INTERMED, + ESC, + /* below here are the "string states" */ + STRING, + ESC_IN_STRING + } state; + + int intermedlen; + char intermed[INTERMED_MAX]; + + int csi_leaderlen; + char csi_leader[CSI_LEADER_MAX]; + + int csi_argi; + long csi_args[CSI_ARGS_MAX]; + + const VTermParserCallbacks *callbacks; + void *cbdata; + + VTermParserStringType stringtype; + char *strbuffer; + size_t strbuffer_len; + size_t strbuffer_cur; + } parser; /* len == malloc()ed size; cur == number of valid bytes */ - char *strbuffer; - size_t strbuffer_len; - size_t strbuffer_cur; char *outbuffer; size_t outbuffer_len;