mirror of
https://github.com/d0zingcat/dotfiles.git
synced 2026-05-14 23:16:47 +00:00
- 架构重构:新增 plugins/lang/ 子目录,按语言拆分配置 - 补全引擎:nvim-cmp → blink.cmp + LuaSnip - 文件浏览:新增 neo-tree(<Space>e) - 语言支持: - Go: ray-x/go.nvim + dap-go + neotest-go - Rust: rustaceanvim + crates.nvim - Python: venv-selector + dap-python + neotest-python - TypeScript: typescript-tools.nvim(替换 ts_ls) - LSP: lazydev + mason + mason-lspconfig + fidget + inc-rename - 格式化: conform.nvim(lsp_format fallback,保存时自动格式化) - Lint: nvim-lint(selene 替换 luacheck,Mason 可直接安装) - UI: snacks.nvim(dashboard+notifier+picker)+ noice + lualine + bufferline - 编辑增强: mini.ai + mini.surround + grug-far + flash + ufo + trouble v3 - 删除废弃文件: cmp/coding/null-ls/mason/lspconfig/go/python 等旧文件 - 修复: Neovim 0.12 treesitter query 校验报错(noice routes 过滤) - 新增: NVIM_GUIDE.md 快捷键使用手册 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
122 lines
4.1 KiB
Lua
122 lines
4.1 KiB
Lua
-- lang/go.lua - Go 开发专用配置
|
|
|
|
return {
|
|
-- ray-x/go.nvim - Go 全功能插件
|
|
{
|
|
"ray-x/go.nvim",
|
|
dependencies = {
|
|
"ray-x/guihua.lua",
|
|
"neovim/nvim-lspconfig",
|
|
"nvim-treesitter/nvim-treesitter",
|
|
},
|
|
ft = { "go", "gomod", "gowork", "gotmpl" },
|
|
build = ':lua require("go.install").update_all_sync()',
|
|
opts = {
|
|
lsp_cfg = false, -- LSP 由 lsp.lua 的 gopls 配置统一管理
|
|
lsp_keymaps = false,
|
|
lsp_codelens = true,
|
|
lsp_inlay_hints = {
|
|
enable = true,
|
|
only_current_line = false,
|
|
show_parameter_hints = true,
|
|
parameter_hints_prefix = " ",
|
|
other_hints_prefix = " ",
|
|
},
|
|
formatter = "gofumpt",
|
|
goimport = "gopls",
|
|
gofmt = true,
|
|
test_runner = "go",
|
|
run_in_floaterm = true,
|
|
dap_debug = true,
|
|
dap_debug_gui = true,
|
|
dap_debug_vt = true,
|
|
textobjects = true,
|
|
trouble = true,
|
|
diagnostic = {
|
|
hdlr = true,
|
|
underline = true,
|
|
virtual_text = { space = 0, prefix = "" },
|
|
signs = true,
|
|
update_in_insert = false,
|
|
},
|
|
tag_transform = "snakecase",
|
|
verbose = false,
|
|
},
|
|
config = function(_, opts)
|
|
require("go").setup(opts)
|
|
|
|
local gogroup = vim.api.nvim_create_augroup("GoGroup", { clear = true })
|
|
|
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
pattern = "*.go",
|
|
group = gogroup,
|
|
callback = function()
|
|
require("go.format").goimport()
|
|
end,
|
|
})
|
|
end,
|
|
keys = {
|
|
{ "<leader>gts", "<cmd>GoAlt<cr>", ft = "go", desc = "切换测试/实现" },
|
|
{ "<leader>gtt", "<cmd>GoTest<cr>", ft = "go", desc = "运行测试" },
|
|
{ "<leader>gtf", "<cmd>GoTestFunc<cr>", ft = "go", desc = "测试当前函数" },
|
|
{ "<leader>gtc", "<cmd>GoCoverage<cr>", ft = "go", desc = "测试覆盖率" },
|
|
{ "<leader>gtC", "<cmd>GoCoverageClear<cr>", ft = "go", desc = "清除覆盖率" },
|
|
{ "<leader>gge", "<cmd>GoIfErr<cr>", ft = "go", desc = "生成错误处理" },
|
|
{ "<leader>ggf", "<cmd>GoFillStruct<cr>", ft = "go", desc = "填充结构体" },
|
|
{ "<leader>ggs", "<cmd>GoFillSwitch<cr>", ft = "go", desc = "填充 switch" },
|
|
{ "<leader>gta", "<cmd>GoAddTag<cr>", ft = "go", desc = "添加标签" },
|
|
{ "<leader>gtr", "<cmd>GoRmTag<cr>", ft = "go", desc = "移除标签" },
|
|
{ "<leader>gr", "<cmd>GoRun<cr>", ft = "go", desc = "运行" },
|
|
{ "<leader>gb", "<cmd>GoBuild<cr>", ft = "go", desc = "构建" },
|
|
{ "<leader>gi", "<cmd>GoImpl<cr>", ft = "go", desc = "实现接口" },
|
|
{ "<leader>gdc", "<cmd>GoDoc<cr>", ft = "go", desc = "查看文档" },
|
|
{ "<leader>gv", "<cmd>GoVet<cr>", ft = "go", desc = "go vet" },
|
|
},
|
|
},
|
|
|
|
-- Go DAP 支持
|
|
{
|
|
"leoluz/nvim-dap-go",
|
|
ft = "go",
|
|
dependencies = { "mfussenegger/nvim-dap" },
|
|
config = function()
|
|
require("dap-go").setup({ dap_configurations = {
|
|
{ type = "go", name = "调试文件", request = "launch", program = "${file}" },
|
|
{ type = "go", name = "调试包", request = "launch", program = "${fileDirname}" },
|
|
{ type = "go", name = "调试测试", request = "launch", mode = "test", program = "${file}" },
|
|
}})
|
|
end,
|
|
keys = {
|
|
{ "<leader>dtg", function() require("dap-go").debug_test() end, ft = "go", desc = "调试当前测试" },
|
|
{ "<leader>dtl", function() require("dap-go").debug_last_test() end, ft = "go", desc = "调试上次测试" },
|
|
},
|
|
},
|
|
|
|
-- neotest Go 适配器
|
|
{
|
|
"nvim-neotest/neotest",
|
|
optional = true,
|
|
dependencies = { "nvim-neotest/neotest-go" },
|
|
opts = {
|
|
adapters = {
|
|
["neotest-go"] = {
|
|
args = { "-count=1", "-timeout=30s", "-v" },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
-- Mason Go 工具
|
|
{
|
|
"williamboman/mason.nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
opts.ensure_installed = opts.ensure_installed or {}
|
|
vim.list_extend(opts.ensure_installed, {
|
|
"gopls", "gofumpt", "goimports", "golangci-lint",
|
|
"gomodifytags", "gotests", "impl", "delve",
|
|
})
|
|
end,
|
|
},
|
|
}
|