From d45b90e28752b85c5973b0d8b7d1103812e7f675 Mon Sep 17 00:00:00 2001 From: Ariel D'Alessandro Date: Tue, 25 Jan 2022 20:38:04 +0100 Subject: Change vimspector for dap --- lua/alpha/dap-fn.lua | 72 ++++++++++++++++++++++++++++++++++++++++++++++ lua/alpha/dap.lua | 33 +++++++++++++++++++++ lua/alpha/init.lua | 22 +------------- lua/alpha/scratchs/dap.lua | 44 ---------------------------- 4 files changed, 106 insertions(+), 65 deletions(-) create mode 100644 lua/alpha/dap-fn.lua create mode 100644 lua/alpha/dap.lua delete mode 100644 lua/alpha/scratchs/dap.lua (limited to 'lua/alpha') diff --git a/lua/alpha/dap-fn.lua b/lua/alpha/dap-fn.lua new file mode 100644 index 0000000..c1d1f1c --- /dev/null +++ b/lua/alpha/dap-fn.lua @@ -0,0 +1,72 @@ +local widgets = require('dap.ui.widgets') +local ui = require('dap.ui') +local api = vim.api + +local M = {} + +local function new_buf() + local buf = api.nvim_create_buf(false, true) + api.nvim_buf_set_option(buf, 'modifiable', false) + api.nvim_buf_set_option(buf, 'buftype', 'nofile') + api.nvim_buf_set_keymap( + buf, "n", "", "lua require('dap.ui').trigger_actions({ mode = 'first' })", {}) + api.nvim_buf_set_keymap( + buf, "n", "a", "lua require('dap.ui').trigger_actions()", {}) + return buf +end + +local scopes = { + refresh_listener = 'scopes', + new_buf = function(view) + local dap = require('dap') + local function reset_tree() + view.tree = nil + end + dap.listeners.after['event_terminated'][view] = reset_tree + dap.listeners.after['event_exited'][view] = reset_tree + local buf = new_buf() + api.nvim_buf_attach(buf, false, { + on_detach = function() + dap.listeners.after['event_terminated'][view] = nil + dap.listeners.after['event_exited'][view] = nil + end + }) + return buf + end, + render = function(view) + local session = require('dap').session() + local frame = session and session.current_frame or {} + local tree = view.tree + if not tree then + local spec = vim.deepcopy(require('dap.entity').scope.tree_spec) + spec.extra_context = { view = view } + tree = ui.new_tree(spec) + view.tree = tree + end + local layer = view.layer() + local scopes = frame.scopes or {} + local render + render = function(idx, scope) + if not scope then + return + end + + if scope.name ~= 'Locals' then + return + end + + tree.render(layer, scope, function() + render(next(scopes, idx)) + end) + end + render(next(scopes)) + end, +} + +M.scopes = function () + local a = widgets.centered_float(scopes) + -- set cursor at top to make it easier to read + vim.api.nvim_win_set_cursor(a.win, {1, 0}) +end + +return M diff --git a/lua/alpha/dap.lua b/lua/alpha/dap.lua new file mode 100644 index 0000000..f7f3890 --- /dev/null +++ b/lua/alpha/dap.lua @@ -0,0 +1,33 @@ +local dap = require('dap') + + +-- TODO replace pad with env variables +dap.adapters.php = { + type = 'executable', + command = 'node', + args = { '/home/alpha/repos/vscode-php-debug/out/phpDebug.js' } +} + +-- TODO make 'mapping' configurateble +dap.configurations.php = { + { + type = 'php', + request = 'launch', + name = 'Listen for Xdebug', + port = 9003, + pathMappings = { + ['/var/www/html'] = vim.fn.getcwd() + } + } +} + +vim.api.nvim_set_keymap('n', 'dbp', ':lua require\'dap\'.toggle_breakpoint()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dd', ':lua require\'dap\'.continue()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dl', ':lua require\'dap\'.step_into()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dj', ':lua require\'dap\'.step_over()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dk', ':lua require\'dap\'.step_out()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dt', ':lua require\'dap\'.repl.toggle()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'ds', ':lua require\'alpha.dap-fn\'.scopes()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dbl', ':lua require\'dap\'.list_breakpoints()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dbc', ':lua require\'dap\'.clear_breakpoints()', {noremap = true}) +vim.api.nvim_set_keymap('n', 'dc', ':lua require\'dap\'.run_to_cursor()', {noremap = true}) diff --git a/lua/alpha/init.lua b/lua/alpha/init.lua index 296b38c..30306c6 100644 --- a/lua/alpha/init.lua +++ b/lua/alpha/init.lua @@ -8,7 +8,7 @@ require("alpha.completition") require("alpha.lsp") require("alpha.treesitter") require("alpha.status-line") - +require("alpha.dap") -- Keybindings @@ -16,23 +16,3 @@ vim.api.nvim_set_keymap('n', 'rs', ':lua require(\'alpha.refactor\').set vim.api.nvim_set_keymap('n', 'rn', ':lua require(\'alpha.refactor\').new_property()', {noremap = true}) vim.api.nvim_set_keymap('n', 'x', ':call alpha#save_and_exec()', {noremap = true}) - -local dap = require('dap') - -dap.adapters.php = { - type = 'executable', - command = 'node', - args = { '/home/adalessa/repos/vscode-php-debug/out/phpDebug.js' } -} - -dap.configurations.php = { - { - type = 'php', - request = 'launch', - name = 'Listen for Xdebug', - port = 9003, - pathMappings = { - ['/app'] = vim.fn.getcwd() - } - } -} diff --git a/lua/alpha/scratchs/dap.lua b/lua/alpha/scratchs/dap.lua deleted file mode 100644 index 0434449..0000000 --- a/lua/alpha/scratchs/dap.lua +++ /dev/null @@ -1,44 +0,0 @@ --- What is require to improve the debug --- A single configuration, dinamicaly generate when start the debugging --- keybinding to add breakpoint --- continue --- step over --- step into --- step out --- --- --- nnoremap :lua require'dap'.continue() --- nnoremap :lua require'dap'.step_over() --- nnoremap :lua require'dap'.step_into() --- nnoremap :lua require'dap'.step_out() --- nnoremap b :lua require'dap'.toggle_breakpoint() --- nnoremap B :lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) --- nnoremap lp :lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) --- nnoremap dr :lua require'dap'.repl.open() --- nnoremap dl :lua require'dap'.run_last() --- help mapping --- my idea is to have a function to generate the path of the configuration --- --- --- local dap = require('dap') - --- dap.adapters.php = { --- type = 'executable', --- command = 'node', --- args = { '/home/adalessa/repos/vscode-php-debug/out/phpDebug.js' } --- } - --- dap.configurations.php = { --- { --- type = 'php', --- request = 'launch', --- name = 'Listen for Xdebug', --- port = 9003, --- pathMappings = { --- ['/app'] = '/home/adalessa/code/php/carin-gateway-service' --- } --- } --- } --- the problem is the path mapping maybe just have that updated by project base --- maybe have it as a resolve function of the path when open, need to test - require('dap.ui.widgets').hover() -- cgit v1.2.3