diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-11-27 23:25:49 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-11-28 11:53:04 +0100 |
| commit | 970901d37cccb365e67be018414b193fede8ca40 (patch) | |
| tree | fe3688716e6ea6164614d1b0c25b1001796323cb | |
| parent | 6f01f6891f6654cf1f38907960cd9b96a8bb64d8 (diff) | |
| download | vis-970901d37cccb365e67be018414b193fede8ca40.tar.gz vis-970901d37cccb365e67be018414b193fede8ca40.tar.xz | |
vis: move mark description into core code
| -rw-r--r-- | main.c | 25 | ||||
| -rw-r--r-- | vis.c | 10 | ||||
| -rw-r--r-- | vis.h | 1 |
3 files changed, 17 insertions, 19 deletions
@@ -1755,31 +1755,18 @@ static const char *reg(Vis *vis, const char *keys, const Arg *arg) { return keys; } -static const char *key2mark(Vis *vis, const char *keys, int *mark) { - *mark = VIS_MARK_INVALID; +static const char *mark_set(Vis *vis, const char *keys, const Arg *arg) { if (!keys[0]) return NULL; - if (keys[0] >= 'a' && keys[0] <= 'z') - *mark = keys[0] - 'a'; - else if (keys[0] == '<') - *mark = VIS_MARK_SELECTION_START; - else if (keys[0] == '>') - *mark = VIS_MARK_SELECTION_END; + vis_mark_set(vis, vis_mark_from(vis, keys[0]), view_cursor_get(vis_view(vis))); return keys+1; } -static const char *mark_set(Vis *vis, const char *keys, const Arg *arg) { - int mark; - keys = key2mark(vis, keys, &mark); - vis_mark_set(vis, mark, view_cursor_get(vis_view(vis))); - return keys; -} - static const char *mark_motion(Vis *vis, const char *keys, const Arg *arg) { - int mark; - keys = key2mark(vis, keys, &mark); - vis_motion(vis, arg->i, mark); - return keys; + if (!keys[0]) + return NULL; + vis_motion(vis, arg->i, vis_mark_from(vis, keys[0])); + return keys+1; } static const char *undo(Vis *vis, const char *keys, const Arg *arg) { @@ -1199,6 +1199,16 @@ void vis_repeat(Vis *vis) { vis_cancel(vis); } +enum VisMark vis_mark_from(Vis *vis, char mark) { + if (mark >= 'a' && mark <= 'z') + return VIS_MARK_a + mark - 'a'; + else if (mark == '<') + return VIS_MARK_SELECTION_START; + else if (mark == '>') + return VIS_MARK_SELECTION_END; + return VIS_MARK_INVALID; +} + void vis_mark_set(Vis *vis, enum VisMark mark, size_t pos) { File *file = vis->win->file; if (mark < LENGTH(file->marks)) @@ -381,6 +381,7 @@ enum VisMark { VIS_MARK_INVALID, /* has to be the last enum member */ }; +enum VisMark vis_mark_from(Vis*, char mark); void vis_mark_set(Vis*, enum VisMark mark, size_t pos); enum VisRegister { |
