78 lines
2.1 KiB
Lua
78 lines
2.1 KiB
Lua
local M = {}
|
|
|
|
function M.setup()
|
|
local dap = require("dap")
|
|
local dapui = require("dapui")
|
|
|
|
-- Настройка адаптера codelldb для C/C++
|
|
dap.adapters.codelldb = {
|
|
type = 'server',
|
|
port = '${port}',
|
|
executable = {
|
|
command = vim.fn.stdpath("data") .. '/mason/bin/codelldb',
|
|
args = { '--port', '${port}' },
|
|
}
|
|
}
|
|
|
|
-- Конфигурации для C/C++
|
|
dap.configurations.cpp = {
|
|
{
|
|
name = "Launch file",
|
|
type = "codelldb",
|
|
request = "launch",
|
|
program = function()
|
|
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
|
end,
|
|
cwd = '${workspaceFolder}',
|
|
stopOnEntry = false,
|
|
args = {},
|
|
},
|
|
}
|
|
|
|
-- Используем те же конфигурации для C
|
|
dap.configurations.c = dap.configurations.cpp
|
|
|
|
-- Настройка dap-ui :cite[1]:cite[4]
|
|
dapui.setup({
|
|
layouts = {
|
|
{
|
|
elements = {
|
|
{ id = "scopes", size = 0.33 },
|
|
{ id = "breakpoints", size = 0.17 },
|
|
{ id = "stacks", size = 0.25 },
|
|
{ id = "watches", size = 0.25 },
|
|
},
|
|
size = 0.33,
|
|
position = "right",
|
|
},
|
|
{
|
|
elements = {
|
|
{ id = "repl", size = 0.45 },
|
|
{ id = "console", size = 0.55 },
|
|
},
|
|
size = 0.27,
|
|
position = "bottom",
|
|
},
|
|
},
|
|
})
|
|
|
|
-- Автоматическое открытие/закрытие UI :cite[1]:cite[9]
|
|
dap.listeners.after.event_initialized["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
|
|
|
|
-- Настройка значков для точек останова :cite[1]:cite[10]
|
|
vim.fn.sign_define("DapBreakpoint", { text = "🔴", texthl = "LspDiagnosticsSignError" })
|
|
vim.fn.sign_define("DapStopped", { text = "➡️", texthl = "LspDiagnosticsSignInformation" })
|
|
vim.fn.sign_define("DapBreakpointRejected", { text = "❌", texthl = "LspDiagnosticsSignHint" })
|
|
end
|
|
|
|
return M
|