aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim/.config/nvim/lua/plugins/dap.lua
blob: 127294dc92d2f1f817cadbd38260973882e62888 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
---@type LazySpec

local M = {
	"mfussenegger/nvim-dap",
	cmd = {
		"Break",
		"DapShowLog",
		"DapContinue",
		"DapToggleBreakpoint",
		"DapLoadLaunchJSON",
	},
	keys = {
		"<leader>db",
		"<leader>dc",
		"<F5>",
	},
	dependencies = {
		"mfussenegger/nvim-dap-python",
		"leoluz/nvim-dap-go",
		"nvim-telescope/telescope-dap.nvim",
		{
			"LiadOz/nvim-dap-repl-highlights",
			dependencies = { "nvim-treesitter/nvim-treesitter" },
			config = true,
		},
		{
			"theHamsta/nvim-dap-virtual-text",
			dependencies = { "nvim-treesitter/nvim-treesitter" },
			opts = {
				commented = true,
			},
		},
	},
}

function M.config()
	require("dap").listeners.after.event_initialized["User"] = function()
		vim.api.nvim_exec_autocmds("User", { pattern = "DapAttach" })
	end

	require("dap").listeners.before.event_terminated["User"] = function()
		vim.api.nvim_exec_autocmds("User", { pattern = "DapDetach" })
		require("dap").repl.close()
	end

	local adapters = require("tobyvin.dap.adapters")
	for name, adapter in pairs(adapters) do
		if require("dap").adapters[name] == nil then
			require("dap").adapters[name] = adapter
		end
	end

	local configs = require("tobyvin.dap.configs")
	for name, config in pairs(configs) do
		if require("dap").configurations[name] == nil then
			require("dap").configurations[name] = config
		end
	end

	vim.fn.sign_define("DapBreakpoint", { text = "󰝥 ", texthl = "debugBreakpoint" })
	vim.fn.sign_define("DapBreakpointCondition", { text = "󰟃 ", texthl = "debugBreakpoint" })
	vim.fn.sign_define("DapBreakpointRejected", { text = " ", texthl = "debugBreakpoint" })
	vim.fn.sign_define("DapLogPoint", { text = " ", texthl = "debugBreakpoint" })
	vim.fn.sign_define("DapStopped", { text = " ", texthl = "debugBreakpoint" })

	vim.keymap.set("n", "<F5>", require("dap").continue, { desc = "continue" })
	vim.keymap.set("n", "<F10>", require("dap").step_over, { desc = "step over" })
	vim.keymap.set("n", "<F11>", require("dap").step_into, { desc = "step into" })
	vim.keymap.set("n", "<F12>", require("dap").step_out, { desc = "step out" })
	vim.keymap.set("n", "<leader>dq", require("dap").terminate, { desc = "terminate" })
	vim.keymap.set("n", "<leader>db", require("dap").toggle_breakpoint, { desc = "toggle breakpoint" })
	vim.keymap.set("n", "<leader>dl", require("dap.ui.widgets").hover)

	vim.api.nvim_create_user_command("Break", function(opts)
		require("dap").toggle_breakpoint(unpack(opts.fargs))
	end, { nargs = "*", desc = "toggle breakpoint" })
end

return M