updated dapmode and fixed keymap restore

master
blob42 7 months ago
parent e726420013
commit 31dcd5375f

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

@ -7,7 +7,6 @@ local api = vim.api
local dapmode = require("spike.dap.dapmode")
local daputils = require('spike.dap.utils')
local dapui = require("dapui")
local keymap_restore = {}
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'
@ -41,24 +40,26 @@ local function register_listeners()
dap.listeners.before['event_initialized']['blob42-dap'] = function(_, _)
dapmode.start()
dapui.open()
daputils.register_keymaps()
end
dap.listeners.after['event_terminated']['blob42-dap'] = function(_, _)
-- print("dap session ended")
dapmode.stop()
dapui.close()
daputils.unregister_keymaps()
end
dap.listeners.after['event_exited']['blob42-dap'] = function(_, _)
-- print("dap session ended")
dapmode.stop()
dapui.close()
daputils.unregister_keymaps()
end
end
function M.go_debug()
local present, gdap = pcall(require, "go.dap")
if not present then return end
gdap.run()
local ok, gdap = pcall(require, "go.dap")
if ok then gdap.run() end
end
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"] = {
-- type = 'server',
-- host = "127.0.0.1",

@ -3,19 +3,20 @@ local ok, dap = pcall(require, 'dap')
if not ok then
vim.notify('dap module missing')
end
local api = vim.api
local keymap_restore = {}
-- local api = vim.api
-- local keymap_restore = {}
local M = {}
M.disconnect_dap = function()
local has_dap, dap = pcall(require, 'dap')
local _, dapui = pcall(require, 'dapui')
if has_dap then
dap.disconnect()
dap.repl.close()
dapui.close()
vim.cmd('sleep 100m') -- allow cleanup
dap.disconnect()
dap.repl.close()
dapui.close()
vim.cmd('sleep 100m') -- allow cleanup
else
vim.notify('dap not found')
end
@ -51,34 +52,33 @@ M.load_launch_json = function()
require("dap.ext.vscode").load_launchjs()
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()
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}
)
-- 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
M.unregister_keymaps = 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 = {}
-- vim.keymap.del('n', 'K', {silent=true})
-- for _,keymap in pairs(keymap_restore) do
-- vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs or keymap.callback,
-- {buffer=keymap.buffer, silent=keymap.silent==1})
-- end
-- keymap_restore = {}
end
return M

Loading…
Cancel
Save