From 3ba8b1699cfabe5f58e37c55e674032bf33106e6 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 1 Oct 2025 12:43:48 -0500 Subject: [PATCH] Adjust neovim key mappings and themes, add initial dap configs --- README.md | 4 +- .../.config/nvim/lua/colorscheme_settings.lua | 32 ++--- src_files/.config/nvim/lua/key_mappings.lua | 56 +++++--- .../nvim/lua/plugins_lazy/colorschemes.lua | 26 +++- .../.config/nvim/lua/plugins_lazy/dap.lua | 128 ++++++++++++++++++ .../.config/nvim/lua/plugins_lazy/lsp.lua | 7 +- src_files/.config/nvim/lua/settings.lua | 2 +- 7 files changed, 209 insertions(+), 46 deletions(-) create mode 100644 src_files/.config/nvim/lua/plugins_lazy/dap.lua diff --git a/README.md b/README.md index 1a110dd..3b8d6ae 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ #### specific prereqs, macos - install the package manager, [homebrew](https://brew.sh/) - for aerospace window manager, have only 1 workspace/desktop -- manual settings, refer to [macos-system-settings](ref/macos-system-settings.txt) +- manual settings, refer to [ref/macos-system-settings](ref/macos-system-settings.txt) ### script run - (run these commands from repo's root dir) @@ -19,7 +19,7 @@ - NOTE: the `copy_dotfiles.sh` script may not work if ENV vars are not set as expected ### after script run -- complete manual actions specified in [ref/post-run-manual.md](ref/post-run-manual.md) +- complete manual actions specified in [ref/post-run-manual](ref/post-run-manual.md) ### todo items - choose window manager for linux, then configure diff --git a/src_files/.config/nvim/lua/colorscheme_settings.lua b/src_files/.config/nvim/lua/colorscheme_settings.lua index 9a85b23..7d3503d 100644 --- a/src_files/.config/nvim/lua/colorscheme_settings.lua +++ b/src_files/.config/nvim/lua/colorscheme_settings.lua @@ -1,25 +1,17 @@ +local defaultColorScheme = "tokyodark" + function SetColorSchemeWrapper(scheme) - scheme = scheme or "tokyonight-night" + scheme = scheme or defaultColorScheme vim.cmd.colorscheme(scheme) - - -- Allow for transparency -- TODO: do i actually want transparency? - vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) - vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) end -SetColorSchemeWrapper("tokyonight-night") --- TODO: get this working as desired for different file types --- local dsGroup = vim.api.nvim_create_augroup("DavidStandardGroup", { clear = false }) --- vim.api.nvim_create_autocmd('BufEnter', { --- group = dsGroup, --- callback = function() --- if vim.bo.filetype == "zig" then --- pcall(SetColorSchemeWrapper, "tokyonight-night") --- else --- pcall(SetColorSchemeWrapper, "rose-pine-main") --- pcall(SetColorSchemeWrapper, "slate") --- pcall(SetColorSchemeWrapper, "sorbet") --- end --- end --- }) +SetColorSchemeWrapper(defaultColorScheme) +-- +-- SetColorSchemeWrapper("tokyodark") +-- SetColorSchemeWrapper("tokyonight-night") +-- SetColorSchemeWrapper("bamboo-vulgaris") +-- SetColorSchemeWrapper("rose-pine-main") +-- SetColorSchemeWrapper("gruvbox") +-- SetColorSchemeWrapper("slate") +-- SetColorSchemeWrapper("sorbet") diff --git a/src_files/.config/nvim/lua/key_mappings.lua b/src_files/.config/nvim/lua/key_mappings.lua index d132dae..35fef2a 100644 --- a/src_files/.config/nvim/lua/key_mappings.lua +++ b/src_files/.config/nvim/lua/key_mappings.lua @@ -61,6 +61,36 @@ vim.keymap.set("n", "", [[l]]) -- vim.keymap.set("n", "k", "lnextzz") -- vim.keymap.set("n", "j", "lprevzz") +------------------------------------------------------------------------------------------ +-- debugger and debugging ui + +local dap = require("dap") +vim.keymap.set("n", "bc", dap.continue, { desc = "debug: continue" }) +vim.keymap.set("n", "bi", dap.step_into, { desc = "debug: step into" }) +vim.keymap.set("n", "bo", dap.step_over, { desc = "debug: step over" }) +vim.keymap.set("n", "bu", dap.step_out, { desc = "debug: step out" }) +vim.keymap.set("n", "blb", dap.list_breakpoints, { desc = "debug: list breakpoints" }) +vim.keymap.set("n", "bt", dap.toggle_breakpoint, { desc = "debug: toggle breakpoint" }) +vim.keymap.set("n", "bb", dap.set_breakpoint, { desc = "debug: set breakpoint" }) + +vim.keymap.set("n", "bB", function() + dap.set_breakpoint(vim.fn.input("breakpoint condition: ")) +end, { desc = "debug: set conditional breakpoint" }) + +vim.keymap.set("n", "bq", function() + dap.terminate() require("dapui").close() require("nvim-dap-virtual-text").toggle() +end, { desc = "debug: quit debugger" }) + +-- TODO: decide if i want these or others, add if so +-- vim.keymap.set("n", "zxcv", dap.repl.open, { desc = "open REPL" }) +-- vim.keymap.set("n", "zxcv", dap.run_last, { desc = "run last" }) +-- vim.keymap.set("n", "zxcv", dap.set_exception_breakpoints({ "all" }), { desc = "set exception breakpoints" }) +-- local dapWidgets = require('dap.ui.widgets') +-- vim.keymap.set({'n', 'v'}, 'zxcv', dapWidgets.hover) +-- vim.keymap.set({'n', 'v'}, 'zxcv', dapWidgets.preview) +-- vim.keymap.set('n', 'zxcv', function() dapWidgets.centered_float(dapWidgets.frames) end) +-- vim.keymap.set('n', 'zxcv', function() dapWidgets.centered_float(dapWidgets.scopes) end) + ------------------------------------------------------------------------------------------ -- lsp @@ -85,28 +115,20 @@ kmgAutocmd('LspAttach', { -- plugins -- telescope -local builtin = require('telescope.builtin') +local tscBuiltin = require('telescope.builtin') local custom_tscope_grep = function() - builtin.grep_string({ search = vim.fn.input("grep > ")}) + tscBuiltin.grep_string({ search = vim.fn.input("grep > ")}) end -vim.keymap.set('n', 'ft', builtin.live_grep, { - desc = 'Telescope find text (live_grep)' -}) -vim.keymap.set('n', 'fT', custom_tscope_grep, { - desc = 'Telescope find text (grep_string)' -}) -vim.keymap.set('n', 'fg', builtin.git_files, { - desc = 'Telescope find git-tracked files' -}) -vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) -vim.keymap.set('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) -vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) +vim.keymap.set('n', 'ft', tscBuiltin.live_grep, { desc = 'tscope find text, live_grep' }) +vim.keymap.set('n', 'fT', custom_tscope_grep, { desc = 'tscope find text, custom grep' }) +vim.keymap.set('n', 'fg', tscBuiltin.git_files, { desc = 'tscope find git-tracked files' }) +vim.keymap.set('n', 'ff', tscBuiltin.find_files, { desc = 'tscope find files' }) +vim.keymap.set('n', 'fb', tscBuiltin.buffers, { desc = 'tscope buffers' }) +vim.keymap.set('n', 'fh', tscBuiltin.help_tags, { desc = 'tscope help tags' }) -- harpoon local harpoon = require("harpoon") -vim.keymap.set("n", "hl", function() - harpoon.ui:toggle_quick_menu(harpoon:list()) -end) +vim.keymap.set("n", "hl", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) vim.keymap.set("n", "ha", function() harpoon:list():add() end) vim.keymap.set("n", "hA", function() harpoon:list():prepend() end) vim.keymap.set("n", "hn", function() harpoon:list():next() end) diff --git a/src_files/.config/nvim/lua/plugins_lazy/colorschemes.lua b/src_files/.config/nvim/lua/plugins_lazy/colorschemes.lua index bf5c0cb..2ee9af9 100644 --- a/src_files/.config/nvim/lua/plugins_lazy/colorschemes.lua +++ b/src_files/.config/nvim/lua/plugins_lazy/colorschemes.lua @@ -3,6 +3,7 @@ return { { "ellisonleao/gruvbox.nvim", name = "gruvbox", + -- lazy = false, -- priority = 1000, opts = { terminal_colors = true, -- add neovim terminal colors @@ -45,7 +46,28 @@ return { colors.hint = colors.orange colors.error = "#ff0000" colors.fg_gutter = "#9098B8" - end + end, }, - } + }, + { + "tiagovla/tokyodark.nvim", + lazy = false, + priority = 1000, + opts = { + custom_highlights = function(highlights, _palette) + highlights.Comment['fg'] = "#8a9097" + highlights.LineNr['fg'] = "#8088A8" + return highlights + end, + }, + }, + { + 'ribru17/bamboo.nvim', + -- lazy = false, + -- priority = 1000, + config = function() + require('bamboo').setup { } + require('bamboo').load() + end, + }, } diff --git a/src_files/.config/nvim/lua/plugins_lazy/dap.lua b/src_files/.config/nvim/lua/plugins_lazy/dap.lua new file mode 100644 index 0000000..84fff75 --- /dev/null +++ b/src_files/.config/nvim/lua/plugins_lazy/dap.lua @@ -0,0 +1,128 @@ +return { + { + "mfussenegger/nvim-dap", + config = function() + local dap = require("dap") + dap.set_log_level("DEBUG") + + dap.adapters.codelldb = { + type = "executable", + command = "codelldb", + } + + local dapConfigArgsInput = function() + return vim.split(vim.fn.input("args: "), " ") + end + + local dapConfigProgramSelect = function() + local co = coroutine.running() + + require('telescope.pickers').new({}, { + prompt_title = "debug executable", + finder = require('telescope.finders').new_oneshot_job({ + "find", ".", "-type", "f", "-perm", "+100", "-exec", "realpath", "{}", "+" + }), + sorter = require('telescope.sorters').get_fuzzy_file(), + attach_mappings = function(prompt_bufnr, _map) + local tscopeActions = require('telescope.actions') + tscopeActions.select_default:replace(function() + tscopeActions.close(prompt_bufnr) + local chosenFile = require('telescope.actions.state').get_selected_entry().value + coroutine.resume(co, chosenFile) + end) + return true + end, + }):find() + + return coroutine.yield() + end + + dap.configurations.cpp = { + { + name = "default c/cpp: launch", + type = "codelldb", + request = "launch", + cwd = "${workspaceFolder}", + program = dapConfigProgramSelect, + stopOnEntry = false, + }, + -- { + -- name = "default c/cpp: attach to lldbserver :1234", + -- type = "codelldb", + -- request = "attach", + -- cwd = "${workspaceFolder}", + -- program = dapConfigProgramSelect, + -- MIMode = "lldb", + -- miDebuggerServerAddress = "localhost:1234", + -- miDebuggerPath = "/usr/bin/lldb", + -- }, + } + dap.configurations.c = dap.configurations.cpp + dap.configurations.go = { + { + name = "go: launch", + type = "delve", + request = "launch", + program = dapConfigProgramSelect, + args = dapConfigArgsInput, + outputMode = "remote", + }, + { + name = "go: launch current file", + type = "delve", + request = "launch", + program = "${file}", + args = dapConfigArgsInput, + outputMode = "remote", + }, + } + end, + }, + { + "rcarriga/nvim-dap-ui", + dependencies = { + "mfussenegger/nvim-dap", + "nvim-neotest/nvim-nio", + }, + config = function() + local dap = require("dap") + local dap_ui = require("dapui") + dap_ui.setup() + dap.listeners.before.attach.dapui_config = function() dap_ui.open() end + dap.listeners.before.launch.dapui_config = function() dap_ui.open() end + dap.listeners.before.event_terminated.dapui_config = function() dap_ui.close() end + dap.listeners.before.event_exited.dapui_config = function() dap_ui.close() end + end, + }, + { + "jay-babu/mason-nvim-dap.nvim", -- TODO: here, or handle manually outside of neovim? + dependencies = { + "williamboman/mason.nvim", + "mfussenegger/nvim-dap", + "neovim/nvim-lspconfig", + }, + config = function() + require("mason-nvim-dap").setup({ + ensure_installed = { + "codelldb", + -- "delve", + }, + automatic_installation = true, + handlers = { + function(config) require("mason-nvim-dap").default_setup(config) end, + }, + }) + end, + }, + { + "theHamsta/nvim-dap-virtual-text", + dependencies = { + "mfussenegger/nvim-dap", + }, + -- TODO: disabled by default, keymapping to toggle + -- config = function() + -- local dap_virtual_text = require("nvim-dap-virtual-text") + -- dap_virtual_text.setup() + -- end, + }, +} diff --git a/src_files/.config/nvim/lua/plugins_lazy/lsp.lua b/src_files/.config/nvim/lua/plugins_lazy/lsp.lua index 6d1c4a4..700cf16 100644 --- a/src_files/.config/nvim/lua/plugins_lazy/lsp.lua +++ b/src_files/.config/nvim/lua/plugins_lazy/lsp.lua @@ -9,9 +9,8 @@ return { "hrsh7th/cmp-path", "hrsh7th/cmp-cmdline", "hrsh7th/nvim-cmp", - -- snippets, using luasnip for now - "L3MON4D3/LuaSnip", - "saadparwaiz1/cmp_luasnip", + "L3MON4D3/LuaSnip", -- snippets, using luasnip for now + "saadparwaiz1/cmp_luasnip", -- snippets, using luasnip for now }, config = function() @@ -115,7 +114,7 @@ return { }, }) - -- TODO: enables needed? or does neovim/nvim-lspconfig cover by default? + -- TODO: needed? seems like neovim/nvim-lspconfig covers by default -- vim.lsp.enable('clangd') -- vim.lsp.enable('ruby_lsp') -- vim.lsp.enable('standardrb') diff --git a/src_files/.config/nvim/lua/settings.lua b/src_files/.config/nvim/lua/settings.lua index 6107f22..f7ef471 100644 --- a/src_files/.config/nvim/lua/settings.lua +++ b/src_files/.config/nvim/lua/settings.lua @@ -40,5 +40,5 @@ vim.opt.undofile = true vim.g.netrw_browse_split = 0 vim.g.netrw_preview = 1 vim.g.netrw_banner = 0 -vim.g.netrw_winsize = 25 +vim.g.netrw_winsize = 50