aboutsummaryrefslogtreecommitdiffstats
path: root/queries/rust
diff options
context:
space:
mode:
authorwinwisely268 <winwisely268@gmail.com>2020-07-17 15:49:43 +0000
committerThomas Vigouroux <39092278+vigoux@users.noreply.github.com>2020-07-17 20:44:43 +0200
commit59c084b5d837165328da0fe19a8155f95673ee51 (patch)
treef855574e6ce01cf7467ca3b6ca161f7e10df3dbf /queries/rust
parentfix(highlights): add array strings (diff)
downloadnvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar.gz
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar.bz2
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar.lz
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar.xz
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.tar.zst
nvim-treesitter-59c084b5d837165328da0fe19a8155f95673ee51.zip
go loop and func literal, rust textobject support
Diffstat (limited to 'queries/rust')
-rw-r--r--queries/rust/textobjects.scm73
1 files changed, 73 insertions, 0 deletions
diff --git a/queries/rust/textobjects.scm b/queries/rust/textobjects.scm
new file mode 100644
index 000000000..adc9ac6da
--- /dev/null
+++ b/queries/rust/textobjects.scm
@@ -0,0 +1,73 @@
+;; functions
+(function_item
+ (_) @function.inner) @function.outer
+
+;; quantifies as class(es)
+(struct_item
+ (_) @class.inner) @class.outer
+
+(enum_item
+ (_) @class.inner) @class.outer
+
+(union_item
+ (_) @class.inner) @class.outer
+
+(trait_item
+ (_) @class.inner) @class.outer
+
+(impl_item
+ (_) @class.inner) @class.outer
+
+;; conditionals
+(if_expression
+ alternative: (_ (_)? @conditional.inner)?
+ ) @conditional.outer
+
+(if_expression
+ alternative: (block)? @conditional.inner)
+
+(if_expression
+ condition: (_) @conditional.inner)
+
+(if_expression
+ consequence: (block)? @conditional.inner)
+
+(match_arm
+ (_)) @conditional.inner
+
+(match_expression
+ (match_arm)?
+ ) @conditional.outer
+
+(if_let_expression
+ consequence: (block)?
+ @conditional.inner) @conditional.outer
+
+(if_let_expression
+ alternative: (block)? @conditional.inner)
+
+(if_let_expression
+ condition: (_) @conditional.inner)
+
+;; loops
+(loop_expression
+ (_)? @loop.inner) @loop.outer
+
+(while_expression
+ (_)? @loop.inner) @loop.outer
+
+(while_let_expression
+ (_)? @loop.inner) @loop.outer
+
+(for_expression
+ body: (block)? @loop.inner) @loop.outer
+
+;; blocks
+(_ (block) @block.inner) @block.outer
+(unsafe_block (_)? @block.inner) @block.outer
+
+;; calls
+(call_expression (_)? @call.inner) @call.outer
+
+;; statements
+(block (_) @statement.outer)