diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-12 09:54:30 -0600 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 692b051b09935653befdb8f7ba8afdb640adf17b (patch) | |
| tree | 167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/php_only | |
| parent | feat(c-family): inherit injections (diff) | |
| download | nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2 nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip | |
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/php_only')
| -rw-r--r-- | runtime/queries/php_only/folds.scm | 17 | ||||
| -rw-r--r-- | runtime/queries/php_only/highlights.scm | 479 | ||||
| -rw-r--r-- | runtime/queries/php_only/indents.scm | 68 | ||||
| -rw-r--r-- | runtime/queries/php_only/injections.scm | 43 | ||||
| -rw-r--r-- | runtime/queries/php_only/locals.scm | 84 |
5 files changed, 691 insertions, 0 deletions
diff --git a/runtime/queries/php_only/folds.scm b/runtime/queries/php_only/folds.scm new file mode 100644 index 000000000..43453b174 --- /dev/null +++ b/runtime/queries/php_only/folds.scm @@ -0,0 +1,17 @@ +[ + (if_statement) + (switch_statement) + (while_statement) + (do_statement) + (for_statement) + (foreach_statement) + (try_statement) + (function_definition) + (class_declaration) + (interface_declaration) + (trait_declaration) + (enum_declaration) + (function_static_declaration) + (method_declaration) + (namespace_use_declaration)+ +] @fold diff --git a/runtime/queries/php_only/highlights.scm b/runtime/queries/php_only/highlights.scm new file mode 100644 index 000000000..2d473dd0c --- /dev/null +++ b/runtime/queries/php_only/highlights.scm @@ -0,0 +1,479 @@ +; Keywords +[ + "and" + "as" + "instanceof" + "or" + "xor" +] @keyword.operator + +[ + "fn" + "function" +] @keyword.function + +[ + "clone" + "declare" + "default" + "echo" + "enddeclare" + "extends" + "global" + "goto" + "implements" + "insteadof" + "print" + "new" + "unset" +] @keyword + +[ + "enum" + "class" + "interface" + "namespace" + "trait" +] @keyword.type + +[ + "abstract" + "const" + "final" + "private" + "protected" + "public" + "readonly" + (static_modifier) +] @keyword.modifier + +(function_static_declaration + "static" @keyword.modifier) + +[ + "return" + "exit" + "yield" +] @keyword.return + +(yield_expression + "from" @keyword.return) + +[ + "case" + "else" + "elseif" + "endif" + "endswitch" + "if" + "switch" + "match" + "??" +] @keyword.conditional + +[ + "break" + "continue" + "do" + "endfor" + "endforeach" + "endwhile" + "for" + "foreach" + "while" +] @keyword.repeat + +[ + "catch" + "finally" + "throw" + "try" +] @keyword.exception + +[ + "include_once" + "include" + "require_once" + "require" + "use" +] @keyword.import + +[ + "," + ";" + ":" + "\\" +] @punctuation.delimiter + +[ + (php_tag) + "?>" + "(" + ")" + "[" + "]" + "{" + "}" + "#[" +] @punctuation.bracket + +[ + "=" + "." + "-" + "*" + "/" + "+" + "%" + "**" + "~" + "|" + "^" + "&" + "<<" + ">>" + "<<<" + "->" + "?->" + "=>" + "<" + "<=" + ">=" + ">" + "<>" + "<=>" + "==" + "!=" + "===" + "!==" + "!" + "&&" + "||" + ".=" + "-=" + "+=" + "*=" + "/=" + "%=" + "**=" + "&=" + "|=" + "^=" + "<<=" + ">>=" + "??=" + "--" + "++" + "@" + "::" +] @operator + +; Variables +(variable_name) @variable + +; Constants +((name) @constant + (#lua-match? @constant "^_?[A-Z][A-Z%d_]*$")) + +((name) @constant.builtin + (#lua-match? @constant.builtin "^__[A-Z][A-Z%d_]+__$")) + +(const_declaration + (const_element + (name) @constant)) + +; Types +[ + (primitive_type) + (cast_type) + (bottom_type) +] @type.builtin + +(named_type + [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +(named_type + (name) @type.builtin + (#any-of? @type.builtin "static" "self")) + +(class_declaration + name: (name) @type) + +(base_clause + [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +(enum_declaration + name: (name) @type) + +(interface_declaration + name: (name) @type) + +(namespace_use_clause + [ + (name) @type + (qualified_name + (name) @type) + alias: (name) @type.definition + ]) + +(namespace_use_clause + type: "function" + [ + (name) @function + (qualified_name + (name) @function) + alias: (name) @function + ]) + +(namespace_use_declaration + type: "function" + body: (namespace_use_group + (namespace_use_clause + [ + (name) @function + (qualified_name + (name) @function) + alias: (name) @function + ]))) + +(namespace_use_clause + type: "const" + [ + (name) @constant + (qualified_name + (name) @constant) + alias: (name) @constant + ]) + +(namespace_use_declaration + type: "const" + body: (namespace_use_group + (namespace_use_clause + [ + (name) @constant + (qualified_name + (name) @constant) + alias: (name) @constant + ]))) + +(class_interface_clause + [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +(scoped_call_expression + scope: [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +(class_constant_access_expression + . + [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ] + (name) @constant) + +(scoped_property_access_expression + scope: [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +(scoped_property_access_expression + name: (variable_name) @variable.member) + +(trait_declaration + name: (name) @type) + +(use_declaration + (name) @type) + +(binary_expression + operator: "instanceof" + right: [ + (name) @type + (qualified_name + (name) @type) + (relative_name + (name) @type) + ]) + +; Functions, methods, constructors +(array_creation_expression + "array" @function.builtin) + +(list_literal + "list" @function.builtin) + +(exit_statement + "exit" @function.builtin + "(") + +(method_declaration + name: (name) @function.method) + +(function_call_expression + function: [ + (name) @function.call + (qualified_name + (name) @function.call) + (relative_name + (name) @function.call) + ]) + +(scoped_call_expression + name: (name) @function.call) + +(member_call_expression + name: (name) @function.method.call) + +(function_definition + name: (name) @function) + +(nullsafe_member_call_expression + name: (name) @function.method) + +(use_instead_of_clause + (class_constant_access_expression + (_) + (name) @function.method) + (name) @type) + +(use_as_clause + (class_constant_access_expression + (_) + (name) @function.method)* + (name) @function.method) + +(method_declaration + name: (name) @constructor + (#eq? @constructor "__construct")) + +(object_creation_expression + [ + (name) @constructor + (qualified_name + (name) @constructor) + (relative_name + (name) @constructor) + ]) + +; Parameters +(variadic_parameter + "..." @operator + name: (variable_name) @variable.parameter) + +(simple_parameter + name: (variable_name) @variable.parameter) + +(argument + (name) @variable.parameter) + +; Member +(property_element + (variable_name) @property) + +(member_access_expression + name: (variable_name + (name)) @variable.member) + +(member_access_expression + name: (name) @variable.member) + +(nullsafe_member_access_expression + name: (variable_name + (name)) @variable.member) + +(nullsafe_member_access_expression + name: (name) @variable.member) + +; Variables +(relative_scope) @variable.builtin + +((variable_name) @variable.builtin + (#eq? @variable.builtin "$this")) + +; Namespace +(namespace_definition + name: (namespace_name + (name) @module)) + +(namespace_name + (name) @module) + +(relative_name + "namespace" @module.builtin) + +; Attributes +(attribute_list) @attribute + +; Conditions ( ? : ) +(conditional_expression + "?" @keyword.conditional.ternary + ":" @keyword.conditional.ternary) + +; Directives +(declare_directive + [ + "strict_types" + "ticks" + "encoding" + ] @variable.parameter) + +; Basic tokens +[ + (string) + (encapsed_string) + (heredoc_body) + (nowdoc_body) + (shell_command_expression) ; backtick operator: `ls -la` +] @string + +(escape_sequence) @string.escape + +[ + (heredoc_start) + (heredoc_end) +] @label + +(nowdoc + "'" @label) + +(boolean) @boolean + +(null) @constant.builtin + +(integer) @number + +(float) @number.float + +(comment) @comment @spell + +(named_label_statement) @label diff --git a/runtime/queries/php_only/indents.scm b/runtime/queries/php_only/indents.scm new file mode 100644 index 000000000..1755d4285 --- /dev/null +++ b/runtime/queries/php_only/indents.scm @@ -0,0 +1,68 @@ +[ + (array_creation_expression) + (parenthesized_expression) + (compound_statement) + (declaration_list) + (member_call_expression) + (binary_expression) + (return_statement) + (arguments) + (formal_parameters) + (enum_declaration_list) + (switch_block) + (match_block) + (case_statement) + (default_statement) + (property_hook_list) +] @indent.begin + +(return_statement + [ + (object_creation_expression) + (anonymous_function) + (arrow_function) + (match_expression) + ]) @indent.dedent + +[ + ")" + "}" + "]" +] @indent.branch + +(comment) @indent.auto + +(arguments + ")" @indent.end) + +(formal_parameters + ")" @indent.end) + +(compound_statement + "}" @indent.end) + +(declaration_list + "}" @indent.end) + +(enum_declaration_list + "}" @indent.end) + +(return_statement + ";" @indent.end) + +(property_hook_list + "}" @indent.end) + +(ERROR + "(" @indent.align + . + (_) + (#set! indent.open_delimiter "(") + (#set! indent.close_delimiter ")")) + +(ERROR + "[" @indent.align + . + (_) + (#set! indent.open_delimiter "[") + (#set! indent.close_delimiter "]")) diff --git a/runtime/queries/php_only/injections.scm b/runtime/queries/php_only/injections.scm new file mode 100644 index 000000000..368177643 --- /dev/null +++ b/runtime/queries/php_only/injections.scm @@ -0,0 +1,43 @@ +((comment) @injection.content + (#set! injection.language "phpdoc")) + +(heredoc + (heredoc_body) @injection.content + (heredoc_end) @injection.language + (#set! injection.include-children) + (#downcase! @injection.language)) + +(nowdoc + (nowdoc_body) @injection.content + (heredoc_end) @injection.language + (#set! injection.include-children) + (#downcase! @injection.language)) + +; regex +((function_call_expression + function: (_) @_preg_func_identifier + arguments: (arguments + . + (argument + (_ + (string_content) @injection.content)))) + (#set! injection.language "regex") + (#lua-match? @_preg_func_identifier "^preg_")) + +; bash +((function_call_expression + function: (_) @_shell_func_identifier + arguments: (arguments + . + (argument + (_ + (string_content) @injection.content)))) + (#set! injection.language "bash") + (#any-of? @_shell_func_identifier + "shell_exec" "escapeshellarg" "escapeshellcmd" "exec" "passthru" "proc_open" "shell_exec" + "system")) + +(expression_statement + (shell_command_expression + (string_content) @injection.content) + (#set! injection.language "bash")) diff --git a/runtime/queries/php_only/locals.scm b/runtime/queries/php_only/locals.scm new file mode 100644 index 000000000..6739b383d --- /dev/null +++ b/runtime/queries/php_only/locals.scm @@ -0,0 +1,84 @@ +; Scopes +;------- +((class_declaration + name: (name) @local.definition.type) @local.scope + (#set! definition.type.scope "parent")) + +((method_declaration + name: (name) @local.definition.method) @local.scope + (#set! definition.method.scope "parent")) + +((function_definition + name: (name) @local.definition.function) @local.scope + (#set! definition.function.scope "parent")) + +(anonymous_function + (anonymous_function_use_clause + (variable_name + (name) @local.definition.var))) @local.scope + +; Definitions +;------------ +(simple_parameter + (variable_name + (name) @local.definition.var)) + +(foreach_statement + (pair + (variable_name + (name) @local.definition.var))) + +(foreach_statement + (variable_name + (name) @local.reference + (#set! reference.kind "var")) + (variable_name + (name) @local.definition.var)) + +(property_declaration + (property_element + (variable_name + (name) @local.definition.field))) + +(namespace_use_clause + (qualified_name + (name) @local.definition.type)) + +; References +;------------ +(named_type + (name) @local.reference + (#set! reference.kind "type")) + +(named_type + (qualified_name) @local.reference + (#set! reference.kind "type")) + +(variable_name + (name) @local.reference + (#set! reference.kind "var")) + +(member_access_expression + name: (name) @local.reference + (#set! reference.kind "field")) + +(member_call_expression + name: (name) @local.reference + (#set! reference.kind "method")) + +(function_call_expression + function: (qualified_name + (name) @local.reference + (#set! reference.kind "function"))) + +(object_creation_expression + (qualified_name + (name) @local.reference + (#set! reference.kind "type"))) + +(scoped_call_expression + scope: (qualified_name + (name) @local.reference + (#set! reference.kind "type")) + name: (name) @local.reference + (#set! reference.kind "method")) |
