From 57952c46a4f3bf75d0b9940c2c42399980416523 Mon Sep 17 00:00:00 2001 From: lydiandy Date: Mon, 31 Jul 2023 07:04:55 +0800 Subject: [PATCH] replace new lsp for vlang (#7760) * fix vlang grammar fetch and build fail * update highlights.scm for v-analyzer * Update languages.toml Co-authored-by: Michael Davis * Update runtime/queries/v/highlights.scm Co-authored-by: Michael Davis * update scm for new lsp * gen doc lang-support.md --------- Co-authored-by: Michael Davis --- book/src/generated/lang-support.md | 2 +- languages.toml | 4 +- runtime/queries/v/highlights.scm | 138 ++++++++++++++++++----------- runtime/queries/v/indents.scm | 5 +- runtime/queries/v/textobjects.scm | 6 +- 5 files changed, 94 insertions(+), 61 deletions(-) diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index ee7caf999..4b19c4b80 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -156,7 +156,7 @@ | typescript | ✓ | ✓ | ✓ | `typescript-language-server` | | ungrammar | ✓ | | | | | uxntal | ✓ | | | | -| v | ✓ | ✓ | ✓ | `v` | +| v | ✓ | ✓ | ✓ | `v-analyzer` | | vala | ✓ | | | `vala-language-server` | | verilog | ✓ | ✓ | | `svlangserver` | | vhdl | ✓ | | | `vhdl_ls` | diff --git a/languages.toml b/languages.toml index 91fc05870..b6278730e 100644 --- a/languages.toml +++ b/languages.toml @@ -70,7 +70,7 @@ terraform-ls = { command = "terraform-ls", args = ["serve"] } texlab = { command = "texlab" } vala-language-server = { command = "vala-language-server" } vhdl_ls = { command = "vhdl_ls", args = [] } -vlang-language-server = { command = "v", args = ["ls"] } +vlang-language-server = { command = "v-analyzer" } vscode-css-language-server = { command = "vscode-css-language-server", args = ["--stdio"], config = { "provideFormatter" = true }} vscode-html-language-server = { command = "vscode-html-language-server", args = ["--stdio"], config = { provideFormatter = true } } vscode-json-language-server = { command = "vscode-json-language-server", args = ["--stdio"], config = { provideFormatter = true } } @@ -1826,7 +1826,7 @@ indent = { tab-width = 4, unit = "\t" } [[grammar]] name = "v" -source = { git = "https://github.com/vlang/vls", subpath = "tree_sitter_v", rev = "66cf9d3086fb5ecc827cb32c64c5d812ab17d2c6" } +source = {git = "https://github.com/v-analyzer/v-analyzer", subpath = "tree_sitter_v", rev = "e14fdf6e661b10edccc744102e4ccf0b187aa8ad"} [[language]] name = "verilog" diff --git a/runtime/queries/v/highlights.scm b/runtime/queries/v/highlights.scm index e014b77d9..fbaf70882 100644 --- a/runtime/queries/v/highlights.scm +++ b/runtime/queries/v/highlights.scm @@ -1,83 +1,112 @@ +(comment) @comment + +(module_clause + (identifier) @namespace) + +(import_path + (import_name) @namespace) + +(import_alias + (import_name) @namespace) + +(enum_fetch + (reference_expression) @constant) + +(enum_field_definition + (identifier) @constant) + +(global_var_definition + (identifier) @constant) + +(compile_time_if_expression + condition: (reference_expression) @constant) + +(compile_time_if_expression + condition: (binary_expression + left: (reference_expression) @constant + right: (reference_expression) @constant)) + +(compile_time_if_expression + condition: (binary_expression + left: (reference_expression) @constant + right: (unary_expression (reference_expression) @constant))) + +(label_reference) @label + (parameter_declaration - name: (identifier) @variable.parameter) + name: (identifier) @variable.parameter) +(receiver + name: (identifier) @variable.parameter) (function_declaration - name: (identifier) @function) + name: (identifier) @function) (function_declaration - receiver: (parameter_list) - name: (identifier) @function.method) + receiver: (receiver) + name: (identifier) @function.method) +(interface_method_definition + name: (identifier) @function.method) (call_expression - function: (identifier) @function) -(call_expression - function: (selector_expression - field: (identifier) @function.method)) + name: (selector_expression + field: (reference_expression) @function.method)) + +(call_expression + name: (reference_expression) @function) + +(struct_declaration + name: (identifier) @type) + +(enum_declaration + name: (identifier) @type) + +(interface_declaration + name: (identifier) @type) + +(type_declaration + name: (identifier) @type) + +(struct_field_declaration + name: (identifier) @variable.other.member) + +(field_name) @variable.other.member -(field_identifier) @variable.other.member (selector_expression - operand: (identifier) @variable - field: (identifier) @variable.other.member) + field: (reference_expression) @variable.other.member) (int_literal) @constant.numeric.integer - -(attribute_declaration) @attribute -(comment) @comment -[ - (c_string_literal) - (raw_string_literal) - (interpreted_string_literal) - (string_interpolation) - (rune_literal) -] @string - (escape_sequence) @constant.character.escape [ - (pointer_type) - (array_type) -] @type + (c_string_literal) + (raw_string_literal) + (interpreted_string_literal) + (string_interpolation) + (rune_literal) +] @string -(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_]*$")) +(string_interpolation + (braced_interpolation_opening) @punctuation.bracket + (interpolated_expression) @embedded + (braced_interpolation_closing) @punctuation.bracket) +(attribute) @attribute [ - (generic_type) - (type_identifier) -] @constructor - -(builtin_type) @type.builtin + (type_reference_expression) + ] @type [ (true) (false) ] @constant.builtin.boolean - -[ - (module_identifier) - (import_path) -] @namespace - -[ - (pseudo_comptime_identifier) - (label_name) -] @label - -[ - (identifier) -] @variable - - [ "pub" "assert" - "go" "asm" "defer" "unsafe" "sql" + (nil) (none) ] @keyword @@ -105,12 +134,17 @@ "lock" "rlock" "spawn" + "break" + "continue" + "go" ] @keyword.control [ "if" + "$if" "select" "else" + "$else" "match" ] @keyword.control.conditional @@ -155,7 +189,7 @@ "]" ] @punctuation.bracket -(array) @punctuation.bracket +(array_creation) @punctuation.bracket [ "++" diff --git a/runtime/queries/v/indents.scm b/runtime/queries/v/indents.scm index 5573d4897..21dae30f5 100644 --- a/runtime/queries/v/indents.scm +++ b/runtime/queries/v/indents.scm @@ -3,11 +3,10 @@ (function_declaration) (if_expression) (match_expression) - (expression_case) - (default_case) (for_statement) (unsafe_expression) - (short_var_declaration) + (var_declaration) + (const_declaration) ] @indent [ diff --git a/runtime/queries/v/textobjects.scm b/runtime/queries/v/textobjects.scm index 40eb101fe..5015af17e 100644 --- a/runtime/queries/v/textobjects.scm +++ b/runtime/queries/v/textobjects.scm @@ -6,7 +6,7 @@ body: (block)? @test.inside) @test.around (#match? @_name "^test")) -(fn_literal +(function_literal body: (block)? @function.inside) @function.around (parameter_list @@ -17,9 +17,9 @@ ((_) @parameter.inside) @parameter.around)) (struct_declaration - (struct_field_declaration_list) @class.inside) @class.around + (struct_field_declaration) @class.inside) @class.around -(struct_field_declaration_list +(struct_field_declaration ((_) @parameter.inside) @parameter.around) (comment) @comment.inside