diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-03-27 23:59:54 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-03-28 12:25:06 +0200 |
| commit | a7a05a70c3c51c4fe565598e9508d0505a758636 (patch) | |
| tree | 10ee468b289cc888789d86b30600f99d126d6c8f /main.c | |
| parent | 1422354ae85e4d5c812fa0638527499a4eb2d506 (diff) | |
| download | vis-a7a05a70c3c51c4fe565598e9508d0505a758636.tar.gz vis-a7a05a70c3c51c4fe565598e9508d0505a758636.tar.xz | |
vis: support count for {Meta-Ctrl,Ctrl}-{j,k}
Create count new cursors on the lines above/below.
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 49 |
1 files changed, 26 insertions, 23 deletions
@@ -1202,30 +1202,33 @@ static const char *repeat(Vis *vis, const char *keys, const Arg *arg) { static const char *cursors_new(Vis *vis, const char *keys, const Arg *arg) { View *view = vis_view(vis); - Cursor *cursor; - switch (arg->i) { - case -1: - case +1: - cursor = view_cursors_primary_get(view); - break; - case INT_MIN: - cursor = view_cursors(view); - break; - case INT_MAX: - for (Cursor *c = view_cursors(view); c; c = view_cursors_next(c)) - cursor = c; - break; - default: - return keys; + for (int count = vis_count_get_default(vis, 1); count > 0; count--) { + Cursor *cursor; + switch (arg->i) { + case -1: + case +1: + cursor = view_cursors_primary_get(view); + break; + case INT_MIN: + cursor = view_cursors(view); + break; + case INT_MAX: + for (Cursor *c = view_cursors(view); c; c = view_cursors_next(c)) + cursor = c; + break; + default: + return keys; + } + size_t oldpos = view_cursors_pos(cursor); + if (arg->i > 0) + view_line_down(cursor); + else if (arg->i < 0) + view_line_up(cursor); + size_t newpos = view_cursors_pos(cursor); + view_cursors_to(cursor, oldpos); + view_cursors_new(view, newpos); } - size_t oldpos = view_cursors_pos(cursor); - if (arg->i > 0) - view_line_down(cursor); - else if (arg->i < 0) - view_line_up(cursor); - size_t newpos = view_cursors_pos(cursor); - view_cursors_to(cursor, oldpos); - view_cursors_new(view, newpos); + vis_count_set(vis, VIS_COUNT_UNKNOWN); return keys; } |
