Merge pull request #2137 from zed-industries/yaml

Kay Simmons created

yaml highlighting

Change summary

Cargo.lock                                   | 10 ++++
assets/settings/default.json                 |  3 +
crates/zed/Cargo.toml                        |  1 
crates/zed/src/languages.rs                  |  5 ++
crates/zed/src/languages/python/config.toml  |  2 
crates/zed/src/languages/yaml/brackets.scm   |  3 +
crates/zed/src/languages/yaml/config.toml    | 17 +++++++
crates/zed/src/languages/yaml/highlights.scm | 49 ++++++++++++++++++++++
crates/zed/src/languages/yaml/outline.scm    |  1 
9 files changed, 90 insertions(+), 1 deletion(-)

Detailed changes

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",

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"

crates/zed/src/languages.rs 🔗

@@ -128,6 +128,11 @@ pub fn init(languages: Arc<LanguageRegistry>) {
             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);
     }

crates/zed/src/languages/python/config.toml 🔗

@@ -11,7 +11,7 @@ brackets = [
 ]
 
 auto_indent_using_last_non_empty_line = false
-increase_indent_pattern = ":$"
+increase_indent_pattern = ":\\s*$"
 decrease_indent_pattern = "^\\s*(else|elif|except|finally)\\b.*:"
 
 [overrides.comment]

crates/zed/src/languages/yaml/config.toml 🔗

@@ -0,0 +1,17 @@
+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 },
+]
+
+increase_indent_pattern = ":\\s*[|>]?\\s*$"
+
+[overrides.string]
+brackets = [
+    { start = "{", end = "}", close = true, newline = true },
+    { start = "[", end = "]", close = true, newline = true },
+]

crates/zed/src/languages/yaml/highlights.scm 🔗

@@ -0,0 +1,49 @@
+(boolean_scalar) @boolean
+(null_scalar) @constant.builtin
+
+[
+  (double_quote_scalar)
+  (single_quote_scalar)
+  (block_scalar)
+  (string_scalar)
+] @string
+
+(escape_sequence) @string.escape
+
+[
+  (integer_scalar)
+  (float_scalar)
+] @number
+
+(comment) @comment
+
+[
+  (anchor_name)
+  (alias_name)
+  (tag) 
+] @type
+
+key: (flow_node (plain_scalar (string_scalar) @property)) 
+
+[
+ ","
+ "-"
+ ":"
+ ">"
+ "?"
+ "|"
+] @punctuation.delimiter
+
+[
+ "["
+ "]"
+ "{"
+ "}"
+] @punctuation.bracket
+
+[
+ "*"
+ "&"
+ "---"
+ "..."
+] @punctuation.special