Add language support for Cap’n Proto format (#6325)

This commit is contained in:
angelodlfrtr 2023-03-18 15:17:02 +01:00 committed by GitHub
parent 9f5374bf47
commit ac2a7731a6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 286 additions and 0 deletions

View file

@ -10,6 +10,7 @@
| c | ✓ | ✓ | ✓ | `clangd` |
| c-sharp | ✓ | ✓ | | `OmniSharp` |
| cairo | ✓ | | | |
| capnp | ✓ | | ✓ | |
| clojure | ✓ | | | `clojure-lsp` |
| cmake | ✓ | ✓ | ✓ | `cmake-language-server` |
| comment | ✓ | | | |

View file

@ -2328,3 +2328,16 @@ roots = []
[[grammar]]
name = "rst"
source = { git = "https://github.com/stsewd/tree-sitter-rst", rev = "25e6328872ac3a764ba8b926aea12719741103f1" }
[[language]]
name = "capnp"
scope = "source.capnp"
injection-regex = "capnp"
file-types = ["capnp"]
roots = []
comment-token = "#"
indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "capnp"
source = { git = "https://github.com/amaanq/tree-sitter-capnp", rev = "fc6e2addf103861b9b3dffb82c543eb6b71061aa" }

View file

@ -0,0 +1,14 @@
[
(annotation_targets)
(const_list)
(enum)
(interface)
(implicit_generics)
(generics)
(group)
(method_parameters)
(named_return_types)
(struct)
(struct_shorthand)
(union)
] @fold

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
((comment) @injection.content
(#set! injection.language "comment"))

View file

@ -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)))