From a059f26ff12d5c25a08c9252e8164f82620dca63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:14:38 +0200 Subject: [PATCH 01/15] Use reference-style links in README --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4958c0d92..790628eb9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ # PowerShell Editor Services -[![CI Tests](https://github.com/PowerShell/PowerShellEditorServices/actions/workflows/ci-test.yml/badge.svg)](https://github.com/PowerShell/PowerShellEditorServices/actions/workflows/ci-test.yml) -[![Discord](https://img.shields.io/discord/180528040881815552.svg?label=%23vscode&logo=discord&logoColor=white)](https://aka.ms/psdiscord) +[![CI Tests][ci-tests-badge]][ci-tests-yaml] +[![Discord][discord-badge]][discord] + +[ci-tests-badge]: https://github.com/PowerShell/PowerShellEditorServices/actions/workflows/ci-test.yml/badge.svg +[ci-tests-yaml]: https://github.com/PowerShell/PowerShellEditorServices/actions/workflows/ci-test.yml +[discord-badge]: https://img.shields.io/discord/180528040881815552.svg?label=%23vscode&logo=discord&logoColor=white +[discord]: https://aka.ms/psdiscord **PowerShell Editor Services** is a PowerShell module that provides common functionality needed to enable a consistent and robust PowerShell development From 377b855e9bd48feaeac94a01cb6931e9fea11850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:14:52 +0200 Subject: [PATCH 02/15] Use reference-style links in README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 790628eb9..f758449b1 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ functionality needed to enable a consistent and robust PowerShell development experience in almost any editor or integrated development environment (IDE). -## [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) clients using PowerShell Editor Services +## [Language Server Protocol][lsp] clients using PowerShell Editor Services + +[lsp]: https://microsoft.github.io/language-server-protocol/ - [PowerShell for Visual Studio Code](https://github.com/PowerShell/vscode-powershell) > [!NOTE] From 8aa24743d8bb056c63d60c5d573b5dddf081d384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:15:05 +0200 Subject: [PATCH 03/15] Use reference-style links in README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f758449b1..e099e1149 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,9 @@ It is recommended to use a generic [LSP plugin](#Usage) with your client if poss ## Supported PowerShell Versions -PSES runs as a PowerShell Module in [currently supported versions of PowerShell 7+](https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle). +PSES runs as a PowerShell Module in [currently supported versions of PowerShell 7+][supported-ps-versions]. + +[supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle Windows PowerShell 5.1 is supported on a best-effort basis. From 8a3024ea173d1d33a2b51a94e87aedea55034a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:15:18 +0200 Subject: [PATCH 04/15] Use reference-style links in README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e099e1149..dfb0a7a38 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,9 @@ named pipes (AKA sockets) are the way to go. They give you all the benefits of the Language Server Protocol with extra capabilities that you can take advantage of: - The PowerShell Extension Terminal -- Debugging using the [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) +- Debugging using the [Debug Adapter Protocol][debug-adapter-protocol] + +[debug-adapter-protocol]: https://microsoft.github.io/debug-adapter-protocol/ The typical command to start PowerShell Editor Services using named pipes / sockets is as follows: From 5d89832aeda08cc1cd04749617816f647035149f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:15:28 +0200 Subject: [PATCH 05/15] Edit overview in README --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index dfb0a7a38..4f11c8ef8 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,19 @@ [discord-badge]: https://img.shields.io/discord/180528040881815552.svg?label=%23vscode&logo=discord&logoColor=white [discord]: https://aka.ms/psdiscord -**PowerShell Editor Services** is a PowerShell module that provides common -functionality needed to enable a consistent and robust PowerShell development -experience in almost any editor or integrated development environment (IDE). +**PowerShell Editor Services** (PSES) is a PowerShell module that provides +a consistent and robust PowerShell development experience in almost any text +editor and IDE (integrated development environment). + +PSES adheres to the [Language Server Protocol][lsp] (LSP) for easy integration +with clients, especially text editors and IDEs. + +[lsp]: https://microsoft.github.io/language-server-protocol/ + +PSES runs in [currently supported versions of PowerShell 7+][supported-ps-versions]. +Windows PowerShell 5.1 is supported on a best efforts basis. + +[supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle ## [Language Server Protocol][lsp] clients using PowerShell Editor Services @@ -30,14 +40,6 @@ It is recommended to use a generic [LSP plugin](#Usage) with your client if poss - [coc-powershell](https://github.com/yatli/coc-powershell), a Vim and Neovim plugin - [powershell.nvim](https://github.com/TheLeoP/powershell.nvim) a Neovim plugin -## Supported PowerShell Versions - -PSES runs as a PowerShell Module in [currently supported versions of PowerShell 7+][supported-ps-versions]. - -[supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle - -Windows PowerShell 5.1 is supported on a best-effort basis. - ## Features - The Language Service provides common editor features for the PowerShell language: From 6fd0a440b791e18ea3d952d921575b655d89c8f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:15:44 +0200 Subject: [PATCH 06/15] Edit README section about LSP clients --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4f11c8ef8..78699dde2 100644 --- a/README.md +++ b/README.md @@ -22,18 +22,19 @@ Windows PowerShell 5.1 is supported on a best efforts basis. [supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle -## [Language Server Protocol][lsp] clients using PowerShell Editor Services - -[lsp]: https://microsoft.github.io/language-server-protocol/ +#### LSP clients using PSES - [PowerShell for Visual Studio Code](https://github.com/PowerShell/vscode-powershell) + > [!NOTE] > PowerShell for Azure Data Studio will no longer be updated or maintained. -The functionality in PowerShell Editor Services is available in the following editor extensions: +PSES is also available through the following editor extensions: + > [!WARNING] -> These clients are community maintained and may be very out of date. -It is recommended to use a generic [LSP plugin](#Usage) with your client if possible. +> These clients are community maintained and may be very out of date. It +> is recommended to use a generic [LSP plugin](#usage) with your client if +> possible. - [lsp-pwsh](https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-pwsh.el), an Emacs PowerShell plugin - [intellij-powershell](https://github.com/ant-druha/intellij-powershell), adds PowerShell language support to IntelliJ-based IDEs From 44d9732441a015935510687191d6592c35aa5b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:15:57 +0200 Subject: [PATCH 07/15] Add Installation section to README --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 78699dde2..921e7f5dc 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,33 @@ PSES is also available through the following editor extensions: - The [$psEditor API](docs/guide/extensions.md) enables scripting of the host editor - A full, Extension Terminal experience for interactive development and debugging +## Installation + +PSES is implemented as a PowerShell module, but you cannot install it using +PSResourceGet or `Install-Module`. To install PSES, follow the instructions in the +sections below. + +#### Automated Installation + +Your text editor, IDE or LSP client may be able to install PSES for you. Check +the relevant documentation. + +#### Manual Installation + +Download **PowerShellEditorServices.zip** from [GitHub Releases][pses-releases] +and extract the contents to a directory of your choice. + +The following script will download and extract **PowerShellEditorServices.zip**. +You can copy and paste it into your PowerShell terminal. + +```powershell +$uri = 'https://api.github.com/repos/PowerShell/PowerShellEditorServices/releases/latest' +irm $uri | % { iwr $_.assets.browser_download_url -OutFile PowerShellEditorServices.zip } +Expand-Archive ./PowershellEditorservices.zip PowerShellEditorServices +``` + +[pses-releases]: https://github.com/PowerShell/PowerShellEditorServices/releases + ## Usage If you're looking to integrate PowerShell Editor Services into your [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) compliant editor or client, From 5c75920c0a75afc1a6e34853009ea31f3953be2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:16:12 +0200 Subject: [PATCH 08/15] Edit Usage section in README --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 921e7f5dc..e6957ab10 100644 --- a/README.md +++ b/README.md @@ -80,8 +80,20 @@ Expand-Archive ./PowershellEditorservices.zip PowerShellEditorServices ## Usage -If you're looking to integrate PowerShell Editor Services into your [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) compliant editor or client, -we support two ways of connecting. +If your text editor or client supports LSP, you can connect to PSES in two +ways: via +[named pipes](#named-pipes) (Unix domain sockets) or +[standard input and output](#standard-input-and-output) (stdio). +Some features are only enabled based on the connection method used. + +| Feature | Named Pipes | Stdio | +| ----------------------------- |:-----------:|:-----:| +| **Extension Terminal** |✅ |❌ | +| **Debugger Adapter Protocol** |✅ |❌ | + +> [!NOTE] +> All connection methods are available in all OSes supported by PowerShell +> unless otherwise noted. ### Named Pipes / Unix Domain Sockets From 64c16e7d8bf3d55d9cce68ce9a4377af5a0b644c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:16:23 +0200 Subject: [PATCH 09/15] Edit section in README about named pipes --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e6957ab10..6965b0778 100644 --- a/README.md +++ b/README.md @@ -95,29 +95,29 @@ Some features are only enabled based on the connection method used. > All connection methods are available in all OSes supported by PowerShell > unless otherwise noted. -### Named Pipes / Unix Domain Sockets +### Named Pipes -If you're looking for a more feature-rich experience, -named pipes (AKA sockets) are the way to go. -They give you all the benefits of the Language Server Protocol with extra capabilities that you can take advantage of: +Named pipes enable all additional LSP capabilities, including: -- The PowerShell Extension Terminal -- Debugging using the [Debug Adapter Protocol][debug-adapter-protocol] +- the PowerShell Extension Terminal, and +- debugging using the [Debug Adapter Protocol][Debug Adapter Protocol] -[debug-adapter-protocol]: https://microsoft.github.io/debug-adapter-protocol/ +[Debug Adapter Protocol]: https://microsoft.github.io/debug-adapter-protocol/ -The typical command to start PowerShell Editor Services using named pipes / sockets is as follows: +To start PSES using named pipes, use a command like: ```powershell pwsh -NoLogo -NoProfile -Command "./PowerShellEditorServices/Start-EditorServices.ps1 -SessionDetailsPath ./session.json" ``` -The start script, `Start-EditorServices.ps1`, is found in the `PowerShellEditorServices` folder instead the `PowerShellEditorServices.zip` downloaded from the GitHub releases. +The script **Start-EditorServices.ps1** is located inside the +**PowerShellEditorServices** directory. See [Manual Installation](#manual-installation). -The session details (which named pipes were created) will be written to the given session details path, -and the client needs to point to these in order to connect. +The file path given to `-SessionDetailsPath` will contain information about the +created named pipes that the client needs to connect to PSES. -The Visual Studio Code, Vim, Neovim, and IntelliJ extensions use named pipes. +Named pipes are used in the extensions for Visual Studio Code, Vim, Neovim, +and IntelliJ. ### Standard Input and Output From cd993ce9d60a20ef3e78973874ae04b92316bcb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 08:16:42 +0200 Subject: [PATCH 10/15] Edit Standard Input and Output section in README --- README.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6965b0778..b4f715019 100644 --- a/README.md +++ b/README.md @@ -121,12 +121,13 @@ and IntelliJ. ### Standard Input and Output -Connecting to PSES over standard input and output (stdio) is the simplest option in most LSP clients. +Connecting to PSES over standard input and output (stdio) is the simplest option +in most LSP clients. > [!NOTE] -> Some features are not available over stdio, such as the debugger and Extension -> Terminal, because they require their own IO streams and stdio provides a single -> pair of streams. +> Some PSES features are not available over stdio, such as the debugger and +> Extension Terminal, because they require their own IO streams and stdio +> provides a single pair of streams. Use PSES over stdio as follows: @@ -134,24 +135,26 @@ Use PSES over stdio as follows: pwsh -NoLogo -NoProfile -Command "./PowerShellEditorServices/Start-EditorServices.ps1 -Stdio -LogLevel Error" ``` +The script **Start-EditorServices.ps1** is located inside the +**PowerShellEditorServices** directory. See [Manual Installation](#manual-installation). + > [!IMPORTANT] -> Adjust the path to `Start-EditorServices.ps1` as needed. The command above assumes -> that the current directory is set to the folder where you expanded the PSES ZIP -> archive to. -> -> Depending on your editor, set the environment variables `NO_COLOR` and `TERM` -> before issuing the command above to improve the readability of any error messages -> `pwsh` may output. See [Disabling ANSI Output](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_ansi_terminals#disabling-ansi-output) +> Depending on your editor, consider setting the environment variables +> `NO_COLOR` and `TERM` before executing the command above to improve the +> readability of any error messages output by `pwsh`. See [Disabling ANSI Output][disabling-ansi-output] > for more details. -For examples of tested end-to-end configurations, see: +[disabling-ansi-output]: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_ansi_terminals#disabling-ansi-output + +For examples of tested sdtio-based configurations, see: - [emacs-simple-test.el](test/emacs-simple-test.el) - [emacs-test.el](test/emacs-test.el) - [vim-simple-test.vim](test/vim-simple-test.vim) - [vim-test.vim](test/vim-test.vim) -They use [eglot for Emacs](https://github.com/joaotavora/eglot) and [LanguageClient-neovim](https://github.com/autozimu/LanguageClient-neovim). +The examples above use [eglot for Emacs](https://github.com/joaotavora/eglot) +and [LanguageClient-neovim](https://github.com/autozimu/LanguageClient-neovim). ### Advanced Usage From d5b9477de2dbe0a7f2d63da65ac48bd37faba420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 10:51:16 +0200 Subject: [PATCH 11/15] Review: Fix heading levels Looks worse but apparently improves the doc's usability. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b4f715019..7d82d4b1b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Windows PowerShell 5.1 is supported on a best efforts basis. [supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle -#### LSP clients using PSES +## LSP clients using PSES - [PowerShell for Visual Studio Code](https://github.com/PowerShell/vscode-powershell) @@ -57,12 +57,12 @@ PSES is implemented as a PowerShell module, but you cannot install it using PSResourceGet or `Install-Module`. To install PSES, follow the instructions in the sections below. -#### Automated Installation +### Automated Installation Your text editor, IDE or LSP client may be able to install PSES for you. Check the relevant documentation. -#### Manual Installation +### Manual Installation Download **PowerShellEditorServices.zip** from [GitHub Releases][pses-releases] and extract the contents to a directory of your choice. From 4b36aa62c0cf73aab8d183d4aead0156f75b1efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 10:52:03 +0200 Subject: [PATCH 12/15] Review: Spelling Apparently the correct term is 'best efforts' but whatever. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d82d4b1b..c65aa676a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ with clients, especially text editors and IDEs. [lsp]: https://microsoft.github.io/language-server-protocol/ PSES runs in [currently supported versions of PowerShell 7+][supported-ps-versions]. -Windows PowerShell 5.1 is supported on a best efforts basis. +Windows PowerShell 5.1 is supported on a best-effort basis. [supported-ps-versions]: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle From e1362a875d9cf9a6757ab12cb0c4497cd3ca197a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 10:52:17 +0200 Subject: [PATCH 13/15] Review: Letter case --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c65aa676a..335d8ec11 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ You can copy and paste it into your PowerShell terminal. ```powershell $uri = 'https://api.github.com/repos/PowerShell/PowerShellEditorServices/releases/latest' irm $uri | % { iwr $_.assets.browser_download_url -OutFile PowerShellEditorServices.zip } -Expand-Archive ./PowershellEditorservices.zip PowerShellEditorServices +Expand-Archive ./PowerShellEditorservices.zip PowerShellEditorServices ``` [pses-releases]: https://github.com/PowerShell/PowerShellEditorServices/releases From 66e4fd061cec340a87e82ec43fa4018404ea9eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 10:52:39 +0200 Subject: [PATCH 14/15] Review: Remove redundant spaces --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 335d8ec11..7eed66ae8 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Expand-Archive ./PowerShellEditorservices.zip PowerShellEditorServices ## Usage -If your text editor or client supports LSP, you can connect to PSES in two +If your text editor or client supports LSP, you can connect to PSES in two ways: via [named pipes](#named-pipes) (Unix domain sockets) or [standard input and output](#standard-input-and-output) (stdio). From 96204494ebcc70190c334860229c2feeacdd52c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20L=C3=B3pez-Anglada?= Date: Mon, 24 Aug 2026 10:52:48 +0200 Subject: [PATCH 15/15] Review: Use correct term --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7eed66ae8..b224bc7f9 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ Some features are only enabled based on the connection method used. | Feature | Named Pipes | Stdio | | ----------------------------- |:-----------:|:-----:| | **Extension Terminal** |✅ |❌ | -| **Debugger Adapter Protocol** |✅ |❌ | +| **Debug Adapter Protocol** |✅ |❌ | > [!NOTE] > All connection methods are available in all OSes supported by PowerShell