snacks.nvim/lua/trouble/sources/profiler.lua
Folke Lemaitre 849d69ba2e
Revert "feat: test"
This reverts commit 520ed85169.
2025-02-14 22:13:38 +01:00

78 lines
2 KiB
Lua

---@module 'trouble'
---@diagnostic disable: inject-field
local Item = require("trouble.item")
---@type trouble.Source
local M = {}
---@diagnostic disable-next-line: missing-fields
M.config = {
formatters = {
badges = function(ctx)
local trace = ctx.item.item ---@type snacks.profiler.Trace
local badges = Snacks.profiler.ui.badges(trace, { badges = { "time", "count" } })
local text = Snacks.profiler.ui.format(badges)
return vim.tbl_map(function(t)
return { text = t[1], hl = t[2] }
end, text)
end,
},
modes = {
profiler = {
events = { { event = "User", pattern = "SnacksProfilerLoaded" } },
source = "profiler",
groups = {
-- { "tag", format = "{todo_icon} {tag}" },
-- { "directory" },
{ "loc.plugin", format = "{file_icon} {loc.plugin} {count}" },
},
-- sort = { { buf = 0 }, "filename", "pos", "name" },
sort = { "-time" },
format = "{name} {badges} {pos}",
},
},
}
function M.preview(item, ctx)
Snacks.profiler.ui.highlight(ctx.buf, { file = item.item.loc.file })
end
function M.get(cb, ctx)
---@type snacks.profiler.Find
local opts = vim.tbl_deep_extend(
"force",
{ group = "name", structure = true },
type(ctx.opts.params) == "table" and ctx.opts.params or {}
)
local _, node = Snacks.profiler.find(opts)
local items = {} ---@type trouble.Item[]
local id = 0
---@param n snacks.profiler.Node
local function add(n)
if n.trace.def then
id = id + 1
local loc = n.trace.def
local item = Item.new({
id = id,
pos = { n.trace.def.line, 0 },
text = n.trace.name,
filename = loc and loc.file,
item = n.trace,
source = "profiler",
})
items[#items + 1] = item
for _, child in pairs(n.children) do
item:add_child(add(child))
end
return item
end
end
for _, child in pairs(node.children or {}) do
add(child)
end
cb(items)
end
return M