diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-10-23 21:02:13 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-10-25 22:46:42 +0100 |
| commit | 329f41609621f29ac6b58dcc33cd41bf437c02c7 (patch) | |
| tree | 5867b4f404434bdf13ece8f9e03d024b71729b64 | |
| parent | e7912411ae174015314d28ceced0dc72ae42de69 (diff) | |
| download | vis-329f41609621f29ac6b58dcc33cd41bf437c02c7.tar.gz vis-329f41609621f29ac6b58dcc33cd41bf437c02c7.tar.xz | |
vis: introduce vis_textobject API
| -rw-r--r-- | vis.c | 40 | ||||
| -rw-r--r-- | vis.h | 31 |
2 files changed, 39 insertions, 32 deletions
@@ -166,36 +166,6 @@ static Movement moves[] = { [MOVE_WINDOW_LINE_BOTTOM] = { .view = view_lines_bottom, .type = LINEWISE|JUMP|IDEMPOTENT }, }; -/* these can be passed as int argument to textobj(&(const Arg){ .i = TEXT_OBJ_* }) */ -enum { - TEXT_OBJ_INNER_WORD, - TEXT_OBJ_OUTER_WORD, - TEXT_OBJ_INNER_LONGWORD, - TEXT_OBJ_OUTER_LONGWORD, - TEXT_OBJ_SENTENCE, - TEXT_OBJ_PARAGRAPH, - TEXT_OBJ_OUTER_SQUARE_BRACKET, - TEXT_OBJ_INNER_SQUARE_BRACKET, - TEXT_OBJ_OUTER_CURLY_BRACKET, - TEXT_OBJ_INNER_CURLY_BRACKET, - TEXT_OBJ_OUTER_ANGLE_BRACKET, - TEXT_OBJ_INNER_ANGLE_BRACKET, - TEXT_OBJ_OUTER_PARANTHESE, - TEXT_OBJ_INNER_PARANTHESE, - TEXT_OBJ_OUTER_QUOTE, - TEXT_OBJ_INNER_QUOTE, - TEXT_OBJ_OUTER_SINGLE_QUOTE, - TEXT_OBJ_INNER_SINGLE_QUOTE, - TEXT_OBJ_OUTER_BACKTICK, - TEXT_OBJ_INNER_BACKTICK, - TEXT_OBJ_OUTER_ENTIRE, - TEXT_OBJ_INNER_ENTIRE, - TEXT_OBJ_OUTER_FUNCTION, - TEXT_OBJ_INNER_FUNCTION, - TEXT_OBJ_OUTER_LINE, - TEXT_OBJ_INNER_LINE, -}; - static TextObject textobjs[] = { [TEXT_OBJ_INNER_WORD] = { text_object_word }, [TEXT_OBJ_OUTER_WORD] = { text_object_word_outer }, @@ -947,8 +917,7 @@ static const char *movement(Vis *vis, const char *keys, const Arg *arg) { } static const char *textobj(Vis *vis, const char *keys, const Arg *arg) { - vis->action.textobj = &textobjs[arg->i]; - action_do(vis, &vis->action); + vis_textobject(vis, arg->i); return keys; } @@ -2824,3 +2793,10 @@ out: va_end(ap); } + +void vis_textobject(Vis *vis, enum VisTextObject textobj) { + if (textobj < LENGTH(textobjs)) { + vis->action.textobj = &textobjs[textobj]; + action_do(vis, &vis->action); + } +} @@ -106,6 +106,37 @@ enum VisMotion { void vis_motion(Vis*, enum VisMotion, ...); +enum VisTextObject { + TEXT_OBJ_INNER_WORD, + TEXT_OBJ_OUTER_WORD, + TEXT_OBJ_INNER_LONGWORD, + TEXT_OBJ_OUTER_LONGWORD, + TEXT_OBJ_SENTENCE, + TEXT_OBJ_PARAGRAPH, + TEXT_OBJ_OUTER_SQUARE_BRACKET, + TEXT_OBJ_INNER_SQUARE_BRACKET, + TEXT_OBJ_OUTER_CURLY_BRACKET, + TEXT_OBJ_INNER_CURLY_BRACKET, + TEXT_OBJ_OUTER_ANGLE_BRACKET, + TEXT_OBJ_INNER_ANGLE_BRACKET, + TEXT_OBJ_OUTER_PARANTHESE, + TEXT_OBJ_INNER_PARANTHESE, + TEXT_OBJ_OUTER_QUOTE, + TEXT_OBJ_INNER_QUOTE, + TEXT_OBJ_OUTER_SINGLE_QUOTE, + TEXT_OBJ_INNER_SINGLE_QUOTE, + TEXT_OBJ_OUTER_BACKTICK, + TEXT_OBJ_INNER_BACKTICK, + TEXT_OBJ_OUTER_ENTIRE, + TEXT_OBJ_INNER_ENTIRE, + TEXT_OBJ_OUTER_FUNCTION, + TEXT_OBJ_INNER_FUNCTION, + TEXT_OBJ_OUTER_LINE, + TEXT_OBJ_INNER_LINE, +}; + +void vis_textobject(Vis*, enum VisTextObject); + bool vis_signal_handler(Vis*, int signum, const siginfo_t *siginfo, const void *context); |
