summaryrefslogtreecommitdiff
path: root/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua')
-rw-r--r--ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua295
1 files changed, 295 insertions, 0 deletions
diff --git a/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua
new file mode 100644
index 0000000..d1ef5d7
--- /dev/null
+++ b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/dap.lua
@@ -0,0 +1,295 @@
+local function get_args(config)
+ local args = type(config.args) == "function" and (config.args() or {}) or config.args or {}
+ config = vim.deepcopy(config)
+ ---@cast args string[]
+ config.args = function()
+ local new_args = vim.fn.input("Run with args: ", table.concat(args, " ")) --[[@as string]]
+ return vim.split(vim.fn.expand(new_args) --[[@as string]], " ")
+ end
+ return config
+end
+
+return {
+ {
+ "mfussenegger/nvim-dap",
+ recommended = true,
+ desc = "Debugging support. Requires language specific adapters to be configured. (see lang extras)",
+ dependencies = {
+ "rcarriga/nvim-dap-ui",
+ -- virtual text for the debugger
+ {
+ "theHamsta/nvim-dap-virtual-text",
+ opts = {},
+ },
+ },
+ init = function()
+ local wk = require("which-key")
+ wk.add({
+ mode = { "n" },
+ { "<localleader>dp", group = "Debug" },
+ { "<localleader>dP", group = "Debug (Python)" },
+ })
+ end,
+ config = function()
+ -- load mason-nvim-dap here, after all adapters have been setup
+ vim.api.nvim_set_hl(0, "DapStoppedLine", { default = true, link = "Visual" })
+
+ local dap = require("dap")
+ dap.configurations.java = {
+ {
+ type = "java",
+ request = "attach",
+ name = "Debug (Attach) - Remote",
+ hostName = "127.0.0.1",
+ port = 5005,
+ },
+ }
+
+ local dap_icons = {
+ Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" },
+ Breakpoint = " ",
+ BreakpointCondition = " ",
+ BreakpointRejected = { " ", "DiagnosticError" },
+ LogPoint = ".>",
+ }
+
+ for name, sign in pairs(dap_icons) do
+ sign = type(sign) == "table" and sign or { sign }
+ vim.fn.sign_define(
+ "Dap" .. name,
+ { text = sign[1], texthl = sign[2] or "DiagnosticInfo", linehl = sign[3], numhl = sign[3] }
+ )
+ end
+
+ -- setup dap config by VsCode launch.json file
+ local vscode = require("dap.ext.vscode")
+ local json = require("plenary.json")
+ vscode.json_decode = function(str)
+ return vim.json.decode(json.json_strip_comments(str))
+ end
+ end,
+ keys = {
+ {
+ "<localleader>dpB",
+ function()
+ require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))
+ end,
+ desc = "Dap breakpoint condition",
+ },
+ {
+ "<localleader>dpb",
+ function()
+ require("dap").toggle_breakpoint()
+ end,
+ desc = "Dap toggle breakpoint",
+ },
+ {
+ "<localleader>dpc",
+ function()
+ require("dap").continue()
+ end,
+ desc = "Dap continue",
+ },
+ {
+ "<localleader>dpa",
+ function()
+ require("dap").continue({ before = get_args })
+ end,
+ desc = "Dap run with args",
+ },
+ {
+ "<localleader>dpC",
+ function()
+ require("dap").run_to_cursor()
+ end,
+ desc = "Dap run to cursor",
+ },
+ {
+ "<localleader>dpg",
+ function()
+ require("dap").goto_()
+ end,
+ desc = "Dap go to line (no execute)",
+ },
+ {
+ "<localleader>dpi",
+ function()
+ require("dap").step_into()
+ end,
+ desc = "Dap step into",
+ },
+ {
+ "<localleader>dpj",
+ function()
+ require("dap").down()
+ end,
+ desc = "Dap down",
+ },
+ {
+ "<localleader>dpk",
+ function()
+ require("dap").up()
+ end,
+ desc = "Dap up",
+ },
+ {
+ "<localleader>dpl",
+ function()
+ require("dap").run_last()
+ end,
+ desc = "Dap run last",
+ },
+ {
+ "<localleader>dpo",
+ function()
+ require("dap").step_out()
+ end,
+ desc = "Dap step out",
+ },
+ {
+ "<localleader>dpO",
+ function()
+ require("dap").step_over()
+ end,
+ desc = "Dap step over",
+ },
+ {
+ "<localleader>dpp",
+ function()
+ require("dap").pause()
+ end,
+ desc = "Dap pause",
+ },
+ {
+ "<localleader>dpr",
+ function()
+ require("dap").repl.toggle()
+ end,
+ desc = "Dap toggle repl",
+ },
+ {
+ "<localleader>dps",
+ function()
+ require("dap").session()
+ end,
+ desc = "Dap session",
+ },
+ {
+ "<localleader>dpt",
+ function()
+ require("dap").terminate()
+ end,
+ desc = "Dap terminate",
+ },
+ {
+ "<localleader>dpw",
+ function()
+ require("dap.ui.widgets").hover()
+ end,
+ desc = "Dap widgets",
+ },
+ {
+ "<localleader>dpR",
+ "<cmd>lua require('dapui').open({ reset = true })<cr>",
+ desc = "Dap UI reset",
+ },
+ },
+ },
+ {
+ "mfussenegger/nvim-dap-python",
+ ft = "python",
+ dependencies = { "mfussenegger/nvim-dap", "rcarriga/nvim-dap-ui" },
+ config = function()
+ local path = "~/.local/share/nvim/mason/packages/debugpy/venv/bin/python"
+ require("dap-python").setup(path)
+ end,
+ keys = {
+ {
+ "<localleader>dPt",
+ function()
+ require("dap-python").test_method()
+ end,
+ desc = "Dap debug method",
+ ft = "python",
+ },
+ {
+ "<localleader>dPc",
+ function()
+ require("dap-python").test_class()
+ end,
+ desc = "Dap debug class",
+ ft = "python",
+ },
+ },
+ },
+ {
+ "rcarriga/nvim-dap-ui",
+ dependencies = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" },
+ config = function()
+ local dap = require("dap")
+ local dapui = require("dapui")
+ dapui.setup()
+
+ dap.listeners.before.attach.dapui_config = function()
+ dapui.open()
+ end
+ dap.listeners.before.launch.dapui_config = function()
+ dapui.open()
+ end
+ dap.listeners.before.event_terminated.dapui_config = function()
+ dapui.close()
+ end
+ dap.listeners.before.event_exited.dapui_config = function()
+ dapui.close()
+ end
+
+ dap.listeners.after.event_initialized["dapui_config"] = function()
+ dapui.open()
+ end
+ dap.listeners.after.event_terminated["dapui_config"] = function()
+ dapui.close()
+ end
+ dap.listeners.after.event_exited["dapui_config"] = function()
+ dapui.close()
+ end
+ end,
+ keys = {
+ {
+ "<localleader>dpu",
+ function()
+ require("dapui").toggle()
+ end,
+ desc = "Dap UI",
+ },
+ {
+ "<localleader>dpe",
+ function()
+ require("dapui").eval()
+ end,
+ desc = "Dap eval",
+ },
+ },
+ },
+ {
+ "jay-babu/mason-nvim-dap.nvim",
+ dependencies = "mason.nvim",
+ cmd = { "DapInstall", "DapUninstall" },
+ opts = {
+ -- Makes a best effort to setup the various debuggers with
+ -- reasonable debug configurations
+ automatic_installation = true,
+
+ -- You can provide additional configuration to the handlers,
+ -- see mason-nvim-dap README for more information
+ handlers = {},
+
+ -- You'll need to check that you have the required things installed
+ -- online, please don't ask me how to install them :)
+ ensure_installed = {
+ -- Update this to ensure that you have the debuggers for the langs you want
+ },
+ },
+ -- mason-nvim-dap is loaded when nvim-dap loads
+ config = function() end,
+ },
+}