diff --git a/lua/configs/dap.lua b/lua/configs/dap.lua index 88a1de0..fe2a15a 100644 --- a/lua/configs/dap.lua +++ b/lua/configs/dap.lua @@ -28,6 +28,7 @@ dap.adapters.cppdbg = { id = 'cppdbg', type = 'executable', command = '/nix/store/gwags66qlqr6qmblwp0v6crkb6ca2qr1-vscode-extension-ms-vscode-cpptools-1.22.2/share/vscode/extensions/ms-vscode.cpptools/debugAdapters/bin/OpenDebugAD7', + -- NIXPKGS_ALLOW_UNFREE=1 nix build --impure --no-link --print-out-paths nixpkgs#vscode-extensions.ms-vscode.cpptools cwd = "${workspaceFolder}", } diff --git a/lua/mappings.lua b/lua/mappings.lua index b04d219..5685114 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -46,6 +46,17 @@ for _, key in ipairs({"A", "Z", "E", "Q", "S", "D"}) do s({ 'n' }, "", "g'" .. key, { desc = "Jump to mark " .. key }) end +function copy_filename_and_line () + local filename = vim.fn.expand("%:t") + local line = vim.fn.line(".") + local text = filename .. ":" .. line + vim.fn.setreg("+", text) + vim.print(text) +end + +s({ 'n' }, "y", copy_filename_and_line, { desc = "Copy filename and line"}) + + function moveCursorToMouse() local mousePos = vim.fn.getmousepos() vim.fn.setpos(".", { 0, mousePos.line, mousePos.column, 0 }) @@ -55,7 +66,7 @@ function hover() if dap.session() then dapui.eval() else - vim.lsp.buf.hover() + vim.lsp.buf.signature_help() end end @@ -69,17 +80,30 @@ vim.api.nvim_create_autocmd('LspAttach', { s('n', 'e', vim.diagnostic.open_float, { buffer = ev.buf, desc = "Show diagnostics" }) s('n', '[[', vim.diagnostic.goto_prev, { buffer = ev.buf, desc = "Previous diagnostic" }) s('n', ']]', vim.diagnostic.goto_next, { buffer = ev.buf, desc = "Next diagnostic" }) + s( 'n', ']e', + function () + vim.diagnostic.goto_next({severity=vim.diagnostic.severity.ERROR, wrap = true}) + end, + { buffer = ev.buf, desc = "Next error" } + ) + s( 'n', '[e', + function () + vim.diagnostic.goto_prev({severity=vim.diagnostic.severity.ERROR, wrap = true}) + end, + { buffer = ev.buf, desc = "Previous error" } + ) s('n', 'q', vim.diagnostic.setloclist, { buffer = ev.buf, desc = "Set location list" }) s('n', 'gD', vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Goto declaration" }) s('n', 'gd', telescope.lsp_definitions, { buffer = ev.buf, desc = "Goto definition" }) - s( {'n', 'v'}, 'K', hover, { buffer = ev.buf, desc = "Hover" }) + s( {'n', 'v'}, 'K', vim.lsp.buf.hover, { buffer = ev.buf, desc = "lsp Hover" }) + s( {'n', 'v'}, '', hover, { buffer = ev.buf, desc = "dap eval" }) s( {'n', 'v'}, '', - function() moveCursorToMouse() hover() end, + function() moveCursorToMouse() vim.lsp.buf.hover() end, { buffer = ev.buf, desc = "Hover" } ) s('n', 'gi', telescope.lsp_implementations, { buffer = ev.buf, desc = "Goto implementation" }) - s('n', '', vim.lsp.buf.signature_help, { buffer = ev.buf, desc = "Signature help" }) + -- s('n', '', vim.lsp.buf.signature_help, { buffer = ev.buf, desc = "Signature help" }) s('n', 'D', vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Goto type definition" }) s('n', 'ra', vim.lsp.buf.rename, { buffer = ev.buf, desc = "Rename" }) s({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Code action" }) @@ -103,15 +127,14 @@ function continue() end end -s('n', 'b', dap.toggle_breakpoint, { desc = "Toggle breakpoint" }) -s('n', 'B', function() - local condition = vim.fn.input("Condition: ", "", "customlist,Complete") - dap.set_breakpoint(condition) -end, { desc = "Add conditional breakpoint" }) --- watchpoint +local pb = require('persistent-breakpoints.api') +s('n', 'b', pb.toggle_breakpoint, { desc = "Toggle breakpoint" }) +s('n', 'l', pb.set_log_point, { desc = "Set logpoint" }) +s('n', 'B', pb.set_conditional_breakpoint , { desc = "Add conditional breakpoint" }) s('n', 'w', dapui.elements.watches.add, { desc = "Add watch" }) s('v', 'w', dapui.elements.watches.add, { desc = "Add watch" }) s('n', '', dapui.toggle, { desc = "Toggle debygger UI" }) +s('n', '', dap.pause, { desc = "Pause" }) s('n', '', continue, { desc = "Continue" }) s('n', '', dap.restart, { desc = "Restart" }) s('n', '', dap.step_into, { desc = "Step into" }) diff --git a/lua/plugins.lua b/lua/plugins.lua index 14286f4..a2d6dea 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -224,32 +224,21 @@ local plugins = { dependencies = { 'nvim-treesitter/nvim-treesitter' }, opts = { use_default_keymaps = false, - max_join_length = 1200, + max_join_length = 36000, }, }, { "rmagatti/auto-session", - dependencies = { - "niuiic/dap-utils.nvim", - dependencies = { - "niuiic/core.nvim", - "mfussenegger/nvim-dap", - "rcarriga/nvim-dap-ui", - "nvim-telescope/telescope.nvim", - } - }, config = function() require("auto-session").setup({ log_level = "error", pre_save_cmds = { function() - require("dap-utils").store_breakpoints("./.breakpoints") vim.api.nvim_exec_autocmds('User', {pattern = 'SessionSavePre'}) end }, post_restore_cmds = { function() - require("dap-utils").restore_breakpoints("./.breakpoints") end }, pre_delete_cmds = { @@ -393,6 +382,12 @@ local plugins = { } } }) + vim.api.nvim_create_autocmd("User", { + pattern = "NeogitStatusRefreshed", + callback = function() + vim.cmd("set autoread | checktime") + end + }) end }, { @@ -459,7 +454,9 @@ local plugins = { "theHamsta/nvim-dap-virtual-text", lazy = false, dependencies = { "mfussenegger/nvim-dap", "nvim-treesitter/nvim-treesitter" }, - opts = {} + opts = { + virt_text_pos = 'eol' + } }, { 'echasnovski/mini.align', @@ -495,6 +492,11 @@ local plugins = { uncrustify = { prepend_args = { "-c", "./scripts/uncrustify.cfg" }, }, + ["clang-format"] = { + prepend_args = { + "--style", "file:" .. vim.fn.expand("~/clang-format.yaml") + }, + } }, formatters_by_ft = { @@ -514,6 +516,20 @@ local plugins = { end require("conform").format({ async = true, lsp_format = "fallback", range = range }) end, { range = true }) + + -- vim.api.nvim_create_user_command("FormatClang", function(args) + -- local range = nil + -- if args.count ~= -1 then + -- local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] + -- range = { + -- start = { args.line1, 0 }, + -- ["end"] = { args.line2, end_line:len() }, + -- } + -- end + -- require("conform").format({ formatters = { "clang-format" }, range = range }) + -- end, { range = true }) + -- + -- vim.keymap.set({"v"}, "fl", ":FormatClang", { desc = "Format with clang"}) end }, {