diff options
| author | William Boman <william@redwill.se> | 2022-10-11 21:31:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-11 21:31:05 +0200 |
| commit | d2bcb38523a7f602e01ca0425ec44f4081362fb9 (patch) | |
| tree | 2f129975f5e0cd089a3323823f0fb8fa5f892d23 /lua | |
| parent | feat(astro): use vendored tsdk if workspace tsdk not available (#75) (diff) | |
| download | mason-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.lua | 2 | ||||
| -rw-r--r-- | lua/mason-lspconfig/server_configurations/volar/init.lua | 2 | ||||
| -rw-r--r-- | lua/mason-lspconfig/typescript.lua | 35 |
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 |
