Refactor lazy loading: unify treesitter/LSP deferral via lazy.on_event

- Move VimEnter autocmd from init.lua to pack.lua using lazy.on_event
- Convert treesitter.lua to modular M.setup() pattern
- Simplify lsp.lua: remove redundant comment, inline diagnostic config
- Reorganize pack.lua: group finders, add fugitive keymaps, adjust header indent

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-28 15:07:01 +08:00
parent e0441656b4
commit 2c524fc30d
4 changed files with 61 additions and 73 deletions

View File

@ -40,12 +40,3 @@ require("pack")
vim.g.moonflyTransparent = true vim.g.moonflyTransparent = true
vim.cmd("colorscheme catppuccin-mocha") vim.cmd("colorscheme catppuccin-mocha")
-- 延迟加载 heavy 模块,避免阻塞启动
vim.api.nvim_create_autocmd("VimEnter", {
once = true,
callback = function()
require("treesitter")
require("lsp")
end,
})

View File

@ -44,7 +44,6 @@ lazy.on_event("conform", "BufWritePre", "*", function()
end) end)
-- mason + LSP 配置 -- mason + LSP 配置
-- 由 init.lua 在 VimEnter 时 require此处直接执行
vim.cmd.packadd("nvim-lspconfig") vim.cmd.packadd("nvim-lspconfig")
require("mason").setup() require("mason").setup()
@ -124,9 +123,4 @@ vim.keymap.set("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error"
vim.keymap.set("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" }) vim.keymap.set("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" })
vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" })
vim.api.nvim_create_autocmd("VimEnter", { vim.diagnostic.config({ virtual_text = true })
once = true,
callback = function()
vim.diagnostic.config({ virtual_text = true })
end,
})

View File

@ -29,12 +29,12 @@ end
local header_lines = { local header_lines = {
"", "",
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗", "███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗",
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║", "████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║",
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║", "██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║",
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║", "██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║",
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║", "██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║",
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝", "╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝",
"", "",
} }
@ -123,42 +123,44 @@ vim.keymap.set("n", ":", function()
return ":" return ":"
end, { expr = true, noremap = true }) end, { expr = true, noremap = true })
-- mini.surround - BufReadPost vim.keymap.set("n", "<leader>ds", function()
lazy.on_event("surround", "BufReadPost", "*", function() vim.diagnostic.setloclist()
require("mini.surround").setup() end, { desc = "LSP diagnostic loclist" })
end)
-- mini.pick + mini.extra - 按键触发 -- finders
lazy.on_keys("pick", "<leader>ff", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>ff", "n", pick.load_pick, function()
require("mini.pick").builtin.files() require("mini.pick").builtin.files()
end, { desc = "Mini File Picker" }) end, { desc = "Mini File Picker" })
lazy.on_keys("pick", "<leader>fw", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>fw", "n", pick.load_pick, function()
require("mini.pick").builtin.grep_live() require("mini.pick").builtin.grep_live()
end, { desc = "Live grep in project" }) end, { desc = "Live grep in project" })
vim.keymap.set("n", "<leader>ds", function() vim.diagnostic.setloclist() end, { desc = "LSP diagnostic loclist" })
lazy.on_keys("pick", "<leader>sk", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>sk", "n", pick.load_pick, function()
require("mini.extra").pickers.keymaps() require("mini.extra").pickers.keymaps()
end, { desc = "Search keymaps" }) end, { desc = "Search keymaps" })
lazy.on_keys("pick", "<leader>fa", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>fa", "n", pick.load_pick, function()
require("mini.pick").builtin.cli({ command = { "rg", "--files", "--hidden", "--no-ignore", "--color=never" } }) require("mini.pick").builtin.cli({ command = { "rg", "--files", "--hidden", "--no-ignore", "--color=never" } })
end, { desc = "Find all files (including hidden/ignored)" }) end, { desc = "Find all files (including hidden/ignored)" })
lazy.on_keys("pick", "<leader>fh", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>fh", "n", pick.load_pick, function()
require("mini.pick").builtin.help() require("mini.pick").builtin.help()
end, { desc = "Search help tags" }) end, { desc = "Search help tags" })
lazy.on_keys("pick", "<leader>fo", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>fo", "n", pick.load_pick, function()
require("mini.extra").pickers.oldfiles() require("mini.extra").pickers.oldfiles()
end, { desc = "Search oldfiles" }) end, { desc = "Search oldfiles" })
lazy.on_keys("pick", "<leader>fz", "n", pick.load_pick, function() lazy.on_keys("pick", "<leader>fz", "n", pick.load_pick, function()
require("mini.extra").pickers.buf_lines({ scope = "current" }) require("mini.extra").pickers.buf_lines({ scope = "current" })
end, { desc = "Search in current buffer" }) end, { desc = "Search in current buffer" })
-- vim-fugitive - 按键触发
local function load_fugitive()
vim.cmd.packadd("vim-fugitive")
end
lazy.on_keys("fugitive", "<leader>gg", "n", load_fugitive, function()
vim.cmd("tabnew | Git | only")
end, { desc = "Fugitive Full Page New Tab" })
lazy.on_keys("fugitive", "<leader>gd", "n", load_fugitive, function()
vim.cmd("Gvdiffsplit")
end, { desc = "Git diff split" })
-- mini.completion - InsertEnter -- mini.completion - InsertEnter
lazy.on_event("completion", "InsertEnter", "*", function() lazy.on_event("completion", "InsertEnter", "*", function()
require("mini.completion").setup({ require("mini.completion").setup({
@ -194,15 +196,15 @@ lazy.on_event("diff", "BufReadPost", "*", function()
}) })
end) end)
-- vim-fugitive - 按键触发 -- mini.surround - BufReadPost
local function load_fugitive() lazy.on_event("surround", "BufReadPost", "*", function()
vim.cmd.packadd("vim-fugitive") require("mini.surround").setup()
end end)
lazy.on_keys("fugitive", "<leader>gg", "n", load_fugitive, function() -- 延迟加载 heavy 模块
vim.cmd("tabnew | Git | only") lazy.on_event("treesitter", "VimEnter", "*", function()
end, { desc = "Fugitive Full Page New Tab" }) require("treesitter").setup()
end)
lazy.on_keys("fugitive", "<leader>gd", "n", load_fugitive, function() lazy.on_event("lsp", "VimEnter", "*", function()
vim.cmd("Gvdiffsplit") require("lsp")
end, { desc = "Git diff split" }) end)

View File

@ -1,3 +1,5 @@
local M = {}
local ensure_installed = { local ensure_installed = {
"lua", "lua",
"vim", "vim",
@ -24,35 +26,34 @@ local ensure_installed = {
"make", "make",
} }
vim.api.nvim_create_autocmd("VimEnter", { M.setup = function()
once = true, vim.cmd.packadd("nvim-treesitter")
callback = function() local treesitter = require("nvim-treesitter")
vim.cmd.packadd("nvim-treesitter")
local treesitter = require("nvim-treesitter")
-- 延迟安装 parser避免阻塞 -- 延迟安装 parser避免阻塞
vim.defer_fn(function() vim.defer_fn(function()
treesitter.install(ensure_installed) treesitter.install(ensure_installed)
end, 100) end, 100)
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
pattern = "*", pattern = "*",
callback = function(args) callback = function(args)
local buf = args.buf local buf = args.buf
local ft = vim.bo[buf].filetype local ft = vim.bo[buf].filetype
local lang = vim.treesitter.language.get_lang(ft) local lang = vim.treesitter.language.get_lang(ft)
if not lang then if not lang then
return return
end end
local ok_add = pcall(vim.treesitter.language.add, lang) local ok_add = pcall(vim.treesitter.language.add, lang)
if not ok_add then if not ok_add then
return return
end end
pcall(vim.treesitter.start, buf, lang) pcall(vim.treesitter.start, buf, lang)
end, end,
}) })
end, end
})
return M