diff options
| author | Alexandre Teoi <ateoi@users.noreply.github.com> | 2025-04-26 15:27:12 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-26 11:27:12 -0700 |
| commit | 48036f6e050a89eaa4be2bf6eac3171c4611cae2 (patch) | |
| tree | b5be456a843ca1772f7568424ee7ec2ce70d377e /lsp/powershell_es.lua | |
| parent | docs: update configs.md (diff) | |
| download | nvim-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.lua | 55 |
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' }, +} |
