- Create lua/lazy.lua helper with load/on_event/on_keys - Rewrite pack.lua: lazy load all mini modules + fugitive - Defer treesitter.install() with vim.defer_fn - Defer mason + LSP config to VimEnter - Move mini.pick keymaps from keymaps.lua to pack.lua - Keep mini.notify and mini.cmdline eager (startup needed) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
59 lines
2.0 KiB
Lua
59 lines
2.0 KiB
Lua
local lazy = require("lazy")
|
||
|
||
-- mason + LSP 配置延迟到 VimEnter,避免启动时加载
|
||
lazy.on_event("lsp", "VimEnter", "*", function()
|
||
require("mason").setup()
|
||
|
||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||
capabilities = vim.tbl_deep_extend("force", capabilities, require("mini.completion").get_lsp_capabilities())
|
||
|
||
vim.lsp.config("*", { capabilities = capabilities })
|
||
|
||
vim.lsp.config("lua_ls", {
|
||
settings = {
|
||
Lua = {
|
||
diagnostics = { globals = { "vim" } },
|
||
},
|
||
},
|
||
})
|
||
|
||
vim.lsp.enable({
|
||
"html",
|
||
"cssls",
|
||
"gopls",
|
||
"vtsls",
|
||
"rust_analyzer",
|
||
"lua_ls",
|
||
"taplo",
|
||
"svelte",
|
||
"dartls",
|
||
"kotlin_lsp",
|
||
})
|
||
end)
|
||
|
||
-- LSP keymaps
|
||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to definition" })
|
||
vim.keymap.set("n", "gh", vim.lsp.buf.hover, { desc = "Hover" })
|
||
vim.keymap.set("n", "<leader>fm", vim.lsp.buf.format, { desc = "Format Local buffer" })
|
||
vim.keymap.set("n", "df", vim.diagnostic.open_float, { desc = "Show line diagnostics" })
|
||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code action" })
|
||
|
||
local diagnostic_goto = function(next, severity)
|
||
return function()
|
||
vim.diagnostic.jump({
|
||
count = (next and 1 or -1) * vim.v.count1,
|
||
severity = severity and vim.diagnostic.severity[severity] or nil,
|
||
float = true,
|
||
})
|
||
end
|
||
end
|
||
|
||
vim.keymap.set("n", "]d", diagnostic_goto(true), { desc = "Next Diagnostic" })
|
||
vim.keymap.set("n", "[d", diagnostic_goto(false), { desc = "Prev Diagnostic" })
|
||
vim.keymap.set("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" })
|
||
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(false, "WARN"), { desc = "Prev Warning" })
|
||
|
||
vim.diagnostic.config({ virtual_text = true })
|