diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-01-14 21:03:35 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-01-14 21:03:35 +0100 |
| commit | e50173b0663997b507a7029ff5d4bb7908040ac8 (patch) | |
| tree | f97f966860f933a86ad1a805987dd57c92447fa0 | |
| parent | 0ade88d86e4fdfca01c0ff48fe82e2aa46c6130d (diff) | |
| download | vis-e50173b0663997b507a7029ff5d4bb7908040ac8.tar.gz vis-e50173b0663997b507a7029ff5d4bb7908040ac8.tar.xz | |
vis: move text object definitions to separate file
| -rw-r--r-- | vis-core.h | 3 | ||||
| -rw-r--r-- | vis-text-objects.c | 40 | ||||
| -rw-r--r-- | vis.c | 38 | ||||
| -rw-r--r-- | vis.h | 1 |
4 files changed, 44 insertions, 38 deletions
@@ -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, }, +}; + @@ -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; @@ -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); |
