diff --git a/lua/core/remap.lua b/lua/core/remap.lua index eac099d..51b6888 100644 --- a/lua/core/remap.lua +++ b/lua/core/remap.lua @@ -22,16 +22,6 @@ vim.api.nvim_set_keymap("n", "<leader>bd", "<cmd>bd<cr>", {}) vim.api.nvim_set_keymap("n", "<leader>bn", "<cmd>bnext<cr>", {}) vim.api.nvim_set_keymap("n", "<leader>bp", "<cmd>bprevious<cr>", {}) --- quickfix and locationlist -vim.api.nvim_set_keymap("n", "<S-h>", "<cmd>cnext<cr>zz", {}) -vim.api.nvim_set_keymap("n", "<S-l>", "<cmd>cprev<cr>zz", {}) -vim.api.nvim_set_keymap("n", "<leader>h", "<cmd>lnext<cr>zz", {}) -vim.api.nvim_set_keymap("n", "<leader>l", "<cmd>lprev<cr>zz", {}) -vim.api.nvim_set_keymap("n", "<leader>L", "<cmd>lcl<cr>", {}) -vim.api.nvim_set_keymap("n", "<leader>Q", "<cmd>cw<cr>", {}) -vim.api.nvim_set_keymap("n", "<leader>q", "<cmd>ccl<cr>", {}) - - -- moving visual blocks vim.api.nvim_set_keymap("v", "J", ":m '>+1<cr>gv=gv", {}) vim.api.nvim_set_keymap("v", "K", ":m '<-2<cr>gv=gv", {}) @@ -51,10 +41,6 @@ vim.api.nvim_set_keymap("n", "<leader>Y", "\"+Y", {}) -- paste from system clipboard vim.api.nvim_set_keymap("n", "<leader>P", "\"+p", {}) --- make current file (un)executable -vim.api.nvim_set_keymap("n", "<leader>mx", ":exec 'w'<cr> <bar> <cmd>!chmod +x %<cr>", { silent = true }) -vim.api.nvim_set_keymap("n", "<leader>mX", ":exec 'w'<cr> <bar> <cmd>!chmod -x %<cr>", { silent = true }) - -- <leader><leader> for fast save vim.api.nvim_set_keymap("n", "<leader><leader>", ":exec 'w'<cr>", {silent = true}) diff --git a/lua/plugin/dap.lua b/lua/plugin/dap.lua new file mode 100644 index 0000000..547b76f --- /dev/null +++ b/lua/plugin/dap.lua @@ -0,0 +1,100 @@ +return { + { + "mfussenegger/nvim-dap", + dependencies = { + "igorlfs/nvim-dap-view", + opts = { + windows = { + terminal = { + hide = { "c" }, + start_hidden = true, + }, + } + } + }, + config = function() + local dap, dv = require("dap"), require("dap-view") + + dap.set_log_level("DEBUG") + vim.keymap.set("n", "<Leader>Dc", dap.continue, { desc = "Debug: Continue" }) + vim.keymap.set("n", "<Leader>Dsn", dap.step_over, { desc = "Debug: Step Over (Next)" }) + vim.keymap.set("n", "<Leader>Dsi", dap.step_into, { desc = "Debug: Step Into" }) + vim.keymap.set("n", "<Leader>Dso", dap.step_out, { desc = "Debug: Step Out" }) + vim.keymap.set("n", "<Leader>B", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" }) + vim.keymap.set("n", "<Leader>Dv", "<cmd>DapViewToggle<cr>", { desc = "Debug: Toggle Debug View" }) + + dap.listeners.before.attach["dap-view-config"] = function() + dv.open() + end + dap.listeners.before.launch["dap-view-config"] = function() + dv.open() + end + dap.listeners.before.event_terminated["dap-view-config"] = function() + dv.close() + end + dap.listeners.before.event_exited["dap-view-config"] = function() + dv.close() + end + + dap.adapters.gdb = { + type = "executable", + command = "gdb", + args = { "--interpreter=dap", "--eval-command", "set print pretty on" } + } + dap.configurations.c = { + { + name = "Launch", + type = "gdb", + request = "launch", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = "${workspaceFolder}", + stopAtBeginningOfMainSubprogram = false, + }, + { + name = "Select and attach to process", + type = "gdb", + request = "attach", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + pid = function() + local name = vim.fn.input('Executable name (filter): ') + return require("dap.utils").pick_process({ filter = name }) + end, + cwd = '${workspaceFolder}' + }, + { + name = 'Attach to gdbserver :1234', + type = 'gdb', + request = 'attach', + target = 'localhost:1234', + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = '${workspaceFolder}' + }, + } + end, + }, + { + "jay-babu/mason-nvim-dap.nvim", + dependencies = { + "mfussenegger/nvim-dap", + "williamboman/mason.nvim", + }, + config = function() + require('mason-nvim-dap').setup({ + handlers = { + function(config) + -- all sources with no handler get passed here + + -- Keep original functionality + require('mason-nvim-dap').default_setup(config) + end, + }, + }) + end, + } +}