From 621ac16e35dfb57346ff9262531e2b1d43010579 Mon Sep 17 00:00:00 2001 From: Jeff Brennan <42007840+jeffbrennan@users.noreply.github.com> Date: Wed, 3 Dec 2025 11:32:51 -0500 Subject: [PATCH] go: Fix language injections (#43775) Closes #43730 ## Summary This modifies the existing injections.scm file for go by adding more specific prefix queries and *_content nodes to the existing `raw_string_literal` and `interpreted_string_literal` sections
This PR image image image
Current Release (0.214.7) image image image
Code ```go func test_sql() { // const assignment const _ = /* sql */ "SELECT * FROM users" const _ = /* sql */ `SELECT id, name FROM products` // var assignment var _ = /* sql */ `SELECT id, name FROM products` var _ = /* sql */ "SELECT id, name FROM products" // := assignment test := /* sql */ "SELECT * FROM users" test2 := /* sql */ `SELECT * FROM users` println(test) println(test2) // = assignment _ = /* sql */ "SELECT * FROM users WHERE id = 1" _ = /* sql */ `SELECT * FROM users WHERE id = 1` // literal elements _ = testStruct{Field: /* sql */ "SELECT * FROM users"} _ = testStruct{Field: /* sql */ `SELECT * FROM users`} testFunc(/* sql */ "SELECT * FROM users") testFunc(/* sql */ `SELECT * FROM users`) const backtickString = /* sql */ `SELECT * FROM users;` const quotedString = /* sql */ "SELECT * FROM users;" const backtickStringNoHighlight = `SELECT * FROM users;` const quotedStringNoHighlight = "SELECT * FROM users;" } func test_yaml() { // const assignment const _ = /* yaml */ ` settings: enabled: true port: 8080 ` // := assignment test := /* yaml */ ` settings: enabled: true port: 8080 ` println(test) // = assignment _ = /* yaml */ ` settings: enabled: true port: 8080 ` // literal elements in a struct _ = testStruct{Field: /* yaml */ ` settings: test: 1234 port: 8080 `} // function argument testFunc(/* yaml */ ` settings: enabled: true port: 8080 `) } func test_css() { // const assignment const _ = /* css */ "body { margin: 0; }" const _ = /* css */ `body { margin: 0; }` const cssCodes = /* css */ ` h1 { color: #333; } ` // := assignment test := /* css */ "body { margin: 0; }" println(test) // = assignment _ = /* css */ "body { margin: 0; }" _ = /* css */ `body { margin: 0; }` // literal elements _ = testStruct{Field: /* css */ "body { margin: 0; }"} _ = testStruct{Field: /* css */ `body { margin: 0; }`} testFunc(/* css */ "body { margin: 0; }") testFunc(/* css */ `body { margin: 0; }`) const backtickString = /* css */ `body { margin: 0; }` const quotedString = /* css */ "body { margin: 0; }" const backtickStringNoHighlight = `body { margin: 0; }` const quotedStringNoHighlight = "body { margin: 0; }" } ```
Release Notes: - Greatly improved the quality of comment-directed language injections in Go --- crates/languages/src/go/injections.scm | 879 +++++++++++++++++-------- 1 file changed, 618 insertions(+), 261 deletions(-) diff --git a/crates/languages/src/go/injections.scm b/crates/languages/src/go/injections.scm index 52edce4177..58583f4d22 100644 --- a/crates/languages/src/go/injections.scm +++ b/crates/languages/src/go/injections.scm @@ -19,360 +19,717 @@ ; INJECT SQL ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*sql\\s*\\*\\/") ; /* sql */ or /*sql*/ - (#set! injection.language "sql") + (#match? @_comment "^\\/\\*\\s*sql\\s*\\*\\/$") + (#set! injection.language "sql") ) ; INJECT JSON ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*json\\s*\\*\\/") ; /* json */ or /*json*/ + (#match? @_comment "^\\/\\*\\s*json\\s*\\*\\/") ; /* json */ or /*json*/ (#set! injection.language "json") ) ; INJECT YAML ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*yaml\\s*\\*\\/") ; /* yaml */ or /*yaml*/ + (#match? @_comment "^\\/\\*\\s*yaml\\s*\\*\\/") ; /* yaml */ or /*yaml*/ (#set! injection.language "yaml") ) ; INJECT XML ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*xml\\s*\\*\\/") ; /* xml */ or /*xml*/ + (#match? @_comment "^\\/\\*\\s*xml\\s*\\*\\/") ; /* xml */ or /*xml*/ (#set! injection.language "xml") ) ; INJECT HTML ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*html\\s*\\*\\/") ; /* html */ or /*html*/ + (#match? @_comment "^\\/\\*\\s*html\\s*\\*\\/") ; /* html */ or /*html*/ (#set! injection.language "html") ) ; INJECT JS ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*js\\s*\\*\\/") ; /* js */ or /*js*/ + (#match? @_comment "^\\/\\*\\s*js\\s*\\*\\/") ; /* js */ or /*js*/ (#set! injection.language "javascript") ) + ; INJECT CSS ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*css\\s*\\*\\/") ; /* css */ or /*css*/ + (#match? @_comment "^\\/\\*\\s*css\\s*\\*\\/") ; /* css */ or /*css*/ (#set! injection.language "css") ) + ; INJECT LUA ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*lua\\s*\\*\\/") ; /* lua */ or /*lua*/ + (#match? @_comment "^\\/\\*\\s*lua\\s*\\*\\/") ; /* lua */ or /*lua*/ (#set! injection.language "lua") ) ; INJECT BASH ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (composite_literal + body: (literal_value + (keyed_element + (comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )))) + + (expression_statement + (call_expression + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ))) ] - - (#match? @comment "^\\/\\*\\s*bash\\s*\\*\\/") ; /* bash */ or /*bash*/ + (#match? @_comment "^\\/\\*\\s*bash\\s*\\*\\/") ; /* bash */ or /*bash*/ (#set! injection.language "bash") ) ; INJECT CSV ( - [ - ; var, const or short declaration of raw or interpreted string literal - ((comment) @comment - . - (expression_list - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + [ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a literal element (to struct field eg.) - ((comment) @comment - . - (literal_element - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] )) - ; when passing as a function parameter - ((comment) @comment - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @injection.content) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + ((comment) @_comment + value: (literal_element + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + )) + + (argument_list + (comment) @_comment + [ + (interpreted_string_literal (interpreted_string_literal_content) @injection.content) + (raw_string_literal (raw_string_literal_content) @injection.content) + ] + ) ] - - (#match? @comment "^\\/\\*\\s*csv\\s*\\*\\/") ; /* csv */ or /*csv*/ + (#match? @_comment "^\\/\\*\\s*csv\\s*\\*\\/") ; /* csv */ or /*csv */ (#set! injection.language "csv") )