diff --git a/lua/neotest/client/events/init.lua b/lua/neotest/client/events/init.lua index 0c283efc..5df90f77 100644 --- a/lua/neotest/client/events/init.lua +++ b/lua/neotest/client/events/init.lua @@ -45,11 +45,8 @@ function NeotestEventProcessor:emit(event, ...) async.run(function() logger.info("Emitting", event, "event") for name, listener in pairs(self.listeners[event] or {}) do - logger.debug("Calling listener", name, "for event", event) - local success, err = pcall(listener, unpack(args)) - if not success then - logger.error("Error during listener", name, "for event:", err) - end + logger.info("Calling listener", name, "for event", event) + listener(unpack(args)) end end) end diff --git a/lua/neotest/consumers/diagnostic.lua b/lua/neotest/consumers/diagnostic.lua index 13f0fa91..a20a1138 100644 --- a/lua/neotest/consumers/diagnostic.lua +++ b/lua/neotest/consumers/diagnostic.lua @@ -130,7 +130,7 @@ local function init(client) local function draw_buffer(path, adapter_id) if not buf_diags[path] then local bufnr = async.fn.bufnr(path) - if bufnr == -1 then + if bufnr == -1 or async.fn.buflisted(bufnr) == 0 then return end if not client:get_results(adapter_id)[path] then diff --git a/lua/neotest/consumers/status.lua b/lua/neotest/consumers/status.lua index 85952624..18fe96fe 100644 --- a/lua/neotest/consumers/status.lua +++ b/lua/neotest/consumers/status.lua @@ -43,16 +43,18 @@ local function init(client) local function render_files(adapter_id, files) for _, file_path in pairs(files) do - local results = client:get_results(adapter_id) - async.fn.sign_unplace(sign_group, { buffer = file_path }) - async.api.nvim_buf_clear_namespace(async.fn.bufnr(file_path), namespace, 0, -1) - local tree = client:get_position(file_path, { adapter = adapter_id }) - if not tree then - return - end - for _, pos in tree:iter() do - if pos.type ~= "file" then - place_sign(async.fn.bufnr(file_path), pos, adapter_id, results) + if async.fn.buflisted(async.fn.bufnr(file_path)) ~= 0 then + local results = client:get_results(adapter_id) + async.fn.sign_unplace(sign_group, { buffer = file_path }) + async.api.nvim_buf_clear_namespace(async.fn.bufnr(file_path), namespace, 0, -1) + local tree = client:get_position(file_path, { adapter = adapter_id }) + if not tree then + return + end + for _, pos in tree:iter() do + if pos.type ~= "file" then + place_sign(async.fn.bufnr(file_path), pos, adapter_id, results) + end end end end @@ -60,7 +62,7 @@ local function init(client) client.listeners.discover_positions = function(adapter_id, tree) local file_path = tree:data().id - if tree:data().type == "file" and async.fn.bufnr(file_path) ~= -1 then + if tree:data().type == "file" then render_files(adapter_id, { file_path }) end end