aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-02-28 16:03:30 +0100
committerMarc André Tanner <mat@brain-dump.org>2017-02-28 16:17:32 +0100
commit81deff2851c90245d8ed997b68f0e3c4e8ecc123 (patch)
treeabf72001f0323751f17e1b2a82d6c1f644c949d6
parentae947b5653c036b580f41e272f83d50a50319734 (diff)
downloadvis-81deff2851c90245d8ed997b68f0e3c4e8ecc123.tar.gz
vis-81deff2851c90245d8ed997b68f0e3c4e8ecc123.tar.xz
view: fix display when inserting text at start of file
Before cebb24b36ac45cc7c6912481cacd29ef9d5c68b9 a mark at the start of the file was treated specially to always return position zero. Since this was no longer the case the following would insert text before the visible area: <PageDown><PageUp><PageUp>ifoo
-rw-r--r--view.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/view.c b/view.c
index 7dcc806..d6a3f3f 100644
--- a/view.c
+++ b/view.c
@@ -131,9 +131,16 @@ void view_tabwidth_set(View *view, int tabwidth) {
static void view_clear(View *view) {
memset(view->lines, 0, view->lines_size);
if (view->start != view->start_last) {
- view->start_mark = text_mark_set(view->text, view->start);
+ if (view->start == 0)
+ view->start_mark = EMARK;
+ else
+ view->start_mark = text_mark_set(view->text, view->start);
} else {
- size_t start = text_mark_get(view->text, view->start_mark);
+ size_t start;
+ if (view->start_mark == EMARK)
+ start = 0;
+ else
+ start = text_mark_get(view->text, view->start_mark);
if (start != EPOS)
view->start = start;
}