diff options
Diffstat (limited to 'lua/mason-lspconfig/init.lua')
| -rw-r--r-- | lua/mason-lspconfig/init.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lua/mason-lspconfig/init.lua b/lua/mason-lspconfig/init.lua index 659825ad..fcc9b5cc 100644 --- a/lua/mason-lspconfig/init.lua +++ b/lua/mason-lspconfig/init.lua @@ -7,6 +7,7 @@ local server_mapping = require "mason-lspconfig.mappings.server" local path = require "mason-core.path" local registry = require "mason-registry" local notify = require "mason-core.notify" +local platform = require "mason-core.platform" local M = {} @@ -61,6 +62,8 @@ end local function setup_lspconfig_hook() local util = require "lspconfig.util" + local win_exepath_compat = platform.is.win and require "mason-lspconfig.win-exepath-compat" + util.on_setup = util.add_hook_before(util.on_setup, function(config) local pkg_name = server_mapping.lspconfig_to_package[config.name] if not pkg_name then @@ -69,7 +72,15 @@ local function setup_lspconfig_hook() if registry.is_installed(pkg_name) then resolve_server_config_factory(config.name):if_present(function(config_factory) - merge_in_place(config, config_factory(path.package_prefix(pkg_name))) + merge_in_place(config, config_factory({ install_dir = path.package_prefix(pkg_name) }, config)) + if win_exepath_compat and win_exepath_compat[config.name] and config.cmd and config.cmd[1] then + local exepath = vim.fn.exepath(config.cmd[1]) + if exepath ~= "" then + config.cmd[1] = exepath + else + log.error("Failed to expand cmd path", config.name, config.cmd) + end + end end) else if should_auto_install(config.name) then |
