Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/concerto/highlights.scm')
| -rw-r--r-- | runtime/queries/concerto/highlights.scm | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/runtime/queries/concerto/highlights.scm b/runtime/queries/concerto/highlights.scm new file mode 100644 index 00000000..a1816949 --- /dev/null +++ b/runtime/queries/concerto/highlights.scm @@ -0,0 +1,235 @@ +; Concerto Language - Syntax Highlighting Queries (Helix) +; ======================================================= +; Helix-specific capture names. For use in helix-editor/helix at +; runtime/queries/concerto/highlights.scm +; +; Precedence: later patterns override earlier ones (last match wins). + +; Keywords +; -------- + +; Declaration keywords +[ + "concept" + "asset" + "participant" + "transaction" + "event" + "enum" + "scalar" + "map" +] @keyword.storage.type + +[ + "namespace" + "import" + "from" +] @keyword.control.import + +[ + "extends" +] @keyword + +[ + "abstract" +] @keyword.storage.modifier + +[ + "identified" + "by" +] @keyword + +[ + "optional" +] @keyword.storage.modifier + +[ + "concerto" + "version" +] @keyword + +[ + "default" +] @keyword + +[ + "regex" + "range" + "length" +] @keyword + +[ + "as" +] @keyword + +; Primitive type keywords +[ + "String" + "Boolean" + "DateTime" + "Integer" + "Long" + "Double" +] @type.builtin + +(primitive_type) @type.builtin + +; Boolean literals +(boolean_literal) @constant.builtin.boolean + +; Comments +; -------- +(line_comment) @comment.line +(block_comment) @comment.block + +; Strings +; ------- +(string_literal) @string +(escape_sequence) @constant.character.escape + +; Numbers +; ------- +(signed_integer) @constant.numeric +(signed_real) @constant.numeric +(signed_number) @constant.numeric + +; Regex +; ----- +(regex_literal) @string.regexp + +; Decorators +; ---------- +(decorator + "@" @attribute + name: (identifier) @attribute) + +; Namespace and imports +; -------------------- +(namespace_path) @namespace + +(import_path) @namespace + +(uri) @string.special + +; Version +; ------- +(concerto_version + (string_literal) @string.special) + +; Type identifiers (in type position) +; ----------------------------------- +(concept_declaration + name: (type_identifier) @type) + +(asset_declaration + name: (type_identifier) @type) + +(participant_declaration + name: (type_identifier) @type) + +(transaction_declaration + name: (type_identifier) @type) + +(event_declaration + name: (type_identifier) @type) + +(enum_declaration + name: (type_identifier) @type) + +(scalar_declaration + name: (type_identifier) @type) + +(map_declaration + name: (type_identifier) @type) + +(extends_clause + (type_identifier) @type) + +; Field type references +(object_field + type: (type_identifier) @type) + +(relationship_field + type: (type_identifier) @type) + +; Map type references +(map_key_type + type: (type_identifier) @type) + +(map_value_property + type: (type_identifier) @type) + +(map_value_relationship + type: (type_identifier) @type) + +; Decorator identifier references +(decorator_identifier_ref + (type_identifier) @type) + +; Import type name +(import_single + type: (identifier) @type) + +(type_list_item + (identifier) @type) + +(aliased_type + original: (identifier) @type + alias: (identifier) @type) + +; Field/property names +; -------------------- +(string_field + name: (identifier) @variable.other.member) + +(boolean_field + name: (identifier) @variable.other.member) + +(datetime_field + name: (identifier) @variable.other.member) + +(integer_field + name: (identifier) @variable.other.member) + +(long_field + name: (identifier) @variable.other.member) + +(double_field + name: (identifier) @variable.other.member) + +(object_field + name: (identifier) @variable.other.member) + +(relationship_field + name: (identifier) @variable.other.member) + +(enum_property + name: (identifier) @variable.other.member) + +; Identified by field name +(identified_by + field: (identifier) @variable.other.member) + +; Relationship arrow +"-->" @operator + +; Property indicator +"o" @punctuation.special + +; Array indicator +(array_indicator) @punctuation.bracket + +; Wildcards in imports +"*" @operator + +; Delimiters +; ---------- +"{" @punctuation.bracket +"}" @punctuation.bracket +"(" @punctuation.bracket +")" @punctuation.bracket +"[" @punctuation.bracket +"]" @punctuation.bracket +"," @punctuation.delimiter +"." @punctuation.delimiter +"=" @operator |