aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-12-19 13:10:54 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-12-19 14:44:48 +0100
commita23e33539d861d53906a353bcf7a748f37ae693f (patch)
tree61c99220b3dc803f269cf390975abecaf5706739 /main.c
parentc75264aa701574f9f809b1287d484a9ba8f7c5a6 (diff)
downloadvis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.gz
vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.xz
vis: introduce vis_register_from utility function
Diffstat (limited to 'main.c')
-rw-r--r--main.c54
1 files changed, 17 insertions, 37 deletions
diff --git a/main.c b/main.c
index 80a6ede..bf41bd5 100644
--- a/main.c
+++ b/main.c
@@ -1245,46 +1245,24 @@ static const char *nop(Vis *vis, const char *keys, const Arg *arg) {
return keys;
}
-static const char *key2register(Vis *vis, const char *keys, enum VisRegister *reg) {
- *reg = VIS_REG_INVALID;
- if (!keys[0])
- return NULL;
- if ('a' <= keys[0] && keys[0] <= 'z')
- *reg = keys[0] - 'a';
- else if ('A' <= keys[0] && keys[0] <= 'Z')
- *reg = VIS_REG_A + keys[0] - 'A';
- else if (keys[0] == '*' || keys[0] == '+')
- *reg = VIS_REG_CLIPBOARD;
- else if (keys[0] == '_')
- *reg = VIS_REG_BLACKHOLE;
- else if (keys[0] == '0')
- *reg = VIS_REG_ZERO;
- else if (keys[0] == '@')
- *reg = VIS_MACRO_LAST_RECORDED;
- else if (keys[0] == '/')
- *reg = VIS_REG_SEARCH;
- else if (keys[0] == ':')
- *reg = VIS_REG_COMMAND;
- else if (keys[0] == '!')
- *reg = VIS_REG_SHELL;
- return keys+1;
-}
-
static const char *macro_record(Vis *vis, const char *keys, const Arg *arg) {
if (!vis_macro_record_stop(vis)) {
- enum VisRegister reg;
- keys = key2register(vis, keys, &reg);
+ if (!keys[0])
+ return NULL;
+ enum VisRegister reg = vis_register_from(vis, keys[0]);
vis_macro_record(vis, reg);
+ keys++;
}
vis_draw(vis);
return keys;
}
static const char *macro_replay(Vis *vis, const char *keys, const Arg *arg) {
- enum VisRegister reg;
- keys = key2register(vis, keys, &reg);
+ if (!keys[0])
+ return NULL;
+ enum VisRegister reg = vis_register_from(vis, keys[0]);
vis_macro_replay(vis, reg);
- return keys;
+ return keys+1;
}
static const char *suspend(Vis *vis, const char *keys, const Arg *arg) {
@@ -1749,10 +1727,11 @@ static const char *selection_restore(Vis *vis, const char *keys, const Arg *arg)
}
static const char *reg(Vis *vis, const char *keys, const Arg *arg) {
- enum VisRegister reg;
- keys = key2register(vis, keys, &reg);
+ if (!keys[0])
+ return NULL;
+ enum VisRegister reg = vis_register_from(vis, keys[0]);
vis_register_set(vis, reg);
- return keys;
+ return keys+1;
}
static const char *mark_set(Vis *vis, const char *keys, const Arg *arg) {
@@ -1820,12 +1799,13 @@ static const char *delete(Vis *vis, const char *keys, const Arg *arg) {
}
static const char *insert_register(Vis *vis, const char *keys, const Arg *arg) {
- enum VisRegister regid;
- keys = key2register(vis, keys, &regid);
+ if (!keys[0])
+ return NULL;
+ enum VisRegister reg = vis_register_from(vis, keys[0]);
size_t len;
- const char *data = vis_register_get(vis, regid, &len);
+ const char *data = vis_register_get(vis, reg, &len);
vis_insert_key(vis, data, len);
- return keys;
+ return keys+1;
}
static const char *prompt_show(Vis *vis, const char *keys, const Arg *arg) {