diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-10-25 22:20:44 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-10-25 22:46:43 +0100 |
| commit | e09b9c91e60024488aafd780708346e1655a9aca (patch) | |
| tree | 574337db5f301a9131093e0a45d972bab3625cdf | |
| parent | 2a4f0b6374e511dc93161cd7b9a98a1df5c91330 (diff) | |
| download | vis-e09b9c91e60024488aafd780708346e1655a9aca.tar.gz vis-e09b9c91e60024488aafd780708346e1655a9aca.tar.xz | |
vis: introduce vis_register_{get,set} API
| -rw-r--r-- | vis.c | 27 | ||||
| -rw-r--r-- | vis.h | 8 |
2 files changed, 29 insertions, 6 deletions
@@ -958,17 +958,20 @@ static const char *selection_restore(Vis *vis, const char *keys, const Arg *arg) return keys; } -static const char *key2register(Vis *vis, const char *keys, Register **reg) { - *reg = NULL; +static const char *key2register(Vis *vis, const char *keys, enum VisRegister *reg) { + *reg = VIS_REGISTER_INVALID; if (!keys[0]) return NULL; if (keys[0] >= 'a' && keys[0] <= 'z') - *reg = &vis->registers[keys[0] - 'a']; + *reg = keys[0] - 'a'; return keys+1; } static const char *reg(Vis *vis, const char *keys, const Arg *arg) { - return key2register(vis, keys, &vis->action.reg); + enum VisRegister reg; + keys = key2register(vis, keys, ®); + vis_register_set(vis, reg); + return keys; } static const char *key2mark(Vis *vis, const char *keys, int *mark) { @@ -1049,8 +1052,9 @@ 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) { - Register *reg; - keys = key2register(vis, keys, ®); + enum VisRegister regid; + keys = key2register(vis, keys, ®id); + Register *reg = vis_register_get(vis, regid); if (reg) { int pos = view_cursor_get(vis->win->view); editor_insert(vis, pos, reg->data, reg->len); @@ -2902,3 +2906,14 @@ int vis_count_get(Vis *vis) { void vis_count_set(Vis *vis, int count) { vis->action.count = count; } + +void vis_register_set(Vis *vis, enum VisRegister reg) { + if (reg < LENGTH(vis->registers)) + vis->action.reg = &vis->registers[reg]; +} + +Register *vis_register_get(Vis *vis, enum VisRegister reg) { + if (reg < LENGTH(vis->registers)) + return &vis->registers[reg]; + return NULL; +} @@ -168,6 +168,14 @@ enum VisMark { void vis_mark_set(Vis*, enum VisMark mark, size_t pos); +enum VisRegister { + /* TODO: temporary */ + VIS_REGISTER_INVALID = REG_LAST, +}; + +void vis_register_set(Vis*, enum VisRegister); +Register *vis_register_get(Vis*, enum VisRegister); + void vis_repeat(Vis*); bool vis_cmd(Vis*, const char *cmdline); |
