csi: let CSI 0 q mean "switch to user configured cursor style"

According to the specs, \E[0 q means a blinking block cursor. However,
since it also states that \E[1 q *also* is a blinking block cursor,
and that it is the default, *and* given that fact that parameter-less
CSIs typically means "reset", let's make it mean "reset to the user
configured cursor style".
This commit is contained in:
Daniel Eklöf 2019-07-22 20:19:27 +02:00
parent 3ccdef3498
commit 49034bb759
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 11 additions and 3 deletions

10
csi.c
View file

@ -929,7 +929,12 @@ csi_dispatch(struct terminal *term, uint8_t final)
case 'q': {
int param = vt_param_get(term, 0, 0);
switch (param) {
case 0: case 1: /* blinking block */
case 0:
term->cursor_style = term->default_cursor_style;
term->cursor_blinking = false; /* TODO: configurable */
break;
case 1: /* blinking block */
case 2: /* steady block */
term->cursor_style = CURSOR_BLOCK;
break;
@ -945,7 +950,8 @@ csi_dispatch(struct terminal *term, uint8_t final)
break;
}
term->cursor_blinking = param == 0 || param & 1;
if (param != 0)
term->cursor_blinking = param & 1;
if (term->cursor_blinking)
LOG_WARN("unimplemented: blinking cursor");
break;