mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
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
This commit is contained in:
parent
eead105f94
commit
d99b6177c2
@ -8,6 +8,7 @@
|
|||||||
| beancount | ✓ | | | |
|
| beancount | ✓ | | | |
|
||||||
| bibtex | ✓ | | | `texlab` |
|
| bibtex | ✓ | | | `texlab` |
|
||||||
| bicep | ✓ | | | `bicep-langserver` |
|
| bicep | ✓ | | | `bicep-langserver` |
|
||||||
|
| blade | ✓ | | | |
|
||||||
| blueprint | ✓ | | | `blueprint-compiler` |
|
| blueprint | ✓ | | | `blueprint-compiler` |
|
||||||
| c | ✓ | ✓ | ✓ | `clangd` |
|
| c | ✓ | ✓ | ✓ | `clangd` |
|
||||||
| c-sharp | ✓ | ✓ | | `OmniSharp` |
|
| c-sharp | ✓ | ✓ | | `OmniSharp` |
|
||||||
@ -131,6 +132,7 @@
|
|||||||
| pem | ✓ | | | |
|
| pem | ✓ | | | |
|
||||||
| perl | ✓ | ✓ | ✓ | `perlnavigator` |
|
| perl | ✓ | ✓ | ✓ | `perlnavigator` |
|
||||||
| php | ✓ | ✓ | ✓ | `intelephense` |
|
| php | ✓ | ✓ | ✓ | `intelephense` |
|
||||||
|
| php-only | ✓ | | | |
|
||||||
| pkl | ✓ | | ✓ | |
|
| pkl | ✓ | | ✓ | |
|
||||||
| po | ✓ | ✓ | | |
|
| po | ✓ | ✓ | | |
|
||||||
| pod | ✓ | | | |
|
| pod | ✓ | | | |
|
||||||
|
@ -940,6 +940,29 @@ indent = { tab-width = 4, unit = " " }
|
|||||||
name = "php"
|
name = "php"
|
||||||
source = { git = "https://github.com/tree-sitter/tree-sitter-php", rev = "f860e598194f4a71747f91789bf536b393ad4a56" }
|
source = { git = "https://github.com/tree-sitter/tree-sitter-php", rev = "f860e598194f4a71747f91789bf536b393ad4a56" }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "php-only"
|
||||||
|
scope = "source.php-only"
|
||||||
|
injection-regex = "php-only"
|
||||||
|
file-types = []
|
||||||
|
indent = { tab-width = 4, unit = " " }
|
||||||
|
roots = ["composer.json", "index.php"]
|
||||||
|
|
||||||
|
[[grammar]]
|
||||||
|
name = "php-only"
|
||||||
|
source = { git = "https://github.com/tree-sitter/tree-sitter-php", rev = "cf1f4a0f1c01c705c1d6cf992b104028d5df0b53", subpath = "php_only" }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "blade"
|
||||||
|
scope = "source.blade.php"
|
||||||
|
file-types = [{ glob = "*.blade.php" }, "blade"]
|
||||||
|
injection-regex = "blade"
|
||||||
|
roots = ["composer.json", "index.php"]
|
||||||
|
|
||||||
|
[[grammar]]
|
||||||
|
name = "blade"
|
||||||
|
source = { git = "https://github.com/EmranMR/tree-sitter-blade", rev = "4c66efe1e05c639c555ee70092021b8223d2f440" }
|
||||||
|
|
||||||
[[language]]
|
[[language]]
|
||||||
name = "twig"
|
name = "twig"
|
||||||
scope = "source.twig"
|
scope = "source.twig"
|
||||||
|
8
runtime/queries/blade/folds.scm
Normal file
8
runtime/queries/blade/folds.scm
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
((directive_start) @start
|
||||||
|
(directive_end) @end.after
|
||||||
|
(#set! role block))
|
||||||
|
|
||||||
|
|
||||||
|
((bracket_start) @start
|
||||||
|
(bracket_end) @end
|
||||||
|
(#set! role block))
|
4
runtime/queries/blade/highlights.scm
Normal file
4
runtime/queries/blade/highlights.scm
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(directive) @tag
|
||||||
|
(directive_start) @tag
|
||||||
|
(directive_end) @tag
|
||||||
|
(comment) @comment
|
9
runtime/queries/blade/injections.scm
Normal file
9
runtime/queries/blade/injections.scm
Normal file
@ -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))
|
||||||
|
|
123
runtime/queries/php-only/highlights.scm
Normal file
123
runtime/queries/php-only/highlights.scm
Normal file
@ -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
|
10
runtime/queries/php-only/injections.scm
Normal file
10
runtime/queries/php-only/injections.scm
Normal file
@ -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)
|
40
runtime/queries/php-only/tags.scm
Normal file
40
runtime/queries/php-only/tags.scm
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user