Improve tree-sitter queries for vlang (#6279)

- Update hightlight
- add indents
- add textobject
- add injections
pull/6329/head
Erasin Wang 1 year ago committed by GitHub
parent 64c137bd3d
commit fb56a4bb75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -140,7 +140,7 @@
| typescript | ✓ | ✓ | ✓ | `typescript-language-server` | | typescript | ✓ | ✓ | ✓ | `typescript-language-server` |
| ungrammar | ✓ | | | | | ungrammar | ✓ | | | |
| uxntal | ✓ | | | | | uxntal | ✓ | | | |
| v | ✓ | | | `v` | | v | ✓ | | | `v` |
| vala | ✓ | | | `vala-language-server` | | vala | ✓ | | | `vala-language-server` |
| verilog | ✓ | ✓ | | `svlangserver` | | verilog | ✓ | ✓ | | `svlangserver` |
| vhs | ✓ | | | | | vhs | ✓ | | | |

@ -1687,7 +1687,7 @@ source = { git = "https://github.com/6cdh/tree-sitter-scheme", rev = "c0741320bf
[[language]] [[language]]
name = "v" name = "v"
scope = "source.v" scope = "source.v"
file-types = ["v", "vv"] file-types = ["v", "vv", "vsh"]
shebangs = ["v run"] shebangs = ["v run"]
roots = ["v.mod"] roots = ["v.mod"]
language-server = { command = "v", args = ["ls"] } language-server = { command = "v", args = ["ls"] }
@ -1697,7 +1697,7 @@ indent = { tab-width = 4, unit = "\t" }
[[grammar]] [[grammar]]
name = "v" name = "v"
source = { git = "https://github.com/vlang/vls", subpath = "tree_sitter_v", rev = "3e8124ea4ab80aa08ec77f03df53f577902a0cdd" } source = { git = "https://github.com/vlang/vls", subpath = "tree_sitter_v", rev = "66cf9d3086fb5ecc827cb32c64c5d812ab17d2c6" }
[[language]] [[language]]
name = "verilog" name = "verilog"

@ -14,71 +14,130 @@
(field_identifier) @variable.other.member (field_identifier) @variable.other.member
(selector_expression (selector_expression
operand: (identifier) @variable
field: (identifier) @variable.other.member) field: (identifier) @variable.other.member)
(int_literal) @constant.numeric.integer (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 (escape_sequence) @constant.character.escape
[ [
(type_identifier)
(builtin_type)
(pointer_type) (pointer_type)
(array_type) (array_type)
] @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) (module_identifier)
(import_path) (import_path)
] @namespace
[
(pseudo_comptime_identifier)
(label_name)
] @label
[
(identifier)
] @variable ] @variable
[ [
"as" "pub"
"asm" "assert"
"assert" "go"
;"atomic" "asm"
;"break" "defer"
"const" "unsafe"
;"continue" "sql"
"defer" (none)
"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"
] @keyword ] @keyword
[ [
(true) "interface"
(false) "enum"
] @boolean "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 ] @operator
(comment) @comment

@ -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

@ -0,0 +1,6 @@
((comment) @injection.content
(#set! injection.language "comment"))
((sql_expression) @injection.content
(#set! injection.language "sql"))

@ -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
Loading…
Cancel
Save