From aa00138ffb1e442676dd3dfe89104f3ed28dc527 Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 28 May 2026 17:47:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=BB=9F=E8=AE=A1=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=20VimEnter=20=E5=BB=B6=E8=BF=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除 VimEnter autocmd 和 nvim_vimenter_done 全局变量, 直接在 starter footer 中使用 nvim_init_done 计算启动耗时。 这样更准确地反映配置文件本身的加载时间,不含 runtime 插件和 ShaDa 的加载耗时。 Co-Authored-By: Claude Opus 4.7 (1M context) --- lua/pack.lua | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/lua/pack.lua b/lua/pack.lua index 612ecc9..b858fe5 100644 --- a/lua/pack.lua +++ b/lua/pack.lua @@ -27,16 +27,6 @@ local lazy = require("lazy") local pick = require("plugins.pick") require("plugins.git") --- 在 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, -}) - -- --------------------------------------------------------------------------- -- 插件安装声明 -- --------------------------------------------------------------------------- @@ -203,9 +193,8 @@ starter.setup({ -- 已加载的模块数(动态统计,包含直接加载和懒加载) local loaded = vim.tbl_count(require("lazy")._loaded) local total = #all_modules - -- 优先使用 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() + -- 使用 init.lua 执行完成时间,不等待 VimEnter(后者包含 runtime 插件加载耗时) + local end_time = _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)