summaryrefslogtreecommitdiff
path: root/dot_config/nvim.new/lua/ibrahim/plugins/dap.lua
blob: 4e1df628bc7ee880dc2df613d704658d6e494325 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
return {
    {
        "mfussenegger/nvim-dap",
        dependencies = {
            "leoluz/nvim-dap-go",
            "rcarriga/nvim-dap-ui",
            "theHamsta/nvim-dap-virtual-text",
            "nvim-neotest/nvim-nio",
            "williamboman/mason.nvim",
        },
        config = function()
            local dap = require "dap"
            local ui = require "dapui"

            require("dapui").setup()
            -- require("dap-go").setup()

            -- require("nvim-dap-virtual-text").setup {
            --     -- This just tries to mitigate the chance that I leak tokens here. Probably won't stop it from happening...
            --     display_callback = function(variable)
            --         local name = string.lower(variable.name)
            --         local value = string.lower(variable.value)
            --         if name:match "secret" or name:match "api" or value:match "secret" or value:match "api" then
            --             return "*****"
            --         end
            --
            --         if #variable.value > 15 then
            --             return " " .. string.sub(variable.value, 1, 15) .. "... "
            --         end
            --
            --         return " " .. variable.value
            --     end,
            -- }

            -- Handled by nvim-dap-go
            -- dap.adapters.go = {
            --   type = "server",
            --   port = "${port}",
            --   executable = {
            --     command = "dlv",
            --     args = { "dap", "-l", "127.0.0.1:${port}" },
            --   },
            -- }

            -- local elixir_ls_debugger = vim.fn.exepath "elixir-ls-debugger"
            -- if elixir_ls_debugger ~= "" then
            --     dap.adapters.mix_task = {
            --         type = "executable",
            --         command = elixir_ls_debugger,
            --     }
            --
            --     dap.configurations.elixir = {
            --         {
            --             type = "mix_task",
            --             name = "phoenix server",
            --             task = "phx.server",
            --             request = "launch",
            --             projectDir = "${workspaceFolder}",
            --             exitAfterTaskReturns = false,
            --             debugAutoInterpretAllModules = false,
            --         },
            --     }
            -- end

            vim.keymap.set("n", "<space>b", dap.toggle_breakpoint)
            vim.keymap.set("n", "<space>gb", dap.run_to_cursor)

            -- Eval var under cursor
            vim.keymap.set("n", "<space>?", function()
                require("dapui").eval(nil, { enter = true })
            end)

            vim.keymap.set("n", "<F1>", dap.continue)
            vim.keymap.set("n", "<F2>", dap.step_into)
            vim.keymap.set("n", "<F3>", dap.step_over)
            vim.keymap.set("n", "<F4>", dap.step_out)
            vim.keymap.set("n", "<F5>", dap.step_back)
            vim.keymap.set("n", "<F13>", dap.restart)

            dap.listeners.before.attach.dapui_config = function()
                ui.open()
            end
            dap.listeners.before.launch.dapui_config = function()
                ui.open()
            end
            dap.listeners.before.event_terminated.dapui_config = function()
                ui.close()
            end
            dap.listeners.before.event_exited.dapui_config = function()
                ui.close()
            end
        end,
    },
}