From 3d87f087618719e500f1c475eb0e840622bbb383 Mon Sep 17 00:00:00 2001 From: Oscar Wallberg Date: Tue, 5 Sep 2023 19:34:05 +0200 Subject: [PATCH] Update handling of LS dependencies --- lua/lsp/init.lua | 23 ++++++++++++++++++++++- lua/lsp/servers/bashls.lua | 1 - lua/lsp/servers/cmake.lua | 3 +++ lua/lsp/servers/groovyls.lua | 3 +++ lua/lsp/servers/jedi_language_server.lua | 3 +++ lua/utils.lua | 10 ++++++++-- 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index cab014d..0833cc6 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -271,7 +271,28 @@ function P.language_servers(self) if #not_installed > 0 then utils.warn( - ("Disabling %s because the following required package(s) is not installed: %s"):format( + ("Disabling %s because the following required package(s) are not installed: %s"):format( + name, + table.concat(not_installed, ", ") + ), + module_name + ) + server.enabled = false + goto next_server + end + end + + if server.py_module_deps ~= nil then + local not_installed = {} + for _, mod in ipairs(server.py_module_deps) do + if not utils.python3_module_is_installed(mod) then + table.insert(not_installed, mod) + end + end + + if #not_installed > 0 then + utils.warn( + ("Disabling %s because the following required python3 module(s) are not installed: %s"):format( name, table.concat(not_installed, ", ") ), diff --git a/lua/lsp/servers/bashls.lua b/lua/lsp/servers/bashls.lua index bc65384..60d572d 100644 --- a/lua/lsp/servers/bashls.lua +++ b/lua/lsp/servers/bashls.lua @@ -18,7 +18,6 @@ return { enabled = true, dependencies = { "npm", - "shellcheck", }, lspconfig = { filetypes = { diff --git a/lua/lsp/servers/cmake.lua b/lua/lsp/servers/cmake.lua index a913f2e..421535b 100644 --- a/lua/lsp/servers/cmake.lua +++ b/lua/lsp/servers/cmake.lua @@ -16,6 +16,9 @@ return { enabled = true, + py_module_deps = { + "venv", + }, lspconfig = { filetypes = { "cmake", diff --git a/lua/lsp/servers/groovyls.lua b/lua/lsp/servers/groovyls.lua index 8e64c91..39f85bb 100644 --- a/lua/lsp/servers/groovyls.lua +++ b/lua/lsp/servers/groovyls.lua @@ -16,6 +16,9 @@ return { enabled = true, + dependencies = { + "java", + }, lspconfig = { filetypes = { "groovy", diff --git a/lua/lsp/servers/jedi_language_server.lua b/lua/lsp/servers/jedi_language_server.lua index 4ee4801..f073d1c 100644 --- a/lua/lsp/servers/jedi_language_server.lua +++ b/lua/lsp/servers/jedi_language_server.lua @@ -16,6 +16,9 @@ return { enabled = true, + py_module_deps = { + "venv", + }, lspconfig = { filetypes = { "python", diff --git a/lua/utils.lua b/lua/utils.lua index df00e82..0d36156 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -58,9 +58,15 @@ end --- Asserts that a python module is installed ---@param mod string: The python module to check -function M.assert_python3_module_installed(mod) +function M.python3_module_is_installed(mod) local resp = vim.system({ "python3", "-m", "pip", "show", mod, }):wait() - if not resp.code == 0 then + return resp.code == 0 +end + +--- Asserts that a python module is installed +---@param mod string: The python module to check +function M.assert_python3_module_installed(mod) + if not M.python3_module_is_installed(mod) then error("Python3 module " .. mod .. " not installed:\n" .. resp.stdout .. "\n" .. resp.stderr) end end