From d99b6177c21df836c80cc60a500c73d64a7f9bfd Mon Sep 17 00:00:00 2001 From: Leonardo EugĂȘnio Date: Sun, 17 Mar 2024 20:07:09 -0300 Subject: 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--- runtime/queries/php-only/highlights.scm | 123 ++++++++++++++++++++++++++++++++ runtime/queries/php-only/injections.scm | 10 +++ runtime/queries/php-only/tags.scm | 40 +++++++++++ 3 files changed, 173 insertions(+) create mode 100644 runtime/queries/php-only/highlights.scm create mode 100644 runtime/queries/php-only/injections.scm create mode 100644 runtime/queries/php-only/tags.scm (limited to 'runtime/queries/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 -- cgit v1.2.3-70-g09d2