diff --git a/csi.c b/csi.c index 6fca2c24..bb805134 100644 --- a/csi.c +++ b/csi.c @@ -585,7 +585,7 @@ csi_dispatch(struct terminal *term, uint8_t final) break; case 7: - LOG_WARN("unimplemented: smam (automatic margins)"); + term->auto_margin = true; break; case 12: @@ -655,7 +655,7 @@ csi_dispatch(struct terminal *term, uint8_t final) break; case 7: - LOG_WARN("unimplemented: smam (automatic margins)"); + term->auto_margin = false; break; case 12: diff --git a/main.c b/main.c index b69f42de..a87598c4 100644 --- a/main.c +++ b/main.c @@ -864,6 +864,7 @@ main(int argc, char *const *argv) .ptmx = posix_openpt(O_RDWR | O_NOCTTY), .decckm = DECCKM_CSI, .keypad_mode = KEYPAD_NUMERICAL, /* TODO: verify */ + .auto_margin = true, .vt = { .state = 1, /* STATE_GROUND */ }, diff --git a/vt.c b/vt.c index b00b840d..8f1db921 100644 --- a/vt.c +++ b/vt.c @@ -690,7 +690,7 @@ action(struct terminal *term, enum action action, uint8_t c) break; case ACTION_PRINT: { - if (term->print_needs_wrap) { + if (term->auto_margin && term->print_needs_wrap) { if (term->cursor.row == term->scroll_region.end - 1) { term_scroll(term, 1); term_cursor_to(term, term->cursor.row, 0);