diff options
Diffstat (limited to '.config/nvim/lua/impatient/profile.lua')
-rw-r--r-- | .config/nvim/lua/impatient/profile.lua | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/.config/nvim/lua/impatient/profile.lua b/.config/nvim/lua/impatient/profile.lua deleted file mode 100644 index d057386..0000000 --- a/.config/nvim/lua/impatient/profile.lua +++ /dev/null @@ -1,156 +0,0 @@ -local M = {} - -local api = vim.api - -function M.print_profile(profile) - if not profile then - print "Error: profiling was not enabled" - return - end - - local total_resolve = 0 - local total_load = 0 - local name_pad = 0 - local modules = {} - local plugins = {} - - for module, p in pairs(profile) do - p.resolve = p.resolve / 1000000 - p.load = p.load / 1000000 - p.total = p.resolve + p.load - p.module = module:gsub("/", ".") - - local plugin = p.module:match "([^.]+)" - if plugin then - if not plugins[plugin] then - plugins[plugin] = { - module = plugin, - resolve = 0, - load = 0, - total = 0, - } - end - local r = plugins[plugin] - - r.resolve = r.resolve + p.resolve - r.load = r.load + p.load - r.total = r.total + p.total - - if not r.loader then - r.loader = p.loader - elseif r.loader ~= p.loader then - r.loader = "mixed" - end - end - - total_resolve = total_resolve + p.resolve - total_load = total_load + p.load - - if #module > name_pad then - name_pad = #module - end - - modules[#modules + 1] = p - end - - table.sort(modules, function(a, b) - return a.module > b.module - end) - - do - local plugins_a = {} - for _, v in pairs(plugins) do - plugins_a[#plugins_a + 1] = v - end - plugins = plugins_a - end - - table.sort(plugins, function(a, b) - return a.total > b.total - end) - - local lines = {} - local function add(...) - lines[#lines + 1] = string.format(...) - end - - local l = string.rep("─", name_pad + 1) - - add( - "%s┬───────────┬────────────┬────────────┬────────────┐", - l - ) - add( - "%-" - .. name_pad - .. "s │ Loader │ Resolve │ Load │ Total │", - "" - ) - add( - "%s┼───────────┼────────────┼────────────┼────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │ │ %8.4fms │ %8.4fms │ %8.4fms │", - "Total", - total_resolve, - total_load, - total_resolve + total_load - ) - add( - "%s┴───────────┴────────────┴────────────┴────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │", - "By Plugin" - ) - add( - "%s┬───────────┬────────────┬────────────┬────────────┤", - l - ) - for _, p in ipairs(plugins) do - add( - "%-" .. name_pad .. "s │ %9s │ %8.4fms │ %8.4fms │ %8.4fms │", - p.module, - p.loader, - p.resolve, - p.load, - p.total - ) - end - add( - "%s┴───────────┴────────────┴────────────┴────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │", - "By Module" - ) - add( - "%s┬───────────┬────────────┬────────────┬────────────┤", - l - ) - for _, p in pairs(modules) do - add( - "%-" .. name_pad .. "s │ %9s │ %8.4fms │ %8.4fms │ %8.4fms │", - p.module, - p.loader, - p.resolve, - p.load, - p.total - ) - end - add( - "%s┴───────────┴────────────┴────────────┴────────────┘", - l - ) - - local bufnr = api.nvim_create_buf(false, false) - api.nvim_buf_set_lines(bufnr, 0, 0, false, lines) - api.nvim_buf_set_option(bufnr, "buftype", "nofile") - api.nvim_buf_set_name(bufnr, "Impatient Profile Report") - api.nvim_set_current_buf(bufnr) -end - -return M |