aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-03-24 14:00:57 +0100
committerGitHub <noreply@github.com>2023-03-24 14:00:57 +0100
commitb64fdede85fd5e0b720ce722919e0a9b95ed6547 (patch)
tree466de2f088d1d0a509e049d06c9842742b13920f /lua
parentfix(scripts): setup mason and refresh registry (#177) (diff)
downloadmason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar.gz
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar.bz2
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar.lz
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar.xz
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.tar.zst
mason-lspconfig-b64fdede85fd5e0b720ce722919e0a9b95ed6547.zip
feat: refresh registry before installing servers in ensure_installed (#170)
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-lspconfig/ensure_installed.lua12
-rw-r--r--lua/mason-lspconfig/lspconfig_hook.lua22
2 files changed, 22 insertions, 12 deletions
diff --git a/lua/mason-lspconfig/ensure_installed.lua b/lua/mason-lspconfig/ensure_installed.lua
index 15673d7..dabd931 100644
--- a/lua/mason-lspconfig/ensure_installed.lua
+++ b/lua/mason-lspconfig/ensure_installed.lua
@@ -1,9 +1,9 @@
local notify = require "mason-core.notify"
+local registry = require "mason-registry"
local settings = require "mason-lspconfig.settings"
---@param lspconfig_server_name string
local function resolve_package(lspconfig_server_name)
- local registry = require "mason-registry"
local Optional = require "mason-core.optional"
local server_mapping = require "mason-lspconfig.mappings.server"
@@ -15,7 +15,7 @@ local function resolve_package(lspconfig_server_name)
end)
end
-return function()
+local function ensure_installed()
for _, server_identifier in ipairs(settings.current.ensure_installed) do
local Package = require "mason-core.package"
@@ -39,3 +39,11 @@ return function()
end)
end
end
+
+if registry.refresh then
+ return function()
+ registry.refresh(vim.schedule_wrap(ensure_installed))
+ end
+else
+ return ensure_installed
+end
diff --git a/lua/mason-lspconfig/lspconfig_hook.lua b/lua/mason-lspconfig/lspconfig_hook.lua
index b5cb4bd..ccab5c1 100644
--- a/lua/mason-lspconfig/lspconfig_hook.lua
+++ b/lua/mason-lspconfig/lspconfig_hook.lua
@@ -75,16 +75,18 @@ return function()
end
end
elseif should_auto_install(config.name) then
- local pkg = registry.get_package(pkg_name)
- require("mason-lspconfig.install").install(pkg):once(
- "closed",
- vim.schedule_wrap(function()
- if pkg:is_installed() then
- -- reload config
- require("lspconfig")[config.name].setup(config)
- end
- end)
- )
+ local ok, pkg = pcall(registry.get_package, pkg_name)
+ if ok then
+ require("mason-lspconfig.install").install(pkg):once(
+ "closed",
+ vim.schedule_wrap(function()
+ if pkg:is_installed() then
+ -- reload config
+ require("lspconfig")[config.name].setup(config)
+ end
+ end)
+ )
+ end
end
end)
end