diff options
Diffstat (limited to 'lua/nvim-lsp-installer/servers/volar/init.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/servers/volar/init.lua | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lua/nvim-lsp-installer/servers/volar/init.lua b/lua/nvim-lsp-installer/servers/volar/init.lua index 25721b6d..2be49183 100644 --- a/lua/nvim-lsp-installer/servers/volar/init.lua +++ b/lua/nvim-lsp-installer/servers/volar/init.lua @@ -1,15 +1,36 @@ +local path = require "nvim-lsp-installer.path" +local fs = require "nvim-lsp-installer.fs" local server = require "nvim-lsp-installer.server" local npm = require "nvim-lsp-installer.installers.npm" return function(name, root_dir) + ---@param dir string + local function get_tsserverlib_path(dir) + return path.concat { dir, "node_modules", "typescript", "lib", "tsserverlibrary.js" } + end + + ---@param workspace_dir string|nil + local function get_typescript_server_path(workspace_dir) + local local_tsserverlib = workspace_dir ~= nil and get_tsserverlib_path(workspace_dir) + local vendored_tsserverlib = get_tsserverlib_path(root_dir) + if local_tsserverlib and fs.file_exists(local_tsserverlib) then + return local_tsserverlib + else + return vendored_tsserverlib + end + end + return server.Server:new { name = name, root_dir = root_dir, homepage = "https://github.com/johnsoncodehk/volar", languages = { "vue" }, - installer = npm.packages { "@volar/server" }, + installer = npm.packages { "@volar/server", "typescript" }, default_options = { cmd_env = npm.env(root_dir), + on_new_config = function(new_config, new_root_dir) + new_config.init_options.typescript.serverPath = get_typescript_server_path(new_root_dir) + end, }, } end |
