-- ============================================================================ -- DAP 调试器 -- ============================================================================ return { { "mfussenegger/nvim-dap", dependencies = { "rcarriga/nvim-dap-ui", "nvim-neotest/nvim-nio", "williamboman/mason.nvim", }, config = function() local dap = require("dap") local dapui = require("dapui") -- 断点图标 vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" }) vim.fn.sign_define("DapBreakpointCondition", { text = "◆", texthl = "DapBreakpointCondition", linehl = "", numhl = "" }) vim.fn.sign_define("DapStopped", { text = "▶", texthl = "DapStopped", linehl = "CursorLine", numhl = "" }) -- dap-ui 布局 dapui.setup({ layouts = { { elements = { { id = "stacks", size = 0.25 }, { id = "scopes", size = 0.25 }, { id = "breakpoints", size = 0.25 }, { id = "watches", size = 0.25 }, }, position = "left", size = 40, }, { elements = { { id = "repl", size = 0.5 }, { id = "console", size = 0.5 }, }, position = "bottom", size = 10, }, }, }) -- 调试会话自动打开/关闭 UI dap.listeners.before.attach.dapui_config = function() dapui.open() end dap.listeners.before.launch.dapui_config = function() dapui.open() end dap.listeners.before.event_terminated.dapui_config = function() dapui.close() end dap.listeners.before.event_exited.dapui_config = function() dapui.close() end -- codelldb 适配器(Mason 安装路径) dap.adapters.codelldb = { type = "server", port = "${port}", executable = { command = vim.fn.stdpath("data") .. "/mason/bin/codelldb", args = { "--port", "${port}" }, }, } -- C/C++ 调试配置(非 CMake 项目,CMake 项目用 rd) dap.configurations.c = { { name = "Launch", type = "codelldb", request = "launch", program = function() return vim.fn.input("可执行文件路径: ", vim.fn.getcwd() .. "/", "file") end, cwd = "${workspaceFolder}", stopOnEntry = false, args = {}, }, } dap.configurations.cpp = dap.configurations.c end, }, -- Mason DAP 自动安装 { "jay-babu/mason-nvim-dap.nvim", dependencies = { "williamboman/mason.nvim", "mfussenegger/nvim-dap" }, opts = { ensure_installed = { "codelldb" }, }, }, }