dap refactor, make some commands async-safe
This commit is contained in:
parent
b54c7d6461
commit
d5a3c86a85
|
@ -57,6 +57,7 @@ return {
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local dap = require 'dap'
|
local dap = require 'dap'
|
||||||
|
local dapui = require 'dapui'
|
||||||
local async = require 'plenary.async'
|
local async = require 'plenary.async'
|
||||||
|
|
||||||
-- Configure the LLDB DAP adapter for C/C++
|
-- Configure the LLDB DAP adapter for C/C++
|
||||||
|
@ -73,7 +74,7 @@ return {
|
||||||
type = 'lldb',
|
type = 'lldb',
|
||||||
request = 'launch',
|
request = 'launch',
|
||||||
program = function()
|
program = function()
|
||||||
return require('custom.utils').pick_executable(vim.fn.getcwd() .. '/build/debug')
|
return require('custom.utils').pick_executable(vim.fn.getcwd() .. '/build')
|
||||||
end,
|
end,
|
||||||
cwd = '${workspaceFolder}',
|
cwd = '${workspaceFolder}',
|
||||||
stopOnEntry = false,
|
stopOnEntry = false,
|
||||||
|
@ -115,26 +116,39 @@ return {
|
||||||
-- If you added 'leoluz/nvim-dap-go' as a dependency:
|
-- If you added 'leoluz/nvim-dap-go' as a dependency:
|
||||||
-- require('dap-go').setup() -- Call its setup function
|
-- require('dap-go').setup() -- Call its setup function
|
||||||
|
|
||||||
-- Your preferred DAP keybindings
|
-- Launch and Control
|
||||||
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, { desc = 'DAP: Toggle [B]reakpoint' })
|
vim.keymap.set('n', '<leader>dc', function()
|
||||||
vim.keymap.set('n', '<leader>dc', dap.continue, { desc = 'DAP: [C]ontinue' })
|
|
||||||
vim.keymap.set('n', '<leader>dj', dap.step_into, { desc = 'DAP: Step [I]nto (j)' })
|
|
||||||
vim.keymap.set('n', '<leader>dk', dap.step_over, { desc = 'DAP: Step [O]ver (k)' })
|
|
||||||
vim.keymap.set('n', '<leader>do', dap.step_out, { desc = 'DAP: Step [O]ut' })
|
|
||||||
vim.keymap.set('n', '<leader>dr', dap.repl.open, { desc = 'DAP: Open [R]EPL' })
|
|
||||||
vim.keymap.set('n', '<leader>dl', dap.run_last, { desc = 'DAP: Run [L]ast' })
|
|
||||||
vim.keymap.set('n', '<leader>du', function()
|
|
||||||
require('dapui').toggle()
|
|
||||||
end, { desc = 'DAP: Toggle [U]I' })
|
|
||||||
vim.keymap.set('n', '<leader>dt', dap.terminate, { desc = 'DAP: [T]erminate' })
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<F5>', function()
|
|
||||||
async.run(function()
|
async.run(function()
|
||||||
dap.continue()
|
dap.continue()
|
||||||
|
if not dapui.windows or vim.tbl_isempty(dapui.windows) then
|
||||||
|
dapui.open()
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
end, { desc = 'DAP Continue (async-safe)' })
|
end, { desc = 'DAP: [C]ontinue show UI (async-safe)' })
|
||||||
-- Kickstart's <F7> to toggle UI (can be added if you like it)
|
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, { desc = 'DAP: Toggle [B]reakpoint' })
|
||||||
-- vim.keymap.set('n', '<F7>', function() require('dapui').toggle() end, { desc = 'Debug: Toggle UI' })
|
vim.keymap.set('n', '<leader>dl', dap.run_last, { desc = 'DAP: Run [L]ast' })
|
||||||
|
|
||||||
|
-- DAP: Stepping
|
||||||
|
vim.keymap.set('n', '<leader>di', dap.step_into, { desc = 'DAP: Step [I]nto' })
|
||||||
|
vim.keymap.set('n', '<leader>dk', dap.step_over, { desc = 'DAP: Step [O]ver (k)' })
|
||||||
|
vim.keymap.set('n', '<leader>do', dap.step_out, { desc = 'DAP: Step [O]ut' })
|
||||||
|
vim.keymap.set('n', '<leader>dx', function()
|
||||||
|
async.run(function()
|
||||||
|
dap.run_to_cursor()
|
||||||
|
end)
|
||||||
|
end, { desc = 'DAP: Run to Cursor (x) (asyn-safe)' })
|
||||||
|
|
||||||
|
-- DAP: Termination
|
||||||
|
vim.keymap.set('n', '<leader>dt', function()
|
||||||
|
async.run(function()
|
||||||
|
dap.terminate()
|
||||||
|
dapui.close()
|
||||||
|
end)
|
||||||
|
end, { desc = 'DAP: [T]erminate (async-safe)' })
|
||||||
|
|
||||||
|
-- DAP: UI
|
||||||
|
vim.keymap.set('n', '<leader>dr', dap.repl.open, { desc = 'DAP: Open [R]EPL' })
|
||||||
|
vim.keymap.set('n', '<leader>du', dapui.toggle, { desc = 'DAP: Toggle [U]I' })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,6 @@ end
|
||||||
|
|
||||||
local function pick_executable(start_dir)
|
local function pick_executable(start_dir)
|
||||||
return async.wrap(function(_start_dir, on_choice)
|
return async.wrap(function(_start_dir, on_choice)
|
||||||
print('pick_executable() was triggered with start_dir=' .. _start_dir)
|
|
||||||
|
|
||||||
local executables = collect_executables(_start_dir)
|
local executables = collect_executables(_start_dir)
|
||||||
|
|
||||||
if #executables == 0 then
|
if #executables == 0 then
|
||||||
|
|
Loading…
Reference in New Issue