diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-02-25 16:25:14 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-02-25 17:20:00 +0100 |
| commit | 95bae46af604f1fda07c8e7b92a278e28792c427 (patch) | |
| tree | 6efdeab93b78e61171c5a8289cf42659298649dd /main.c | |
| parent | 08d686d991cce58a22b4841010feae0e38dbe3d0 (diff) | |
| download | vis-95bae46af604f1fda07c8e7b92a278e28792c427.tar.gz vis-95bae46af604f1fda07c8e7b92a278e28792c427.tar.xz | |
vis: use standard registers for macro recordings
Also support upper case register to append to an existing macro.
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 55 |
1 files changed, 23 insertions, 32 deletions
@@ -1124,31 +1124,39 @@ static const char *nop(Vis *vis, const char *keys, const Arg *arg) { return keys; } -static const char *key2macro(Vis *vis, const char *keys, enum VisMacro *macro) { - *macro = VIS_MACRO_INVALID; - if (keys[0] >= 'a' && keys[0] <= 'z') - *macro = keys[0] - 'a'; - else if (keys[0] == '@') - *macro = VIS_MACRO_LAST_RECORDED; - else if (keys[0] == '\0') +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; return keys+1; } static const char *macro_record(Vis *vis, const char *keys, const Arg *arg) { - if (vis_macro_record_stop(vis)) - return keys; - enum VisMacro macro; - keys = key2macro(vis, keys, ¯o); - vis_macro_record(vis, macro); + if (!vis_macro_record_stop(vis)) { + enum VisRegister reg; + keys = key2register(vis, keys, ®); + vis_macro_record(vis, reg); + } vis_draw(vis); return keys; } static const char *macro_replay(Vis *vis, const char *keys, const Arg *arg) { - enum VisMacro macro; - keys = key2macro(vis, keys, ¯o); - vis_macro_replay(vis, macro); + enum VisRegister reg; + keys = key2register(vis, keys, ®); + vis_macro_replay(vis, reg); return keys; } @@ -1389,23 +1397,6 @@ static const char *selection_restore(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 (keys[0] >= 'a' && keys[0] <= 'z') - *reg = keys[0] - 'a'; - else if (keys[0] >= 'A' && 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; - return keys+1; -} - static const char *reg(Vis *vis, const char *keys, const Arg *arg) { enum VisRegister reg; keys = key2register(vis, keys, ®); |
