Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--book/src/generated/lang-support.md6
-rw-r--r--book/src/guides/textobject.md2
-rw-r--r--helix-term/src/commands.rs12
-rw-r--r--helix-term/src/keymap/default.rs2
-rw-r--r--runtime/queries/_typescript/textobjects.scm6
-rw-r--r--runtime/queries/bash/textobjects.scm3
-rw-r--r--runtime/queries/c/textobjects.scm6
-rw-r--r--runtime/queries/ecma/textobjects.scm9
-rw-r--r--runtime/queries/graphql/textobjects.scm23
-rw-r--r--runtime/queries/java/textobjects.scm6
-rw-r--r--runtime/queries/json/textobjects.scm5
-rw-r--r--runtime/queries/lua/textobjects.scm3
-rw-r--r--runtime/queries/php/textobjects.scm12
-rw-r--r--runtime/queries/python/textobjects.scm12
-rw-r--r--runtime/queries/ruby/textobjects.scm12
-rw-r--r--runtime/queries/rust/textobjects.scm24
-rw-r--r--runtime/queries/toml/textobjects.scm5
17 files changed, 145 insertions, 3 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index a43c0b70..6bbea10a 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -69,7 +69,7 @@
| gomod | ✓ | | | `gopls` |
| gotmpl | ✓ | | | `gopls` |
| gowork | ✓ | | | `gopls` |
-| graphql | ✓ | | | `graphql-lsp` |
+| graphql | ✓ | ✓ | | `graphql-lsp` |
| groovy | ✓ | | | |
| hare | ✓ | | | |
| haskell | ✓ | ✓ | | `haskell-language-server-wrapper` |
@@ -91,7 +91,7 @@
| javascript | ✓ | ✓ | ✓ | `typescript-language-server` |
| jinja | ✓ | | | |
| jsdoc | ✓ | | | |
-| json | ✓ | | ✓ | `vscode-json-language-server` |
+| json | ✓ | ✓ | ✓ | `vscode-json-language-server` |
| json5 | ✓ | | | |
| jsonc | ✓ | | ✓ | `vscode-json-language-server` |
| jsonnet | ✓ | | | `jsonnet-language-server` |
@@ -188,7 +188,7 @@
| templ | ✓ | | | `templ` |
| tfvars | ✓ | | ✓ | `terraform-ls` |
| todotxt | ✓ | | | |
-| toml | ✓ | | | `taplo` |
+| toml | ✓ | ✓ | | `taplo` |
| tsq | ✓ | | | |
| tsx | ✓ | ✓ | ✓ | `typescript-language-server` |
| twig | ✓ | | | |
diff --git a/book/src/guides/textobject.md b/book/src/guides/textobject.md
index b83c067e..a31baef9 100644
--- a/book/src/guides/textobject.md
+++ b/book/src/guides/textobject.md
@@ -25,6 +25,8 @@ The following [captures][tree-sitter-captures] are recognized:
| `parameter.inside` |
| `comment.inside` |
| `comment.around` |
+| `entry.inside` |
+| `entry.around` |
[Example query files][textobject-examples] can be found in the helix GitHub repository.
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index d545480b..d927d3f4 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -475,6 +475,8 @@ impl MappableCommand {
goto_prev_comment, "Goto previous comment",
goto_next_test, "Goto next test",
goto_prev_test, "Goto previous test",
+ goto_next_entry, "Goto next pairing",
+ goto_prev_entry, "Goto previous pairing",
goto_next_paragraph, "Goto next paragraph",
goto_prev_paragraph, "Goto previous paragraph",
dap_launch, "Launch debug target",
@@ -5167,6 +5169,14 @@ fn goto_prev_test(cx: &mut Context) {
goto_ts_object_impl(cx, "test", Direction::Backward)
}
+fn goto_next_entry(cx: &mut Context) {
+ goto_ts_object_impl(cx, "entry", Direction::Forward)
+}
+
+fn goto_prev_entry(cx: &mut Context) {
+ goto_ts_object_impl(cx, "entry", Direction::Backward)
+}
+
fn select_textobject_around(cx: &mut Context) {
select_textobject(cx, textobject::TextObject::Around);
}
@@ -5231,6 +5241,7 @@ fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) {
'a' => textobject_treesitter("parameter", range),
'c' => textobject_treesitter("comment", range),
'T' => textobject_treesitter("test", range),
+ 'e' => textobject_treesitter("entry", range),
'p' => textobject::textobject_paragraph(text, range, objtype, count),
'm' => textobject::textobject_pair_surround_closest(
text, range, objtype, count,
@@ -5263,6 +5274,7 @@ fn select_textobject(cx: &mut Context, objtype: textobject::TextObject) {
("a", "Argument/parameter (tree-sitter)"),
("c", "Comment (tree-sitter)"),
("T", "Test (tree-sitter)"),
+ ("e", "Data structure entry (tree-sitter)"),
("m", "Closest surrounding pair"),
(" ", "... or any character acting as a pair"),
];
diff --git a/helix-term/src/keymap/default.rs b/helix-term/src/keymap/default.rs
index ca5a21d2..ffd076ad 100644
--- a/helix-term/src/keymap/default.rs
+++ b/helix-term/src/keymap/default.rs
@@ -114,6 +114,7 @@ pub fn default() -> HashMap<Mode, KeyTrie> {
"t" => goto_prev_class,
"a" => goto_prev_parameter,
"c" => goto_prev_comment,
+ "e" => goto_prev_entry,
"T" => goto_prev_test,
"p" => goto_prev_paragraph,
"space" => add_newline_above,
@@ -127,6 +128,7 @@ pub fn default() -> HashMap<Mode, KeyTrie> {
"t" => goto_next_class,
"a" => goto_next_parameter,
"c" => goto_next_comment,
+ "e" => goto_next_entry,
"T" => goto_next_test,
"p" => goto_next_paragraph,
"space" => add_newline_below,
diff --git a/runtime/queries/_typescript/textobjects.scm b/runtime/queries/_typescript/textobjects.scm
index c248aead..09198519 100644
--- a/runtime/queries/_typescript/textobjects.scm
+++ b/runtime/queries/_typescript/textobjects.scm
@@ -4,3 +4,9 @@
(type_alias_declaration
value: (_) @class.inside)
] @class.around
+
+(enum_body
+ (_) @entry.around)
+
+(enum_assignment (_) @entry.inside)
+
diff --git a/runtime/queries/bash/textobjects.scm b/runtime/queries/bash/textobjects.scm
index 59983b30..09536a6b 100644
--- a/runtime/queries/bash/textobjects.scm
+++ b/runtime/queries/bash/textobjects.scm
@@ -7,3 +7,6 @@
(comment) @comment.inside
(comment)+ @comment.around
+
+(array
+ (_) @entry.around)
diff --git a/runtime/queries/c/textobjects.scm b/runtime/queries/c/textobjects.scm
index 2a3da66f..63ec4a56 100644
--- a/runtime/queries/c/textobjects.scm
+++ b/runtime/queries/c/textobjects.scm
@@ -19,3 +19,9 @@
(comment) @comment.inside
(comment)+ @comment.around
+
+(enumerator
+ (_) @entry.inside) @entry.around
+
+(initializer_list
+ (_) @entry.around)
diff --git a/runtime/queries/ecma/textobjects.scm b/runtime/queries/ecma/textobjects.scm
index c80dc81b..a19eb25b 100644
--- a/runtime/queries/ecma/textobjects.scm
+++ b/runtime/queries/ecma/textobjects.scm
@@ -34,3 +34,12 @@
(comment) @comment.inside
(comment)+ @comment.around
+
+(array
+ (_) @entry.around)
+
+(pair
+ (_) @entry.inside) @entry.around
+
+(pair_pattern
+ (_) @entry.inside) @entry.around
diff --git a/runtime/queries/graphql/textobjects.scm b/runtime/queries/graphql/textobjects.scm
new file mode 100644
index 00000000..b6035367
--- /dev/null
+++ b/runtime/queries/graphql/textobjects.scm
@@ -0,0 +1,23 @@
+(type_definition) @class.around
+
+(executable_definition) @function.around
+
+(arguments_definition
+ (input_value_definition) @parameter.inside @parameter.movement)
+
+(arguments
+ (argument) @parameter.inside @parameter.movement)
+
+(selection
+ [(field) (fragment_spread)] @entry.around)
+
+(selection
+ (field (selection_set) @entry.inside))
+
+(field_definition
+ (_) @entry.inside) @entry.around
+
+(input_fields_definition
+ (input_value_definition ) @entry.around)
+
+(enum_value) @entry.around
diff --git a/runtime/queries/java/textobjects.scm b/runtime/queries/java/textobjects.scm
index b0e73a0a..1fe0726a 100644
--- a/runtime/queries/java/textobjects.scm
+++ b/runtime/queries/java/textobjects.scm
@@ -36,3 +36,9 @@
(line_comment)+ @comment.around
(block_comment) @comment.around
+
+(array_initializer
+ (_) @entry.around)
+
+(enum_body
+ (enum_constant) @entry.around)
diff --git a/runtime/queries/json/textobjects.scm b/runtime/queries/json/textobjects.scm
new file mode 100644
index 00000000..a8fd57c9
--- /dev/null
+++ b/runtime/queries/json/textobjects.scm
@@ -0,0 +1,5 @@
+(pair
+ (_) @entry.inside) @entry.around
+
+(array
+ (_) @entry.around)
diff --git a/runtime/queries/lua/textobjects.scm b/runtime/queries/lua/textobjects.scm
index 6fb2000d..305c3ae7 100644
--- a/runtime/queries/lua/textobjects.scm
+++ b/runtime/queries/lua/textobjects.scm
@@ -13,3 +13,6 @@
(comment) @comment.inside
(comment)+ @comment.around
+
+(table_constructor
+ (field (_) @entry.inside) @entry.around)
diff --git a/runtime/queries/php/textobjects.scm b/runtime/queries/php/textobjects.scm
index e35eebd7..e721b864 100644
--- a/runtime/queries/php/textobjects.scm
+++ b/runtime/queries/php/textobjects.scm
@@ -38,3 +38,15 @@
(comment) @comment.inside
(comment)+ @comment.around
+
+(array_creation_expression
+ (array_element_initializer
+ (_) @entry.inside
+ ) @entry.around @entry.movement)
+
+(list_literal
+ (_) @entry.inside @entry.around @entry.movement)
+
+[
+ (enum_case)
+] @entry.around @entry.movement
diff --git a/runtime/queries/python/textobjects.scm b/runtime/queries/python/textobjects.scm
index 966e4744..2b9556fc 100644
--- a/runtime/queries/python/textobjects.scm
+++ b/runtime/queries/python/textobjects.scm
@@ -21,3 +21,15 @@
name: (identifier) @_name
body: (block)? @test.inside) @test.around
(#match? @_name "^test_"))
+
+(list
+ (_) @entry.around)
+
+(tuple
+ (_) @entry.around)
+
+(set
+ (_) @entry.around)
+
+(pair
+ (_) @entry.inside) @entry.around
diff --git a/runtime/queries/ruby/textobjects.scm b/runtime/queries/ruby/textobjects.scm
index 2d48fa6f..123c5567 100644
--- a/runtime/queries/ruby/textobjects.scm
+++ b/runtime/queries/ruby/textobjects.scm
@@ -42,3 +42,15 @@
; Comments
(comment) @comment.inside
(comment)+ @comment.around
+
+(pair
+ (_) @entry.inside) @entry.around
+
+(array
+ (_) @entry.around)
+
+(string_array
+ (_) @entry.around)
+
+(symbol_array
+ (_) @entry.around)
diff --git a/runtime/queries/rust/textobjects.scm b/runtime/queries/rust/textobjects.scm
index df26331d..de517d36 100644
--- a/runtime/queries/rust/textobjects.scm
+++ b/runtime/queries/rust/textobjects.scm
@@ -59,3 +59,27 @@
(function_item
body: (_) @test.inside) @test.around
(#eq? @_test_attribute "test"))
+
+(array_expression
+ (_) @entry.around)
+
+(tuple_expression
+ (_) @entry.around)
+
+(tuple_pattern
+ (_) @entry.around)
+
+; Commonly used vec macro intializer is special cased
+(macro_invocation
+ (identifier) @_id (token_tree (_) @entry.around)
+ (#eq? @_id "vec"))
+
+(enum_variant) @entry.around
+
+(field_declaration
+ (_) @entry.inside) @entry.around
+
+(field_initializer
+ (_) @entry.inside) @entry.around
+
+(shorthand_field_initializer) @entry.around
diff --git a/runtime/queries/toml/textobjects.scm b/runtime/queries/toml/textobjects.scm
new file mode 100644
index 00000000..a8fd57c9
--- /dev/null
+++ b/runtime/queries/toml/textobjects.scm
@@ -0,0 +1,5 @@
+(pair
+ (_) @entry.inside) @entry.around
+
+(array
+ (_) @entry.around)