aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-10-23 21:02:13 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-10-25 22:46:42 +0100
commit329f41609621f29ac6b58dcc33cd41bf437c02c7 (patch)
tree5867b4f404434bdf13ece8f9e03d024b71729b64 /vis.c
parente7912411ae174015314d28ceced0dc72ae42de69 (diff)
downloadvis-329f41609621f29ac6b58dcc33cd41bf437c02c7.tar.gz
vis-329f41609621f29ac6b58dcc33cd41bf437c02c7.tar.xz
vis: introduce vis_textobject API
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c40
1 files changed, 8 insertions, 32 deletions
diff --git a/vis.c b/vis.c
index 514d0d1..cc2514c 100644
--- a/vis.c
+++ b/vis.c
@@ -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);
+ }
+}