aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorath32021-11-08 01:05:12 +0000
committerGitHub2021-11-08 01:05:12 +0000
commit30744646cb0fab64a87f20c98bff033007512323 (patch)
tree902cdbd2d044cfdd9990938528b3f6c0af09465c /runtime
parentcdc2107bca42f5affa6896771a26f09dc55beeb7 (diff)
Perl support (#978)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/queries/perl/highlights.scm181
-rw-r--r--runtime/queries/perl/textobjects.scm8
2 files changed, 189 insertions, 0 deletions
diff --git a/runtime/queries/perl/highlights.scm b/runtime/queries/perl/highlights.scm
new file mode 100644
index 00000000..b6f04291
--- /dev/null
+++ b/runtime/queries/perl/highlights.scm
@@ -0,0 +1,181 @@
+; Variables
+(variable_declaration
+ .
+ (scope) @keyword)
+[
+(single_var_declaration)
+(scalar_variable)
+(array_variable)
+(hash_variable)
+(hash_variable)
+] @variable
+
+
+[
+(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
+
+[
+(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)
+
+[
+"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
+
+[
+"return"
+"sub"
+"package"
+"BEGIN"
+"END"
+] @keyword.function
+
+[
+"("
+")"
+"["
+"]"
+"{"
+"}"
+] @punctuation.bracket
+(standard_input_to_variable) @punctuation.bracket
+
+[
+"=~"
+"or"
+"="
+"=="
+"+"
+"-"
+"."
+"//"
+"||"
+(arrow_operator)
+(hash_arrow_operator)
+(array_dereference)
+(hash_dereference)
+(to_reference)
+(type_glob)
+(hash_access_variable)
+(ternary_expression)
+(ternary_expression_in_hash)
+] @operator
+
+[
+(regex_option)
+(regex_option_for_substitution)
+(regex_option_for_transliteration)
+] @variable.parameter
+
+(type_glob
+ (identifier) @variable)
+(
+ (scalar_variable)
+ .
+ ("->" @operator))
+
+[
+(word_list_qw)
+(command_qx_quoted)
+(string_single_quoted)
+(string_double_quoted)
+(string_qq_quoted)
+(bareword)
+(transliteration_tr_or_y)
+] @string
+
+[
+(regex_pattern_qr)
+(patter_matcher_m)
+(substitution_pattern_s)
+] @string.regexp
+
+(escape_sequence) @string.special
+
+[
+","
+(semi_colon)
+(start_delimiter)
+(end_delimiter)
+(ellipsis_statement)
+] @punctuation.delimiter
+
+[
+(integer)
+(floating_point)
+(scientific_notation)
+(hexadecimal)
+] @constant.numeric
+
+[
+; (if_statement)
+(unless_statement)
+(if_simple_statement)
+(unless_simple_statement)
+] @keyword.control.conditional
+
+[
+"if"
+"elsif"
+"else"
+] @keyword.control.conditional
+
+(foreach_statement) @keyword.control.repeat
+(foreach_statement
+ .
+ (scope) @keyword)
+
+(function_attribute) @label
+
+(function_signature) @type
+
diff --git a/runtime/queries/perl/textobjects.scm b/runtime/queries/perl/textobjects.scm
new file mode 100644
index 00000000..988e22b4
--- /dev/null
+++ b/runtime/queries/perl/textobjects.scm
@@ -0,0 +1,8 @@
+(function_definition
+ (identifier) (_) @function.inside) @function.around
+
+(anonymous_function
+ (_) @function.inside) @function.around
+
+(argument
+ (_) @parameter.inside)