aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vis-core.h2
-rw-r--r--vis-registers.c4
-rw-r--r--vis.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/vis-core.h b/vis-core.h
index 51d3ae8..c9a1ffc 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -284,7 +284,7 @@ bool register_slot_put(Vis*, Register*, size_t slot, const char *data, size_t le
bool register_put_range(Vis*, Register*, Text*, Filerange*);
bool register_slot_put_range(Vis*, Register*, size_t slot, Text*, Filerange*);
-size_t register_count(Register*);
+size_t vis_register_count(Vis*, Register*);
bool register_resize(Register*, size_t count);
#endif
diff --git a/vis-registers.c b/vis-registers.c
index f5b5d7b..d5bb10d 100644
--- a/vis-registers.c
+++ b/vis-registers.c
@@ -175,7 +175,9 @@ bool register_put_range(Vis *vis, Register *reg, Text *txt, Filerange *range) {
register_resize(reg, 1);
}
-size_t register_count(Register *reg) {
+size_t vis_register_count(Vis *vis, Register *reg) {
+ if (reg->type == REGISTER_NUMBER)
+ return vis->win ? view_cursors_count(vis->win->view) : 0;
return array_length(&reg->values);
}
diff --git a/vis.c b/vis.c
index d4031b2..4a38903 100644
--- a/vis.c
+++ b/vis.c
@@ -821,7 +821,7 @@ void vis_do(Vis *vis) {
size_t last_reg_slot = reg_slot;
if (!reg)
reg = &vis->registers[file->internal ? VIS_REG_PROMPT : VIS_REG_DEFAULT];
- if (a->op == &vis_operators[VIS_OP_PUT_AFTER] && multiple_cursors && register_count(reg) == 1)
+ if (a->op == &vis_operators[VIS_OP_PUT_AFTER] && multiple_cursors && vis_register_count(vis, reg) == 1)
reg_slot = 0;
for (Cursor *cursor = view_cursors(view), *next; cursor; cursor = next) {