diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-12-19 13:10:54 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-12-19 14:44:48 +0100 |
| commit | a23e33539d861d53906a353bcf7a748f37ae693f (patch) | |
| tree | 61c99220b3dc803f269cf390975abecaf5706739 /main.c | |
| parent | c75264aa701574f9f809b1287d484a9ba8f7c5a6 (diff) | |
| download | vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.gz vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.xz | |
vis: introduce vis_register_from utility function
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 54 |
1 files changed, 17 insertions, 37 deletions
@@ -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, ®); + 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, ®); + 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, ®); + 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, ®id); + 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) { |
