aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-09-09 12:44:44 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-09-09 12:44:44 +0200
commit1e3f7a23e009d431fa8e3771e9ee411c2d142359 (patch)
treed41da76f3c52782aa24d3e2b40142023d3f6bd85
parent31cb0b429271a96107bbec67a886da3125000b90 (diff)
downloadvis-1e3f7a23e009d431fa8e3771e9ee411c2d142359.tar.gz
vis-1e3f7a23e009d431fa8e3771e9ee411c2d142359.tar.xz
Separate different types of text objects
These now have common prefixes which means the whole block can be skipped over if it doesn't match.
-rw-r--r--config.def.h80
1 files changed, 46 insertions, 34 deletions
diff --git a/config.def.h b/config.def.h
index 781bf48..1fa2bde 100644
--- a/config.def.h
+++ b/config.def.h
@@ -24,6 +24,7 @@ enum {
VIS_MODE_MARK_SET,
VIS_MODE_MOVE,
VIS_MODE_TEXTOBJ,
+ VIS_MODE_INNER_TEXTOBJ,
VIS_MODE_OPERATOR,
VIS_MODE_OPERATOR_OPTION,
VIS_MODE_REGISTER,
@@ -601,40 +602,44 @@ static KeyBinding vis_movements[] = {
{ /* empty last element, array terminator */ },
};
-// TODO: factor out prefix [ia] into spearate mode which sets a flag
static KeyBinding vis_textobjs[] = {
- { { NONE('a'), NONE('w') }, textobj, { .i = TEXT_OBJ_WORD } },
- { { NONE('i'), NONE('w') }, textobj, { .i = TEXT_OBJ_WORD } },
- { { NONE('a'), NONE('s') }, textobj, { .i = TEXT_OBJ_SENTENCE } },
- { { NONE('i'), NONE('s') }, textobj, { .i = TEXT_OBJ_SENTENCE } },
- { { NONE('a'), NONE('p') }, textobj, { .i = TEXT_OBJ_PARAGRAPH } },
- { { NONE('i'), NONE('p') }, textobj, { .i = TEXT_OBJ_PARAGRAPH } },
- { { NONE('a'), NONE('[') }, textobj, { .i = TEXT_OBJ_OUTER_SQUARE_BRACKET } },
- { { NONE('a'), NONE(']') }, textobj, { .i = TEXT_OBJ_OUTER_SQUARE_BRACKET } },
- { { NONE('i'), NONE('[') }, textobj, { .i = TEXT_OBJ_INNER_SQUARE_BRACKET } },
- { { NONE('i'), NONE(']') }, textobj, { .i = TEXT_OBJ_INNER_SQUARE_BRACKET } },
- { { NONE('a'), NONE('(') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
- { { NONE('a'), NONE(')') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
- { { NONE('a'), NONE('b') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
- { { NONE('i'), NONE('(') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
- { { NONE('i'), NONE(')') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
- { { NONE('i'), NONE('b') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
- { { NONE('a'), NONE('<') }, textobj, { .i = TEXT_OBJ_OUTER_ANGLE_BRACKET } },
- { { NONE('a'), NONE('>') }, textobj, { .i = TEXT_OBJ_OUTER_ANGLE_BRACKET } },
- { { NONE('i'), NONE('<') }, textobj, { .i = TEXT_OBJ_INNER_ANGLE_BRACKET } },
- { { NONE('i'), NONE('>') }, textobj, { .i = TEXT_OBJ_INNER_ANGLE_BRACKET } },
- { { NONE('a'), NONE('{') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
- { { NONE('a'), NONE('}') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
- { { NONE('a'), NONE('B') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
- { { NONE('i'), NONE('{') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
- { { NONE('i'), NONE('}') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
- { { NONE('i'), NONE('B') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
- { { NONE('a'), NONE('"') }, textobj, { .i = TEXT_OBJ_OUTER_QUOTE } },
- { { NONE('i'), NONE('"') }, textobj, { .i = TEXT_OBJ_INNER_QUOTE } },
- { { NONE('a'), NONE('\'') }, textobj, { .i = TEXT_OBJ_OUTER_SINGLE_QUOTE } },
- { { NONE('i'), NONE('\'') }, textobj, { .i = TEXT_OBJ_INNER_SINGLE_QUOTE } },
- { { NONE('a'), NONE('`') }, textobj, { .i = TEXT_OBJ_OUTER_BACKTICK } },
- { { NONE('i'), NONE('`') }, textobj, { .i = TEXT_OBJ_INNER_BACKTICK } },
+ { { NONE('a'), NONE('w') }, textobj, { .i = TEXT_OBJ_WORD } },
+ { { NONE('a'), NONE('s') }, textobj, { .i = TEXT_OBJ_SENTENCE } },
+ { { NONE('a'), NONE('p') }, textobj, { .i = TEXT_OBJ_PARAGRAPH } },
+ { { NONE('a'), NONE('[') }, textobj, { .i = TEXT_OBJ_OUTER_SQUARE_BRACKET } },
+ { { NONE('a'), NONE(']') }, textobj, { .i = TEXT_OBJ_OUTER_SQUARE_BRACKET } },
+ { { NONE('a'), NONE('(') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
+ { { NONE('a'), NONE(')') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
+ { { NONE('a'), NONE('b') }, textobj, { .i = TEXT_OBJ_OUTER_PARANTHESE } },
+ { { NONE('a'), NONE('<') }, textobj, { .i = TEXT_OBJ_OUTER_ANGLE_BRACKET } },
+ { { NONE('a'), NONE('>') }, textobj, { .i = TEXT_OBJ_OUTER_ANGLE_BRACKET } },
+ { { NONE('a'), NONE('{') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
+ { { NONE('a'), NONE('}') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
+ { { NONE('a'), NONE('B') }, textobj, { .i = TEXT_OBJ_OUTER_CURLY_BRACKET } },
+ { { NONE('a'), NONE('"') }, textobj, { .i = TEXT_OBJ_OUTER_QUOTE } },
+ { { NONE('a'), NONE('\'') }, textobj, { .i = TEXT_OBJ_OUTER_SINGLE_QUOTE } },
+ { { NONE('a'), NONE('`') }, textobj, { .i = TEXT_OBJ_OUTER_BACKTICK } },
+ { /* empty last element, array terminator */ },
+};
+
+static KeyBinding vis_inner_textobjs[] = {
+ { { NONE('i'), NONE('w') }, textobj, { .i = TEXT_OBJ_WORD } },
+ { { NONE('i'), NONE('s') }, textobj, { .i = TEXT_OBJ_SENTENCE } },
+ { { NONE('i'), NONE('p') }, textobj, { .i = TEXT_OBJ_PARAGRAPH } },
+ { { NONE('i'), NONE('[') }, textobj, { .i = TEXT_OBJ_INNER_SQUARE_BRACKET } },
+ { { NONE('i'), NONE(']') }, textobj, { .i = TEXT_OBJ_INNER_SQUARE_BRACKET } },
+ { { NONE('i'), NONE('(') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
+ { { NONE('i'), NONE(')') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
+ { { NONE('i'), NONE('b') }, textobj, { .i = TEXT_OBJ_INNER_PARANTHESE } },
+ { { NONE('i'), NONE('<') }, textobj, { .i = TEXT_OBJ_INNER_ANGLE_BRACKET } },
+ { { NONE('i'), NONE('>') }, textobj, { .i = TEXT_OBJ_INNER_ANGLE_BRACKET } },
+ { { NONE('i'), NONE('{') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
+ { { NONE('i'), NONE('}') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
+ { { NONE('i'), NONE('B') }, textobj, { .i = TEXT_OBJ_INNER_CURLY_BRACKET } },
+ { { NONE('i'), NONE('"') }, textobj, { .i = TEXT_OBJ_INNER_QUOTE } },
+ { { NONE('i'), NONE('\'') }, textobj, { .i = TEXT_OBJ_INNER_SINGLE_QUOTE } },
+ { { NONE('i'), NONE('`') }, textobj, { .i = TEXT_OBJ_INNER_BACKTICK } },
+ { /* empty last element, array terminator */ },
};
static KeyBinding vis_operators[] = {
@@ -932,9 +937,16 @@ static Mode vis_modes[] = {
.parent = &vis_modes[VIS_MODE_MARK_LINE],
.bindings = vis_movements,
},
+ [VIS_MODE_INNER_TEXTOBJ] = {
+ .name = "INNER-TEXTOBJ",
+ .common_prefix = true,
+ .parent = &vis_modes[VIS_MODE_MOVE],
+ .bindings = vis_inner_textobjs,
+ },
[VIS_MODE_TEXTOBJ] = {
.name = "TEXTOBJ",
- .parent = &vis_modes[VIS_MODE_MOVE],
+ .common_prefix = true,
+ .parent = &vis_modes[VIS_MODE_INNER_TEXTOBJ],
.bindings = vis_textobjs,
},
[VIS_MODE_OPERATOR_OPTION] = {