diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a40621..119bacf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,80 +6,101 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- -## [Unreleased] +## [2026-02-10] ### Added -- **Python Debugger (debugpy)**: Full Python debugging support with multiple configurations - - Launch File - Debug current Python file - - Launch with Arguments - Debug with custom arguments - - Attach Remote - Attach to debugpy server (port 5678) - - Django - Debug Django with `manage.py runserver` - - FastAPI - Debug FastAPI with uvicorn - - Flask - Debug Flask application -- **Node.js/NestJS Debug Configurations**: Extended TypeScript/JavaScript debugging - - Launch NestJS (`dist/main.js`) with source maps - - Launch Current File - - Launch with ts-node (debug TypeScript directly) - - Attach to NestJS (port 9229) - - Attach to Process (pick from running processes) -- **Mason Debug Adapters**: Added `debugpy` and `js-debug-adapter` to auto-install list -- **README Documentation**: Added comprehensive "Debugging Setup" section with all configurations -- **Avante.nvim AI Assistant**: Added Avante.nvim with local LLM support to README documentation -- **Bash Treesitter Parser**: Installed bash parser for noice.nvim cmdline highlighting -- **Local Configuration Support**: `local.lua` is now loaded at startup and exposed via `vim.g.cargdev_local` - - Enables machine-specific paths without hardcoding - - Safe loading with `pcall` (won't error if file doesn't exist) - - Plugins gracefully skip if required config is missing +- **Documentation restructure**: Moved all documentation into `docs/` directory + - `docs/KEYMAPS.md` - Complete keybinding reference (rewritten from actual keymap files) + - `docs/PLUGINS.md` - Plugin list and descriptions + - `docs/NATIVE_AUTO_WRAPPER_GUIDE.md` - Text wrapping configuration + - `docs/TELESCOPE_TO_SNACKS_MIGRATION.md` - Migration notes + - `docs/keyboard_mappings.md` - QMK keyboard layout reference + - `docs/CHANGELOG_OLD.md` - Previous changelog archive +- **Keymap conflict detection script**: `scripts/detect_keymap_conflicts.lua` ### Changed -- **Avante Plugin**: Now uses `local.lua` for all paths and settings - - `avante_dev_path` for plugin directory - - `avante_endpoint`, `avante_api_key_name`, `avante_model` for provider config -- **IdeaDrop Plugin**: Now uses `IDEA_DIR` from `local.lua` instead of environment variable +- **README.md**: Updated documentation links to point to `docs/`, removed references to deleted plugins (flash, harpoon, dial, screenkey, persistence, mini.animate), updated keymap tables to reflect current state +- **KEYMAPS.md**: Complete rewrite based on actual current keymap definitions -### Removed -- **Hardcoded Paths**: Removed all hardcoded user paths from plugin configs - - `avante.lua` - uses `local.lua` values - - `ideaMap.lua` - uses `local.lua` values - - `leetcode.lua` - removed commented hardcoded path - - `lazygit.lua` - removed commented hardcoded path +--- + +## [2026-02-08] ### Fixed -- **Java Debug Adapter Paths**: Fixed incorrect paths in `ftplugin/java.lua` - - Changed `java-debug` → `java-debug-adapter/extension/server/` - - Changed `vscode-java-test` → `java-test/extension/server/` -- **Node.js DAP Adapter**: Fixed js-debug-adapter configuration in `dap.lua` - - Changed adapter type from `executable` to `server` (required by js-debug-adapter) - - Renamed adapter from `node` to `pwa-node` (standard DAP name) - - Added proper source map resolution and skipFiles patterns -- **Auto-session Lazy Loading**: Changed from `event = "VeryLazy"` to `lazy = false` to enable session auto-restore on startup -- **Alpha Dashboard Config**: Fixed `enable` to `enabled` (correct lazy.nvim spec key) -- **Snacks vs Alpha Conflict**: Disabled `Snacks.dashboard` in favor of `alpha-nvim` for CARGDEV branding +- **hlchunk.nvim**: Fixed rendering issues with scope highlighting +- **lspconfig**: Fixed LSP configuration issues +- **lualine**: Fixed statusline rendering and word count display +- **nvim-ufo**: Fixed folding behavior and peek integration -### Added -- **Java Debug & Run Keymaps**: New keybindings for Java development - - `jd` - Debug Class (DAP) - - `jt` - Test Class - - `jn` - Test Nearest Method - - `jr` - Run Java File - - `jm` - Run Maven Project - - `jg` - Run Gradle Project -- **Java Debug Dependencies**: Added `java-debug-adapter` and `java-test` to Mason ensure_installed +--- + +## [2026-02-05] - Major Cleanup & Refactor + +### Removed - Plugins +- **codetyper.lua**: Removed locally-developed plugin (reduced maintenance surface) +- **curls.lua**: Removed local HTTP/curl plugin (replaced by kulala) +- **edgy.lua**: Removed window layout management plugin +- **flash.lua**: Removed flash.nvim jump plugin +- **sudoku.lua**: Removed sudoku game plugin +- **screenkey.lua**: Removed screenkey plugin (show keypresses) +- **persistence.lua**: Removed persistence session management +- **auto-session.lua**: Removed auto-session plugin +- **dial.lua**: Removed smart increment/decrement plugin +- **mini-animate.lua**: Removed smooth animations plugin +- **harpoon.lua**: Removed harpoon quick file marks +- **colorful-winsep.lua**: Removed colorful window separators +- **dressing.lua**: Removed vim.ui improvements (handled by snacks/noice) +- **ship.lua**: Removed ship plugin +- **fileOperations.lua**: Removed file operations plugin + +### Removed - Keymaps & Docs +- **keymaps/README.md**: Removed stale keymaps documentation +- **keymaps/sudoku.lua**: Removed sudoku keymaps +- **NVIM_PERFORMANCE_ANALYSIS.md**: Removed performance analysis doc + +### Changed - Core Refactors +- **Notification manager** (`notification_manager.lua`): Major refactor with local aliases, improved docs, dashboard-aware handling, nvim-notify fallback, safer notification tracking and cleanup +- **Performance monitor** (`performance_monitor.lua`): Refactored with local references and better notify usage +- **Project commands** (`project_commands.lua`): Added docs, local API/fn/notify aliases, clearer RunProject/DebugProject commands +- **Terminal helper** (`openTerminal.lua`): Module docs and refactored with local cmd/api aliases + +### Changed - Keymaps +- **Reworked keymap files**: Added docstrings to all keymap modules, renamed/moved mappings to avoid conflicts +- **DAP keymaps**: Moved all DAP keymaps from `keymaps/dap.lua` into `plugins/dap.lua` config function (ensures nvim-dap is loaded before keybindings reference it) +- **Quickfix keymaps**: Moved from `q` prefix to `x` prefix to avoid conflict with quit +- **LSP navigation**: Switched from Snacks pickers to fzf-lua for `gd`, `gi`, `gr`, `gt`, symbols, and diagnostics + +### Changed - Plugins & Integrations +- **DAP** (`dap.lua`): Added Bun launch config, dynamic debug attach (`jd` with port input), moved all DAP keymaps here +- **Copilot** (`copilot.lua`): Reorganized Copilot/Copilot-cmp/CopilotChat config, added copilot source to nvim-cmp, added CopilotChat keymaps (`cc`, `cq`, `ce`, `cr`, `cf`, `co`, `cd`, `ct`, `cm`) +- **nvim-cmp** (`nvim-cmp.lua`): Added copilot completion source +- **Formatting** (`formatting.lua`): Disabled google-java-format fallback for Java (prefer JDTLS formatter) +- **Java/JDTLS** (`ftplugin/java.lua`): Pinned to JDK 25, switched to mac_arm config, enabled LSP formatter, declared multiple runtimes (JavaSE-17, JavaSE-25) +- **nvim-tree**: Expanded configuration with more custom mappings +- **bufferline**: Updated configuration +- **hlchunk**: Adjusted scope highlighting settings +- **linting**: Configuration tweaks +- **vim-visual-multi**: Updated configuration + +### Added - Plugin Stubs +Added minimal plugin configuration stubs for better organization (each plugin in its own file): +`autopairs`, `colorscheme`, `comments`, `crates`, `dadbod`, `diffview`, `dropbar`, `fidget`, `flutter`, `git-blame`, `gitsigns`, `grug-far`, `hardtime`, `ideaMap`, `inc-rename`, `indent-blankline`, `kulala`, `lazygit`, `leetcode`, `lspsaga`, `marks`, `mcphub`, `modicator`, `navbuddy`, `neogit`, `noice`, `nvim-cmp`, `nvim-highlight-colors`, `nvim-jdtls`, `nvim-lightbulb`, `nvim-treesitter-context`, `nvim-treesitter-text-objects`, `nvim-ts-autotag`, `obsidian`, `octo`, `outline`, `overseer`, `package-info`, `portal`, `precognition`, `reactive`, `regexplainer`, `render-markdown`, `satellite`, `snacks`, `ssr`, `substitute`, `surround`, `telescope`, `termcolor`, `tiny-inline-diagnostic`, `tmux`, `todo-comments`, `transparence`, `treesitter`, `treesj`, `trouble`, `ts-comments`, `twilight`, `undotree`, `venv-selector`, `vim-maximizer`, `vimtex`, `wakatime`, `which-key`, `yaml`, `yanky`, `zen-mode` + +--- + +## [2026-01-15] - Bumping Version ### Changed -- **Colorscheme Configuration**: Enhanced `cargdev-cyberpunk` setup - - Enabled transparency - - Enabled italic comments - - Enabled bold keywords, functions, and types - - Enabled terminal colors +- General version bump and plugin updates + +--- + +## [2026-01-13] - Fixing Issues ### Fixed -- **Java DAP Configuration**: Fixed debug adapter not loading - - Changed `bundles = {}` to `bundles = bundles` to properly load debug JARs - - Added `on_attach` callback to setup DAP after JDTLS attaches - - Enables hot code replacement during debugging -- **Broken Java DAP Adapter**: Removed manual Java adapter with undefined `port` variable - - Now handled automatically by nvim-jdtls via `jdtls.setup_dap()` +- Multiple bug fixes across configuration +- Fixed issues with closing Neovim +- Fixed rendering issues --- @@ -87,73 +108,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - **Custom Colorscheme**: Using `cargdev-cyberpunk` theme - - Vibrant, high-contrast cyberpunk aesthetic with neon colors - - Hot pink keywords, electric purple types, cyan strings, green functions - - Full TypeScript/LSP/Treesitter support - - Deep blue backgrounds with neon accents - - Loaded with high priority for consistent UI - **Which-Key Group Names**: Added organized group names for better keymap discoverability - - Groups: Buffer, Code/Copilot, Debug, Explorer, Find/Files, Git, LSP, Format, Quickfix, Session, Tab/Terminal, Trouble, Copilot Chat -- **Auto-Format on Save**: Enabled smart auto-formatting with conform.nvim - - Skips certain filetypes (sql, markdown) - - Skips files in node_modules - - Added `:FormatToggle` command to enable/disable -- **Diagnostic Float on Hover**: Diagnostics now appear automatically when cursor holds -- **Safe Buffer Close**: `bd` now prompts for unsaved changes - - Options: Save & Close, Discard & Close, Cancel - - `bD` for force close without confirmation -- **Quickfix Navigation Keymaps**: - - `qn` - Next quickfix item - - `qp` - Previous quickfix item - - `qo` - Open quickfix list - - `qq` - Close quickfix list - - `qf` - First quickfix item - - `ql` - Last quickfix item -- **Location List Navigation Keymaps**: - - `ln` - Next location item - - `lp` - Previous location item - - `lo` - Open location list - - `lq` - Close location list -- **Configuration Validation**: Startup checks for: - - Neovim version (0.9+ recommended) - - Required executables (git, rg, node) -- **Plugin Update Notifications**: Lazy.nvim now notifies about available updates (daily check) -- **CheckConfig Command**: Quick access to health checks +- **Auto-Format on Save**: Enabled with conform.nvim (skips sql, markdown, node_modules) +- **Diagnostic Float on Hover**: Diagnostics appear automatically on cursor hold +- **Safe Buffer Close**: `bd` prompts for unsaved changes +- **Quickfix Navigation Keymaps**: `qn/qp/qo/qq/qf/ql` +- **Location List Navigation**: `ln/lp/lo/lq` +- **Configuration Validation**: Startup checks for Neovim version and required executables +- **Plugin Update Notifications**: Daily lazy.nvim update check ### Changed -- **Session Keymaps**: Renamed to avoid conflicts with substitute - - `ss` → `sS` (Session Save) - - `sr` → `sR` (Session Restore) -- **Substitute Keymaps**: Reorganized to avoid conflicts - - `ss` → `sl` (Substitute Line) - - `sub` remains for substitute with motion - - `S` remains for substitute to end of line -- **Keymap Descriptions**: Standardized format (e.g., "Session: Save", "Substitute: Line") +- **Session Keymaps**: `ss` -> `sS`, `sr` -> `sR` +- **Substitute Keymaps**: `ss` -> `sl` ### Fixed -- **Duplicate Window Management Keymaps**: Removed duplicates from `personal.lua`, centralized in `window.lua` -- **Duplicate Resize Keymaps**: Removed duplicates, centralized in `window.lua` -- **Redundant Filetype Detection**: Now only runs if filetype is not already detected -- **Double Function Loading**: Functions now load once on VimEnter with flag protection -- **Duplicate synmaxcol Setting**: Removed duplicate (was 240 then 200), kept 200 -- **Duplicate foldmethod Setting**: Removed duplicate, kept `indent` (faster than `syntax`) -- **Duplicate foldlevel Setting**: Removed duplicate setting -- **Environment Variable Validation**: `IDEA_DIR` now validated before Obsidian link setup +- Duplicate window management keymaps (centralized in `window.lua`) +- Duplicate resize keymaps +- Redundant filetype detection +- Double function loading +- Duplicate settings (synmaxcol, foldmethod, foldlevel) ### Removed -- **Temporary Files**: - - `kkk` - Unknown purpose temporary file - - `cleanup_deprecated_adapters.lua` - Cleanup script no longer needed -- **IMPROVEMENTS.md**: All issues resolved, file removed -- **Commented Code**: - - Tmux navigation keymaps from `personal.lua` - - Commented `x` keymap explanation from `general.lua` - - Commented `project_config` bootstrap from `init.lua` - -### Performance -- Optimized filetype detection (conditional execution) -- Reduced redundant option settings -- Single function loading instead of double +- Temporary files (`kkk`, `cleanup_deprecated_adapters.lua`) +- IMPROVEMENTS.md (all issues resolved) +- Commented-out code (tmux keymaps, project_config bootstrap) --- @@ -166,7 +144,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Snacks.nvim + Telescope file navigation - nvim-tree file explorer - LazyGit integration -- GitHub Copilot + Copilot Chat +- GitHub Copilot - DAP debugging with UI - Conform.nvim formatting - Trouble.nvim diagnostics @@ -174,73 +152,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Custom lualine theme with word count ### Migration History -- Migrated from Telescope to Snacks for primary navigation -- Kept Telescope for git-specific features -- See [TELESCOPE_TO_SNACKS_MIGRATION.md](./TELESCOPE_TO_SNACKS_MIGRATION.md) for details +- Migrated from Telescope to Snacks for primary file navigation +- Kept Telescope for git-specific features and TODOs +- See [Telescope to Snacks Migration](./docs/TELESCOPE_TO_SNACKS_MIGRATION.md) for details --- -## File Changes Summary - -### Modified Files -| File | Changes | -|------|---------| -| `lua/cargdev/plugins/dap.lua` | Fixed Node.js adapter, added Python debugpy config | -| `ftplugin/java.lua` | Fixed java-debug-adapter and java-test paths | -| `lua/cargdev/plugins/lsp/mason.lua` | Added debugpy and js-debug-adapter to ensure_installed | -| `README.md` | Added Debugging Setup section with keymaps and configurations | -| `lua/cargdev/core/keymaps/README.md` | Added dap.lua and other keymap files to structure | -| `lua/cargdev/core/keymaps/personal.lua` | Removed duplicates, added quickfix/location keymaps, safe buffer close | -| `lua/cargdev/core/keymaps/plugins.lua` | Fixed session/substitute keymap conflicts | -| `lua/cargdev/core/keymaps/general.lua` | Added vault_path validation, removed commented code | -| `lua/cargdev/core/keymaps/window.lua` | Centralized window management keymaps | -| `lua/cargdev/core/init.lua` | Fixed double loading, added diagnostic hover, config validation, loads `local.lua` | -| `lua/cargdev/plugins/avante.lua` | Uses `local.lua` for paths and settings, removed hardcoded values | -| `lua/cargdev/plugins/ideaMap.lua` | Uses `local.lua` for `IDEA_DIR`, removed env var fallback | -| `lua/cargdev/plugins/leetcode.lua` | Removed commented hardcoded path | -| `lua/cargdev/plugins/lazygit.lua` | Removed commented hardcoded path | -| `lua/cargdev/core/options.lua` | Removed duplicate settings (synmaxcol, foldmethod, foldlevel) | -| `lua/cargdev/plugins/which-key.lua` | Added group names configuration | -| `lua/cargdev/plugins/formatting.lua` | Enabled auto-format on save with smart filtering | -| `lua/cargdev/lazy.lua` | Enabled plugin update notifications | -| `README.md` | Complete rewrite with proper documentation | - -### Deleted Files -| File | Reason | -|------|--------| -| `kkk` | Temporary file, unknown purpose | -| `cleanup_deprecated_adapters.lua` | One-time cleanup script, no longer needed | -| `IMPROVEMENTS.md` | All issues resolved | - -### New Files -| File | Purpose | -|------|---------| -| `CHANGELOG.md` | Track configuration changes | - ---- - -## Keymap Reference - -### New/Changed Keymaps - -| Keymap | Action | File | -|--------|--------|------| -| `sS` | Session: Save | plugins.lua | -| `sR` | Session: Restore | plugins.lua | -| `sl` | Substitute: Line | plugins.lua | -| `bd` | Buffer: Close (safe) | personal.lua | -| `bD` | Buffer: Force close | personal.lua | -| `qn` | Quickfix: Next | personal.lua | -| `qp` | Quickfix: Previous | personal.lua | -| `qo` | Quickfix: Open | personal.lua | -| `qq` | Quickfix: Close | personal.lua | -| `qf` | Quickfix: First | personal.lua | -| `ql` | Quickfix: Last | personal.lua | -| `ln` | Location: Next | personal.lua | -| `lp` | Location: Previous | personal.lua | -| `lo` | Location: Open | personal.lua | -| `lq` | Location: Close | personal.lua | - ---- - -*Last Updated: January 13, 2026* +*Last Updated: February 10, 2026* diff --git a/KEYMAPS.md b/KEYMAPS.md deleted file mode 100644 index 7ddb509..0000000 --- a/KEYMAPS.md +++ /dev/null @@ -1,496 +0,0 @@ -# Complete Keymaps Reference - -**Leader Key: ``** - -## Table of Contents -- [Navigation](#navigation) -- [File Management](#file-management) -- [Editing](#editing) -- [LSP & Code Intelligence](#lsp--code-intelligence) -- [Git](#git) -- [Debugging](#debugging) -- [Search & Replace](#search--replace) -- [Tasks & HTTP](#tasks--http) -- [UI & Productivity](#ui--productivity) -- [Language Specific](#language-specific) -- [Window Management](#window-management) - ---- - -## Navigation - -### Flash (Jump Anywhere) -| Key | Mode | Action | -|-----|------|--------| -| `s` | n, x, o | Flash jump (type chars to jump) | -| `S` | n, x, o | Flash treesitter select | -| `r` | o | Remote flash | -| `R` | o, x | Treesitter search | -| `` | c | Toggle flash in search | - -### Harpoon (Quick File Marks) -| Key | Action | -|-----|--------| -| `ha` | Add current file to harpoon | -| `hh` | Open harpoon menu | -| `hp` | Previous harpoon file | -| `hn` | Next harpoon file | - -### Portal (Jumplist Navigation) -| Key | Action | -|-----|--------| -| `pj` | Portal jumplist backward | -| `pk` | Portal jumplist forward | -| `pc` | Portal changelist backward | -| `pq` | Portal quickfix backward | - -### Navbuddy (Code Structure) -| Key | Action | -|-----|--------| -| `nb` | Open Navbuddy | - -Inside Navbuddy: -- `h/j/k/l` - Navigate -- `` - Select -- `0` - Go to root -- `q` - Close - -### Telescope -| Key | Action | -|-----|--------| -| `ff` | Find files | -| `fs` | Live grep (search text) | -| `fg` | Git files | -| `fF` | Find all files | -| `fr` | Recent files | - ---- - -## File Management - -### File Explorer (nvim-tree) -| Key | Action | -|-----|--------| -| `e` | Toggle file explorer | -| `ee` | Toggle file explorer | -| `nt` | Find current file in tree | -| `ec` | Collapse file explorer | -| `er` | Refresh file explorer | - -Inside nvim-tree: -- `o` - Open file -- `s` - Open in vertical split -- `i` - Open in horizontal split -- `a` - Create new file -- `r` - Rename -- `d` - Delete -- `x` - Cut -- `y` - Copy -- `p` - Paste -- `u` - Go up one directory - -### Buffers -| Key | Action | -|-----|--------| -| `` | Next buffer | -| `` | Previous buffer | -| `bd` | Close buffer | -| `bD` | Force close buffer | - ---- - -## Editing - -### Multi-Cursor (vim-visual-multi) -| Key | Action | -|-----|--------| -| `` | Select word under cursor / Add next occurrence | -| `` | Add cursor below | -| `` | Add cursor above | -| `` | Select all occurrences | -| `` | Skip current match | -| `` | Remove current cursor | -| `` | Exit multi-cursor | - -### Yanky (Yank Ring) -| Key | Mode | Action | -|-----|------|--------| -| `y` | n, x | Yank | -| `p` | n, x | Put after | -| `P` | n, x | Put before | -| `yh` | n | Open yank history | -| `]p` | n | Put indented after | -| `[p` | n | Put indented before | - -### Treesj (Split/Join) -| Key | Action | -|-----|--------| -| `tj` | Toggle split/join | -| `ts` | Split code block | -| `tJ` | Join code block | - -### Dial (Smart Increment) -| Key | Mode | Action | -|-----|------|--------| -| `` | n, v | Increment | -| `` | n, v | Decrement | -| `g` | n, v | Increment (sequence) | -| `g` | n, v | Decrement (sequence) | - -Works on: numbers, booleans, dates, CSS units, HTTP methods, operators, and more! - -### Surround -| Key | Action | -|-----|--------| -| `ys{motion}{char}` | Add surround | -| `ds{char}` | Delete surround | -| `cs{old}{new}` | Change surround | - -Examples: -- `ysiw"` - Surround word with quotes -- `ds"` - Delete surrounding quotes -- `cs"'` - Change " to ' - -### Comments -| Key | Mode | Action | -|-----|------|--------| -| `gcc` | n | Toggle line comment | -| `gc` | v | Toggle comment selection | -| `gbc` | n | Toggle block comment | -| `/` | n, v | Toggle comment | - -### Substitute -| Key | Action | -|-----|--------| -| `sub` | Substitute with motion | -| `sl` | Substitute line | -| `S` | Substitute to end of line | - -### Undo Tree -| Key | Action | -|-----|--------| -| `tu` | Toggle undo tree | - ---- - -## LSP & Code Intelligence - -### LSP Saga -| Key | Action | -|-----|--------| -| `K` | Hover documentation | -| `gd` | Peek definition | -| `gD` | Go to definition | -| `gt` | Peek type definition | -| `gT` | Go to type definition | -| `gh` | LSP finder (refs + impl) | -| `gr` | Rename | -| `gR` | Rename (project-wide) | -| `ca` | Code actions | -| `sl` | Show line diagnostics | -| `sc` | Show cursor diagnostics | -| `sb` | Show buffer diagnostics | -| `[d` | Previous diagnostic | -| `]d` | Next diagnostic | -| `ci` | Incoming calls | -| `co` | Outgoing calls | -| `so` | Toggle LSP outline | - -### Inc-Rename (Live Preview) -| Key | Action | -|-----|--------| -| `rn` | Rename with live preview | - -### Outline -| Key | Action | -|-----|--------| -| `cs` | Toggle symbol outline | - -### Formatting -| Key | Action | -|-----|--------| -| `f` | Format buffer | -| `mm` | Format with conform | - -### Regexplainer -| Key | Action | -|-----|--------| -| `rx` | Toggle regex explanation | - ---- - -## Git - -### LazyGit -| Key | Action | -|-----|--------| -| `gg` | Open LazyGit | - -### Neogit -| Key | Action | -|-----|--------| -| `gn` | Open Neogit | -| `gnc` | Neogit commit | -| `gnp` | Neogit push | -| `gnl` | Neogit pull | -| `gnb` | Neogit branch | - -### Diffview -| Key | Action | -|-----|--------| -| `gd` | Open diffview | -| `gD` | Close diffview | -| `gh` | File history (current file) | -| `gH` | File history (repo) | - -### Git Blame -| Key | Action | -|-----|--------| -| `gB` | Toggle git blame | -| `gbc` | Copy commit SHA | -| `gbo` | Open commit URL | -| `gbf` | Open file URL | - -### Octo (GitHub) -| Key | Action | -|-----|--------| -| `oi` | List issues | -| `oI` | Create issue | -| `op` | List PRs | -| `oP` | Create PR | -| `or` | List repos | -| `os` | Search issues/PRs | -| `oa` | Octo actions | - -### Gitsigns -| Key | Action | -|-----|--------| -| `]c` | Next hunk | -| `[c` | Previous hunk | -| `hs` | Stage hunk | -| `hr` | Reset hunk | -| `hp` | Preview hunk | - ---- - -## Debugging - -### DAP (Debug Adapter Protocol) -| Key | Action | -|-----|--------| -| `db` | Toggle breakpoint | -| `dcc` | Start/Continue debugging | -| `di` | Step into | -| `do` | Step over | -| `dO` | Step out | -| `dr` | Toggle REPL | -| `dl` | Run last debug config | -| `du` | Toggle DAP UI | -| `dt` | Float element | -| `dco` | DAP commands | -| `dcf` | List DAP configs | -| `dcb` | List breakpoints | - -### Java Debugging -| Key | Action | -|-----|--------| -| `jd` | Debug class | -| `jt` | Test class | -| `jn` | Test nearest method | -| `jr` | Run Java file | - ---- - -## Search & Replace - -### Grug-Far (Project-Wide) -| Key | Mode | Action | -|-----|------|--------| -| `sr` | n | Open search & replace | -| `sR` | n | Search current word | -| `sR` | v | Search selection | - -Inside Grug-Far: -- `r` - Replace -- `R` - Replace all -- `` - Go to location -- `q` - Close - -### SSR (Structural Search/Replace) -| Key | Mode | Action | -|-----|------|--------| -| `sR` | n, x | Structural search/replace | - ---- - -## Tasks & HTTP - -### Overseer (Task Runner) -| Key | Action | -|-----|--------| -| `or` | Run task | -| `ot` | Toggle task list | -| `oa` | Task action | -| `oq` | Quick action | -| `ob` | Build | -| `oc` | Run shell command | - -### Kulala (HTTP Client) -| Key | Action | -|-----|--------| -| `kr` | Run HTTP request | -| `ka` | Run all requests | -| `kp` | Previous request | -| `kn` | Next request | -| `ki` | Inspect request | -| `kt` | Toggle headers/body | -| `kc` | Copy as cURL | -| `ke` | Set environment | - ---- - -## UI & Productivity - -### Zen Mode & Focus -| Key | Action | -|-----|--------| -| `zz` | Toggle Zen mode | -| `zt` | Toggle Twilight (dim code) | - -### Session -| Key | Action | -|-----|--------| -| `qs` | Restore session | -| `ql` | Restore last session | -| `qd` | Don't save session | - -### Learning Vim -| Key | Action | -|-----|--------| -| `ht` | Toggle Hardtime | -| `vp` | Toggle Precognition hints | -| `vP` | Peek Precognition | - -### Screenkey (Demo Mode) -| Key | Action | -|-----|--------| -| `sk` | Toggle Screenkey | - -### Trouble (Diagnostics) -| Key | Action | -|-----|--------| -| `xx` | Toggle Trouble | -| `xw` | Workspace diagnostics | -| `xd` | Document diagnostics | -| `xl` | Location list | -| `xq` | Quickfix list | -| `xt` | Open TODOs in Trouble | - -### Todo Comments -| Key | Action | -|-----|--------| -| `]t` | Next TODO | -| `[t` | Previous TODO | - ---- - -## Language Specific - -### Python -| Key | Action | -|-----|--------| -| `vs` | Select Python venv | -| `vc` | Select cached venv | - -### JavaScript/TypeScript (package.json) -| Key | Action | -|-----|--------| -| `ns` | Show package versions | -| `nh` | Hide package info | -| `nu` | Update package | -| `nd` | Delete package | -| `ni` | Install package | -| `nc` | Change version | - -### Rust (Cargo.toml) -| Key | Action | -|-----|--------| -| `ct` | Toggle crates | -| `cr` | Reload crates | -| `cv` | Show versions popup | -| `cf` | Show features popup | -| `cd` | Show dependencies | -| `cu` | Update crate | -| `cU` | Upgrade crate | - -### LeetCode -| Key | Action | -|-----|--------| -| `lr` | Run code | -| `ls` | Submit code | -| `ld` | Daily challenge | -| `ll` | List problems | -| `lc` | Open console | -| `lh` | Show hints | - ---- - -## Window Management - -### Splits -| Key | Action | -|-----|--------| -| `sv` | Split vertical | -| `sh` | Split horizontal | -| `se` | Equal splits | -| `sx` | Close split | -| `sm` | Maximize split | - -### Navigation -| Key | Action | -|-----|--------| -| `` | Move to left window | -| `` | Move to down window | -| `` | Move to up window | -| `` | Move to right window | - -### Resize -| Key | Action | -|-----|--------| -| `` | Increase height | -| `` | Decrease height | -| `` | Decrease width | -| `` | Increase width | - ---- - -## General - -| Key | Action | -|-----|--------| -| `jj` | Exit insert mode | -| `nh` | Clear search highlights | -| `w` | Save file | -| `q` | Close file | -| `Q` | Quit all | -| `xa` | Save and close all | - ---- - -## Commands - -| Command | Description | -|---------|-------------| -| `:Lazy` | Plugin manager | -| `:Mason` | LSP server manager | -| `:Navbuddy` | Code navigation | -| `:Outline` | Symbol outline | -| `:Neogit` | Git interface | -| `:DiffviewOpen` | Diff view | -| `:GrugFar` | Search & replace | -| `:Octo` | GitHub | -| `:OverseerRun` | Run tasks | -| `:ZenMode` | Zen mode | -| `:Hardtime toggle` | Toggle hardtime | -| `:Screenkey` | Show keypresses | -| `:TSJToggle` | Toggle split/join | diff --git a/NVIM_PERFORMANCE_ANALYSIS.md b/NVIM_PERFORMANCE_ANALYSIS.md deleted file mode 100644 index 5836dc5..0000000 --- a/NVIM_PERFORMANCE_ANALYSIS.md +++ /dev/null @@ -1,208 +0,0 @@ -# Neovim Performance Analysis & Optimization Results - -## Overview -This document analyzes the performance profile from `nvim-profile.log` and shows the results of applied optimizations. - -## 📊 Performance Comparison Results - -### ✅ **Significant Improvements** - -#### 1. Clipboard Provider Performance -- **Before**: 2.16s total time, 123 calls -- **After**: 0.54s total time, 78 calls -- **Improvement**: **75% reduction** in total time, **37% fewer** calls -- **Status**: ✅ **MAJOR SUCCESS** - -#### 2. Syntax Loading Performance -- **Before**: 0.70s total time, 699 calls -- **After**: 0.47s total time, 189 calls -- **Improvement**: **33% reduction** in total time, **73% fewer** calls -- **Status**: ✅ **SUCCESS** - -#### 3. Filetype Plugin Loading -- **Before**: 0.70s total time, 278 calls -- **After**: 0.62s total time, 175 calls -- **Improvement**: **11% reduction** in total time, **37% fewer** calls -- **Status**: ✅ **MODERATE SUCCESS** - -### ⚠️ **Performance Regressions** - -#### 4. WakaTime Plugin Performance -- **Before**: 0.48s total time, 686 calls -- **After**: 1.82s total time, 2,052 calls -- **Change**: **279% increase** in total time, **199% more** calls -- **Status**: ❌ **REGRESSION** - Need to investigate - -#### 5. Matchparen Highlighting -- **Before**: 0.23s total time, 2,912 calls -- **After**: 0.78s total time, 6,055 calls -- **Change**: **239% increase** in total time, **108% more** calls -- **Status**: ❌ **REGRESSION** - Need to investigate - -## 🔧 Applied Optimizations - -### ✅ Successful Optimizations - -#### 1. Keymap Conflict Resolution -- **Fixed**: Changed `s` to `sub` to avoid conflict with `fs` -- **File**: `lua/cargdev/core/keymaps/plugins.lua` -- **Impact**: `fs` now works correctly for file search -- **Status**: ✅ **CONFIRMED WORKING** - -#### 2. Clipboard Provider Optimization -- **Fixed**: Added explicit macOS clipboard configuration -- **File**: `lua/cargdev/core/options.lua` -- **Changes**: Configured `pbcopy`/`pbpaste` with caching enabled -- **Result**: **75% performance improvement** -- **Status**: ✅ **MAJOR SUCCESS** - -#### 3. Syntax Loading Optimization -- **Fixed**: Optimized syntax highlighting settings -- **File**: `lua/cargdev/core/options.lua` -- **Changes**: Reduced `synmaxcol` to 200, disabled modelines -- **Result**: **33% performance improvement** -- **Status**: ✅ **SUCCESS** - -#### 4. Filetype Plugin Optimization -- **Fixed**: Optimized filetype plugin loading -- **File**: `lua/cargdev/core/options.lua` -- **Changes**: Disabled modelines for security and performance -- **Result**: **11% performance improvement** -- **Status**: ✅ **MODERATE SUCCESS** - -### ❌ Failed Optimizations - -#### 5. WakaTime Performance Optimization -- **Attempted**: Optimized heartbeat frequency and buffering -- **File**: `lua/cargdev/plugins/wakatime.lua` -- **Changes**: Increased heartbeat frequency to 2 minutes, enabled buffering -- **Result**: **279% performance regression** -- **Status**: ❌ **NEEDS REVERT** - -#### 6. Matchparen Performance Optimization -- **Attempted**: Reduced timeout values for faster response -- **File**: `lua/cargdev/core/options.lua` -- **Changes**: Reduced `matchparen_timeout` to 100ms, `matchparen_insert_timeout` to 50ms -- **Result**: **239% performance regression** -- **Status**: ❌ **NEEDS REVERT** - -## 🚨 Issues Requiring Immediate Attention - -### 1. WakaTime Regression -**Problem**: WakaTime is now consuming significantly more resources -**Possible Causes**: -- Buffering enabled may be causing overhead -- Increased heartbeat frequency may be triggering more processing -- Debug mode changes may have unintended effects - -**Recommended Actions**: -- Revert WakaTime configuration to original settings -- Consider disabling WakaTime temporarily to measure impact -- Investigate alternative WakaTime configurations - -### 2. Matchparen Regression -**Problem**: Matchparen highlighting is now much slower -**Possible Causes**: -- Reduced timeout values may be causing more frequent recalculations -- Timeout settings may be conflicting with other optimizations -- The optimization may have triggered a different code path - -**Recommended Actions**: -- Revert matchparen timeout settings to defaults -- Test with original settings to confirm improvement -- Consider alternative matchparen optimization strategies - -## 📈 Overall Performance Impact - -### Net Performance Change -- **Clipboard**: +1.62s improvement -- **Syntax**: +0.23s improvement -- **Filetype**: +0.08s improvement -- **WakaTime**: -1.34s regression -- **Matchparen**: -0.55s regression - -**Net Result**: **+0.04s improvement** (essentially neutral) - -### Recommendations -1. **Keep successful optimizations** (clipboard, syntax, filetype) -2. **Revert failed optimizations** (WakaTime, matchparen) -3. **Investigate alternative approaches** for WakaTime and matchparen -4. **Consider disabling WakaTime** if not actively used - -## 🔍 **Additional Performance Issues Discovered** - -### 6. CursorHold Events Performance -- **Total Time**: 0.92s (CursorHold_Cb) + 0.30s (CursorHoldI_Cb) = **1.22s total** -- **Calls**: 1,213 + 625 = **1,838 calls** -- **Issue**: FixCursorHold plugin is consuming significant resources -- **Status**: ⚠️ **NEW ISSUE** - Major performance bottleneck - -### 7. Tmux Navigation Performance -- **Total Time**: 0.61s (TmuxAwareNavigate) + 0.56s (VimNavigate) = **1.17s total** -- **Calls**: 63 + 63 = **126 calls** -- **Issue**: Tmux-aware navigation is slow -- **Status**: ⚠️ **NEW ISSUE** - Significant overhead - -### 8. Treesitter Indentation Performance -- **Total Time**: 0.08s -- **Calls**: 15 calls -- **Issue**: Treesitter indentation is being called frequently -- **Status**: ⚠️ **NEW ISSUE** - Moderate impact - -### 9. WakaTime Heartbeat System -- **Total Time**: 0.98s (SetLastHeartbeat) + 0.11s (SendHeartbeats) = **1.09s total** -- **Calls**: 206 + 60 = **266 calls** -- **Issue**: Heartbeat system is very slow -- **Status**: ❌ **MAJOR ISSUE** - Part of WakaTime regression - -## 📊 **Updated Performance Summary** - -### Total Performance Impact (All Issues) -- **WakaTime System**: 2.91s total (HandleActivity + Heartbeats) -- **CursorHold Events**: 1.22s total -- **Tmux Navigation**: 1.17s total -- **Matchparen**: 0.78s total -- **Clipboard**: 0.54s total (improved from 2.16s) -- **Syntax Loading**: 0.47s total (improved from 0.70s) -- **Filetype Plugins**: 0.62s total (improved from 0.70s) - -**Total Identified Issues**: **~7.7 seconds** of performance overhead - -## 🚨 **Critical Issues Requiring Immediate Attention** - -### 1. WakaTime Complete System Failure -- **Problem**: Entire WakaTime system is consuming 2.91s total -- **Components**: HandleActivity (1.82s) + Heartbeats (1.09s) -- **Impact**: Single biggest performance bottleneck -- **Action**: **DISABLE WAKATIME IMMEDIATELY** - -### 2. CursorHold Events Overhead -- **Problem**: FixCursorHold plugin consuming 1.22s -- **Impact**: Major performance hit on cursor movement -- **Action**: **OPTIMIZE OR DISABLE FixCursorHold** - -### 3. Tmux Navigation Overhead -- **Problem**: Tmux-aware navigation consuming 1.17s -- **Impact**: Significant overhead for navigation -- **Action**: **OPTIMIZE Tmux integration** - -## 🎯 **Revised Priority Actions** - -### Immediate (Critical) -1. **Disable WakaTime completely** - Save 2.91s -2. **Optimize FixCursorHold** - Save up to 1.22s -3. **Revert matchparen settings** - Save 0.55s - -### High Priority -4. **Optimize Tmux navigation** - Save up to 1.17s -5. **Investigate Treesitter indentation** - Save up to 0.08s - -### Medium Priority -6. **Keep successful optimizations** (clipboard, syntax, filetype) - -**Potential Total Savings**: **~5.8 seconds** (75% improvement) - ---- -*Analysis based on comparison of original and optimized nvim-profile.log* -*Last updated: $(date)* -*Keymap conflict: ✅ Fixed | Clipboard: ✅ 75% improvement | Syntax: ✅ 33% improvement | Filetype: ✅ 11% improvement | WakaTime: ❌ 279% regression | Matchparen: ❌ 239% regression* diff --git a/README.md b/README.md index 8e35cdf..b3f5ffc 100644 --- a/README.md +++ b/README.md @@ -20,15 +20,17 @@ A modern, feature-rich Neovim configuration with 80+ plugins, optimized for full ## Features -- **VS Code-like UI** with file explorer on right, breadcrumbs, symbol outline +- **VS Code-like UI** with file explorer, breadcrumbs, symbol outline - **80+ plugins** carefully configured and optimized - **Full LSP support** for TypeScript, Python, Java, Go, Lua, and more -- **Debugging** with DAP for Node.js/NestJS, Python, Java +- **Debugging** with DAP for Node.js/NestJS, Python, Java, Bun - **Git integration** with LazyGit, Neogit, Diffview, Octo (GitHub PRs) -- **AI assistance** with GitHub Copilot +- **AI assistance** with GitHub Copilot + CopilotChat - **HTTP client** for API testing - **Task runner** for build/run tasks - **Multi-cursor** editing like VS Code +- **Snacks.nvim** for modern file navigation and pickers +- **fzf-lua** for LSP navigation ## Requirements @@ -59,9 +61,12 @@ nvim | Document | Description | |----------|-------------| -| [KEYMAPS.md](./KEYMAPS.md) | **Complete keybinding reference** | -| [PLUGINS.md](./PLUGINS.md) | All plugins and their purposes | -| [CHANGELOG.md](./CHANGELOG.md) | Version history | +| [KEYMAPS.md](./docs/KEYMAPS.md) | **Complete keybinding reference** | +| [PLUGINS.md](./docs/PLUGINS.md) | All plugins and their purposes | +| [CHANGELOG.md](./CHANGELOG.md) | Version history and recent changes | +| [Native Auto Wrapper](./docs/NATIVE_AUTO_WRAPPER_GUIDE.md) | Text wrapping configuration | +| [Snacks Migration](./docs/TELESCOPE_TO_SNACKS_MIGRATION.md) | Telescope to Snacks migration notes | +| [Keyboard Mappings](./docs/keyboard_mappings.md) | QMK keyboard layout reference | ## Quick Start @@ -71,65 +76,48 @@ nvim | Key | Action | |-----|--------| -| `ff` | Find files | +| `ff` | Find files (Snacks picker) | | `fs` | Search text in project | -| `e` | Toggle file explorer (right side) | +| `e` | Toggle file explorer | | `gg` | Open LazyGit | -| `s` | Flash jump (type chars to jump) | -| `ha` | Harpoon add file | -| `1-5` | Jump to harpooned file | -| `K` | Hover documentation | -| `gd` | Go to definition | -| `ca` | Code actions | -| `rn` | Rename symbol (live preview) | +| `K` | Peek fold or hover documentation | +| `gd` | Go to definition (fzf-lua) | +| `ca` | Code actions (fzf-lua) | +| `rn` | Rename symbol | | `` | Multi-cursor (select word) | ### Navigation | Key | Action | |-----|--------| -| `s` | Flash jump anywhere | -| `S` | Flash treesitter select | -| `nb` | Navbuddy (code structure popup) | -| `cs` | Symbol outline sidebar | -| `tu` | Undo tree | +| `ff` | Find files (Snacks) | +| `fs` | Live grep (Snacks) | +| `fr` | Recent files (Snacks) | +| `fb` | Find buffers (Snacks) | +| `fk` | Find keymaps (Snacks) | ### Git | Key | Action | |-----|--------| | `gg` | LazyGit | -| `gn` | Neogit (magit-like) | -| `gd` | Diffview | -| `gh` | File history | -| `gB` | Toggle git blame | -| `oi` | GitHub issues (Octo) | -| `op` | GitHub PRs (Octo) | - -### Editing - -| Key | Action | -|-----|--------| -| `` | Add cursor on word (VS Code style) | -| `` / `` | Smart increment/decrement | -| `tj` | Toggle split/join code blocks | -| `sr` | Search & replace (project-wide) | -| `sR` | Structural search/replace | -| `yh` | Yank history | -| `` / `` | Cycle yank history | +| `gs` | Git status | +| `]h` / `[h` | Next/prev hunk | +| `hs` | Stage hunk | +| `hb` | Blame line | +| `hd` | Diff this | ### LSP | Key | Action | |-----|--------| -| `K` | Hover documentation | -| `gd` | Peek definition | -| `gD` | Go to definition | -| `gr` | Rename | -| `gh` | LSP finder (refs, implementations) | +| `H` | Hover documentation | +| `gd` | Go to definition | +| `gi` | Go to implementation | +| `gr` | Show references | | `ca` | Code actions | -| `rn` | Rename (live preview) | -| `sl` | Line diagnostics | +| `rn` | Rename | +| `dd` | Line diagnostics | | `[d` / `]d` | Prev/next diagnostic | ### Debugging @@ -137,11 +125,31 @@ nvim | Key | Action | |-----|--------| | `db` | Toggle breakpoint | -| `dcc` | Start/continue debugging | +| `dcr` | Start/continue debugging | | `di` | Step into | | `do` | Step over | -| `dO` | Step out | +| `dot` | Step out | | `du` | Toggle DAP UI | +| `jd` | Dynamic debug attach | + +### Copilot & AI + +| Key | Action | +|-----|--------| +| `cc` | Toggle CopilotChat | +| `ce` | Explain code | +| `cr` | Review code | +| `cf` | Fix code | +| `ct` | Generate tests | + +### Editing + +| Key | Action | +|-----|--------| +| `` | Add cursor on word (VS Code style) | +| `/` | Toggle comment | +| `sub` | Substitute with motion | +| `mm` | Format with conform | ### Tasks & HTTP @@ -152,45 +160,20 @@ nvim | `kr` | Run HTTP request (in .http file) | | `ka` | Run all HTTP requests | -### Productivity - -| Key | Action | -|-----|--------| -| `zz` | Zen mode | -| `zt` | Twilight (dim inactive code) | -| `qs` | Restore session | -| `ht` | Toggle Hardtime (learn vim motions) | -| `vp` | Toggle Precognition (motion hints) | -| `sk` | Toggle Screenkey (show keypresses) | - -### Python +### Language-Specific | Key | Action | |-----|--------| | `vs` | Select Python venv | -| Debug configs | Django, FastAPI, Flask, Launch file | - -### JavaScript/TypeScript - -| Key | Action | -|-----|--------| | `ns` | Show package versions (package.json) | -| `nu` | Update package | -| Debug configs | NestJS, ts-node, Attach | - -### Rust - -| Key | Action | -|-----|--------| | `cv` | Show crate versions (Cargo.toml) | -| `cu` | Update crate | ## Plugin Categories ### Navigation & Search -- **telescope** - Fuzzy finder -- **flash.nvim** - Jump anywhere with minimal keystrokes -- **harpoon** - Quick file marks +- **snacks.nvim** - Modern file navigation, pickers, dashboard +- **telescope** - Fuzzy finder (git features, TODOs) +- **fzf-lua** - LSP navigation pickers - **portal.nvim** - Jump through jumplist with preview - **nvim-navbuddy** - Code structure navigation @@ -198,14 +181,14 @@ nvim - **lazygit** - Terminal UI for git - **neogit** - Magit-like git interface - **diffview** - Side-by-side diffs -- **gitsigns** - Git decorations +- **gitsigns** - Git decorations and hunk actions - **git-blame** - Inline blame - **octo.nvim** - GitHub issues/PRs ### LSP & Coding - **nvim-lspconfig** + **mason** - LSP setup - **lspsaga** - Pretty LSP UI -- **nvim-cmp** - Completion +- **nvim-cmp** - Completion (with Copilot source) - **treesitter** - Syntax highlighting - **outline.nvim** - Symbol sidebar - **inc-rename** - Live rename preview @@ -215,7 +198,6 @@ nvim - **vim-visual-multi** - Multi-cursor - **yanky.nvim** - Yank ring - **treesj** - Split/join blocks -- **dial.nvim** - Smart increment - **nvim-surround** - Surround text - **nvim-autopairs** - Auto brackets - **Comment.nvim** - Commenting @@ -223,7 +205,7 @@ nvim ### UI - **snacks.nvim** - Dashboard, notifier, picker - **noice.nvim** - UI for messages, cmdline -- **lualine** - Statusline +- **lualine** - Statusline (with word count) - **bufferline** - Buffer tabs - **dropbar** - Breadcrumbs - **satellite** - Scrollbar with markers @@ -240,13 +222,11 @@ nvim - **overseer** - Task runner - **kulala** - HTTP client - **zen-mode** - Distraction-free -- **persistence** - Session management - **grug-far** - Search & replace - **ssr.nvim** - Structural search/replace ### Eye Candy - **cargdev-cyberpunk** - Custom theme -- **mini.animate** - Smooth animations - **reactive** - Mode-based colors - **hlchunk** - Scope highlighting - **nvim-highlight-colors** - Color preview @@ -266,7 +246,8 @@ nvim | `:OverseerRun` | Run tasks | | `:ZenMode` | Distraction-free mode | | `:Hardtime toggle` | Toggle vim training | -| `:Screenkey` | Show keypresses | +| `:WordCount` | Show word count (excluding symbols) | +| `:RunProject` | Run project command | ## Debugging Setup @@ -276,17 +257,17 @@ nvim ``` Configs: Launch File, Django, FastAPI, Flask, Attach Remote -### Node.js / TypeScript / NestJS +### Node.js / TypeScript / NestJS / Bun ```bash :Mason # Install js-debug-adapter ``` -Configs: Launch NestJS, Launch File, ts-node, Attach +Configs: Launch NestJS, Launch File, ts-node, Bun Launch, Dynamic Attach ### Java ```bash :Mason # Install java-debug-adapter, java-test ``` -Auto-configured via nvim-jdtls +Auto-configured via nvim-jdtls (JDK 25, mac_arm) ## HTTP Client (Kulala) @@ -313,15 +294,9 @@ Use `kr` to run request under cursor. ### Learn Vim Motions Enable Hardtime (`ht`) and Precognition (`vp`) to improve your vim skills. -### Quick File Switching -Use Harpoon to mark important files (`ha`), then jump instantly with `1-5`. - ### Multi-Cursor Editing Like VS Code: `` to select word, keep pressing for more occurrences. -### Smart Increment -`` on `true` → `false`, on `GET` → `POST`, on dates, colors, etc. - ### Split/Join Code `tj` on arrays, objects, function arguments to toggle between single/multi-line. diff --git a/docs/CHANGELOG_OLD.md b/docs/CHANGELOG_OLD.md new file mode 100644 index 0000000..5a40621 --- /dev/null +++ b/docs/CHANGELOG_OLD.md @@ -0,0 +1,246 @@ +# Changelog + +All notable changes to this Neovim configuration will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +--- + +## [Unreleased] + +### Added +- **Python Debugger (debugpy)**: Full Python debugging support with multiple configurations + - Launch File - Debug current Python file + - Launch with Arguments - Debug with custom arguments + - Attach Remote - Attach to debugpy server (port 5678) + - Django - Debug Django with `manage.py runserver` + - FastAPI - Debug FastAPI with uvicorn + - Flask - Debug Flask application +- **Node.js/NestJS Debug Configurations**: Extended TypeScript/JavaScript debugging + - Launch NestJS (`dist/main.js`) with source maps + - Launch Current File + - Launch with ts-node (debug TypeScript directly) + - Attach to NestJS (port 9229) + - Attach to Process (pick from running processes) +- **Mason Debug Adapters**: Added `debugpy` and `js-debug-adapter` to auto-install list +- **README Documentation**: Added comprehensive "Debugging Setup" section with all configurations +- **Avante.nvim AI Assistant**: Added Avante.nvim with local LLM support to README documentation +- **Bash Treesitter Parser**: Installed bash parser for noice.nvim cmdline highlighting +- **Local Configuration Support**: `local.lua` is now loaded at startup and exposed via `vim.g.cargdev_local` + - Enables machine-specific paths without hardcoding + - Safe loading with `pcall` (won't error if file doesn't exist) + - Plugins gracefully skip if required config is missing + +### Changed +- **Avante Plugin**: Now uses `local.lua` for all paths and settings + - `avante_dev_path` for plugin directory + - `avante_endpoint`, `avante_api_key_name`, `avante_model` for provider config +- **IdeaDrop Plugin**: Now uses `IDEA_DIR` from `local.lua` instead of environment variable + +### Removed +- **Hardcoded Paths**: Removed all hardcoded user paths from plugin configs + - `avante.lua` - uses `local.lua` values + - `ideaMap.lua` - uses `local.lua` values + - `leetcode.lua` - removed commented hardcoded path + - `lazygit.lua` - removed commented hardcoded path + +### Fixed +- **Java Debug Adapter Paths**: Fixed incorrect paths in `ftplugin/java.lua` + - Changed `java-debug` → `java-debug-adapter/extension/server/` + - Changed `vscode-java-test` → `java-test/extension/server/` +- **Node.js DAP Adapter**: Fixed js-debug-adapter configuration in `dap.lua` + - Changed adapter type from `executable` to `server` (required by js-debug-adapter) + - Renamed adapter from `node` to `pwa-node` (standard DAP name) + - Added proper source map resolution and skipFiles patterns +- **Auto-session Lazy Loading**: Changed from `event = "VeryLazy"` to `lazy = false` to enable session auto-restore on startup +- **Alpha Dashboard Config**: Fixed `enable` to `enabled` (correct lazy.nvim spec key) +- **Snacks vs Alpha Conflict**: Disabled `Snacks.dashboard` in favor of `alpha-nvim` for CARGDEV branding + +### Added +- **Java Debug & Run Keymaps**: New keybindings for Java development + - `jd` - Debug Class (DAP) + - `jt` - Test Class + - `jn` - Test Nearest Method + - `jr` - Run Java File + - `jm` - Run Maven Project + - `jg` - Run Gradle Project +- **Java Debug Dependencies**: Added `java-debug-adapter` and `java-test` to Mason ensure_installed + +### Changed +- **Colorscheme Configuration**: Enhanced `cargdev-cyberpunk` setup + - Enabled transparency + - Enabled italic comments + - Enabled bold keywords, functions, and types + - Enabled terminal colors + +### Fixed +- **Java DAP Configuration**: Fixed debug adapter not loading + - Changed `bundles = {}` to `bundles = bundles` to properly load debug JARs + - Added `on_attach` callback to setup DAP after JDTLS attaches + - Enables hot code replacement during debugging +- **Broken Java DAP Adapter**: Removed manual Java adapter with undefined `port` variable + - Now handled automatically by nvim-jdtls via `jdtls.setup_dap()` + +--- + +## [2026-01-10] + +### Added +- **Custom Colorscheme**: Using `cargdev-cyberpunk` theme + - Vibrant, high-contrast cyberpunk aesthetic with neon colors + - Hot pink keywords, electric purple types, cyan strings, green functions + - Full TypeScript/LSP/Treesitter support + - Deep blue backgrounds with neon accents + - Loaded with high priority for consistent UI +- **Which-Key Group Names**: Added organized group names for better keymap discoverability + - Groups: Buffer, Code/Copilot, Debug, Explorer, Find/Files, Git, LSP, Format, Quickfix, Session, Tab/Terminal, Trouble, Copilot Chat +- **Auto-Format on Save**: Enabled smart auto-formatting with conform.nvim + - Skips certain filetypes (sql, markdown) + - Skips files in node_modules + - Added `:FormatToggle` command to enable/disable +- **Diagnostic Float on Hover**: Diagnostics now appear automatically when cursor holds +- **Safe Buffer Close**: `bd` now prompts for unsaved changes + - Options: Save & Close, Discard & Close, Cancel + - `bD` for force close without confirmation +- **Quickfix Navigation Keymaps**: + - `qn` - Next quickfix item + - `qp` - Previous quickfix item + - `qo` - Open quickfix list + - `qq` - Close quickfix list + - `qf` - First quickfix item + - `ql` - Last quickfix item +- **Location List Navigation Keymaps**: + - `ln` - Next location item + - `lp` - Previous location item + - `lo` - Open location list + - `lq` - Close location list +- **Configuration Validation**: Startup checks for: + - Neovim version (0.9+ recommended) + - Required executables (git, rg, node) +- **Plugin Update Notifications**: Lazy.nvim now notifies about available updates (daily check) +- **CheckConfig Command**: Quick access to health checks + +### Changed +- **Session Keymaps**: Renamed to avoid conflicts with substitute + - `ss` → `sS` (Session Save) + - `sr` → `sR` (Session Restore) +- **Substitute Keymaps**: Reorganized to avoid conflicts + - `ss` → `sl` (Substitute Line) + - `sub` remains for substitute with motion + - `S` remains for substitute to end of line +- **Keymap Descriptions**: Standardized format (e.g., "Session: Save", "Substitute: Line") + +### Fixed +- **Duplicate Window Management Keymaps**: Removed duplicates from `personal.lua`, centralized in `window.lua` +- **Duplicate Resize Keymaps**: Removed duplicates, centralized in `window.lua` +- **Redundant Filetype Detection**: Now only runs if filetype is not already detected +- **Double Function Loading**: Functions now load once on VimEnter with flag protection +- **Duplicate synmaxcol Setting**: Removed duplicate (was 240 then 200), kept 200 +- **Duplicate foldmethod Setting**: Removed duplicate, kept `indent` (faster than `syntax`) +- **Duplicate foldlevel Setting**: Removed duplicate setting +- **Environment Variable Validation**: `IDEA_DIR` now validated before Obsidian link setup + +### Removed +- **Temporary Files**: + - `kkk` - Unknown purpose temporary file + - `cleanup_deprecated_adapters.lua` - Cleanup script no longer needed +- **IMPROVEMENTS.md**: All issues resolved, file removed +- **Commented Code**: + - Tmux navigation keymaps from `personal.lua` + - Commented `x` keymap explanation from `general.lua` + - Commented `project_config` bootstrap from `init.lua` + +### Performance +- Optimized filetype detection (conditional execution) +- Reduced redundant option settings +- Single function loading instead of double + +--- + +## [Previous] - Pre-Changelog + +### Features Present +- Lazy.nvim plugin management +- Full LSP support with Mason +- nvim-cmp completion +- Snacks.nvim + Telescope file navigation +- nvim-tree file explorer +- LazyGit integration +- GitHub Copilot + Copilot Chat +- DAP debugging with UI +- Conform.nvim formatting +- Trouble.nvim diagnostics +- Native auto-wrapping configuration +- Custom lualine theme with word count + +### Migration History +- Migrated from Telescope to Snacks for primary navigation +- Kept Telescope for git-specific features +- See [TELESCOPE_TO_SNACKS_MIGRATION.md](./TELESCOPE_TO_SNACKS_MIGRATION.md) for details + +--- + +## File Changes Summary + +### Modified Files +| File | Changes | +|------|---------| +| `lua/cargdev/plugins/dap.lua` | Fixed Node.js adapter, added Python debugpy config | +| `ftplugin/java.lua` | Fixed java-debug-adapter and java-test paths | +| `lua/cargdev/plugins/lsp/mason.lua` | Added debugpy and js-debug-adapter to ensure_installed | +| `README.md` | Added Debugging Setup section with keymaps and configurations | +| `lua/cargdev/core/keymaps/README.md` | Added dap.lua and other keymap files to structure | +| `lua/cargdev/core/keymaps/personal.lua` | Removed duplicates, added quickfix/location keymaps, safe buffer close | +| `lua/cargdev/core/keymaps/plugins.lua` | Fixed session/substitute keymap conflicts | +| `lua/cargdev/core/keymaps/general.lua` | Added vault_path validation, removed commented code | +| `lua/cargdev/core/keymaps/window.lua` | Centralized window management keymaps | +| `lua/cargdev/core/init.lua` | Fixed double loading, added diagnostic hover, config validation, loads `local.lua` | +| `lua/cargdev/plugins/avante.lua` | Uses `local.lua` for paths and settings, removed hardcoded values | +| `lua/cargdev/plugins/ideaMap.lua` | Uses `local.lua` for `IDEA_DIR`, removed env var fallback | +| `lua/cargdev/plugins/leetcode.lua` | Removed commented hardcoded path | +| `lua/cargdev/plugins/lazygit.lua` | Removed commented hardcoded path | +| `lua/cargdev/core/options.lua` | Removed duplicate settings (synmaxcol, foldmethod, foldlevel) | +| `lua/cargdev/plugins/which-key.lua` | Added group names configuration | +| `lua/cargdev/plugins/formatting.lua` | Enabled auto-format on save with smart filtering | +| `lua/cargdev/lazy.lua` | Enabled plugin update notifications | +| `README.md` | Complete rewrite with proper documentation | + +### Deleted Files +| File | Reason | +|------|--------| +| `kkk` | Temporary file, unknown purpose | +| `cleanup_deprecated_adapters.lua` | One-time cleanup script, no longer needed | +| `IMPROVEMENTS.md` | All issues resolved | + +### New Files +| File | Purpose | +|------|---------| +| `CHANGELOG.md` | Track configuration changes | + +--- + +## Keymap Reference + +### New/Changed Keymaps + +| Keymap | Action | File | +|--------|--------|------| +| `sS` | Session: Save | plugins.lua | +| `sR` | Session: Restore | plugins.lua | +| `sl` | Substitute: Line | plugins.lua | +| `bd` | Buffer: Close (safe) | personal.lua | +| `bD` | Buffer: Force close | personal.lua | +| `qn` | Quickfix: Next | personal.lua | +| `qp` | Quickfix: Previous | personal.lua | +| `qo` | Quickfix: Open | personal.lua | +| `qq` | Quickfix: Close | personal.lua | +| `qf` | Quickfix: First | personal.lua | +| `ql` | Quickfix: Last | personal.lua | +| `ln` | Location: Next | personal.lua | +| `lp` | Location: Previous | personal.lua | +| `lo` | Location: Open | personal.lua | +| `lq` | Location: Close | personal.lua | + +--- + +*Last Updated: January 13, 2026* diff --git a/docs/KEYMAPS.md b/docs/KEYMAPS.md new file mode 100644 index 0000000..9dcb84d --- /dev/null +++ b/docs/KEYMAPS.md @@ -0,0 +1,546 @@ +# Complete Keymaps Reference + +**Leader Key: ``** + +## Table of Contents +- [General](#general) +- [Personal Workflow](#personal-workflow) +- [Navigation (Snacks Picker)](#navigation-snacks-picker) +- [LSP & Code Intelligence](#lsp--code-intelligence) +- [File Management](#file-management) +- [Editing](#editing) +- [Git](#git) +- [Debugging (DAP)](#debugging-dap) +- [Copilot & AI](#copilot--ai) +- [Terminal](#terminal) +- [Window Management](#window-management) +- [Database](#database) +- [LeetCode](#leetcode) +- [Text Wrapping](#text-wrapping) +- [Folding (nvim-ufo)](#folding-nvim-ufo) +- [Session Management](#session-management) +- [Commands](#commands) + +--- + +## General + +| Key | Mode | Action | +|-----|------|--------| +| `jj` | i | Exit insert mode | +| `nh` | n | Clear search highlights | +| `Q` | n | Quit all | + +--- + +## Personal Workflow + +### File Management +| Key | Mode | Action | +|-----|------|--------| +| `w` | n | Save file | +| `q` | n | Quit | +| `xa` | n | Save and close all | +| `so` | n | Reload nvim (source %) | +| `no` | n | Clear search highlight | + +### Editing Shortcuts +| Key | Mode | Action | +|-----|------|--------| +| `u` | n | Select entire file | +| `4` | n | Duplicate line below | +| `+` | n | Increment number | +| `-` | n | Decrement number | +| `sy` | n | Re-indent entire file | +| `` | n | Fast scroll down (10 lines) | +| `` | n | Fast scroll up (10 lines) | + +### Buffer Management +| Key | Mode | Action | +|-----|------|--------| +| `bd` | n | Close buffer (safe, prompts if modified) | +| `bD` | n | Force close buffer | +| `` | n | Next buffer | +| `` | n | Previous buffer | + +### Coding Shortcuts +| Key | Mode | Action | +|-----|------|--------| +| `re` | n | Insert React import at top | +| `,` | n | Add comma at end of line | +| `;` | n | Add semicolon at end of line | +| `xr` | n | Run file with Node.js | + +### Quickfix Navigation +| Key | Mode | Action | +|-----|------|--------| +| `xn` | n | Next quickfix item | +| `xp` | n | Previous quickfix item | +| `xo` | n | Open quickfix list | +| `xq` | n | Close quickfix list | +| `xf` | n | First quickfix item | +| `xl` | n | Last quickfix item | + +### Location List Navigation +| Key | Mode | Action | +|-----|------|--------| +| `ln` | n | Next location item | +| `lp` | n | Previous location item | +| `lo` | n | Open location list | +| `lq` | n | Close location list | + +--- + +## Navigation (Snacks Picker) + +### File Navigation +| Key | Mode | Action | +|-----|------|--------| +| `ff` | n | Find files | +| `fs` | n | Live grep | +| `fc` | n | Grep string under cursor | +| `fr` | n | Recent files | + +### Buffer & Utility Search +| Key | Mode | Action | +|-----|------|--------| +| `fb` | n | Find buffers | +| `fh` | n | Help tags | +| `fm` | n | Find marks | +| `fk` | n | Find keymaps | +| `fC` | n | Find commands | + +### Git (Telescope Fallback) +| Key | Mode | Action | +|-----|------|--------| +| `fG` | n | Git commits | +| `fB` | n | Git buffer commits | +| `fg` | n | Git branches | +| `gs` | n | Git status | + +### TODO Search +| Key | Mode | Action | +|-----|------|--------| +| `ft` | n | Find TODOs (Telescope) | + +### Telescope (Unfiltered) +| Key | Mode | Action | +|-----|------|--------| +| `fF` | n | Find files (all, unfiltered) | + +--- + +## LSP & Code Intelligence + +### Navigation (fzf-lua) +| Key | Mode | Action | +|-----|------|--------| +| `gd` | n | Go to definition | +| `gi` | n | Go to implementation | +| `gr` | n | Show references | +| `gt` | n | Go to type definition | + +### Symbols +| Key | Mode | Action | +|-----|------|--------| +| `ds` | n | Document symbols | +| `lw` | n | Workspace symbols | + +### Code Actions & Rename +| Key | Mode | Action | +|-----|------|--------| +| `ca` | n | Code actions | +| `rn` | n | Rename symbol | +| `H` | n | Hover documentation | + +### Diagnostics +| Key | Mode | Action | +|-----|------|--------| +| `D` | n | Workspace diagnostics | +| `dd` | n | Line diagnostics (float) | +| `[d` | n | Previous diagnostic | +| `]d` | n | Next diagnostic | + +### Formatting +| Key | Mode | Action | +|-----|------|--------| +| `mm` | n, v | Format with conform | + +--- + +## File Management + +### File Explorer (nvim-tree) +| Key | Mode | Action | +|-----|------|--------| +| `e` | n | Toggle file explorer | + +Inside nvim-tree: +| Key | Action | +|-----|--------| +| `o` | Open file | +| `s` | Open in vertical split | +| `i` | Open in horizontal split | +| `a` | Create new file | +| `r` | Rename | +| `d` | Delete | +| `x` | Cut | +| `y` | Copy | +| `p` | Paste | +| `u` | Go up one directory | +| `f` | Change root to node | + +### Buffer Cycling +| Key | Mode | Action | +|-----|------|--------| +| `` | n | Next buffer | +| `` | n | Previous buffer | + +--- + +## Editing + +### Comments (Comment.nvim) +| Key | Mode | Action | +|-----|------|--------| +| `/` | n, v | Toggle comment | +| `gcc` | n | Toggle line comment | +| `gc` | n | Toggle comment | +| `gco` | n | Insert comment below | +| `gcO` | n | Insert comment above | +| `gcA` | n | Insert comment at end of line | +| `gb` | n | Toggle block comment | +| `gbc` | n | Toggle block comment | + +### Substitute (substitute.nvim) +| Key | Mode | Action | +|-----|------|--------| +| `sub` | n | Substitute with motion | +| `sl` | n | Substitute line | +| `S` | n | Substitute to end of line | + +### Surround (nvim-surround) +| Key | Mode | Action | +|-----|------|--------| +| `sa` | n | Add surrounding | +| `sd` | n | Delete surrounding | +| `sr` | n | Replace surrounding | +| `ys` | n | Add surrounding (classic) | +| `yss` | n | Add surrounding to line | +| `yS` | n | Add surrounding on new lines | +| `ySS` | n | Add surrounding to line on new lines | + +### Console.log +| Key | Mode | Action | +|-----|------|--------| +| `cl` | n | Insert console.log snippet | + +### TODO Comments +| Key | Mode | Action | +|-----|------|--------| +| `xt` | n | Open TODOs in Trouble | + +--- + +## Git + +### LazyGit +| Key | Mode | Action | +|-----|------|--------| +| `gg` | n | Open LazyGit | + +### Gitsigns (buffer-local) +| Key | Mode | Action | +|-----|------|--------| +| `]h` | n | Next hunk | +| `[h` | n | Previous hunk | +| `hs` | n, v | Stage hunk | +| `hr` | n, v | Reset hunk | +| `hS` | n | Stage buffer | +| `hR` | n | Reset buffer | +| `hu` | n | Undo stage hunk | +| `hp` | n | Preview hunk | +| `hb` | n | Blame line (full) | +| `hB` | n | Toggle line blame | +| `hd` | n | Diff this | +| `hD` | n | Diff this ~ | +| `ih` | o, x | Select hunk (text object) | + +### Trouble (Diagnostics Panel) +| Key | Mode | Action | +|-----|------|--------| +| `Xx` | n | Toggle Trouble | +| `Xw` | n | Workspace diagnostics | +| `Xd` | n | Document diagnostics | +| `Xl` | n | Location list | +| `Xq` | n | Quickfix list | + +--- + +## Debugging (DAP) + +### Debug Control +| Key | Mode | Action | +|-----|------|--------| +| `dcr` | n | Start/Continue debugging | +| `do` | n | Step over | +| `di` | n | Step into | +| `dot` | n | Step out | +| `db` | n | Toggle breakpoint | +| `dB` | n | Set conditional breakpoint | +| `dr` | n | Open REPL | +| `dl` | n | Run last debug config | +| `du` | n | Toggle DAP UI | +| `dq` | n | Stop debugging | +| `drt` | n | Reset DAP UI layout | + +### Debug Navigation +| Key | Mode | Action | +|-----|------|--------| +| `dcf` | n | List/select DAP configs | +| `dcb` | n | List breakpoints | +| `dco` | n | DAP Commands (REPL) | + +### Dynamic Attach +| Key | Mode | Action | +|-----|------|--------| +| `jd` | n | Debug attach (dynamic port, Bun/Node) | + +### Project Run/Debug +| Key | Mode | Action | +|-----|------|--------| +| `pr` | n | Run project | +| `pd` | n | Debug project | +| `p` | n | Run project (quick) | + +--- + +## Copilot & AI + +### Copilot Commands +| Key | Mode | Action | +|-----|------|--------| +| `cp` | n | Open Copilot panel | +| `cD` | n | Disable Copilot | +| `cE` | n | Enable Copilot | +| `cs` | n | Copilot status | + +### Copilot Panel Navigation +| Key | Mode | Action | +|-----|------|--------| +| `[[` | n | Previous suggestion (in panel) | +| `]]` | n | Next suggestion (in panel) | +| `` | n | Accept suggestion (in panel) | +| `rp` | n | Refresh panel | +| `` | n | Open panel | + +### Inline Suggestions +| Key | Mode | Action | +|-----|------|--------| +| `]` | i | Next suggestion | +| `[` | i | Previous suggestion | +| `` | i | Dismiss suggestion | + +### CopilotChat +| Key | Mode | Action | +|-----|------|--------| +| `cc` | n | Toggle CopilotChat window | +| `cq` | n | Quick chat (whole buffer) | +| `ce` | n, v | Explain code | +| `cr` | n, v | Review code | +| `cf` | n, v | Fix code | +| `co` | n, v | Optimize code | +| `cd` | n, v | Generate docs | +| `ct` | n, v | Generate tests | +| `cm` | n | Select model | + +### Copilot Chat (Visual, personal shortcuts) +| Key | Mode | Action | +|-----|------|--------| +| `zn` | v | Rename variable | +| `zc` | n | Open Copilot Chat | +| `ze` | v | Explain code | +| `zr` | v | Review code | +| `zf` | v | Fix code | +| `zo` | v | Optimize code | +| `zd` | v | Generate docs | + +--- + +## Terminal + +### ToggleTerm +| Key | Mode | Action | +|-----|------|--------| +| `tf` | n | Float terminal | +| `th` | n | Horizontal split terminal | +| `tv` | n | Vertical split terminal | + +### Terminal Mode +| Key | Mode | Action | +|-----|------|--------| +| `` | t | Switch to left window | +| `` | t | Close terminal | +| `` | t | Escape terminal mode | + +--- + +## Window Management + +### Splits +| Key | Mode | Action | +|-----|------|--------| +| `sv` | n | Split vertical | +| `sh` | n | Split horizontal | +| `se` | n | Make splits equal | +| `sx` | n | Close current split | + +### Tabs +| Key | Mode | Action | +|-----|------|--------| +| `to` | n | Open new tab | +| `cx` | n | Close current tab | +| `tn` | n | Next tab | +| `tp` | n | Previous tab | +| `tt` | n | Open buffer in new tab | + +### Resize Splits +| Key | Mode | Action | +|-----|------|--------| +| `` | n | Increase width (+5) | +| `` | n | Decrease width (-5) | +| `` | n | Increase height (+5) | +| `` | n | Decrease height (-5) | + +--- + +## Database + +### vim-dadbod UI +| Key | Mode | Action | +|-----|------|--------| +| `Du` | n | Toggle Database UI | +| `Da` | n | Add DB connection | +| `Df` | n | Find DB buffer | +| `De` | n, v | Execute query | +| `Dw` | n | Save query | +| `Dr` | n | Rename DB buffer | + +### Quick Connections +| Key | Mode | Action | +|-----|------|--------| +| `Dp` | n | PostgreSQL Docker | +| `Dm` | n | MongoDB local | +| `DM` | n | MongoDB Docker | +| `Di` | n | Redis local | +| `DI` | n | Redis Docker | + +### Redis & MongoDB (plugins.lua) +| Key | Mode | Action | +|-----|------|--------| +| `rds` | n | Open Redis | +| `rdk` | n | Show Redis keys | +| `rdi` | n | Redis info | +| `mdb` | n | Open MongoDB | +| `mdc` | n | Connect MongoDB | +| `mdd` | n | Disconnect MongoDB | + +--- + +## LeetCode + +| Key | Mode | Action | +|-----|------|--------| +| `lr` | n | Run code | +| `ls` | n | Submit code | +| `ld` | n | Daily challenge | +| `ll` | n | List problems | +| `lc` | n | Open console | +| `lu` | n | Update cookie | +| `lh` | n | Show hints | +| `lls` | n | Get latest submission | + +--- + +## Text Wrapping + +### Wrapping Controls +| Key | Mode | Action | +|-----|------|--------| +| `tw` | n | Toggle line wrapping | +| `tl` | n | Toggle line break | +| `tx` | n | Show 80-char column guide | +| `tH` | n | Hide column guide | + +### Format Text +| Key | Mode | Action | +|-----|------|--------| +| `tpg` | n | Format paragraph | +| `tf` | v | Format selection | +| `tF` | n | Format entire file | + +### Text Width +| Key | Mode | Action | +|-----|------|--------| +| `t80` | n | Set textwidth to 80 | +| `t100` | n | Set textwidth to 100 | +| `t120` | n | Set textwidth to 120 | +| `t0` | n | Disable textwidth | + +### Auto-wrap Controls +| Key | Mode | Action | +|-----|------|--------| +| `ta` | n | Enable auto-wrap text | +| `tA` | n | Disable auto-wrap text | +| `tc` | n | Enable auto-wrap comments | +| `tC` | n | Disable auto-wrap comments | +| `ti` | n | Toggle break indent | +| `ts` | n | Show break indicator | +| `tS` | n | Hide break indicator | + +--- + +## Folding (nvim-ufo) + +| Key | Mode | Action | +|-----|------|--------| +| `zR` | n | Open all folds | +| `zM` | n | Close all folds | +| `zr` | n | Open folds except kinds | +| `zm` | n | Close folds by level | +| `K` | n | Peek fold or LSP hover | + +--- + +## Session Management + +| Key | Mode | Action | +|-----|------|--------| +| `sS` | n | Session: Save | +| `sR` | n | Session: Restore | + +--- + +## Commands + +| Command | Description | +|---------|-------------| +| `:Lazy` | Plugin manager | +| `:Mason` | LSP server manager | +| `:Navbuddy` | Code navigation | +| `:Outline` | Symbol outline | +| `:Neogit` | Git interface | +| `:DiffviewOpen` | Diff view | +| `:GrugFar` | Search & replace | +| `:Octo` | GitHub PRs/issues | +| `:OverseerRun` | Run tasks | +| `:ZenMode` | Distraction-free mode | +| `:Hardtime toggle` | Toggle vim training | +| `:TSJToggle` | Toggle split/join | +| `:WordCount` | Show word count (excluding symbols) | +| `:RunProject` | Run project command | +| `:DebugProject` | Debug project command | + +--- + +*Last Updated: February 10, 2026* diff --git a/NATIVE_AUTO_WRAPPER_GUIDE.md b/docs/NATIVE_AUTO_WRAPPER_GUIDE.md similarity index 100% rename from NATIVE_AUTO_WRAPPER_GUIDE.md rename to docs/NATIVE_AUTO_WRAPPER_GUIDE.md diff --git a/PLUGINS.md b/docs/PLUGINS.md similarity index 100% rename from PLUGINS.md rename to docs/PLUGINS.md diff --git a/TELESCOPE_TO_SNACKS_MIGRATION.md b/docs/TELESCOPE_TO_SNACKS_MIGRATION.md similarity index 100% rename from TELESCOPE_TO_SNACKS_MIGRATION.md rename to docs/TELESCOPE_TO_SNACKS_MIGRATION.md diff --git a/keyboard_mappings.md b/docs/keyboard_mappings.md similarity index 100% rename from keyboard_mappings.md rename to docs/keyboard_mappings.md