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.scm235
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