1; Refer to https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/go/injections.scm#L4C1-L16C41
2((comment) @injection.content
3 (#set! injection.language "comment")
4)
5
6(call_expression
7 (selector_expression) @_function
8 (#any-of? @_function
9 "regexp.Match" "regexp.MatchReader" "regexp.MatchString" "regexp.Compile" "regexp.CompilePOSIX"
10 "regexp.MustCompile" "regexp.MustCompilePOSIX")
11 (argument_list
12 .
13 [
14 (raw_string_literal)
15 (interpreted_string_literal)
16 ] @injection.content
17 (#set! injection.language "regex")
18 ))
19
20; INJECT SQL
21(
22 [
23 (const_spec
24 name: (identifier)
25 "="
26 (comment) @_comment
27 value: (expression_list
28 [
29 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
30 (raw_string_literal (raw_string_literal_content) @injection.content)
31 ]
32 ))
33
34 (var_spec
35 name: (identifier)
36 "="
37 (comment) @_comment
38 value: (expression_list
39 [
40 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
41 (raw_string_literal (raw_string_literal_content) @injection.content)
42 ]
43 ))
44
45 (assignment_statement
46 left: (expression_list)
47 "="
48 (comment) @_comment
49 right: (expression_list
50 [
51 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
52 (raw_string_literal (raw_string_literal_content) @injection.content)
53 ]
54 ))
55
56 (short_var_declaration
57 left: (expression_list)
58 ":="
59 (comment) @_comment
60 right: (expression_list
61 [
62 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
63 (raw_string_literal (raw_string_literal_content) @injection.content)
64 ]
65 ))
66
67 (composite_literal
68 body: (literal_value
69 (keyed_element
70 (comment) @_comment
71 value: (literal_element
72 [
73 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
74 (raw_string_literal (raw_string_literal_content) @injection.content)
75 ]
76 ))))
77
78 (expression_statement
79 (call_expression
80 (argument_list
81 (comment) @_comment
82 [
83 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
84 (raw_string_literal (raw_string_literal_content) @injection.content)
85 ]
86 )))
87 ]
88 (#match? @_comment "^\\/\\*\\s*sql\\s*\\*\\/$")
89 (#set! injection.language "sql")
90)
91
92; INJECT JSON
93(
94 [
95 (const_spec
96 name: (identifier)
97 "="
98 (comment) @_comment
99 value: (expression_list
100 [
101 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
102 (raw_string_literal (raw_string_literal_content) @injection.content)
103 ]
104 ))
105
106 (var_spec
107 name: (identifier)
108 "="
109 (comment) @_comment
110 value: (expression_list
111 [
112 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
113 (raw_string_literal (raw_string_literal_content) @injection.content)
114 ]
115 ))
116
117 (assignment_statement
118 left: (expression_list)
119 "="
120 (comment) @_comment
121 right: (expression_list
122 [
123 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
124 (raw_string_literal (raw_string_literal_content) @injection.content)
125 ]
126 ))
127
128 (short_var_declaration
129 left: (expression_list)
130 ":="
131 (comment) @_comment
132 right: (expression_list
133 [
134 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
135 (raw_string_literal (raw_string_literal_content) @injection.content)
136 ]
137 ))
138
139 (composite_literal
140 body: (literal_value
141 (keyed_element
142 (comment) @_comment
143 value: (literal_element
144 [
145 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
146 (raw_string_literal (raw_string_literal_content) @injection.content)
147 ]
148 ))))
149
150 (expression_statement
151 (call_expression
152 (argument_list
153 (comment) @_comment
154 [
155 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
156 (raw_string_literal (raw_string_literal_content) @injection.content)
157 ]
158 )))
159 ]
160 (#match? @_comment "^\\/\\*\\s*json\\s*\\*\\/") ; /* json */ or /*json*/
161 (#set! injection.language "json")
162)
163
164; INJECT YAML
165(
166 [
167 (const_spec
168 name: (identifier)
169 "="
170 (comment) @_comment
171 value: (expression_list
172 [
173 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
174 (raw_string_literal (raw_string_literal_content) @injection.content)
175 ]
176 ))
177
178 (var_spec
179 name: (identifier)
180 "="
181 (comment) @_comment
182 value: (expression_list
183 [
184 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
185 (raw_string_literal (raw_string_literal_content) @injection.content)
186 ]
187 ))
188
189 (assignment_statement
190 left: (expression_list)
191 "="
192 (comment) @_comment
193 right: (expression_list
194 [
195 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
196 (raw_string_literal (raw_string_literal_content) @injection.content)
197 ]
198 ))
199
200 (short_var_declaration
201 left: (expression_list)
202 ":="
203 (comment) @_comment
204 right: (expression_list
205 [
206 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
207 (raw_string_literal (raw_string_literal_content) @injection.content)
208 ]
209 ))
210
211 (composite_literal
212 body: (literal_value
213 (keyed_element
214 (comment) @_comment
215 value: (literal_element
216 [
217 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
218 (raw_string_literal (raw_string_literal_content) @injection.content)
219 ]
220 ))))
221
222 (expression_statement
223 (call_expression
224 (argument_list
225 (comment) @_comment
226 [
227 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
228 (raw_string_literal (raw_string_literal_content) @injection.content)
229 ]
230 )))
231 ]
232 (#match? @_comment "^\\/\\*\\s*yaml\\s*\\*\\/") ; /* yaml */ or /*yaml*/
233 (#set! injection.language "yaml")
234)
235
236; INJECT XML
237(
238 [
239 (const_spec
240 name: (identifier)
241 "="
242 (comment) @_comment
243 value: (expression_list
244 [
245 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
246 (raw_string_literal (raw_string_literal_content) @injection.content)
247 ]
248 ))
249
250 (var_spec
251 name: (identifier)
252 "="
253 (comment) @_comment
254 value: (expression_list
255 [
256 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
257 (raw_string_literal (raw_string_literal_content) @injection.content)
258 ]
259 ))
260
261 (assignment_statement
262 left: (expression_list)
263 "="
264 (comment) @_comment
265 right: (expression_list
266 [
267 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
268 (raw_string_literal (raw_string_literal_content) @injection.content)
269 ]
270 ))
271
272 (short_var_declaration
273 left: (expression_list)
274 ":="
275 (comment) @_comment
276 right: (expression_list
277 [
278 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
279 (raw_string_literal (raw_string_literal_content) @injection.content)
280 ]
281 ))
282
283 (composite_literal
284 body: (literal_value
285 (keyed_element
286 (comment) @_comment
287 value: (literal_element
288 [
289 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
290 (raw_string_literal (raw_string_literal_content) @injection.content)
291 ]
292 ))))
293
294 (expression_statement
295 (call_expression
296 (argument_list
297 (comment) @_comment
298 [
299 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
300 (raw_string_literal (raw_string_literal_content) @injection.content)
301 ]
302 )))
303 ]
304 (#match? @_comment "^\\/\\*\\s*xml\\s*\\*\\/") ; /* xml */ or /*xml*/
305 (#set! injection.language "xml")
306)
307
308; INJECT HTML
309(
310 [
311 (const_spec
312 name: (identifier)
313 "="
314 (comment) @_comment
315 value: (expression_list
316 [
317 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
318 (raw_string_literal (raw_string_literal_content) @injection.content)
319 ]
320 ))
321
322 (var_spec
323 name: (identifier)
324 "="
325 (comment) @_comment
326 value: (expression_list
327 [
328 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
329 (raw_string_literal (raw_string_literal_content) @injection.content)
330 ]
331 ))
332
333 (assignment_statement
334 left: (expression_list)
335 "="
336 (comment) @_comment
337 right: (expression_list
338 [
339 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
340 (raw_string_literal (raw_string_literal_content) @injection.content)
341 ]
342 ))
343
344 (short_var_declaration
345 left: (expression_list)
346 ":="
347 (comment) @_comment
348 right: (expression_list
349 [
350 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
351 (raw_string_literal (raw_string_literal_content) @injection.content)
352 ]
353 ))
354
355 (composite_literal
356 body: (literal_value
357 (keyed_element
358 (comment) @_comment
359 value: (literal_element
360 [
361 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
362 (raw_string_literal (raw_string_literal_content) @injection.content)
363 ]
364 ))))
365
366 (expression_statement
367 (call_expression
368 (argument_list
369 (comment) @_comment
370 [
371 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
372 (raw_string_literal (raw_string_literal_content) @injection.content)
373 ]
374 )))
375 ]
376 (#match? @_comment "^\\/\\*\\s*html\\s*\\*\\/") ; /* html */ or /*html*/
377 (#set! injection.language "html")
378)
379
380; INJECT JS
381(
382 [
383 (const_spec
384 name: (identifier)
385 "="
386 (comment) @_comment
387 value: (expression_list
388 [
389 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
390 (raw_string_literal (raw_string_literal_content) @injection.content)
391 ]
392 ))
393
394 (var_spec
395 name: (identifier)
396 "="
397 (comment) @_comment
398 value: (expression_list
399 [
400 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
401 (raw_string_literal (raw_string_literal_content) @injection.content)
402 ]
403 ))
404
405 (assignment_statement
406 left: (expression_list)
407 "="
408 (comment) @_comment
409 right: (expression_list
410 [
411 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
412 (raw_string_literal (raw_string_literal_content) @injection.content)
413 ]
414 ))
415
416 (short_var_declaration
417 left: (expression_list)
418 ":="
419 (comment) @_comment
420 right: (expression_list
421 [
422 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
423 (raw_string_literal (raw_string_literal_content) @injection.content)
424 ]
425 ))
426
427 (composite_literal
428 body: (literal_value
429 (keyed_element
430 (comment) @_comment
431 value: (literal_element
432 [
433 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
434 (raw_string_literal (raw_string_literal_content) @injection.content)
435 ]
436 ))))
437
438 (expression_statement
439 (call_expression
440 (argument_list
441 (comment) @_comment
442 [
443 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
444 (raw_string_literal (raw_string_literal_content) @injection.content)
445 ]
446 )))
447 ]
448 (#match? @_comment "^\\/\\*\\s*js\\s*\\*\\/") ; /* js */ or /*js*/
449 (#set! injection.language "javascript")
450)
451
452
453; INJECT CSS
454(
455 [
456 (const_spec
457 name: (identifier)
458 "="
459 (comment) @_comment
460 value: (expression_list
461 [
462 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
463 (raw_string_literal (raw_string_literal_content) @injection.content)
464 ]
465 ))
466
467 (var_spec
468 name: (identifier)
469 "="
470 (comment) @_comment
471 value: (expression_list
472 [
473 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
474 (raw_string_literal (raw_string_literal_content) @injection.content)
475 ]
476 ))
477
478 (assignment_statement
479 left: (expression_list)
480 "="
481 (comment) @_comment
482 right: (expression_list
483 [
484 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
485 (raw_string_literal (raw_string_literal_content) @injection.content)
486 ]
487 ))
488
489 (short_var_declaration
490 left: (expression_list)
491 ":="
492 (comment) @_comment
493 right: (expression_list
494 [
495 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
496 (raw_string_literal (raw_string_literal_content) @injection.content)
497 ]
498 ))
499
500 (composite_literal
501 body: (literal_value
502 (keyed_element
503 (comment) @_comment
504 value: (literal_element
505 [
506 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
507 (raw_string_literal (raw_string_literal_content) @injection.content)
508 ]
509 ))))
510
511 (expression_statement
512 (call_expression
513 (argument_list
514 (comment) @_comment
515 [
516 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
517 (raw_string_literal (raw_string_literal_content) @injection.content)
518 ]
519 )))
520 ]
521 (#match? @_comment "^\\/\\*\\s*css\\s*\\*\\/") ; /* css */ or /*css*/
522 (#set! injection.language "css")
523)
524
525
526; INJECT LUA
527(
528 [
529 (const_spec
530 name: (identifier)
531 "="
532 (comment) @_comment
533 value: (expression_list
534 [
535 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
536 (raw_string_literal (raw_string_literal_content) @injection.content)
537 ]
538 ))
539
540 (var_spec
541 name: (identifier)
542 "="
543 (comment) @_comment
544 value: (expression_list
545 [
546 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
547 (raw_string_literal (raw_string_literal_content) @injection.content)
548 ]
549 ))
550
551 (assignment_statement
552 left: (expression_list)
553 "="
554 (comment) @_comment
555 right: (expression_list
556 [
557 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
558 (raw_string_literal (raw_string_literal_content) @injection.content)
559 ]
560 ))
561
562 (short_var_declaration
563 left: (expression_list)
564 ":="
565 (comment) @_comment
566 right: (expression_list
567 [
568 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
569 (raw_string_literal (raw_string_literal_content) @injection.content)
570 ]
571 ))
572
573 (composite_literal
574 body: (literal_value
575 (keyed_element
576 (comment) @_comment
577 value: (literal_element
578 [
579 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
580 (raw_string_literal (raw_string_literal_content) @injection.content)
581 ]
582 ))))
583
584 (expression_statement
585 (call_expression
586 (argument_list
587 (comment) @_comment
588 [
589 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
590 (raw_string_literal (raw_string_literal_content) @injection.content)
591 ]
592 )))
593 ]
594 (#match? @_comment "^\\/\\*\\s*lua\\s*\\*\\/") ; /* lua */ or /*lua*/
595 (#set! injection.language "lua")
596)
597
598; INJECT BASH
599(
600 [
601 (const_spec
602 name: (identifier)
603 "="
604 (comment) @_comment
605 value: (expression_list
606 [
607 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
608 (raw_string_literal (raw_string_literal_content) @injection.content)
609 ]
610 ))
611
612 (var_spec
613 name: (identifier)
614 "="
615 (comment) @_comment
616 value: (expression_list
617 [
618 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
619 (raw_string_literal (raw_string_literal_content) @injection.content)
620 ]
621 ))
622
623 (assignment_statement
624 left: (expression_list)
625 "="
626 (comment) @_comment
627 right: (expression_list
628 [
629 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
630 (raw_string_literal (raw_string_literal_content) @injection.content)
631 ]
632 ))
633
634 (short_var_declaration
635 left: (expression_list)
636 ":="
637 (comment) @_comment
638 right: (expression_list
639 [
640 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
641 (raw_string_literal (raw_string_literal_content) @injection.content)
642 ]
643 ))
644
645 (composite_literal
646 body: (literal_value
647 (keyed_element
648 (comment) @_comment
649 value: (literal_element
650 [
651 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
652 (raw_string_literal (raw_string_literal_content) @injection.content)
653 ]
654 ))))
655
656 (expression_statement
657 (call_expression
658 (argument_list
659 (comment) @_comment
660 [
661 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
662 (raw_string_literal (raw_string_literal_content) @injection.content)
663 ]
664 )))
665 ]
666 (#match? @_comment "^\\/\\*\\s*bash\\s*\\*\\/") ; /* bash */ or /*bash*/
667 (#set! injection.language "bash")
668)
669
670; INJECT CSV
671(
672 [
673 (const_spec
674 name: (identifier)
675 "="
676 (comment) @_comment
677 value: (expression_list
678 [
679 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
680 (raw_string_literal (raw_string_literal_content) @injection.content)
681 ]
682 ))
683
684 (var_spec
685 name: (identifier)
686 "="
687 (comment) @_comment
688 value: (expression_list
689 [
690 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
691 (raw_string_literal (raw_string_literal_content) @injection.content)
692 ]
693 ))
694
695 (assignment_statement
696 left: (expression_list)
697 "="
698 (comment) @_comment
699 right: (expression_list
700 [
701 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
702 (raw_string_literal (raw_string_literal_content) @injection.content)
703 ]
704 ))
705
706 (short_var_declaration
707 left: (expression_list)
708 ":="
709 (comment) @_comment
710 right: (expression_list
711 [
712 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
713 (raw_string_literal (raw_string_literal_content) @injection.content)
714 ]
715 ))
716
717 ((comment) @_comment
718 value: (literal_element
719 [
720 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
721 (raw_string_literal (raw_string_literal_content) @injection.content)
722 ]
723 ))
724
725 (argument_list
726 (comment) @_comment
727 [
728 (interpreted_string_literal (interpreted_string_literal_content) @injection.content)
729 (raw_string_literal (raw_string_literal_content) @injection.content)
730 ]
731 )
732 ]
733 (#match? @_comment "^\\/\\*\\s*csv\\s*\\*\\/") ; /* csv */ or /*csv */
734 (#set! injection.language "csv")
735)