aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/v
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/v
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/v')
-rw-r--r--runtime/queries/v/folds.scm8
-rw-r--r--runtime/queries/v/highlights.scm300
-rw-r--r--runtime/queries/v/indents.scm20
-rw-r--r--runtime/queries/v/injections.scm23
-rw-r--r--runtime/queries/v/locals.scm37
5 files changed, 388 insertions, 0 deletions
diff --git a/runtime/queries/v/folds.scm b/runtime/queries/v/folds.scm
new file mode 100644
index 000000000..952b6bbe9
--- /dev/null
+++ b/runtime/queries/v/folds.scm
@@ -0,0 +1,8 @@
+[
+ (function_declaration)
+ (const_declaration)
+ (type_declaration)
+ (import_declaration)
+ (if_expression)
+ (struct_declaration)
+] @fold
diff --git a/runtime/queries/v/highlights.scm b/runtime/queries/v/highlights.scm
new file mode 100644
index 000000000..982f3dbd5
--- /dev/null
+++ b/runtime/queries/v/highlights.scm
@@ -0,0 +1,300 @@
+(shebang) @keyword.directive
+
+; Includes
+[
+ "import"
+ "module"
+] @keyword.import
+
+; Keywords
+[
+ "asm"
+ "assert"
+ "const"
+ "defer"
+ "goto"
+ "sql"
+ "unsafe"
+] @keyword
+
+[
+ "enum"
+ "union"
+ "struct"
+ "interface"
+ "type"
+] @keyword.type
+
+[
+ "as"
+ "in"
+ "!in"
+ "or"
+ "is"
+ "!is"
+] @keyword.operator
+
+[
+ "match"
+ "if"
+ "$if"
+ "else"
+ "$else"
+ "select"
+] @keyword.conditional
+
+[
+ "for"
+ "$for"
+ "continue"
+ "break"
+] @keyword.repeat
+
+"fn" @keyword.function
+
+"return" @keyword.return
+
+[
+ "__global"
+ "shared"
+ "static"
+ "const"
+] @keyword.modifier
+
+[
+ "pub"
+ "mut"
+] @keyword.modifier
+
+[
+ "go"
+ "spawn"
+ "lock"
+ "rlock"
+] @keyword.coroutine
+
+; Variables
+(identifier) @variable
+
+; Namespace
+(module_clause
+ (identifier) @module)
+
+(import_path
+ (import_name) @module)
+
+(import_alias
+ (import_name) @module)
+
+; Literals
+[
+ (true)
+ (false)
+] @boolean
+
+(interpreted_string_literal) @string
+
+(string_interpolation) @none
+
+; Types
+(struct_declaration
+ name: (identifier) @type)
+
+(enum_declaration
+ name: (identifier) @type)
+
+(interface_declaration
+ name: (identifier) @type)
+
+(type_declaration
+ name: (identifier) @type)
+
+(type_reference_expression
+ (identifier) @type)
+
+; Labels
+(label_reference) @label
+
+; Fields
+(selector_expression
+ field: (reference_expression
+ (identifier) @variable.member))
+
+(field_name) @variable.member
+
+(struct_field_declaration
+ name: (identifier) @variable.member)
+
+; Parameters
+(parameter_declaration
+ name: (identifier) @variable.parameter)
+
+(receiver
+ name: (identifier) @variable.parameter)
+
+; Constants
+((identifier) @constant
+ (#has-ancestor? @constant compile_time_if_expression))
+
+(enum_fetch
+ (reference_expression) @constant)
+
+(enum_field_definition
+ (identifier) @constant)
+
+(const_definition
+ name: (identifier) @constant)
+
+((identifier) @variable.builtin
+ (#any-of? @variable.builtin "err" "macos" "linux" "windows"))
+
+; Attributes
+(attribute) @attribute
+
+; Functions
+(function_declaration
+ name: (identifier) @function)
+
+(function_declaration
+ receiver: (receiver)
+ name: (identifier) @function.method)
+
+(call_expression
+ name: (selector_expression
+ field: (reference_expression) @function.method.call))
+
+(call_expression
+ name: (reference_expression) @function.call)
+
+((identifier) @function.builtin
+ (#any-of? @function.builtin
+ "eprint" "eprintln" "error" "exit" "panic" "print" "println" "after" "after_char" "all"
+ "all_after" "all_after_last" "all_before" "all_before_last" "any" "ascii_str" "before" "bool"
+ "byte" "byterune" "bytes" "bytestr" "c_error_number_str" "capitalize" "clear" "clone"
+ "clone_to_depth" "close" "code" "compare" "compare_strings" "contains" "contains_any"
+ "contains_any_substr" "copy" "count" "cstring_to_vstring" "delete" "delete_last" "delete_many"
+ "ends_with" "eprint" "eprintln" "eq_epsilon" "error" "error_with_code" "exit" "f32" "f32_abs"
+ "f32_max" "f32_min" "f64" "f64_max" "fields" "filter" "find_between" "first" "flush_stderr"
+ "flush_stdout" "free" "gc_check_leaks" "get_str_intp_u32_format" "get_str_intp_u64_format"
+ "grow_cap" "grow_len" "hash" "hex" "hex2" "hex_full" "i16" "i64" "i8" "index" "index_after"
+ "index_any" "index_byte" "insert" "int" "is_alnum" "is_bin_digit" "is_capital" "is_digit"
+ "is_hex_digit" "is_letter" "is_lower" "is_oct_digit" "is_space" "is_title" "is_upper" "isnil"
+ "join" "join_lines" "keys" "last" "last_index" "last_index_byte" "length_in_bytes" "limit"
+ "malloc" "malloc_noscan" "map" "match_glob" "memdup" "memdup_noscan" "move" "msg" "panic"
+ "panic_error_number" "panic_lasterr" "panic_optional_not_set" "parse_int" "parse_uint"
+ "pointers" "pop" "prepend" "print" "print_backtrace" "println" "proc_pidpath" "ptr_str"
+ "push_many" "realloc_data" "reduce" "repeat" "repeat_to_depth" "replace" "replace_each"
+ "replace_once" "reverse" "reverse_in_place" "runes" "sort" "sort_by_len" "sort_ignore_case"
+ "sort_with_compare" "split" "split_any" "split_into_lines" "split_nth" "starts_with"
+ "starts_with_capital" "str" "str_escaped" "str_intp" "str_intp_g32" "str_intp_g64"
+ "str_intp_rune" "str_intp_sq" "str_intp_sub" "strg" "string_from_wide" "string_from_wide2"
+ "strip_margin" "strip_margin_custom" "strlong" "strsci" "substr" "substr_ni" "substr_with_check"
+ "title" "to_lower" "to_upper" "to_wide" "tos" "tos2" "tos3" "tos4" "tos5" "tos_clone" "trim"
+ "trim_left" "trim_pr" "try_pop" "try_push" "utf32_decode_to_buffer" "utf32_to_str"
+ "utf32_to_str_no_malloc" "utf8_char_len" "utf8_getchar" "utf8_str_len" "utf8_str_visible_length"
+ "utf8_to_utf32" "v_realloc" "vbytes" "vcalloc" "vcalloc_noscan" "vmemcmp" "vmemcpy" "vmemmove"
+ "vmemset" "vstring" "vstring_literal" "vstring_literal_with_len" "vstring_with_len" "vstrlen"
+ "vstrlen_char" "winapi_lasterr_str"))
+
+; Operators
+[
+ "++"
+ "--"
+ "+"
+ "-"
+ "*"
+ "/"
+ "%"
+ "~"
+ "&"
+ "|"
+ "^"
+ "!"
+ "&&"
+ "||"
+ "!="
+ "<<"
+ ">>"
+ "<"
+ ">"
+ "<="
+ ">="
+ "+="
+ "-="
+ "*="
+ "/="
+ "&="
+ "|="
+ "^="
+ "<<="
+ ">>="
+ "="
+ ":="
+ "=="
+ "?"
+ "<-"
+ "$"
+ ".."
+ "..."
+] @operator
+
+; Punctuation
+[
+ "."
+ ","
+ ":"
+ ";"
+] @punctuation.delimiter
+
+[
+ "("
+ ")"
+ "{"
+ "}"
+ "["
+ "]"
+] @punctuation.bracket
+
+; Literals
+(int_literal) @number
+
+(float_literal) @number.float
+
+[
+ (c_string_literal)
+ (raw_string_literal)
+ (interpreted_string_literal)
+ (string_interpolation)
+ (rune_literal)
+] @string
+
+(string_interpolation
+ (interpolation_opening) @punctuation.bracket
+ (interpolation_expression) @none
+ (interpolation_closing) @punctuation.bracket)
+
+(escape_sequence) @string.escape
+
+[
+ (true)
+ (false)
+] @boolean
+
+(nil) @constant.builtin
+
+(none) @variable.builtin
+
+; Comments
+[
+ (line_comment)
+ (block_comment)
+] @comment @spell
+
+(_
+ (line_comment)+ @comment.documentation
+ .
+ [
+ (function_declaration)
+ (type_declaration)
+ (enum_declaration)
+ ])
diff --git a/runtime/queries/v/indents.scm b/runtime/queries/v/indents.scm
new file mode 100644
index 000000000..bf090efae
--- /dev/null
+++ b/runtime/queries/v/indents.scm
@@ -0,0 +1,20 @@
+[
+ (import_declaration)
+ (const_declaration)
+ (type_declaration)
+ (type_initializer)
+ (block)
+ (map_init_expression)
+ (call_expression)
+ (parameter_list)
+] @indent.begin
+
+"}" @indent.branch
+
+(parameter_list
+ ")" @indent.branch)
+
+[
+ (line_comment)
+ (block_comment)
+] @indent.ignore
diff --git a/runtime/queries/v/injections.scm b/runtime/queries/v/injections.scm
new file mode 100644
index 000000000..2d7618b3e
--- /dev/null
+++ b/runtime/queries/v/injections.scm
@@ -0,0 +1,23 @@
+([
+ (line_comment)
+ (block_comment)
+] @injection.content
+ (#set! injection.language "comment"))
+
+; asm_statement if asm ever highlighted :)
+; #include <...>
+((hash_statement) @injection.content
+ (#set! injection.language "c"))
+
+; regex for the methods defined in `re` module
+((call_expression
+ name: (selector_expression
+ field: (reference_expression
+ (identifier) @_re))
+ arguments: (argument_list
+ (argument
+ (literal
+ (raw_string_literal) @injection.content
+ (#offset! @injection.content 0 2 0 -1)))))
+ (#any-of? @_re "regex_base" "regex_opt" "compile_opt")
+ (#set! injection.language "regex"))
diff --git a/runtime/queries/v/locals.scm b/runtime/queries/v/locals.scm
new file mode 100644
index 000000000..a3423f696
--- /dev/null
+++ b/runtime/queries/v/locals.scm
@@ -0,0 +1,37 @@
+(function_declaration
+ name: (identifier) @local.definition.function) ;@function
+
+(var_declaration
+ var_list: (expression_list
+ (reference_expression
+ (identifier) @local.definition.var)))
+
+(function_declaration
+ name: (identifier) @local.definition.function)
+
+(const_declaration
+ (const_definition
+ name: (identifier) @local.definition.var))
+
+(identifier) @local.reference
+
+((call_expression
+ name: (reference_expression
+ (identifier)) @local.reference)
+ (#set! reference.kind "call"))
+
+((call_expression
+ name: (selector_expression
+ field: (reference_expression
+ (identifier) @local.definition.function)))
+ (#set! reference.kind "call"))
+
+(source_file) @local.scope
+
+(function_declaration) @local.scope
+
+(if_expression) @local.scope
+
+(block) @local.scope
+
+(for_statement) @local.scope