aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.c2
-rw-r--r--vis-operators.c2
-rw-r--r--vis.h1
3 files changed, 5 insertions, 0 deletions
diff --git a/main.c b/main.c
index da475e5..ee81e49 100644
--- a/main.c
+++ b/main.c
@@ -1340,6 +1340,8 @@ static const char *key2register(Vis *vis, const char *keys, enum VisRegister *re
*reg = VIS_REG_CLIPBOARD;
else if (keys[0] == '_')
*reg = VIS_REG_BLACKHOLE;
+ else if (keys[0] == '0')
+ *reg = VIS_REG_ZERO;
return keys+1;
}
diff --git a/vis-operators.c b/vis-operators.c
index 7901851..d4fdb21 100644
--- a/vis-operators.c
+++ b/vis-operators.c
@@ -25,6 +25,8 @@ static size_t op_change(Vis *vis, Text *txt, OperatorContext *c) {
static size_t op_yank(Vis *vis, Text *txt, OperatorContext *c) {
c->reg->linewise = c->linewise;
register_put(vis, c->reg, txt, &c->range);
+ if (c->reg == &vis->registers[VIS_REG_DEFAULT])
+ register_put(vis, &vis->registers[VIS_REG_ZERO], txt, &c->range);
return c->pos;
}
diff --git a/vis.h b/vis.h
index eb84695..04277e7 100644
--- a/vis.h
+++ b/vis.h
@@ -350,6 +350,7 @@ enum VisRegister {
VIS_REG_u, VIS_REG_v, VIS_REG_w, VIS_REG_x, VIS_REG_y,
VIS_REG_z,
VIS_REG_DEFAULT, /* used when no other register is specified */
+ VIS_REG_ZERO, /* yank register */
VIS_REG_BLACKHOLE, /* /dev/null register */
VIS_REG_CLIPBOARD, /* system clipboard register */
VIS_REG_PROMPT, /* internal register which shadows DEFAULT in PROMPT mode */