diff --git a/Cargo.lock b/Cargo.lock index 691eb29..ae078c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -392,13 +392,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "powershell" -version = "0.4.0" -dependencies = [ - "zed_extension_api", -] - [[package]] name = "prettyplease" version = "0.2.37" @@ -765,6 +758,13 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "zed_powershell" +version = "0.4.0" +dependencies = [ + "zed_extension_api", +] + [[package]] name = "zerofrom" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index eae926a..5010d05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "powershell" +name = "zed_powershell" version = "0.4.0" edition = "2021" diff --git a/README.md b/README.md index 88a43bb..0fc6e75 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,43 @@ -# PowerShell extension for Zed editor +# PowerShell support for Zed -## Setting up language server +This extension provides syntax highlighting as well as language server support for PowerShell files -Currently, the extension didn't support automatic installation (it'll soon land). You need -to set the bundle path through `lsp` configuration: +## Configuring your language server + +The extension requires PowerShell to be available in your environment. If that is the case, +the extension will auto-download the language server and start it. + +If you wish to specify a custom path to your language server, you can do so via your settings: ```json { - "lsp": { - "powershell-es": { - "binary": { - "path": "" - } + "lsp": { + "powershell-es": { + "binary": { + "path": "" + } + } } - } } +``` + +Additionally, you can configure settings for your language server as well as initialization options +to pass to the language server on start. + +An example for this: + +```json +"lsp":{ + "powershell-es":{ + "settings":{ + "powershell":{ + "codeFormatting":{ + "openBraceOnSameLine":true, + "addWhitespaceAroundPipe":true, + "trimWhitespaceAroundPipe":true, + "ignoreOneLineBlock":true + } + } + } + } +``` diff --git a/src/powershell.rs b/src/powershell.rs index d49f5df..6b50132 100644 --- a/src/powershell.rs +++ b/src/powershell.rs @@ -1,5 +1,6 @@ use std::env; use std::fs; +use zed_extension_api::settings::LspSettings; use zed_extension_api::{self as zed, Result}; struct PowerShellExtension { @@ -56,6 +57,24 @@ impl zed::Extension for PowerShellExtension { env: Default::default(), }) } + + fn language_server_initialization_options( + &mut self, + language_server_id: &zed_extension_api::LanguageServerId, + worktree: &zed_extension_api::Worktree, + ) -> zed_extension_api::Result> { + LspSettings::for_worktree(language_server_id.as_ref(), worktree) + .map(|settings| settings.initialization_options) + } + + fn language_server_workspace_configuration( + &mut self, + language_server_id: &zed_extension_api::LanguageServerId, + worktree: &zed_extension_api::Worktree, + ) -> zed_extension_api::Result> { + LspSettings::for_worktree(language_server_id.as_ref(), worktree) + .map(|settings| settings.settings) + } } impl PowerShellExtension {