Use VimEnter time for more accurate startup duration in starter dashboard
Prioritize _G.nvim_vimenter_done (recorded when runtime plugins and ShaDa are fully loaded) for the startup time displayed in mini.starter's footer, falling back to _G.nvim_init_done if unavailable. This makes the reported duration much closer to what --startuptime measures. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ae765f7438
commit
0747abefee
4
init.lua
4
init.lua
@ -86,3 +86,7 @@ vim.g.moonflyTransparent = true
|
||||
-- 应用 colorscheme。catppuccin-mocha 的定义在 colors/catppuccin-mocha.lua 中。
|
||||
-- 该文件是一个精简版,只包含 Mocha 变体的调色板和高亮组定义。
|
||||
vim.cmd("colorscheme catppuccin-mocha")
|
||||
|
||||
-- 记录 init.lua 执行完成时间(含 colorscheme),供启动页展示更接近 --startuptime 的耗时。
|
||||
-- pack.lua 中的 footer 优先使用 VimEnter 时间,回退到此时间点。
|
||||
_G.nvim_init_done = (vim.uv or vim.loop).hrtime()
|
||||
|
||||
19
lua/pack.lua
19
lua/pack.lua
@ -27,9 +27,15 @@ local lazy = require("lazy")
|
||||
local pick = require("pick")
|
||||
require("git")
|
||||
|
||||
-- 缓存启动耗时。pack.lua 在 init.lua 末尾加载,此时核心配置已全部就绪,
|
||||
-- 计算出的时间就是真正的启动耗时。避免 starter 页脚在后续渲染时数值持续增长。
|
||||
local startup_ms = ((vim.uv or vim.loop).hrtime() - _G.nvim_start_time) / 1e6
|
||||
-- 在 VimEnter 时记录完整启动时间(此时 runtime 插件、ShaDa 等已加载完毕),
|
||||
-- 使启动页显示的耗时更接近 --startuptime 的口径。
|
||||
-- starter 的 autoopen 在 VimEnter 之后渲染,footer 可以安全读取此值。
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
once = true,
|
||||
callback = function()
|
||||
_G.nvim_vimenter_done = (vim.uv or vim.loop).hrtime()
|
||||
end,
|
||||
})
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 插件安装声明
|
||||
@ -99,8 +105,11 @@ starter.setup({
|
||||
-- 已加载的模块数(动态统计,包含直接加载和懒加载)
|
||||
local loaded = vim.tbl_count(require("lazy")._loaded)
|
||||
local total = #all_modules
|
||||
-- startup_ms 在 pack.lua 加载时一次性计算,避免后续渲染时数值变化
|
||||
local text = string.format(" %d/%d modules | %.0f ms", loaded, total, startup_ms)
|
||||
-- 优先使用 VimEnter 时间(runtime 插件、ShaDa 等已加载,最接近 --startuptime),
|
||||
-- 回退到 init.lua 完成时间,最后回退到当前时间(理论上不会走到)
|
||||
local end_time = _G.nvim_vimenter_done or _G.nvim_init_done or (vim.uv or vim.loop).hrtime()
|
||||
local ms = (end_time - _G.nvim_start_time) / 1e6
|
||||
local text = string.format(" %d/%d modules | %.0f ms", loaded, total, ms)
|
||||
local text_width = vim.fn.strdisplaywidth(text)
|
||||
-- 计算左填充空格数以实现居中
|
||||
local pad = math.floor((max_header_width - text_width) / 2)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user