diff --git a/lua/plugins/dap.lua b/lua/plugins/dap.lua index fcfc54c..9932b37 100644 --- a/lua/plugins/dap.lua +++ b/lua/plugins/dap.lua @@ -123,7 +123,46 @@ return { require('dap.ext.vscode').json_decode = require('utils.json_workaround').decode_json local pythonVenv = require('utils.python_venv') + local snacks = require('snacks') + local dap = require('dap') + local function get_all_dap_configurations() + require('dap.ext.vscode').load_launchjs() + local configs = {} + + for filetype, entries in pairs(dap.configurations or {}) do + for _, cfg in ipairs(entries) do + table.insert(configs, { + label = cfg.name or '[No name]', + desc = string.format('Type: %s | Filetype: %s', cfg.type, filetype), + config = cfg, -- store actual config separately + }) + end + end + + return configs + end + + local function pick_dap_configuration() + local items = get_all_dap_configurations() + + snacks.picker({ + items = items, + prompt = 'DAP Configurations', + confirm = function(picker, item) + picker:close() + local config = item.config + if config then + dap.run(config) + else + vim.notify('Invalid DAP config', vim.log.levels.ERROR) + end + end, + }) + end + + -- Create a Neovim command for convenience + vim.api.nvim_create_user_command('PickDapConfig', pick_dap_configuration, {}) function loadConfigs() require('dap.ext.vscode').load_launchjs() -- Make sure we use the correct python env even for the configs from launch.json