nvim-treesitter/queries/go/textobjects.scm
2020-07-17 20:44:43 +02:00

50 lines
1.2 KiB
Scheme

;; function textobject
(function_declaration
body: (block)? @function.inner) @function.outer
;; function literals
(func_literal
(_)? @function.inner) @function.outer
;; method as function textobject
(method_declaration
body: (block)? @function.inner) @function.outer
;; struct and interface declaration as class textobject?
(type_declaration
(type_spec (type_identifier) (struct_type (field_declaration_list (_)?) @class.inner))) @class.outer
(type_declaration
(type_spec (type_identifier) (interface_type (method_spec_list (_)?) @class.inner))) @class.outer
;; struct literals as class textobject
(composite_literal
(type_identifier)?
(struct_type (_))?
(literal_value (_)) @class.inner) @class.outer
;; conditionals
(if_statement
alternative: (_ (_) @conditional.inner)?) @conditional.outer
(if_statement
consequence: (block)? @conditional.inner)
(if_statement
condition: (_) @conditional.inner)
;; loops
(for_statement
body: (block)? @loop.inner) @loop.outer
;; blocks
(_ (block) @block.inner) @block.outer
;; statements
(block (_) @statement.outer)
;; comments
(comment) @comment.outer
;; calls
(call_expression (_)? @call.inner) @call.outer