summaryrefslogtreecommitdiff
path: root/lua/aotrix/plugins/nvim_dap.lua
blob: 13213d4d8652a6d74ef98ca028c07770b6b3564b (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
return {
    'mfussenegger/nvim-dap',
    dependencies = {
        'rcarriga/nvim-dap-ui',
        'theHamsta/nvim-dap-virtual-text',
        'nvim-neotest/nvim-nio',
        'williamboman/mason.nvim',
        'jay-babu/mason-nvim-dap.nvim',
    },

    config = function()
        local dap = require("dap")
        local ui = require("dapui")

        require("dapui").setup()
        require("nvim-dap-virtual-text").setup()
        require("mason").setup()
        require("mason-nvim-dap").setup({
            ensure_installed = { "codelldb" }
        })

        dap.adapters.codelldb = {
            type = "executable",
            command = "codelldb", -- or if not in $PATH: "/absolute/path/to/codelldb"
        }

        dap.configurations.cpp = {
            {
                name = "Launch file",
                type = "codelldb",
                request = "launch",
                program = function()
                    return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
                end,
                cwd = '${workspaceFolder}',
                stopOnEntry = false,
            },
        }

        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

        vim.keymap.set("n", "<leader>b", function() require("dap").toggle_breakpoint() end)
        vim.keymap.set("n", "<leader>gb", function() require("dap").run_to_cursor() end)
        -- Eval var under cursor
        vim.keymap.set("n", "<leader>?", function()
            require("dapui").eval(nil, { enter = true })
        end)
        vim.keymap.set("n", "<F1>", function() require("dap").continue() end)
        vim.keymap.set("n", "<F2>", function() require("dap").step_into() end)
        vim.keymap.set("n", "<F3>", function() require("dap").step_over() end)
        vim.keymap.set("n", "<F4>", function() require("dap").step_out() end)
        vim.keymap.set("n", "<F5>", function() require("dap").step_back() end)
        vim.keymap.set("n", "<F13>", function() require("dap").restart() end)

    end,
}