diff --git a/Cargo.lock b/Cargo.lock index 52c11671a87d491aa48e01a67e323538e45f49aa..15b9d1706fdd4722d3ddf40f8b18ad23d3aa8c49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5228,6 +5228,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-toml" +version = "0.5.1" +source = "git+https://github.com/tree-sitter/tree-sitter-toml?rev=342d9be207c2dba869b9967124c679b5e6fd0ebe#342d9be207c2dba869b9967124c679b5e6fd0ebe" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-typescript" version = "0.20.1" @@ -5856,6 +5865,7 @@ dependencies = [ "tree-sitter-json 0.20.0", "tree-sitter-markdown", "tree-sitter-rust", + "tree-sitter-toml", "tree-sitter-typescript", "unindent", "url", diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index 9c27069240fdb631f644162e5d81153a8d363794..2f0310fd4572c160cd213951008c900cf9cd020c 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -89,6 +89,7 @@ tree-sitter-c = "0.20.1" tree-sitter-json = { git = "https://github.com/tree-sitter/tree-sitter-json", rev = "137e1ce6a02698fc246cdb9c6b886ed1de9a1ed8" } tree-sitter-rust = "0.20.1" tree-sitter-markdown = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "330ecab87a3e3a7211ac69bbadc19eabecdb1cca" } +tree-sitter-toml = { git = "https://github.com/tree-sitter/tree-sitter-toml", rev = "342d9be207c2dba869b9967124c679b5e6fd0ebe" } tree-sitter-typescript = "0.20.1" url = "2.2" diff --git a/crates/zed/src/languages.rs b/crates/zed/src/languages.rs index e90a1cd7370946c975f166ac887d63c31324c72b..d0d6de989a717c8c2de4bd2ebade9c8af9b13672 100644 --- a/crates/zed/src/languages.rs +++ b/crates/zed/src/languages.rs @@ -37,6 +37,11 @@ pub fn build_language_registry(login_shell_env_loaded: Task<()>) -> LanguageRegi tree_sitter_rust::language(), Some(Arc::new(rust::RustLspAdapter)), ), + ( + "toml", + tree_sitter_toml::language(), + None, // + ), ( "tsx", tree_sitter_typescript::language_tsx(), diff --git a/crates/zed/src/languages/toml/brackets.scm b/crates/zed/src/languages/toml/brackets.scm new file mode 100644 index 0000000000000000000000000000000000000000..9e8c9cd93c30f7697ead2161295b4583ffdfb93b --- /dev/null +++ b/crates/zed/src/languages/toml/brackets.scm @@ -0,0 +1,3 @@ +("[" @open "]" @close) +("{" @open "}" @close) +("\"" @open "\"" @close) diff --git a/crates/zed/src/languages/toml/config.toml b/crates/zed/src/languages/toml/config.toml new file mode 100644 index 0000000000000000000000000000000000000000..cd624aecef07aadf8c9354749479676ae3768fe4 --- /dev/null +++ b/crates/zed/src/languages/toml/config.toml @@ -0,0 +1,9 @@ +name = "TOML" +path_suffixes = ["toml"] +line_comment = "# " +autoclose_before = ",]}" +brackets = [ + { start = "{", end = "}", close = true, newline = true }, + { start = "[", end = "]", close = true, newline = true }, + { start = "\"", end = "\"", close = true, newline = false }, +] diff --git a/crates/zed/src/languages/toml/highlights.scm b/crates/zed/src/languages/toml/highlights.scm new file mode 100644 index 0000000000000000000000000000000000000000..9f43b6aa6f0bd9abbbeea820c504613306dd1dff --- /dev/null +++ b/crates/zed/src/languages/toml/highlights.scm @@ -0,0 +1,33 @@ +; Properties +;----------- + +(bare_key) @property +(quoted_key) @property + +; Literals +;--------- + +(boolean) @constant +(comment) @comment +(string) @string +(integer) @number +(float) @number +(offset_date_time) @string.special +(local_date_time) @string.special +(local_date) @string.special +(local_time) @string.special + +; Punctuation +;------------ + +"." @punctuation.delimiter +"," @punctuation.delimiter + +"=" @operator + +"[" @punctuation.bracket +"]" @punctuation.bracket +"[[" @punctuation.bracket +"]]" @punctuation.bracket +"{" @punctuation.bracket +"}" @punctuation.bracket \ No newline at end of file diff --git a/crates/zed/src/languages/toml/indents.scm b/crates/zed/src/languages/toml/indents.scm new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/crates/zed/src/languages/toml/outline.scm b/crates/zed/src/languages/toml/outline.scm new file mode 100644 index 0000000000000000000000000000000000000000..d232d489b621562c2ff79e3941d89627d078e69c --- /dev/null +++ b/crates/zed/src/languages/toml/outline.scm @@ -0,0 +1,15 @@ +(table + . + "[" + . + (_) @name) @item + +(table_array_element + . + "[[" + . + (_) @name) @item + +(pair + . + (_) @name) @item \ No newline at end of file