fix(neotest): better integration with trouble: no longer steals focus and hides when all ok

This commit is contained in:
Folke Lemaitre 2023-10-18 00:04:28 +02:00
parent 5c1656729a
commit 2e308d5440
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040

View file

@ -27,7 +27,7 @@ return {
quickfix = {
open = function()
if require("lazyvim.util").has("trouble.nvim") then
vim.cmd("Trouble quickfix")
require("trouble").open({ mode = "quickfix", focus = false })
else
vim.cmd("copen")
end
@ -46,6 +46,37 @@ return {
},
}, neotest_ns)
if require("lazyvim.util").has("trouble.nvim") then
opts.consumers = opts.consumers or {}
-- Refresh and auto close trouble after running tests
---@type neotest.Consumer
opts.consumers.trouble = function(client)
client.listeners.results = function(adapter_id, results, partial)
if partial then
return
end
local tree = assert(client:get_position(nil, { adapter = adapter_id }))
local failed = 0
for pos_id, result in pairs(results) do
if result.status == "failed" and tree:get_key(pos_id) then
failed = failed + 1
end
end
vim.schedule(function()
local trouble = require("trouble")
if trouble.is_open() then
trouble.refresh()
if failed == 0 then
trouble.close()
end
end
end)
return {}
end
end
end
if opts.adapters then
local adapters = {}
for name, config in pairs(opts.adapters or {}) do