diff --git a/Cargo.lock b/Cargo.lock index 686157fb85..a1188259ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5136,18 +5136,28 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.19.5" -source = "git+https://github.com/tree-sitter/tree-sitter?rev=d72771a19f4143530b1cfd23808e344f1276e176#d72771a19f4143530b1cfd23808e344f1276e176" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9394e9dbfe967b5f3d6ab79e302e78b5fb7b530c368d634ff3b8d67ede138bf1" dependencies = [ "cc", "regex", ] +[[package]] +name = "tree-sitter-markdown" +version = "0.0.1" +source = "git+https://github.com/maxbrunsfeld/tree-sitter-markdown?rev=b2b4eefd51ada972ef8bb581b83b6b8e7a28c7a6#b2b4eefd51ada972ef8bb581b83b6b8e7a28c7a6" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-rust" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784f7ef9cdbd4c895dc2d4bb785e95b4a5364a602eec803681db83d1927ddf15" +checksum = "3df540a493d754015d22eaf57c38f58804be3713a22f6062db983ec15f85c3c9" dependencies = [ "cc", "tree-sitter", @@ -5644,8 +5654,6 @@ dependencies = [ "project", "serde_json", "theme", - "tree-sitter", - "tree-sitter-rust", ] [[package]] @@ -5732,6 +5740,7 @@ dependencies = [ "tiny_http", "toml", "tree-sitter", + "tree-sitter-markdown", "tree-sitter-rust", "unindent", "url", diff --git a/Cargo.toml b/Cargo.toml index 98c5bf46d6..f945561e7c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,6 @@ default-members = ["crates/zed"] [patch.crates-io] async-task = { git = "https://github.com/zed-industries/async-task", rev = "341b57d6de98cdfd7b418567b8de2022ca993a6e" } -tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "d72771a19f4143530b1cfd23808e344f1276e176" } # TODO - Remove when a version is released with this PR: https://github.com/servo/core-foundation-rs/pull/457 cocoa = { git = "https://github.com/servo/core-foundation-rs", rev = "025dcb3c0d1ef01530f57ef65f3b1deb948f5737" } cocoa-foundation = { git = "https://github.com/servo/core-foundation-rs", rev = "025dcb3c0d1ef01530f57ef65f3b1deb948f5737" } diff --git a/crates/editor/Cargo.toml b/crates/editor/Cargo.toml index 46250a55df..f87ec63b3e 100644 --- a/crates/editor/Cargo.toml +++ b/crates/editor/Cargo.toml @@ -43,5 +43,5 @@ ctor = "0.1" env_logger = "0.8" rand = "0.8" unindent = "0.1.7" -tree-sitter = "0.19" -tree-sitter-rust = "0.19" +tree-sitter = "0.20" +tree-sitter-rust = "0.20" diff --git a/crates/gpui/Cargo.toml b/crates/gpui/Cargo.toml index 7c237d48e5..4414936c9e 100644 --- a/crates/gpui/Cargo.toml +++ b/crates/gpui/Cargo.toml @@ -38,7 +38,7 @@ smallvec = { version = "1.6", features = ["union"] } smol = "1.2" time = { version = "0.3" } tiny-skia = "0.5" -tree-sitter = "0.19" +tree-sitter = "0.20" usvg = "0.14" waker-fn = "1.1.0" diff --git a/crates/gpui/grammars/context-predicate/Cargo.toml b/crates/gpui/grammars/context-predicate/Cargo.toml index 9e3316c0f2..1dea1930fa 100644 --- a/crates/gpui/grammars/context-predicate/Cargo.toml +++ b/crates/gpui/grammars/context-predicate/Cargo.toml @@ -14,7 +14,7 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"] path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = "0.19.3" +tree-sitter = "0.20" [build-dependencies] cc = "1.0" diff --git a/crates/gpui/src/platform/mac/renderer.rs b/crates/gpui/src/platform/mac/renderer.rs index d291c9219e..2a97f4820c 100644 --- a/crates/gpui/src/platform/mac/renderer.rs +++ b/crates/gpui/src/platform/mac/renderer.rs @@ -107,7 +107,7 @@ impl Renderer { "path_atlas", "path_atlas_vertex", "path_atlas_fragment", - MTLPixelFormat::R8Unorm, + MTLPixelFormat::R16Float, ); Self { sprite_cache, @@ -827,7 +827,7 @@ fn build_path_atlas_texture_descriptor() -> metal::TextureDescriptor { let texture_descriptor = metal::TextureDescriptor::new(); texture_descriptor.set_width(2048); texture_descriptor.set_height(2048); - texture_descriptor.set_pixel_format(MTLPixelFormat::R8Unorm); + texture_descriptor.set_pixel_format(MTLPixelFormat::R16Float); texture_descriptor .set_usage(metal::MTLTextureUsage::RenderTarget | metal::MTLTextureUsage::ShaderRead); texture_descriptor.set_storage_mode(metal::MTLStorageMode::Private); diff --git a/crates/gpui/src/platform/mac/shaders/shaders.metal b/crates/gpui/src/platform/mac/shaders/shaders.metal index 13d2720fad..0cf7d290f2 100644 --- a/crates/gpui/src/platform/mac/shaders/shaders.metal +++ b/crates/gpui/src/platform/mac/shaders/shaders.metal @@ -205,8 +205,6 @@ vertex SpriteFragmentInput sprite_vertex( }; } -#define MAX_WINDINGS 32. - fragment float4 sprite_fragment( SpriteFragmentInput input [[stage_in]], texture2d atlas [[ texture(GPUISpriteFragmentInputIndexAtlas) ]] @@ -216,7 +214,7 @@ fragment float4 sprite_fragment( float4 sample = atlas.sample(atlas_sampler, input.atlas_position); float mask; if (input.compute_winding) { - mask = 1. - abs(1. - fmod(sample.r * MAX_WINDINGS, 2.)); + mask = 1. - abs(1. - fmod(sample.r, 2.)); } else { mask = sample.a; } @@ -303,6 +301,6 @@ fragment float4 path_atlas_fragment( ); float f = (input.st_position.x * input.st_position.x) - input.st_position.y; float distance = f / length(gradient); - float alpha = saturate(0.5 - distance) / MAX_WINDINGS; + float alpha = saturate(0.5 - distance); return float4(alpha, 0., 0., 1.); } diff --git a/crates/language/Cargo.toml b/crates/language/Cargo.toml index 16c1f6edee..a888d3d8eb 100644 --- a/crates/language/Cargo.toml +++ b/crates/language/Cargo.toml @@ -34,8 +34,8 @@ rand = { version = "0.8.3", optional = true } serde = { version = "1", features = ["derive"] } similar = "1.3" smol = "1.2" -tree-sitter = "0.19.5" -tree-sitter-rust = { version = "0.19.0", optional = true } +tree-sitter = "0.20.0" +tree-sitter-rust = { version = "0.20.0", optional = true } [dev-dependencies] text = { path = "../text", features = ["test-support"] } @@ -43,5 +43,5 @@ gpui = { path = "../gpui", features = ["test-support"] } lsp = { path = "../lsp", features = ["test-support"] } util = { path = "../util", features = ["test-support"] } rand = "0.8.3" -tree-sitter-rust = "0.19.0" +tree-sitter-rust = "0.20.0" unindent = "0.1.7" diff --git a/crates/workspace/Cargo.toml b/crates/workspace/Cargo.toml index 29e25148e5..a5ca3c91e9 100644 --- a/crates/workspace/Cargo.toml +++ b/crates/workspace/Cargo.toml @@ -7,12 +7,7 @@ edition = "2018" path = "src/workspace.rs" [features] -test-support = [ - "client/test-support", - "project/test-support", - "tree-sitter", - "tree-sitter-rust", -] +test-support = ["client/test-support", "project/test-support"] [dependencies] client = { path = "../client" } @@ -23,13 +18,9 @@ theme = { path = "../theme" } anyhow = "1.0.38" log = "0.4" postage = { version = "0.4.1", features = ["futures-traits"] } -tree-sitter = { version = "0.19.5", optional = true } -tree-sitter-rust = { version = "0.19.0", optional = true } [dev-dependencies] client = { path = "../client", features = ["test-support"] } gpui = { path = "../gpui", features = ["test-support"] } project = { path = "../project", features = ["test-support"] } serde_json = { version = "1.0.64", features = ["preserve_order"] } -tree-sitter = "0.19.5" -tree-sitter-rust = "0.19.0" diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index 9657691fc9..e03ef6dcf9 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -84,8 +84,9 @@ thiserror = "1.0.29" time = "0.3" tiny_http = "0.8" toml = "0.5" -tree-sitter = "0.19.5" -tree-sitter-rust = "0.19.0" +tree-sitter = "0.20.0" +tree-sitter-rust = "0.20.0" +tree-sitter-markdown = { git = "https://github.com/maxbrunsfeld/tree-sitter-markdown", rev = "b2b4eefd51ada972ef8bb581b83b6b8e7a28c7a6" } url = "2.2" [dev-dependencies] diff --git a/crates/zed/assets/themes/black.toml b/crates/zed/assets/themes/black.toml index ec51391111..a822fa7d33 100644 --- a/crates/zed/assets/themes/black.toml +++ b/crates/zed/assets/themes/black.toml @@ -50,3 +50,10 @@ comment = "#6a9955" property = "#4e94ce" variant = "#4fc1ff" constant = "#9cdcfe" + +title = { color = "#9cdcfe", weight = "bold" } +emphasis = "#4ec9b0" +"emphasis.strong" = { color = "#4ec9b0", weight = "bold" } +link_uri = { color = "#6a9955", underline = true } +link_text = { color = "#cb8f77", italic = true } +list_marker = "#4e94ce" diff --git a/crates/zed/assets/themes/dark.toml b/crates/zed/assets/themes/dark.toml index 15850f286a..9d65a160eb 100644 --- a/crates/zed/assets/themes/dark.toml +++ b/crates/zed/assets/themes/dark.toml @@ -50,3 +50,10 @@ comment = "#6a9955" property = "#4e94ce" variant = "#4fc1ff" constant = "#9cdcfe" + +title = { color = "#9cdcfe", weight = "bold" } +emphasis = "#4ec9b0" +"emphasis.strong" = { color = "#4ec9b0", weight = "bold" } +link_uri = { color = "#6a9955", underline = true } +link_text = { color = "#cb8f77", italic = true } +list_marker = "#4e94ce" diff --git a/crates/zed/assets/themes/light.toml b/crates/zed/assets/themes/light.toml index 5a893368c3..18134501ec 100644 --- a/crates/zed/assets/themes/light.toml +++ b/crates/zed/assets/themes/light.toml @@ -49,4 +49,11 @@ number = "#b5cea8" comment = "#6a9955" property = "#4e94ce" variant = "#4fc1ff" -constant = "#9cdcfe" +constant = "#5a9ccc" + +title = { color = "#5a9ccc", weight = "bold" } +emphasis = "#267f29" +"emphasis.strong" = { color = "#267f29", weight = "bold" } +link_uri = { color = "#6a9955", underline = true } +link_text = { color = "#a82121", italic = true } +list_marker = "#4e94ce" diff --git a/crates/zed/languages/markdown/highlights.scm b/crates/zed/languages/markdown/highlights.scm new file mode 100644 index 0000000000..65ac47ec4b --- /dev/null +++ b/crates/zed/languages/markdown/highlights.scm @@ -0,0 +1,24 @@ +(emphasis) @emphasis +(strong_emphasis) @emphasis.strong + +[ + (atx_heading) + (setext_heading) +] @title + +[ + (list_marker_plus) + (list_marker_minus) + (list_marker_star) + (list_marker_dot) + (list_marker_parenthesis) +] @list_marker + +[ + (indented_code_block) + (fenced_code_block) + (code_span) +] @text.literal + +(link_destination) @link_uri +(link_text) @link_text diff --git a/crates/zed/src/language.rs b/crates/zed/src/language.rs index c045804e92..a84d2cbd40 100644 --- a/crates/zed/src/language.rs +++ b/crates/zed/src/language.rs @@ -27,8 +27,11 @@ fn rust() -> Language { } fn markdown() -> Language { + let grammar = tree_sitter_markdown::language(); let config = toml::from_slice(&LanguageDir::get("markdown/config.toml").unwrap().data).unwrap(); - Language::new(config, None) + Language::new(config, Some(grammar)) + .with_highlights_query(load_query("markdown/highlights.scm").as_ref()) + .unwrap() } fn load_query(path: &str) -> Cow<'static, str> {