diff options
| author | William Boman <william@redwill.se> | 2022-12-05 17:48:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-05 17:48:34 +0100 |
| commit | 2381f507189e3e10a43c3932a3ec6c2847180abc (patch) | |
| tree | af51bec9c83583b6033bd193effc289c2c2b590a /lua | |
| parent | chore: update generated code (#728) (diff) | |
| download | mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar.gz mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar.bz2 mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar.lz mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar.xz mason-2381f507189e3e10a43c3932a3ec6c2847180abc.tar.zst mason-2381f507189e3e10a43c3932a3ec6c2847180abc.zip | |
fix(package): don't call vim API functions inside fast event (#730)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-core/package/init.lua | 10 | ||||
| -rw-r--r-- | lua/mason-core/terminator.lua (renamed from lua/mason/terminator.lua) | 18 | ||||
| -rw-r--r-- | lua/mason/init.lua | 11 |
3 files changed, 13 insertions, 26 deletions
diff --git a/lua/mason-core/package/init.lua b/lua/mason-core/package/init.lua index e46219b7..faf25764 100644 --- a/lua/mason-core/package/init.lua +++ b/lua/mason-core/package/init.lua @@ -81,12 +81,10 @@ function Package:new_handle() local handle = InstallationHandle.new(self) self.handle = handle - -- First emit a private autocmd via the native event bus. This is to enable some internal perf improvements (helps avoid loading some Lua modules). - if vim.fn.has "nvim-0.8.0" == 1 then - vim.api.nvim_exec_autocmds("User", { pattern = "__MasonPackageHandle", data = self.name }) - else - vim.api.nvim_exec_autocmds("User", { pattern = "__MasonPackageHandle" }) - end + -- Ideally we'd decouple this and leverage Mason's event system, but to allow loading as little as possible during + -- setup (i.e. not load modules related to Mason's event system) of the mason.nvim plugin we explicitly call into + -- terminator here. + require("mason-core.terminator").register(handle) self:emit("handle", handle) registry:emit("package:handle", self, handle) diff --git a/lua/mason/terminator.lua b/lua/mason-core/terminator.lua index ea4bd5a2..b7acefe8 100644 --- a/lua/mason/terminator.lua +++ b/lua/mason-core/terminator.lua @@ -1,4 +1,3 @@ -local registry = require "mason-registry" local a = require "mason-core.async" -- Hasta la vista, baby. @@ -56,15 +55,14 @@ end local active_handles = {} -function M.setup() - registry:on("package:handle", function(_, handle) - if handle:is_closed() then - return - end - active_handles[handle] = true - handle:once("closed", function() - active_handles[handle] = nil - end) +---@parma handle InstallHandle +function M.register(handle) + if handle:is_closed() then + return + end + active_handles[handle] = true + handle:once("closed", function() + active_handles[handle] = nil end) end diff --git a/lua/mason/init.lua b/lua/mason/init.lua index 62a66bea..6bbb411a 100644 --- a/lua/mason/init.lua +++ b/lua/mason/init.lua @@ -5,18 +5,9 @@ local platform = require "mason-core.platform" local M = {} local function setup_autocmds() - -- lazily set up terminator - vim.api.nvim_create_autocmd("User", { - pattern = "__MasonPackageHandle", -- private autocmd specific for this very use case - callback = function() - require("mason.terminator").setup() - end, - once = true, - }) - vim.api.nvim_create_autocmd("VimLeavePre", { callback = function() - require("mason.terminator").terminate(5000) + require("mason-core.terminator").terminate(5000) end, once = true, }) |
