From 31dcd5375f881e8cef3766303d02e6a9edd1f1ed Mon Sep 17 00:00:00 2001 From: blob42 Date: Wed, 20 Sep 2023 00:13:03 +0200 Subject: [PATCH] updated dapmode and fixed keymap restore --- lua/spike/dap/dapmode.lua | 6 ++++ lua/spike/dap/init.lua | 39 ++++--------------------- lua/spike/dap/utils.lua | 60 +++++++++++++++++++-------------------- 3 files changed, 41 insertions(+), 64 deletions(-) diff --git a/lua/spike/dap/dapmode.lua b/lua/spike/dap/dapmode.lua index acf8155..0f77b23 100644 --- a/lua/spike/dap/dapmode.lua +++ b/lua/spike/dap/dapmode.lua @@ -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() diff --git a/lua/spike/dap/init.lua b/lua/spike/dap/init.lua index 3ae0920..d0ad15d 100644 --- a/lua/spike/dap/init.lua +++ b/lua/spike/dap/init.lua @@ -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', 'lua require("dap.ui.widgets").hover()', - {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", diff --git a/lua/spike/dap/utils.lua b/lua/spike/dap/utils.lua index b955259..45c249b 100644 --- a/lua/spike/dap/utils.lua +++ b/lua/spike/dap/utils.lua @@ -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', 'lua require("dap.ui.widgets").hover()', - {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', 'lua require("dap.ui.widgets").hover()', + -- {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