Add initial Smithy support (#6370)

This commit is contained in:
zetashift 2023-03-21 23:12:24 +01:00 committed by GitHub
parent b0ceac608e
commit 0e0c16e6fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 117 additions and 0 deletions

View File

@ -123,6 +123,7 @@
| scheme | ✓ | | | |
| scss | ✓ | | | `vscode-css-language-server` |
| slint | ✓ | | ✓ | `slint-lsp` |
| smithy | ✓ | | | `cs` |
| sml | ✓ | | | |
| solidity | ✓ | | | `solc` |
| sql | ✓ | | | |

View File

@ -2355,3 +2355,17 @@ indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "capnp"
source = { git = "https://github.com/amaanq/tree-sitter-capnp", rev = "fc6e2addf103861b9b3dffb82c543eb6b71061aa" }
[[language]]
name = "smithy"
scope = "source.smithy"
injection-regex = "smithy"
file-types = ["smithy"]
roots = ["smithy-build.json"]
comment-token = "//"
indent = { tab-width = 4, unit = " " }
language-server = { command = "cs", args = ["launch", "com.disneystreaming.smithy:smithy-language-server:latest.release", "--", "0"] }
[[grammar]]
name = "smithy"
source = { git = "https://github.com/indoorvivants/tree-sitter-smithy", rev = "cf8c7eb9faf7c7049839585eac19c94af231e6a0" }

View File

@ -0,0 +1,102 @@
; Queries are taken from: https://github.com/indoorvivants/tree-sitter-smithy/blob/main/queries/highlights.scm
; Preproc
(control_key) @keyword.directive
; Namespace
(namespace) @namespace
; Includes
[
"use"
] @keyword.control.import
; Builtins
(primitive) @type.builtin
[
"enum"
"intEnum"
"list"
"map"
"set"
] @type.builtin
; Fields (Members)
; (field) @variable.other.member
(key_identifier) @variable.other.member
(shape_member
(field) @variable.other.member)
(operation_field) @variable.other.member
(operation_error_field) @variable.other.member
; Constants
(enum_member
(enum_field) @type.enum)
; Types
(identifier) @type
(structure_resource
(shape_id) @type)
; Attributes
(mixins
(shape_id) @attribute)
(trait_statement
(shape_id) @attribute)
; Operators
[
"@"
"-"
"="
":="
] @operator
; Keywords
[
"namespace"
"service"
"structure"
"operation"
"union"
"resource"
"metadata"
"apply"
"for"
"with"
] @keyword
; Literals
(string) @string
(escape_sequence) @constant.character.escape
(number) @constant.numeric
(float) @constant.numeric.float
(boolean) @constant.builtin.boolean
(null) @constant.builtin
; Misc
[
"$"
"#"
] @punctuation.special
["{" "}"] @punctuation.bracket
["(" ")"] @punctuation.bracket
["[" "]"] @punctuation.bracket
[
":"
"."
] @punctuation.delimiter
; Comments
[
(comment)
(documentation_comment)
] @comment