aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-03-27 23:59:54 +0200
committerMarc André Tanner <mat@brain-dump.org>2016-03-28 12:25:06 +0200
commita7a05a70c3c51c4fe565598e9508d0505a758636 (patch)
tree10ee468b289cc888789d86b30600f99d126d6c8f /main.c
parent1422354ae85e4d5c812fa0638527499a4eb2d506 (diff)
downloadvis-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.c49
1 files changed, 26 insertions, 23 deletions
diff --git a/main.c b/main.c
index 1e28500..6ed34e2 100644
--- a/main.c
+++ b/main.c
@@ -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;
}