From 35bae7113bbfdd40b98fbff250cf561e678c3739 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Sun, 2 Apr 2023 13:29:53 -0400 Subject: stop clearing screen on history traversal --- shed_history.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/shed_history.c b/shed_history.c index 076554c..00ce0e1 100644 --- a/shed_history.c +++ b/shed_history.c @@ -1,18 +1,41 @@ #include +#include +#include #include "shed.h" +static int shed_refresh(struct shed *e, struct buffer *next) +{ + shed_move_end(e); + size_t s = e->cur->pos; + char clrbuf[s]; + + memset(clrbuf, '\b', s); + write(STDOUT_FILENO, clrbuf, s); + + memset(clrbuf, ' ', s); + write(STDOUT_FILENO, clrbuf, s); + + memset(clrbuf, '\b', s); + write(STDOUT_FILENO, clrbuf, s); + + e->cur = next; + e->cur->pos = 0; + shed_move_end(e); + return 1; +} + int shed_history_forward(struct shed *e) { if (e->cur->next != NULL) { - e->cur = e->cur->next; + return shed_refresh(e, e->cur->next); } - return shed_redraw(e); + return 1; } int shed_history_backward(struct shed *e) { if (e->cur->prev != NULL) { - e->cur = e->cur->prev; + return shed_refresh(e, e->cur->prev); } - return shed_redraw(e); + return 1; } -- cgit v1.2.1