From 4228702c8b846736f6c74b78545bf9b9e0677a16 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Wed, 16 Nov 2016 20:19:13 -0500 Subject: [PATCH] implemented expected behavior for backspace, delete, and insert with selection --- inc/edit.h | 1 + libedit/view.c | 43 ++++++++++++++++++++++++++++++------------- xedit | Bin 57612 -> 0 bytes xedit.c | 6 +++++- 4 files changed, 36 insertions(+), 14 deletions(-) delete mode 100755 xedit diff --git a/inc/edit.h b/inc/edit.h index 0e15682..c7e1a5f 100644 --- a/inc/edit.h +++ b/inc/edit.h @@ -154,6 +154,7 @@ void view_byline(View* view, int move); void view_setcursor(View* view, size_t row, size_t col); void view_selext(View* view, size_t row, size_t col); void view_insert(View* view, Rune rune); +void view_delete(View* view); //size_t view_getoff(View* view, size_t pos, size_t row, size_t col); //void view_getsize(View* view, size_t* nrows, size_t* ncols); diff --git a/libedit/view.c b/libedit/view.c index b22d809..8877a17 100644 --- a/libedit/view.c +++ b/libedit/view.c @@ -36,12 +36,21 @@ static size_t setcell(View* view, size_t row, size_t col, uint32_t attr, Rune r) return ncols; } -static bool in_selection(Sel sel, size_t off) { - if (sel.end < sel.beg) { - size_t temp = sel.beg; - sel.beg = sel.end; - sel.end = temp; +static void selswap(Sel* sel) { + if (sel->end < sel->beg) { + size_t temp = sel->beg; + sel->beg = sel->end; + sel->end = temp; } +} + +static size_t num_selected(Sel sel) { + selswap(&sel); + return (sel.end - sel.beg); +} + +static bool in_selection(Sel sel, size_t off) { + selswap(&sel); return (sel.beg <= off && off < sel.end); } @@ -232,12 +241,16 @@ void view_selext(View* view, size_t row, size_t col) { void view_insert(View* view, Rune rune) { if (rune == '\b') { - if (view->selection.end > 0) + if (num_selected(view->selection)) + view_delete(view); + else if (view->selection.end > 0) buf_del(&(view->buffer), --view->selection.end); } else { /* ignore non-printable control characters */ if (!isspace(rune) && rune < 0x20) return; + if (num_selected(view->selection)) + view_delete(view); buf_ins(&(view->buffer), view->selection.end++, rune); } view->selection.beg = view->selection.end; @@ -246,11 +259,15 @@ void view_insert(View* view, Rune rune) { } void view_delete(View* view) { - //if (SelEnd == buf_end(&Buffer)) return; - //size_t n = SelEnd - SelBeg; - //for (size_t i = 0; i < n; i++) - // buf_del(&Buffer, SelBeg); - //SelEnd = SelBeg; - //TargetCol = buf_getcol(&Buffer, SelEnd); - //view->sync_needed = true; + Sel sel = view->selection; + selswap(&sel); + size_t num = num_selected(view->selection); + if (num == 0) + buf_del(&(view->buffer), sel.beg); + else + for (size_t i = 0; i < num; i++) + buf_del(&(view->buffer), sel.beg); + view->selection.beg = view->selection.end = sel.beg; + view->selection.col = buf_getcol(&(view->buffer), view->selection.end); + view->sync_needed = true; } diff --git a/xedit b/xedit deleted file mode 100755 index 1fcba5c325e9816058def21d62ad6e791867e3a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57612 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