mirror of
https://github.com/hexedtech/codemp-nvim.git
synced 2024-11-21 23:14:54 +01:00
fix: clear cursor, buffers, workspace and mappings
i think this is everything?
This commit is contained in:
parent
09a37f7b77
commit
7f5d7b23b5
2 changed files with 17 additions and 4 deletions
|
@ -14,6 +14,7 @@ local function detach(name)
|
||||||
local buffer = buffer_id_map[name]
|
local buffer = buffer_id_map[name]
|
||||||
id_buffer_map[buffer] = nil
|
id_buffer_map[buffer] = nil
|
||||||
buffer_id_map[name] = nil
|
buffer_id_map[name] = nil
|
||||||
|
CODEMP.workspace:get_buffer(name):clear_callback()
|
||||||
if not CODEMP.workspace:detach(name) then
|
if not CODEMP.workspace:detach(name) then
|
||||||
collectgarbage("collect") -- clear dangling references
|
collectgarbage("collect") -- clear dangling references
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,13 +33,15 @@ local function fetch_workspaces_list()
|
||||||
end
|
end
|
||||||
|
|
||||||
local last_jump = { 0, 0 }
|
local last_jump = { 0, 0 }
|
||||||
|
local workspace_callback_group = nil
|
||||||
|
|
||||||
---@param controller CursorController
|
---@param controller CursorController
|
||||||
---@param name string
|
---@param name string
|
||||||
local function register_cursor_callback(controller, name)
|
local function register_cursor_callback(controller, name)
|
||||||
local once = true
|
local once = true
|
||||||
|
workspace_callback_group = vim.api.nvim_create_augroup("codemp-workspace-" .. name, { clear = true })
|
||||||
vim.api.nvim_create_autocmd({"CursorMoved", "CursorMovedI", "ModeChanged"}, {
|
vim.api.nvim_create_autocmd({"CursorMoved", "CursorMovedI", "ModeChanged"}, {
|
||||||
group = vim.api.nvim_create_augroup("codemp-workspace-" .. name, { clear = true }),
|
group = workspace_callback_group,
|
||||||
callback = function (_ev)
|
callback = function (_ev)
|
||||||
if CODEMP.ignore_following_action then
|
if CODEMP.ignore_following_action then
|
||||||
CODEMP.ignore_following_action = false
|
CODEMP.ignore_following_action = false
|
||||||
|
@ -219,13 +221,23 @@ local function join(workspace)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function leave()
|
local function leave()
|
||||||
local name = CODEMP.workspace.name
|
local ws_name = CODEMP.workspace.name
|
||||||
|
CODEMP.workspace.cursor:clear_callback()
|
||||||
|
vim.api.nvim_clear_autocmds({ group = workspace_callback_group })
|
||||||
|
for id, name in pairs(buffers.map) do
|
||||||
|
CODEMP.workspace:get_buffer(name):clear_callback()
|
||||||
|
buffers.map[id] = nil
|
||||||
|
buffers.map_rev[name] = nil
|
||||||
|
end
|
||||||
|
for user, _buf in pairs(buffers.users) do
|
||||||
|
buffers.users[user] = nil
|
||||||
|
end
|
||||||
CODEMP.workspace = nil
|
CODEMP.workspace = nil
|
||||||
if events_poller ~= nil then
|
if events_poller ~= nil then
|
||||||
events_poller:stop()
|
events_poller:stop()
|
||||||
events_poller = nil
|
events_poller = nil
|
||||||
end
|
end
|
||||||
if not CODEMP.client:leave_workspace(name) then
|
if not CODEMP.client:leave_workspace(ws_name) then
|
||||||
collectgarbage("collect")
|
collectgarbage("collect")
|
||||||
-- TODO codemp disconnects when all references to its objects are dropped. since it
|
-- TODO codemp disconnects when all references to its objects are dropped. since it
|
||||||
-- hands out Arc<> of things, all references still not garbage collected in Lua will
|
-- hands out Arc<> of things, all references still not garbage collected in Lua will
|
||||||
|
@ -233,7 +245,7 @@ local function leave()
|
||||||
-- only happens when manually requested, and it's not like the extra garbage collection
|
-- only happens when manually requested, and it's not like the extra garbage collection
|
||||||
-- is an effort for nothing... still it would be more elegant to not need this!!
|
-- is an effort for nothing... still it would be more elegant to not need this!!
|
||||||
end
|
end
|
||||||
print(" -- left workspace " .. name)
|
print(" -- left workspace " .. ws_name)
|
||||||
require('codemp.window').update()
|
require('codemp.window').update()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue