From d2485ea96b846e96380a20ddea97a18da231a018 Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Tue, 8 Sep 2026 11:39:49 -0400 Subject: [PATCH 01/15] JESUS EFFING CHRIST (read desc or look at diffs) after like a billion hours of troubleshooting BS vs launch stuff from launch.json and redirecting it to other debugger adapters because microsoft sucks and windows blows, I FINALY managed to get debugging in neovim from vscode launcher stuff --- lua/config/keymaps.lua | 3 +- lua/plugins/debugger.lua | 201 +++++++++++++++++++++++++++++++++++---- 2 files changed, 185 insertions(+), 19 deletions(-) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 8818478..efefa1b 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -41,7 +41,8 @@ vim.keymap.set("n", "f", ":lua require('conform').format()") local status_ok, dap = pcall(require, "dap") if status_ok then vim.keymap.set("n", "cdb", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" }) - vim.keymap.set("n", "cdc", dap.continue, { desc = "Debug: Start/Continue" }) + --vim.keymap.set("n", "cdc", dap.continue, { desc = "Debug: Start/Continue" }) + -- new start debug keymap in debugger.lua vim.keymap.set("n", "cdi", dap.step_into, { desc = "Debug: Step Into" }) vim.keymap.set("n", "cdo", dap.step_over, { desc = "Debug: Step Over" }) vim.keymap.set("n", "cdO", dap.step_out, { desc = "Debug: Step Out" }) diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index 5dad865..ee2058f 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -1,3 +1,109 @@ + +local function fzf_pick_executable() + return coroutine.create(function(coro) + local current_cwd = vim.fn.getcwd():gsub("\\", "/") + + require("fzf-lua").files({ + cwd = current_cwd, + cmd = "fd --type x --hidden --no-ignore", + + previewer = false, + header = false, + prompt = "Select Executable ❯ ", + + winopts = { + title = " Select Executable ", + title_pos = "center", + height = 0.40, + width = 0.60, + }, + + actions = { + ["default"] = function(selected) + if selected and selected[1] then + -- 1. Strip icons and formatting spaces to isolate the file string + local entry = require("fzf-lua.path").entry_to_file(selected[1], { cwd = current_cwd }) + + -- 2. Automatically resolve it to an absolute path (handles relative or absolute safely) + local full_path = vim.fn.fnamemodify(entry.path, ":p") + + -- 3. Clean up slashes and hand it to DAP + coroutine.resume(coro, full_path:gsub("\\", "/")) + else + coroutine.resume(coro, vim.fn.empty()) + end + end + } + }) + end) +end + + +local function start_debug_session() + + + local dap = require("dap") + -- 3. Platform-agnostic Launcher Configuration + if not is_windows then + dap.configurations.cpp = { + { + name = "Launch file", + type = "codelldb", + request = "launch", + program = fzf_pick_executable, + cwd = '${workspaceFolder}', + stopOnEntry = false, + args = {}, + }, + } + else + local launch_json = vim.fn.getcwd() .. "/.vscode/launch.json" + if vim.fn.filereadable(launch_json) == 1 then + dap.configurations.cpp = {} + -- 1. CRUCIAL FIX: Alias the adapters directly so nvim-dap doesn't complain about a missing engine + --if dap.adapters.cppdbg then + -- dap.adapters.cppvsdbg = dap.adapters.cppdbg + --elseif dap.adapters.codelldb then + -- dap.adapters.cppvsdbg = dap.adapters.codelldb + --end + -- 2. Map types inside launch.json to your C++ filetypes + vscode.load_launchjs(nil, { + cppvsdbg = { "cpp", "c" }, + cppdbg = { "cpp", "c" }, + codelldb = { "cpp", "c" }, + }) + else + -- No launch.json exists. Re-inject your FZF picker template rules + dap.configurations.cpp = { + { + name = "Launch file", + type = "cppdbg", + request = "launch", + program = fzf_pick_executable, + cwd = "${workspaceFolder}", + stopOnEntry = false, + + -- Crucial configurations for Microsoft cpptools: + -- On Windows, this automatically uses MinGW/MSVC underlying debugger engines + MIMode = is_windows and "gdb" or "lldb", + miDebuggerPath = is_windows and "gdb.exe" or nil, -- Uses system path for gdb on Windows + + setupCommands = { + { + text = "-enable-pretty-printing", + description = "enable pretty printing", + ignoreFailures = false, + }, + }, + }, + } + end + end + dap.continue() +end + +vim.keymap.set("n", "cdc", start_debug_session, { desc = "Debug: Start/Continue with Smart Config" }) + return { "mfussenegger/nvim-dap", dependencies = { @@ -27,36 +133,95 @@ return { dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end -- Step 2 & 3 configurations will go here... - -- Define the adapter connection + -- 1. Detect operating system + local is_windows = vim.fn.has("win32") == 1 + local ext = is_windows and ".exe" or "" + + -- 2. Platform-agnostic CodeLLDB Adapter setup + local mason_registry = require("mason-registry") + local codelldb = mason_registry.get_package("codelldb") + local extension_path = codelldb:get_install_path() .. "/extension/" + + -- CodeLLDB executable is in different subfolders depending on Mason's package version + local codelldb_path = extension_path .. "adapter/codelldb" .. ext + + + local cpptools_pkg = mason_registry.get_package("cpptools") + local cpptools_path = cpptools_pkg:get_install_path() + .. "/extension/debugAdapters/bin/OpenDebugAD7" + .. ext + + dap.adapters.codelldb = { type = 'server', port = "${port}", executable = { - -- Adjust this path if Mason uses a different default location on your OS - command = vim.fn.stdpath("data") .. "/mason/bin/codelldb", + command = codelldb_path, args = {"--port", "${port}"}, + detached = not is_windows, } } - -- Configure C++ configurations - dap.configurations.cpp = { - { - name = "Launch file", - type = "codelldb", - request = "launch", - program = function() - return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') - end, - cwd = '${workspaceFolder}', - stopOnEntry = false, - args = {}, + dap.adapters.cppdbg = { + id = "cppdbg", + type = "executable", + command = cpptools_path, + -- For Windows subprocess tracking stability + options = { + detached = not is_windows, }, } - -- Re-use C++ configuration for C language + dap.adapters.cppvsdbg = { + id = "cppdbg", + type = "executable", + command = cpptools_path, + -- For Windows subprocess tracking stability + options = { + detached = not is_windows, + }, + } + + -- 3. Platform-agnostic Launcher Configuration + if not is_windows then + dap.configurations.cpp = { + { + name = "Launch file", + type = "codelldb", + request = "launch", + program = fzf_pick_executable, + cwd = '${workspaceFolder}', + stopOnEntry = false, + args = {}, + }, + } + else + dap.configurations.cpp = { + { + name = "Launch file", + type = "cppdbg", + request = "launch", + program = fzf_pick_executable, + cwd = "${workspaceFolder}", + stopOnEntry = false, + + -- Crucial configurations for Microsoft cpptools: + -- On Windows, this automatically uses MinGW/MSVC underlying debugger engines + MIMode = is_windows and "gdb" or "lldb", + miDebuggerPath = is_windows and "gdb.exe" or nil, -- Uses system path for gdb on Windows + + setupCommands = { + { + text = "-enable-pretty-printing", + description = "enable pretty printing", + ignoreFailures = false, + }, + }, + }, + } + end + dap.configurations.c = dap.configurations.cpp - - end } From 66942a1daa2566b59358beb350892e1f5844eb08 Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Tue, 8 Sep 2026 15:53:56 -0400 Subject: [PATCH 02/15] made windows nvim debugging work better with vscode --- lua/config/keymaps.lua | 12 ++++++++++-- lua/plugins/debugger.lua | 26 +++++++++++++++----------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index efefa1b..0c1151d 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -44,7 +44,15 @@ if status_ok then --vim.keymap.set("n", "cdc", dap.continue, { desc = "Debug: Start/Continue" }) -- new start debug keymap in debugger.lua vim.keymap.set("n", "cdi", dap.step_into, { desc = "Debug: Step Into" }) - vim.keymap.set("n", "cdo", dap.step_over, { desc = "Debug: Step Over" }) - vim.keymap.set("n", "cdO", dap.step_out, { desc = "Debug: Step Out" }) + vim.keymap.set("n", "cdn", dap.step_over, { desc = "Debug: Step Over" }) + vim.keymap.set("n", "cdO", dap.step_out, { desc = "Debug: Step Out" }) vim.keymap.set("n", "cdt", dap.terminate, { desc = "Debug: Terminate" }) + + vim.keymap.set("n", "cdr", dap.restart, { desc = "Debug: Restart" }) + vim.keymap.set("n", "cdp", dap.pause, { desc = "Debug: Pause" }) + vim.keymap.set("n", "cd[", dap.up, { desc = "Debug: Callstack up" }) + vim.keymap.set("n", "cd]", dap.down, { desc = "Debug: Callstack down" }) + vim.keymap.set("n", "cdh", function() + require("dap.ui.widgets").hover() + end, { desc = "DAP: Hover Variable Value" }) end diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index ee2058f..9d5977b 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -42,6 +42,7 @@ end local function start_debug_session() + local is_windows = vim.fn.has("win32") == 1 local dap = require("dap") -- 3. Platform-agnostic Launcher Configuration if not is_windows then @@ -57,9 +58,11 @@ local function start_debug_session() }, } else + local vscode = require('dap.ext.vscode') local launch_json = vim.fn.getcwd() .. "/.vscode/launch.json" if vim.fn.filereadable(launch_json) == 1 then dap.configurations.cpp = {} + dap.configurations.c = {} -- 1. CRUCIAL FIX: Alias the adapters directly so nvim-dap doesn't complain about a missing engine --if dap.adapters.cppdbg then -- dap.adapters.cppvsdbg = dap.adapters.cppdbg @@ -67,11 +70,11 @@ local function start_debug_session() -- dap.adapters.cppvsdbg = dap.adapters.codelldb --end -- 2. Map types inside launch.json to your C++ filetypes - vscode.load_launchjs(nil, { + vscode.type_to_filetypes = { cppvsdbg = { "cpp", "c" }, cppdbg = { "cpp", "c" }, codelldb = { "cpp", "c" }, - }) + } else -- No launch.json exists. Re-inject your FZF picker template rules dap.configurations.cpp = { @@ -123,7 +126,7 @@ return { -- Automatically manage debugger installations via Mason require("mason-nvim-dap").setup({ - ensure_installed = { "codelldb" }, -- Auto-installs CodeLLDB + ensure_installed = { "codelldb", "cppdbg" }, -- Auto-installs CodeLLDB automatic_installation = true, }) @@ -158,7 +161,7 @@ return { executable = { command = codelldb_path, args = {"--port", "${port}"}, - detached = not is_windows, + detached = false, } } @@ -173,13 +176,13 @@ return { } dap.adapters.cppvsdbg = { - id = "cppdbg", - type = "executable", - command = cpptools_path, - -- For Windows subprocess tracking stability - options = { - detached = not is_windows, - }, + type = 'server', + port = "${port}", + executable = { + command = codelldb_path, + args = {"--port", "${port}"}, + detached = false, + } } -- 3. Platform-agnostic Launcher Configuration @@ -225,3 +228,4 @@ return { end } + From 336490e550ef521f95b0ade32ecb3c44d58c195d Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 10 Sep 2026 11:27:21 -0400 Subject: [PATCH 03/15] fixing dap-ui dependencies/timing, added cdu for dap-ui toggle --- lua/config/keymaps.lua | 3 +++ lua/plugins/debugger.lua | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 0c1151d..1aa9206 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -55,4 +55,7 @@ if status_ok then vim.keymap.set("n", "cdh", function() require("dap.ui.widgets").hover() end, { desc = "DAP: Hover Variable Value" }) + vim.keymap.set("n", "cdu", function() + require("dapui").toggle() + end, { desc = "Debug: Toggle UI" }) end diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index 9d5977b..a6f86f5 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -131,9 +131,18 @@ return { }) -- Automatically open/close DAP UI panels - dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end - dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end - dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end + -- Defer the open so nvim-dap-ui's async (nio) element buffers are ready. + -- Opening synchronously from inside the DAP event listener races buffer + -- creation and throws "layout.lua: Invalid buffer id: -1". + dap.listeners.after.event_initialized["dapui_config"] = function() + vim.schedule(function() dapui.open() end) + end + dap.listeners.before.event_terminated["dapui_config"] = function() + vim.schedule(function() dapui.close() end) + end + dap.listeners.before.event_exited["dapui_config"] = function() + vim.schedule(function() dapui.close() end) + end -- Step 2 & 3 configurations will go here... -- 1. Detect operating system From 7b01a29ee35c54680f073113f0eef5deb2f7242e Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 10 Sep 2026 11:45:13 -0400 Subject: [PATCH 04/15] add dap watch under cursor keymap cdw --- lua/config/keymaps.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 1aa9206..00bb64b 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -58,4 +58,7 @@ if status_ok then vim.keymap.set("n", "cdu", function() require("dapui").toggle() end, { desc = "Debug: Toggle UI" }) + vim.keymap.set("n", "cdw", function() + require("dapui").elements.watches.add(vim.fn.expand("")) + end, { desc = "DAP Add Watch under cursor" }) end From 08315f1b68f3972ec1c188ad8b34db59e3bf7e6a Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 10 Sep 2026 13:50:47 -0400 Subject: [PATCH 05/15] added esc support on nvim terminal, fix debugger crash and alpha problem --- lazy-lock.json | 17 ++++++++--------- lua/config/keymaps.lua | 3 +++ lua/plugins/debugger.lua | 7 +++++-- lua/pluginsLate/alpha.lua | 3 --- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lazy-lock.json b/lazy-lock.json index 1303ad7..f5ca415 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,11 +1,10 @@ { "Aquavium.nvim": { "branch": "main", "commit": "d007badfa5920cb50e136d30a3edf4342093d6b5" }, - "alpha-nvim": { "branch": "main", "commit": "6c6a89d5b068b5251c8bdf0dd57bb921bcfeeb09" }, + "alpha-nvim": { "branch": "main", "commit": "4ba26e41990c11620c96c0e1cff20eab65efde4a" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, - "blamer.nvim": { "branch": "master", "commit": "e0d43c11697300eb68f00d69df8b87deb0bf52dc" }, "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, "bluloco.nvim": { "branch": "main", "commit": "294aa5ac5e639f36ab5db9729ac7583c37d896dc" }, - "codecompanion.nvim": { "branch": "main", "commit": "d4c00c29ffa49a9eda117099916168e32aa12e09" }, + "codecompanion.nvim": { "branch": "main", "commit": "dfc13a20214b825d867ae69b8497eed723cf026d" }, "conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" }, "contextfiles.nvim": { "branch": "main", "commit": "d5d0525c32777366e5c415fdb682444ce9f753f8" }, "dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" }, @@ -13,17 +12,17 @@ "everforest-nvim": { "branch": "main", "commit": "a0e9edc57379e8feafc6ba207c26dbb12fc1b6d8" }, "farba.nvim": { "branch": "main", "commit": "a15528695f38a44ba2974b9aae5d6ddf8c694ea2" }, "fidget.nvim": { "branch": "main", "commit": "9e0201673e08e997e7cf52afca5565c70bd117f3" }, - "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "friendly-snippets": { "branch": "main", "commit": "a5a73e586521fe5c12d751ad81a0db67649a94ed" }, "fzf-lua": { "branch": "main", "commit": "05e44d38de0a79c11fba5f7bf8138791b1dbdd1e" }, - "gitsigns.nvim": { "branch": "main", "commit": "5be654f2232c10ddcad19c1607a67b6b4b78fc29" }, + "gitsigns.nvim": { "branch": "main", "commit": "f2421c550618d257048afa650413d9e542ddbe67" }, "gruvbox-material": { "branch": "master", "commit": "11d779b26a9ab2b3db8c22c6ac9fb6e8ed4fea79" }, - "indent-blankline.nvim": { "branch": "master", "commit": "3b1ee1854c1067c34cad2423eb78e280d4069e01" }, + "indent-blankline.nvim": { "branch": "master", "commit": "f1e186e44d3b7f9ae918008e2c28ce37c6023d2d" }, "kanagawa.nvim": { "branch": "master", "commit": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "40276c4df7e6bdce6801d6c035c6227f9115a855" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "b5576cd62899a1a478d0e67ef3d378ee55dba82d" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, @@ -37,10 +36,10 @@ "nvim-dap": { "branch": "master", "commit": "c9a0738e45f1bd41d792a126941348dce661cf9b" }, "nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lspconfig": { "branch": "master", "commit": "85e732c62ac59ab7c12df71ddd020baa87948390" }, + "nvim-lspconfig": { "branch": "master", "commit": "ac9d2f7c4757db6320cab6697fe73e5e8adb2457" }, "nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, - "nvim-treesitter": { "branch": "main", "commit": "427e9222363d07c32d6db6169e4049c28d58d141" }, + "nvim-treesitter": { "branch": "main", "commit": "d4d59cb369da46b95699bd2200efbcffc6dadb3b" }, "nvim-web-devicons": { "branch": "master", "commit": "5f032a85be210cd1c6ac98861eb3b187ff3bd5eb" }, "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 00bb64b..00c1a5b 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -5,6 +5,9 @@ vim.keymap.set({"n", "v"}, "", "18j", {desc = "Fast scroll down"}) vim.keymap.set({"n", "v"}, "", "18k", {desc = "Fast scroll up"}) vim.keymap.set("n", "h", ":noh", {desc = "Remove current highlighting"}) +-- Exit terminal mode easily with Escape +vim.keymap.set('t', '', [[]], { desc = 'Exit terminal mode' }) + vim.keymap.set("v", "y", '"+y', {desc='Yank to "+ register for external copy/paste'}) --CODE/LSP diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index a6f86f5..2c404ca 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -178,9 +178,12 @@ return { id = "cppdbg", type = "executable", command = cpptools_path, - -- For Windows subprocess tracking stability + -- Must stay detached (the default) so the adapter + gdb + debuggee + -- run in their own process group. With detached=false on Windows + -- they share Neovim's console group, so terminating the session + -- (dap.terminate) sends the Ctrl-C/terminate signal to Neovim too. options = { - detached = not is_windows, + detached = true, }, } diff --git a/lua/pluginsLate/alpha.lua b/lua/pluginsLate/alpha.lua index f93432d..f23a1e7 100644 --- a/lua/pluginsLate/alpha.lua +++ b/lua/pluginsLate/alpha.lua @@ -38,9 +38,6 @@ return { dashboard.button("l", " Lazy settings", ":Lazy"), dashboard.button("q", "󰅚 quit nvim", ":qa"), } - local handle = io.popen('fortune') - local fortune = handle:read("*a") - handle:close() dashboard.section.footer.val = { [["we define the boundaries of reality;]], [[they don't define us."]], From 650ac1ac05988c0ca01b09ff673211d9b66ff402 Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 10 Sep 2026 14:59:50 -0400 Subject: [PATCH 06/15] updated ignore logic to work for all colour schemes --- lua/ignoreConfig/colourConfig.lua.example | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lua/ignoreConfig/colourConfig.lua.example b/lua/ignoreConfig/colourConfig.lua.example index eaf3163..4adef56 100644 --- a/lua/ignoreConfig/colourConfig.lua.example +++ b/lua/ignoreConfig/colourConfig.lua.example @@ -1,6 +1,25 @@ local opts = { - name = "everforest", - transparent = 0 + name = "everforest", + opts = { + everforest, + kanagawa, + marterial, + } +} + +local everforest = { + name = "everforest", + transparent = 0,--0, 1 or 2, least to most transparent +} + +local kanagawa = { + transparent = true, +} + +local marterial = { + disable = { + background = true, + } } return opts From 938f63b8dc8706339ac92c9a90be71a9d9edcab5 Mon Sep 17 00:00:00 2001 From: Aeth3r Date: Fri, 11 Sep 2026 10:04:49 -0400 Subject: [PATCH 07/15] lazylock --- lazy-lock.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lazy-lock.json b/lazy-lock.json index 1303ad7..98dbd96 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -5,47 +5,47 @@ "blamer.nvim": { "branch": "master", "commit": "e0d43c11697300eb68f00d69df8b87deb0bf52dc" }, "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, "bluloco.nvim": { "branch": "main", "commit": "294aa5ac5e639f36ab5db9729ac7583c37d896dc" }, - "codecompanion.nvim": { "branch": "main", "commit": "d4c00c29ffa49a9eda117099916168e32aa12e09" }, - "conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" }, + "codecompanion.nvim": { "branch": "main", "commit": "b1cbe52ecd71e7b0ed43ac1dc6eb3aab4099db00" }, + "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" }, "contextfiles.nvim": { "branch": "main", "commit": "d5d0525c32777366e5c415fdb682444ce9f753f8" }, "dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, - "everforest-nvim": { "branch": "main", "commit": "a0e9edc57379e8feafc6ba207c26dbb12fc1b6d8" }, + "everforest-nvim": { "branch": "main", "commit": "d235ca0aa6a29546e661a020e2618612acbbffbe" }, "farba.nvim": { "branch": "main", "commit": "a15528695f38a44ba2974b9aae5d6ddf8c694ea2" }, - "fidget.nvim": { "branch": "main", "commit": "9e0201673e08e997e7cf52afca5565c70bd117f3" }, + "fidget.nvim": { "branch": "main", "commit": "82404b196e73a00b1727a91903beef5ddc319d22" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, - "fzf-lua": { "branch": "main", "commit": "05e44d38de0a79c11fba5f7bf8138791b1dbdd1e" }, - "gitsigns.nvim": { "branch": "main", "commit": "5be654f2232c10ddcad19c1607a67b6b4b78fc29" }, + "fzf-lua": { "branch": "main", "commit": "fea9eedc6894c44d44cbb772a5cd11c93b82d7a1" }, + "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, "gruvbox-material": { "branch": "master", "commit": "11d779b26a9ab2b3db8c22c6ac9fb6e8ed4fea79" }, - "indent-blankline.nvim": { "branch": "master", "commit": "3b1ee1854c1067c34cad2423eb78e280d4069e01" }, + "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "kanagawa.nvim": { "branch": "master", "commit": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, - "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, + "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "40276c4df7e6bdce6801d6c035c6227f9115a855" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, - "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, + "mason.nvim": { "branch": "main", "commit": "bb639d4bf385a4d89f478b83af4d770be05ab7eb" }, "material.nvim": { "branch": "main", "commit": "92f7366a9315cd386bc4fa4d716fde375dda210f" }, - "mini.icons": { "branch": "main", "commit": "98faae31e9be1cc054ae63485e58ceb185efcad0" }, + "mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" }, "neovim": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, - "nui.nvim": { "branch": "main", "commit": "10fc361835c856ba4233ef5ea135b919bf3dce97" }, - "nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, "nvim-colorizer.lua": { "branch": "master", "commit": "72a05f62c52241bc7441c820eb53946f92b2e6a4" }, "nvim-dap": { "branch": "master", "commit": "c9a0738e45f1bd41d792a126941348dce661cf9b" }, "nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lspconfig": { "branch": "master", "commit": "85e732c62ac59ab7c12df71ddd020baa87948390" }, + "nvim-lspconfig": { "branch": "master", "commit": "6f76a3eeadc2ee235d74cd7d5319e95a261084af" }, "nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, - "nvim-treesitter": { "branch": "main", "commit": "427e9222363d07c32d6db6169e4049c28d58d141" }, - "nvim-web-devicons": { "branch": "master", "commit": "5f032a85be210cd1c6ac98861eb3b187ff3bd5eb" }, - "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, + "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, + "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, + "oil.nvim": { "branch": "master", "commit": "b91ee5a77a6a9605d9c1aaf4fda74b66082c8297" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, - "render-markdown.nvim": { "branch": "main", "commit": "4663eb3ecd538bd5062628fb6d95bbe6bdca78f6" }, - "telescope.nvim": { "branch": "master", "commit": "40aedd8a68c78a656a10a8d62d80c54af59420fb" }, + "render-markdown.nvim": { "branch": "main", "commit": "5adf0895310c1904e5abfaad40a2baad7fe44a07" }, + "telescope.nvim": { "branch": "master", "commit": "7d324792b7943e4aa16ad007212e6acc6f9fe335" }, "venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" }, "vesper.nvim": { "branch": "main", "commit": "1717b1ad657c94bec3fc2bdebb0c55452d9fe46d" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, From 5dde7ba34f9cfa5115a80c745e296abb94fbceca Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Tue, 15 Sep 2026 10:13:18 -0400 Subject: [PATCH 08/15] fix ignores --- lua/ignoreConfig/colourConfig.lua.example | 27 ++++++++++++++--------- lua/plugins/colourscheme.lua | 19 ++++++++-------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/lua/ignoreConfig/colourConfig.lua.example b/lua/ignoreConfig/colourConfig.lua.example index 4adef56..3abf812 100644 --- a/lua/ignoreConfig/colourConfig.lua.example +++ b/lua/ignoreConfig/colourConfig.lua.example @@ -1,14 +1,5 @@ -local opts = { - name = "everforest", - opts = { - everforest, - kanagawa, - marterial, - } -} local everforest = { - name = "everforest", transparent = 0,--0, 1 or 2, least to most transparent } @@ -18,7 +9,23 @@ local kanagawa = { local marterial = { disable = { - background = true, + background = true, + } +} + +local rosepine = { + styles = { + transparency = true, + } +} + +local opts = { + name = "rose-pine", + opts = { + everforest=everforest, + kanagawa=kanagawa, + marterial=material, + rosepine=rosepine, } } diff --git a/lua/plugins/colourscheme.lua b/lua/plugins/colourscheme.lua index b77d5cf..60630d0 100644 --- a/lua/plugins/colourscheme.lua +++ b/lua/plugins/colourscheme.lua @@ -10,7 +10,7 @@ local material = { --vim.g.material_style = "palenight" material.setup({ lualine_style = "default", -- Lualine style ( can be 'stealth' or 'default' ) - disable = ignores[1], + disable = ignores.opts.material.disable, custom_highlights = { Comment = { fg = "#b7b0bf" }, LineNr = { fg = "#b7b0bf" }, @@ -54,7 +54,7 @@ local kanagawa = { theme = "lotus", compile = true, commentStyle = { italic = true }, - transparent = ignores.transparent, + transparent = ignores.opts.kanagawa.transparent, colors = { --palette = { -- -- change all usages of these colors @@ -96,7 +96,7 @@ local everforest = { local ignore = require('ignoreConfig.colourConfig'); everforest.setup({ background = "hard", - transparent_background_level = ignore.transparent, + transparent_background_level = ignore.opts.everforest.transparent, italics = true, }); @@ -113,17 +113,18 @@ local rosepine = { lazy = true, config = function() local rosepine = require("rose-pine"); + local ignore = require('ignoreConfig.colourConfig'); rosepine.setup({ variant = "moon", -- Options: "main", "moon", "dawn" dark_variant = "moon", - bold_vert_split = false, - dim_nc_background = false, - disable_background = false, - disable_float_background = false, - disable_italics = false, + styles = { + bold = true, + italic = true, + transparency = ignore.opts.rosepine.styles.transparency, + }, groups = { - background = "base", + --background = "base", panel = "surface", border = "highlight_low", comment = "muted", From 85aaec3974cbd2fb4cebc590d67581e82a6e2568 Mon Sep 17 00:00:00 2001 From: Aeth3r Date: Mon, 28 Sep 2026 12:25:10 -0400 Subject: [PATCH 09/15] kitty opts --- init.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/init.lua b/init.lua index bacf2bb..f5f56a7 100644 --- a/init.lua +++ b/init.lua @@ -8,4 +8,29 @@ vim.g.blamer_template = ", • " -- Example: C vim.g.blamer_relative_time = true vim.g.blamer_enabled = true vim.g.blamer_show_in_visual_modes = 0 +vim.opt.shell = "bash" +vim.opt.termguicolors = true + + +-- Create a custom :term command that passes Kitty's custom environment variables +vim.api.nvim_create_user_command("Term", function() + -- 1. Grab Kitty's installation path from your current terminal environment + local kitty_install = os.getenv("KITTY_INSTALLATION_DIR") + + -- 2. Build the manual injection loader path Kitty requires + local kitty_bash_injection = kitty_install and (kitty_install .. "/shell-integration/bash/kitty.bash") or "" + + -- 3. Open a clean terminal, tell Kitty it is safe to interact, and map it + if kitty_install ~= nil and kitty_install ~= "" then + -- Run Bash but explicitly inject the environment loader before anything else handles it + vim.cmd(string.format("terminal env KITTY_SHELL_INTEGRATION=enabled bash --rcfile %s -i", kitty_bash_injection)) + else + -- Fallback safe method if Kitty environment path variables are empty + vim.cmd("terminal bash -il") + end +end, { force = true }) +-- Make sure lowercase ':term' also maps to our special alignment function +vim.cmd([[cabbrev term Term]]) + + require("config.lazy") From 79f7d5801c8e3fb682c4f5feeceae83f94bf69ef Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 8 Oct 2026 12:01:43 -0400 Subject: [PATCH 10/15] debugger fix, treesitter bindings, rosepine notify fix --- lua/config/lazy.lua | 3 +++ lua/plugins/debugger.lua | 25 ++++++++++++++++++++----- lua/plugins/nvim-treesitter.lua | 24 ++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua index 540fa26..7db2f35 100644 --- a/lua/config/lazy.lua +++ b/lua/config/lazy.lua @@ -45,6 +45,9 @@ require("lazy").setup({ }) vim.cmd("colorscheme " .. colScheme.name); vim.api.nvim_set_hl(0, "alphaheader", {fg = "#3661cf" }) +if (colScheme.name == "rose-pine") then + vim.api.nvim_set_hl(0, "NotifyBackground", { bg = "#232136" }) +end --setup colour indents local highlight = { diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index 2c404ca..58d1609 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -170,7 +170,10 @@ return { executable = { command = codelldb_path, args = {"--port", "${port}"}, - detached = false, + -- Keep the spawned server (and any inferior it launches) off + -- Neovim's console group so terminating a session can't take + -- Neovim down on Windows. Matches the cppvsdbg adapter above. + detached = true, } } @@ -187,14 +190,26 @@ return { }, } + -- Route MSVC `cppvsdbg` launch configs (as VS/msbuild launch.json + -- generates) to codelldb. We deliberately do NOT use Microsoft's vsdbg: + -- its license permits use only within Visual Studio / VS Code. codelldb + -- is LLVM/LLDB-based (Apache-2.0) and has a native PDB reader, so it can + -- debug MSVC/msbuild binaries without that restriction. + -- + -- codelldb is a TCP `server` adapter, so terminating/disconnecting + -- talks over a socket and can't broadcast a console CTRL event to + -- Neovim the way the gdb-backed cppdbg path does. detached=true keeps + -- the spawned server (and the inferior it launches) off Neovim's + -- console group too -- the original `detached = false` is what still + -- let a disconnect take Neovim down. dap.adapters.cppvsdbg = { - type = 'server', + type = "server", port = "${port}", executable = { command = codelldb_path, - args = {"--port", "${port}"}, - detached = false, - } + args = { "--port", "${port}" }, + detached = true, + }, } -- 3. Platform-agnostic Launcher Configuration diff --git a/lua/plugins/nvim-treesitter.lua b/lua/plugins/nvim-treesitter.lua index 89ea397..09d03ff 100644 --- a/lua/plugins/nvim-treesitter.lua +++ b/lua/plugins/nvim-treesitter.lua @@ -20,5 +20,29 @@ return { sync_install = false, highlight = { enable = true }, indent = { enable = true }, + + + -- Enable the textobjects extension + textobjects = { + move = { + enable = true, + set_jumps = true, -- Add jumps to the jumplist (:h jumplist) + + goto_next_start = { + ["]]"] = { query = "@function.outer", desc = "Next function definition start" }, + ["]c"] = { query = "@class.outer", desc = "Next class definition start" }, + }, + goto_previous_start = { + ["[["] = { query = "@function.outer", desc = "Previous function definition start" }, + ["[c"] = { query = "@class.outer", desc = "Previous class definition start" }, + }, + goto_next_end = { + ["]f"] = { query = "@function.outer", desc = "Next function definition end" }, + }, + goto_previous_end = { + ["[f"] = { query = "@function.outer", desc = "Previous function definition end" }, + }, + }, + }, }, } From 4ae09d768561db37e2bb5c72f263c3bdf2edb0f9 Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Thu, 15 Oct 2026 14:46:24 -0400 Subject: [PATCH 11/15] actually fix debugger to not crash on cdt --- lazy-lock.json | 48 ++++++++++++++++++++-------------------- lua/plugins/debugger.lua | 16 ++++++++++++++ 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/lazy-lock.json b/lazy-lock.json index 6063aba..4f553f5 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,50 +1,50 @@ { - "Aquavium.nvim": { "branch": "main", "commit": "d007badfa5920cb50e136d30a3edf4342093d6b5" }, + "Aquavium.nvim": { "branch": "main", "commit": "ff76f104f00fdbbe7885398ea13a3baac0cd96a0" }, "alpha-nvim": { "branch": "main", "commit": "4ba26e41990c11620c96c0e1cff20eab65efde4a" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, - "bluloco.nvim": { "branch": "main", "commit": "294aa5ac5e639f36ab5db9729ac7583c37d896dc" }, - "codecompanion.nvim": { "branch": "main", "commit": "b1cbe52ecd71e7b0ed43ac1dc6eb3aab4099db00" }, - "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" }, + "bluloco.nvim": { "branch": "main", "commit": "811253faa7738bfc3a2658a7d0a034dfb9f34f78" }, + "codecompanion.nvim": { "branch": "main", "commit": "3dd1ef7fa8d6aeb27020023e40293bac588de714" }, + "conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" }, "contextfiles.nvim": { "branch": "main", "commit": "d5d0525c32777366e5c415fdb682444ce9f753f8" }, "dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, - "everforest-nvim": { "branch": "main", "commit": "d235ca0aa6a29546e661a020e2618612acbbffbe" }, + "everforest-nvim": { "branch": "main", "commit": "a0e9edc57379e8feafc6ba207c26dbb12fc1b6d8" }, "farba.nvim": { "branch": "main", "commit": "a15528695f38a44ba2974b9aae5d6ddf8c694ea2" }, - "fidget.nvim": { "branch": "main", "commit": "82404b196e73a00b1727a91903beef5ddc319d22" }, - "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, - "fzf-lua": { "branch": "main", "commit": "fea9eedc6894c44d44cbb772a5cd11c93b82d7a1" }, - "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, + "fidget.nvim": { "branch": "main", "commit": "9e0201673e08e997e7cf52afca5565c70bd117f3" }, + "friendly-snippets": { "branch": "main", "commit": "b4d01b0fdf3c9a549961c2f9ffe8dc09be166219" }, + "fzf-lua": { "branch": "main", "commit": "ed0e0ead1789ee349cbf025900931fb402b1e05e" }, + "gitsigns.nvim": { "branch": "main", "commit": "851a051e2bd2caba97e23314c68d69f1b1cf5d19" }, "gruvbox-material": { "branch": "master", "commit": "11d779b26a9ab2b3db8c22c6ac9fb6e8ed4fea79" }, - "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, + "indent-blankline.nvim": { "branch": "master", "commit": "f1e186e44d3b7f9ae918008e2c28ce37c6023d2d" }, "kanagawa.nvim": { "branch": "master", "commit": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, - "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, + "lazygit.nvim": { "branch": "main", "commit": "9ffc6103926718f7070fb4017694543cd7dc9718" }, + "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "b3298993d55fa194279b5eb9dbfb3a43da65cadf" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, - "mason.nvim": { "branch": "main", "commit": "bb639d4bf385a4d89f478b83af4d770be05ab7eb" }, + "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "material.nvim": { "branch": "main", "commit": "92f7366a9315cd386bc4fa4d716fde375dda210f" }, - "mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" }, + "mini.icons": { "branch": "main", "commit": "f642e3ba8c12afbc8f32f6d77ef6597eac56786f" }, "neovim": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, - "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, - "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, + "nui.nvim": { "branch": "main", "commit": "10fc361835c856ba4233ef5ea135b919bf3dce97" }, + "nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" }, "nvim-colorizer.lua": { "branch": "master", "commit": "72a05f62c52241bc7441c820eb53946f92b2e6a4" }, - "nvim-dap": { "branch": "master", "commit": "c9a0738e45f1bd41d792a126941348dce661cf9b" }, + "nvim-dap": { "branch": "master", "commit": "cfa2d58f4537aca6ca83e2de1a0d9f1491121264" }, "nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lspconfig": { "branch": "master", "commit": "6f76a3eeadc2ee235d74cd7d5319e95a261084af" }, + "nvim-lspconfig": { "branch": "master", "commit": "db68de3575fff9dd9bb78b34c8371759ed35fe34" }, "nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, - "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, - "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, - "oil.nvim": { "branch": "master", "commit": "b91ee5a77a6a9605d9c1aaf4fda74b66082c8297" }, + "nvim-treesitter": { "branch": "main", "commit": "e289100ff98969e118c702199d88b764ce9e7fdf" }, + "nvim-web-devicons": { "branch": "master", "commit": "58447c1fca354bbf184425e4a8d01deecbd6f3c4" }, + "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, - "render-markdown.nvim": { "branch": "main", "commit": "5adf0895310c1904e5abfaad40a2baad7fe44a07" }, - "telescope.nvim": { "branch": "master", "commit": "7d324792b7943e4aa16ad007212e6acc6f9fe335" }, + "render-markdown.nvim": { "branch": "main", "commit": "245956d67572c137df375dbf256e96bdb07e0937" }, + "telescope.nvim": { "branch": "master", "commit": "40aedd8a68c78a656a10a8d62d80c54af59420fb" }, "venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" }, "vesper.nvim": { "branch": "main", "commit": "1717b1ad657c94bec3fc2bdebb0c55452d9fe46d" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index 58d1609..4066670 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -124,6 +124,22 @@ return { dapui.setup() require("nvim-dap-virtual-text").setup() + -- The dap-ui "disconnect" control (the plug icon) and dap.disconnect in + -- general send a DAP `disconnect` request. With the codelldb server + -- adapter that path crashes the adapter + -- (STATUS_ACCESS_VIOLATION / 0xC0000005, see dap.log) while the inferior + -- is still attached, and on Windows that takes Neovim down with it. + -- + -- The `terminate` request path (the square Stop button / cdt) + -- tears the inferior down cleanly first, so codelldb's crash on the way + -- out is harmless. Route the disconnect control through terminate too. + -- (_G._dapui is created when dapui.controls is required; force-load it so + -- the override is in place before the controls winbar renders.) + require("dapui.controls") + _G._dapui.disconnect = function() + dap.terminate() + end + -- Automatically manage debugger installations via Mason require("mason-nvim-dap").setup({ ensure_installed = { "codelldb", "cppdbg" }, -- Auto-installs CodeLLDB From e8cd889db4fac1fbc38cd056cf0cb7c802ccff7a Mon Sep 17 00:00:00 2001 From: Mitchell Hingley Date: Tue, 20 Oct 2026 16:28:46 -0400 Subject: [PATCH 12/15] fix esc in lazygit --- lua/config/keymaps.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 00c1a5b..49ad155 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -8,6 +8,19 @@ vim.keymap.set("n", "h", ":noh", {desc = "Remove current highli -- Exit terminal mode easily with Escape vim.keymap.set('t', '', [[]], { desc = 'Exit terminal mode' }) +-- In lazygit, keep every key inside the terminal so only Ctrl+C (handled by +-- lazygit itself) can close it -- no nvim key drops you into normal mode. +vim.api.nvim_create_autocmd("TermOpen", { + callback = function() + if vim.fn.expand("%"):match("lazygit") then + -- let pass through to lazygit instead of exiting terminal mode + vim.keymap.set('t', '', '', { buffer = true }) + -- disable the built-in exit-terminal-mode chord + vim.keymap.set('t', [[]], '', { buffer = true }) + end + end, +}) + vim.keymap.set("v", "y", '"+y', {desc='Yank to "+ register for external copy/paste'}) --CODE/LSP From a2d7f4e78624fc440de4d42ba571a28146fe5b64 Mon Sep 17 00:00:00 2001 From: Aeth3r Date: Tue, 20 Oct 2026 19:51:38 -0400 Subject: [PATCH 13/15] update lazy-lock Co-Authored-By: Claude Opus 5.5 --- lazy-lock.json | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lazy-lock.json b/lazy-lock.json index 4f553f5..a0e165b 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -2,9 +2,10 @@ "Aquavium.nvim": { "branch": "main", "commit": "ff76f104f00fdbbe7885398ea13a3baac0cd96a0" }, "alpha-nvim": { "branch": "main", "commit": "4ba26e41990c11620c96c0e1cff20eab65efde4a" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, + "blamer.nvim": { "branch": "master", "commit": "e0d43c11697300eb68f00d69df8b87deb0bf52dc" }, "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, - "bluloco.nvim": { "branch": "main", "commit": "811253faa7738bfc3a2658a7d0a034dfb9f34f78" }, - "codecompanion.nvim": { "branch": "main", "commit": "3dd1ef7fa8d6aeb27020023e40293bac588de714" }, + "bluloco.nvim": { "branch": "main", "commit": "912227935d63766fe11e4168840063bd2e9a4274" }, + "codecompanion.nvim": { "branch": "main", "commit": "86118411be00f0451a59c5ef7972c437e979e1b7" }, "conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" }, "contextfiles.nvim": { "branch": "main", "commit": "d5d0525c32777366e5c415fdb682444ce9f753f8" }, "dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" }, @@ -13,8 +14,8 @@ "farba.nvim": { "branch": "main", "commit": "a15528695f38a44ba2974b9aae5d6ddf8c694ea2" }, "fidget.nvim": { "branch": "main", "commit": "9e0201673e08e997e7cf52afca5565c70bd117f3" }, "friendly-snippets": { "branch": "main", "commit": "b4d01b0fdf3c9a549961c2f9ffe8dc09be166219" }, - "fzf-lua": { "branch": "main", "commit": "ed0e0ead1789ee349cbf025900931fb402b1e05e" }, - "gitsigns.nvim": { "branch": "main", "commit": "851a051e2bd2caba97e23314c68d69f1b1cf5d19" }, + "fzf-lua": { "branch": "main", "commit": "c67fadd9a24230417267e4f9068227e093c0be2b" }, + "gitsigns.nvim": { "branch": "main", "commit": "fd780920613e541cbdfac41bf711583ed49f9249" }, "gruvbox-material": { "branch": "master", "commit": "11d779b26a9ab2b3db8c22c6ac9fb6e8ed4fea79" }, "indent-blankline.nvim": { "branch": "master", "commit": "f1e186e44d3b7f9ae918008e2c28ce37c6023d2d" }, "kanagawa.nvim": { "branch": "master", "commit": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3" }, @@ -22,12 +23,12 @@ "lazygit.nvim": { "branch": "main", "commit": "9ffc6103926718f7070fb4017694543cd7dc9718" }, "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "b3298993d55fa194279b5eb9dbfb3a43da65cadf" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "00b5473cca4db5b410ff4bae724e3b6e21f2687f" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "material.nvim": { "branch": "main", "commit": "92f7366a9315cd386bc4fa4d716fde375dda210f" }, - "mini.icons": { "branch": "main", "commit": "f642e3ba8c12afbc8f32f6d77ef6597eac56786f" }, + "mini.icons": { "branch": "main", "commit": "f916635dc5ae2f479fbb9ab8184bb9444b62e86c" }, "neovim": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, "nui.nvim": { "branch": "main", "commit": "10fc361835c856ba4233ef5ea135b919bf3dce97" }, @@ -36,14 +37,14 @@ "nvim-dap": { "branch": "master", "commit": "cfa2d58f4537aca6ca83e2de1a0d9f1491121264" }, "nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lspconfig": { "branch": "master", "commit": "db68de3575fff9dd9bb78b34c8371759ed35fe34" }, + "nvim-lspconfig": { "branch": "master", "commit": "45a3a444b710511c39abca3b60bb6e23a21e3de5" }, "nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, - "nvim-treesitter": { "branch": "main", "commit": "e289100ff98969e118c702199d88b764ce9e7fdf" }, - "nvim-web-devicons": { "branch": "master", "commit": "58447c1fca354bbf184425e4a8d01deecbd6f3c4" }, - "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, + "nvim-treesitter": { "branch": "main", "commit": "29212d826054bb2948fa9d3a99eca9bf6a050eb2" }, + "nvim-web-devicons": { "branch": "master", "commit": "ec309a0eaff6ea967e58c275996155ab5c16938d" }, + "oil.nvim": { "branch": "master", "commit": "d3733d933833a0e59b813ecec99341527adf0c28" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, - "render-markdown.nvim": { "branch": "main", "commit": "245956d67572c137df375dbf256e96bdb07e0937" }, + "render-markdown.nvim": { "branch": "main", "commit": "8e8795368391036643b622875a6da6a51bcd33f4" }, "telescope.nvim": { "branch": "master", "commit": "40aedd8a68c78a656a10a8d62d80c54af59420fb" }, "venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" }, "vesper.nvim": { "branch": "main", "commit": "1717b1ad657c94bec3fc2bdebb0c55452d9fe46d" }, From 26085ed02bba820c6432f32a4c5b248fc020b8fc Mon Sep 17 00:00:00 2001 From: Aeth3r Date: Tue, 20 Oct 2026 22:55:37 -0400 Subject: [PATCH 14/15] gruvbox transparency --- lua/ignoreConfig/colourConfig.lua.example | 5 +++++ lua/plugins/colourscheme.lua | 2 ++ 2 files changed, 7 insertions(+) diff --git a/lua/ignoreConfig/colourConfig.lua.example b/lua/ignoreConfig/colourConfig.lua.example index 3abf812..349ced0 100644 --- a/lua/ignoreConfig/colourConfig.lua.example +++ b/lua/ignoreConfig/colourConfig.lua.example @@ -19,6 +19,10 @@ local rosepine = { } } +local gruvbox = { + transparent = 1, +} + local opts = { name = "rose-pine", opts = { @@ -26,6 +30,7 @@ local opts = { kanagawa=kanagawa, marterial=material, rosepine=rosepine, + gruvbox=gruvbox, } } diff --git a/lua/plugins/colourscheme.lua b/lua/plugins/colourscheme.lua index 60630d0..558fd68 100644 --- a/lua/plugins/colourscheme.lua +++ b/lua/plugins/colourscheme.lua @@ -300,8 +300,10 @@ local gruvbox = { lazy = false, priority = 1000, config = function() + local ignores = require('ignoreConfig.colourConfig') -- Optionally configure and load the colorscheme -- directly inside the plugin declaration. + vim.g.gruvbox_material_transparent_background = ignores.opts.gruvbox.transparent vim.g.gruvbox_material_enable_italic = true --vim.cmd.colorscheme('gruvbox-material') end From e5f6d0d9a4a52a61644bbbd01fa7bf57cab6e3f3 Mon Sep 17 00:00:00 2001 From: Aeth3r Date: Fri, 23 Oct 2026 08:57:19 -0400 Subject: [PATCH 15/15] unity debugging --- lua/plugins/debugger.lua | 56 ++++++++++++++++++++++++++++++++++++++++ unity-debug/install.sh | 29 +++++++++++++++++++++ unity-debug/patch.cs | 20 ++++++++++++++ 3 files changed, 105 insertions(+) create mode 100755 unity-debug/install.sh create mode 100644 unity-debug/patch.cs diff --git a/lua/plugins/debugger.lua b/lua/plugins/debugger.lua index 4066670..5bfd5e3 100644 --- a/lua/plugins/debugger.lua +++ b/lua/plugins/debugger.lua @@ -268,6 +268,62 @@ return { end dap.configurations.c = dap.configurations.cpp + + -- Unity (Mono soft debugger) via Unity's MIT-licensed vscode-unity-debug + -- adapter, extracted from its .vsix into stdpath("data")/unity-debug. + -- Avoids vstuc, whose license (like vsdbg's) is VS Code only. + -- + -- UnityDebug.exe is patched by unity-debug/install.sh (see patch.cs there; + -- original kept as UnityDebug.exe.orig): stock, it only matches editor + -- processes named exactly "Unity"/"Unity Editor", but Unity Hub launches + -- the editor as "unityhub-unity-editor-". The patch makes it a + -- case-insensitive "Unity" prefix match, covering both launch methods and + -- any version. Helper processes (UnityPackageManager, import workers...) + -- match too, so the adapter picks the real editor by the process_id in + -- EditorInstance.json -- which needs the config name to contain "Editor". + local unity_debug_exe = vim.fn.stdpath("data") .. "/unity-debug/extension/bin/UnityDebug.exe" + local unity_debug_install = vim.fn.stdpath("config") .. "/unity-debug/install.sh" + dap.adapters.unity = function(callback) + if vim.fn.filereadable(unity_debug_exe) == 0 then + vim.notify("Installing Unity debug adapter...") + local result = vim.system({ unity_debug_install }, { text = true }):wait() + if result.code ~= 0 then + vim.notify("Unity debug adapter install failed:\n" .. result.stderr, vim.log.levels.ERROR) + return + end + end + callback({ + type = "executable", + command = "mono", + args = { unity_debug_exe }, + -- The adapter strips the leading "/" from `path` (a Windows-ism) + -- before reading it, so run it from / for the now-relative path + -- to resolve. + options = { cwd = "/" }, + }) + end + + -- Library/EditorInstance.json only exists while the editor is open; the + -- adapter reads the editor PID from it to derive the debugger port. + -- The Unity project may sit in a repo subfolder, so search upward from + -- the buffer first, then downward from cwd. + local function unity_editor_instance() + local root = vim.fs.root(0, "ProjectSettings") + if root then + return root .. "/Library/EditorInstance.json" + end + local found = vim.fs.find("EditorInstance.json", { path = vim.fn.getcwd(), type = "file", limit = 1 }) + return found[1] + end + + dap.configurations.cs = { + { + name = "Unity Editor", + type = "unity", + request = "launch", -- unity-debug attaches to the running editor despite "launch" + path = unity_editor_instance, + }, + } end } diff --git a/unity-debug/install.sh b/unity-debug/install.sh new file mode 100755 index 0000000..ff9bcb4 --- /dev/null +++ b/unity-debug/install.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Installs Unity's MIT-licensed vscode-unity-debug adapter for nvim-dap and +# patches it to find editors however they were launched (see patch.cs). +# Re-runnable: always re-extracts and re-patches from the pristine .vsix. +set -euo pipefail + +VERSION=3.0.1 +HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DEST="${1:-${XDG_DATA_HOME:-$HOME/.local/share}/nvim/unity-debug}" +BIN="$DEST/extension/bin" + +for cmd in curl unzip mono mcs; do + command -v "$cmd" >/dev/null || { echo "unity-debug install: missing '$cmd'" >&2; exit 1; } +done + +mkdir -p "$DEST" +VSIX="$DEST/unity-debug-$VERSION.vsix" +[ -f "$VSIX" ] || curl -fsSL -o "$VSIX" \ + "https://github.com/Unity-Technologies/vscode-unity-debug/releases/download/Version-$VERSION/unity-debug-$VERSION.vsix" +rm -rf "$DEST/extension" +unzip -qo "$VSIX" -d "$DEST" + +TMP="$(mktemp -d)" +trap 'rm -rf "$TMP"' EXIT +mcs "$HERE/patch.cs" -r:"$BIN/Mono.Cecil.dll" -out:"$TMP/patch.exe" +cp "$BIN/UnityDebug.exe" "$BIN/UnityDebug.exe.orig" +MONO_PATH="$BIN" mono "$TMP/patch.exe" "$BIN/UnityDebug.exe.orig" "$TMP/UnityDebug.exe" +cp "$TMP/UnityDebug.exe" "$BIN/UnityDebug.exe" +echo "unity-debug installed and patched in $DEST" diff --git a/unity-debug/patch.cs b/unity-debug/patch.cs new file mode 100644 index 0000000..e5a85e3 --- /dev/null +++ b/unity-debug/patch.cs @@ -0,0 +1,20 @@ +// Patches vscode-unity-debug's UnityProcessDiscovery.GetUnityEditorProcesses to +// prefix-match process names instead of requiring an exact "Unity"/"Unity Editor". +// The comparison is OrdinalIgnoreCase, so the "Unity" prefix then matches editors +// launched directly ("Unity") and via Unity Hub ("unityhub-unity-editor-"). +// Extra matches (UnityPackageManager etc.) are fine: with a config name containing +// "Editor", the adapter picks the editor by process_id from EditorInstance.json. +using System; using System.Linq; using Mono.Cecil; +class Patch { + static int Main(string[] a) { + var asm = AssemblyDefinition.ReadAssembly(a[0]); + var m = asm.MainModule.Types.SelectMany(t => t.Methods).Single(x => x.Name == "GetUnityEditorProcesses"); + var startsWith = asm.MainModule.ImportReference(typeof(string).GetMethod("StartsWith", new[] { typeof(string), typeof(StringComparison) })); + int c = 0; + foreach (var i in m.Body.Instructions) + if (i.Operand is MethodReference r && r.DeclaringType.FullName == "System.String" && r.Name == "Equals" && r.Parameters.Count == 2) { i.Operand = startsWith; c++; } + if (c != 1) { Console.Error.WriteLine($"expected 1 string.Equals call in {m.Name}, found {c}"); return 1; } + asm.Write(a[1]); + return 0; + } +}