aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-11-07 08:45:15 +0100
committerMarc André Tanner <mat@brain-dump.org>2015-11-07 08:45:15 +0100
commitf1002cdc6d70bae0c5f68df1d91cd170189d4789 (patch)
treedb9dcbc634e207aa8618f571fd4dc87a67dc8505
parentacced3c57142eb2ad389b0aa247bc361bc627beb (diff)
downloadvis-f1002cdc6d70bae0c5f68df1d91cd170189d4789.tar.gz
vis-f1002cdc6d70bae0c5f68df1d91cd170189d4789.tar.xz
vis: introduce vis_cancel API
-rw-r--r--vis-core.h2
-rw-r--r--vis-modes.c6
-rw-r--r--vis.c12
-rw-r--r--vis.h1
4 files changed, 13 insertions, 8 deletions
diff --git a/vis-core.h b/vis-core.h
index 8d12518..549b817 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -167,7 +167,7 @@ const char *expandtab(Vis *vis);
void macro_operator_stop(Vis *vis);
void macro_operator_record(Vis *vis);
-void action_reset(Vis*, Action *a);
+void action_reset(Action*);
void mode_set(Vis *vis, Mode *new_mode);
Mode *mode_get(Vis *vis, enum VisMode mode);
diff --git a/vis-modes.c b/vis-modes.c
index 08acec7..7d2f7e5 100644
--- a/vis-modes.c
+++ b/vis-modes.c
@@ -58,7 +58,7 @@ static void vis_mode_operator_leave(Vis *vis, Mode *new) {
static void vis_mode_operator_input(Vis *vis, const char *str, size_t len) {
/* invalid operator */
- action_reset(vis, &vis->action);
+ vis_cancel(vis);
mode_set(vis, vis->mode_prev);
}
@@ -112,7 +112,7 @@ static void vis_mode_prompt_leave(Vis *vis, Mode *new) {
static void vis_mode_insert_enter(Vis *vis, Mode *old) {
if (!vis->macro_operator) {
macro_operator_record(vis);
- action_reset(vis, &vis->action_prev);
+ action_reset(&vis->action_prev);
vis->action_prev.macro = vis->macro_operator;
vis->action_prev.op = &ops[OP_INSERT];
}
@@ -136,7 +136,7 @@ static void vis_mode_insert_input(Vis *vis, const char *str, size_t len) {
static void vis_mode_replace_enter(Vis *vis, Mode *old) {
if (!vis->macro_operator) {
macro_operator_record(vis);
- action_reset(vis, &vis->action_prev);
+ action_reset(&vis->action_prev);
vis->action_prev.macro = vis->macro_operator;
vis->action_prev.op = &ops[OP_REPLACE];
}
diff --git a/vis.c b/vis.c
index 07bcd3c..82532b6 100644
--- a/vis.c
+++ b/vis.c
@@ -660,11 +660,15 @@ static void action_do(Vis *vis, Action *a) {
a->macro = vis->macro_operator;
vis->action_prev = *a;
}
- action_reset(vis, a);
+ action_reset(a);
}
}
-void action_reset(Vis *vis, Action *a) {
+void vis_cancel(Vis *vis) {
+ action_reset(&vis->action);
+}
+
+void action_reset(Action *a) {
memset(a, 0, sizeof(*a));
}
@@ -1034,7 +1038,7 @@ bool vis_motion(Vis *vis, enum VisMotion motion, ...) {
{
const char *pattern = va_arg(ap, char*);
if (text_regex_compile(vis->search_pattern, pattern, REG_EXTENDED)) {
- action_reset(vis, &vis->action);
+ vis_cancel(vis);
goto err;
}
if (motion == MOVE_SEARCH_FORWARD)
@@ -1199,7 +1203,7 @@ void vis_repeat(Vis *vis) {
}
vis->action_prev = action_prev;
}
- action_reset(vis, &vis->action);
+ vis_cancel(vis);
}
void vis_mark_set(Vis *vis, enum VisMark mark, size_t pos) {
diff --git a/vis.h b/vis.h
index 23761b6..8e69806 100644
--- a/vis.h
+++ b/vis.h
@@ -320,6 +320,7 @@ void vis_register_set(Vis*, enum VisRegister);
Register *vis_register_get(Vis*, enum VisRegister);
void vis_repeat(Vis*);
+void vis_cancel(Vis*);
/* execute a :-command (call without without leading ':') */
bool vis_cmd(Vis*, const char *cmd);