From fb56a4bb75121f4797d80e14bceee9feb870cfb2 Mon Sep 17 00:00:00 2001 From: Erasin Wang Date: Thu, 16 Mar 2023 05:22:24 +0800 Subject: Improve tree-sitter queries for vlang (#6279) - Update hightlight - add indents - add textobject - add injections--- runtime/queries/v/highlights.scm | 153 ++++++++++++++++++++++++++------------ runtime/queries/v/indents.scm | 17 +++++ runtime/queries/v/injections.scm | 6 ++ runtime/queries/v/textobjects.scm | 27 +++++++ 4 files changed, 155 insertions(+), 48 deletions(-) create mode 100644 runtime/queries/v/indents.scm create mode 100644 runtime/queries/v/injections.scm create mode 100644 runtime/queries/v/textobjects.scm (limited to 'runtime') 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 + -- cgit v1.2.3-70-g09d2