aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vis-core.h1
-rw-r--r--vis.c9
2 files changed, 9 insertions, 1 deletions
diff --git a/vis-core.h b/vis-core.h
index 6d5d022..6c1c577 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -89,6 +89,7 @@ typedef struct {
/* a macro is just a sequence of symbolic keys as received from ui->getkey */
typedef Buffer Macro;
+#define macro_init buffer_init
#define macro_release buffer_release
#define macro_reset buffer_truncate
#define macro_append buffer_append0
diff --git a/vis.c b/vis.c
index e3ad87e..ed94f7d 100644
--- a/vis.c
+++ b/vis.c
@@ -930,7 +930,14 @@ static void vis_keys_process(Vis *vis, size_t pos) {
}
void vis_keys_feed(Vis *vis, const char *input) {
- vis_keys_push(vis, input, buffer_length0(vis->keys), false);
+ if (!input)
+ return;
+ Macro macro;
+ macro_init(&macro);
+ if (!macro_append(&macro, input))
+ return;
+ macro_replay(vis, &macro);
+ macro_release(&macro);
}
static void vis_keys_push(Vis *vis, const char *input, size_t pos, bool record) {