Skip to content

Commit

Permalink
Add initial Smithy support (helix-editor#6370)
Browse files Browse the repository at this point in the history
  • Loading branch information
zetashift authored and icecreammatt committed Apr 19, 2023
1 parent da2b60a commit feeb946
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@
| scheme || | | |
| scss || | | `vscode-css-language-server` |
| slint || || `slint-lsp` |
| smithy || | | `cs` |
| sml || | | |
| solidity || | | `solc` |
| sql || | | |
Expand Down
14 changes: 14 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
102 changes: 102 additions & 0 deletions runtime/queries/smithy/highlights.scm
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit feeb946

Please sign in to comment.