mirror of
https://github.com/macocianradu/setup.git
synced 2026-07-16 10:38:46 +00:00
added go dap
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
local dap = require("dap")
|
||||
|
||||
local M = {}
|
||||
|
||||
-- Locate the delve binary (prefer mason, fall back to PATH).
|
||||
local function dlv_command()
|
||||
local mason = vim.fn.expand("$HOME/.local/share/nvim/mason/bin/dlv")
|
||||
if vim.fn.filereadable(mason) == 1 then
|
||||
return mason
|
||||
end
|
||||
return "dlv"
|
||||
end
|
||||
|
||||
-- Adapter: run delve in DAP server mode on a free port.
|
||||
dap.adapters.go = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = dlv_command(),
|
||||
args = { "dap", "-l", "127.0.0.1:${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
-- Walk upwards from the current file to find the Go module root (go.mod).
|
||||
local function find_go_root()
|
||||
local start = vim.fn.expand("%:p:h")
|
||||
if start == "" then
|
||||
start = vim.fn.getcwd()
|
||||
end
|
||||
local found = vim.fs.find("go.mod", { upward = true, path = start })[1]
|
||||
if found then
|
||||
return vim.fn.fnamemodify(found, ":h")
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Find the module root and launch a delve debug session of the whole project.
|
||||
function M.debug_go()
|
||||
local root = find_go_root()
|
||||
if not root then
|
||||
vim.notify("No go.mod found upwards from current file.", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
dap.run({
|
||||
type = "go",
|
||||
request = "launch",
|
||||
name = "Debug project",
|
||||
program = root,
|
||||
cwd = root,
|
||||
})
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user