From 073800f7dbcab25e120448fb05511bb24424ff90 Mon Sep 17 00:00:00 2001 From: Wil Simpson Date: Sun, 3 Mar 2024 12:42:45 -0500 Subject: [PATCH] Added debugging and autosession --- init.lua | 6 +- lua/custom/plugins/autosession.lua | 25 +++++++ lua/kickstart/plugins/debug.lua | 116 +++++++++++++++++++++++++++-- 3 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 lua/custom/plugins/autosession.lua diff --git a/init.lua b/init.lua index c0a54b57..d9a5f961 100644 --- a/init.lua +++ b/init.lua @@ -457,14 +457,14 @@ local servers = { bashls = {}, cssls = {}, dockerls = {}, - gradle_ls = {}, + -- gradle_ls = {}, pyright = {}, tsserver = {}, html = {}, jsonls = {}, - jdtls = {}, + -- jdtls = {}, rust_analyzer = {}, - marksman = {}, + -- marksman = {}, volar = {}, yamlls = {}, lua_ls = { diff --git a/lua/custom/plugins/autosession.lua b/lua/custom/plugins/autosession.lua new file mode 100644 index 00000000..9054d50b --- /dev/null +++ b/lua/custom/plugins/autosession.lua @@ -0,0 +1,25 @@ +return { + 'rmagatti/auto-session', + config = function() + require("auto-session").setup { + log_level = "error", + auto_session_suppress_dirs = { "~/", "~/Downloads", "/"}, + auto_save_enabled = true, + auto_restore_enabled = true, + auto_session_use_git_branch = true, + auto_session_enable_last_session = true, + pre_save_cmds = { + "NeoTreeClose" + }, + post_save_cmds = { + "NeoTreeReveal" + }, + pre_restore_cmds = { + "NeoTreeClose" + }, + post_restore_cmds = { + "NeoTreeReveal" + }, + } + end +} diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 0b68c43b..c7ff70b7 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -21,6 +21,8 @@ return { -- Add your own debuggers here 'leoluz/nvim-dap-go', + 'microsoft/vscode-js-debug', + 'mxsdev/nvim-dap-vscode-js', }, config = function() @@ -37,7 +39,18 @@ return { ensure_installed = { -- Update this to ensure that you have the debuggers for the langs you want 'delve', + 'js', + 'node2', + 'cppdbg', + 'python', + 'javadbg', + 'javatest', }, + handlers = { + function(config) + require('mason-nvim-dap').default_setup(config) + end + } } -- You can provide additional configuration to the handlers, @@ -45,14 +58,14 @@ return { require('mason-nvim-dap').setup_handlers() -- Basic debugging keymaps, feel free to change to your liking! - vim.keymap.set('n', '', dap.continue) - vim.keymap.set('n', '', dap.step_into) - vim.keymap.set('n', '', dap.step_over) - vim.keymap.set('n', '', dap.step_out) - vim.keymap.set('n', 'b', dap.toggle_breakpoint) - vim.keymap.set('n', 'B', function() + vim.keymap.set('n', '', dap.continue, { desc = '[DAP] Continue' }) + vim.keymap.set('n', '', dap.step_over, { desc = '[DAP] Over' }) + vim.keymap.set('n', '', dap.step_into, { desc = '[DAP] Into' }) + vim.keymap.set('n', '', dap.step_out, { desc = '[DAP] Out' }) + vim.keymap.set('n', '', dap.toggle_breakpoint, { desc = '[DAP] Breakpoint toggle' }) + vim.keymap.set('n', '', function() dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ') - end) + end, { desc = '[DAP] Conditional Breakpoint' }) -- Dap UI setup -- For more information, see |:help nvim-dap-ui| @@ -79,7 +92,96 @@ return { dap.listeners.before.event_terminated['dapui_config'] = dapui.close dap.listeners.before.event_exited['dapui_config'] = dapui.close + dap.defaults.fallback.exception_breakpoints = {'Notice', 'Warning', 'Error', 'Exception'} + -- Install golang specific config require('dap-go').setup() + + -- Install javascript specific config + require("dap-vscode-js").setup { + debugger_path = vim.fn.stdpath("data") .. "/mason/packages/js-debug-adapter", + debugger_cmd = { "js-debug-adapter" }, + adapters = { "pwa-node", "pwa-chrome", "pwa-msedge", "node-terminal", "pwa-extensionHost" }, + } + + for _, jsLang in ipairs({'typescript', 'javascript'}) do + require("dap").configurations[jsLang] = { + { + type = "pwa-node", + request = "launch", + name = "Launch file", + program = "${file}", + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "attach", + name = "Attach", + processId = require'dap.utils'.pick_process, + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "launch", + name = "Debug Jest Tests", + -- trace = true, -- include debugger info + runtimeExecutable = "node", + runtimeArgs = { + "./node_modules/jest/bin/jest.js", + "--runInBand", + }, + rootPath = "${workspaceFolder}", + cwd = "${workspaceFolder}", + console = "integratedTerminal", + internalConsoleOptions = "neverOpen", + }, + { + name = 'Debug Main Process (Electron)', + type = 'pwa-node', + request = 'launch', + program = '${workspaceFolder}/node_modules/.bin/electron', + args = { + '${workspaceFolder}/dist/index.js', + }, + outFiles = { + '${workspaceFolder}/dist/*.js', + }, + resolveSourceMapLocations = { + '${workspaceFolder}/dist/**/*.js', + '${workspaceFolder}/dist/*.js', + }, + rootPath = '${workspaceFolder}', + cwd = '${workspaceFolder}', + sourceMaps = true, + skipFiles = { '/**' }, + protocol = 'inspector', + console = 'integratedTerminal', + }, + { + name = 'Compile & Debug Main Process (Electron)', + type = custom_adapter, + request = 'launch', + preLaunchTask = 'npm run build-ts', + program = '${workspaceFolder}/node_modules/.bin/electron', + args = { + '${workspaceFolder}/dist/index.js', + }, + outFiles = { + '${workspaceFolder}/dist/*.js', + }, + resolveSourceMapLocations = { + '${workspaceFolder}/dist/**/*.js', + '${workspaceFolder}/dist/*.js', + }, + rootPath = '${workspaceFolder}', + cwd = '${workspaceFolder}', + sourceMaps = true, + skipFiles = { '/**' }, + protocol = 'inspector', + console = 'integratedTerminal', + }, + } + end + end, }