mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
text-objects: add test capture & elixir queries
This commit is contained in:
parent
43027d9104
commit
67f6c85792
@ -20,6 +20,8 @@ # Adding Textobject Queries
|
||||
| `function.around` |
|
||||
| `class.inside` |
|
||||
| `class.around` |
|
||||
| `test.inside` |
|
||||
| `test.around` |
|
||||
| `parameter.inside` |
|
||||
| `comment.inside` |
|
||||
| `comment.around` |
|
||||
|
@ -282,6 +282,8 @@ #### Unimpaired
|
||||
| `[a` | Go to previous argument/parameter (**TS**) | `goto_prev_parameter` |
|
||||
| `]o` | Go to next comment (**TS**) | `goto_next_comment` |
|
||||
| `[o` | Go to previous comment (**TS**) | `goto_prev_comment` |
|
||||
| `]t` | Go to next test (**TS**) | `goto_next_test` |
|
||||
| `]t` | Go to previous test (**TS**) | `goto_prev_test` |
|
||||
| `]p` | Go to next paragraph | `goto_next_paragraph` |
|
||||
| `[p` | Go to previous paragraph | `goto_prev_paragraph` |
|
||||
| `[space` | Add newline above | `add_newline_above` |
|
||||
|
@ -143,6 +143,7 @@ ## Textobjects
|
||||
| `c` | Class |
|
||||
| `a` | Argument/parameter |
|
||||
| `o` | Comment |
|
||||
| `t` | Test |
|
||||
|
||||
> NOTE: `f`, `c`, etc need a tree-sitter grammar active for the current
|
||||
document and a special tree-sitter query file to work properly. [Only
|
||||
|
@ -395,6 +395,8 @@ pub fn doc(&self) -> &str {
|
||||
goto_prev_parameter, "Goto previous parameter",
|
||||
goto_next_comment, "Goto next comment",
|
||||
goto_prev_comment, "Goto previous comment",
|
||||
goto_next_test, "Goto next test",
|
||||
goto_prev_test, "Goto previous test",
|
||||
goto_next_paragraph, "Goto next paragraph",
|
||||
goto_prev_paragraph, "Goto previous paragraph",
|
||||
dap_launch, "Launch debug target",
|
||||
@ -4098,6 +4100,14 @@ fn goto_prev_comment(cx: &mut Context) {
|
||||
goto_ts_object_impl(cx, "comment", Direction::Backward)
|
||||
}
|
||||
|
||||
fn goto_next_test(cx: &mut Context) {
|
||||
goto_ts_object_impl(cx, "test", Direction::Forward)
|
||||
}
|
||||
|
||||
fn goto_prev_test(cx: &mut Context) {
|
||||
goto_ts_object_impl(cx, "test", Direction::Backward)
|
||||
}
|
||||
|
||||
fn select_textobject_around(cx: &mut Context) {
|
||||
select_textobject(cx, textobject::TextObject::Around);
|
||||
}
|
||||
@ -4141,6 +4151,7 @@ fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) {
|
||||
'f' => textobject_treesitter("function", range),
|
||||
'a' => textobject_treesitter("parameter", range),
|
||||
'o' => textobject_treesitter("comment", range),
|
||||
't' => textobject_treesitter("test", range),
|
||||
'p' => textobject::textobject_paragraph(text, range, objtype, count),
|
||||
'm' => textobject::textobject_surround_closest(text, range, objtype, count),
|
||||
// TODO: cancel new ranges if inconsistent surround matches across lines
|
||||
@ -4170,6 +4181,7 @@ fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) {
|
||||
("f", "Function (tree-sitter)"),
|
||||
("a", "Argument/parameter (tree-sitter)"),
|
||||
("o", "Comment (tree-sitter)"),
|
||||
("t", "Test (tree-sitter)"),
|
||||
("m", "Matching delimiter under cursor"),
|
||||
(" ", "... or any character acting as a pair"),
|
||||
];
|
||||
|
@ -104,6 +104,7 @@ pub fn default() -> HashMap<Mode, Keymap> {
|
||||
"c" => goto_prev_class,
|
||||
"a" => goto_prev_parameter,
|
||||
"o" => goto_prev_comment,
|
||||
"t" => goto_prev_test,
|
||||
"p" => goto_prev_paragraph,
|
||||
"space" => add_newline_above,
|
||||
},
|
||||
@ -114,6 +115,7 @@ pub fn default() -> HashMap<Mode, Keymap> {
|
||||
"c" => goto_next_class,
|
||||
"a" => goto_next_parameter,
|
||||
"o" => goto_next_comment,
|
||||
"t" => goto_next_test,
|
||||
"p" => goto_next_paragraph,
|
||||
"space" => add_newline_below,
|
||||
},
|
||||
|
@ -16,7 +16,7 @@
|
||||
(pair
|
||||
value: (_) @function.inside))?)?
|
||||
(do_block (_)* @function.inside)?)
|
||||
(#match? @_keyword "^(def|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp|defp|test|describe|setup)$")) @function.around
|
||||
(#match? @_keyword "^(def|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp|defp)$")) @function.around
|
||||
|
||||
(anonymous_function
|
||||
(stab_clause right: (body) @function.inside)) @function.around
|
||||
@ -25,3 +25,9 @@
|
||||
target: (identifier) @_keyword
|
||||
(do_block (_)* @class.inside))
|
||||
(#match? @_keyword "^(defmodule|defprotocol|defimpl)$")) @class.around
|
||||
|
||||
((call
|
||||
target: (identifier) @_keyword
|
||||
(arguments ((string) . (_)?))
|
||||
(do_block (_)* @test.inside)?)
|
||||
(#match? @_keyword "^(test|describe)$")) @test.around
|
||||
|
Loading…
Reference in New Issue
Block a user