fix: setup plugin in setup() fn

so that configuration can reach logger and callbacks
This commit is contained in:
əlemi 2024-09-17 22:12:15 +02:00
parent f3a7e1ea1c
commit d8990452d0
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -10,7 +10,7 @@ if CODEMP == nil then
---@field available WorkspaceReference[] available workspaces to connect to ---@field available WorkspaceReference[] available workspaces to connect to
---@field timer? any libuv timer ---@field timer? any libuv timer
---@field config Config codemp configuration ---@field config Config codemp configuration
---@field setup fun(opts: Config): nil update codemp configuration ---@field setup fun(opts: Config): nil update config and setup plugin
CODEMP = { CODEMP = {
rt = nil, rt = nil,
native = nil, native = nil,
@ -25,6 +25,33 @@ if CODEMP == nil then
}, },
setup = function (opts) setup = function (opts)
CODEMP.config = vim.tbl_extend('force', CODEMP.config, opts) CODEMP.config = vim.tbl_extend('force', CODEMP.config, opts)
-- register logger
CODEMP.native.logger(print, CODEMP.config.debug)
-- start background runtime, with stop event
CODEMP.rt = CODEMP.native.spawn_runtime_driver() -- spawn thread to drive tokio runtime
vim.api.nvim_create_autocmd(
{"ExitPre"},
{
callback = function (_ev)
if CODEMP.client ~= nil then
print(" xx disconnecting codemp client")
CODEMP.client = nil -- drop reference so it gets garbage collected
end
CODEMP.rt:stop()
end
}
)
CODEMP.timer = vim.loop.new_timer()
CODEMP.timer:start(CODEMP.config.timer_interval, CODEMP.config.timer_interval, function()
while true do
local cb, arg = CODEMP.native.poll_callback()
if cb == nil then break end
vim.schedule(function() cb(arg) end)
end
end)
require('codemp.command') -- not really related but should only happen once
end end
} }
end end
@ -35,37 +62,6 @@ if CODEMP.native == nil then
print(" !! could not load native bindings, try reloading") print(" !! could not load native bindings, try reloading")
return CODEMP return CODEMP
end end
CODEMP.native.logger(print, CODEMP.config.debug)
end end
if CODEMP.rt == nil then
CODEMP.rt = CODEMP.native.spawn_runtime_driver() -- spawn thread to drive tokio runtime
vim.api.nvim_create_autocmd(
{"ExitPre"},
{
callback = function (_ev)
if CODEMP.client ~= nil then
print(" xx disconnecting codemp client")
CODEMP.client = nil
end
CODEMP.rt:stop()
end
}
)
end
if CODEMP.timer == nil then
CODEMP.timer = vim.loop.new_timer()
CODEMP.timer:start(CODEMP.config.timer_interval, CODEMP.config.timer_interval, function()
while true do
local cb, arg = CODEMP.native.poll_callback()
if cb == nil then break end
vim.schedule(function() cb(arg) end)
end
end)
require('codemp.command') -- not really related but should only happen once
end
return CODEMP return CODEMP