aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-01-14 21:03:35 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-01-14 21:03:35 +0100
commite50173b0663997b507a7029ff5d4bb7908040ac8 (patch)
treef97f966860f933a86ad1a805987dd57c92447fa0
parent0ade88d86e4fdfca01c0ff48fe82e2aa46c6130d (diff)
downloadvis-e50173b0663997b507a7029ff5d4bb7908040ac8.tar.gz
vis-e50173b0663997b507a7029ff5d4bb7908040ac8.tar.xz
vis: move text object definitions to separate file
-rw-r--r--vis-core.h3
-rw-r--r--vis-text-objects.c40
-rw-r--r--vis.c38
-rw-r--r--vis.h1
4 files changed, 44 insertions, 38 deletions
diff --git a/vis-core.h b/vis-core.h
index 2a4d514..069009b 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -170,8 +170,9 @@ extern Mode vis_modes[VIS_MODE_LAST];
extern Movement moves[VIS_MOVE_INVALID];
extern Operator ops[VIS_OP_INVALID];
+extern TextObject vis_textobjects[VIS_TEXTOBJECT_INVALID];
-const char *expandtab(Vis *vis);
+void action_do(Vis *vis, Action *a);
void macro_operator_stop(Vis *vis);
void macro_operator_record(Vis *vis);
diff --git a/vis-text-objects.c b/vis-text-objects.c
new file mode 100644
index 0000000..76c7f1f
--- /dev/null
+++ b/vis-text-objects.c
@@ -0,0 +1,40 @@
+#include "vis-core.h"
+#include "text-objects.h"
+#include "util.h"
+
+void vis_textobject(Vis *vis, enum VisTextObject id) {
+ if (id < LENGTH(vis_textobjects)) {
+ vis->action.textobj = &vis_textobjects[id];
+ action_do(vis, &vis->action);
+ }
+}
+
+TextObject vis_textobjects[] = {
+ [VIS_TEXTOBJECT_INNER_WORD] = { text_object_word },
+ [VIS_TEXTOBJECT_OUTER_WORD] = { text_object_word_outer },
+ [VIS_TEXTOBJECT_INNER_LONGWORD] = { text_object_longword },
+ [VIS_TEXTOBJECT_OUTER_LONGWORD] = { text_object_longword_outer },
+ [VIS_TEXTOBJECT_SENTENCE] = { text_object_sentence },
+ [VIS_TEXTOBJECT_PARAGRAPH] = { text_object_paragraph },
+ [VIS_TEXTOBJECT_OUTER_SQUARE_BRACKET] = { text_object_square_bracket, OUTER },
+ [VIS_TEXTOBJECT_INNER_SQUARE_BRACKET] = { text_object_square_bracket, INNER },
+ [VIS_TEXTOBJECT_OUTER_CURLY_BRACKET] = { text_object_curly_bracket, OUTER },
+ [VIS_TEXTOBJECT_INNER_CURLY_BRACKET] = { text_object_curly_bracket, INNER },
+ [VIS_TEXTOBJECT_OUTER_ANGLE_BRACKET] = { text_object_angle_bracket, OUTER },
+ [VIS_TEXTOBJECT_INNER_ANGLE_BRACKET] = { text_object_angle_bracket, INNER },
+ [VIS_TEXTOBJECT_OUTER_PARANTHESE] = { text_object_paranthese, OUTER },
+ [VIS_TEXTOBJECT_INNER_PARANTHESE] = { text_object_paranthese, INNER },
+ [VIS_TEXTOBJECT_OUTER_QUOTE] = { text_object_quote, OUTER },
+ [VIS_TEXTOBJECT_INNER_QUOTE] = { text_object_quote, INNER },
+ [VIS_TEXTOBJECT_OUTER_SINGLE_QUOTE] = { text_object_single_quote, OUTER },
+ [VIS_TEXTOBJECT_INNER_SINGLE_QUOTE] = { text_object_single_quote, INNER },
+ [VIS_TEXTOBJECT_OUTER_BACKTICK] = { text_object_backtick, OUTER },
+ [VIS_TEXTOBJECT_INNER_BACKTICK] = { text_object_backtick, INNER },
+ [VIS_TEXTOBJECT_OUTER_ENTIRE] = { text_object_entire, },
+ [VIS_TEXTOBJECT_INNER_ENTIRE] = { text_object_entire_inner, },
+ [VIS_TEXTOBJECT_OUTER_FUNCTION] = { text_object_function, },
+ [VIS_TEXTOBJECT_INNER_FUNCTION] = { text_object_function_inner, },
+ [VIS_TEXTOBJECT_OUTER_LINE] = { text_object_line, },
+ [VIS_TEXTOBJECT_INNER_LINE] = { text_object_line_inner, },
+};
+
diff --git a/vis.c b/vis.c
index 788095f..b9055aa 100644
--- a/vis.c
+++ b/vis.c
@@ -558,35 +558,6 @@ void vis_info_hide(Vis *vis) {
vis->ui->info_hide(vis->ui);
}
-static TextObject textobjs[] = {
- [VIS_TEXTOBJECT_INNER_WORD] = { text_object_word },
- [VIS_TEXTOBJECT_OUTER_WORD] = { text_object_word_outer },
- [VIS_TEXTOBJECT_INNER_LONGWORD] = { text_object_longword },
- [VIS_TEXTOBJECT_OUTER_LONGWORD] = { text_object_longword_outer },
- [VIS_TEXTOBJECT_SENTENCE] = { text_object_sentence },
- [VIS_TEXTOBJECT_PARAGRAPH] = { text_object_paragraph },
- [VIS_TEXTOBJECT_OUTER_SQUARE_BRACKET] = { text_object_square_bracket, OUTER },
- [VIS_TEXTOBJECT_INNER_SQUARE_BRACKET] = { text_object_square_bracket, INNER },
- [VIS_TEXTOBJECT_OUTER_CURLY_BRACKET] = { text_object_curly_bracket, OUTER },
- [VIS_TEXTOBJECT_INNER_CURLY_BRACKET] = { text_object_curly_bracket, INNER },
- [VIS_TEXTOBJECT_OUTER_ANGLE_BRACKET] = { text_object_angle_bracket, OUTER },
- [VIS_TEXTOBJECT_INNER_ANGLE_BRACKET] = { text_object_angle_bracket, INNER },
- [VIS_TEXTOBJECT_OUTER_PARANTHESE] = { text_object_paranthese, OUTER },
- [VIS_TEXTOBJECT_INNER_PARANTHESE] = { text_object_paranthese, INNER },
- [VIS_TEXTOBJECT_OUTER_QUOTE] = { text_object_quote, OUTER },
- [VIS_TEXTOBJECT_INNER_QUOTE] = { text_object_quote, INNER },
- [VIS_TEXTOBJECT_OUTER_SINGLE_QUOTE] = { text_object_single_quote, OUTER },
- [VIS_TEXTOBJECT_INNER_SINGLE_QUOTE] = { text_object_single_quote, INNER },
- [VIS_TEXTOBJECT_OUTER_BACKTICK] = { text_object_backtick, OUTER },
- [VIS_TEXTOBJECT_INNER_BACKTICK] = { text_object_backtick, INNER },
- [VIS_TEXTOBJECT_OUTER_ENTIRE] = { text_object_entire, },
- [VIS_TEXTOBJECT_INNER_ENTIRE] = { text_object_entire_inner, },
- [VIS_TEXTOBJECT_OUTER_FUNCTION] = { text_object_function, },
- [VIS_TEXTOBJECT_INNER_FUNCTION] = { text_object_function_inner, },
- [VIS_TEXTOBJECT_OUTER_LINE] = { text_object_line, },
- [VIS_TEXTOBJECT_INNER_LINE] = { text_object_line_inner, },
-};
-
bool vis_action_register(Vis *vis, KeyAction *action) {
if (!vis->actions)
vis->actions = map_new();
@@ -606,7 +577,7 @@ static void window_jumplist_invalidate(Win *win) {
ringbuf_invalidate(win->jumplist);
}
-static void action_do(Vis *vis, Action *a) {
+void action_do(Vis *vis, Action *a) {
Win *win = vis->win;
Text *txt = win->file->text;
View *view = win->view;
@@ -1212,13 +1183,6 @@ err:
return false;
}
-void vis_textobject(Vis *vis, enum VisTextObject textobj) {
- if (textobj < LENGTH(textobjs)) {
- vis->action.textobj = &textobjs[textobj];
- action_do(vis, &vis->action);
- }
-}
-
static Macro *macro_get(Vis *vis, enum VisMacro m) {
if (m == VIS_MACRO_LAST_RECORDED)
return vis->last_recording;
diff --git a/vis.h b/vis.h
index 8905be1..70575e4 100644
--- a/vis.h
+++ b/vis.h
@@ -292,6 +292,7 @@ enum VisTextObject {
VIS_TEXTOBJECT_INNER_FUNCTION,
VIS_TEXTOBJECT_OUTER_LINE,
VIS_TEXTOBJECT_INNER_LINE,
+ VIS_TEXTOBJECT_INVALID,
};
void vis_textobject(Vis*, enum VisTextObject);