From d062ac27ff3ac758766cfa68bbdb5cab64c82dab Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Sun, 12 Apr 2026 19:50:36 -0600 Subject: [PATCH] chore: release 0.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Major UI rework and stability release. Two floating chrome bars replace the old single toolbar, every resize/tabline-toggle edge case is handled, and every highlight now derives from the user's colorscheme. BREAKING CHANGES - `quit_exits_mode` option removed — `q` is now context-aware: if a DAP session is running, `q` terminates the session but keeps debug mode active so you can read the Console / inspect post-mortem state. Press `q` again to exit debug mode. - `help_on_enter` default is now `false` (was `true`). Control bar always shows `(?) help`, so the auto-popup is no longer needed. - Default layout changed: sidebar is Call Stack → Scopes → Watches → Breakpoints (all 25%). REPL is no longer in the default layout — press `E` during debug mode to open it as a floating window. - Console pane sizing: bottom Console is `max(8 rows, 20% of editor lines)` (previously hardcoded). Configurable via `console_height`. ADDED - Two-bar floating chrome, independent of any statusline plugin: status bar (top, 2 rows, brand + live dap.status text + state chip), control bar (bottom, 2 rows, clickable flow buttons + `(?) help` right-anchored). Italic qualifiers on step controls auto-drop at narrow widths. - Keymap-aware control bar — legend reflects user's actual remapped keys; disabled actions are omitted entirely. - IP arrow markers on stopped lines: 👉 gutter sign (priority 500) + 👈 REASON virtual text at EOL. - Optional debug-mode colorscheme via `colorscheme` option. - Theme-agnostic separator color (derives from WinBar.fg); global WinSeparator override during debug mode for consistent edge color. - `clear_console_on_start` (default true) — wipe Console scrollback on session start while preserving the terminal channel. - `collapsed_scopes` (default {"Registers"}) — auto-collapse noisy scopes that adapters don't flag expensive. - `max_value_width` (default 2000) — per-line truncation for values in Scopes/Watches. - `console_refresh_ms` (default 50) — trailing-edge Console repaint throttle. - `sidebar` option — "left" (default) or "right". - `active_window_highlight` (default true) — dim inactive dapui pane borders. - `W` and `K` now work in visual mode (operate on the selection). - Source window focused before DAP jumps on event_stopped. CHANGED - Bars are real splits (not overlapping floats). - pin_dapui_sizes() only re-pins on external geometry changes (tabline toggle); user manual pane drags survive. - ensure_dapui() runs ONCE per plugin lifetime, avoiding "Debug adapter didn't respond" timeouts on toggle. - Bars clamp to exactly 2 rows on every resize (no stray EOB `~`). - setup() is fully idempotent; plugin/turbo-debug.lua's deferred auto-setup yields to explicit user setup({...}). - Copyright holder: Stephen Waits . FIXED - Bars recreate if killed by shrink-below-minimum resize or tabline appear/disappear. - Inherited winbar cleared on bar windows (no phantom separator rows). - Layout re-asserts after `wincmd =`. - Sidebar proportions stable across re-entry. - Bar separators bright on both outward edges. - Deferred dependency loading waits for vim.pack.add to finalize. INTERNAL - Extracted 10+ helper functions in mode.lua; deduped ~25 call sites. - Data-driven sign definitions and Python interpreter probing. - Dead code removed: unused reposition_bars, vestigial sbar_zones/ handle_sbar_click. - Added regression tests: test_render_bars, test_highlights_cs, test_helpers. - stylua.toml added; all Lua code formatted. See CHANGELOG.md for the full 0.2.0 entry. --- CHANGELOG.md | 107 +++ LICENSE | 2 +- README.md | 67 +- assets/screenshot.png | Bin 137327 -> 152058 bytes doc/turbo-debug.txt | 321 +++++-- lua/turbo-debug/adapters/c.lua | 35 +- lua/turbo-debug/adapters/init.lua | 136 ++- lua/turbo-debug/adapters/javascript.lua | 9 +- lua/turbo-debug/breakpoints.lua | 20 +- lua/turbo-debug/config.lua | 20 +- lua/turbo-debug/help.lua | 64 +- lua/turbo-debug/init.lua | 11 +- lua/turbo-debug/mode.lua | 322 ++++--- plugin/turbo-debug.lua | 4 +- stylua.toml | 17 + tests/helpers.lua | 12 +- tests/test_render_bars.lua | 14 +- turbo-debug-spec.md | 1120 ----------------------- 18 files changed, 780 insertions(+), 1501 deletions(-) create mode 100644 stylua.toml delete mode 100644 turbo-debug-spec.md diff --git a/CHANGELOG.md b/CHANGELOG.md index cd64088..412ef6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,112 @@ # Changelog +## 0.2.0 — 2026-04-12 + +Major UI rework and stability release. Two floating chrome bars replace the +old single toolbar, every resize/tabline-toggle edge case is handled, and +every highlight now derives from the user's colorscheme. + +### Breaking changes + +- **`quit_exits_mode` option removed.** `q` is now context-aware: if a DAP + session is running, `q` terminates the session but keeps debug mode + active (so you can read the Console / inspect post-mortem state). Press + `q` again to exit debug mode. +- **`help_on_enter` default is now `false`** (was `true`). The control bar + always shows `(?) help`, so the auto-popup is no longer needed. Set to + `true` to restore the splash behavior. +- **Default layout changed.** Sidebar panes are now Call Stack → Scopes → + Watches → Breakpoints (all 25%). REPL is no longer in the default + layout — press `E` during debug mode to open it as a floating window. +- **Console pane sizing.** Bottom Console pane is `max(8 rows, 20% of + editor lines)` (previously hardcoded). Configurable via `console_height`. + +### Added + +- **Two-bar floating chrome**, independent of any statusline plugin: + - Status bar (top, 2 rows): brand, live `dap.status()` text, state chip + (` DEBUG · READY ` / ` · RUNNING ` / ` · PAUSED `) + - Control bar (bottom, 2 rows, above statusline): clickable buttons for + continue, step over, step into, step out, restart (during session), + terminate; `(?) help` right-anchored + - Italic qualifiers (`over`, `into`, `out`) on step controls — dropped + automatically at narrow widths +- **Keymap-aware control bar**: legend reflects the user's actual + remapped keys (honors `keys` override; disabled actions are omitted) +- **IP arrow markers** on stopped lines: paired 👉 gutter sign (priority + 500 so it always wins over breakpoint signs) + 👈 REASON virtual text + at EOL +- **Optional debug-mode colorscheme** via `colorscheme` option — theme + swaps on debug enter, restores on exit +- **Theme-agnostic separator color**: derives from `WinBar.fg` so the bar + chrome matches any colorscheme; global `WinSeparator` override during + debug mode gives the whole UI a consistent edge color +- **`clear_console_on_start`** (default `true`): wipe Console scrollback + on session start/restart while preserving the terminal channel +- **`collapsed_scopes`** (default `{ "Registers" }`): auto-collapse noisy + scopes; codelldb doesn't mark Registers expensive even though it's a + huge dump +- **`max_value_width`** (default `2000`): per-line truncation for values + in Scopes/Watches; prevents register-dump bleed +- **`console_refresh_ms`** (default `50`): trailing-edge throttle for + Console repaints under high-throughput stdout +- **`sidebar`** option — `"left"` (default) or `"right"` +- **`active_window_highlight`** (default `true`): dim inactive dapui pane + borders so the focused pane is visually obvious +- **`W` and `K` in visual mode**: watch / hover operate on the selection +- Live `dap.status()` polling via `User DapProgressUpdate` autocmd — + status text stays current across progress messages +- Source window is focused before DAP jumps on `event_stopped`, so + stepped-into library files open in the source area (not in a bar or + dapui pane) +- Console repaint throttle prevents editor lag under chatty programs + +### Changed + +- Bars are now real splits (not overlapping floats) — dapui and source + windows tuck between them naturally +- `pin_dapui_sizes()` only re-pins on EXTERNAL geometry changes + (bufferline tabline toggle, `wincmd =`) detected by total-height + delta; user's manual pane drags survive +- `ensure_dapui()` runs ONCE per plugin lifetime (not per `M.enter`), + avoiding "Debug adapter didn't respond" timeouts on toggle +- Bars clamp to exactly 2 rows on every VimResized / WinResized (prevents + stray EOB `~` when nvim grows a fixed-height window) +- `setup()` is now fully idempotent — safe to call multiple times with + different opts, and `plugin/turbo-debug.lua`'s deferred auto-setup + yields to explicit user `setup({...})` +- Copyright holder updated to `Stephen Waits ` + +### Fixed + +- Bars recreate themselves if killed by shrink-below-minimum resize or + tabline appearance/disappearance +- Inherited `winbar` from the splitting source window is cleared on bar + windows (was showing phantom separator rows) +- Layout re-asserts correctly after `wincmd =` (tiny-equalizer pass) +- Sidebar proportions stable across re-entry (no drift across toggles) +- Bar separators bright on both outward edges (top-of-sbar, bottom-of-cbar) +- Deferred dependency loading: `plugin/turbo-debug.lua` waits for + `vim.pack.add` to finalize runtimepath before calling `setup()` + +### Internal + +- Extracted 10+ helper functions in `mode.lua` (`win_ok`, `buf_ok`, + `is_dapui_pane_ft`, `for_each_dapui_pane`, `safe_extmark`, + `bar_set_lines`, `safe_set_height`, `if_still_active`, + `invalidate_dead_bars`, `focus_source_win`, `unset_and_restore`, + `install_cs_listener`) — deduped ~25 call sites +- Data-driven sign definitions (`breakpoints.lua`) and Python + interpreter candidate probing +- Dead code removed: unused `reposition_bars` stub, vestigial + `sbar_zones` / `handle_sbar_click` click infrastructure (status bar + has no clickable zones) +- Added regression tests: `test_render_bars` (sbar/cbar output, + dimensions, zones, overflow fallback), `test_highlights_cs` + (ColorScheme augroups, highlight re-apply), `test_helpers` + (keyof branching, source_window filtering) +- `stylua.toml` added; all Lua code formatted + ## 0.1.0 — 2026-04-11 Initial release. diff --git a/LICENSE b/LICENSE index 6e0146f..694cb77 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 Steve Waits +Copyright (c) 2026 Stephen Waits Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 8d7a134..6d237e1 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,12 @@ require("turbo-debug").setup({ toggle = "D", -- change the toggle chord }, sidebar = "right", -- "left" (default) or "right" - help_on_enter = false, -- disable the help splash + help_on_enter = true, -- show help popup on debug mode entry (default false) + + -- Optional theme swap for debug sessions. `nil` (default) keeps the + -- current colorscheme; any string is passed to `:colorscheme` on enter + -- and the original is restored on exit. + colorscheme = nil, -- Auto stop-on-entry when no breakpoints are set (Turbo Pascal model): -- press `c` on an empty-BP project and the debugger pauses at main(). @@ -112,23 +117,44 @@ require("turbo-debug").setup({ -- Console repaint throttle (ms). Max 1000/console_refresh_ms redraws per -- second when the debugged program spams stdout. Prevents editor DOS. console_refresh_ms = 50, + + -- Clear the Console pane on session start/restart (preserves the + -- terminal channel — only wipes scrollback). + clear_console_on_start = true, + + -- Scope names to default-collapse in Scopes. dapui auto-collapses any + -- scope the adapter marks `expensive`, but codelldb doesn't flag + -- Registers as expensive even though it's a huge dump. + collapsed_scopes = { "Registers" }, + + -- Dim inactive dapui pane borders so the focused pane is obvious. + active_window_highlight = true, }) ``` -### Control bar +### Chrome bars -When debug mode is active a 1-row floating bar appears directly above your -statusline, showing: +When debug mode is active, two 2-row floating bars appear, completely +independent of lualine, heirline, or any other statusline plugin: -- `● READY` / `● RUNNING` / `● PAUSED` session state chip (color-coded) -- Clickable controls: continue `▶`, step over, step into, step out, - restart, terminate, exit debug mode -- `dap.status()` progress text (right-aligned) -- Cursor position +**Status bar (top)** shows: +- The `turbo-debug` brand +- Live `dap.status()` progress text +- Session state chip: ` DEBUG · READY ` / ` · RUNNING ` / ` · PAUSED ` + (color-coded via `DiagnosticHint` / `DiagnosticInfo` / `DiagnosticError`) -The bar is completely independent of lualine, heirline, or any other -statusline plugin — it opens in its own floating window and closes cleanly -when debug mode exits. +**Control bar (bottom, above your statusline)** shows: +- Clickable buttons: `(c)ontinue` / `(s)tep` *over* / `(d)escend` *into* / + `(r)eturn` *out* / `(R)estart` (during session) / `(q) terminate` +- `(?) help` right-anchored +- Italic qualifiers (`over`, `into`, `out`) are inline when width allows; + auto-dropped on narrow terminals + +Both bars: +- Recreate themselves if killed by layout changes (bufferline tabline + toggles, `wincmd =`, etc.) +- Re-render on every DAP state change (|User DapProgressUpdate|) +- Close cleanly on exit ### Design notes @@ -136,18 +162,21 @@ when debug mode exits. the help popup (`?`), the hover popup (`K`), and the debug-eval popup (`E`). Floating windows are the only windows Neovim draws borders around in the terminal grid. Splits (the Scopes/Watches/Stacks/Breakpoints/ - REPL/Console panes) use the user's `WinSeparator` character — that's a + Console panes) use the user's `WinSeparator` character — that's a terminal-rendering limit, not a plugin choice. - **No hardcoded colors.** Every highlight links to a standard group (`DiagnosticError`, `Function`, `Comment`, `CursorLine`, `Visual`, - `Search`, `Title`, `Special`, etc.) so the plugin automatically inherits - your colorscheme on the fly. Switch themes mid-session and everything - re-paints. + `Search`, `Title`, `Special`, `WinBar`, etc.) so the plugin + automatically inherits your colorscheme on the fly. Switch themes + mid-session (or set `colorscheme = "high-contrast"` in `setup()` for + a dedicated debug theme) and everything re-paints. -- **Nerd Font Codicons** for all functional iconography (gutter signs, - control buttons, pane titles). Emoji (`👈` / `👉`) for the paused-line - arrows, because fingers-pointing-at-the-line is unmissable. +- **Emoji** (supplementary-plane, not VS16-dependent) for iconography: + 🔴 🟡 ⭕ 👉 📝 for gutter signs; 🟢 🚀 👣 🔽 🔼 🔄 🛑 for control + buttons; 🔎 👀 📚 🔴 💻 for pane titles. Colored emoji render + consistently in modern terminals (Ghostty, Kitty, WezTerm, iTerm) + without font-dependent rendering quirks. ## Supported Languages diff --git a/assets/screenshot.png b/assets/screenshot.png index 8b3691096aacae53a7f226e0039cac6050a428c3..f1055ac4fdbf3e63cf89316d45d7010b8d2603b9 100644 GIT binary patch literal 152058 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 KmEn^KNRA`&Hhz)9zFWdIykYl-;e?BN1uO-(;- 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

n|Ml=1320Y%xw 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 B+5rFn literal 137327 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 0.12. Setup is optional. The plugin works with no configuration. To customize: >lua require("turbo-debug").setup({ - help_on_enter = true, -- show help splash on debug mode entry - quit_exits_mode = true, -- q terminates AND exits debug mode - builtin_adapters = true, -- register built-in language adapters - keys = { ... }, -- override modal keybindings - global_keys = { ... }, -- override always-available keybindings - adapters = { ... }, -- override or add language adapters - dapui = { ... }, -- override nvim-dap-ui layout/settings - virtual_text = { ... }, -- override nvim-dap-virtual-text settings + help_on_enter = false, + builtin_adapters = true, + stop_on_entry_when_no_breakpoints = true, + max_value_width = 2000, + console_refresh_ms = 50, + collapsed_scopes = { "Registers" }, + clear_console_on_start = true, + sidebar = "left", + colorscheme = nil, + active_window_highlight = true, + keys = { ... }, + global_keys = { ... }, + adapters = { ... }, + dapui = { ... }, + virtual_text = { ... }, }) < *turbo-debug.setup.help_on_enter* help_on_enter ~ - Type: boolean, Default: `true` - Show the help box automatically when entering debug mode. + Type: boolean, Default: `false` + Show the help popup automatically when entering debug mode. The control + bar always shows `(?) help`, so most users don't need the splash. *turbo-debug.setup.builtin_adapters* builtin_adapters ~ Type: boolean, Default: `true` - Register built-in adapters for supported languages. Set to `false` to - disable all built-in adapter registration. + Register the built-in language adapters. Set to `false` to opt out of + all built-in adapter registration and manage adapters yourself. + + *turbo-debug.setup.stop_on_entry_when_no_breakpoints* +stop_on_entry_when_no_breakpoints ~ + Type: boolean, Default: `true` + When `c` is pressed with no breakpoints set, launch the first adapter + configuration for the filetype with `stopOnEntry = true` so the debugger + pauses at the program's entry point. Matches the Turbo Pascal "press + key to start debugging" model. Set `false` to always run until a + breakpoint. + + *turbo-debug.setup.max_value_width* +max_value_width ~ + Type: integer, Default: `2000` + Per-line character cap for variable values rendered in Scopes/Watches. + Values exceeding this are truncated with `…`. Default 2000 only catches + pathological multi-KB dumps; normal values pass through. Set to `0` to + disable truncation entirely. + + *turbo-debug.setup.console_refresh_ms* +console_refresh_ms ~ + Type: integer, Default: `50` + Trailing-edge throttle (ms) for Console pane repaints when the debugged + program outputs. Max `1000/console_refresh_ms` redraws per second. + Prevents editor lag under high-throughput output. + + *turbo-debug.setup.collapsed_scopes* +collapsed_scopes ~ + Type: string[], Default: `{ "Registers" }` + Scope names (as reported by the DAP adapter) to default-collapse. Some + adapters (codelldb for Rust/C++, for example) don't mark Registers as + "expensive" even though it's a huge dump. Any scope name in this list + is treated as expensive — dapui auto-collapses expensive scopes. + + *turbo-debug.setup.clear_console_on_start* +clear_console_on_start ~ + Type: boolean, Default: `true` + Clear the Console pane on session start/restart. The terminal channel + is preserved — only the displayed scrollback is wiped. + + *turbo-debug.setup.sidebar* +sidebar ~ + Type: string, Default: `"left"` + Sidebar position: `"left"` or `"right"`. Controls which side of the + editor the Stacks/Scopes/Watches/Breakpoints column appears on. + + *turbo-debug.setup.colorscheme* +colorscheme ~ + Type: string|nil, Default: `nil` + Optional colorscheme to switch to while debug mode is active. `nil` + keeps the user's current colorscheme. Any other string value is passed + to `:colorscheme`. The previous colorscheme is restored on exit. + + *turbo-debug.setup.active_window_highlight* +active_window_highlight ~ + Type: boolean, Default: `true` + Dim inactive dapui panes' borders so the focused pane is visually + obvious. + + *turbo-debug.setup.keys* +keys ~ + Type: table, Default: see |turbo-debug.keys| + Override modal keybindings (active only during debug mode). Set any + entry to `false` to disable that action entirely. + + *turbo-debug.setup.global_keys* +global_keys ~ + Type: table, Default: see |turbo-debug.keys| + Override always-available keybindings. Set any entry to `false` to + disable. + + *turbo-debug.setup.adapters* +adapters ~ + Type: table, Default: `{}` + Override or add language adapters. Keyed by adapter name; each value + is a table with `adapter` (passed to |dap.adapters|) and/or + `configurations` (passed to |dap.configurations|) fields. User + overrides are applied after the built-ins, so existing adapter entries + are replaced. + + *turbo-debug.setup.dapui* +dapui ~ + Type: table + Pass-through configuration for nvim-dap-ui's |dapui.setup()|. Override + icons, controls, floating window style, render options, etc. + + *turbo-debug.setup.virtual_text* +virtual_text ~ + Type: table + Pass-through configuration for nvim-dap-virtual-text. Set + `virtual_text = { enabled = false }` to disable inline variable + values entirely. ============================================================================== 4. Debug Mode *turbo-debug-debug-mode* @@ -74,17 +176,28 @@ builtin_adapters ~ Press `dd` to toggle debug mode. Entering debug mode: -1. Opens nvim-dap-ui with the configured layout -2. Enables inline virtual text for variable values -3. Activates modal keybindings (buffer-local) -4. Shows winbar indicator and help splash (3s) +1. Switches colorscheme (if |turbo-debug.setup.colorscheme| is set) +2. Applies turbo-debug highlight groups +3. Opens nvim-dap-ui (sidebar + Console pane) +4. Creates the floating status bar (top) and control bar (bottom) +5. Installs modal keybindings on every buffer +6. Enables nvim-dap-virtual-text +7. Optionally shows the help popup (|turbo-debug.setup.help_on_enter|) Exiting debug mode (any of): - `dd` again (manual toggle) -- `q` (terminate session — exits debug mode if `quit_exits_mode`) -- DAP session ends naturally +- `q` when no DAP session is running +- Context-aware `q`: if a session IS running, `q` terminates the session + but leaves debug mode active so you can inspect the Console / watch + post-mortem state. Press `q` again to exit debug mode. -On exit, everything is restored: keymaps, UI, virtual text, cursor. +On exit, everything is restored: +- Modal keymaps removed, any prior user mappings re-installed +- Source window's original `winbar` restored +- `WinSeparator` highlight restored byte-for-byte +- Original colorscheme restored (if one was swapped in) +- dapui panes closed, control bars removed +- Virtual text disabled ============================================================================== 5. Keybindings *turbo-debug.keys* @@ -95,7 +208,7 @@ keys you don't need while debugging, but preserve all navigation keys. Default keymap: Key Action Mnemonic ~ - `c` Continue Universal across debuggers + `c` Continue / start Universal across debuggers `s` Step over Step `d` Step into Descend into the function `r` Step out Return from the function @@ -105,8 +218,8 @@ Default keymap: `D` Clear all breakpoints Delete all `W` Watch expr under cursor Watch `K` Hover / inspect Matches LSP hover convention - `E` Eval in REPL Evaluate - `q` Terminate session Quit debugging + `E` Eval in REPL Evaluate (floating REPL) + `q` Smart quit Context-aware terminate / exit `R` Restart session Rerun `?` Help popup Show keybindings @@ -117,29 +230,30 @@ Always available (under `d` prefix, with which-key support): `dX` Conditional breakpoint Shift variant `dD` Clear all breakpoints Delete all +`W` and `K` also work in visual mode — they operate on the visual +selection. + Override any key: >lua require("turbo-debug").setup({ - keys = { -- modal keys (debug mode only) - continue = "g", - step_over = false, -- set to false to disable + keys = { + continue = "g", -- remap a modal key + step_over = false, -- disable a modal key }, - global_keys = { -- always-available keys + global_keys = { toggle = "DD", breakpoint = "db", }, }) < -Preserved keys (not shadowed): -- Navigation: `h j k l w b e f F t T / n N 0 ^ $ G g { } % [ ]` -- Insert: `i a o O` (needed for REPL/terminal) -- Visual/yank: `v V y p u` -- All Ctrl/leader combos +Inside dapui panes (Watches / Scopes / Stacks / Breakpoints / REPL), the +native dapui mappings `` / `e` / `o` / `d` / `r` / `t` still work — +our modal `d` (step-into) and `r` (step-out) yield inside those buffers. - *turbo-debug.setup.quit_exits_mode* -quit_exits_mode ~ - Type: boolean, Default: `true` - Whether `q` (terminate) also exits debug mode. Set to `false` if you - want `q` to terminate the process but keep the debug UI open. +Preserved keys (never shadowed in source buffers): +- Navigation: `h j k l w b e f F t T / n N 0 ^ $ G g { } % [ ]` +- Insert: `i a o O` +- Visual/yank/edit: `v V y p u` +- All Ctrl/Alt/leader combos ============================================================================== 6. Breakpoints *turbo-debug-breakpoints* @@ -147,23 +261,57 @@ quit_exits_mode ~ Breakpoints are managed by persistent-breakpoints.nvim. They persist across Neovim restarts and are visible in the sign column at all times. -`dx` toggles a breakpoint (always available). -`dX` sets a conditional breakpoint (always available). -`x`, `X`, `D` also work as shortcuts during debug mode. +Global shortcuts (always available): + `dx` Toggle breakpoint + `dX` Conditional breakpoint (prompts for condition) + `dD` Clear all breakpoints + +Modal shortcuts (debug mode only): `x` `X` `D` do the same. + +Gutter signs (colorful emoji in modern terminals): + 🔴 breakpoint + 🟡 conditional breakpoint + ⭕ rejected breakpoint (DAP server couldn't set it) + 👉 current execution line (paired with `👈 REASON` virtual text) + 📝 logpoint ============================================================================== -7. UI Layout *turbo-debug-layout* +7. Chrome Bars *turbo-debug-chrome* + +Debug mode opens two floating bars, independent of any statusline plugin: + +Status bar (top, 2 rows) shows: +- `turbo-debug` brand +- `dap.status()` progress text (right of brand) +- State chip: ` DEBUG · READY ` / ` · RUNNING ` / ` · PAUSED ` + +Control bar (bottom, 2 rows, above your statusline) shows: +- Clickable buttons for `(c)ontinue`, `(s)tep` over, `(d)escend` into, + `(r)eturn` out, `(R)estart` (during session), `(q)uit` +- Italic qualifiers (`over`, `into`, `out`) shown inline when width allows +- `(?) help` anchored on the right +- Click any button to fire its action + +Both bars update live on DAP state transitions (|User DapProgressUpdate|) +and on editor resize. They survive tabline toggles (bufferline appear/ +disappear) — killed bars are recreated automatically. + +============================================================================== +8. UI Layout *turbo-debug-layout* Default layout: - Left sidebar (40 columns): - - Scopes (50%) — local/global variables in current frame - - Watches (25%) — user-added watch expressions - - Stacks (25%) — call stack navigation + Sidebar (|turbo-debug.setup.sidebar|, left or right, 25-40 cols): + - Call Stack (25%) — current frames, navigate with `` + - Scopes (25%) — local/global variables in current frame + - Watches (25%) — user-added watch expressions (|W|) + - Breakpoints (25%) — all persistent breakpoints, jump with `` - Bottom tray (12 lines): - - REPL (50%) — evaluate expressions - - Console (50%) — program stdout/stderr + Bottom pane (20% of editor lines, min 8 rows): + - Console — program stdout/stderr + adapter output + +REPL is NOT in the default layout. Press `E` during debug mode to open it +as a floating window on demand. Override the layout: >lua require("turbo-debug").setup({ @@ -173,7 +321,7 @@ Override the layout: >lua }) < ============================================================================== -8. Adapters *turbo-debug.adapters* +9. Adapters *turbo-debug.adapters* Built-in adapter support (adapter binary must be installed): @@ -192,25 +340,39 @@ Built-in adapter support (adapter binary must be installed): Lua (Neovim) osv one-small-step-for-vimkind Path resolution order: -1. User override via `opts.adapters` +1. User override via |turbo-debug.setup.adapters| 2. Binary on `$PATH` 3. Standard mason install path (~/.local/share/nvim/mason/bin/) -Adapter binaries are the user's responsibility to install. +Rust gets special treatment: pressing `c` runs `cargo build` automatically +and picks the binary via `vim.ui.select` if multiple artifacts exist. + +Python auto-detects virtualenvs: `VIRTUAL_ENV`, `CONDA_PREFIX`, then the +common directories `.venv`, `venv`, `env`, `.env` relative to `cwd`. + +Adapter binaries are the user's responsibility to install (mason.nvim is +the easiest route). Override or add adapters: >lua require("turbo-debug").setup({ adapters = { - python = { ... }, -- override built-in - zig = { ... }, -- add new language + python = { adapter = { ... }, configurations = { ... } }, + zig = { adapter = { ... }, configurations = { ... } }, }, builtin_adapters = false, -- disable all built-ins }) < -Existing user nvim-dap configurations are never overridden. +Existing user nvim-dap configurations are never overridden — if a user +has already set `dap.adapters[name]` before `turbo-debug.setup()` runs, +we skip it. ============================================================================== -9. API *turbo-debug-api* +10. API *turbo-debug-api* + + *turbo-debug.setup()* +require("turbo-debug").setup({opts}) + Initialize the plugin with optional configuration. Idempotent — safe + to call multiple times; the last call's opts win. *turbo-debug.toggle()* require("turbo-debug").toggle() @@ -222,24 +384,29 @@ require("turbo-debug").active() Useful for statusline integration. ============================================================================== -10. Troubleshooting *turbo-debug-troubleshooting* +11. Troubleshooting *turbo-debug-troubleshooting* No adapter found ~ Ensure the adapter binary is installed and on your PATH, or installed - via mason.nvim. turbo-debug configures adapters, it does not install + via mason.nvim. turbo-debug configures adapters; it does not install them. Breakpoints not persisting ~ - Check that persistent-breakpoints.nvim is loaded. Run: - `:lua print(require("persistent-breakpoints") and "ok")` - + Check that persistent-breakpoints.nvim is loaded: >vim + :lua print(require("persistent-breakpoints") and "ok") +< Virtual text not appearing ~ Virtual text only appears during an active DAP session in debug mode. - Ensure nvim-dap-virtual-text is loaded: - `:lua print(require("nvim-dap-virtual-text") and "ok")` + Ensure nvim-dap-virtual-text is loaded: >vim + :lua print(require("nvim-dap-virtual-text") and "ok") +< +Bars look squished / have stray `~` markers ~ + The bars auto-clamp to 2 rows on every resize event. If you see this + persistently, please open an issue with your terminal and + `:set lines? columns?` output. Version error ~ - turbo-debug.nvim requires Neovim >= 0.12 for vim.pack support. + turbo-debug.nvim requires Neovim >= 0.12 for `vim.pack` support. ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/lua/turbo-debug/adapters/c.lua b/lua/turbo-debug/adapters/c.lua index bde768c..7b90d2b 100644 --- a/lua/turbo-debug/adapters/c.lua +++ b/lua/turbo-debug/adapters/c.lua @@ -4,15 +4,11 @@ local M = {} local function pick_executable(executables) local co = coroutine.running() - if not co then - return executables[1] - end + if not co then return executables[1] end vim.ui.select(executables, { prompt = "Select executable", format_item = function(path) return vim.fn.fnamemodify(path, ":t") end, - }, function(choice) - coroutine.resume(co, choice) - end) + }, function(choice) coroutine.resume(co, choice) end) return coroutine.yield() end @@ -54,9 +50,7 @@ function M.register(dap) }, } - if not dap.adapters.codelldb then - dap.adapters.codelldb = adapter - end + if not dap.adapters.codelldb then dap.adapters.codelldb = adapter end -- C/C++/Swift: pick from compiled executables in cwd local prompt_config = { @@ -64,9 +58,7 @@ function M.register(dap) type = "codelldb", request = "launch", name = "Launch executable", - program = function() - return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") - end, + program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end, cwd = "${workspaceFolder}", }, } @@ -75,15 +67,16 @@ function M.register(dap) end -- Rust: cargo build + picker - dap.configurations.rust = dap.configurations.rust or { - { - type = "codelldb", - request = "launch", - name = "Cargo build & launch", - program = cargo_build_and_pick, - cwd = "${workspaceFolder}", - }, - } + dap.configurations.rust = dap.configurations.rust + or { + { + type = "codelldb", + request = "launch", + name = "Cargo build & launch", + program = cargo_build_and_pick, + cwd = "${workspaceFolder}", + }, + } end return M diff --git a/lua/turbo-debug/adapters/init.lua b/lua/turbo-debug/adapters/init.lua index 75edd20..5c99968 100644 --- a/lua/turbo-debug/adapters/init.lua +++ b/lua/turbo-debug/adapters/init.lua @@ -23,43 +23,102 @@ end -- simple executable adapters (inlined — no separate files needed) local function register_simple_adapters(dap) local simple = { - { "netcoredbg", { "netcoredbg" }, { - type = "executable", args = { "--interpreter=vscode" }, - }, { { - type = "netcoredbg", request = "launch", name = "Launch .NET", - program = function() return vim.fn.input("Path to DLL: ", vim.fn.getcwd() .. "/bin/Debug/", "file") end, - } }, { "cs" } }, + { + "netcoredbg", + { "netcoredbg" }, + { + type = "executable", + args = { "--interpreter=vscode" }, + }, + { + { + type = "netcoredbg", + request = "launch", + name = "Launch .NET", + program = function() return vim.fn.input("Path to DLL: ", vim.fn.getcwd() .. "/bin/Debug/", "file") end, + }, + }, + { "cs" }, + }, - { "java", { "java-debug-adapter" }, { - type = "executable", - }, { { - type = "java", request = "launch", name = "Launch class", - mainClass = function() return vim.fn.input("Main class: ") end, - cwd = "${workspaceFolder}", - } }, { "java" } }, + { + "java", + { "java-debug-adapter" }, + { + type = "executable", + }, + { + { + type = "java", + request = "launch", + name = "Launch class", + mainClass = function() return vim.fn.input("Main class: ") end, + cwd = "${workspaceFolder}", + }, + }, + { "java" }, + }, - { "kotlin", { "kotlin-debug-adapter" }, { - type = "executable", - }, { { - type = "kotlin", request = "launch", name = "Launch main", - mainClass = function() return vim.fn.input("Main class: ") end, - projectRoot = "${workspaceFolder}", - } }, { "kotlin" } }, + { + "kotlin", + { "kotlin-debug-adapter" }, + { + type = "executable", + }, + { + { + type = "kotlin", + request = "launch", + name = "Launch main", + mainClass = function() return vim.fn.input("Main class: ") end, + projectRoot = "${workspaceFolder}", + }, + }, + { "kotlin" }, + }, - { "php", { "php-debug-adapter" }, { - type = "executable", - }, { { - type = "php", request = "launch", name = "Listen for Xdebug", port = 9003, - } }, { "php" } }, + { + "php", + { "php-debug-adapter" }, + { + type = "executable", + }, + { + { + type = "php", + request = "launch", + name = "Listen for Xdebug", + port = 9003, + }, + }, + { "php" }, + }, - { "rdbg", { "rdbg" }, { - type = "server", port = "${port}", - executable = { command = nil, args = { "-n", "--open", "--port", "${port}", "-c", "--", "ruby", "${file}" } }, - }, { { - type = "rdbg", request = "launch", name = "Launch file", command = "ruby", script = "${file}", - }, { - type = "rdbg", request = "attach", name = "Attach", localfsMap = "${workspaceFolder}", - } }, { "ruby" } }, + { + "rdbg", + { "rdbg" }, + { + type = "server", + port = "${port}", + executable = { command = nil, args = { "-n", "--open", "--port", "${port}", "-c", "--", "ruby", "${file}" } }, + }, + { + { + type = "rdbg", + request = "launch", + name = "Launch file", + command = "ruby", + script = "${file}", + }, + { + type = "rdbg", + request = "attach", + name = "Attach", + localfsMap = "${workspaceFolder}", + }, + }, + { "ruby" }, + }, } for _, s in ipairs(simple) do @@ -77,10 +136,13 @@ local function register_simple_adapters(dap) local ok, osv = pcall(require, "osv") if ok then M.register(dap, "nlua", { - type = "server", host = "127.0.0.1", + type = "server", + host = "127.0.0.1", port = function() return osv.launch({ port = 0 }) end, }, { { - type = "nlua", request = "attach", name = "Attach to running Neovim", + type = "nlua", + request = "attach", + name = "Attach to running Neovim", } }, { "lua" }) end end @@ -93,9 +155,7 @@ function M.setup() -- load adapters with non-trivial logic from separate files for _, name in ipairs({ "python", "go", "c", "javascript" }) do local ok, adapter_mod = pcall(require, "turbo-debug.adapters." .. name) - if ok and adapter_mod.register then - adapter_mod.register(dap) - end + if ok and adapter_mod.register then adapter_mod.register(dap) end end -- register simple adapters inlined above diff --git a/lua/turbo-debug/adapters/javascript.lua b/lua/turbo-debug/adapters/javascript.lua index acc56c5..6850d21 100644 --- a/lua/turbo-debug/adapters/javascript.lua +++ b/lua/turbo-debug/adapters/javascript.lua @@ -27,15 +27,16 @@ function M.register(dap) type = "pwa-node", request = "attach", name = "Attach", - processId = function() - return require("dap.utils").pick_process() - end, + processId = function() return require("dap.utils").pick_process() end, cwd = "${workspaceFolder}", }, } loader.register(dap, "pwa-node", adapter, configurations, { - "javascript", "typescript", "javascriptreact", "typescriptreact", + "javascript", + "typescript", + "javascriptreact", + "typescriptreact", }) end diff --git a/lua/turbo-debug/breakpoints.lua b/lua/turbo-debug/breakpoints.lua index 5d73776..a5ff7e0 100644 --- a/lua/turbo-debug/breakpoints.lua +++ b/lua/turbo-debug/breakpoints.lua @@ -42,6 +42,7 @@ function M.setup() -- ⭕ U+2B55 heavy large circle = rejected breakpoint -- 👉 U+1F449 backhand pointing right = current execution line (IP) -- 📝 U+1F4DD memo = log point + -- stylua: ignore start local signs = { { "DapBreakpoint", "\xf0\x9f\x94\xb4" }, { "DapBreakpointCondition", "\xf0\x9f\x9f\xa1" }, @@ -49,9 +50,14 @@ function M.setup() { "DapStopped", "\xf0\x9f\x91\x89", { linehl = "DapStoppedLine" } }, { "DapLogPoint", "\xf0\x9f\x93\x9d" }, } + -- stylua: ignore end for _, s in ipairs(signs) do local spec = { text = s[2], texthl = s[1], numhl = s[1] } - if s[3] then for k, v in pairs(s[3]) do spec[k] = v end end + if s[3] then + for k, v in pairs(s[3]) do + spec[k] = v + end + end vim.fn.sign_define(s[1], spec) end @@ -62,6 +68,7 @@ function M.setup() vim.api.nvim_set_hl(0, "NvimDapVirtualTextInfo", { default = true, link = "DiagnosticInfo", italic = true }) -- turbo-debug's own UI groups (help float, active-pane borders, winbar badge) + -- stylua: ignore start vim.api.nvim_set_hl(0, "TurboDebugHelpBrand", { default = true, link = "Title" }) vim.api.nvim_set_hl(0, "TurboDebugHelpTagline", { default = true, link = "Comment", italic = true }) vim.api.nvim_set_hl(0, "TurboDebugHelpSection", { default = true, link = "Function" }) @@ -70,6 +77,7 @@ function M.setup() vim.api.nvim_set_hl(0, "TurboDebugHelpParen", { default = true, link = "Comment" }) vim.api.nvim_set_hl(0, "TurboDebugCtrlButton", { default = true, link = "Function" }) vim.api.nvim_set_hl(0, "TurboDebugCtrlMuted", { default = true, link = "Comment" }) + -- stylua: ignore end -- derived highlight: the IP "reason" vtext (STEP / BREAKPOINT / EXCEPTION / -- PAUSE / etc.) — bold + reverse + WarningMsg color so it renders as an @@ -80,7 +88,11 @@ function M.setup() local ok, src = pcall(vim.api.nvim_get_hl, 0, { name = "WarningMsg", link = false }) if not ok or not src or not src.fg then return end vim.api.nvim_set_hl(0, "TurboDebugIPReason", { - fg = src.fg, bg = src.bg, bold = true, reverse = true, default = true, + fg = src.fg, + bg = src.bg, + bold = true, + reverse = true, + default = true, }) end apply_ip_reason_hl() @@ -98,9 +110,7 @@ function M.setup() { gk.clear_breakpoints, pb.clear_all_breakpoints, "Clear all breakpoints" }, } for _, b in ipairs(bindings) do - if b[1] then - vim.keymap.set("n", b[1], b[2], { silent = true, desc = b[3] }) - end + if b[1] then vim.keymap.set("n", b[1], b[2], { silent = true, desc = b[3] }) end end end diff --git a/lua/turbo-debug/config.lua b/lua/turbo-debug/config.lua index 66c712d..6b43636 100644 --- a/lua/turbo-debug/config.lua +++ b/lua/turbo-debug/config.lua @@ -76,8 +76,8 @@ M.defaults = { -- ▾ U+25BE down-triangle (expanded), ▸ U+25B8 right-triangle (collapsed), -- ▶ U+25B6 right-pointing triangle (current frame / play-head) icons = { - expanded = "\xe2\x96\xbe", - collapsed = "\xe2\x96\xb8", + expanded = "\xe2\x96\xbe", + collapsed = "\xe2\x96\xb8", current_frame = "\xe2\x96\xb6", }, controls = { @@ -86,14 +86,14 @@ M.defaults = { -- ▶ play, ⏸ pause, ⤓ step-into, ⇒ step-over, ⤒ step-out, ↶ step-back, -- ↻ run-last, ■ terminate, ⊗ disconnect icons = { - play = "\xe2\x96\xb6", - pause = "\xe2\x8f\xb8", - step_into = "\xe2\xa4\x93", - step_over = "\xe2\x87\x92", - step_out = "\xe2\xa4\x92", - step_back = "\xe2\x86\xb6", - run_last = "\xe2\x86\xbb", - terminate = "\xe2\x96\xa0", + play = "\xe2\x96\xb6", + pause = "\xe2\x8f\xb8", + step_into = "\xe2\xa4\x93", + step_over = "\xe2\x87\x92", + step_out = "\xe2\xa4\x92", + step_back = "\xe2\x86\xb6", + run_last = "\xe2\x86\xbb", + terminate = "\xe2\x96\xa0", disconnect = "\xe2\x8a\x97", }, }, diff --git a/lua/turbo-debug/help.lua b/lua/turbo-debug/help.lua index e80ad60..9491c4c 100644 --- a/lua/turbo-debug/help.lua +++ b/lua/turbo-debug/help.lua @@ -11,25 +11,25 @@ local buf_id = nil -- config.opts.keys[action] lookup. Highlight spans are computed against -- the actual key letter in the final line. local flow = { - { "continue", "c", "(", ")ontinue" }, - { "step_over", "s", "(", ")tep over" }, - { "step_into", "d", "(", ")escend into" }, - { "step_out", "r", "(", ")eturn out" }, - { "run_to_cursor", "C", "run to (", ") cursor" }, - { "restart", "R", "(", ")estart session" }, - { "terminate", "q", "(", ")uit debugging" }, + { "continue", "c", "(", ")ontinue" }, + { "step_over", "s", "(", ")tep over" }, + { "step_into", "d", "(", ")escend into" }, + { "step_out", "r", "(", ")eturn out" }, + { "run_to_cursor", "C", "run to (", ") cursor" }, + { "restart", "R", "(", ")estart session" }, + { "terminate", "q", "(", ")uit debugging" }, } local breakpoints = { - { "breakpoint", "x", "(", ") toggle breakpoint" }, - { "cond_breakpoint", "X", "(", ") conditional breakpoint" }, + { "breakpoint", "x", "(", ") toggle breakpoint" }, + { "cond_breakpoint", "X", "(", ") conditional breakpoint" }, { "clear_breakpoints", "D", "(", ")elete all breakpoints" }, } local inspect = { { "watch", "W", "(", ")atch expression" }, { "hover", "K", "(", ") hover / inspect" }, - { "eval", "E", "(", ")val in REPL" }, + { "eval", "E", "(", ")val in REPL" }, } local meta = { @@ -37,27 +37,27 @@ local meta = { } local globals = { - { "breakpoint", "toggle breakpoint" }, - { "cond_breakpoint", "conditional breakpoint" }, + { "breakpoint", "toggle breakpoint" }, + { "cond_breakpoint", "conditional breakpoint" }, { "clear_breakpoints", "delete all breakpoints" }, } local dapui_panes = { { "", "expand / jump to target" }, - { "o", "open target (jump to frame / breakpoint)" }, - { "e", "edit (watches)" }, - { "d", "remove (watches)" }, - { "r", "send to REPL" }, - { "t", "toggle subtle frames (call stack)" }, + { "o", "open target (jump to frame / breakpoint)" }, + { "e", "edit (watches)" }, + { "d", "remove (watches)" }, + { "r", "send to REPL" }, + { "t", "toggle subtle frames (call stack)" }, } -- ▶ U+25B6, ● U+25CF, ◉ U+25C9, ◆ U+25C6, ❯ U+276F, ≡ U+2261 -local ICON_FLOW = "\xe2\x96\xb6" -local ICON_BRK = "\xe2\x97\x8f" +local ICON_FLOW = "\xe2\x96\xb6" +local ICON_BRK = "\xe2\x97\x8f" local ICON_INSPECT = "\xe2\x97\x89" -local ICON_META = "\xe2\x97\x86" +local ICON_META = "\xe2\x97\x86" local ICON_CHEVRON = "\xe2\x9d\xaf" -local ICON_STACK = "\xe2\x89\xa1" +local ICON_STACK = "\xe2\x89\xa1" -- a brand header and tagline local BRAND_TITLE = " " .. ICON_FLOW .. " TURBO DEBUG" @@ -68,7 +68,7 @@ local function build() local hl = {} -- list of { line_idx, col_start, col_end, hl_group } -- title + tagline highlights - hl[#hl + 1] = { 1, 0, #BRAND_TITLE, "TurboDebugHelpBrand" } + hl[#hl + 1] = { 1, 0, #BRAND_TITLE, "TurboDebugHelpBrand" } hl[#hl + 1] = { 2, 0, #BRAND_TAGLINE, "TurboDebugHelpTagline" } local function section(icon, title) @@ -161,18 +161,16 @@ local function build() lines[#lines + 1] = "" local width = 0 - for _, l in ipairs(lines) do if vim.fn.strdisplaywidth(l) > width then width = vim.fn.strdisplaywidth(l) end end + for _, l in ipairs(lines) do + if vim.fn.strdisplaywidth(l) > width then width = vim.fn.strdisplaywidth(l) end + end return lines, width + 2, hl end function M.close() - if win_id and vim.api.nvim_win_is_valid(win_id) then - vim.api.nvim_win_close(win_id, true) - end + if win_id and vim.api.nvim_win_is_valid(win_id) then vim.api.nvim_win_close(win_id, true) end win_id = nil - if buf_id and vim.api.nvim_buf_is_valid(buf_id) then - vim.api.nvim_buf_delete(buf_id, { force = true }) - end + if buf_id and vim.api.nvim_buf_is_valid(buf_id) then vim.api.nvim_buf_delete(buf_id, { force = true }) end buf_id = nil end @@ -188,7 +186,9 @@ function M.open() local ns = vim.api.nvim_create_namespace("turbo-debug.help") for _, span in ipairs(hl) do pcall(vim.api.nvim_buf_set_extmark, buf_id, ns, span[1], span[2], { - end_row = span[1], end_col = span[3], hl_group = span[4], + end_row = span[1], + end_col = span[3], + hl_group = span[4], }) end @@ -216,8 +216,6 @@ function M.open() }) end -function M.is_open() - return win_id ~= nil and vim.api.nvim_win_is_valid(win_id) -end +function M.is_open() return win_id ~= nil and vim.api.nvim_win_is_valid(win_id) end return M diff --git a/lua/turbo-debug/init.lua b/lua/turbo-debug/init.lua index a3752cc..dc542fa 100644 --- a/lua/turbo-debug/init.lua +++ b/lua/turbo-debug/init.lua @@ -27,17 +27,14 @@ function M.setup(opts) local toggle_key = config.opts.global_keys.toggle if toggle_key then vim.keymap.set("n", toggle_key, function() mode.toggle() end, { - silent = true, desc = "Toggle debug mode", + silent = true, + desc = "Toggle debug mode", }) end end -function M.toggle() - mode.toggle() -end +function M.toggle() mode.toggle() end -function M.active() - return mode.is_active() -end +function M.active() return mode.is_active() end return M diff --git a/lua/turbo-debug/mode.lua b/lua/turbo-debug/mode.lua index efe8247..45a608f 100644 --- a/lua/turbo-debug/mode.lua +++ b/lua/turbo-debug/mode.lua @@ -57,6 +57,7 @@ local vt_initialized = false -- All in the PUA range U+EA60..U+EC1E. Encoded as UTF-8 bytes so the source -- file stays ASCII through any tool pipeline that strips PUA codepoints. +-- stylua: ignore start local ICON = { -- Control-bar emoji — strictly supplementary-plane (U+1F000+) or -- standalone-emoji-default (like 🛑) codepoints. No VS16-dependent @@ -105,6 +106,7 @@ local ICON = { wrap_mark = "\xe2\x86\xb3", -- ↳ downward arrow w/ tip right hline = "\xe2\x94\x80", -- ─ light horizontal } +-- stylua: ignore end -- ─── layout ────────────────────────────────────────────────────────────────── @@ -114,8 +116,7 @@ local function build_default_layouts() -- Console height: max(8 rows, 20% of total editor lines). More -- generous than the previous 15% — user reported the Console kept -- feeling "laughably small" so we're allocating real estate. - local console_size = config.opts.console_height - or math.max(8, math.floor(vim.o.lines * 0.2)) + local console_size = config.opts.console_height or math.max(8, math.floor(vim.o.lines * 0.2)) -- Sidebar width: ideal 40 cols, never less than 25, never more than 1/3 -- of tty width. Scales down gracefully on narrow terminals, stops at 40 @@ -129,9 +130,9 @@ local function build_default_layouts() -- Order: Call Stack → Scopes → Watches → Breakpoints. -- Equal 25% share per user preference. elements = { - { id = "stacks", size = 0.25 }, - { id = "scopes", size = 0.25 }, - { id = "watches", size = 0.25 }, + { id = "stacks", size = 0.25 }, + { id = "scopes", size = 0.25 }, + { id = "watches", size = 0.25 }, { id = "breakpoints", size = 0.25 }, }, }, @@ -151,14 +152,14 @@ end local function define_highlights() local hl = vim.api.nvim_set_hl - hl(0, "TurboDebugBorderActive", { default = true, link = "Function" }) + hl(0, "TurboDebugBorderActive", { default = true, link = "Function" }) hl(0, "TurboDebugBorderInactive", { default = true, link = "Comment" }) - hl(0, "TurboDebugWinbar", { default = true, link = "DiagnosticError" }) + hl(0, "TurboDebugWinbar", { default = true, link = "DiagnosticError" }) -- Bar background: link to Normal so the bar blends with dapui's own -- pane borders (which use Normal or WinBar — both share the editor's -- default background). StatusLine was too dark and created a visible -- seam between the bar and the surrounding panes. - hl(0, "TurboDebugBar", { default = true, link = "Normal" }) + hl(0, "TurboDebugBar", { default = true, link = "Normal" }) -- Bar separator: fg derived from WinBar.fg at runtime so it matches -- whatever color the user's theme uses for pane-title chrome -- (dapui renders each pane's title in its winbar, so this is @@ -168,17 +169,17 @@ local function define_highlights() -- -- Placeholder link so the group exists as a sane default even -- before the derive runs. - hl(0, "TurboDebugBarSeparator", { default = true, link = "WinSeparator" }) + hl(0, "TurboDebugBarSeparator", { default = true, link = "WinSeparator" }) -- Control labels: link to Normal so the text blends with the bar's -- Normal-bg surface. StatusLine bg was creating a visible color patch -- behind each label. The key letter still pops via TurboDebugBarKey -- (Special fg, bold), and icons carry their own emoji color. - hl(0, "TurboDebugBarCtrl", { default = true, link = "Normal" }) - hl(0, "TurboDebugBarStatus", { default = true, link = "Comment" }) - hl(0, "TurboDebugBarBrand", { default = true, link = "Title" }) - hl(0, "TurboDebugBarReady", { default = true, link = "DiagnosticHint" }) - hl(0, "TurboDebugBarRunning", { default = true, link = "DiagnosticInfo" }) - hl(0, "TurboDebugBarPaused", { default = true, link = "DiagnosticError" }) + hl(0, "TurboDebugBarCtrl", { default = true, link = "Normal" }) + hl(0, "TurboDebugBarStatus", { default = true, link = "Comment" }) + hl(0, "TurboDebugBarBrand", { default = true, link = "Title" }) + hl(0, "TurboDebugBarReady", { default = true, link = "DiagnosticHint" }) + hl(0, "TurboDebugBarRunning", { default = true, link = "DiagnosticInfo" }) + hl(0, "TurboDebugBarPaused", { default = true, link = "DiagnosticError" }) -- Italic qualifier words ("over", "into", "out") shown after the -- step/descend/return labels. Subordinate styling: Comment fg + italic, -- so the key label ("(s)tep") reads primary and the qualifier ("over") @@ -191,7 +192,9 @@ local function define_highlights() return end vim.api.nvim_set_hl(0, "TurboDebugBarItalic", { - fg = src.fg, italic = true, default = true, + fg = src.fg, + italic = true, + default = true, }) end local function install_cs_listener(name, fn) @@ -215,7 +218,10 @@ local function define_highlights() return end vim.api.nvim_set_hl(0, "TurboDebugBarKey", { - fg = src.fg, bg = src.bg, bold = true, default = true, + fg = src.fg, + bg = src.bg, + bold = true, + default = true, }) end install_cs_listener("TurboDebugBarKeyHL", apply_key_hl) @@ -256,8 +262,10 @@ end -- forces the pane's winbar row to stay bright even when the pane is -- unfocused (nvim renders unfocused wins with WinBarNC). Nordfox happens to -- make them identical; other themes don't. -local DAPUI_WINHL_ACTIVE = "WinBar:WinBar,WinBarNC:WinBar,WinSeparator:TurboDebugBorderActive,FloatBorder:TurboDebugBorderActive" -local DAPUI_WINHL_INACTIVE = "WinBar:WinBar,WinBarNC:WinBar,WinSeparator:TurboDebugBorderInactive,FloatBorder:TurboDebugBorderInactive" +local DAPUI_WINHL_ACTIVE = + "WinBar:WinBar,WinBarNC:WinBar,WinSeparator:TurboDebugBorderActive,FloatBorder:TurboDebugBorderActive" +local DAPUI_WINHL_INACTIVE = + "WinBar:WinBar,WinBarNC:WinBar,WinSeparator:TurboDebugBorderInactive,FloatBorder:TurboDebugBorderInactive" local function setup_active_win_highlights() local active_hl = DAPUI_WINHL_ACTIVE @@ -267,9 +275,7 @@ local function setup_active_win_highlights() local function apply(win, hl) if vim.api.nvim_win_is_valid(win) and vim.api.nvim_win_get_config(win).relative == "" then local ft = vim.bo[vim.api.nvim_win_get_buf(win)].filetype or "" - if ft:match("^dapui_") or ft == "dap-repl" then - vim.wo[win].winhighlight = hl - end + if ft:match("^dapui_") or ft == "dap-repl" then vim.wo[win].winhighlight = hl end end end vim.api.nvim_create_autocmd("WinEnter", { @@ -299,8 +305,12 @@ local function buf_ok(b) return b and vim.api.nvim_buf_is_valid(b) end -- setup_active_win_highlights / the FileType autocmd, and different from -- schedule_console_redraw's `dapui_console` single-check — don't unify. local DAPUI_PANE_FTS = { - dapui_stacks = true, dapui_scopes = true, dapui_watches = true, - dapui_breakpoints = true, dapui_console = true, ["dap-repl"] = true, + dapui_stacks = true, + dapui_scopes = true, + dapui_watches = true, + dapui_breakpoints = true, + dapui_console = true, + ["dap-repl"] = true, } local function is_dapui_pane_ft(ft) return ft ~= nil and DAPUI_PANE_FTS[ft] == true end @@ -317,9 +327,7 @@ local function for_each_dapui_pane(cb) end -- Bar extmarks go through bar_ns + pcall. IP marker uses ip_ns separately. -local function safe_extmark(buf, row, col, opts) - pcall(vim.api.nvim_buf_set_extmark, buf, bar_ns, row, col, opts) -end +local function safe_extmark(buf, row, col, opts) pcall(vim.api.nvim_buf_set_extmark, buf, bar_ns, row, col, opts) end local function bar_set_lines(buf, lines) vim.bo[buf].modifiable = true @@ -332,12 +340,18 @@ local function safe_set_height(w, h) pcall(vim.api.nvim_win_set_height, w, h) en -- Defer fn via vim.schedule; re-check `active` at fire time so the body -- doesn't run after M.exit cleared state. local function if_still_active(fn) - vim.schedule(function() if active then fn() end end) + vim.schedule(function() + if active then fn() end + end) end local function invalidate_dead_bars() - if not win_ok(sbar_win) then sbar_win, sbar_buf = nil, nil end - if not win_ok(cbar_win) then cbar_win, cbar_buf = nil, nil end + if not win_ok(sbar_win) then + sbar_win, sbar_buf = nil, nil + end + if not win_ok(cbar_win) then + cbar_win, cbar_buf = nil, nil + end end -- click zones for the control bar. Each entry: { line_1based, dcol_start, dcol_end, fn } @@ -354,7 +368,10 @@ local function dap_state() end local function action(name) - return function() local a = M.actions(); if a[name] then a[name]() end end + return function() + local a = M.actions() + if a[name] then a[name]() end + end end -- Returns the user's configured key for an action, or the fallback default @@ -388,11 +405,14 @@ local function build_control_text(icon, actual_key, label, italic) local function add(s) parts[#parts + 1] = s end local function col() return #table.concat(parts) end - local inline = actual_key and label and #actual_key == 1 - and #label >= 1 - and label:sub(1, 1):lower() == actual_key:lower() + local inline = actual_key + and label + and #actual_key == 1 + and #label >= 1 + and label:sub(1, 1):lower() == actual_key:lower() - add(icon); add(" ") + add(icon) + add(" ") add("(") local key_col = col() add(actual_key) @@ -459,21 +479,29 @@ local function render_sbar() vim.api.nvim_buf_clear_namespace(sbar_buf, bar_ns, 0, -1) safe_extmark(sbar_buf, 0, 0, { - end_row = 0, end_col = #sep, hl_group = "TurboDebugBarSeparator", + end_row = 0, + end_col = #sep, + hl_group = "TurboDebugBarSeparator", }) -- content row safe_extmark(sbar_buf, 1, 0, { - end_row = 1, end_col = #brand_text, hl_group = "TurboDebugBarBrand", + end_row = 1, + end_col = #brand_text, + hl_group = "TurboDebugBarBrand", }) if status_dw > 0 then local status_byte_start = #brand_text + pad_left safe_extmark(sbar_buf, 1, status_byte_start, { - end_row = 1, end_col = status_byte_start + #status_msg, hl_group = "TurboDebugBarStatus", + end_row = 1, + end_col = status_byte_start + #status_msg, + hl_group = "TurboDebugBarStatus", }) end local chip_byte_start = #content_line - #state_chip safe_extmark(sbar_buf, 1, chip_byte_start, { - end_row = 1, end_col = #content_line, hl_group = state_hl, + end_row = 1, + end_col = #content_line, + hl_group = state_hl, }) end @@ -504,17 +532,27 @@ local function render_cbar() local continue_label = has_session and "continue" or "start" local terminate_label = has_session and "terminate" or "quit" + -- stylua: ignore start local controls = { { id = "continue", icon = continue_icon, default = "c", label = continue_label, italic = nil, fn = action("continue") }, { id = "step_over", icon = ICON.step_over, default = "s", label = "step", italic = "over", fn = action("step_over") }, { id = "step_into", icon = ICON.step_into, default = "d", label = "descend", italic = "into", fn = action("step_into") }, { id = "step_out", icon = ICON.step_out, default = "r", label = "return", italic = "out", fn = action("step_out") }, } + -- stylua: ignore end -- (R)estart is only meaningful during an active session if has_session then - controls[#controls + 1] = { id = "restart", icon = ICON.restart, default = "R", label = "restart", italic = nil, fn = action("restart") } + controls[#controls + 1] = + { id = "restart", icon = ICON.restart, default = "R", label = "restart", italic = nil, fn = action("restart") } end - controls[#controls + 1] = { id = "terminate", icon = ICON.stop, default = "q", label = terminate_label, italic = nil, fn = action("terminate") } + controls[#controls + 1] = { + id = "terminate", + icon = ICON.stop, + default = "q", + label = terminate_label, + italic = nil, + fn = action("terminate"), + } local gap = " " local function build_controls(include_italic) @@ -534,9 +572,7 @@ local function render_cbar() parts[#parts + 1] = txt spans[#spans + 1] = { prefix_len, prefix_len + #txt, "TurboDebugBarCtrl" } key_spans[#key_spans + 1] = { prefix_len + kcol, prefix_len + kend } - if icol then - italic_spans[#italic_spans + 1] = { prefix_len + icol, prefix_len + iend } - end + if icol then italic_spans[#italic_spans + 1] = { prefix_len + icol, prefix_len + iend } end zones[#zones + 1] = { prefix_len, prefix_len + #txt, c.fn } end end @@ -546,12 +582,10 @@ local function render_cbar() -- Try with italic qualifiers first; fall back to the compact form if -- the label row would overflow the available width. Min 1-char padding -- on each side of the controls-plus-help block. - local controls_text, ctrl_spans, ctrl_key_spans, ctrl_italic_spans, ctrl_zones_bytes = - build_controls(true) + local controls_text, ctrl_spans, ctrl_key_spans, ctrl_italic_spans, ctrl_zones_bytes = build_controls(true) local controls_dw = vim.fn.strdisplaywidth(controls_text) if controls_dw + help_dw + 2 > width then - controls_text, ctrl_spans, ctrl_key_spans, ctrl_italic_spans, ctrl_zones_bytes = - build_controls(false) + controls_text, ctrl_spans, ctrl_key_spans, ctrl_italic_spans, ctrl_zones_bytes = build_controls(false) controls_dw = vim.fn.strdisplaywidth(controls_text) end @@ -570,30 +604,40 @@ local function render_cbar() vim.api.nvim_buf_clear_namespace(cbar_buf, bar_ns, 0, -1) safe_extmark(cbar_buf, 1, 0, { - end_row = 1, end_col = #sep, hl_group = "TurboDebugBarSeparator", + end_row = 1, + end_col = #sep, + hl_group = "TurboDebugBarSeparator", }) -- control labels on row 0 (content row) local ctrl_byte_offset = ctrl_pad_left for _, span in ipairs(ctrl_spans) do safe_extmark(cbar_buf, 0, ctrl_byte_offset + span[1], { - end_row = 0, end_col = ctrl_byte_offset + span[2], hl_group = span[3], + end_row = 0, + end_col = ctrl_byte_offset + span[2], + hl_group = span[3], }) end for _, span in ipairs(ctrl_key_spans) do safe_extmark(cbar_buf, 0, ctrl_byte_offset + span[1], { - end_row = 0, end_col = ctrl_byte_offset + span[2], hl_group = "TurboDebugBarKey", + end_row = 0, + end_col = ctrl_byte_offset + span[2], + hl_group = "TurboDebugBarKey", }) end for _, span in ipairs(ctrl_italic_spans) do safe_extmark(cbar_buf, 0, ctrl_byte_offset + span[1], { - end_row = 0, end_col = ctrl_byte_offset + span[2], hl_group = "TurboDebugBarItalic", + end_row = 0, + end_col = ctrl_byte_offset + span[2], + hl_group = "TurboDebugBarItalic", }) end local help_byte_start = #content_line - #help_text safe_extmark(cbar_buf, 0, help_byte_start, { - end_row = 0, end_col = #content_line, hl_group = "TurboDebugBarCtrl", + end_row = 0, + end_col = #content_line, + hl_group = "TurboDebugBarCtrl", }) cbar_zones = {} @@ -601,14 +645,13 @@ local function render_cbar() local byte_start = ctrl_byte_offset + z[1] local byte_end = ctrl_byte_offset + z[2] local dcol_start = vim.fn.strdisplaywidth(content_line:sub(1, byte_start)) - local dcol_end = vim.fn.strdisplaywidth(content_line:sub(1, byte_end)) + local dcol_end = vim.fn.strdisplaywidth(content_line:sub(1, byte_end)) -- content is on buffer row 0 = window line 1 cbar_zones[#cbar_zones + 1] = { 1, dcol_start, dcol_end, z[3] } end local help_dcol_start = vim.fn.strdisplaywidth(content_line:sub(1, help_byte_start)) - local help_dcol_end = vim.fn.strdisplaywidth(content_line) - cbar_zones[#cbar_zones + 1] = { 1, help_dcol_start, help_dcol_end, - function() require("turbo-debug.help").open() end } + local help_dcol_end = vim.fn.strdisplaywidth(content_line) + cbar_zones[#cbar_zones + 1] = { 1, help_dcol_start, help_dcol_end, function() require("turbo-debug.help").open() end } end local function render_bars() @@ -652,8 +695,9 @@ local function setup_bar_win(win) -- might pick up (with laststatus=2 every window gets one) blends -- into the bar's Normal bg instead of rendering in the dark default -- StatusLine color — which was the "wrong color border below top bar". - vim.wo[win].winhighlight = "Normal:TurboDebugBar,EndOfBuffer:TurboDebugBar,StatusLine:TurboDebugBar,StatusLineNC:TurboDebugBar" - vim.wo[win].statusline = " " -- empty content; hl makes it invisible + vim.wo[win].winhighlight = + "Normal:TurboDebugBar,EndOfBuffer:TurboDebugBar,StatusLine:TurboDebugBar,StatusLineNC:TurboDebugBar" + vim.wo[win].statusline = " " -- empty content; hl makes it invisible vim.wo[win].winfixheight = true vim.wo[win].list = false vim.wo[win].cursorline = false @@ -671,9 +715,7 @@ local function bounce_out(buf) buffer = buf, callback = function() vim.schedule(function() - if vim.api.nvim_get_current_buf() == buf then - pcall(vim.cmd, "wincmd p") - end + if vim.api.nvim_get_current_buf() == buf then pcall(vim.cmd, "wincmd p") end end) end, }) @@ -700,9 +742,7 @@ local function open_bars() bounce_out(sbar_buf) end - if vim.api.nvim_win_is_valid(caller_win) then - pcall(vim.api.nvim_set_current_win, caller_win) - end + if vim.api.nvim_win_is_valid(caller_win) then pcall(vim.api.nvim_set_current_win, caller_win) end -- control bar (bottom) if not (win_ok(cbar_win)) then @@ -719,9 +759,7 @@ local function open_bars() bounce_out(cbar_buf) end - if vim.api.nvim_win_is_valid(caller_win) then - pcall(vim.api.nvim_set_current_win, caller_win) - end + if vim.api.nvim_win_is_valid(caller_win) then pcall(vim.api.nvim_set_current_win, caller_win) end render_bars() end @@ -735,15 +773,12 @@ local function pin_dapui_sizes() local pane_wins = {} for_each_dapui_pane(function(buf, ft) local wins = vim.fn.win_findbuf(buf) - if wins and win_ok(wins[1]) then - pane_wins[ft] = wins[1] - end + if wins and win_ok(wins[1]) then pane_wins[ft] = wins[1] end end) -- Console to configured height if pane_wins.dapui_console then - local target = config.opts.console_height - or math.max(8, math.floor(vim.o.lines * 0.2)) + local target = config.opts.console_height or math.max(8, math.floor(vim.o.lines * 0.2)) safe_set_height(pane_wins.dapui_console, target) end @@ -790,12 +825,8 @@ end -- subsequent pin_dapui_sizes() call redistributes it across the dapui -- panes according to our initial proportions. local function ensure_bar_heights() - if win_ok(sbar_win) and vim.api.nvim_win_get_height(sbar_win) ~= 2 then - safe_set_height(sbar_win, 2) - end - if win_ok(cbar_win) and vim.api.nvim_win_get_height(cbar_win) ~= 2 then - safe_set_height(cbar_win, 2) - end + if win_ok(sbar_win) and vim.api.nvim_win_get_height(sbar_win) ~= 2 then safe_set_height(sbar_win, 2) end + if win_ok(cbar_win) and vim.api.nvim_win_get_height(cbar_win) ~= 2 then safe_set_height(cbar_win, 2) end end -- Sum the heights of all currently-open dapui pane windows. Used to detect @@ -828,6 +859,7 @@ local function set_dapui_window_opts(win) -- rendered gutter), and the `~` end-of-buffer markers — these are pure -- noise in debug-info panes where there's no file to navigate. if vim.api.nvim_win_is_valid(win) then + -- stylua: ignore start vim.wo[win].wrap = true vim.wo[win].breakindent = true vim.wo[win].linebreak = true @@ -845,6 +877,7 @@ local function set_dapui_window_opts(win) -- first render (not just after the first WinEnter/WinLeave cycle). -- setup_active_win_highlights overwrites on focus change. vim.wo[win].winhighlight = DAPUI_WINHL_INACTIVE + -- stylua: ignore end end end @@ -896,19 +929,18 @@ local function ensure_dapui() patch_format_value() local dap = require("dap") - dap.listeners.after.event_initialized["turbo-debug"] = function() - require("dapui").open() - end + dap.listeners.after.event_initialized["turbo-debug"] = function() require("dapui").open() end -- K = hover during a live dap session (global, not per-buffer) dap.listeners.after.event_initialized["turbo-debug-hover"] = function() - vim.keymap.set("n", "K", function() - require("dap.ui.widgets").hover(nil, { border = "rounded" }) - end, { silent = true, desc = "DAP hover" }) - end - dap.listeners.after.event_terminated["turbo-debug-hover"] = function() - pcall(vim.keymap.del, "n", "K") + vim.keymap.set( + "n", + "K", + function() require("dap.ui.widgets").hover(nil, { border = "rounded" }) end, + { silent = true, desc = "DAP hover" } + ) end + dap.listeners.after.event_terminated["turbo-debug-hover"] = function() pcall(vim.keymap.del, "n", "K") end -- console refresh: trailing-edge throttled so chatty programs don't DOS us dap.listeners.after.event_output["turbo-debug-redraw"] = schedule_console_redraw @@ -927,9 +959,7 @@ local function ensure_dapui() local ok, placed = pcall(vim.fn.sign_getplaced, buf, { group = "*" }) if ok and placed and placed[1] then for _, s in ipairs(placed[1].signs or {}) do - if s.name == "DapStopped" then - pcall(vim.fn.sign_unplace, s.group or "", { buffer = buf, id = s.id }) - end + if s.name == "DapStopped" then pcall(vim.fn.sign_unplace, s.group or "", { buffer = buf, id = s.id }) end end end end @@ -948,11 +978,11 @@ local function ensure_dapui() -- event_stopped/event_continued leaves queued messages behind and -- the bar shows stale state until the next render. local function refresh_bars() vim.schedule(render_bars) end - dap.listeners.after.event_initialized["turbo-debug-bar"] = refresh_bars - dap.listeners.after.event_stopped["turbo-debug-bar"] = refresh_bars - dap.listeners.after.event_continued["turbo-debug-bar"] = refresh_bars - dap.listeners.after.event_terminated["turbo-debug-bar"] = refresh_bars - dap.listeners.after.event_exited["turbo-debug-bar"] = refresh_bars + dap.listeners.after.event_initialized["turbo-debug-bar"] = refresh_bars + dap.listeners.after.event_stopped["turbo-debug-bar"] = refresh_bars + dap.listeners.after.event_continued["turbo-debug-bar"] = refresh_bars + dap.listeners.after.event_terminated["turbo-debug-bar"] = refresh_bars + dap.listeners.after.event_exited["turbo-debug-bar"] = refresh_bars vim.api.nvim_create_autocmd("User", { pattern = "DapProgressUpdate", group = vim.api.nvim_create_augroup("TurboDebugDapProgress", { clear = true }), @@ -985,11 +1015,11 @@ local function ensure_dapui() -- Our extmark sign at priority 500 always wins, guaranteeing the -- paused line has the finger-pointing icon in the gutter. pcall(vim.api.nvim_buf_set_extmark, buf, ip_ns, line, 0, { - sign_text = "\xf0\x9f\x91\x89", -- 👉 U+1F449 + sign_text = "\xf0\x9f\x91\x89", -- 👉 U+1F449 sign_hl_group = "DapStopped", virt_text = { { " " .. ICON.ip_left .. " ", "DapStopped" }, - { reason, "TurboDebugIPReason" }, + { reason, "TurboDebugIPReason" }, }, virt_text_pos = "eol", hl_mode = "combine", @@ -997,9 +1027,9 @@ local function ensure_dapui() }) end, 50) end - dap.listeners.after.event_continued["turbo-debug-ip"] = function() clear_ip() end + dap.listeners.after.event_continued["turbo-debug-ip"] = function() clear_ip() end dap.listeners.before.event_terminated["turbo-debug-ip"] = function() clear_ip() end - dap.listeners.before.event_exited["turbo-debug-ip"] = function() clear_ip() end + dap.listeners.before.event_exited["turbo-debug-ip"] = function() clear_ip() end -- Clear the Console pane on session start/restart. -- @@ -1029,8 +1059,8 @@ local function ensure_dapui() end -- Fire before every session-starting verb so old scrollback is gone -- before the new session's output begins. - dap.listeners.before.launch["turbo-debug-clear-console"] = clear_console - dap.listeners.before.attach["turbo-debug-clear-console"] = clear_console + dap.listeners.before.launch["turbo-debug-clear-console"] = clear_console + dap.listeners.before.attach["turbo-debug-clear-console"] = clear_console dap.listeners.before.restart["turbo-debug-clear-console"] = clear_console -- Default-collapse scopes the user considers noisy (Registers on @@ -1056,12 +1086,12 @@ local function ensure_dapui() -- recognition. REPL is iconless per user preference (its prompt is -- already visually distinct enough). local titles = { - dapui_scopes = " " .. ICON.scopes .. " Scopes", - dapui_watches = " " .. ICON.watches .. " Watches", - dapui_stacks = " " .. ICON.stacks .. " Call Stack", + dapui_scopes = " " .. ICON.scopes .. " Scopes", + dapui_watches = " " .. ICON.watches .. " Watches", + dapui_stacks = " " .. ICON.stacks .. " Call Stack", dapui_breakpoints = " " .. ICON.breakpoints .. " Breakpoints", - dapui_console = " " .. ICON.terminal .. " Console", - ["dap-repl"] = " REPL", + dapui_console = " " .. ICON.terminal .. " Console", + ["dap-repl"] = " REPL", } vim.api.nvim_create_autocmd("FileType", { pattern = { "dapui_*", "dap-repl" }, @@ -1118,10 +1148,7 @@ source_window = function() if not vim.api.nvim_win_is_valid(w) then return false end if vim.api.nvim_win_get_config(w).relative ~= "" then return false end local ft = vim.bo[vim.api.nvim_win_get_buf(w)].filetype or "" - return ft ~= "" - and not ft:match("^dapui_") - and ft ~= "dap-repl" - and ft ~= "TurboDebugBar" + return ft ~= "" and not ft:match("^dapui_") and ft ~= "dap-repl" and ft ~= "TurboDebugBar" end if is_source(cur) then return cur end for _, w in ipairs(vim.api.nvim_list_wins()) do @@ -1136,9 +1163,7 @@ end -- already returned focus — the picker ends up unfocused. Actually shift. local function focus_source_win() local w = source_window() - if w and w ~= vim.api.nvim_get_current_win() then - pcall(vim.api.nvim_set_current_win, w) - end + if w and w ~= vim.api.nvim_get_current_win() then pcall(vim.api.nvim_set_current_win, w) end end local function run_in_source(fn) @@ -1162,7 +1187,10 @@ end local function smart_continue() local dap = require("dap") - if dap.session() then dap.continue(); return end + if dap.session() then + dap.continue() + return + end run_in_source(function() if config.opts.stop_on_entry_when_no_breakpoints ~= false and not has_any_breakpoint() then launch_with_stop_on_entry() @@ -1198,18 +1226,22 @@ local function setup_actions() local pb = require("persistent-breakpoints.api") actions_cache = { - continue = smart_continue, - step_over = function() step_or_launch(dap.step_over) end, - step_into = function() step_or_launch(dap.step_into) end, - step_out = function() step_or_launch(dap.step_out) end, + continue = smart_continue, + step_over = function() step_or_launch(dap.step_over) end, + step_into = function() step_or_launch(dap.step_into) end, + step_out = function() step_or_launch(dap.step_out) end, run_to_cursor = function() dap.run_to_cursor() end, - restart = function() dap.restart() end, - terminate = smart_terminate, + restart = function() dap.restart() end, + terminate = smart_terminate, help = function() - if help.is_open() then help.close() else help.open() end + if help.is_open() then + help.close() + else + help.open() + end end, - breakpoint = function() pb.toggle_breakpoint() end, - cond_breakpoint = function() pb.set_conditional_breakpoint() end, + breakpoint = function() pb.toggle_breakpoint() end, + cond_breakpoint = function() pb.set_conditional_breakpoint() end, clear_breakpoints = function() pb.clear_all_breakpoints() end, watch = function() local expr @@ -1219,12 +1251,10 @@ local function setup_actions() else expr = vim.fn.expand("") end - if expr and expr ~= "" then - require("dapui").elements.watches.add(expr) - end + if expr and expr ~= "" then require("dapui").elements.watches.add(expr) end end, hover = function() require("dapui").eval() end, - eval = function() require("dapui").float_element("repl") end, + eval = function() require("dapui").float_element("repl") end, } return actions_cache end @@ -1278,9 +1308,7 @@ function M._install_for_buf(buf) end local opts = { buffer = buf, silent = true, nowait = true, desc = "turbo-debug: " .. name } pcall(vim.keymap.set, "n", key, acts[name], opts) - if visual_actions[name] then - pcall(vim.keymap.set, "v", key, acts[name], opts) - end + if visual_actions[name] then pcall(vim.keymap.set, "v", key, acts[name], opts) end end end end @@ -1291,9 +1319,7 @@ end -- clobbered by our subsequent del. local function unset_and_restore(buf, name, entry) pcall(vim.keymap.del, "n", entry.key, { buffer = buf }) - if visual_actions[name] then - pcall(vim.keymap.del, "v", entry.key, { buffer = buf }) - end + if visual_actions[name] then pcall(vim.keymap.del, "v", entry.key, { buffer = buf }) end if entry.prev_n then restore_mapping(buf, "n", entry.prev_n) end if entry.prev_v then restore_mapping(buf, "v", entry.prev_v) end end @@ -1321,9 +1347,7 @@ local function set_debug_chrome() end local function clear_debug_chrome() - if win_ok(active_win) then - vim.wo[active_win].winbar = saved_winbar or "" - end + if win_ok(active_win) then vim.wo[active_win].winbar = saved_winbar or "" end active_win = nil saved_winbar = nil end @@ -1335,8 +1359,11 @@ function M.enter() active = true -- Switch colorscheme BEFORE define_highlights so the TurboDebug* -- highlights derive their colors from the debug-mode theme. - if type(config.opts.colorscheme) == "string" and config.opts.colorscheme ~= "" - and vim.g.colors_name ~= config.opts.colorscheme then + if + type(config.opts.colorscheme) == "string" + and config.opts.colorscheme ~= "" + and vim.g.colors_name ~= config.opts.colorscheme + then saved_colorscheme = vim.g.colors_name pcall(vim.cmd.colorscheme, config.opts.colorscheme) end @@ -1384,13 +1411,10 @@ function M.enter() if not active then return end vim.schedule(function() invalidate_dead_bars() - if not (sbar_win and cbar_win) then - open_bars() - end + if not (sbar_win and cbar_win) then open_bars() end ensure_bar_heights() local dapui_total = compute_dapui_total_height() - if last_dapui_total_height ~= nil - and dapui_total ~= last_dapui_total_height then + if last_dapui_total_height ~= nil and dapui_total ~= last_dapui_total_height then pin_dapui_sizes() dapui_total = compute_dapui_total_height() end @@ -1465,7 +1489,11 @@ function M.exit() end function M.toggle() - if active then M.exit() else M.enter() end + if active then + M.exit() + else + M.enter() + end end function M.is_active() return active end @@ -1478,7 +1506,9 @@ M._test = { build_control_text = build_control_text, define_highlights = define_highlights, source_window = function() return source_window() end, - set_bars = function(sw, sb, cw, cb) sbar_win, sbar_buf, cbar_win, cbar_buf = sw, sb, cw, cb end, + set_bars = function(sw, sb, cw, cb) + sbar_win, sbar_buf, cbar_win, cbar_buf = sw, sb, cw, cb + end, get_bars = function() return sbar_win, sbar_buf, cbar_win, cbar_buf end, get_sbar_zones = function() return {} end, get_cbar_zones = function() return cbar_zones end, diff --git a/plugin/turbo-debug.lua b/plugin/turbo-debug.lua index ad0228d..e287325 100644 --- a/plugin/turbo-debug.lua +++ b/plugin/turbo-debug.lua @@ -12,9 +12,7 @@ vim.pack.add({ "theHamsta/nvim-dap-virtual-text" }) vim.pack.add({ "Weissle/persistent-breakpoints.nvim" }) -- register which-key group if available -pcall(function() - require("which-key").add({ { "d", group = "debug" } }) -end) +pcall(function() require("which-key").add({ { "d", group = "debug" } }) end) -- Deferred auto-setup. Must be deferred (not called synchronously) because -- the vim.pack.add calls above might not have finished registering the diff --git a/stylua.toml b/stylua.toml new file mode 100644 index 0000000..7bfa1e5 --- /dev/null +++ b/stylua.toml @@ -0,0 +1,17 @@ +# stylua.toml +# A modern, idiomatic configuration optimized for Neovim/Luau ecosystems. + +# General Formatting +column_width = 120 # Provides enough horizontal space for modern monitors without wrapping too early. +line_endings = "Unix" # Enforces LF (\n) line endings to prevent cross-platform Git issues. + +# Indentation +indent_type = "Spaces" # Spaces are the modern standard over tabs in Lua ecosystems. +indent_width = 2 # 2 spaces prevent deep nesting (common in Lua tables/callbacks) from drifting too far right. + +# Quotes & Strings +quote_style = "AutoPreferDouble" # Defaults to " but uses ' if it prevents needing escape characters. + +# Function Calls & Statements +call_parentheses = "Always" # Forces `require("module")` instead of `require "module"` for clarity. +collapse_simple_statement = "Always" # Allows simple statements (like `if not x then return end`) to live on one line. diff --git a/tests/helpers.lua b/tests/helpers.lua index 04c4317..8b153ad 100644 --- a/tests/helpers.lua +++ b/tests/helpers.lua @@ -1,21 +1,15 @@ local M = {} function M.assert_eq(a, b, msg) - if a ~= b then - error(string.format("FAIL: %s — expected %s, got %s", msg, vim.inspect(b), vim.inspect(a))) - end + if a ~= b then error(string.format("FAIL: %s — expected %s, got %s", msg, vim.inspect(b), vim.inspect(a))) end end function M.assert_true(v, msg) - if not v then - error(string.format("FAIL: %s — expected truthy, got %s", msg, vim.inspect(v))) - end + if not v then error(string.format("FAIL: %s — expected truthy, got %s", msg, vim.inspect(v))) end end function M.assert_false(v, msg) - if v then - error(string.format("FAIL: %s — expected falsy, got %s", msg, vim.inspect(v))) - end + if v then error(string.format("FAIL: %s — expected falsy, got %s", msg, vim.inspect(v))) end end return M diff --git a/tests/test_render_bars.lua b/tests/test_render_bars.lua index 6ea4940..b455611 100644 --- a/tests/test_render_bars.lua +++ b/tests/test_render_bars.lua @@ -21,14 +21,10 @@ local function make_bar_win() end local function cleanup(win) - if win and vim.api.nvim_win_is_valid(win) then - pcall(vim.api.nvim_win_close, win, true) - end + if win and vim.api.nvim_win_is_valid(win) then pcall(vim.api.nvim_win_close, win, true) end end -local function line(buf, i) - return vim.api.nvim_buf_get_lines(buf, i, i + 1, false)[1] or "" -end +local function line(buf, i) return vim.api.nvim_buf_get_lines(buf, i, i + 1, false)[1] or "" end -- build_control_text ------------------------------------------------------- @@ -120,8 +116,10 @@ do local content = line(buf, 0) -- italic qualifiers are "over", "into", "out" — on overflow they're omitted. -- At width 25 with 5+ controls, there's no way they all fit with italics. - assert_false(content:find(" over ") or content:find(" into ") or content:find(" out "), - "overflow: italic qualifiers absent at narrow width") + assert_false( + content:find(" over ") or content:find(" into ") or content:find(" out "), + "overflow: italic qualifiers absent at narrow width" + ) mode._test.set_bars(nil, nil, nil, nil) cleanup(win) end diff --git a/turbo-debug-spec.md b/turbo-debug-spec.md deleted file mode 100644 index 81a24ff..0000000 --- a/turbo-debug-spec.md +++ /dev/null @@ -1,1120 +0,0 @@ -# turbo-debug.nvim — Product Specification - -## What Is This? - -A Neovim 0.12+ plugin that gives you a fully-featured, beautiful debugging -experience out of one line of config. The kind of debugger you remember from -Turbo Pascal, Delphi, Visual Studio — where you just hit a key and everything -works: breakpoints persist, variables show their values inline, you can hover -anything, watch expressions update live, and the whole UI is laid out like -someone cared. - -Under the hood it wires together nvim-dap, nvim-dap-ui, nvim-dap-virtual-text, -and persistent-breakpoints into a single cohesive experience with modal -keybindings. The user installs one plugin and gets everything. - -```lua -vim.pack.add("swaits/turbo-debug") -``` - -That's it. That's the whole setup. - -## Design Principles - -1. **Just works.** Install it, press `d`, start debugging. No adapter - config needed for common languages. No DAP boilerplate. No reading wiki - pages to get "hello world" to hit a breakpoint. - -2. **A real debugger.** Inline variable values in the source code. Hover any - expression to see its value. Persistent breakpoints that survive restarts. - Watch expressions you can add from the code window. Scopes, stacks, REPL, - console — all laid out cleanly. This is not a toy. - -3. **Minimal code, maximal experience.** We don't reimplement anything. We - configure nvim-dap, nvim-dap-ui, nvim-dap-virtual-text, and - persistent-breakpoints with opinionated defaults and glue them together - with modal keybindings. The smallest amount of code that delivers a - professional debugging experience. - -4. **Principle of least surprise.** Keybindings should be guessable. `c` is - continue. `s` is step. `q` is quit. If you can't guess it, the help box is - right there. No cleverness that requires documentation. - -5. **Modal, not polluting.** Debug keybindings exist only during a debug - session. They shadow editing keys you don't need while debugging. They - never shadow navigation keys you do need. When the session ends, your - editor is exactly as it was. - -6. **Configurable, not opinionated to a fault.** Every keybinding is - overridable. The dap-ui layout can be replaced. Adapter configs can be - extended. But the defaults should be good enough that most people never - touch any of it. - -7. **Clean, simple code everywhere.** No abstraction for abstraction's sake. - No metaprogramming tricks. A new contributor should read the source top to - bottom in ten minutes and understand everything. - -## What The User Gets - -One plugin install. Zero configuration. All of this: - -- **Inline virtual text** showing variable values right in the source code, - updated live as you step. (via nvim-dap-virtual-text) -- **Hover inspection** — press `K` on any expression to see its value in a - floating window. Works on complex expressions, not just single variables. -- **Persistent breakpoints** — breakpoints survive Neovim restarts. They're - part of your project, not your session. Visible in the sign column at all - times. (via persistent-breakpoints.nvim) -- **Watch expressions** — press `W` on any variable in your code and it gets - added to the watches panel. No focus switch, no prompt. -- **Scopes panel** — all local/global variables in the current frame, - expandable, updated live. -- **Stack traces** — navigate the call stack, jump to any frame. -- **REPL** — evaluate arbitrary expressions in the debug context. -- **Console** — program stdout/stderr. -- **Conditional breakpoints** — `X` to set a breakpoint with a condition. -- **Modal keybindings** — single-key controls for all debug actions, active - only during debug sessions. -- **Help box** — shows all keybindings on debug mode entry, re-openable with - `?` at any time. -- **Zero-config adapters** for the world's top languages. - -## Dependencies (Managed Automatically) - -The user never sees or declares these. turbo-debug calls `vim.pack.add` for -each one internally: - -| Dependency | What it provides | -|-----------------------------------|-------------------------------------------| -| `mfussenegger/nvim-dap` | DAP client — the core debug engine | -| `rcarriga/nvim-dap-ui` | Scopes, stacks, watches, REPL, console UI | -| `nvim-neotest/nvim-nio` | Async IO (required by nvim-dap-ui) | -| `theHamsta/nvim-dap-virtual-text` | Inline variable values in source code | -| `Weissle/persistent-breakpoints.nvim` | Breakpoints that survive restarts | - -Everything loads eagerly at startup. No lazy loading. Startup cost is -negligible. - -### Why These Five and Nothing Else - -We evaluated every plugin in the nvim-dap ecosystem. The rule: if we can -replicate what a plugin does in <50 lines of our own code, we don't add the -dependency. If the plugin does something non-trivial that would take hundreds -of lines and deep domain knowledge to replicate, we depend on it. - -**nvim-dap-virtual-text** — KEEP. Uses treesitter to find variable definition -sites, handles scope-aware display, changed-value highlighting, comment-style -formatting. 400+ lines of treesitter integration we'd have to replicate. Not -worth it. - -**persistent-breakpoints.nvim** — KEEP. File-based breakpoint persistence with -sign management. Solves a real problem cleanly. - -**nvim-dap-python, nvim-dap-go, nvim-dap-ruby, nvim-dap-lldb, nvim-dap-kotlin, -nvim-dap-cs, nvim-dap-vscode-js** — DO NOT DEPEND. Each is just an adapter -table + config table + maybe 20 lines of environment detection. We steal the -configs and inline them as plain Lua tables in our `configs/` directory. No -plugin needed. - -**mason-nvim-dap** — DO NOT DEPEND. Our principle is "we configure, the user -installs binaries." We just look for adapters on PATH or in standard mason -install paths as a fallback. - -**dap-buddy** — DO NOT DEPEND. Abandoned since 2022. Dead project. - -**nvim-dap-rr** — DO NOT DEPEND. Reverse debugging is niche (Linux-only, -C/C++/Rust only). Out of scope. - -**dap-utils** — DO NOT DEPEND. Grab bag of features we either already have -(breakpoint persistence) or don't want (telescope integration). - -## Installation - -```lua --- init.lua -vim.pack.add("swaits/turbo-debug") -``` - -One line. One plugin. Everything works. - -### Configuration (optional) - -```lua -require("turbo-debug").setup({ - -- all fields optional, these are the defaults - help_on_enter = true, -- show help box when entering debug mode - keys = { ... }, -- override any keybinding - adapters = { ... }, -- override or add language adapters - dapui = { ... }, -- override nvim-dap-ui layout/settings - virtual_text = { ... }, -- override nvim-dap-virtual-text settings -}) -``` - -## Debug Mode - -`d` toggles debug mode. Entering debug mode: - -1. Opens nvim-dap-ui with the configured layout. -2. Enables nvim-dap-virtual-text (inline variable values appear in source). -3. Activates modal keybindings (buffer-local, vanish on exit). -4. Changes the cursor highlight to indicate you're in debug mode. -5. Shows the help box (bottom-right float, auto-closes on first keypress). - Disable with `help_on_enter = false`. -6. If no DAP session is active, waits for `c` (continue) to launch one. - -Exiting debug mode (any of): - -- `d` again (manual toggle) -- `q` (terminate session — auto-exits debug mode) -- DAP session ends naturally (program exits, etc.) - -On exit: all modal keybindings removed, nvim-dap-ui closed, virtual text -cleared, cursor highlight restored. The editor is exactly as it was before. - -## Keybindings - -### Philosophy - -During debugging you need to **navigate code** (read, jump around, search) and -you need to **interact with the REPL/terminal** (insert mode). You do not need -to **edit** code. Therefore we shadow editing operators and leave all motions -and insert intact. - -Left hand = flow control. Right hand = inspection. `?` = help. - -### Default Map - -| Key | Action | Mnemonic / Rationale | -|-----|------------------------|-----------------------------------------------| -| `c` | Continue | Universal across all debuggers | -| `s` | Step over | **S**tep | -| `d` | Step into | **D**escend into the function | -| `r` | Step out | **R**eturn from the function | -| `C` | Run to cursor | **C**ontinue to cursor — extends `c` | -| `x` | Toggle breakpoint | X marks the spot (persistent) | -| `X` | Conditional breakpoint | Shift variant of `x` (also persistent) | -| `W` | Watch expr under cursor| **W**atch (uses `` or visual selection) | -| `K` | Hover / inspect | Matches vim LSP hover convention | -| `E` | Eval in REPL | **E**valuate | -| `q` | Terminate session | **Q**uit debugging | -| `R` | Restart session | **R**erun | -| `?` | Help popup | Universal "show me what I can do" | - -### What's Sacrificed (and Why It's Fine) - -| Key | Normal function | Why it's safe to shadow | -|-----|---------------------|-----------------------------------------------| -| `c` | Change operator | Not editing during debug | -| `s` | Substitute char | Not editing; flash/leap: modal, so no conflict| -| `d` | Delete operator | Not editing during debug | -| `r` | Replace char | Not editing during debug | -| `x` | Delete char | Not editing during debug | -| `q` | Record macro | Not recording macros during debug | -| `C` | Change to EOL | Not editing during debug | -| `X` | Backspace | Not editing during debug | -| `R` | Replace mode | Nobody enters replace mode during debug | -| `W` | WORD forward | Minor loss; `w` (word forward) still works | -| `E` | End of WORD | Minor loss; `e` (end of word) still works | -| `?` | Reverse search | Minor loss; `/` still works for forward search| - -### What's Preserved - -All navigation: `h j k l w b e f F t T / n N 0 ^ $ G g { } % [ ]` - -Insert mode access: `i a o O` (needed for REPL, terminal, editing watches) - -Visual, yank, put: `v V y p u` (useful for copying values, inspecting ranges) - -All Ctrl/leader combos: untouched. - -### Configuration - -```lua -keys = { - continue = "c", - step_over = "s", - step_into = "d", - step_out = "r", - run_to_cursor = "C", - breakpoint = "x", - cond_breakpoint = "X", - watch = "W", - hover = "K", - eval = "E", - terminate = "q", - restart = "R", - help = "?", -} -``` - -Override any key. Set a key to `false` to disable it. - -## Persistent Breakpoints - -Breakpoints are managed by persistent-breakpoints.nvim, not raw nvim-dap. This -means: - -- Breakpoints survive across Neovim restarts. -- `x` calls `require("persistent-breakpoints.api").toggle_breakpoint()`. -- `X` calls the conditional breakpoint equivalent. -- Breakpoint signs are visible at all times, not just during debug sessions. - -Note: `x` and `X` work at all times — they are the few keybindings active -both inside and outside debug mode. Setting breakpoints should never require -entering a special mode first. - -## The Debugging Experience - -### Inline Virtual Text - -When a debug session is active, variable values appear as virtual text inline -in the source code, right next to where they're used. This updates live as you -step. No need to hover or check the scopes panel for simple values — they're -just there in your code. - -Powered by nvim-dap-virtual-text with sensible defaults (commented style so -it doesn't look like real code, changed values highlighted, current frame -only). - -### Hover - -`K` on any expression opens a floating window showing its current value. -Works in normal mode (uses word under cursor) and visual mode (uses -selection). Follows the same `K` convention as LSP hover. - -### Watch - -`W` grabs `` under the cursor (or the visual selection) and adds it -to the watches panel in nvim-dap-ui. No focus switch, no prompt, no typing. -The watch updates live as you step through code. - -To remove or edit watches, navigate to the watches panel in the sidebar and -use the standard nvim-dap-ui element keybindings. - -## UI Layout - -turbo-debug configures nvim-dap-ui with a clean, purposeful layout: - -``` -┌──────────────────────────────────┬──────────────────┐ -│ │ Scopes (50%) │ -│ │ > local │ -│ Source Code │ x = 42 │ -│ │ name = "hi" │ -│ x = 42 -- « virtual text │ │ -│ name = "hello" ├──────────────────┤ -│ >> result = compute(x) │ Watches (25%) │ -│ return result │ compute(x): 84 │ -│ ├──────────────────┤ -│ │ Stacks (25%) │ -│ │ main:12 │ -│ │ > compute:7 │ -├──────────────────────────────────┴──────────────────┤ -│ REPL (50%) │ Console (50%) │ -│ > print(x) │ [stdout] Starting... │ -│ 42 │ [stdout] Processing... │ -└──────────────────────────┴──────────────────────────┘ -``` - -### Layout Rationale - -**Left sidebar (40 columns):** -- Scopes gets 50% — this is what you look at 80% of the time. -- Watches gets 25% — right below scopes, so `W` results appear in your - peripheral vision immediately. -- Stacks gets 25% — you glance at it, you don't study it. - -**Bottom tray (12 lines):** -- REPL and Console share the space. REPL is interactive (you type - expressions), Console shows program output. - -**What's excluded from the layout:** -- Breakpoints panel — persistent-breakpoints shows signs in the gutter. -- Controls toolbar — our modal keys replace it. - -**Overridable:** Pass `opts.dapui` to replace the entire layout. - -## Preconfigured Adapters - -The plugin ships working DAP adapter + configuration for the world's top -languages. No language-specific plugins are added as dependencies — we inline -the configs as plain Lua tables, stealing the good parts from existing plugins -and the nvim-dap wiki. - -### Adapter Table - -| Language | Adapter | Config source | Our code | -|-----------------|-----------------|-----------------------------------|------------------| -| Python | debugpy | nvim-dap-python (mfussenegger) | ~30 lines | -| JavaScript / TS | js-debug | nvim-dap-vscode-js (mxsdev) | ~25 lines | -| Go | delve | nvim-dap-go (leoluz) | ~20 lines | -| C / C++ | codelldb | nvim-dap-lldb (julianolf) + wiki | ~20 lines | -| Rust | codelldb | Same as C/C++, shared config | ~5 lines (alias) | -| C# | netcoredbg | nvim-dap-cs (NicholasMata) + wiki | ~15 lines | -| Java | java-debug | nvim-jdtls patterns + wiki | ~20 lines | -| PHP | php-debug | nvim-dap wiki + community configs | ~15 lines | -| Ruby | rdbg | nvim-dap-ruby (suketa) | ~20 lines | -| Kotlin | kotlin-debug | nvim-dap-kotlin (Mgenuit) | ~15 lines | -| Swift | codelldb | Same as C/C++, shared config | ~5 lines (alias) | -| Lua (Neovim) | osv | one-small-step-for-vimkind + wiki | ~15 lines | - -### What We Steal From Each Source - -**nvim-dap-python (~200 LOC plugin → ~30 lines for us):** -- Adapter definition (executable type, `python -m debugpy.adapter`) -- Virtualenv auto-detection: checks `VIRTUAL_ENV`, `CONDA_PREFIX`, then - probes for `.venv`/`venv`/`env`/`.env` relative to cwd and LSP root -- Launch config for current file -- We skip: test runner integration (test_method, test_class) — out of scope - -**nvim-dap-go (~300 LOC plugin → ~20 lines for us):** -- Adapter definition (server type, auto-launches dlv on random port) -- Launch config for current file and package -- We skip: individual test debugging — out of scope - -**nvim-dap-vscode-js (~400 LOC plugin → ~25 lines for us):** -- Adapter definition for `pwa-node` (uses `js-debug-adapter` binary) -- Launch configs for file, attach, and node process -- Shared across `javascript`, `typescript`, `javascriptreact`, - `typescriptreact` filetypes -- We skip: Chrome/Edge/extension host adapters — uncommon for most users - -**nvim-dap-lldb / codelldb wiki (~150 LOC → ~20 lines for us):** -- Adapter definition (server type, TCP, codelldb binary) -- Mason path fallback (`~/.local/share/nvim/mason/bin/codelldb`) -- Launch config with program picker (`vim.fn.input`) -- Shared across `c`, `cpp`, `rust`, `swift` filetypes - -**nvim-dap-cs (~100 LOC → ~15 lines for us):** -- Adapter definition (executable type, `netcoredbg --interpreter=vscode`) -- Launch config for .NET DLL with path picker -- Mason path fallback - -**nvim-dap-ruby (~100 LOC → ~20 lines for us):** -- Adapter definition (server type, `rdbg` with DAP mode) -- Launch config for current file and attach config -- Rails server launch config (rdbg + `bin/rails s`) - -**nvim-dap-kotlin (~150 LOC → ~15 lines for us):** -- Adapter definition (executable type, `kotlin-debug-adapter`) -- Launch config for main function -- We skip: test debugging — out of scope - -**PHP (wiki + community → ~15 lines for us):** -- Adapter definition (executable type, node + `phpDebug.js`) -- Mason path fallback for php-debug-adapter -- Launch config to listen for Xdebug on port 9003 - -**Java (nvim-jdtls patterns → ~20 lines for us):** -- Adapter definition (executable type, java-debug-adapter) -- Launch config for current class -- Note: Java debugging is tightly coupled to nvim-jdtls for full - functionality. Our config provides the basics; users with complex Java - setups will likely use nvim-jdtls directly. - -**Lua/Neovim (wiki → ~15 lines for us):** -- Adapter definition via one-small-step-for-vimkind (osv) -- Launch config for current Neovim instance debugging -- Optional dependency — only activated if osv is installed - -### Adapter Path Resolution - -For every adapter, we check paths in this order: -1. User override via `opts.adapters` -2. Binary on `$PATH` -3. Standard mason install path (`~/.local/share/nvim/mason/bin/`) -4. Common system paths (`/usr/bin/`, `/usr/local/bin/`) - -### Behavior - -- On first `c` (continue), if no `dap.configurations` exist for the current - filetype, turbo-debug installs its built-in config automatically. -- If the user has already configured adapters for a filetype via nvim-dap - directly, turbo-debug does not override them. -- Adapter binary installation is the user's responsibility (mason, system - package manager, or manual). turbo-debug configures, it doesn't install. - -### Configuration - -```lua -require("turbo-debug").setup({ - adapters = { - python = { ... }, -- override built-in - zig = { ... }, -- add new language - }, - builtin_adapters = false, -- disable all built-ins -}) -``` - -## Help Box - -The help box is a small floating window (bottom-right corner) that lists all -active keybindings. It appears automatically when entering debug mode -(configurable via `help_on_enter`). It auto-closes on the first keypress so -it never blocks workflow. - -`?` re-opens it at any time during debug mode. - -Content is generated dynamically from the active keymap table, so it always -reflects the user's configuration. - -## Mode Lifecycle - -``` -NORMAL MODE - │ - ├── x / X work here too (persistent breakpoints, always available) - │ - ├── d ──► DEBUG MODE - │ │ - │ ├── Modal keybindings active - │ ├── nvim-dap-ui open (scopes, watches, stacks, repl, console) - │ ├── Virtual text enabled (inline variable values) - │ ├── Cursor highlight changed - │ ├── Help box shown (if help_on_enter) - │ │ - │ ├── c ──► Launches/continues DAP session - │ ├── s/d/r ──► Step over/into/out - │ ├── K ──► Hover inspect value under cursor - │ ├── W ──► Add watch for expr under cursor - │ ├── E ──► Eval expression in REPL - │ ├── q ──► Terminates session ──► exits debug mode - │ ├── d ──► exits debug mode (session stays if active) - │ │ - │ └── Session ends naturally ──► exits debug mode - │ - ◄── Editor restored (keymaps, UI, virtual text, cursor) -``` - -## Implementation Notes - -### Scope - -Clean, readable Lua. A `plugin/` entry point, a core module, and a `configs/` -directory for per-language adapter definitions (plain tables, no logic). Every -file should be short enough to read in one sitting. - -### File Structure - -This is a canonical Neovim plugin with proper help docs, license, and -everything a user or contributor expects. - -``` -turbo-debug.nvim/ -├── LICENSE -- MIT -├── README.md -- install, quick start, screenshots -├── CONTRIBUTING.md -- how to add adapters, run tests -├── doc/ -│ └── turbo-debug.txt -- :help turbo-debug (vimdoc format) -├── plugin/ -│ └── turbo-debug.lua -- vim.pack.add deps, global x/X maps, setup -├── lua/ -│ └── turbo-debug/ -│ ├── init.lua -- public API (setup, toggle, active) -│ ├── config.lua -- default opts, deep merge with user opts -│ ├── mode.lua -- enter/exit debug mode, keybinding mgmt -│ ├── help.lua -- help box float -│ ├── ui.lua -- dap-ui layout config and wiring -│ ├── virtual_text.lua -- nvim-dap-virtual-text config and wiring -│ ├── breakpoints.lua -- persistent-breakpoints config and wiring -│ └── adapters/ -│ ├── init.lua -- adapter loader, path resolution, register -│ ├── python.lua -- adapter + config + venv detection -│ ├── javascript.lua -- js/ts/jsx/tsx adapter + configs -│ ├── go.lua -- delve adapter + configs -│ ├── c.lua -- codelldb adapter (c/cpp/rust/swift) -│ ├── cs.lua -- netcoredbg adapter -│ ├── java.lua -- java-debug adapter -│ ├── php.lua -- php-debug adapter -│ ├── ruby.lua -- rdbg adapter -│ ├── kotlin.lua -- kotlin-debug adapter -│ └── lua.lua -- osv adapter (optional) -└── tests/ - ├── minimal_init.lua -- minimal Neovim config for test harness - ├── test_mode.lua -- debug mode enter/exit tests - ├── test_keys.lua -- keybinding activation/restoration tests - ├── test_help.lua -- help box open/close/content tests - ├── test_config.lua -- opts merging, key override, key disable - ├── test_adapters.lua -- adapter path resolution, registration - └── test_breakpoints.lua -- persistent breakpoint integration tests -``` - -### Key Mechanisms - -**Dependency management:** `plugin/turbo-debug.lua` calls `vim.pack.add` -for each of the five dependencies. The user never sees or manages them. - -**Plugin wiring:** turbo-debug calls `setup()` on nvim-dap-ui, -nvim-dap-virtual-text, and persistent-breakpoints with its opinionated -defaults, deep-merged with any user overrides from `opts`. - -**Modal keybindings:** Use `vim.keymap.set` with `buffer = 0` on enter, -delete them on exit. Stash any conflicting user mappings and restore them. - -**Always-on breakpoints:** `x` and `X` are mapped globally (not just in -debug mode) and delegate to persistent-breakpoints.nvim API. - -**Watch from code:** `W` grabs `vim.fn.expand("")` in normal mode or -the visual selection, then programmatically inserts it into the watches -element buffer. - -**Auto-exit:** Hook into `dap.listeners.after.event_terminated` and -`dap.listeners.after.event_exited` to leave debug mode when session ends. - -**Cursor highlight:** Set `dCursor` highlight group on enter, clear on exit. - -**Help box:** `vim.api.nvim_open_win` with scratch buffer, bottom-right. -Autocmd to close on any keypress. Content built from the keys table. - -### What We Don't Do - -- No custom UI widgets. nvim-dap-ui handles that. -- No statusline integration beyond exposing `require("turbo-debug").active()`. -- No telescope/fzf integration. Out of scope. -- No reverse debugging built-in. Users can remap keys. -- No test runner integration (debug nearest test). Out of scope. -- No project-specific launch.json parsing. nvim-dap supports this natively. -- No lazy loading. Everything loads. Startup cost is negligible. -- No adapter binary installation. We configure, the user installs. -- No language-specific plugin dependencies. We inline all adapter configs. - -## Success Criteria - -A user who has never configured DAP should be able to: - -1. Add one line to their init.lua: `vim.pack.add("swaits/turbo-debug")` -2. Open a file in any of the world's top 10 languages. -3. Press `x` on a line to set a breakpoint (visible immediately in gutter). -4. Press `d` to enter debug mode. See the help box. See the UI. -5. Press `c` to start debugging. See the program stop at the breakpoint. -6. See variable values inline in the source code as virtual text. -7. Press `K` to hover a variable and see its full value. -8. Press `W` to add a watch expression. -9. Press `s` to step, see everything update live. -10. Press `q` to quit. Everything disappears. Editor is clean. -11. Close Neovim, reopen, see the breakpoint still there. - -**Language coverage target:** Works out of the box (assuming the adapter binary -is installed) for: Python, JavaScript/TypeScript, Java/Kotlin, C/C++, C#, Go, -Rust, PHP, Ruby, Swift. And Lua for the Neovim plugin developers. - -**The experience target:** This should feel like Visual Studio or IntelliJ, -not like a terminal debugger. Inline values, hover tooltips, persistent state, -clean layout — the full experience, in your terminal, from one line of config. - -Total time from install to first breakpoint: under 2 minutes. -Total lines of user config: 1. -Total plugin dependencies the user manages: 0. -Total language-specific plugin dependencies: 0. - ---- - -## Development Task Breakdown - -Each task below is a single `jj commit`. Tasks are ordered so that each -builds on the last and the plugin is functional (if incomplete) at every -commit. Every task includes acceptance criteria and how to test it. - -All source control uses **jj** (Jujutsu), never git. - ---- - -### Task 1: Scaffold — canonical plugin structure - -**What:** Create the repo with all directories, empty files, LICENSE (MIT), -empty README.md, CONTRIBUTING.md stub, and `doc/turbo-debug.txt` with -the vimdoc header and a skeleton table of contents. - -**Files:** -``` -LICENSE -README.md -CONTRIBUTING.md -doc/turbo-debug.txt -plugin/turbo-debug.lua (empty, just a header comment) -lua/turbo-debug/init.lua (returns empty table) -lua/turbo-debug/config.lua (returns default opts table) -tests/minimal_init.lua (minimal nvim init for testing) -``` - -**Acceptance criteria:** -- `nvim --clean -u tests/minimal_init.lua` starts without errors -- `:help turbo-debug` opens the help file (even if sparse) -- `:lua print(type(require("turbo-debug")))` prints `table` -- `jj log` shows exactly one clean commit - -**Test:** Manual smoke test in Neovim. - -**jj commit:** `scaffold: canonical plugin structure with docs and license` - ---- - -### Task 2: Dependency management via vim.pack - -**What:** `plugin/turbo-debug.lua` calls `vim.pack.add` for all five -dependencies. Validates Neovim >= 0.12. Prints a clear error and returns -if version check fails. - -**Files:** -``` -plugin/turbo-debug.lua -``` - -**Acceptance criteria:** -- On Neovim 0.12+: all five dependencies are downloaded and loadable - (`require("dap")`, `require("dapui")`, etc. all succeed) -- On Neovim < 0.12: clear error message, no crash -- Dependencies do not appear in the user's plugin manager - -**Test:** `nvim --clean -u tests/minimal_init.lua -c 'lua require("dap")'` -should not error. Test version gate by temporarily faking `vim.version()`. - -**jj commit:** `deps: manage all dependencies via vim.pack` - ---- - -### Task 3: Config module — defaults and deep merge - -**What:** `lua/turbo-debug/config.lua` defines the full default options -table (keys, help_on_enter, dapui layout, virtual_text settings, etc.) -and exports a `merge(user_opts)` function that deep-merges user overrides. - -**Files:** -``` -lua/turbo-debug/config.lua -tests/test_config.lua -``` - -**Acceptance criteria:** -- `require("turbo-debug.config").defaults` returns the full table -- Merging `{ keys = { continue = "g" } }` overrides only that key -- Merging `{ keys = { continue = false } }` disables that key -- Merging `{}` returns defaults unchanged -- All other default values survive a partial override - -**Test:** Automated. `tests/test_config.lua` runs assertions on merge -outputs. Run with `nvim --headless -u tests/minimal_init.lua -c 'luafile tests/test_config.lua'`. - -**jj commit:** `config: default options table with deep merge` - ---- - -### Task 4: Debug mode — enter, exit, keybinding lifecycle - -**What:** `lua/turbo-debug/mode.lua` implements enter/exit debug mode. -On enter: sets buffer-local keymaps (stashing conflicts), sets `dCursor` -highlight. On exit: removes keymaps (restoring originals), clears highlight. -`lua/turbo-debug/init.lua` exposes `toggle()` and `active()`. - -`plugin/turbo-debug.lua` maps `d` to `toggle()`. - -**Files:** -``` -lua/turbo-debug/init.lua -lua/turbo-debug/mode.lua -tests/test_mode.lua -tests/test_keys.lua -``` - -**Acceptance criteria:** -- `d` enters debug mode; all configured keys are active -- `d` again exits; all keys are removed -- A pre-existing user mapping for `c` is stashed on enter and restored on - exit (verified by checking `vim.fn.maparg`) -- `require("turbo-debug").active()` returns `true`/`false` correctly -- Navigation keys (`h`, `j`, `w`, `b`, `/`, `n`, etc.) still work in - debug mode -- `dCursor` highlight group is set on enter, cleared on exit - -**Test:** Automated. `tests/test_mode.lua` enters mode, checks keymaps -exist via `vim.fn.maparg`, exits mode, checks keymaps removed and originals -restored. `tests/test_keys.lua` sets a custom mapping for `c`, enters -debug mode, verifies it's overridden, exits, verifies it's restored. - -**jj commit:** `mode: enter/exit debug mode with keybinding lifecycle` - ---- - -### Task 5: Help box - -**What:** `lua/turbo-debug/help.lua` implements the floating help window. -Reads from the active keys config to build content dynamically. Opens -anchored to bottom-right. Closes on any keypress via autocmd. - -**Files:** -``` -lua/turbo-debug/help.lua -tests/test_help.lua -``` - -**Acceptance criteria:** -- `?` in debug mode opens a floating window listing all keybindings -- The window closes on the next keypress (any key) -- Content reflects the user's config (if `continue` is remapped to `g`, - the help box shows `g` not `c`) -- If `help_on_enter = true`, the box opens automatically on mode enter -- If `help_on_enter = false`, it does not -- The window is non-focusable and non-intrusive (doesn't steal cursor) - -**Test:** Automated. `tests/test_help.lua` opens help, checks -`vim.api.nvim_win_is_valid`, feeds a keypress, verifies window closed. -Tests with a remapped key to verify dynamic content. - -**jj commit:** `help: floating help box with dynamic keybinding content` - ---- - -### Task 6: UI wiring — nvim-dap-ui layout - -**What:** `lua/turbo-debug/ui.lua` calls `dapui.setup()` with our -opinionated layout. Wires dap listeners to open/close UI on session -start/end. Integrates with mode enter/exit. - -**Files:** -``` -lua/turbo-debug/ui.lua -``` - -**Acceptance criteria:** -- Entering debug mode opens nvim-dap-ui with the configured layout - (scopes 50%, watches 25%, stacks 25% left; repl + console bottom) -- Controls toolbar is disabled -- Exiting debug mode closes nvim-dap-ui -- DAP session ending naturally closes UI and exits debug mode -- User can override layout via `opts.dapui` - -**Test:** Manual. Open a Python file with debugpy installed, enter debug -mode, verify layout matches the spec diagram. Exit, verify clean. Override -layout in opts, verify override takes effect. - -**jj commit:** `ui: opinionated nvim-dap-ui layout with auto open/close` - ---- - -### Task 7: Virtual text wiring - -**What:** `lua/turbo-debug/virtual_text.lua` calls -`require("nvim-dap-virtual-text").setup()` with our defaults (commented -style, highlight changed variables, current frame only). Integrates with -mode enter/exit (enable on enter, disable on exit). - -**Files:** -``` -lua/turbo-debug/virtual_text.lua -``` - -**Acceptance criteria:** -- During a debug session, variable values appear as virtual text inline -- Virtual text uses comment syntax for the current filetype -- Changed values are highlighted differently -- Virtual text clears when exiting debug mode -- User can override settings via `opts.virtual_text` - -**Test:** Manual. Debug a Python script, step through, verify virtual text -appears next to variable definitions. Exit debug mode, verify text clears. - -**jj commit:** `virtual-text: inline variable values with sensible defaults` - ---- - -### Task 8: Persistent breakpoints wiring - -**What:** `lua/turbo-debug/breakpoints.lua` calls -`require("persistent-breakpoints").setup()` and maps `x`/`X` globally -(outside debug mode) to toggle/conditional breakpoint. - -**Files:** -``` -lua/turbo-debug/breakpoints.lua -tests/test_breakpoints.lua -``` - -**Acceptance criteria:** -- `x` toggles a breakpoint on the current line (sign appears in gutter) -- `X` prompts for a condition and sets a conditional breakpoint -- Both work outside of debug mode (no `d` needed first) -- Breakpoints persist: close Neovim, reopen, signs are still there -- Breakpoints are passed correctly to nvim-dap when a session starts - -**Test:** Automated + manual. `tests/test_breakpoints.lua` verifies that -calling the breakpoint API places a sign. Manual test: set breakpoint, -quit Neovim, reopen, verify sign persists. Start debug session, verify -program stops at the breakpoint. - -**jj commit:** `breakpoints: persistent breakpoints with global x/X mapping` - ---- - -### Task 9: Watch from code window - -**What:** Wire the `W` keybinding in debug mode to grab `` under -cursor (or visual selection) and insert it into the nvim-dap-ui watches -element programmatically. - -**Files:** -``` -lua/turbo-debug/mode.lua (add watch action) -``` - -**Acceptance criteria:** -- `W` in normal mode in debug mode adds the expression under cursor to - the watches panel -- `W` in visual mode adds the selected text to the watches panel -- The watch value updates live as you step -- No focus switch occurs — cursor stays in the code window - -**Test:** Manual. Debug a Python script, place cursor on a variable, press -`W`, verify it appears in the watches panel. Select a complex expression -in visual mode, press `W`, verify it appears. Step, verify value updates. - -**jj commit:** `watch: add expression under cursor to watches with W` - ---- - -### Task 10: Hover and eval - -**What:** Wire `K` to `require("dapui").eval()` (hover float with value -under cursor or visual selection). Wire `E` to -`require("dapui").float_element("repl")` (open REPL float for expression -evaluation). - -**Files:** -``` -lua/turbo-debug/mode.lua (add hover + eval actions) -``` - -**Acceptance criteria:** -- `K` in normal mode shows a floating window with the value of the word - under cursor -- `K` in visual mode shows the value of the selected expression -- `E` opens the REPL in a floating window for arbitrary expression input -- Both work during an active debug session - -**Test:** Manual. Debug a Python script, hover a variable with `K`, verify -float shows value. Select `x + y` in visual mode, `K`, verify evaluated -result. Press `E`, type an expression in the REPL, verify output. - -**jj commit:** `inspect: hover with K, eval with E` - ---- - -### Task 11: Adapter configs — Python and Go - -**What:** First two adapter configs. Python includes venv auto-detection. -Go includes delve auto-launch. Adapter loader in -`lua/turbo-debug/adapters/init.lua` handles registration and path -resolution. - -**Files:** -``` -lua/turbo-debug/adapters/init.lua -lua/turbo-debug/adapters/python.lua -lua/turbo-debug/adapters/go.lua -tests/test_adapters.lua -``` - -**Acceptance criteria:** -- Opening a `.py` file and pressing `d` then `c` launches debugpy -- If a virtualenv is active, debugpy uses it -- Opening a `.go` file and pressing `d` then `c` launches delve -- If the user already has `dap.configurations.python` set, we don't - override it -- Path resolution checks PATH, then mason, then common system paths - -**Test:** `tests/test_adapters.lua` verifies adapter tables are well-formed -and path resolution logic returns expected results for mock scenarios. -Manual: debug a real Python and Go program end-to-end. - -**jj commit:** `adapters: python (with venv detection) and go (delve)` - ---- - -### Task 12: Adapter configs — C/C++/Rust/Swift (codelldb) - -**What:** Single adapter config shared across C, C++, Rust, and Swift. -Uses codelldb. Program picker via `vim.fn.input`. - -**Files:** -``` -lua/turbo-debug/adapters/c.lua -``` - -**Acceptance criteria:** -- Opening a `.c`, `.cpp`, `.rs`, or `.swift` file and debugging works -- Prompts for executable path on launch -- Finds codelldb via PATH or mason - -**Test:** Manual. Compile a C program with `-g`, debug it, verify -breakpoints and stepping work. - -**jj commit:** `adapters: c/cpp/rust/swift via codelldb` - ---- - -### Task 13: Adapter configs — JavaScript/TypeScript - -**What:** JS/TS adapter using `js-debug-adapter` (pwa-node). Shared across -`javascript`, `typescript`, `javascriptreact`, `typescriptreact` filetypes. - -**Files:** -``` -lua/turbo-debug/adapters/javascript.lua -``` - -**Acceptance criteria:** -- Opening a `.js` or `.ts` file and debugging launches pwa-node -- Launch file and attach configs both present -- Finds js-debug-adapter via PATH or mason - -**Test:** Manual. Debug a Node.js script end-to-end. - -**jj commit:** `adapters: javascript/typescript via js-debug-adapter` - ---- - -### Task 14: Adapter configs — C#, Java, Kotlin - -**What:** C# via netcoredbg. Java via java-debug-adapter. Kotlin via -kotlin-debug-adapter. - -**Files:** -``` -lua/turbo-debug/adapters/cs.lua -lua/turbo-debug/adapters/java.lua -lua/turbo-debug/adapters/kotlin.lua -``` - -**Acceptance criteria:** -- Each language launches its respective adapter when debugging -- Path resolution works for each -- Java config includes note in docs about nvim-jdtls for full support - -**Test:** Manual per language where toolchain is available. Adapter table -structure verified in `tests/test_adapters.lua`. - -**jj commit:** `adapters: csharp, java, kotlin` - ---- - -### Task 15: Adapter configs — PHP, Ruby, Lua - -**What:** PHP via php-debug (Xdebug listener on port 9003). Ruby via rdbg. -Lua via osv (optional, only if one-small-step-for-vimkind is available). - -**Files:** -``` -lua/turbo-debug/adapters/php.lua -lua/turbo-debug/adapters/ruby.lua -lua/turbo-debug/adapters/lua.lua -``` - -**Acceptance criteria:** -- PHP: listens for Xdebug on port 9003 -- Ruby: launches rdbg in DAP mode -- Lua: only registers if osv is available, no error if it's not -- All path resolution works - -**Test:** Manual per language. Lua adapter tested by checking graceful -skip when osv is not installed. - -**jj commit:** `adapters: php, ruby, lua` - ---- - -### Task 16: Vimdoc — complete help file - -**What:** Write the full `doc/turbo-debug.txt` in vimdoc format. Covers -installation, configuration, all keybindings, all options, adapter -customization, and troubleshooting. Generate helptags. - -**Files:** -``` -doc/turbo-debug.txt -doc/tags (generated) -``` - -**Acceptance criteria:** -- `:help turbo-debug` opens the help file -- `:help turbo-debug.setup` jumps to the setup section -- `:help turbo-debug.keys` jumps to the keybindings section -- `:help turbo-debug.adapters` jumps to the adapters section -- Every public function and option is documented -- All tag references resolve correctly - -**Test:** Open Neovim, run `:helptags doc/`, then `:help turbo-debug` -and verify all sections and tags work. - -**jj commit:** `docs: complete vimdoc help file with all tags` - ---- - -### Task 17: README — install, screenshots, quick start - -**What:** Write README.md with: one-line install, feature list, screenshot -or ASCII diagram of the UI, keybinding table, minimal config, full config -example, supported languages table, FAQ, and links to `:help`. - -**Files:** -``` -README.md -CONTRIBUTING.md (finalize) -``` - -**Acceptance criteria:** -- README renders correctly on GitHub -- One-line install is the first code block -- Keybinding table matches the spec -- Supported languages table matches the spec -- CONTRIBUTING.md explains how to add a new adapter config, how to run - tests, and that we use jj not git - -**Test:** Visual review on GitHub after push. - -**jj commit:** `docs: readme, contributing guide` - ---- - -### Task 18: End-to-end acceptance test - -**What:** Run through the full success criteria checklist from the spec -for at least Python and one compiled language (C or Go). Fix any issues -discovered. - -**Acceptance criteria:** -- All 11 success criteria steps pass for Python -- All 11 success criteria steps pass for C or Go -- No errors in `:messages` after a full debug session lifecycle -- Clean startup: no errors on `nvim --clean` with only turbo-debug - -**Test:** Manual walkthrough of the full success criteria. Document results. - -**jj commit:** `test: end-to-end acceptance for python and c/go` - ---- - -### Task Summary - -| # | Task | Type | Test method | -|----|-----------------------------|----------|-------------------| -| 1 | Scaffold | Setup | Manual smoke | -| 2 | vim.pack dependencies | Infra | Manual smoke | -| 3 | Config defaults + merge | Core | Automated | -| 4 | Debug mode lifecycle | Core | Automated | -| 5 | Help box | UI | Automated | -| 6 | nvim-dap-ui wiring | UI | Manual | -| 7 | Virtual text wiring | UI | Manual | -| 8 | Persistent breakpoints | Core | Automated+Manual | -| 9 | Watch from code | Feature | Manual | -| 10 | Hover and eval | Feature | Manual | -| 11 | Adapters: Python, Go | Adapter | Automated+Manual | -| 12 | Adapters: C/C++/Rust/Swift | Adapter | Manual | -| 13 | Adapters: JS/TS | Adapter | Manual | -| 14 | Adapters: C#, Java, Kotlin | Adapter | Manual | -| 15 | Adapters: PHP, Ruby, Lua | Adapter | Manual | -| 16 | Vimdoc help file | Docs | Manual | -| 17 | README + CONTRIBUTING | Docs | Visual review | -| 18 | End-to-end acceptance | QA | Manual walkthrough| - -Each row = one `jj commit`. 18 commits total. The plugin is usable after -task 6 (basic debug mode with UI). It's feature-complete after task 15. -It's shippable after task 18.