mirror of
https://github.com/cap153/nvim.git
synced 2025-12-26 19:25:01 +08:00
125 lines
3.5 KiB
Lua
125 lines
3.5 KiB
Lua
return {
|
|
"mfussenegger/nvim-dap",
|
|
dependencies = {
|
|
{
|
|
"igorlfs/nvim-dap-view",
|
|
opts = {
|
|
switchbuf = "useopen,uselast,newtab",
|
|
-- 开启控制栏按钮
|
|
winbar = {
|
|
controls = {
|
|
enabled = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
config = function()
|
|
vim.keymap.set("n", "<F5>", function()
|
|
require("dap").continue()
|
|
end)
|
|
vim.keymap.set("n", "<F10>", function()
|
|
require("dap").step_over()
|
|
end)
|
|
vim.keymap.set("n", "<F11>", function()
|
|
require("dap").step_into()
|
|
end)
|
|
vim.keymap.set("n", "<F12>", function()
|
|
require("dap").step_out()
|
|
end)
|
|
vim.keymap.set("n", "<Leader>b", function()
|
|
require("dap").toggle_breakpoint()
|
|
end)
|
|
vim.keymap.set("n", "<Leader>B", function()
|
|
require("dap").set_breakpoint()
|
|
end)
|
|
vim.keymap.set("n", "<Leader>lp", function()
|
|
require("dap").set_breakpoint(nil, nil, vim.fn.input("Log point message: "))
|
|
end)
|
|
vim.keymap.set("n", "<Leader>dr", function()
|
|
require("dap").repl.open()
|
|
end)
|
|
vim.keymap.set("n", "<Leader>dl", function()
|
|
require("dap").run_last()
|
|
end)
|
|
vim.keymap.set({ "n", "v" }, "<Leader>dh", function()
|
|
require("dap.ui.widgets").hover()
|
|
end)
|
|
vim.keymap.set({ "n", "v" }, "<Leader>dp", function()
|
|
require("dap.ui.widgets").preview()
|
|
end)
|
|
vim.keymap.set("n", "<Leader>df", function()
|
|
local widgets = require("dap.ui.widgets")
|
|
widgets.centered_float(widgets.frames)
|
|
end)
|
|
vim.keymap.set("n", "<Leader>ds", function()
|
|
local widgets = require("dap.ui.widgets")
|
|
widgets.centered_float(widgets.scopes)
|
|
end)
|
|
-- 自动切换和关闭
|
|
local dap, dv = require("dap"), require("dap-view")
|
|
dap.listeners.before.attach["dap-view-config"] = function()
|
|
dv.open()
|
|
end
|
|
dap.listeners.before.launch["dap-view-config"] = function()
|
|
dv.open()
|
|
end
|
|
dap.listeners.before.event_terminated["dap-view-config"] = function()
|
|
dv.close()
|
|
end
|
|
dap.listeners.before.event_exited["dap-view-config"] = function()
|
|
dv.close()
|
|
end
|
|
-- 在 nvim-dap-view 文件类型中将 q 映射为 quit
|
|
vim.api.nvim_create_autocmd({ "FileType" }, {
|
|
pattern = { "dap-view", "dap-view-term", "dap-repl" }, -- dap-repl is set by `nvim-dap`
|
|
callback = function(evt)
|
|
vim.keymap.set("n", "q", "<C-w>q", { buffer = evt.buf })
|
|
end,
|
|
})
|
|
-- 如果没有窗口包含缓冲区,请创建一个新选项卡
|
|
dap.defaults.fallback.switchbuf = "usevisible,usetab,newtab"
|
|
dap.adapters.gdb = {
|
|
type = "executable",
|
|
command = "gdb",
|
|
args = { "--interpreter=dap", "--eval-command", "set print pretty on" },
|
|
}
|
|
dap.configurations.c = {
|
|
{
|
|
name = "Launch",
|
|
type = "gdb",
|
|
request = "launch",
|
|
program = function()
|
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
|
end,
|
|
cwd = "${workspaceFolder}",
|
|
stopAtBeginningOfMainSubprogram = false,
|
|
},
|
|
{
|
|
name = "Select and attach to process",
|
|
type = "gdb",
|
|
request = "attach",
|
|
program = function()
|
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
|
end,
|
|
pid = function()
|
|
local name = vim.fn.input("Executable name (filter): ")
|
|
return require("dap.utils").pick_process({ filter = name })
|
|
end,
|
|
cwd = "${workspaceFolder}",
|
|
},
|
|
{
|
|
name = "Attach to gdbserver :1234",
|
|
type = "gdb",
|
|
request = "attach",
|
|
target = "localhost:1234",
|
|
program = function()
|
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
|
end,
|
|
cwd = "${workspaceFolder}",
|
|
},
|
|
}
|
|
dap.configurations.cpp = dap.configurations.c
|
|
dap.configurations.rust = dap.configurations.c
|
|
end,
|
|
}
|