patch 8.0.1639: libvterm code lags behind master
Problem: Libvterm code lags behind master.
Solution: Sync to head, solve merge problems.
diff --git a/src/libvterm/include/vterm.h b/src/libvterm/include/vterm.h
index df8e968..662125f 100644
--- a/src/libvterm/include/vterm.h
+++ b/src/libvterm/include/vterm.h
@@ -96,7 +96,9 @@
VTERM_VALUETYPE_BOOL = 1,
VTERM_VALUETYPE_INT,
VTERM_VALUETYPE_STRING,
- VTERM_VALUETYPE_COLOR
+ VTERM_VALUETYPE_COLOR,
+
+ VTERM_N_VALUETYPES
} VTermValueType;
typedef union {
@@ -116,7 +118,9 @@
VTERM_ATTR_STRIKE, /* bool: 9, 29 */
VTERM_ATTR_FONT, /* number: 10-19 */
VTERM_ATTR_FOREGROUND, /* color: 30-39 90-97 */
- VTERM_ATTR_BACKGROUND /* color: 40-49 100-107 */
+ VTERM_ATTR_BACKGROUND, /* color: 40-49 100-107 */
+
+ VTERM_N_ATTRS
} VTermAttr;
typedef enum {
@@ -129,20 +133,26 @@
VTERM_PROP_REVERSE, /* bool */
VTERM_PROP_CURSORSHAPE, /* number */
VTERM_PROP_MOUSE, /* number */
- VTERM_PROP_CURSORCOLOR /* string */
+ VTERM_PROP_CURSORCOLOR, /* string */
+
+ VTERM_N_PROPS
} VTermProp;
enum {
VTERM_PROP_CURSORSHAPE_BLOCK = 1,
VTERM_PROP_CURSORSHAPE_UNDERLINE,
- VTERM_PROP_CURSORSHAPE_BAR_LEFT
+ VTERM_PROP_CURSORSHAPE_BAR_LEFT,
+
+ VTERM_N_PROP_CURSORSHAPES
};
enum {
VTERM_PROP_MOUSE_NONE = 0,
VTERM_PROP_MOUSE_CLICK,
VTERM_PROP_MOUSE_DRAG,
- VTERM_PROP_MOUSE_MOVE
+ VTERM_PROP_MOUSE_MOVE,
+
+ VTERM_N_PROP_MOUSES
};
typedef struct {
@@ -213,8 +223,8 @@
*
* Don't confuse this with the final byte of the CSI escape; 'a' in this case.
*/
-#define CSI_ARG_FLAG_MORE (1<<30)
-#define CSI_ARG_MASK (~(1<<30))
+#define CSI_ARG_FLAG_MORE (1U<<31)
+#define CSI_ARG_MASK (~(1U<<31))
#define CSI_ARG_HAS_MORE(a) ((a) & CSI_ARG_FLAG_MORE)
#define CSI_ARG(a) ((a) & CSI_ARG_MASK)
@@ -293,6 +303,8 @@
void vterm_state_set_bold_highbright(VTermState *state, int bold_is_highbright);
int vterm_state_get_penattr(const VTermState *state, VTermAttr attr, VTermValue *val);
int vterm_state_set_termprop(VTermState *state, VTermProp prop, VTermValue *val);
+void vterm_state_focus_in(VTermState *state);
+void vterm_state_focus_out(VTermState *state);
const VTermLineInfo *vterm_state_get_lineinfo(const VTermState *state, int row);
/* ------------
@@ -357,7 +369,9 @@
VTERM_DAMAGE_CELL, /* every cell */
VTERM_DAMAGE_ROW, /* entire rows */
VTERM_DAMAGE_SCREEN, /* entire screen */
- VTERM_DAMAGE_SCROLL /* entire screen + scrollrect */
+ VTERM_DAMAGE_SCROLL, /* entire screen + scrollrect */
+
+ VTERM_N_DAMAGES
} VTermDamageSize;
/* Invoke the relevant callbacks to update the screen. */
@@ -384,7 +398,9 @@
VTERM_ATTR_STRIKE_MASK = 1 << 5,
VTERM_ATTR_FONT_MASK = 1 << 6,
VTERM_ATTR_FOREGROUND_MASK = 1 << 7,
- VTERM_ATTR_BACKGROUND_MASK = 1 << 8
+ VTERM_ATTR_BACKGROUND_MASK = 1 << 8,
+
+ VTERM_ALL_ATTRS_MASK = (1 << 9) - 1
} VTermAttrMask;
int vterm_screen_get_attrs_extent(const VTermScreen *screen, VTermRect *extent, VTermPos pos, VTermAttrMask attrs);
diff --git a/src/libvterm/include/vterm_keycodes.h b/src/libvterm/include/vterm_keycodes.h
index 2c54483..83c7e9c 100644
--- a/src/libvterm/include/vterm_keycodes.h
+++ b/src/libvterm/include/vterm_keycodes.h
@@ -5,7 +5,9 @@
VTERM_MOD_NONE = 0x00,
VTERM_MOD_SHIFT = 0x01,
VTERM_MOD_ALT = 0x02,
- VTERM_MOD_CTRL = 0x04
+ VTERM_MOD_CTRL = 0x04,
+
+ VTERM_ALL_MODS_MASK = 0x07
} VTermModifier;
/* The order here must match keycodes[] in src/keyboard.c! */
@@ -53,7 +55,8 @@
VTERM_KEY_KP_ENTER,
VTERM_KEY_KP_EQUAL,
- VTERM_KEY_MAX /* Must be last */
+ VTERM_KEY_MAX, /* Must be last */
+ VTERM_N_KEYS = VTERM_KEY_MAX
} VTermKey;
#define VTERM_KEY_FUNCTION(n) (VTERM_KEY_FUNCTION_0+(n))