aboutsummaryrefslogtreecommitdiffstats
path: root/lua/alpha
diff options
context:
space:
mode:
authorAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-01-25 20:38:04 +0100
committerAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-01-25 20:38:04 +0100
commitd45b90e28752b85c5973b0d8b7d1103812e7f675 (patch)
tree340061ee11611f194f0f2c299e2930a3ca6c1a49 /lua/alpha
parent8618b74356e3ab036967639e580df5b93005d4ae (diff)
downloadnvim-conf-d45b90e28752b85c5973b0d8b7d1103812e7f675.tar.gz
nvim-conf-d45b90e28752b85c5973b0d8b7d1103812e7f675.zip
Change vimspector for dap
Diffstat (limited to 'lua/alpha')
-rw-r--r--lua/alpha/dap-fn.lua72
-rw-r--r--lua/alpha/dap.lua33
-rw-r--r--lua/alpha/init.lua22
-rw-r--r--lua/alpha/scratchs/dap.lua44
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()