aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.def.h42
-rw-r--r--vis.c12
2 files changed, 13 insertions, 41 deletions
diff --git a/config.def.h b/config.def.h
index d5ddfba..da08641 100644
--- a/config.def.h
+++ b/config.def.h
@@ -20,7 +20,6 @@ enum {
VIS_MODE_INNER_TEXTOBJ,
VIS_MODE_OPERATOR,
VIS_MODE_OPERATOR_OPTION,
- VIS_MODE_REGISTER,
VIS_MODE_NORMAL,
VIS_MODE_VISUAL,
VIS_MODE_VISUAL_LINE,
@@ -217,6 +216,7 @@ static KeyBinding vis_operators[] = {
{ "~" , changecase, { .i = 0 } },
{ "g~" , changecase, { .i = 0 } },
{ "gu" , changecase, { .i = -1 } },
+ { "\"" , reg, { NULL } },
{ /* empty last element, array terminator */ },
};
@@ -240,36 +240,6 @@ static KeyBinding vis_operator_options[] = {
{ /* empty last element, array terminator */ },
};
-static KeyBinding vis_registers[] = { /* {a-zA-Z0-9.%#:-"} */
- { "\"a", reg, { .i = REG_a } },
- { "\"b", reg, { .i = REG_b } },
- { "\"c", reg, { .i = REG_c } },
- { "\"d", reg, { .i = REG_d } },
- { "\"e", reg, { .i = REG_e } },
- { "\"f", reg, { .i = REG_f } },
- { "\"g", reg, { .i = REG_g } },
- { "\"h", reg, { .i = REG_h } },
- { "\"i", reg, { .i = REG_i } },
- { "\"j", reg, { .i = REG_j } },
- { "\"k", reg, { .i = REG_k } },
- { "\"l", reg, { .i = REG_l } },
- { "\"m", reg, { .i = REG_m } },
- { "\"n", reg, { .i = REG_n } },
- { "\"o", reg, { .i = REG_o } },
- { "\"p", reg, { .i = REG_p } },
- { "\"q", reg, { .i = REG_q } },
- { "\"r", reg, { .i = REG_r } },
- { "\"s", reg, { .i = REG_s } },
- { "\"t", reg, { .i = REG_t } },
- { "\"u", reg, { .i = REG_u } },
- { "\"v", reg, { .i = REG_v } },
- { "\"w", reg, { .i = REG_w } },
- { "\"x", reg, { .i = REG_x } },
- { "\"y", reg, { .i = REG_y } },
- { "\"z", reg, { .i = REG_z } },
- { /* empty last element, array terminator */ },
-};
-
static KeyBinding vis_marks[] = {
{ "`a'", mark, { .i = MARK_a } },
{ "`b'", mark, { .i = MARK_b } },
@@ -715,16 +685,10 @@ static Mode vis_modes[] = {
.leave = vis_mode_operator_leave,
.input = vis_mode_operator_input,
},
- [VIS_MODE_REGISTER] = {
- .name = "REGISTER",
- .common_prefix = true,
- .parent = &vis_modes[VIS_MODE_OPERATOR],
- .default_bindings = vis_registers,
- },
[VIS_MODE_MARK_SET] = {
.name = "MARK-SET",
.common_prefix = true,
- .parent = &vis_modes[VIS_MODE_REGISTER],
+ .parent = &vis_modes[VIS_MODE_OPERATOR],
.default_bindings = vis_marks_set,
},
[VIS_MODE_NORMAL] = {
@@ -736,7 +700,7 @@ static Mode vis_modes[] = {
[VIS_MODE_VISUAL] = {
.name = "--VISUAL--",
.isuser = true,
- .parent = &vis_modes[VIS_MODE_REGISTER],
+ .parent = &vis_modes[VIS_MODE_OPERATOR],
.default_bindings = vis_mode_visual,
.enter = vis_mode_visual_enter,
.leave = vis_mode_visual_leave,
diff --git a/vis.c b/vis.c
index ce9cc82..12e6f9f 100644
--- a/vis.c
+++ b/vis.c
@@ -1110,9 +1110,17 @@ static const char *selection_restore(const char *keys, const Arg *arg) {
return keys;
}
+static const char *key2register(const char *keys, Register **reg) {
+ *reg = NULL;
+ if (!keys[0])
+ return NULL;
+ if (keys[0] >= 'a' && keys[0] <= 'z')
+ *reg = &vis->registers[keys[0] - 'a'];
+ return keys+1;
+}
+
static const char *reg(const char *keys, const Arg *arg) {
- vis->action.reg = &vis->registers[arg->i];
- return keys;
+ return key2register(keys, &vis->action.reg);
}
static const char *mark(const char *keys, const Arg *arg) {