From de0b136be2eaf3e65ea6a8177a4875346b35f0c2 Mon Sep 17 00:00:00 2001 From: Kay Simmons Date: Tue, 7 Feb 2023 01:00:50 -0800 Subject: [PATCH 1/2] wip yaml highlighting --- Cargo.lock | 10 ++++++ crates/zed/Cargo.toml | 1 + crates/zed/src/languages.rs | 5 +++ crates/zed/src/languages/yaml/brackets.scm | 3 ++ crates/zed/src/languages/yaml/config.toml | 15 ++++++++ crates/zed/src/languages/yaml/highlights.scm | 37 ++++++++++++++++++++ 6 files changed, 71 insertions(+) create mode 100644 crates/zed/src/languages/yaml/brackets.scm create mode 100644 crates/zed/src/languages/yaml/config.toml create mode 100644 crates/zed/src/languages/yaml/highlights.scm 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 From fe25994fb31823b33322de5c9a5147faf65ce93a Mon Sep 17 00:00:00 2001 From: Kay Simmons Date: Tue, 7 Feb 2023 14:20:23 -0800 Subject: [PATCH 2/2] fix highlights, indents, and tab size for yaml --- assets/settings/default.json | 3 ++ crates/zed/src/languages/python/config.toml | 2 +- crates/zed/src/languages/yaml/config.toml | 12 +++++--- crates/zed/src/languages/yaml/highlights.scm | 32 ++++++++++++++------ crates/zed/src/languages/yaml/outline.scm | 1 + 5 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 crates/zed/src/languages/yaml/outline.scm diff --git a/assets/settings/default.json b/assets/settings/default.json index 6c784a067c143f0f74dfb4fa0d954a19cb87cf12..bab998f72fcf4bd34d146c373ac6fefc136da54b 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -221,6 +221,9 @@ }, "TSX": { "tab_size": 2 + }, + "Yaml": { + "tab_size": 2 } }, // LSP Specific settings. diff --git a/crates/zed/src/languages/python/config.toml b/crates/zed/src/languages/python/config.toml index a817de8e3ba87b2619d4935dbe536060d3522137..45f20e25a3570b7b939fa04cf7a2c14e3528ba15 100644 --- a/crates/zed/src/languages/python/config.toml +++ b/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] diff --git a/crates/zed/src/languages/yaml/config.toml b/crates/zed/src/languages/yaml/config.toml index ec08826ea3d62dbbc8fc4d3801f9d6aaeccc2959..08dac475b370666aa6186ed55e397fbce7a4c7ba 100644 --- a/crates/zed/src/languages/yaml/config.toml +++ b/crates/zed/src/languages/yaml/config.toml @@ -3,13 +3,15 @@ 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 }, + { 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 }, + { 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 index 0286a371c9c641c3323318b0a3695e55ee377db7..06081f63cb45739e2af8d519a35be6b819c2ad58 100644 --- a/crates/zed/src/languages/yaml/highlights.scm +++ b/crates/zed/src/languages/yaml/highlights.scm @@ -1,17 +1,29 @@ (boolean_scalar) @boolean (null_scalar) @constant.builtin -(double_quote_scalar) @string -(single_quote_scalar) @string -((block_scalar) @string (#set! "priority" 99)) -(string_scalar) @string + +[ + (double_quote_scalar) + (single_quote_scalar) + (block_scalar) + (string_scalar) +] @string + (escape_sequence) @string.escape -(integer_scalar) @number -(float_scalar) @number + +[ + (integer_scalar) + (float_scalar) +] @number + (comment) @comment -(anchor_name) @type -(alias_name) @type -(tag) @type -(ERROR) @error + +[ + (anchor_name) + (alias_name) + (tag) +] @type + +key: (flow_node (plain_scalar (string_scalar) @property)) [ "," diff --git a/crates/zed/src/languages/yaml/outline.scm b/crates/zed/src/languages/yaml/outline.scm new file mode 100644 index 0000000000000000000000000000000000000000..e85eb1bf8ad167591691b0cbc3ccf2065b833521 --- /dev/null +++ b/crates/zed/src/languages/yaml/outline.scm @@ -0,0 +1 @@ +(block_mapping_pair key: (flow_node (plain_scalar (string_scalar) @name))) @item \ No newline at end of file