Finally got dap all configured, works with c/c++ and godot (gdscript).

Need to figure out a watch window or something I have frame and sessions
window but those are not that usful (might also need hover and memory
window)
This commit is contained in:
Tyler White 2026-06-29 21:09:21 -07:00
parent 1738040c89
commit 3c3890f786
2 changed files with 52 additions and 0 deletions

View File

@ -102,6 +102,12 @@ dap.adapters.godot = {
port = 6006, port = 6006,
} }
dap.adapters.gdb = {
type = "executable",
command = "gdb",
args = { "--interpreter=dap", "--eval-command", "set print pretty on" }
}
dap.configurations.gdscript = { dap.configurations.gdscript = {
{ {
type = "godot", type = "godot",
@ -111,3 +117,44 @@ dap.configurations.gdscript = {
scene = "main" scene = "main"
} }
} }
dap.configurations.c = {
{
name = "Launch",
type = "gdb",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
args = {}, -- provide arguments if needed
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
-- TODO: could do rust, zig, odin, jai (?)

View File

@ -23,6 +23,9 @@ vim.keymap.set('n', '<leader>ss', '<cmd>Telescope spell_suggest<cr>', opts)
vim.keymap.set('n', '<leader>t', '<cmd>Telescope<cr>', opts) vim.keymap.set('n', '<leader>t', '<cmd>Telescope<cr>', opts)
local dap = require('dap') local dap = require('dap')
local widgets = require('dap.ui.widgets')
local frame_bar = widgets.sidebar(widgets.frames)
local session_bar = widgets.sidebar(widgets.sessions)
local on_attach = function(client, bufnr) local on_attach = function(client, bufnr)
client.server_capabilities.semanticTokensProvider = nil client.server_capabilities.semanticTokensProvider = nil
@ -44,6 +47,8 @@ local on_attach = function(client, bufnr)
vim.keymap.set('n', '<F11>', dap.step_into, bufopts) vim.keymap.set('n', '<F11>', dap.step_into, bufopts)
vim.keymap.set('n', '<F12>', dap.step_out, bufopts) vim.keymap.set('n', '<F12>', dap.step_out, bufopts)
--TODO: dap.ui.widgets, widgets.sidebar --TODO: dap.ui.widgets, widgets.sidebar
vim.keymap.set('n', '<leader>df', frame_bar.toggle, bufopts)
vim.keymap.set('n', '<leader>ds', session_bar.toggle, bufopts)
end end
local godot_port = os.getenv 'GDScript_Port' or '6005' local godot_port = os.getenv 'GDScript_Port' or '6005'