diff options
author | Leonardo EugĂȘnio | 2024-03-17 23:07:09 +0000 |
---|---|---|
committer | GitHub | 2024-03-17 23:07:09 +0000 |
commit | d99b6177c21df836c80cc60a500c73d64a7f9bfd (patch) | |
tree | db329bf47f070daa3b16a10648a7c943fe53c01a /runtime | |
parent | eead105f94c552259cdbf1f572d047cbabb24c49 (diff) |
Add blade support (#9513)
* Add php-only language config and queries
php-only is required enabling php injections like in blade templates
* Add blade templates support
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/queries/blade/folds.scm | 8 | ||||
-rw-r--r-- | runtime/queries/blade/highlights.scm | 4 | ||||
-rw-r--r-- | runtime/queries/blade/injections.scm | 9 | ||||
-rw-r--r-- | runtime/queries/php-only/highlights.scm | 123 | ||||
-rw-r--r-- | runtime/queries/php-only/injections.scm | 10 | ||||
-rw-r--r-- | runtime/queries/php-only/tags.scm | 40 |
6 files changed, 194 insertions, 0 deletions
diff --git a/runtime/queries/blade/folds.scm b/runtime/queries/blade/folds.scm new file mode 100644 index 00000000..c1711482 --- /dev/null +++ b/runtime/queries/blade/folds.scm @@ -0,0 +1,8 @@ +((directive_start) @start + (directive_end) @end.after + (#set! role block)) + + +((bracket_start) @start + (bracket_end) @end + (#set! role block))
\ No newline at end of file diff --git a/runtime/queries/blade/highlights.scm b/runtime/queries/blade/highlights.scm new file mode 100644 index 00000000..b3d442a0 --- /dev/null +++ b/runtime/queries/blade/highlights.scm @@ -0,0 +1,4 @@ +(directive) @tag +(directive_start) @tag +(directive_end) @tag +(comment) @comment diff --git a/runtime/queries/blade/injections.scm b/runtime/queries/blade/injections.scm new file mode 100644 index 00000000..4c636734 --- /dev/null +++ b/runtime/queries/blade/injections.scm @@ -0,0 +1,9 @@ +((text) @injection.content + (#set! injection.combined) + (#set! injection.language php)) + +((php_only) @injection.content + (#set! injection.language php-only)) +((parameter) @injection.content + (#set! injection.language php-only)) + diff --git a/runtime/queries/php-only/highlights.scm b/runtime/queries/php-only/highlights.scm new file mode 100644 index 00000000..9fdbe029 --- /dev/null +++ b/runtime/queries/php-only/highlights.scm @@ -0,0 +1,123 @@ +(php_tag) @tag +"?>" @tag + +; Types + +(primitive_type) @type.builtin +(cast_type) @type.builtin +(named_type (name) @type) @type +(named_type (qualified_name) @type) @type + +; Functions + +(array_creation_expression "array" @function.builtin) +(list_literal "list" @function.builtin) + +(method_declaration + name: (name) @function.method) + +(function_call_expression + function: [(qualified_name (name)) (name)] @function) + +(scoped_call_expression + name: (name) @function) + +(member_call_expression + name: (name) @function.method) + +(function_definition + name: (name) @function) + +; Member + +(property_element + (variable_name) @variable.other.member) + +(member_access_expression + name: (variable_name (name)) @variable.other.member) +(member_access_expression + name: (name) @variable.other.member) + +; Variables + +(relative_scope) @variable.builtin + +((name) @constant + (#match? @constant "^_?[A-Z][A-Z\\d_]+$")) +((name) @constant.builtin + (#match? @constant.builtin "^__[A-Z][A-Z\d_]+__$")) + +((name) @constructor + (#match? @constructor "^[A-Z]")) + +((name) @variable.builtin + (#eq? @variable.builtin "this")) + +(variable_name) @variable + +; Basic tokens +[ + (string) + (string_value) + (encapsed_string) + (heredoc) + (heredoc_body) + (nowdoc_body) +] @string +(boolean) @constant.builtin.boolean +(null) @constant.builtin +(integer) @constant.builtin.integer +(float) @constant.builtin.float +(comment) @comment + +"$" @operator + +; Keywords + +"abstract" @keyword +"as" @keyword +"break" @keyword +"case" @keyword +"catch" @keyword +"class" @keyword +"const" @keyword +"continue" @keyword +"declare" @keyword +"default" @keyword +"do" @keyword +"echo" @keyword +"else" @keyword +"elseif" @keyword +"enddeclare" @keyword +"endforeach" @keyword +"endif" @keyword +"endswitch" @keyword +"endwhile" @keyword +"extends" @keyword +"final" @keyword +"finally" @keyword +"for" @keyword +"foreach" @keyword +"function" @keyword +"global" @keyword +"if" @keyword +"implements" @keyword +"include_once" @keyword +"include" @keyword +"insteadof" @keyword +"interface" @keyword +"namespace" @keyword +"new" @keyword +"private" @keyword +"protected" @keyword +"public" @keyword +"require_once" @keyword +"require" @keyword +"return" @keyword +"static" @keyword +"switch" @keyword +"throw" @keyword +"trait" @keyword +"try" @keyword +"use" @keyword +"while" @keyword diff --git a/runtime/queries/php-only/injections.scm b/runtime/queries/php-only/injections.scm new file mode 100644 index 00000000..75150f71 --- /dev/null +++ b/runtime/queries/php-only/injections.scm @@ -0,0 +1,10 @@ +((comment) @injection.content + (#set! injection.language "comment")) + +(heredoc + (heredoc_body) @injection.content + (heredoc_end) @injection.language) + +(nowdoc + (nowdoc_body) @injection.content + (heredoc_end) @injection.language) diff --git a/runtime/queries/php-only/tags.scm b/runtime/queries/php-only/tags.scm new file mode 100644 index 00000000..66d594c2 --- /dev/null +++ b/runtime/queries/php-only/tags.scm @@ -0,0 +1,40 @@ +(namespace_definition + name: (namespace_name) @name) @module + +(interface_declaration + name: (name) @name) @definition.interface + +(trait_declaration + name: (name) @name) @definition.interface + +(class_declaration + name: (name) @name) @definition.class + +(class_interface_clause [(name) (qualified_name)] @name) @impl + +(property_declaration + (property_element (variable_name (name) @name))) @definition.field + +(function_definition + name: (name) @name) @definition.function + +(method_declaration + name: (name) @name) @definition.function + +(object_creation_expression + [ + (qualified_name (name) @name) + (variable_name (name) @name) + ]) @reference.class + +(function_call_expression + function: [ + (qualified_name (name) @name) + (variable_name (name)) @name + ]) @reference.call + +(scoped_call_expression + name: (name) @name) @reference.call + +(member_call_expression + name: (name) @name) @reference.call |