diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-07-10 18:23:47 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-07-10 18:26:05 +0200 |
| commit | f9e2b884c15919757651db8b10c033a344a19e75 (patch) | |
| tree | bdec9e0827c40c17dca1e6c59193ab960292c238 /vis-marks.c | |
| parent | d4bba6e46fa1ab67947508c95a4198dbcf060489 (diff) | |
| download | vis-f9e2b884c15919757651db8b10c033a344a19e75.tar.gz vis-f9e2b884c15919757651db8b10c033a344a19e75.tar.xz | |
vis: let '^ mark point to top of jump list
Diffstat (limited to 'vis-marks.c')
| -rw-r--r-- | vis-marks.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/vis-marks.c b/vis-marks.c index e04f6b0..7543792 100644 --- a/vis-marks.c +++ b/vis-marks.c @@ -49,7 +49,7 @@ void mark_release(Array *arr) { static Array *mark_from(Vis *vis, enum VisMark id) { if (id == VIS_MARK_SELECTION && vis->win) - return &vis->win->saved_selections; + return array_peek(&vis->win->jumplist.prev); File *file = vis->win->file; if (id < LENGTH(file->marks)) return &file->marks[id]; @@ -105,8 +105,11 @@ void vis_mark_set(Vis *vis, enum VisMark id, Array *sel) { } void marklist_init(MarkList *list, size_t max) { + Array mark; + mark_init(&mark); array_init_sized(&list->prev, sizeof(Array)); array_reserve(&list->prev, max); + array_add(&list->prev, &mark); array_init_sized(&list->next, sizeof(Array)); array_reserve(&list->next, max); } @@ -168,14 +171,10 @@ static bool marklist_prev(Win *win, MarkList *list) { if (restore) goto out; - for (;;) { + while (array_length(&list->prev) > 1) { Array *prev = array_pop(&list->prev); - if (!prev) - goto out; array_push(&list->next, prev); prev = array_peek(&list->prev); - if (!prev) - goto out; Array sel = mark_get(win, prev); restore = array_length(&sel) > 0; if (restore) @@ -226,6 +225,6 @@ enum VisMark vis_mark_from(Vis *vis, char mark) { } const MarkDef vis_marks[] = { - [VIS_MARK_DEFAULT] = { '\'', VIS_HELP("Default mark") }, - [VIS_MARK_SELECTION] = { '^', VIS_HELP("Last selections") }, + [VIS_MARK_DEFAULT] = { '\'', VIS_HELP("Default mark") }, + [VIS_MARK_SELECTION] = { '^', VIS_HELP("Last selections") }, }; |
