]> git.mdlowis.com Git - projs/tide.git/commitdiff
fixed right-click find behavior
authorMichael D. Lowis <mike@mdlowis.com>
Sat, 19 Nov 2016 03:33:58 +0000 (22:33 -0500)
committerMichael D. Lowis <mike@mdlowis.com>
Sat, 19 Nov 2016 03:33:58 +0000 (22:33 -0500)
libedit/view.c

index 17b438b90dc156a6998f322fcc804dd8bea1301b..428e09e4439a91e40963a802bc498969528b6d5e 100644 (file)
@@ -308,10 +308,21 @@ void view_select(View* view, size_t row, size_t col) {
 }
 
 void view_find(View* view, size_t row, size_t col) {
-    view_select(view, row, col);
-    Sel sel = view->selection;
-    buf_find(&(view->buffer), &sel.beg, &sel.end);
-    view->selection = sel;
+    size_t off = getoffset(view, row, col);
+    if (off != SIZE_MAX) {
+        Sel sel = view->selection;
+        if (!num_selected(sel) || !in_selection(sel, off)) {
+            view_setcursor(view, row, col);
+            sel = view->selection;
+            selcontext(view, &sel);
+            buf_find(&(view->buffer), &sel.beg, &sel.end);
+            sel.end++;
+        } else {
+            buf_find(&(view->buffer), &sel.beg, &sel.end);
+        }
+        view->selection = sel;
+        view->sync_needed = true;
+    }
 }
 
 void view_insert(View* view, Rune rune) {