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 /vis.c | |
| parent | c75264aa701574f9f809b1287d484a9ba8f7c5a6 (diff) | |
| download | vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.gz vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.xz | |
vis: introduce vis_register_from utility function
Diffstat (limited to 'vis.c')
| -rw-r--r-- | vis.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -1235,6 +1235,25 @@ void vis_count_set(Vis *vis, int count) { vis->action.count = (count >= 0 ? count : VIS_COUNT_UNKNOWN); } +enum VisRegister vis_register_from(Vis *vis, char reg) { + switch (reg) { + case '*': /* fall through */ + case '+': return VIS_REG_CLIPBOARD; + case '_': return VIS_REG_BLACKHOLE; + case '0': return VIS_REG_ZERO; + case '@': return VIS_MACRO_LAST_RECORDED; + case '/': return VIS_REG_SEARCH; + case ':': return VIS_REG_COMMAND; + case '!': return VIS_REG_SHELL; + default: + if ('a' <= reg && reg <= 'z') + return VIS_REG_a + reg - 'a'; + else if ('A' <= reg && reg <= 'Z') + return VIS_REG_A + reg - 'A'; + return VIS_REG_INVALID; + } +} + void vis_register_set(Vis *vis, enum VisRegister reg) { if (reg >= VIS_REG_A && reg <= VIS_REG_Z) { vis->action.reg = &vis->registers[reg - VIS_REG_A]; |
