Add nvim-dap & nvim-dap-view
Also don't enter insert mode when launching a debug session.
This commit is contained in:
parent
44199d81b4
commit
144d2b11cf
57
lua/plugins/debugger.lua
Normal file
57
lua/plugins/debugger.lua
Normal file
@ -0,0 +1,57 @@
|
||||
return {
|
||||
'mfussenegger/nvim-dap',
|
||||
dependencies = {
|
||||
'igorlfs/nvim-dap-view',
|
||||
'kbenzie/mason.nvim',
|
||||
'jay-babu/mason-nvim-dap.nvim',
|
||||
'theHamsta/nvim-dap-virtual-text',
|
||||
},
|
||||
config = function()
|
||||
local dap = require('dap')
|
||||
|
||||
local debug_adapters = {
|
||||
'codelldb', -- C/C++/Rust/Zig
|
||||
}
|
||||
|
||||
if vim.fn.executable('pip') == 1 then
|
||||
for _, package in ipairs({
|
||||
'python', -- Python
|
||||
}) do table.insert(debug_adapters, package) end
|
||||
end
|
||||
|
||||
if vim.fn.executable('go') == 1 then
|
||||
for _, package in ipairs({
|
||||
'delve', -- Go
|
||||
}) do table.insert(debug_adapters, package) end
|
||||
end
|
||||
|
||||
require("mason-nvim-dap").setup({
|
||||
ensure_installed = debug_adapters,
|
||||
handlers = {},
|
||||
})
|
||||
|
||||
-- UI plugins
|
||||
require('dap-view').setup({})
|
||||
require('nvim-dap-virtual-text').setup({})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
pattern = {
|
||||
'dap-float',
|
||||
},
|
||||
callback = function(args)
|
||||
vim.keymap.set("n", "q", "<C-w>q", { buffer = args.buf })
|
||||
end,
|
||||
})
|
||||
|
||||
local widgets = require('dap.ui.widgets')
|
||||
|
||||
vim.keymap.set('n', '<F5>', dap.continue)
|
||||
vim.keymap.set('n', '<F17>', dap.terminate) -- Shift-F5
|
||||
vim.keymap.set('n', '<F9>', dap.toggle_breakpoint)
|
||||
vim.keymap.set('n', '<F21>', vim.cmd.DapViewWatch) -- Shift-F9
|
||||
vim.keymap.set('n', '<F11>', dap.step_into)
|
||||
vim.keymap.set('n', '<F23>', dap.step_out) -- Shift-F11
|
||||
vim.keymap.set('n', '<F10>', dap.step_over)
|
||||
vim.keymap.set('n', '<leader>K', widgets.hover)
|
||||
end,
|
||||
}
|
||||
@ -25,10 +25,17 @@ vim.api.nvim_create_autocmd('BufRead', {
|
||||
|
||||
-- Start terminals in insert mode
|
||||
vim.api.nvim_create_autocmd('TermOpen', {
|
||||
group = group, pattern = 'term://*',
|
||||
callback = function()
|
||||
vim.cmd.startinsert()
|
||||
group = group,
|
||||
pattern = 'term://*',
|
||||
callback = function(args)
|
||||
-- nvim-dap/nvim-dap-view uses terminal buffers in the background which are
|
||||
-- not visible, don't start insert mode if the dap-type variable exists.
|
||||
local success, dap_type = pcall(vim.api.nvim_buf_get_var, args.buf, 'dap-type')
|
||||
if success and dap_type then
|
||||
return
|
||||
end
|
||||
vim.cmd.startinsert()
|
||||
end,
|
||||
})
|
||||
|
||||
-- Automatically press enter when the terminal process exit successfully
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user