aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/capnp
diff options
context:
space:
mode:
authorangelodlfrtr2023-03-18 14:17:02 +0000
committerGitHub2023-03-18 14:17:02 +0000
commitac2a7731a6d04b8b913f49531058c7e2a843efd5 (patch)
tree9158c5e96ba50ebaa4a4b15c5b7d20384cab68d7 /runtime/queries/capnp
parent9f5374bf47624d59e7bbcaa9382dbe06022acef7 (diff)
Add language support for Cap’n Proto format (#6325)
Diffstat (limited to 'runtime/queries/capnp')
-rw-r--r--runtime/queries/capnp/folds.scm14
-rw-r--r--runtime/queries/capnp/highlights.scm141
-rw-r--r--runtime/queries/capnp/indents.scm19
-rw-r--r--runtime/queries/capnp/injections.scm2
-rw-r--r--runtime/queries/capnp/locals.scm96
5 files changed, 272 insertions, 0 deletions
diff --git a/runtime/queries/capnp/folds.scm b/runtime/queries/capnp/folds.scm
new file mode 100644
index 00000000..6e3f9c18
--- /dev/null
+++ b/runtime/queries/capnp/folds.scm
@@ -0,0 +1,14 @@
+[
+ (annotation_targets)
+ (const_list)
+ (enum)
+ (interface)
+ (implicit_generics)
+ (generics)
+ (group)
+ (method_parameters)
+ (named_return_types)
+ (struct)
+ (struct_shorthand)
+ (union)
+] @fold
diff --git a/runtime/queries/capnp/highlights.scm b/runtime/queries/capnp/highlights.scm
new file mode 100644
index 00000000..27ddf8e2
--- /dev/null
+++ b/runtime/queries/capnp/highlights.scm
@@ -0,0 +1,141 @@
+; Preproc
+
+(unique_id) @keyword.directive
+(top_level_annotation_body) @keyword.directive
+
+; Includes
+
+[
+ "import"
+ "$import"
+ "embed"
+] @keyword.control.import
+
+(import_path) @string
+
+; Builtins
+
+[
+ (primitive_type)
+ "List"
+] @type.builtin
+
+; Typedefs
+
+(type_definition) @type
+
+; Labels (@number, @number!)
+
+(field_version) @label
+
+; Methods
+
+(annotation_definition_identifier) @function.method
+(method_identifier) @function.method
+
+; Fields
+
+(field_identifier) @variable.other.member
+
+; Properties
+
+(property) @label
+
+; Parameters
+
+(param_identifier) @variable.parameter
+(return_identifier) @variable.parameter
+
+; Constants
+
+(const_identifier) @variable
+(local_const) @constant
+(enum_member) @type.enum.variant
+
+(void) @constant.builtin
+
+; Types
+
+(enum_identifier) @type.enum
+(extend_type) @type
+(type_identifier) @type
+
+; Attributes
+
+(annotation_identifier) @attribute
+(attribute) @attribute
+
+; Operators
+
+[
+ ; @ ! -
+ "="
+] @operator
+
+; Keywords
+
+
+[
+ "annotation"
+ "enum"
+ "group"
+ "interface"
+ "struct"
+ "union"
+] @keyword.storage.type
+
+[
+ "extends"
+ "namespace"
+ "using"
+ (annotation_target)
+] @special
+
+; Literals
+
+[
+ (string)
+ (concatenated_string)
+ (block_text)
+ (namespace)
+] @string
+
+(escape_sequence) @constant.character.escape
+
+(data_string) @string.special
+
+(number) @constant.numeric.integer
+
+(float) @constant.numeric.float
+
+(boolean) @constant.builtin.boolean
+
+; Misc
+
+[
+ "const"
+] @keyword.storage.modifier
+
+[
+ "*"
+ "$"
+ ":"
+] @string.special.symbol
+
+["{" "}"] @punctuation.bracket
+
+["(" ")"] @punctuation.bracket
+
+["[" "]"] @punctuation.bracket
+
+[
+ ","
+ ";"
+ "->"
+] @punctuation.delimiter
+
+(data_hex) @constant
+
+; Comments
+
+(comment) @comment.line
diff --git a/runtime/queries/capnp/indents.scm b/runtime/queries/capnp/indents.scm
new file mode 100644
index 00000000..9adaf34f
--- /dev/null
+++ b/runtime/queries/capnp/indents.scm
@@ -0,0 +1,19 @@
+[
+ (annotation_targets)
+ (const_list)
+ (enum)
+ (interface)
+ (implicit_generics)
+ (generics)
+ (group)
+ (method_parameters)
+ (named_return_types)
+ (struct)
+ (struct_shorthand)
+ (union)
+] @indent
+
+[
+ "}"
+ ")"
+] @outdent
diff --git a/runtime/queries/capnp/injections.scm b/runtime/queries/capnp/injections.scm
new file mode 100644
index 00000000..321c90ad
--- /dev/null
+++ b/runtime/queries/capnp/injections.scm
@@ -0,0 +1,2 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
diff --git a/runtime/queries/capnp/locals.scm b/runtime/queries/capnp/locals.scm
new file mode 100644
index 00000000..e98ce260
--- /dev/null
+++ b/runtime/queries/capnp/locals.scm
@@ -0,0 +1,96 @@
+; Scopes
+
+[
+ (message)
+ (annotation_targets)
+ (const_list)
+ (enum)
+ (interface)
+ (implicit_generics)
+ (generics)
+ (group)
+ (method_parameters)
+ (named_return_types)
+ (struct)
+ (struct_shorthand)
+ (union)
+] @local.scope
+
+; References
+
+[
+ (extend_type)
+ (field_type)
+] @local.reference
+(custom_type (type_identifier) @local.reference)
+(custom_type
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.reference)))
+
+; Definitions
+
+(annotation_definition_identifier) @local.definition
+
+(const_identifier) @local.definition
+
+(enum (enum_identifier) @local.definition)
+
+[
+ (enum_member)
+ (field_identifier)
+] @local.definition
+
+(method_identifier) @local.definition
+
+(namespace) @local.definition
+
+[
+ (param_identifier)
+ (return_identifier)
+] @local.definition
+
+(group (type_identifier) @local.definition)
+
+(struct (type_identifier) @local.definition)
+
+(union (type_identifier) @local.definition)
+
+(interface (type_identifier) @local.definition)
+
+; Generics Related (don't know how to combine these)
+
+(struct
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))
+
+(interface
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))
+
+(method
+ (implicit_generics
+ (implicit_generic_parameters
+ (generic_identifier) @local.definition)))
+
+(method
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))
+
+(annotation
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))
+
+(replace_using
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))
+
+(return_type
+ (generics
+ (generic_parameters
+ (generic_identifier) @local.definition)))