From 7a629aa8bff05ff2d2f4769bddcc284eb2a54084 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 4 Apr 2017 10:51:52 -0400 Subject: [PATCH] removed some redundant code in view.c --- inc/edit.h | 3 ++- lib/view.c | 77 ++++++++++++++++++++---------------------------------- xedit.c | 2 +- 3 files changed, 31 insertions(+), 51 deletions(-) diff --git a/inc/edit.h b/inc/edit.h index 735c92f..cfb0bc5 100644 --- a/inc/edit.h +++ b/inc/edit.h @@ -168,7 +168,8 @@ void view_selext(View* view, size_t row, size_t col); void view_selextend(View* view, size_t row, size_t col); void view_selword(View* view, size_t row, size_t col); void view_select(View* view, size_t row, size_t col); -void view_jumpto(View* view, size_t off); +void view_jumpto(View* view, bool extsel, size_t off); +void view_scrollto(View* view, size_t csr); /* Command Executions *****************************************************************************/ diff --git a/lib/view.c b/lib/view.c index 2a4de67..11ae3a2 100644 --- a/lib/view.c +++ b/lib/view.c @@ -140,7 +140,7 @@ static void sync_center(View* view, size_t csr) { (move < 0 ? scroll_up : scroll_dn)(view); } -static void sync_view(View* view, size_t csr) { +void view_scrollto(View* view, size_t csr) { if (!view->nrows) return; unsigned first = view->rows[0]->off; unsigned last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1; @@ -227,7 +227,7 @@ void view_update(View* view, size_t* csrx, size_t* csry) { /* scroll the view and reflow the screen lines */ reflow(view); if (view->sync_needed) - sync_view(view, csr); + view_scrollto(view, csr); /* find the cursor on the new screen */ for (size_t y = 0; y < view->nrows; y++) { size_t start = view->rows[y]->off; @@ -290,7 +290,7 @@ void view_selext(View* view, size_t row, size_t col) { size_t off = getoffset(view, row, col); if (off != SIZE_MAX) { view->selection.end = off; - sync_view(view, view->selection.end); + view_scrollto(view, view->selection.end); } } @@ -382,10 +382,8 @@ void view_insert(View* view, bool indent, Rune rune) { sel.beg = sel.end = buf_change(&(view->buffer), sel.beg, sel.end); view->selection = sel; } - view->selection.end = buf_insert(&(view->buffer), indent, view->selection.end, rune); - view->selection.beg = view->selection.end; - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + unsigned newpos = buf_insert(&(view->buffer), indent, view->selection.end, rune); + view_jumpto(view, false, newpos); } void view_delete(View* view, int dir, bool byword) { @@ -393,9 +391,15 @@ void view_delete(View* view, int dir, bool byword) { if (sel->beg == sel->end) (byword ? view_byword : view_byrune)(view, dir, true); selswap(sel); - sel->end = buf_delete(&(view->buffer), sel->beg, sel->end); - sel->beg = sel->end; - sel->col = buf_getcol(&(view->buffer), sel->end); + unsigned newpos = buf_delete(&(view->buffer), sel->beg, sel->end); + view_jumpto(view, false, newpos); +} + +void view_jumpto(View* view, bool extsel, size_t off) { + view->selection.end = off; + if (!extsel) + view->selection.beg = view->selection.end; + view->selection.col = buf_getcol(&(view->buffer), view->selection.end); view->sync_needed = true; } @@ -407,49 +411,36 @@ void view_bol(View* view, bool extsel) { for (; ' ' == buf_get(buf, boi) || '\t' == buf_get(buf, boi); boi++); unsigned pos = view->selection.end; pos = (pos == bol || pos > boi ? boi : bol); - - /* set the new cursor position */ - view->selection.end = pos; - if (!extsel) - view->selection.beg = view->selection.end; - view->selection.col = buf_getcol(buf, view->selection.end); - view->sync_needed = true; + view_jumpto(view, extsel, pos); } void view_eol(View* view, bool extsel) { - view->selection.end = buf_eol(&(view->buffer), view->selection.end); - if (!extsel) - view->selection.beg = view->selection.end; - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + view_jumpto(view, extsel, buf_eol(&(view->buffer), view->selection.end)); } void view_bof(View* view, bool extsel) { - view->selection.end = 0; - if (!extsel) - view->selection.beg = view->selection.end; - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + view_jumpto(view, extsel, 0); } void view_eof(View* view, bool extsel) { - view->selection.end = buf_end(&(view->buffer)); - if (!extsel) - view->selection.beg = view->selection.end; - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + view_jumpto(view, extsel, buf_end(&(view->buffer))); +} + +void view_setln(View* view, size_t line) { + view_jumpto(view, false, buf_setln(&(view->buffer), line)); + view->sync_center = true; } void view_undo(View* view) { buf_undo(&(view->buffer), &(view->selection)); - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + view_jumpto(view, true, view->selection.end); + view->sync_center = true; } void view_redo(View* view) { buf_redo(&(view->buffer), &(view->selection)); - view->selection.col = buf_getcol(&(view->buffer), view->selection.end); - view->sync_needed = true; + view_jumpto(view, true, view->selection.end); + view->sync_center = true; } void view_putstr(View* view, char* str) { @@ -517,7 +508,7 @@ char* view_getcmd(View* view) { } char* view_getctx(View* view) { - if (0 == num_selected(view->selection)) { + if (!num_selected(view->selection)) { selcontext(view, &(view->selection)); view->selection.end++; } @@ -540,14 +531,6 @@ void view_scrollpage(View* view, int move) { view_scroll(view, move); } -void view_setln(View* view, size_t line) { - view->selection.end = buf_setln(&(view->buffer), line); - view->selection.beg = view->selection.end; - view->selection.col = 0; - view->sync_needed = true; - view->sync_center = true; -} - void view_indent(View* view, int dir) { Buf* buf = &(view->buffer); unsigned indoff = (buf->expand_tabs ? TabWidth : 1); @@ -580,7 +563,3 @@ void view_indent(View* view, int dir) { } while (off && off >= view->selection.beg); } - -void view_jumpto(View* view, size_t off) { - sync_view(view, off); -} diff --git a/xedit.c b/xedit.c index fa4951e..53ab28e 100644 --- a/xedit.c +++ b/xedit.c @@ -509,7 +509,7 @@ static KeyBinding Bindings[] = { void onscroll(double percent) { size_t bend = buf_end(win_buf(EDIT)); size_t off = (size_t)((double)bend * percent); - view_jumpto(win_view(EDIT), (off >= bend ? bend : off)); + view_scrollto(win_view(EDIT), (off >= bend ? bend : off)); } void onupdate(void) { -- 2.49.0