From f1002cdc6d70bae0c5f68df1d91cd170189d4789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sat, 7 Nov 2015 08:45:15 +0100 Subject: vis: introduce vis_cancel API --- vis-core.h | 2 +- vis-modes.c | 6 +++--- vis.c | 12 ++++++++---- vis.h | 1 + 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); -- cgit v1.2.3