diff --git a/Cargo.lock b/Cargo.lock index 203ceff0df46ef84509190d51e5b1f400ad2e17c..7300c355e0c14805445149e0bed7ca96918bf563 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7191,6 +7191,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-yaml" +version = "0.0.1" +source = "git+https://github.com/zed-industries/tree-sitter-yaml?rev=36a64faf81931d3aaa8580a329344ac80ac0fb79#36a64faf81931d3aaa8580a329344ac80ac0fb79" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "try-lock" version = "0.2.3" @@ -8430,6 +8439,7 @@ dependencies = [ "tree-sitter-scheme", "tree-sitter-toml", "tree-sitter-typescript", + "tree-sitter-yaml", "unindent", "url", "urlencoding", diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index d1ade12f6076430af3c8c9d5d6382230b7aef73b..248175971cb8f6e7770c8beea80bcd60bda48148 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -110,6 +110,7 @@ tree-sitter-ruby = "0.20.0" tree-sitter-html = "0.19.0" tree-sitter-scheme = { git = "https://github.com/6cdh/tree-sitter-scheme", rev = "af0fd1fa452cb2562dc7b5c8a8c55551c39273b9"} tree-sitter-racket = { git = "https://github.com/zed-industries/tree-sitter-racket", rev = "eb010cf2c674c6fd9a6316a84e28ef90190fe51a"} +tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "36a64faf81931d3aaa8580a329344ac80ac0fb79"} tree-sitter-lua = "0.0.14" url = "2.2" urlencoding = "2.1.2" diff --git a/crates/zed/src/languages.rs b/crates/zed/src/languages.rs index c0a00d191116bb7bbe2731b9cc7ba0bf82510ef2..00bc29086c7c7fd449b51b11e26c23eabc31f0d2 100644 --- a/crates/zed/src/languages.rs +++ b/crates/zed/src/languages.rs @@ -128,6 +128,11 @@ pub fn init(languages: Arc) { tree_sitter_lua::language(), Some(Box::new(lua::LuaLspAdapter)), ), + ( + "yaml", + tree_sitter_yaml::language(), + None, // + ) ] { languages.register(name, load_config(name), grammar, lsp_adapter, load_queries); } diff --git a/crates/zed/src/languages/yaml/brackets.scm b/crates/zed/src/languages/yaml/brackets.scm new file mode 100644 index 0000000000000000000000000000000000000000..9e8c9cd93c30f7697ead2161295b4583ffdfb93b --- /dev/null +++ b/crates/zed/src/languages/yaml/brackets.scm @@ -0,0 +1,3 @@ +("[" @open "]" @close) +("{" @open "}" @close) +("\"" @open "\"" @close) diff --git a/crates/zed/src/languages/yaml/config.toml b/crates/zed/src/languages/yaml/config.toml new file mode 100644 index 0000000000000000000000000000000000000000..ec08826ea3d62dbbc8fc4d3801f9d6aaeccc2959 --- /dev/null +++ b/crates/zed/src/languages/yaml/config.toml @@ -0,0 +1,15 @@ +name = "YAML" +path_suffixes = ["yml", "yaml"] +line_comment = "# " +autoclose_before = ",]}" +brackets = [ +{ start = "{", end = "}", close = true, newline = true }, +{ start = "[", end = "]", close = true, newline = true }, +{ start = "\"", end = "\"", close = true, newline = false }, +] + +[overrides.string] +brackets = [ +{ start = "{", end = "}", close = true, newline = true }, +{ start = "[", end = "]", close = true, newline = true }, +] diff --git a/crates/zed/src/languages/yaml/highlights.scm b/crates/zed/src/languages/yaml/highlights.scm new file mode 100644 index 0000000000000000000000000000000000000000..0286a371c9c641c3323318b0a3695e55ee377db7 --- /dev/null +++ b/crates/zed/src/languages/yaml/highlights.scm @@ -0,0 +1,37 @@ +(boolean_scalar) @boolean +(null_scalar) @constant.builtin +(double_quote_scalar) @string +(single_quote_scalar) @string +((block_scalar) @string (#set! "priority" 99)) +(string_scalar) @string +(escape_sequence) @string.escape +(integer_scalar) @number +(float_scalar) @number +(comment) @comment +(anchor_name) @type +(alias_name) @type +(tag) @type +(ERROR) @error + +[ + "," + "-" + ":" + ">" + "?" + "|" +] @punctuation.delimiter + +[ + "[" + "]" + "{" + "}" +] @punctuation.bracket + +[ + "*" + "&" + "---" + "..." +] @punctuation.special \ No newline at end of file