aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/dispatcher.lua
blob: 0ad4189753caa1056ffffd0fe69ebdf4e650eb16 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
local notify = require "nvim-lsp-installer.notify"

local M = {}

local registered_callbacks = {}

M.dispatch_server_ready = function(server)
    for _, callback in pairs(registered_callbacks) do
        local ok, err = pcall(callback, server)
        if not ok then
            notify(tostring(err), vim.log.levels.ERROR)
        end
    end
end

local idx = 0
function M.register_server_ready_callback(callback)
    local key = idx + 1
    registered_callbacks[("%d"):format(key)] = callback
    return function()
        table.remove(registered_callbacks, key)
    end
end

return M