aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-10-11 21:31:05 +0200
committerGitHub <noreply@github.com>2022-10-11 21:31:05 +0200
commitd2bcb38523a7f602e01ca0425ec44f4081362fb9 (patch)
tree2f129975f5e0cd089a3323823f0fb8fa5f892d23 /lua
parentfeat(astro): use vendored tsdk if workspace tsdk not available (#75) (diff)
downloadmason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar.gz
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar.bz2
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar.lz
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar.xz
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.tar.zst
mason-lspconfig-d2bcb38523a7f602e01ca0425ec44f4081362fb9.zip
fix(volar): provide tsdk location rather than full tsserver path (#77)
Fixes #76.
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-lspconfig/server_configurations/astro/init.lua2
-rw-r--r--lua/mason-lspconfig/server_configurations/volar/init.lua2
-rw-r--r--lua/mason-lspconfig/typescript.lua35
3 files changed, 25 insertions, 14 deletions
diff --git a/lua/mason-lspconfig/server_configurations/astro/init.lua b/lua/mason-lspconfig/server_configurations/astro/init.lua
index cb33ab6..ec27ec4 100644
--- a/lua/mason-lspconfig/server_configurations/astro/init.lua
+++ b/lua/mason-lspconfig/server_configurations/astro/init.lua
@@ -4,7 +4,7 @@ local typescript = require "mason-lspconfig.typescript"
return function(install_dir)
return {
on_new_config = function(new_config, workspace_dir)
- new_config.init_options.typescript.serverPath = typescript.resolve_server_path(install_dir, workspace_dir)
+ new_config.init_options.typescript.serverPath = typescript.resolve_tsserver(install_dir, workspace_dir)
end,
}
end
diff --git a/lua/mason-lspconfig/server_configurations/volar/init.lua b/lua/mason-lspconfig/server_configurations/volar/init.lua
index 317b822..76fa188 100644
--- a/lua/mason-lspconfig/server_configurations/volar/init.lua
+++ b/lua/mason-lspconfig/server_configurations/volar/init.lua
@@ -4,7 +4,7 @@ local typescript = require "mason-lspconfig.typescript"
return function(install_dir)
return {
on_new_config = function(new_config, workspace_dir)
- local tsdk = typescript.resolve_server_path(install_dir, workspace_dir)
+ local tsdk = typescript.resolve_tsdk(install_dir, workspace_dir)
new_config.init_options.typescript.serverPath = tsdk
new_config.init_options.typescript.tsdk = tsdk
end,
diff --git a/lua/mason-lspconfig/typescript.lua b/lua/mason-lspconfig/typescript.lua
index b989207..acae8be 100644
--- a/lua/mason-lspconfig/typescript.lua
+++ b/lua/mason-lspconfig/typescript.lua
@@ -20,20 +20,31 @@ function typescript.tsdk(dir)
end
---@param package_dir string The Mason package installation directory where a vendored Typescript installation can be found.
----@param workspace_dir string
----@return string
-function typescript.resolve_server_path(package_dir, workspace_dir)
- local local_tsserverlib = workspace_dir ~= nil
- and typescript.find_typescript_module_in_lib(typescript.tsdk(workspace_dir))
- if local_tsserverlib then
- return local_tsserverlib
- else
- local vendored_tsserverlib = typescript.find_typescript_module_in_lib(typescript.tsdk(package_dir))
- if not vendored_tsserverlib then
- log.fmt_error("Failed to find vendored Typescript module in %s", package_dir)
+---@param workspace_dir string?
+---@return string?, string?
+function typescript.resolve_tsdk(package_dir, workspace_dir)
+ if workspace_dir then
+ local tsdk = typescript.tsdk(workspace_dir)
+ local local_tsserverlib = typescript.find_typescript_module_in_lib(tsdk)
+ if local_tsserverlib then
+ return tsdk, local_tsserverlib
end
- return vendored_tsserverlib
end
+
+ local tsdk = typescript.tsdk(package_dir)
+ local vendored_tsserverlib = typescript.find_typescript_module_in_lib(tsdk)
+ if not vendored_tsserverlib then
+ log.fmt_error("Failed to find vendored Typescript module in %s", package_dir)
+ return nil, nil
+ end
+ return tsdk, vendored_tsserverlib
+end
+
+---@param package_dir string The Mason package installation directory where a vendored Typescript installation can be found.
+---@param workspace_dir string?
+function typescript.resolve_tsserver(package_dir, workspace_dir)
+ local _, tsserver = typescript.resolve_tsdk(package_dir, workspace_dir)
+ return tsserver
end
return typescript