diff --git a/lua/ward/plugins/bufdel.lua b/lua/ward/plugins/bufdel.lua new file mode 100644 index 0000000..8d61bac --- /dev/null +++ b/lua/ward/plugins/bufdel.lua @@ -0,0 +1,9 @@ +--$ This allows buffers to be closed but not the window +--$ URL: https://github.com/ojroques/nvim-bufdel +return { + "ojroques/nvim-bufdel", + version = "*", + config = function() + vim.keymap.set("n", "bc", vim.cmd.BufDel) + end, +} diff --git a/lua/ward/plugins/dap-ui.lua b/lua/ward/plugins/dap-ui.lua index 3ed800f..845f1d4 100644 --- a/lua/ward/plugins/dap-ui.lua +++ b/lua/ward/plugins/dap-ui.lua @@ -17,6 +17,16 @@ return { dap.listeners.before.event_exited.dapui_config = function() dapui.close() end - vim.keymap.set('n', 'dd', function() require('dapui').toggle() end) + + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserDapUIConfig", {}), + callback = function(event) + local wk = require("which-key") + wk.add({ + { "dd", desc = "Toggle DAP UI" }, + }) + vim.keymap.set('n', 'dd', function() require('dapui').toggle() end) + end, + }) end, } diff --git a/lua/ward/plugins/dap.lua b/lua/ward/plugins/dap.lua index aebe6fa..8a8b1fe 100644 --- a/lua/ward/plugins/dap.lua +++ b/lua/ward/plugins/dap.lua @@ -1,4 +1,3 @@ ----@type NvPluginSpec -- NOTE: Debug Adapter Protocol -- URL: https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation return { @@ -7,50 +6,58 @@ return { -- NOTE: Check out this for guide vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DiagnosticSignError", linehl = "", numhl = "" }) - local wk = require("which-key") - wk.add({ - {"d", group = "DAP"}, - {"dd", desc = "Toggle DAP UI"}, - {"db", desc = "Toggle breakpoint"}, - {"dB", desc = "Set breakpoint"}, - {"dm", desc = "message point"}, - {"dr", desc = "Open repl"}, - {"dl", desc = "Run last"}, - {"dh", desc = "Hover widgets"}, - {"dp", desc = "Preview widgets"}, - {"df", desc = "Float frames"}, - {"ds", desc = "Float scopes"}, - {"d", desc = "Debug start/continue"}, - {"d", desc = "Debug step over"}, - {"d", desc = "Debug step into"}, - {"d", desc = "Debug step out"}, + -- These dap keybinds only load when an LSP is attatched to the buffer. + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserDapConfig", {}), + callback = function(event) + local wk = require("which-key") + wk.add({ + { "d", group = "DAP" }, + { "dd", desc = "Toggle DAP UI" }, + { "db", desc = "Toggle breakpoint" }, + { "dB", desc = "Set breakpoint" }, + { "dm", desc = "message point" }, + { "dr", desc = "Open repl" }, + { "dl", desc = "Run last" }, + { "dh", desc = "Hover widgets" }, + { "dp", desc = "Preview widgets" }, + { "df", desc = "Float frames" }, + { "ds", desc = "Float scopes" }, + { "d", desc = "Debug start/continue" }, + { "d", desc = "Debug step over" }, + { "d", desc = "Debug step into" }, + { "d", desc = "Debug step out" }, + }) + vim.keymap.set('n', '', function() require('dap').continue() end) + vim.keymap.set('n', '', function() require('dap').step_over() end) + vim.keymap.set('n', '', function() require('dap').step_into() end) + vim.keymap.set('n', '', function() require('dap').step_out() end) + vim.keymap.set('n', 'db', function() require('dap').toggle_breakpoint() end) + vim.keymap.set('n', 'dB', function() require('dap').set_breakpoint() end) + vim.keymap.set('n', 'dm', + function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end) + vim.keymap.set('n', 'dr', function() require('dap').repl.open() end) + vim.keymap.set('n', 'dl', function() require('dap').run_last() end) + vim.keymap.set({ 'n', 'v' }, 'dh', function() + require('dap.ui.widgets').hover() + end) + vim.keymap.set({ 'n', 'v' }, 'dp', function() + require('dap.ui.widgets').preview() + end) + vim.keymap.set('n', 'df', function() + local widgets = require('dap.ui.widgets') + widgets.centered_float(widgets.frames) + end) + vim.keymap.set('n', 'ds', function() + local widgets = require('dap.ui.widgets') + widgets.centered_float(widgets.scopes) + end) + end, }) - vim.keymap.set('n', '', function() require('dap').continue() end) - vim.keymap.set('n', '', function() require('dap').step_over() end) - vim.keymap.set('n', '', function() require('dap').step_into() end) - vim.keymap.set('n', '', function() require('dap').step_out() end) - vim.keymap.set('n', 'db', function() require('dap').toggle_breakpoint() end) - vim.keymap.set('n', 'dB', function() require('dap').set_breakpoint() end) - vim.keymap.set('n', 'dm', - function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end) - vim.keymap.set('n', 'dr', function() require('dap').repl.open() end) - vim.keymap.set('n', 'dl', function() require('dap').run_last() end) - vim.keymap.set({ 'n', 'v' }, 'dh', function() - require('dap.ui.widgets').hover() - end) - vim.keymap.set({ 'n', 'v' }, 'dp', function() - require('dap.ui.widgets').preview() - end) - vim.keymap.set('n', 'df', function() - local widgets = require('dap.ui.widgets') - widgets.centered_float(widgets.frames) - end) - vim.keymap.set('n', 'ds', function() - local widgets = require('dap.ui.widgets') - widgets.centered_float(widgets.scopes) - end) + + -- configure C/C++ -- NOTE: Make sure to install the needed files/exectubles through mason local dap = require("dap") dap.adapters.gdb = { @@ -65,7 +72,20 @@ return { type = "gdb", request = "launch", program = function() - return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + local storedValue = vim.g['mydap_program'] + local preFill = vim.fn.getcwd() .. "/" + if storedValue ~= nil then preFill = storedValue end + local newValue = vim.fn.input("Path to executable: ", preFill, "file") + vim.g['mydap_program'] = newValue + return newValue + end, + args = function() + local storedValue = vim.g['mydap_args'] + local preFill = "" + if storedValue ~= nil then preFill = storedValue end + local newValue = vim.fn.input("Arguements: ", preFill) + vim.g['mydap_args'] = newValue + return newValue end, cwd = "${workspaceFolder}", stopAtBeginningOfMainSubprogram = false, diff --git a/lua/ward/plugins/render-markdown.lua b/lua/ward/plugins/render-markdown.lua new file mode 100644 index 0000000..0d33116 --- /dev/null +++ b/lua/ward/plugins/render-markdown.lua @@ -0,0 +1,12 @@ +---@type NvPluginSpec +-- NOTE: This plugin activly shows the result of your markdown while you're typing it +-- URL: https://https://github.com/MeanderingProgrammer/render-markdown.nvim +return { + 'MeanderingProgrammer/render-markdown.nvim', + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + ---@module 'render-markdown' + ---@type render.md.UserConfig + opts = {}, +}