go: Fix language injections (#43775)
Jeff Brennan
created
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
Change summary
crates/languages/src/go/injections.scm | 959 +++++++++++++++++++--------
1 file changed, 658 insertions(+), 301 deletions(-)
Detailed changes
@@ -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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*sql\\s*\\*\\/") ; /* sql */ or /*sql*/
- (#set! injection.language "sql")
+ (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*\\*\\/$")
+ (#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*json\\s*\\*\\/") ; /* json */ or /*json*/
+ (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)
+ ]
+ ))
+
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*yaml\\s*\\*\\/") ; /* yaml */ or /*yaml*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*xml\\s*\\*\\/") ; /* xml */ or /*xml*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*html\\s*\\*\\/") ; /* html */ or /*html*/
+ (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)
+ ]
+ ))
+
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*js\\s*\\*\\/") ; /* js */ or /*js*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*css\\s*\\*\\/") ; /* css */ or /*css*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*lua\\s*\\*\\/") ; /* lua */ or /*lua*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
+
+ (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*bash\\s*\\*\\/") ; /* bash */ or /*bash*/
+ (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*/
(#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
- ))
-
- ; when passing as a literal element (to struct field eg.)
- ((comment) @comment
- .
- (literal_element
- [
- (interpreted_string_literal)
- (raw_string_literal)
- ] @injection.content
- ))
-
- ; when passing as a function parameter
- ((comment) @comment
- .
- [
- (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)
+ ]
+ ))
- (#match? @comment "^\\/\\*\\s*csv\\s*\\*\\/") ; /* csv */ or /*csv*/
+ (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)
+ ]
+ ))
+
+ (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 */
(#set! injection.language "csv")
)