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:
@@ -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")
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user