updated dapmode and fixed keymap restore

master
blob42 8 months ago
parent e726420013
commit 31dcd5375f

@ -61,6 +61,12 @@ local config = {
end, end,
desc = '[dap] stop' desc = '[dap] stop'
}, },
K = {
rhs = function()
require('dap.ui.widgets').hover()
end,
desc = '[dap] hover'
},
C = { C = {
rhs = function() rhs = function()
require('dap').run_to_cursor() require('dap').run_to_cursor()

@ -7,7 +7,6 @@ local api = vim.api
local dapmode = require("spike.dap.dapmode") local dapmode = require("spike.dap.dapmode")
local daputils = require('spike.dap.utils') local daputils = require('spike.dap.utils')
local dapui = require("dapui") local dapui = require("dapui")
local keymap_restore = {}
local liblldb_path = vim.fn.stdpath("data") .. "/mason/packages/codelldb/extension/lldb/lib/liblldb.so" local liblldb_path = vim.fn.stdpath("data") .. "/mason/packages/codelldb/extension/lldb/lib/liblldb.so"
local adapter_path = vim.fn.stdpath('data') .. '/mason/packages/codelldb/extension/adapter/codelldb' local adapter_path = vim.fn.stdpath('data') .. '/mason/packages/codelldb/extension/adapter/codelldb'
@ -41,24 +40,26 @@ local function register_listeners()
dap.listeners.before['event_initialized']['blob42-dap'] = function(_, _) dap.listeners.before['event_initialized']['blob42-dap'] = function(_, _)
dapmode.start() dapmode.start()
dapui.open() dapui.open()
daputils.register_keymaps()
end end
dap.listeners.after['event_terminated']['blob42-dap'] = function(_, _) dap.listeners.after['event_terminated']['blob42-dap'] = function(_, _)
-- print("dap session ended") -- print("dap session ended")
dapmode.stop() dapmode.stop()
dapui.close() dapui.close()
daputils.unregister_keymaps()
end end
dap.listeners.after['event_exited']['blob42-dap'] = function(_, _) dap.listeners.after['event_exited']['blob42-dap'] = function(_, _)
-- print("dap session ended") -- print("dap session ended")
dapmode.stop() dapmode.stop()
dapui.close() dapui.close()
daputils.unregister_keymaps()
end end
end end
function M.go_debug() function M.go_debug()
local present, gdap = pcall(require, "go.dap") local ok, gdap = pcall(require, "go.dap")
if not present then return end if ok then gdap.run() end
gdap.run()
end end
local function set_signs() local function set_signs()
@ -82,36 +83,6 @@ local function dap_setup()
} }
} }
-- Map K to hover while session is active https://github.com/mfussenegger/nvim-dap/wiki/Cookbook#map-k-to-hover-while-session-is-active
dap.listeners.after['event_initialized']['blob42-dap'] = function() -- takes session,body
for _, buf in pairs(api.nvim_list_bufs()) do
local keymaps = api.nvim_buf_get_keymap(buf, 'n')
for _, keymap in pairs(keymaps) do
if keymap.lhs == "K" then
table.insert(keymap_restore, keymap)
api.nvim_buf_del_keymap(buf, 'n', 'K')
end
end
end
api.nvim_set_keymap(
'n', 'K', '<cmd>lua require("dap.ui.widgets").hover()<CR>',
{silent = true}
)
end
dap.listeners.after['event_terminated']['blob42-dap'] = function()
for _,keymap in pairs(keymap_restore) do
api.nvim_buf_set_keymap(
keymap.buffer,
keymap.mode,
keymap.lhs,
keymap.rhs,
{ silent = keymap.silent == 1 }
)
end
keymap_restore = {}
end
-- dap.adapters["codelldb-c"] = { -- dap.adapters["codelldb-c"] = {
-- type = 'server', -- type = 'server',
-- host = "127.0.0.1", -- host = "127.0.0.1",

@ -3,19 +3,20 @@ local ok, dap = pcall(require, 'dap')
if not ok then if not ok then
vim.notify('dap module missing') vim.notify('dap module missing')
end end
local api = vim.api -- local api = vim.api
local keymap_restore = {} -- local keymap_restore = {}
local M = {} local M = {}
M.disconnect_dap = function() M.disconnect_dap = function()
local has_dap, dap = pcall(require, 'dap') local has_dap, dap = pcall(require, 'dap')
local _, dapui = pcall(require, 'dapui') local _, dapui = pcall(require, 'dapui')
if has_dap then if has_dap then
dap.disconnect() dap.disconnect()
dap.repl.close() dap.repl.close()
dapui.close() dapui.close()
vim.cmd('sleep 100m') -- allow cleanup vim.cmd('sleep 100m') -- allow cleanup
else else
vim.notify('dap not found') vim.notify('dap not found')
end end
@ -51,34 +52,33 @@ M.load_launch_json = function()
require("dap.ext.vscode").load_launchjs() require("dap.ext.vscode").load_launchjs()
end end
-- NOTE: dapmode handles keymaps for now
-- manually setting keymaps
-- Map K to hover while session is active https://github.com/mfussenegger/nvim-dap/wiki/Cookbook#map-k-to-hover-while-session-is-active
-- see: update with https://github.com/jonboh/nvim-dap-rr/blob/f1678d5524aac8321c538883e77daa17d6be44f5/lua/nvim-dap-rr.lua
M.register_keymaps = function() M.register_keymaps = function()
for _, buf in pairs(api.nvim_list_bufs()) do -- for _, buf in pairs(api.nvim_list_bufs()) do
local keymaps = api.nvim_buf_get_keymap(buf, 'n') -- local keymaps = api.nvim_buf_get_keymap(buf, 'n')
for _, keymap in pairs(keymaps) do -- for _, keymap in pairs(keymaps) do
if keymap.lhs == "K" then -- if keymap.lhs == "K" then
table.insert(keymap_restore, keymap) -- table.insert(keymap_restore, keymap)
api.nvim_buf_del_keymap(buf, 'n', 'K') -- api.nvim_buf_del_keymap(buf, 'n', 'K')
end -- end
end -- end
end -- end
api.nvim_set_keymap( -- api.nvim_set_keymap(
'n', 'K', '<cmd>lua require("dap.ui.widgets").hover()<CR>', -- 'n', 'K', '<cmd>lua require("dap.ui.widgets").hover()<CR>',
{silent = true} -- {silent = true}
) -- )
end end
M.unregister_keymaps = function() M.unregister_keymaps = function()
-- vim.keymap.del('n', 'K', {silent=true})
for _,keymap in pairs(keymap_restore) do -- for _,keymap in pairs(keymap_restore) do
api.nvim_buf_set_keymap( -- vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs or keymap.callback,
keymap.buffer, -- {buffer=keymap.buffer, silent=keymap.silent==1})
keymap.mode, -- end
keymap.lhs, -- keymap_restore = {}
keymap.rhs,
{ silent = keymap.silent == 1 }
)
end
keymap_restore = {}
end end
return M return M

Loading…
Cancel
Save