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