aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/go
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/go
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/go')
-rw-r--r--runtime/queries/go/folds.scm19
-rw-r--r--runtime/queries/go/highlights.scm254
-rw-r--r--runtime/queries/go/indents.scm48
-rw-r--r--runtime/queries/go/injections.scm42
-rw-r--r--runtime/queries/go/locals.scm88
5 files changed, 451 insertions, 0 deletions
diff --git a/runtime/queries/go/folds.scm b/runtime/queries/go/folds.scm
new file mode 100644
index 000000000..44b452de5
--- /dev/null
+++ b/runtime/queries/go/folds.scm
@@ -0,0 +1,19 @@
+[
+ (const_declaration)
+ (expression_switch_statement)
+ (expression_case)
+ (default_case)
+ (type_switch_statement)
+ (type_case)
+ (for_statement)
+ (func_literal)
+ (function_declaration)
+ (if_statement)
+ (import_declaration)
+ (method_declaration)
+ (type_declaration)
+ (var_declaration)
+ (composite_literal)
+ (literal_element)
+ (block)
+] @fold
diff --git a/runtime/queries/go/highlights.scm b/runtime/queries/go/highlights.scm
new file mode 100644
index 000000000..7675cb790
--- /dev/null
+++ b/runtime/queries/go/highlights.scm
@@ -0,0 +1,254 @@
+; Forked from tree-sitter-go
+; Copyright (c) 2014 Max Brunsfeld (The MIT License)
+;
+; Identifiers
+(type_identifier) @type
+
+(type_spec
+ name: (type_identifier) @type.definition)
+
+(field_identifier) @property
+
+(identifier) @variable
+
+(package_identifier) @module
+
+(parameter_declaration
+ (identifier) @variable.parameter)
+
+(variadic_parameter_declaration
+ (identifier) @variable.parameter)
+
+(label_name) @label
+
+(const_spec
+ name: (identifier) @constant)
+
+; Function calls
+(call_expression
+ function: (identifier) @function.call)
+
+(call_expression
+ function: (selector_expression
+ field: (field_identifier) @function.method.call))
+
+; Function definitions
+(function_declaration
+ name: (identifier) @function)
+
+(method_declaration
+ name: (field_identifier) @function.method)
+
+(method_elem
+ name: (field_identifier) @function.method)
+
+; Constructors
+((call_expression
+ (identifier) @constructor)
+ (#lua-match? @constructor "^[nN]ew.+$"))
+
+((call_expression
+ (identifier) @constructor)
+ (#lua-match? @constructor "^[mM]ake.+$"))
+
+; Operators
+[
+ "--"
+ "-"
+ "-="
+ ":="
+ "!"
+ "!="
+ "..."
+ "*"
+ "*"
+ "*="
+ "/"
+ "/="
+ "&"
+ "&&"
+ "&="
+ "&^"
+ "&^="
+ "%"
+ "%="
+ "^"
+ "^="
+ "+"
+ "++"
+ "+="
+ "<-"
+ "<"
+ "<<"
+ "<<="
+ "<="
+ "="
+ "=="
+ ">"
+ ">="
+ ">>"
+ ">>="
+ "|"
+ "|="
+ "||"
+ "~"
+] @operator
+
+; Keywords
+[
+ "break"
+ "const"
+ "continue"
+ "default"
+ "defer"
+ "goto"
+ "range"
+ "select"
+ "var"
+ "fallthrough"
+] @keyword
+
+[
+ "type"
+ "struct"
+ "interface"
+] @keyword.type
+
+"func" @keyword.function
+
+"return" @keyword.return
+
+"go" @keyword.coroutine
+
+"for" @keyword.repeat
+
+[
+ "import"
+ "package"
+] @keyword.import
+
+[
+ "else"
+ "case"
+ "switch"
+ "if"
+] @keyword.conditional
+
+; Builtin types
+[
+ "chan"
+ "map"
+] @type.builtin
+
+((type_identifier) @type.builtin
+ (#any-of? @type.builtin
+ "any" "bool" "byte" "comparable" "complex128" "complex64" "error" "float32" "float64" "int"
+ "int16" "int32" "int64" "int8" "rune" "string" "uint" "uint16" "uint32" "uint64" "uint8"
+ "uintptr"))
+
+; Builtin functions
+((identifier) @function.builtin
+ (#any-of? @function.builtin
+ "append" "cap" "clear" "close" "complex" "copy" "delete" "imag" "len" "make" "max" "min" "new"
+ "panic" "print" "println" "real" "recover"))
+
+; Delimiters
+"." @punctuation.delimiter
+
+"," @punctuation.delimiter
+
+":" @punctuation.delimiter
+
+";" @punctuation.delimiter
+
+"(" @punctuation.bracket
+
+")" @punctuation.bracket
+
+"{" @punctuation.bracket
+
+"}" @punctuation.bracket
+
+"[" @punctuation.bracket
+
+"]" @punctuation.bracket
+
+; Literals
+(interpreted_string_literal) @string
+
+(raw_string_literal) @string
+
+(rune_literal) @string
+
+(escape_sequence) @string.escape
+
+(int_literal) @number
+
+(float_literal) @number.float
+
+(imaginary_literal) @number
+
+[
+ (true)
+ (false)
+] @boolean
+
+[
+ (nil)
+ (iota)
+] @constant.builtin
+
+(keyed_element
+ .
+ (literal_element
+ (identifier) @variable.member))
+
+(field_declaration
+ name: (field_identifier) @variable.member)
+
+; Comments
+(comment) @comment @spell
+
+; Doc Comments
+(source_file
+ .
+ (comment)+ @comment.documentation)
+
+(source_file
+ (comment)+ @comment.documentation
+ .
+ (const_declaration))
+
+(source_file
+ (comment)+ @comment.documentation
+ .
+ (function_declaration))
+
+(source_file
+ (comment)+ @comment.documentation
+ .
+ (type_declaration))
+
+(source_file
+ (comment)+ @comment.documentation
+ .
+ (var_declaration))
+
+; Spell
+((interpreted_string_literal) @spell
+ (#not-has-parent? @spell import_spec))
+
+; Regex
+(call_expression
+ (selector_expression) @_function
+ (#any-of? @_function
+ "regexp.Match" "regexp.MatchReader" "regexp.MatchString" "regexp.Compile" "regexp.CompilePOSIX"
+ "regexp.MustCompile" "regexp.MustCompilePOSIX")
+ (argument_list
+ .
+ [
+ (raw_string_literal
+ (raw_string_literal_content) @string.regexp)
+ (interpreted_string_literal
+ (interpreted_string_literal_content) @string.regexp)
+ ]))
diff --git a/runtime/queries/go/indents.scm b/runtime/queries/go/indents.scm
new file mode 100644
index 000000000..28edfe973
--- /dev/null
+++ b/runtime/queries/go/indents.scm
@@ -0,0 +1,48 @@
+[
+ (import_declaration)
+ (const_declaration)
+ (var_declaration)
+ (type_declaration)
+ (func_literal)
+ (literal_value)
+ (expression_case)
+ (communication_case)
+ (type_case)
+ (default_case)
+ (block)
+ (call_expression)
+ (parameter_list)
+ (field_declaration_list)
+ (interface_type)
+] @indent.begin
+
+(literal_value
+ "}" @indent.branch)
+
+(block
+ "}" @indent.branch)
+
+(field_declaration_list
+ "}" @indent.branch)
+
+(interface_type
+ "}" @indent.branch)
+
+(const_declaration
+ ")" @indent.branch)
+
+(import_spec_list
+ ")" @indent.branch)
+
+(var_spec_list
+ ")" @indent.branch)
+
+[
+ "}"
+ ")"
+] @indent.end
+
+(parameter_list
+ ")" @indent.branch)
+
+(comment) @indent.ignore
diff --git a/runtime/queries/go/injections.scm b/runtime/queries/go/injections.scm
new file mode 100644
index 000000000..4e914a3ec
--- /dev/null
+++ b/runtime/queries/go/injections.scm
@@ -0,0 +1,42 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+(call_expression
+ (selector_expression) @_function
+ (#any-of? @_function
+ "regexp.Match" "regexp.MatchReader" "regexp.MatchString" "regexp.Compile" "regexp.CompilePOSIX"
+ "regexp.MustCompile" "regexp.MustCompilePOSIX")
+ (argument_list
+ .
+ [
+ (raw_string_literal
+ (raw_string_literal_content) @injection.content)
+ (interpreted_string_literal
+ (interpreted_string_literal_content) @injection.content)
+ ]
+ (#set! injection.language "regex")))
+
+((comment) @injection.content
+ (#match? @injection.content "/\\*!([a-zA-Z]+:)?re2c")
+ (#set! injection.language "re2c"))
+
+((call_expression
+ function: (selector_expression
+ field: (field_identifier) @_method)
+ arguments: (argument_list
+ .
+ (interpreted_string_literal
+ (interpreted_string_literal_content) @injection.content)))
+ (#any-of? @_method "Printf" "Sprintf" "Fatalf" "Scanf" "Errorf" "Skipf" "Logf")
+ (#set! injection.language "printf"))
+
+((call_expression
+ function: (selector_expression
+ field: (field_identifier) @_method)
+ arguments: (argument_list
+ (_)
+ .
+ (interpreted_string_literal
+ (interpreted_string_literal_content) @injection.content)))
+ (#any-of? @_method "Fprintf" "Fscanf" "Appendf" "Sscanf")
+ (#set! injection.language "printf"))
diff --git a/runtime/queries/go/locals.scm b/runtime/queries/go/locals.scm
new file mode 100644
index 000000000..608c45826
--- /dev/null
+++ b/runtime/queries/go/locals.scm
@@ -0,0 +1,88 @@
+((function_declaration
+ name: (identifier) @local.definition.function) ; @function
+ )
+
+((method_declaration
+ name: (field_identifier) @local.definition.method) ; @function.method
+ )
+
+(short_var_declaration
+ left: (expression_list
+ (identifier) @local.definition.var))
+
+(var_spec
+ name: (identifier) @local.definition.var)
+
+(parameter_declaration
+ (identifier) @local.definition.var)
+
+(variadic_parameter_declaration
+ (identifier) @local.definition.var)
+
+(for_statement
+ (range_clause
+ left: (expression_list
+ (identifier) @local.definition.var)))
+
+(const_declaration
+ (const_spec
+ name: (identifier) @local.definition.var))
+
+(type_declaration
+ (type_spec
+ name: (type_identifier) @local.definition.type))
+
+; reference
+(identifier) @local.reference
+
+(type_identifier) @local.reference
+
+(field_identifier) @local.reference
+
+((package_identifier) @local.reference
+ (#set! reference.kind "namespace"))
+
+(package_clause
+ (package_identifier) @local.definition.namespace)
+
+(import_spec_list
+ (import_spec
+ name: (package_identifier) @local.definition.namespace))
+
+; Call references
+((call_expression
+ function: (identifier) @local.reference)
+ (#set! reference.kind "call"))
+
+((call_expression
+ function: (selector_expression
+ field: (field_identifier) @local.reference))
+ (#set! reference.kind "call"))
+
+((call_expression
+ function: (parenthesized_expression
+ (identifier) @local.reference))
+ (#set! reference.kind "call"))
+
+((call_expression
+ function: (parenthesized_expression
+ (selector_expression
+ field: (field_identifier) @local.reference)))
+ (#set! reference.kind "call"))
+
+; Scopes
+(func_literal) @local.scope
+
+(source_file) @local.scope
+
+(function_declaration) @local.scope
+
+(if_statement) @local.scope
+
+(block) @local.scope
+
+(expression_switch_statement) @local.scope
+
+(for_statement) @local.scope
+
+(method_declaration) @local.scope