From 7a90b1124ff87a3014059f73716c438539add77f Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Tue, 21 May 2024 14:04:02 +0200 Subject: [PATCH] html: release 0.1.0 (#12083) Add config for tag autoclosing: add following to lsp section of your settings: "vscode-html-language-server": { "settings": { "html": { "tagAutoclosing": true } } } It also accepts `css`, `js/ts` and `javascript` as options. Disable HTML language server in JS/TS/TSX files for now. I decided to disable it for now as it caused excessive edits in these types of files (as reported by @mariansimecek in https://github.com/zed-industries/zed/pull/11761#issuecomment-2122038107); it looks like HTML language server tries to track language ranges (e.g. whether a particular span is TS/HTML fragment etc) just like we do. However in plain JS/TSX files it seems like it treats the whole file as one big chunk of HTML, which is.. not right, to say the least. No release note, as HTML extension goodies are not on Preview yet. Release Notes: - N/A --- Cargo.lock | 2 +- crates/languages/src/javascript/config.toml | 4 ++-- crates/languages/src/tsx/config.toml | 4 ++-- extensions/html/Cargo.toml | 2 +- extensions/html/extension.toml | 7 +------ extensions/html/src/html.rs | 12 ++++++++++++ 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2d2f17f70ef4aff0296240a6bd60b5e5dd2b79c..9adfd5ab44b93af6b2598035e26aae7cc3a74c0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13208,7 +13208,7 @@ dependencies = [ [[package]] name = "zed_html" -version = "0.0.2" +version = "0.1.0" dependencies = [ "zed_extension_api 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/crates/languages/src/javascript/config.toml b/crates/languages/src/javascript/config.toml index 66d3bcdaa0a1b28629a903efa7290dc460d70e50..32e08c1cd93e99093071ebc4e6e1a8ced313e949 100644 --- a/crates/languages/src/javascript/config.toml +++ b/crates/languages/src/javascript/config.toml @@ -16,12 +16,12 @@ brackets = [ ] word_characters = ["$", "#"] tab_size = 2 -scope_opt_in_language_servers = ["tailwindcss-language-server","vscode-html-language-server", "emmet-language-server"] +scope_opt_in_language_servers = ["tailwindcss-language-server", "emmet-language-server"] [overrides.element] line_comments = { remove = true } block_comment = ["{/* ", " */}"] -opt_into_language_servers = ["emmet-language-server", "vscode-html-language-server"] +opt_into_language_servers = ["emmet-language-server"] [overrides.string] word_characters = ["-"] diff --git a/crates/languages/src/tsx/config.toml b/crates/languages/src/tsx/config.toml index 255b611d25bd196fc5885b2f2b786b5b69c5b7b6..f7c8b80a9089faac58cff4419dc692816dfc48f1 100644 --- a/crates/languages/src/tsx/config.toml +++ b/crates/languages/src/tsx/config.toml @@ -14,13 +14,13 @@ brackets = [ { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] }, ] word_characters = ["#", "$"] -scope_opt_in_language_servers = ["vscode-html-language-server", "tailwindcss-language-server", "emmet-language-server"] +scope_opt_in_language_servers = ["tailwindcss-language-server", "emmet-language-server"] tab_size = 2 [overrides.element] line_comments = { remove = true } block_comment = ["{/* ", " */}"] -opt_into_language_servers = ["vscode-html-language-server", "emmet-language-server"] +opt_into_language_servers = ["emmet-language-server"] [overrides.string] word_characters = ["-"] diff --git a/extensions/html/Cargo.toml b/extensions/html/Cargo.toml index f992647d57fccd140ff23ed03da4a8e3a2f0aaaa..5a2cf0b687f30ed9c7bc52f1887577623a32effd 100644 --- a/extensions/html/Cargo.toml +++ b/extensions/html/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zed_html" -version = "0.0.2" +version = "0.1.0" edition = "2021" publish = false license = "Apache-2.0" diff --git a/extensions/html/extension.toml b/extensions/html/extension.toml index 0406749240712812caef0717bdcff8edaebe9023..063716b7aeecb60c08752b4327bb7df7a85388d7 100644 --- a/extensions/html/extension.toml +++ b/extensions/html/extension.toml @@ -1,7 +1,7 @@ id = "html" name = "HTML" description = "HTML support." -version = "0.0.2" +version = "0.1.0" schema_version = 1 authors = ["Isaac Clayton "] repository = "https://github.com/zed-industries/zed" @@ -9,14 +9,9 @@ repository = "https://github.com/zed-industries/zed" [language_servers.vscode-html-language-server] name = "vscode-html-language-server" language = "HTML" -languages = ["TypeScript", "HTML", "TSX", "JavaScript", "JSDoc"] [language_servers.vscode-html-language-server.language_ids] "HTML" = "html" -"PHP" = "php" -"ERB" = "eruby" -"JavaScript" = "javascriptreact" -"TSX" = "typescriptreact" "CSS" = "css" [grammars.html] diff --git a/extensions/html/src/html.rs b/extensions/html/src/html.rs index 8d8b1af6ab5585908591c229fc1befeac995ff60..b143dfe54d3ac54d593a4b5df879c5f94dc7da10 100644 --- a/extensions/html/src/html.rs +++ b/extensions/html/src/html.rs @@ -1,3 +1,4 @@ +use crate::zed::settings::LspSettings; use std::{env, fs, path::PathBuf}; use zed_extension_api::{self as zed, Result}; @@ -95,6 +96,17 @@ impl zed::Extension for HtmlExtension { env: Default::default(), }) } + fn language_server_workspace_configuration( + &mut self, + server_id: &zed::LanguageServerId, + worktree: &zed::Worktree, + ) -> Result> { + let settings = LspSettings::for_worktree(server_id.as_ref(), worktree) + .ok() + .and_then(|lsp_settings| lsp_settings.settings.clone()) + .unwrap_or_default(); + Ok(Some(settings)) + } } zed::register_extension!(HtmlExtension);