summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/plugins/nvim-dap.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins/nvim-dap.lua')
-rw-r--r--.config/nvim/lua/plugins/nvim-dap.lua58
1 files changed, 58 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/nvim-dap.lua b/.config/nvim/lua/plugins/nvim-dap.lua
new file mode 100644
index 0000000..dd4bbee
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-dap.lua
@@ -0,0 +1,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('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,
+}