aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-09-15 15:27:31 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-10-05 15:57:13 +0200
commitd9bc41389e754389fadca0e2ef2f1a578368fc99 (patch)
tree55cebde9311eadfc0c41e8a639182123af18e923
parent8a8e8907364455abe57878d081bb2c2c59dfe1c7 (diff)
downloadvis-d9bc41389e754389fadca0e2ef2f1a578368fc99.tar.gz
vis-d9bc41389e754389fadca0e2ef2f1a578368fc99.tar.xz
vis: convert insertion of register from insert mode
-rw-r--r--config.def.h40
-rw-r--r--vis.c11
2 files changed, 9 insertions, 42 deletions
diff --git a/config.def.h b/config.def.h
index da08641..6532858 100644
--- a/config.def.h
+++ b/config.def.h
@@ -25,7 +25,6 @@ enum {
VIS_MODE_VISUAL_LINE,
VIS_MODE_READLINE,
VIS_MODE_PROMPT,
- VIS_MODE_INSERT_REGISTER,
VIS_MODE_INSERT,
VIS_MODE_REPLACE,
VIS_MODE_LAST,
@@ -503,36 +502,6 @@ static void vis_mode_prompt_leave(Mode *new) {
editor_prompt_hide(vis);
}
-static KeyBinding vis_mode_insert_register[] = {
- { "<C-r>a", insert_register, { .i = REG_a } },
- { "<C-r>b", insert_register, { .i = REG_b } },
- { "<C-r>c", insert_register, { .i = REG_c } },
- { "<C-r>d", insert_register, { .i = REG_d } },
- { "<C-r>e", insert_register, { .i = REG_e } },
- { "<C-r>f", insert_register, { .i = REG_f } },
- { "<C-r>g", insert_register, { .i = REG_g } },
- { "<C-r>h", insert_register, { .i = REG_h } },
- { "<C-r>i", insert_register, { .i = REG_i } },
- { "<C-r>j", insert_register, { .i = REG_j } },
- { "<C-r>k", insert_register, { .i = REG_k } },
- { "<C-r>l", insert_register, { .i = REG_l } },
- { "<C-r>m", insert_register, { .i = REG_m } },
- { "<C-r>n", insert_register, { .i = REG_n } },
- { "<C-r>o", insert_register, { .i = REG_o } },
- { "<C-r>p", insert_register, { .i = REG_p } },
- { "<C-r>q", insert_register, { .i = REG_q } },
- { "<C-r>r", insert_register, { .i = REG_r } },
- { "<C-r>s", insert_register, { .i = REG_s } },
- { "<C-r>t", insert_register, { .i = REG_t } },
- { "<C-r>u", insert_register, { .i = REG_u } },
- { "<C-r>v", insert_register, { .i = REG_v } },
- { "<C-r>w", insert_register, { .i = REG_w } },
- { "<C-r>x", insert_register, { .i = REG_x } },
- { "<C-r>y", insert_register, { .i = REG_y } },
- { "<C-r>z", insert_register, { .i = REG_z } },
- { /* empty last element, array terminator */ },
-};
-
static KeyBinding vis_mode_insert[] = {
{ "<Escape>", switchmode, { .i = VIS_MODE_NORMAL } },
{ "<C-l>", switchmode, { .i = VIS_MODE_NORMAL } },
@@ -549,6 +518,7 @@ static KeyBinding vis_mode_insert[] = {
{ "<C-x><C-y>", wslide, { .i = +1 } },
{ "<Tab>", insert_tab, { NULL } },
{ "<End>", movement, { .i = MOVE_LINE_END } },
+ { "<C-r>", insert_register, { NULL } },
{ /* empty last element, array terminator */ },
};
@@ -729,16 +699,10 @@ static Mode vis_modes[] = {
.enter = vis_mode_prompt_enter,
.leave = vis_mode_prompt_leave,
},
- [VIS_MODE_INSERT_REGISTER] = {
- .name = "INSERT-REGISTER",
- .common_prefix = true,
- .parent = &vis_modes[VIS_MODE_READLINE],
- .default_bindings = vis_mode_insert_register,
- },
[VIS_MODE_INSERT] = {
.name = "--INSERT--",
.isuser = true,
- .parent = &vis_modes[VIS_MODE_INSERT_REGISTER],
+ .parent = &vis_modes[VIS_MODE_READLINE],
.default_bindings = vis_mode_insert,
.leave = vis_mode_insert_leave,
.input = vis_mode_insert_input,
diff --git a/vis.c b/vis.c
index 12e6f9f..6228de0 100644
--- a/vis.c
+++ b/vis.c
@@ -1207,10 +1207,13 @@ static const char *delete(const char *keys, const Arg *arg) {
}
static const char *insert_register(const char *keys, const Arg *arg) {
- Register *reg = &vis->registers[arg->i];
- int pos = view_cursor_get(vis->win->view);
- editor_insert(vis, pos, reg->data, reg->len);
- view_cursor_to(vis->win->view, pos + reg->len);
+ Register *reg;
+ keys = key2register(keys, &reg);
+ if (reg) {
+ int pos = view_cursor_get(vis->win->view);
+ editor_insert(vis, pos, reg->data, reg->len);
+ view_cursor_to(vis->win->view, pos + reg->len);
+ }
return keys;
}