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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
local dap, dapui, hydra = require "dap", require "dapui", require "hydra"
dap.set_log_level('TRACE')
-- Setup Virtual Text
require("nvim-dap-virtual-text").setup {}
for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("lua/pi/dap/configs/*.lua", true)) do
loadfile(ft_path)()
end
-- Signs
vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapStopped", { text = "▶", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapBreakpointRejected", { text = "", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapBreakpointCondition", { text = "", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapLogPoint", { text = "", texthl = "", linehl = "", numhl = "" })
-- UI structure
dapui.setup {
icons = { expanded = "▾", collapsed = "▸" },
layouts = {
{
elements = {
"scopes",
"breakpoints",
"stacks",
"watches",
},
size = 50,
position = "right",
},
{
elements = {
"repl",
"console",
},
size = 7,
position = "bottom",
},
},
}
-- Events Listeners
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open {}
end
local hint = [[
Nvim DAP
_d_: Start/Continue _j_: StepOver _k_: StepOut _l_: StepInto ^
_bp_: Toogle Breakpoint _bc_: Conditional Breakpoint ^
_?_: log point ^
_c_: Run To Cursor ^
_h_: Show information of the variable under the cursor ^
_x_: Stop Debbuging ^
^^ _<Esc>_
]]
hydra {
name = "dap",
hint = hint,
mode = "n",
config = {
color = "blue",
invoke_on_body = true,
hint = {
border = "rounded",
position = "bottom",
},
},
body = "<leader>d",
heads = {
{ "d", dap.continue },
{ "bp", dap.toggle_breakpoint },
{ "l", dap.step_into },
{ "j", dap.step_over },
{ "k", dap.step_out },
{ "h", dapui.eval },
{ "c", dap.run_to_cursor },
{
"bc",
function()
vim.ui.input({ prompt = "Condition: " }, function(condition)
dap.set_breakpoint(condition)
end)
end,
},
{
"?",
function()
vim.ui.input({ prompt = "Log: " }, function(log)
dap.set_breakpoint(nil, nil, log)
end)
end,
},
{
"x",
function()
dap.terminate()
dapui.close {}
dap.clear_breakpoints()
end,
},
{ "<Esc>", nil, { exit = true } },
},
}
|