Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
doy authored and Schuyler Mortimer committed Jul 10, 2024
1 parent 7f35ac1 commit a83f006
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 190 deletions.
2 changes: 1 addition & 1 deletion book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
| pascal ||| | `pasls` |
| passwd || | | |
| pem || | | |
| perl || | | `perlnavigator` |
| perl || | | `perlnavigator` |
| php |||| `intelephense` |
| po ||| | |
| ponylang |||| |
Expand Down
2 changes: 1 addition & 1 deletion languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1112,7 +1112,7 @@ indent = { tab-width = 2, unit = " " }

[[grammar]]
name = "perl"
source = { git = "https://github.com/ganezdragon/tree-sitter-perl", rev = "0ac2c6da562c7a2c26ed7e8691d4a590f7e8b90a" }
source = { git = "https://github.com/tree-sitter-perl/tree-sitter-perl", rev = "ed21ecbcc128a6688770ebafd3ef68a1c9bc1ea9" }

[[language]]
name = "racket"
Expand Down
19 changes: 19 additions & 0 deletions runtime/queries/perl/fold.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
(comment) @fold
(pod) @fold

; fold the block-typed package statements only
(package_statement (block)) @fold

[(subroutine_declaration_statement)
(conditional_statement)
(loop_statement)
(for_statement)
(cstyle_for_statement)
(block_statement)
(phaser_statement)] @fold

(anonymous_subroutine_expression) @fold

; perhaps folks want to fold these too?
[(anonymous_array_expression)
(anonymous_hash_expression)] @fold
229 changes: 74 additions & 155 deletions runtime/queries/perl/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,181 +1,100 @@
; Variables
(variable_declaration
.
(scope) @keyword)
[
(single_var_declaration)
(scalar_variable)
(array_variable)
(hash_variable)
(hash_variable)
] @variable

"use" "no" "require" "package"
] @keyword.control.import

[
(package_name)
(special_scalar_variable)
(special_array_variable)
(special_hash_variable)
(special_literal)
(super)
] @constant

(
[
(package_name)
(super)
]
.
("::" @operator)
)

(comments) @comment
(pod_statement) @comment.block.documentation
"sub"
] @keyword.function

[
(use_no_statement)
(use_no_feature_statement)
(use_no_if_statement)
(use_no_version)
(use_constant_statement)
(use_parent_statement)
] @keyword

(use_constant_statement
constant: (identifier) @constant)
"if" "elsif" "else" "unless"
] @keyword.control.conditional

[
"require"
] @keyword

(method_invocation
.
(identifier) @variable)

(method_invocation
(arrow_operator)
.
(identifier) @function)
(method_invocation
function_name: (identifier) @function)
(named_block_statement
function_name: (identifier) @function)

(call_expression
function_name: (identifier) @function)
(function_definition
name: (identifier) @function)
[
(function)
(map)
(grep)
(bless)
] @function
"while" "until"
"for" "foreach"
"do"
] @keyword.control.repeat

[
"return"
"sub"
"package"
"BEGIN"
"END"
] @keyword.function
"my" "our" "local"
] @keyword.storage.modifier

[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket
(standard_input_to_variable) @punctuation.bracket
"last" "next" "redo" "goto" "return"
] @keyword.control.return

[
"=~"
"or"
"="
"=="
"+"
"-"
"."
"//"
"||"
(arrow_operator)
(hash_arrow_operator)
(array_dereference)
(hash_dereference)
(to_reference)
(type_glob)
(hash_access_variable)
(ternary_expression)
(ternary_expression_in_hash)
] @operator
"undef"
] @constant.builtin

[
(regex_option)
(regex_option_for_substitution)
(regex_option_for_transliteration)
] @variable.parameter

(type_glob
(identifier) @variable)
(
(scalar_variable)
.
("->" @operator))
(phaser_statement phase: _ @keyword.directive)

[
(word_list_qw)
(command_qx_quoted)
(string_single_quoted)
(string_double_quoted)
(string_qq_quoted)
(bareword)
(transliteration_tr_or_y)
] @string
"or" "and"
"eq" "ne" "cmp" "lt" "le" "ge" "gt"
"isa"
] @keyword.operator

[
(regex_pattern_qr)
(patter_matcher_m)
(substitution_pattern_s)
] @string.regexp
(comment) @comment

(escape_sequence) @string.special
(eof_marker) @keyword.directive
(data_section) @comment

[
","
(semi_colon)
(start_delimiter)
(end_delimiter)
(ellipsis_statement)
] @punctuation.delimiter
(pod) @comment.block.documentation

[
(integer)
(floating_point)
(scientific_notation)
(hexadecimal)
] @constant.numeric
(number) @constant.numeric
(version) @constant

[
; (if_statement)
(unless_statement)
(if_simple_statement)
(unless_simple_statement)
] @keyword.control.conditional
(string_literal) @string
(interpolated_string_literal) @string
(quoted_word_list) @string
(command_string) @string
[(heredoc_token) (command_heredoc_token)] @string.special
(heredoc_content) @string
(heredoc_end) @string.special
[(escape_sequence) (escaped_delimiter)] @constant.character.escape

[
"if"
"elsif"
"else"
] @keyword.control.conditional
[(quoted_regexp) (match_regexp)] @string.regexp

(autoquoted_bareword _?) @string.special

[(scalar) (arraylen)] @variable
(scalar_deref_expression ["->" "$" "*"] @variable)
(array) @variable
(array_deref_expression ["->" "@" "*"] @variable)
(hash) @variable
(hash_deref_expression ["->" "%" "*"] @variable)

(array_element_expression [array:(_) "->" "[" "]"] @variable)
(slice_expression [array:(_) "->" "[" "]"] @variable)
(keyval_expression [array:(_) "->" "[" "]"] @variable)

(hash_element_expression [hash:(_) "->" "{" "}"] @variable)
(slice_expression [hash:(_) "->" "[" "]"] @variable)
(keyval_expression [hash:(_) "->" "[" "]"] @variable)

(hash_element_expression key: (bareword) @string.special)

(use_statement (package) @type)
(package_statement (package) @type)
(require_expression (bareword) @type)

(subroutine_declaration_statement name: (_) @function)
(attrlist (attribute) @attribute)

(goto_expression (label) @label)
(loopex_expression (label) @label)

(statement_label label: _ @label)

(foreach_statement) @keyword.control.repeat
(foreach_statement
.
(scope) @keyword)
(relational_expression operator: "isa" right: (bareword) @type)

(function_attribute) @label
(function_call_expression (function) @function)
(method_call_expression (method) @function.method)
(method_call_expression invocant: (bareword) @type)

(function_signature) @type
(func0op_call_expression function: _ @function.builtin)
(func1op_call_expression function: _ @function.builtin)

(function) @function
15 changes: 0 additions & 15 deletions runtime/queries/perl/indents.scm

This file was deleted.

2 changes: 1 addition & 1 deletion runtime/queries/perl/injections.scm
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
((comments) @injection.content
((comment) @injection.content
(#set! injection.language "comment"))
17 changes: 0 additions & 17 deletions runtime/queries/perl/textobjects.scm

This file was deleted.

0 comments on commit a83f006

Please sign in to comment.