aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/powershell_es.lua
diff options
context:
space:
mode:
authorAlexandre Teoi <ateoi@users.noreply.github.com>2025-04-26 15:27:12 -0300
committerGitHub <noreply@github.com>2025-04-26 11:27:12 -0700
commit48036f6e050a89eaa4be2bf6eac3171c4611cae2 (patch)
treeb5be456a843ca1772f7568424ee7ec2ce70d377e /lsp/powershell_es.lua
parentdocs: update configs.md (diff)
downloadnvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar.gz
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar.bz2
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar.lz
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar.xz
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.tar.zst
nvim-lspconfig-48036f6e050a89eaa4be2bf6eac3171c4611cae2.zip
feat(powershell_es): add vim.lsp.config support #3784
Diffstat (limited to 'lsp/powershell_es.lua')
-rw-r--r--lsp/powershell_es.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/lsp/powershell_es.lua b/lsp/powershell_es.lua
new file mode 100644
index 00000000..1f77f29b
--- /dev/null
+++ b/lsp/powershell_es.lua
@@ -0,0 +1,55 @@
+--- @brief
+---
+--- https://github.com/PowerShell/PowerShellEditorServices
+---
+--- Language server for PowerShell.
+---
+--- To install, download and extract PowerShellEditorServices.zip
+--- from the [releases](https://github.com/PowerShell/PowerShellEditorServices/releases).
+--- To configure the language server, set the property `bundle_path` to the root
+--- of the extracted PowerShellEditorServices.zip.
+---
+--- ```lua
+--- vim.lsp.config('powershell_es', {
+--- bundle_path = 'c:/w/PowerShellEditorServices',
+--- })
+--- ```
+---
+--- By default the language server is started in `pwsh` (PowerShell Core). This can be changed by specifying `shell`.
+---
+--- ```lua
+--- vim.lsp.config('powershell_es', {
+--- bundle_path = 'c:/w/PowerShellEditorServices',
+--- shell = 'powershell.exe',
+--- })
+--- ```
+---
+--- Note that the execution policy needs to be set to `Unrestricted` for the languageserver run under PowerShell
+---
+--- If necessary, specific `cmd` can be defined instead of `bundle_path`.
+--- See [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices#standard-input-and-output)
+--- to learn more.
+---
+--- ```lua
+--- vim.lsp.config('powershell_es', {
+--- cmd = {'pwsh', '-NoLogo', '-NoProfile', '-Command', "c:/PSES/Start-EditorServices.ps1 ..."},
+--- })
+--- ```
+
+return {
+ cmd = function(dispatchers)
+ local temp_path = vim.fn.stdpath('cache')
+ local bundle_path = vim.lsp.config.powershell_es.bundlePath
+
+ local shell = vim.lsp.config.powershell_es.shell or 'pwsh'
+
+ local command_fmt =
+ [[& '%s/PowerShellEditorServices/Start-EditorServices.ps1' -BundledModulesPath '%s' -LogPath '%s/powershell_es.log' -SessionDetailsPath '%s/powershell_es.session.json' -FeatureFlags @() -AdditionalModules @() -HostName nvim -HostProfileId 0 -HostVersion 1.0.0 -Stdio -LogLevel Normal]]
+ local command = command_fmt:format(bundle_path, bundle_path, temp_path, temp_path)
+ local cmd = { shell, '-NoLogo', '-NoProfile', '-Command', command }
+
+ return vim.lsp.rpc.start(cmd, dispatchers)
+ end,
+ filetypes = { 'ps1' },
+ root_markers = { 'PSScriptAnalyzerSettings.psd1', '.git' },
+}