aboutsummaryrefslogtreecommitdiff
path: root/vis.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 /vis.c
parentc75264aa701574f9f809b1287d484a9ba8f7c5a6 (diff)
downloadvis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.gz
vis-a23e33539d861d53906a353bcf7a748f37ae693f.tar.xz
vis: introduce vis_register_from utility function
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/vis.c b/vis.c
index 1926d62..55c55ce 100644
--- a/vis.c
+++ b/vis.c
@@ -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];