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

<details><summary>This PR</summary>

<img width="567" height="784" alt="image"
src="https://github.com/user-attachments/assets/bfe8c64e-1dc2-470c-9f85-2c664a6c5a15"
/>
<img width="383" height="909" alt="image"
src="https://github.com/user-attachments/assets/9349af8c-22d3-4c9b-a435-a73719f17ba3"
/>
<img width="572" height="800" alt="image"
src="https://github.com/user-attachments/assets/939ada3b-1440-443b-8492-0eb61a7ee90f"
/>

</details>

<details><summary>Current Release (0.214.7)</summary>

<img width="569" height="777" alt="image"
src="https://github.com/user-attachments/assets/e6fffe77-e4c6-48e3-9c6d-a140298225c5"
/>
<img width="381" height="896" alt="image"
src="https://github.com/user-attachments/assets/bf107950-c33a-4603-90d3-2304bef0a4af"
/>
<img width="574" height="798" alt="image"
src="https://github.com/user-attachments/assets/2c5e43e5-f101-4722-8f58-6b176ba950ca"
/>

</details>

<details><summary>Code</summary>

```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; }"
}
```

</details>

Release Notes:

- Greatly improved the quality of comment-directed language injections
in Go
This commit is contained in:
Jeff Brennan
2025-12-03 10:32:51 -06:00
committed by GitHub
parent c248a956e0
commit 621ac16e35
+618 -261
View File
@@ -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")
)