local M = {
	"mfussenegger/nvim-dap",

	dependencies = {
		{ "rcarriga/nvim-dap-ui" },
		{
			"theHamsta/nvim-dap-virtual-text",
			config = function()
				require("nvim-dap-virtual-text").setup({
					commented = true,
				})
			end,
		},
		{
			"leoluz/nvim-dap-go",
			config = function()
				require("dap-go").setup()
			end,
			keys = {
				{ "<leader>y", ":lua require('dap-go').debug_test()<CR>" },
			},
		},
	},
}

function M.init()
	local silent = { silent = true }
	vim.fn.sign_define("DapStopped", { text = "⇒", texthl = "", linehl = "debugPC", numhl = "" })
	vim.fn.sign_define("DapBreakpoint", { text = "🧘", texthl = "", linehl = "debugPC", numhl = "" })
	vim.keymap.set("n", "DD", ":lua require 'dap'.toggle_breakpoint()<CR>", silent)
	vim.keymap.set("n", "Dc", ":lua require 'dap'.continue()<CR>", silent)
	vim.keymap.set("n", "Di", ":lua require 'dap'.step_into()<CR>", silent)
	vim.keymap.set("n", "Do", ":lua require 'dap'.step_over()<CR>", silent)
	vim.keymap.set("n", "DO", ":lua require 'dap'.step_out()<CR>", silent)
	vim.keymap.set("n", "Dr", ":lua require 'dap'.repl.toggle({height = 5})<CR>", silent)
	vim.keymap.set("n", "Dh", ":lua require 'dap.ui.widgets'.hover()<CR>", silent)
end

return M