Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/blade/injections.scm')
| -rw-r--r-- | runtime/queries/blade/injections.scm | 106 |
1 files changed, 100 insertions, 6 deletions
diff --git a/runtime/queries/blade/injections.scm b/runtime/queries/blade/injections.scm index 77cf9eef..b37c18a7 100644 --- a/runtime/queries/blade/injections.scm +++ b/runtime/queries/blade/injections.scm @@ -1,14 +1,108 @@ -((text) @injection.content - (#set! injection.combined) - (#set! injection.language "php")) +; inherits: html +; tree-sitter-comment injection +; if available ((comment) @injection.content (#set! injection.language "comment")) ((php_only) @injection.content (#set! injection.language "php-only")) -((parameter) @injection.content - (#set! injection.include-children) - (#set! injection.language "php-only")) +((parameter) @injection.content + (#set! injection.include-children) ; You may need this, depending on your editor e.g Helix + (#set! injection.language "php-only")) + +; ; Livewire attributes +(attribute + (attribute_name) @_attr + (#any-of? @_attr + "wire:click" + "wire:submit" + "wire:model" + "wire:loading" + "wire:navigate" + "wire:current" + "wire:cloak" + "wire:dirty" + "wire:confirm" + "wire:transition" + "wire:init" + "wire:poll" + "wire:offline" + "wire:ignore" + "wire:replace" + "wire:show" + "wire:stream" + "wire:text" + ) + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript")) + +; ; See #33 +; ; AlpineJS attributes +(attribute + (attribute_name) @_attr + (#match? @_attr "^x-[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript")) + +; ; Apline Events +(attribute + (attribute_name) @_attr + (#match? @_attr "^@[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript")) + +; ; normal HTML element alpine attributes +(element + (_ + (tag_name) @_tag + (#match? @_tag "[^x][^-]") + (attribute + (attribute_name) @_attr + (#match? @_attr "^:[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.combined) + (#set! injection.language "javascript")))) + +; ; ; Blade escaped JS attributes +; ; <x-foo ::bar="baz" /> +(element + (_ + (tag_name) @_tag + (#match? @_tag "^x-[a-z]+") + (attribute + (attribute_name) @_attr + (#match? @_attr "^::[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript")))) + + +; ; ; Blade escaped JS attributes +; ; <htmlTag :class="baz" /> +(element + (_ + (attribute_name) @_attr + (#match? @_attr "^:[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript"))) + + +; Blade PHP attributes +(element + (_ + (tag_name) @_tag + (#match? @_tag "^x-[a-z]+") + (attribute + (attribute_name) @_attr + (#match? @_attr "^:[a-z]+") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "php-only")))) |