summaryrefslogtreecommitdiff
path: root/runtime/queries/v
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/v')
-rw-r--r--runtime/queries/v/highlights.scm153
-rw-r--r--runtime/queries/v/indents.scm17
-rw-r--r--runtime/queries/v/injections.scm6
-rw-r--r--runtime/queries/v/textobjects.scm27
4 files changed, 155 insertions, 48 deletions
diff --git a/runtime/queries/v/highlights.scm b/runtime/queries/v/highlights.scm
index c71245dc..e014b77d 100644
--- a/runtime/queries/v/highlights.scm
+++ b/runtime/queries/v/highlights.scm
@@ -14,71 +14,130 @@
(field_identifier) @variable.other.member
(selector_expression
+ operand: (identifier) @variable
field: (identifier) @variable.other.member)
(int_literal) @constant.numeric.integer
-(interpreted_string_literal) @string
-(rune_literal) @string
+
+(attribute_declaration) @attribute
+(comment) @comment
+[
+ (c_string_literal)
+ (raw_string_literal)
+ (interpreted_string_literal)
+ (string_interpolation)
+ (rune_literal)
+] @string
+
(escape_sequence) @constant.character.escape
[
- (type_identifier)
- (builtin_type)
(pointer_type)
(array_type)
] @type
+(const_spec name: (identifier) @constant)
+(global_var_type_initializer name: (identifier) @constant)
+(global_var_spec name: (identifier) @constant)
+((identifier) @constant (#match? @constant "^[A-Z][A-Z\\d_]*$"))
+
+
+[
+ (generic_type)
+ (type_identifier)
+] @constructor
+
+(builtin_type) @type.builtin
+
+[
+ (true)
+ (false)
+] @constant.builtin.boolean
+
+
[
- (identifier)
(module_identifier)
(import_path)
+] @namespace
+
+[
+ (pseudo_comptime_identifier)
+ (label_name)
+] @label
+
+[
+ (identifier)
] @variable
+
[
- "as"
- "asm"
- "assert"
- ;"atomic"
- ;"break"
- "const"
- ;"continue"
- "defer"
- "else"
- "enum"
- "fn"
- "for"
- "$for"
- "go"
- "goto"
- "if"
- "$if"
- "import"
- "in"
- "!in"
- "interface"
- "is"
- "!is"
- "lock"
- "match"
- "module"
- "mut"
- "or"
- "pub"
- "return"
- "rlock"
- "select"
- ;"shared"
- ;"static"
- "struct"
- "type"
- ;"union"
- "unsafe"
+ "pub"
+ "assert"
+ "go"
+ "asm"
+ "defer"
+ "unsafe"
+ "sql"
+ (none)
] @keyword
[
- (true)
- (false)
-] @boolean
+ "interface"
+ "enum"
+ "type"
+ "union"
+ "struct"
+ "module"
+] @keyword.storage.type
+
+[
+ "static"
+ "const"
+ "__global"
+] @keyword.storage.modifier
+
+[
+ "mut"
+] @keyword.storage.modifier.mut
+
+[
+ "shared"
+ "lock"
+ "rlock"
+ "spawn"
+] @keyword.control
+
+[
+ "if"
+ "select"
+ "else"
+ "match"
+] @keyword.control.conditional
+
+[
+ "for"
+] @keyword.control.repeat
+
+[
+ "goto"
+ "return"
+] @keyword.control.return
+
+[
+ "fn"
+] @keyword.control.function
+
+
+[
+ "import"
+] @keyword.control.import
+
+[
+ "as"
+ "in"
+ "is"
+ "or"
+] @keyword.operator
[
"."
@@ -146,5 +205,3 @@
".."
"..."
] @operator
-
-(comment) @comment \ No newline at end of file
diff --git a/runtime/queries/v/indents.scm b/runtime/queries/v/indents.scm
new file mode 100644
index 00000000..5573d489
--- /dev/null
+++ b/runtime/queries/v/indents.scm
@@ -0,0 +1,17 @@
+[
+ (struct_declaration)
+ (function_declaration)
+ (if_expression)
+ (match_expression)
+ (expression_case)
+ (default_case)
+ (for_statement)
+ (unsafe_expression)
+ (short_var_declaration)
+] @indent
+
+[
+ "]"
+ ")"
+ "}"
+] @outdent
diff --git a/runtime/queries/v/injections.scm b/runtime/queries/v/injections.scm
new file mode 100644
index 00000000..f698de83
--- /dev/null
+++ b/runtime/queries/v/injections.scm
@@ -0,0 +1,6 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+((sql_expression) @injection.content
+ (#set! injection.language "sql"))
+
diff --git a/runtime/queries/v/textobjects.scm b/runtime/queries/v/textobjects.scm
new file mode 100644
index 00000000..40eb101f
--- /dev/null
+++ b/runtime/queries/v/textobjects.scm
@@ -0,0 +1,27 @@
+(function_declaration
+ body: (block)? @function.inside) @function.around
+
+((function_declaration
+ name: (identifier) @_name
+ body: (block)? @test.inside) @test.around
+ (#match? @_name "^test"))
+
+(fn_literal
+ body: (block)? @function.inside) @function.around
+
+(parameter_list
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+(call_expression
+ (argument_list
+ ((_) @parameter.inside) @parameter.around))
+
+(struct_declaration
+ (struct_field_declaration_list) @class.inside) @class.around
+
+(struct_field_declaration_list
+ ((_) @parameter.inside) @parameter.around)
+
+(comment) @comment.inside
+(comment)+ @comment.around
+