From 686405b7031736445eeb35206e4a797a8dd78d91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 17 Nov 2019 12:13:36 +0100 Subject: [PATCH] term: new function: term_autowrap() Adds a linebreak (+ scroll if necessary) if we're in a deferred wrap and auto-margins are enabled. Return true when we wrapped, false otherwise. --- terminal.c | 15 +++++++++++++++ terminal.h | 1 + 2 files changed, 16 insertions(+) diff --git a/terminal.c b/terminal.c index 5511eba5..ae52d7a2 100644 --- a/terminal.c +++ b/terminal.c @@ -1192,6 +1192,21 @@ term_reverse_index(struct terminal *term) term_cursor_up(term, 1); } +bool +term_autowrap(struct terminal *term) +{ + if (unlikely(term->cursor.lcf) && term->auto_margin) { + if (term->cursor.point.row == term->scroll_region.end - 1) { + term_scroll(term, 1); + term_cursor_to(term, term->cursor.point.row, 0); + } else + term_cursor_to(term, term->cursor.point.row + 1, 0); + + return true; + } else + return false; +} + void term_reset_view(struct terminal *term) { diff --git a/terminal.h b/terminal.h index f5d7658f..bd12764c 100644 --- a/terminal.h +++ b/terminal.h @@ -360,6 +360,7 @@ void term_scroll_reverse_partial( void term_linefeed(struct terminal *term); void term_reverse_index(struct terminal *term); +bool term_autowrap(struct terminal *term); void term_restore_cursor(struct terminal *term);