diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-04-23 18:16:58 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-04-23 18:16:58 +0200 |
| commit | 90184397cba235b212c0e230db0dbb6dfc8d0aba (patch) | |
| tree | 04390057e9bbc456ed85bd3b47d7713c8de71952 | |
| parent | 75ab2ed57732cb4f034c6a961e7561a91a8a6160 (diff) | |
| download | vis-90184397cba235b212c0e230db0dbb6dfc8d0aba.tar.gz vis-90184397cba235b212c0e230db0dbb6dfc8d0aba.tar.xz | |
vis: fix # register count
Previously the # register was always reported as containing only
one entry. This wrongly caused the first value to be put at all
locations.
Fix #544
| -rw-r--r-- | vis-core.h | 2 | ||||
| -rw-r--r-- | vis-registers.c | 4 | ||||
| -rw-r--r-- | vis.c | 2 |
3 files changed, 5 insertions, 3 deletions
@@ -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(®->values); } @@ -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) { |
