diff options
author | James McCoy <jamessan@debian.org> | 2022-09-18 11:13:50 -0400 |
---|---|---|
committer | James McCoy <jamessan@debian.org> | 2022-09-18 11:13:50 -0400 |
commit | 2838e573b499029474aad60330360347315cc20c (patch) | |
tree | 81d95d0cb262efd0a069e79ffd190cd3d952f79f | |
parent | 97864b073a8a8cc553a844063242a2b0dec364a3 (diff) |
New upstream version 0.3
-rw-r--r-- | doc/seqs.txt | 1 | ||||
-rw-r--r-- | include/vterm.h | 5 | ||||
-rw-r--r-- | src/screen.c | 8 | ||||
-rw-r--r-- | src/state.c | 23 | ||||
-rw-r--r-- | t/harness.c | 2 |
5 files changed, 36 insertions, 3 deletions
diff --git a/doc/seqs.txt b/doc/seqs.txt index 16bfee2..27f28b9 100644 --- a/doc/seqs.txt +++ b/doc/seqs.txt @@ -122,6 +122,7 @@ x = xterm 123x CSI l = RM, Reset mode 123x CSI ? l = DECRM, DEC reset mode 123x CSI m = SGR, Set Graphic Rendition + CSI ? m = DECSGR, private Set Graphic Rendition 123x CSI n = DSR, Device Status Report 23x 5 = operating status 23x 6 = CPR = cursor position diff --git a/include/vterm.h b/include/vterm.h index 257b677..c6124a1 100644 --- a/include/vterm.h +++ b/include/vterm.h @@ -544,7 +544,10 @@ void *vterm_screen_get_cbdata(VTermScreen *screen); void vterm_screen_set_unrecognised_fallbacks(VTermScreen *screen, const VTermStateFallbacks *fallbacks, void *user); void *vterm_screen_get_unrecognised_fbdata(VTermScreen *screen); -void vterm_screen_set_reflow(VTermScreen *screen, bool reflow); +void vterm_screen_enable_reflow(VTermScreen *screen, bool reflow); + +// Back-compat alias for the brief time it was in 0.3-RC1 +#define vterm_screen_set_reflow vterm_screen_enable_reflow void vterm_screen_enable_altscreen(VTermScreen *screen, int altscreen); diff --git a/src/screen.c b/src/screen.c index a86b7b8..77c0af8 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1017,11 +1017,17 @@ VTermScreen *vterm_obtain_screen(VTerm *vt) return screen; } -void vterm_screen_set_reflow(VTermScreen *screen, bool reflow) +void vterm_screen_enable_reflow(VTermScreen *screen, bool reflow) { screen->reflow = reflow; } +#undef vterm_screen_set_reflow +void vterm_screen_set_reflow(VTermScreen *screen, bool reflow) +{ + vterm_screen_enable_reflow(screen, reflow); +} + void vterm_screen_enable_altscreen(VTermScreen *screen, int altscreen) { if(!screen->buffers[BUFIDX_ALTSCREEN] && altscreen) { diff --git a/src/state.c b/src/state.c index 302ec0f..ccc6981 100644 --- a/src/state.c +++ b/src/state.c @@ -1341,6 +1341,29 @@ static int on_csi(const char *leader, const long args[], int argcount, const cha vterm_state_setpen(state, args, argcount); break; + case LEADER('?', 0x6d): // DECSGR + /* No actual DEC terminal recognised these, but some printers did. These + * are alternative ways to request subscript/superscript/off + */ + for(int argi = 0; argi < argcount; argi++) { + long arg; + switch(arg = CSI_ARG(args[argi])) { + case 4: // Superscript on + arg = 73; + vterm_state_setpen(state, &arg, 1); + break; + case 5: // Subscript on + arg = 74; + vterm_state_setpen(state, &arg, 1); + break; + case 24: // Super+subscript off + arg = 75; + vterm_state_setpen(state, &arg, 1); + break; + } + } + break; + case 0x6e: // DSR - ECMA-48 8.3.35 case LEADER('?', 0x6e): // DECDSR val = CSI_ARG_OR(args[0], 0); diff --git a/t/harness.c b/t/harness.c index d541cb2..be468d9 100644 --- a/t/harness.c +++ b/t/harness.c @@ -718,7 +718,7 @@ int main(int argc, char **argv) want_screen_scrollback = sense; break; case 'r': - vterm_screen_set_reflow(screen, sense); + vterm_screen_enable_reflow(screen, sense); break; default: fprintf(stderr, "Unrecognised WANTSCREEN flag '%c'\n", line[i]); |