aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-07-27 21:59:30 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-07-28 13:21:50 +0200
commitb134abd515969c123182d5f20008a5f89bd7bfe4 (patch)
tree9a93e77009633b76cd105917be315decb0e75ae9 /vis.c
parent620518966fb99511c506af292cc1885f7a419881 (diff)
downloadvis-b134abd515969c123182d5f20008a5f89bd7bfe4.tar.gz
vis-b134abd515969c123182d5f20008a5f89bd7bfe4.tar.xz
vis: ESC in normal mode clears all cursors
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/vis.c b/vis.c
index d11c696..4b9ddfb 100644
--- a/vis.c
+++ b/vis.c
@@ -320,6 +320,8 @@ static void totill_repeat(const Arg *arg);
static void totill_reverse(const Arg *arg);
/* replace character at cursor with one read form keyboard */
static void replace(const Arg *arg);
+/* remove all but the primary cursor and their selections */
+static void cursors_clear(const Arg *arg);
/* adjust action.count by arg->i */
static void count(const Arg *arg);
/* move to the action.count-th line or if not given either to the first (arg->i < 0)
@@ -825,6 +827,14 @@ static void totill_reverse(const Arg *arg) {
movement(&(const Arg){ .i = type });
}
+static void cursors_clear(const Arg *arg) {
+ View *view = vis->win->view;
+ if (view_cursors_count(view) > 1)
+ view_cursors_clear(view);
+ else
+ view_cursors_selection_clear(view_cursor(view));
+}
+
static void replace(const Arg *arg) {
Key k = getkey();
if (!k.str[0])
@@ -1227,10 +1237,9 @@ static void action_do(Action *a) {
Text *txt = vis->win->file->text;
View *view = vis->win->view;
int count = MAX(1, a->count);
- Cursor *cursor = view_cursors(view), *next;
- bool multiple_cursors = cursor && view_cursors_next(cursor);
+ bool multiple_cursors = view_cursors_count(view) > 1;
- for (; cursor; cursor = next) {
+ for (Cursor *cursor = view_cursors(view), *next; cursor; cursor = next) {
next = view_cursors_next(cursor);
size_t pos = view_cursors_pos(cursor);