aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-lspconfig/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-lspconfig/init.lua')
-rw-r--r--lua/mason-lspconfig/init.lua13
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