mirror of
https://github.com/helix-editor/helix.git
synced 2025-10-06 00:13:28 +02:00
feat(languages): add support for the eiffel programming language (#14470)
Co-authored-by: Alessandro Schena <alessandro.schena@constructor.org>
This commit is contained in:
108
runtime/queries/eiffel/highlights.scm
Normal file
108
runtime/queries/eiffel/highlights.scm
Normal file
@@ -0,0 +1,108 @@
|
||||
[
|
||||
"alias"
|
||||
"convert"
|
||||
"inherit"
|
||||
"redefine"
|
||||
"undefine"
|
||||
"rename"
|
||||
"select"
|
||||
"note"
|
||||
"create"
|
||||
] @keyword.control.import
|
||||
|
||||
["export"] @keyword.control.export
|
||||
|
||||
[
|
||||
"do"
|
||||
"end"
|
||||
"once"
|
||||
"attribute"
|
||||
] @keyword.control
|
||||
|
||||
[
|
||||
"class"
|
||||
"local"
|
||||
] @keyword.storage.type
|
||||
|
||||
[
|
||||
"feature"
|
||||
"agent"
|
||||
] @keyword.function
|
||||
|
||||
[
|
||||
"frozen"
|
||||
"deferred"
|
||||
"detachable"
|
||||
"expanded"
|
||||
"attached"
|
||||
"old"
|
||||
"like"
|
||||
] @keyword.storage.modifier
|
||||
|
||||
(conditional ["if" "elseif" "end"] @keyword.control.conditional)
|
||||
(else_part ["else"] @keyword.control.conditional)
|
||||
(then_part ["then"] @keyword.control.conditional)
|
||||
|
||||
(conditional_expression ["if" "else" "elseif" "end"] @keyword.control.conditional)
|
||||
(else_part_expression ["else"] @keyword.control.conditional)
|
||||
(then_part_expression ["then"] @keyword.control.conditional)
|
||||
|
||||
(multi_branch "inspect" @keyword.control.conditional)
|
||||
(when_part ["when" "then"] @keyword.control.conditional)
|
||||
|
||||
(multi_branch_expression "inspect" @keyword.control.conditional)
|
||||
(when_part_expression ["when" "then"] @keyword.control.conditional)
|
||||
|
||||
(quantifier_loop ["∀" "∃" ":" "¦"] @keyword.control.repeat)
|
||||
(quantifier_loop_body ["all" "some"] @keyword.control.repeat)
|
||||
(iteration ["across" "as"] @keyword.control.repeat)
|
||||
(initialization "from" @keyword.control.repeat)
|
||||
(exit_condition "until" @keyword.control.repeat)
|
||||
(loop_body "loop" @keyword.control.repeat)
|
||||
(variant "variant" @keyword.control.repeat)
|
||||
(loop (invariant "invariant" @keyword.control.repeat))
|
||||
(loop ["⟳" ":" "¦" "⟲"]@keyword.control.repeat)
|
||||
(loop "end" @keyword.control.repeat)
|
||||
|
||||
[
|
||||
"require"
|
||||
"ensure"
|
||||
"invariant"
|
||||
"check"
|
||||
] @keyword.control.exception
|
||||
|
||||
["(" ")" "[" "]" "<<" ">>"] @punctuation.bracket
|
||||
["," ":" ";"] @punctuation.delimiter
|
||||
|
||||
[
|
||||
(unary)
|
||||
":="
|
||||
(binary_caret)
|
||||
(binary_mul_div)
|
||||
(binary_plus_minus)
|
||||
(binary_comparison)
|
||||
(binary_and)
|
||||
(binary_or)
|
||||
(binary_implies)
|
||||
(comparison)
|
||||
(unary_not)
|
||||
] @operator
|
||||
|
||||
(result) @variable.builtin
|
||||
(anchored (call (_) @variable))
|
||||
[(verbatim_string) (basic_manifest_string)] @string
|
||||
[(integer_constant) (real_constant)] @constant.numeric
|
||||
(boolean_constant) @constant.builtin.boolean
|
||||
(void) @constant.builtin
|
||||
(current) @variable.builtin
|
||||
(extended_feature_name (identifier) @function.method)
|
||||
|
||||
(iteration (identifier) @variable)
|
||||
(quantifier_loop (identifier) @variable)
|
||||
(entity_declaration_group (identifier) @variable)
|
||||
|
||||
(class_name) @type
|
||||
(formal_generic) @type.parameter
|
||||
|
||||
(comment) @comment.line
|
||||
(header_comment) @comment.line.documentation
|
30
runtime/queries/eiffel/indents.scm
Normal file
30
runtime/queries/eiffel/indents.scm
Normal file
@@ -0,0 +1,30 @@
|
||||
[
|
||||
(notes)
|
||||
(class_declaration)
|
||||
(inheritance)
|
||||
(feature_adaptation)
|
||||
(creation_clause)
|
||||
(converters)
|
||||
|
||||
(feature_declaration)
|
||||
|
||||
(attribute_or_routine)
|
||||
|
||||
(precondition)
|
||||
(local_declarations)
|
||||
(feature_body)
|
||||
|
||||
(check)
|
||||
(multi_branch)
|
||||
(multi_branch_expression)
|
||||
(conditional)
|
||||
(conditional_expression)
|
||||
(loop)
|
||||
(quantifier_loop)
|
||||
(iteration)
|
||||
|
||||
(postcondition)
|
||||
(rescue)
|
||||
|
||||
(invariant)
|
||||
] @indent
|
15
runtime/queries/eiffel/textobjects.scm
Normal file
15
runtime/queries/eiffel/textobjects.scm
Normal file
@@ -0,0 +1,15 @@
|
||||
[
|
||||
(comment)+
|
||||
(header_comment)+
|
||||
] @comment.around
|
||||
[
|
||||
(comment)
|
||||
(header_comment)
|
||||
] @comment.inside
|
||||
(formal_arguments) @parameter.around
|
||||
(entity_declaration_group) @parameter.inside
|
||||
(attribute_or_routine) @function.around
|
||||
(feature_body) @function.inside
|
||||
(class_declaration) @class.around
|
||||
(feature_clause) @class.inside
|
||||
|
Reference in New Issue
Block a user