diff options
| author | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2022-01-25 20:38:04 +0100 |
|---|---|---|
| committer | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2022-01-25 20:38:04 +0100 |
| commit | d45b90e28752b85c5973b0d8b7d1103812e7f675 (patch) | |
| tree | 340061ee11611f194f0f2c299e2930a3ca6c1a49 /lua/alpha | |
| parent | 8618b74356e3ab036967639e580df5b93005d4ae (diff) | |
| download | nvim-conf-d45b90e28752b85c5973b0d8b7d1103812e7f675.tar.gz nvim-conf-d45b90e28752b85c5973b0d8b7d1103812e7f675.zip | |
Change vimspector for dap
Diffstat (limited to 'lua/alpha')
| -rw-r--r-- | lua/alpha/dap-fn.lua | 72 | ||||
| -rw-r--r-- | lua/alpha/dap.lua | 33 | ||||
| -rw-r--r-- | lua/alpha/init.lua | 22 | ||||
| -rw-r--r-- | lua/alpha/scratchs/dap.lua | 44 |
4 files changed, 106 insertions, 65 deletions
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", "<CR>", "<Cmd>lua require('dap.ui').trigger_actions({ mode = 'first' })<CR>", {}) + api.nvim_buf_set_keymap( + buf, "n", "a", "<Cmd>lua require('dap.ui').trigger_actions()<CR>", {}) + 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', '<leader>dbp', ':lua require\'dap\'.toggle_breakpoint()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dd', ':lua require\'dap\'.continue()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dl', ':lua require\'dap\'.step_into()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dj', ':lua require\'dap\'.step_over()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dk', ':lua require\'dap\'.step_out()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dt', ':lua require\'dap\'.repl.toggle()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>ds', ':lua require\'alpha.dap-fn\'.scopes()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dbl', ':lua require\'dap\'.list_breakpoints()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dbc', ':lua require\'dap\'.clear_breakpoints()<cr>', {noremap = true}) +vim.api.nvim_set_keymap('n', '<leader>dc', ':lua require\'dap\'.run_to_cursor()<cr>', {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', '<leader>rs', ':lua require(\'alpha.refactor\').set vim.api.nvim_set_keymap('n', '<leader>rn', ':lua require(\'alpha.refactor\').new_property()<cr>', {noremap = true}) vim.api.nvim_set_keymap('n', '<leader><leader>x', ':call alpha#save_and_exec()<cr>', {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 <silent> <F5> :lua require'dap'.continue()<CR> --- nnoremap <silent> <F10> :lua require'dap'.step_over()<CR> --- nnoremap <silent> <F11> :lua require'dap'.step_into()<CR> --- nnoremap <silent> <F12> :lua require'dap'.step_out()<CR> --- nnoremap <silent> <leader>b :lua require'dap'.toggle_breakpoint()<CR> --- nnoremap <silent> <leader>B :lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR> --- nnoremap <silent> <leader>lp :lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR> --- nnoremap <silent> <leader>dr :lua require'dap'.repl.open()<CR> --- nnoremap <silent> <leader>dl :lua require'dap'.run_last()<CR> --- 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() |