summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/custom/plugins/nvim-dap.lua
blob: a6387dc0776fbfc67d1853458fd6f4bf9534e0dc (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
return {
    'mfussenegger/nvim-dap',
    dependencies = { 'williamboman/mason.nvim' },
    -- NOTE:nvim-dap has no setup function
    -- if there is just opts, lazy will attempt to call setup which causes an error
    -- Having an empty config function makes lazy not call setup which fixes the issue
    config = function() end,
    opts = function()
        -- Load dap keymaps
        require('custom.config.dap-keymaps')
        local dap = require('dap')

        -- Setup C/C++ dap
        if not dap.adapters['codelldb'] then
            dap.adapters['codelldb'] = {
                type = 'server',
                host = 'localhost',
                port = '${port}',
                executable = {
                    command = 'codelldb',
                    args = {
                        '--port',
                        '${port}',
                    },
                },
            }
        end
        for _, lang in ipairs({ 'c', 'cpp' }) do
            dap.configurations[lang] = {
                {
                    type = 'codelldb',
                    request = 'launch',
                    name = 'Launch file',
                    program = function()
                        if vim.g.dap_codelldb_exe then
                            return vim.fn.getcwd() .. '/' .. vim.g.dap_codelldb_exe
                        end
                        return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
                    end,
                    args = function()
                        if vim.g.dap_codelldb_args then
                            return vim.g.dap_codelldb_args
                        end
                        return {}
                    end,
                    cwd = '${workspaceFolder}',
                },
                {
                    type = 'codelldb',
                    request = 'attach',
                    name = 'Attach to process',
                    pid = require('dap.utils').pick_process,
                    cwd = '${workspaceFolder}',
                },
            }
        end
    end,
}