From 0579bf73b019ebaf955f9ee1f31d420a0d09f5e1 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Sun, 22 Jun 2025 08:12:09 +0100 Subject: [PATCH] docs: Document `language_ids` in extension.toml (#33035) Document `language-servers.*.language_ids` property in extension.toml. Release Notes: - N/A --------- Co-authored-by: Peter Tripp --- docs/src/extensions/languages.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/src/extensions/languages.md b/docs/src/extensions/languages.md index 2e37c5ad2c..44c673e3e1 100644 --- a/docs/src/extensions/languages.md +++ b/docs/src/extensions/languages.md @@ -369,7 +369,7 @@ Zed uses the [Language Server Protocol](https://microsoft.github.io/language-ser An extension may provide any number of language servers. To provide a language server from your extension, add an entry to your `extension.toml` with the name of your language server and the language(s) it applies to: ```toml -[language_servers.my-language] +[language_servers.my-language-server] name = "My Language LSP" languages = ["My Language"] ``` @@ -393,3 +393,21 @@ impl zed::Extension for MyExtension { ``` You can customize the handling of the language server using several optional methods in the `Extension` trait. For example, you can control how completions are styled using the `label_for_completion` method. For a complete list of methods, see the [API docs for the Zed extension API](https://docs.rs/zed_extension_api). + +### Multi-Language Support + +If your language server supports additional languages, you can use `language_ids` to map Zed `languages` to the desired [LSP-specific `languageId`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem) identifiers: + +```toml + +[language-servers.my-language-server] +name = "Whatever LSP" +languages = ["JavaScript", "JSX", "HTML", "CSS"] + +[language-servers.my-language-server.language_ids] +"JavaScript" = "javascript" +"JSX" = "javascriptreact" +"TSX" = "typescriptreact" +"HTML" = "html" +"CSS" = "css" +```