diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-07-10 17:27:04 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-07-10 18:26:05 +0200 |
| commit | d4bba6e46fa1ab67947508c95a4198dbcf060489 (patch) | |
| tree | 070f4d37fe37433ce68bf7aa77ba23bc475563c5 /main.c | |
| parent | 6e0532af78294c76d0e0a187a40d330518bab0a8 (diff) | |
| download | vis-d4bba6e46fa1ab67947508c95a4198dbcf060489.tar.gz vis-d4bba6e46fa1ab67947508c95a4198dbcf060489.tar.xz | |
vis: implement jump list in terms of marks
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -145,6 +145,8 @@ static const char *window(Vis*, const char *keys, const Arg *arg); static const char *unicode_info(Vis*, const char *keys, const Arg *arg); /* either go to count % of ile or to matching item */ static const char *percent(Vis*, const char *keys, const Arg *arg); +/* navigate jumplist next (arg->i > 0), prev (arg->i < 0), save (arg->i = 0) */ +static const char *jumplist(Vis*, const char *keys, const Arg *arg); enum { VIS_ACTION_EDITOR_SUSPEND, @@ -212,6 +214,7 @@ enum { VIS_ACTION_DELETE_WORD_PREV, VIS_ACTION_JUMPLIST_PREV, VIS_ACTION_JUMPLIST_NEXT, + VIS_ACTION_JUMPLIST_SAVE, VIS_ACTION_CHANGELIST_PREV, VIS_ACTION_CHANGELIST_NEXT, VIS_ACTION_UNDO, @@ -654,12 +657,17 @@ static const KeyAction vis_action[] = { [VIS_ACTION_JUMPLIST_PREV] = { "vis-jumplist-prev", VIS_HELP("Go to older cursor position in jump list") - movement, { .i = VIS_MOVE_JUMPLIST_PREV } + jumplist, { .i = -1 } }, [VIS_ACTION_JUMPLIST_NEXT] = { "vis-jumplist-next", VIS_HELP("Go to newer cursor position in jump list") - movement, { .i = VIS_MOVE_JUMPLIST_NEXT } + jumplist, { .i = +1 } + }, + [VIS_ACTION_JUMPLIST_SAVE] = { + "vis-jumplist-save", + VIS_HELP("Save current selections in jump list") + jumplist, { .i = 0 } }, [VIS_ACTION_CHANGELIST_PREV] = { "vis-changelist-prev", @@ -2308,6 +2316,16 @@ static const char *percent(Vis *vis, const char *keys, const Arg *arg) { return keys; } +static const char *jumplist(Vis *vis, const char *keys, const Arg *arg) { + if (arg->i < 0) + vis_jumplist_prev(vis); + else if (arg->i > 0) + vis_jumplist_next(vis); + else + vis_jumplist_save(vis); + return keys; +} + static Vis *vis; static void signal_handler(int signum, siginfo_t *siginfo, void *context) { |
