From 51279f784dd9e9ff6e22aef3e8c968fac5f1c05f Mon Sep 17 00:00:00 2001 From: blob42 Date: Mon, 31 Jul 2023 21:52:40 +0200 Subject: [PATCH] better dap config, add dap-python --- lua/custom/plugins/init.lua | 15 ++++++++++++++- lua/spike/dap/init.lua | 36 ++++++++++++++++++++++++++++-------- lua/spike/dap/utils.lua | 13 +++++++++++++ 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index 83fd469..c5833c1 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -301,7 +301,7 @@ return { -- dap ["mfussenegger/nvim-dap"] = { -- {{{ - lock = true, + -- lock = true, module = {"dap"}, setup = function() require("core.utils").load_mappings "dap" @@ -312,6 +312,19 @@ return { end }, + ["mfussenegger/nvim-dap-python"] = { + after = {"nvim-dap"}, + config = function() + -- expand share folder + venv_path = vim.fn.stdpath('data') .. '/mason/packages/debugpy/venv/bin/python' + require('dap-python').setup(venv_path) + end, + cond = function() + -- filetype is python + return vim.bo.filetype == "python" + end + }, + ["rcarriga/nvim-dap-ui"] = { -- tag = "*", lock = true, diff --git a/lua/spike/dap/init.lua b/lua/spike/dap/init.lua index fff9913..081d5f6 100644 --- a/lua/spike/dap/init.lua +++ b/lua/spike/dap/init.lua @@ -1,3 +1,8 @@ +local present, dap = pcall(require, "dap") +if not present then + print("nvim-dap missing !") + return +end local dapmode = require("spike.dap.dapmode") local daputils = require('spike.dap.utils') local dapui = require("dapui") @@ -26,19 +31,14 @@ M.signs = { } } -local function register_listeners() - local present, dap = pcall(require, "dap") - if not present then - print("nvim-dap missing !") - return - end - dap.listeners.before['event_initialized']['spike-dap'] = function(session, body) +local function register_listeners() + dap.listeners.before['event_initialized']['spike-dap'] = function(_, _) dapmode.start() dapui.open() end - dap.listeners.after['event_terminated']['spike-dap'] = function(session, body) + dap.listeners.after['event_terminated']['spike-dap'] = function(_, _) -- print("dap session ended") dapmode.stop() dapui.close() @@ -57,13 +57,33 @@ local function set_signs() end end +local function dap_setup() + -- set default externalTerminal + dap.defaults.fallback.external_terminal = { + command = "/usr/bin/alacritty", + args = { + "--class", + "dap", + "-o", + "window.dimensions.lines=30", + "-o", + "window.dimensions.columns=100", + "-e" + } + } + + +end + function M.prepare_launch() end function M.setup() + dap_setup() dapmode.setup({}) register_listeners() set_signs() + daputils.load_launch_json() end diff --git a/lua/spike/dap/utils.lua b/lua/spike/dap/utils.lua index 674c2a4..bfb8027 100644 --- a/lua/spike/dap/utils.lua +++ b/lua/spike/dap/utils.lua @@ -32,4 +32,17 @@ M.init_breakpoints = function() end end +--- Load the DAP launch.json file +--- If the file does not exist, create it at the default location. +M.load_launch_json = function() + local Path = require("plenary.path") + local fpath = Path:new(vim.fn.getcwd() .. "/.vscode/launch.json") + -- if path does not exist print message + if not fpath:exists() then + vim.notify('launch.json not found at ' .. fpath.filename) + return + end + require("dap.ext.vscode").load_launchjs() +end + return M