Unnamed repository; edit this file 'description' to name the repository.
Odin textobjects (#12302)
Co-authored-by: Adam Zadrożny <[email protected]>
cornishon 2024-12-20
parent 06d0f33 · commit a91263d
-rw-r--r--book/src/generated/lang-support.md2
-rw-r--r--runtime/queries/odin/textobjects.scm22
2 files changed, 23 insertions, 1 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index dc4a5c8b..c1c4dbb1 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -147,7 +147,7 @@
| nunjucks | ✓ | | | |
| ocaml | ✓ | | ✓ | `ocamllsp` |
| ocaml-interface | ✓ | | | `ocamllsp` |
-| odin | ✓ | | ✓ | `ols` |
+| odin | ✓ | ✓ | ✓ | `ols` |
| ohm | ✓ | ✓ | ✓ | |
| opencl | ✓ | ✓ | ✓ | `clangd` |
| openscad | ✓ | | | `openscad-lsp` |
diff --git a/runtime/queries/odin/textobjects.scm b/runtime/queries/odin/textobjects.scm
new file mode 100644
index 00000000..85b0687d
--- /dev/null
+++ b/runtime/queries/odin/textobjects.scm
@@ -0,0 +1,22 @@
+(procedure_declaration (identifier) (procedure (block) @function.inside)) @function.around
+(procedure_declaration (identifier) (procedure (uninitialized) @function.inside)) @function.around
+(overloaded_procedure_declaration (identifier) @function.inside) @function.around
+
+(procedure_type (parameters (parameter (identifier) @parameter.inside) @parameter.around))
+(procedure (parameters (parameter (identifier) @parameter.inside) @parameter.around))
+
+((procedure_declaration
+ (attributes (attribute "@" "(" (identifier) @attr_name ")"))
+ (identifier) (procedure (block) @test.inside)) @test.around
+ (#match? @attr_name "test"))
+
+(comment) @comment.inside
+(comment)+ @comment.around
+(block_comment) @comment.inside
+(block_comment)+ @comment.around
+
+(struct_declaration (identifier) "::") @class.around
+(enum_declaration (identifier) "::") @class.around
+(union_declaration (identifier) "::") @class.around
+(bit_field_declaration (identifier) "::") @class.around
+(const_declaration (identifier) "::" [(array_type) (distinct_type) (bit_set_type) (pointer_type)]) @class.around