diff --git a/AGENTS.md b/AGENTS.md index 2ec2247..e5484dc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,305 +1,78 @@ # Project History -Brief, concise history of AI-assisted development tasks. +High-level overview of development tasks for AI agents. --- -## 2025-11-01: Documentation Navigation Enhancement - Table of Contents +## 2025-11-01: Plugin Cleanup +**Goal:** Eliminate redundant search/replace tools and consolidate terminal APIs -**Commit:** `80aa0fa` | `continous-development` branch +Removed grug-far plugin in favor of scooter for search/replace functionality. Refactored scooter to use Snacks.terminal API (replacing old toggleterm dependency). Updated Snacks dashboard to use `:FindReplace` command. Maintained backdrop functionality and all scooter keybindings. -Added comprehensive Table of Contents (TOC) to all major documentation files to improve navigation and user experience. - -### Problem -- README.md had 41+ sections but no TOC for quick navigation -- doc/FAQ.md, doc/TROUBLESHOOTING.md, and doc/CONTRIBUTING.md had incomplete TOCs -- doc/ARCHITECTURE.md was missing "Additional Resources" in TOC -- Users had to scroll through lengthy documents to find relevant sections -- Poor discoverability of available content -- Not following documentation best practices - -### Solution -Added/updated comprehensive TOCs across all documentation files: - -**README.md:** -- Added new 34-line TOC with all major sections -- Includes subsections for Prerequisites, Quick Start, Keybindings, Post-Installation, Customization -- Properly formatted GitHub anchor links for all sections with emojis - -**doc/FAQ.md:** -- Added missing "Still Have Questions?" section to TOC -- Now complete with 9 major categories - -**doc/TROUBLESHOOTING.md:** -- Added missing "Additional Documentation" section to TOC -- Now complete with 11 major categories - -**doc/CONTRIBUTING.md:** -- Added missing "Questions?" and "Recognition" sections to TOC -- Now complete with 11 major sections - -**doc/ARCHITECTURE.md:** -- Added missing "Additional Resources" section to TOC -- Now complete with 11 major sections - -### Changes Made -- ✅ README.md: Added comprehensive 34-line TOC (+34 lines) -- ✅ doc/FAQ.md: Added 1 missing TOC entry (+1 line) -- ✅ doc/TROUBLESHOOTING.md: Added 1 missing TOC entry (+1 line) -- ✅ doc/CONTRIBUTING.md: Added 2 missing TOC entries (+2 lines) -- ✅ doc/ARCHITECTURE.md: Added 1 missing TOC entry (+1 line) -- ✅ Total changes: 5 files, +39 lines - -### Impact -- **Improved navigation**: Users can jump to any section in 1 click -- **Better discoverability**: Full content overview visible upfront -- **Professional appearance**: Follows documentation best practices -- **Enhanced accessibility**: Screen readers benefit from structured navigation -- **Better SEO**: GitHub search indexes TOC links -- **Time savings**: Reduces scrolling time for users seeking specific information - -### Files Modified -- `README.md` (added comprehensive TOC) -- `doc/FAQ.md` (completed TOC) -- `doc/TROUBLESHOOTING.md` (completed TOC) -- `doc/CONTRIBUTING.md` (completed TOC) -- `doc/ARCHITECTURE.md` (completed TOC) +**Impact:** Single search/replace tool, consistent terminal API across config +**Files:** 4 files modified, -67 lines --- -## 2025-10-31: Terminal Strategy Shift - Ghostty Over tmux - -**Commit:** `2511c79` | `continous-development` branch - -Strategic documentation update to position Ghostty as the primary recommended terminal, relegating tmux to legacy/remote-only use cases. - -### Problem -- tmux was positioned as the default terminal workflow -- Modern alternatives like Ghostty offer better performance with native split/tab management -- Users had to learn tmux complexity for simple local development -- Documentation didn't clarify when to use tmux vs modern terminals -- Ghostty config was included but not emphasized - -### Solution -Comprehensive documentation update across all files to prioritize Ghostty: - -**README.md changes:** -- Updated prerequisites to list Ghostty as recommended terminal -- Modified installation steps to install Ghostty by default, tmux optional -- Rewrote Quick Start Guide with Ghostty workflows (splits, tabs, navigation) -- Added dedicated "Configure Ghostty Terminal" section in post-installation -- Added Ghostty keybinding reference (18 bindings) -- Clarified Ghostty vs tmux tradeoffs with clear recommendations - -**doc/ARCHITECTURE.md additions:** -- New "Terminal & Shell Integration" section (117 lines) -- Detailed Ghostty feature overview and benefits -- Ghostty vs tmux comparison table (6 feature categories) -- Complete Ghostty keybinding reference -- Installation and configuration instructions -- tmux relegated to "Legacy Option" subsection -- Clear use case guidance: Ghostty (local), tmux (remote/SSH) - -**doc/FAQ.md updates:** -- Replaced "Can I use without tmux?" with "Should I use Ghostty or tmux?" -- Added comprehensive Q&A: "How do I use Ghostty splits and tabs?" -- Updated comparison tables to reference Ghostty instead of tmux -- Clarified terminal integration features - -**doc/TROUBLESHOOTING.md updates:** -- Replaced "Tmux integration" section with "Ghostty terminal issues" -- Added 3 new Ghostty troubleshooting sections: - - Ghostty terminal issues (basic setup) - - Ghostty config not loaded (symlink problems) - - Ghostty splits not working (keybinding conflicts) -- Moved tmux to "Legacy" subsection with deprecation note -- Updated font and transparency sections to prioritize Ghostty examples -- Updated performance recommendations to suggest Ghostty +## 2025-11-01: Documentation TOCs +**Goal:** Improve navigation in lengthy documentation files -### Key Design Decisions -1. **Ghostty = primary, tmux = legacy**: Clear positioning throughout -2. **tmux-like keybindings**: Ghostty uses Ctrl+b prefix for easy transition -3. **Use case clarity**: Local = Ghostty, Remote = tmux -4. **Backward compatibility**: tmux documentation maintained but clearly marked optional -5. **Comprehensive migration**: All docs updated for consistency -6. **Feature comparison table**: Data-driven guidance for users +Added comprehensive Table of Contents to all major documentation files. README.md received 34-line TOC covering all sections. Completed missing TOC entries in FAQ, TROUBLESHOOTING, CONTRIBUTING, and ARCHITECTURE docs. -### Changes Made -- ✅ README.md: Prerequisites, installation, quick start, post-install (+92, -26 lines) -- ✅ doc/ARCHITECTURE.md: New terminal section with comparison (+118 lines) -- ✅ doc/FAQ.md: Ghostty Q&As, updated comparisons (+32, -3 lines) -- ✅ doc/TROUBLESHOOTING.md: Ghostty troubleshooting, tmux deprecation (+98, -2 lines) -- ✅ Total changes: 4 files, +314, -26 lines - -### Impact -- **Better user experience**: Simpler local dev setup without tmux complexity -- **Performance gains**: GPU-accelerated rendering, native splits -- **Clearer guidance**: Explicit recommendations for terminal choice -- **Modern workflow**: Aligns with contemporary terminal emulator features -- **Maintained flexibility**: tmux still available for those who need it -- **Smooth transition**: tmux-like keybindings reduce learning curve - -### Files Modified -- `README.md` (updated prerequisites, installation, quick start, post-install) -- `doc/ARCHITECTURE.md` (added terminal section, comparison table) -- `doc/FAQ.md` (updated Q&As, comparisons) -- `doc/TROUBLESHOOTING.md` (added Ghostty troubleshooting, deprecated tmux) +**Impact:** One-click navigation to any section, better discoverability +**Files:** 5 files modified, +39 lines --- -## 2025-10-31: Documentation Restructuring & Organization - -**Commits:** `94b7db4`, `e33cabf` | `continous-development` branch - -Major documentation overhaul to improve user experience and maintainability. - -### Problem -- README had become extremely technical and lengthy (~1500 lines) -- Mixed user-facing content with deep technical details -- Difficult for new users to quickly understand and get started -- Troubleshooting and FAQ content scattered throughout -- Not professional or user-friendly - -### Solution -Restructured documentation into specialized files with clear separation of concerns: - -**README.md** (~400 lines) - User-facing: -- Quick installation guide -- Essential features overview -- Basic setup and workflows -- Most common keybindings (20-30) -- OpenCode AI setup (primary recommendation) -- Links to detailed docs - -**ARCHITECTURE.md** (~600 lines) - Technical reference: -- Complete directory structure -- Design principles & configuration flow -- Performance benchmarks & optimization -- Full plugin ecosystem (70+ plugins, 11 categories) -- Complete keybinding reference (70+ mappings) -- AI tools comparison & setup details -- Security considerations -- Extension guides for developers - -**TROUBLESHOOTING.md** (~550 lines) - Issue resolution: -- Installation problems & solutions -- Plugin loading issues -- LSP troubleshooting -- AI tools debugging -- Git integration fixes -- UI/performance/terminal problems -- Emergency recovery procedures +## 2025-10-31: Ghostty Terminal Priority +**Goal:** Modernize terminal strategy with GPU-accelerated terminal emulator -**FAQ.md** (~300 lines) - Common questions: -- Installation & setup (6 Q&As) -- Configuration & customization (6 Q&As) -- Plugins & features (5 Q&As) -- AI tools (6 Q&As) -- Performance (3 Q&As) -- Keybindings (5 Q&As) -- Troubleshooting references -- General questions (10 Q&As) +Strategic documentation update to position Ghostty as primary recommended terminal, relegating tmux to legacy/remote-only use cases. Updated prerequisites, installation guide, quick start workflows. Added Ghostty troubleshooting sections and comparison tables. Ghostty uses tmux-like keybindings (Ctrl+b prefix) for easy transition. -**CONTRIBUTING.md** (updated references): -- Updated FAQ references -- Added links to all new documentation -- Maintained contribution guidelines +**Impact:** Simpler local dev setup, better performance, clear guidance +**Files:** 4 files (README, ARCHITECTURE, FAQ, TROUBLESHOOTING), +314 lines -### Changes Made -- ✅ Created streamlined README.md (user-focused) -- ✅ Created doc/ARCHITECTURE.md (technical deep-dive) -- ✅ Created doc/TROUBLESHOOTING.md (problem-solving) -- ✅ Created doc/FAQ.md (common questions) -- ✅ Created doc/CONTRIBUTING.md (contribution guidelines) -- ✅ Moved all documentation files to doc/ directory -- ✅ Updated all cross-references to doc/ paths -- ✅ Positioned OpenCode as primary AI recommendation +--- -### Key Design Decisions -1. **User-first README**: Fast installation, immediate productivity -2. **Separate technical details**: Developers can dive deep without overwhelming new users -3. **Searchable troubleshooting**: Organized by category for quick reference -4. **FAQ for common questions**: Reduces repeated issues and questions -5. **Organized doc/ directory**: All documentation files in one location -6. **Cross-referenced navigation**: Easy to find related information -7. **OpenCode priority**: Clear primary recommendation over alternatives +## 2025-10-31: Documentation Restructuring +**Goal:** Make documentation more accessible for new users -### Files Modified/Created -- `README.md` (complete rewrite, ~400 lines, updated doc/ references) -- `doc/ARCHITECTURE.md` (new, 664 lines) -- `doc/TROUBLESHOOTING.md` (new, 922 lines) -- `doc/FAQ.md` (new, 479 lines) -- `doc/CONTRIBUTING.md` (new, 670 lines) -- `AGENTS.md` (updated with this entry) +Split monolithic 1500-line README into specialized files with clear separation of concerns: +- README.md (~400 lines): User-facing quick start +- ARCHITECTURE.md (~600 lines): Technical deep-dive, 70+ plugins, 70+ keybindings +- TROUBLESHOOTING.md (~550 lines): Issue resolution by category +- FAQ.md (~300 lines): Common questions (40+ Q&As) +- CONTRIBUTING.md: Contribution guidelines -### Impact -- **Better user experience**: New users can get started in minutes -- **Professional documentation**: Clean, organized, scannable -- **Easier maintenance**: Changes go in the right place -- **Better discoverability**: Cross-references help users find answers -- **Reduced support burden**: Comprehensive FAQ and troubleshooting +**Impact:** New users get started faster, easier maintenance, professional appearance +**Files:** Created 5 new doc files, reorganized all documentation --- -## 2025-11-01: README Documentation Enhancement - -**Commit f8a118b** | `continous-development` branch - -- Added comprehensive keybinding reference section with 70+ mappings organized into 8 categories -- Added plugin ecosystem section documenting all 70+ plugins across 11 functional categories -- Removed duplicate "Essential Shortcuts" section (51 lines of duplication) -- Removed nvim-ide references from keybinding tables (plugin no longer in config) -- Organized AI tools (Avante, Copilot, OpenCode) with detailed usage examples -- Improved navigation with mode, description, and plugin attribution for all keybindings - -**Categories Added:** -- File & Search Navigation (11 keybindings) -- LSP & Code Intelligence (16 keybindings) -- AI Assistant - OpenCode (14 keybindings) -- AI Assistant - Copilot (1 keybinding) -- Git Integration (16 keybindings) -- Search & Replace (2 keybindings) -- UI & Window Management (8 keybindings) -- Editing & Text Manipulation (6 core + plugin features) +## 2025-11-01: README Enhancement +**Goal:** Comprehensive reference for keybindings and plugin ecosystem -**Plugin Categories Documented:** -AI (4), LSP (9), Debugging (3), Git (3), Search (5), UI (12), Editing (8), Markdown (2), Utilities (10+), Plugin Management (1) +Added detailed keybinding reference with 70+ mappings across 8 categories (File/Search, LSP, AI tools, Git, UI, etc.). Documented all 70+ plugins organized into 11 functional categories. Removed duplicate "Essential Shortcuts" section and outdated nvim-ide references. -**Files:** `README.md` (+235, -53 lines) +**Impact:** Complete plugin/keybinding reference in one place +**Files:** README.md, +235, -53 lines --- -## 2025-10-31: Environment Enhancements & Configuration Improvements +## 2025-10-31: Environment & Config +**Goal:** Modernize development environment and consolidate tools -**PR #65** | `continous-development` → `develop` +Migrated lazygit from standalone plugin to Snacks built-in integration. Added Ghostty terminal config with TokyoNight theme and tmux-like keybindings. Added OpenCode AI assistant configuration with Claude Sonnet 4.5. Made install.sh colors theme-adaptive. Integrated bun runtime with completions. Updated 15 plugins including avante, opencode, snacks, lualine. -- Migrated lazygit from standalone plugin to Snacks built-in integration -- Enabled additional Snacks features: bufdelete, notifier, statuscolumn -- Made install.sh colors theme-adaptive (ANSI colors for light/dark terminals) -- Added Ghostty terminal configuration with TokyoNight theme and tmux-like keybindings -- Added OpenCode AI assistant configuration with Claude Sonnet 4.5 -- Configured nvim as default editor for SSH sessions -- Integrated bun runtime with completions and PATH setup -- Enhanced OpenCode terminal with fixed width (85) and markdown rendering -- Updated 15 plugins including avante, opencode, snacks, and lualine -- Relocated scooter and ghostty config symlinks to install_dotfiles function - -**Files:** `install.sh`, `.zshrc`, `ghostty_config`, `opencode.json`, -`snacks.lua`, `init.lua`, `keymaps/lazygit.lua`, `opencode.lua`, -`avante.lua`, `lualine.lua`, `scooter.lua`, `scooter.config.toml`, -`lazy-lock.json`, removed `lazygit.lua` and `highlights/lazygit.lua` +**Impact:** Cleaner plugin setup, modern terminal, AI assistant ready +**Files:** 12 files modified, removed 2 plugin files --- -## 2025-10-07: Backdrop Utility & Scooter Terminal - -**PR #64** | `continous-development` → `develop` +## 2025-10-07: Backdrop Utility +**Goal:** Create reusable backdrop utility to reduce code duplication -- Created reusable `create_backdrop()` in `windows.lua` -- Refactored `with_win_backdrop()` (eliminated ~35 lines duplication) -- Integrated backdrop with scooter terminal (on_open/on_close lifecycle) -- Config updates: scooter winblend=12, width=175; lazygit scale 0.85→0.8 +Created `create_backdrop()` function in windows.lua for reusable backdrop management. Refactored `with_win_backdrop()` eliminating ~35 lines of duplication. Integrated backdrop with scooter terminal using on_open/on_close lifecycle hooks. Updated scooter config (winblend=12, width=175). -**Files:** `windows.lua`, `scooter.lua`, `lazygit.lua`, `scooter.config.toml` - ---- +**Impact:** DRY code, consistent backdrop behavior across features +**Files:** windows.lua, scooter.lua, lazygit.lua, scooter.config.toml diff --git a/colors.sh b/colors.sh deleted file mode 100644 index 226b81f..0000000 --- a/colors.sh +++ /dev/null @@ -1,5 +0,0 @@ -# terminal colors for colorXX - -for i in {0..255}; do - printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n" -done diff --git a/doc/ARCHITECTURE.md b/docs/ARCHITECTURE.md similarity index 100% rename from doc/ARCHITECTURE.md rename to docs/ARCHITECTURE.md diff --git a/doc/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 100% rename from doc/CONTRIBUTING.md rename to docs/CONTRIBUTING.md diff --git a/doc/FAQ.md b/docs/FAQ.md similarity index 100% rename from doc/FAQ.md rename to docs/FAQ.md diff --git a/doc/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md similarity index 100% rename from doc/TROUBLESHOOTING.md rename to docs/TROUBLESHOOTING.md diff --git a/install.sh.backup b/install.sh.backup deleted file mode 100755 index c055a27..0000000 --- a/install.sh.backup +++ /dev/null @@ -1,106 +0,0 @@ -## _ _ _ -## | |__ ___| | | ___ -## | '_ \ / _ \ | |/ _ \ -## | | | | __/ | | (_) | -## |_| |_|\___|_|_|\___/ - -textreset=$(tput sgr0) # reset the foreground colour -red=$(tput setaf 196) -yellow=$(tput setaf 226) -green=$(tput setaf 118) -cyan=$(tput setaf 87) - -# DOTFILES -# -echo "${cyan} Linking dotfiles ${textreset}" -echo " zshrc ${green}${textreset}" -ln -sf $(pwd)/.zshrc ~/.zshrc -echo " vimrc ${green}${textreset}" -ln -sf $(pwd)/.vimrc ~/.vimrc -echo " tmux.conf ${green}${textreset}" -ln -sf $(pwd)/.tmux.conf ~/.tmux.conf -echo " .ripgreprc ${green}${textreset}" -ln -sf $(pwd)/.ripgreprc ~/.ripgreprc -export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc" -echo "${green}󰄸 Done ${textreset} - Linked dotfiles\n" - -# NEOVIM -# -echo "${cyan} Installing neovim ${textreset}" -brew install --quiet neovim -echo "${green}󰄸 Done ${textreset} - Installed neovim" -# neovim config dir -echo "${cyan} Linking nvim configuration ${textreset}" - -NVIM_DIR=~/.config/nvim -if [ -d $NVIM_DIR ]; then - echo "${yellow} nvim config already exists. Removing.${textreset}" - rm -rf $NVIM_DIR -fi -ln -sf $(pwd)/nvim $NVIM_DIR -echo "${green}󰄸 Done ${textreset} - Linked nvim config to ~/.config/nvim\n" - - -# TMUX -# -echo "${cyan} Installing tmux ${textreset}" -brew install --quiet tmux -echo "${green}󰄸 Done ${textreset} - Installed tmux" -# TMUX Plugin Manager -echo "${cyan} Setting up Tmux Plugin Manager TMP${textreset}" -TMUX_DIR=~/.tmux/plugins/tpm - -if [ -d "${TMUX_DIR}" ]; then - echo "${yellow} TMP already exists.${textreset}\n" -else - git clone https://github.com/tmux-plugins/tpm ${TMUX_DIR} - echo "${green}󰄸 Done ${textreset} - Setup TMP\n" -fi - -# OH MY ZSH -# -echo "${cyan} Installing oh-my-zsh ${textreset}" - -OH_MY_ZSH_DIR=~/.oh-my-zsh - -if [ -d "${OH_MY_ZSH_DIR}" ]; then - echo "${yellow} oh-my-zsh already exists.${textreset}\n" -else - sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" - echo "${green}󰄸 Done ${textreset} - Installed oh-my-zsh. You might want to consider a theme like powerlevel10k.\n" -fi - -# FZF, ripgrep, bat -# FZF -echo "${cyan} Installing FZF (Terminal fuzzy finder) ${textreset}" -brew install --quiet fzf -echo "${green}󰄸 Done ${textreset} - Installed FZF" -# ripgrep -echo "${cyan} Installing ripgrep (FZF's companion) ${textreset}" -brew install --quiet ripgrep -echo "${green}󰄸 Done ${textreset} - Installed ripgrep\n" -# bat -echo "${cyan} Installing bat (cat with syntax hightlighting) ${textreset}" -brew install --quiet bat -echo "${green}󰄸 Done ${textreset} - Installed bat\n" - -# UVX -echo "${cyan} Installing uv,uvx - for MCP plugins installation ${textreset}" -curl -LsSf https://astral.sh/uv/install.sh | sh -echo "${green}󰄸 Done ${textreset} - uv,uvx installed\n" - -# LAZYGIT -# -# install lazygit -echo "${cyan} Installing lazygit ${textreset}" -brew install --quiet jesseduffield/lazygit/lazygit -brew link --overwrite lazygit -# lazygit config dir -echo "${cyan} Setting up lazygit config ${textreset}" -ln -sf $(pwd)/lazygit_config.yml ~/.config/lazygit/config.yml -export CONFIG_DIR="$HOME/.config/lazygit" -echo "${green}󰄸 Done ${textreset} - Installed lazygit and setup it's config\n" - -## Finish -echo "${green} FINISHED! ${textreset} Run tmux & nvim and Enjoy!" - diff --git a/nvim/coc-settings.json b/nvim/coc-settings.json deleted file mode 100644 index 1da59e1..0000000 --- a/nvim/coc-settings.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "languageserver": {}, - "salesforcedx-vscode-apex.java.home": "/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home", - "tailwindCSS.htmlLanguages": ["html", "xhtml"], - "tailwindCSS.headwind.runOnSave": false, - "coc.preferences.formatOnType": true, - "coc.preferences.formatOnSaveFiletypes": [ - "css", - "html", - "json", - "jsonc", - "javascript", - "typescript", - "javascript.tsx", - "typescript.tsx", - "javascriptreact", - "typescriptreact", - "apexcode", - "xml" - ], - "suggest.completionItemKindLabels": { - "keyword": "\uf1de", - "variable": "\ue79b", - "value": "\uf89f", - "operator": "\u03a8", - "function": "\u0192", - "reference": "\ufa46", - "constant": "\uf8fe", - "method": "\uf09a", - "struct": "\ufb44", - "class": "\uf0e8", - "interface": "\uf417", - "text": "\ue612", - "enum": "\uf435", - "enumMember": "\uf02b", - "module": "\uf40d", - "color": "\ue22b", - "property": "\ue624", - "field": "\uf9be", - "unit": "\uf475", - "event": "\ufacd", - "file": "\uf723", - "folder": "\uf114", - "snippet": "\ue60b", - "typeParameter": "\uf728", - "default": "\uf29c" - }, - "eslint.options": { - "resolvePluginsRelativeTo": "../eslint-config" - }, - "eslint.workingDirectories": [ - { - "mode": "auto" - } - ], - "eslint.codeActionsOnSave.rules": [ - "!@typescript-eslint/*", - "!import/order", - "*" - ], - "eslint.execArgv": ["--max_old_space_size=32568"] -} diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index cb04163..3f7cf97 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,7 +1,7 @@ { "CopilotChat.nvim": { "branch": "main", "commit": "a7138a0ee04d8af42c262554eccee168bbf1454f" }, "ReplaceWithRegister": { "branch": "master", "commit": "832efc23111d19591d495dc72286de2fb0b09345" }, - "avante.nvim": { "branch": "main", "commit": "15ef2a012c8dca7e43bdc4a5e61d122792da5779" }, + "avante.nvim": { "branch": "main", "commit": "7f48770e66684e9a7d4d5b9c47505a23e0167a6e" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "catppuccin": { "branch": "main", "commit": "8c4125e3c746976ba025dc5d908fa22c6aa09486" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, @@ -14,7 +14,6 @@ "emmet-vim": { "branch": "master", "commit": "e98397144982d1e75b20d94d55a82de3ec8f648d" }, "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, "glance.nvim": { "branch": "master", "commit": "bf86d8b79dce808e65fdb6e9269d0b4ed6d2eefc" }, - "grug-far.nvim": { "branch": "main", "commit": "3e72397465f774b01aa38e4fe8e6eecf23d766d9" }, "gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" }, "img-clip.nvim": { "branch": "main", "commit": "e7e29f0d07110405adecd576b602306a7edd507a" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, @@ -29,7 +28,7 @@ "mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" }, "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, "mcphub.nvim": { "branch": "main", "commit": "8ff40b5edc649959bb7e89d25ae18e055554859a" }, - "mini.nvim": { "branch": "main", "commit": "ee4a4a4abed25e3d108d985b0553c5271f2f71aa" }, + "mini.nvim": { "branch": "main", "commit": "e96ef335c7c68d2bc6359cdb7cf0941889df9be0" }, "neovim-ayu": { "branch": "master", "commit": "38caa8b5b969010b1dcae8ab1a569d7669a643d5" }, "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, "noice.nvim": { "branch": "main", "commit": "5099348591f7d3ba9e547b1e631c694c65bbe0b9" }, @@ -40,27 +39,24 @@ "nvim-dap": { "branch": "master", "commit": "6782b097af2417a4c3e33849b0a26ae2188bd7ea" }, "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, "nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" }, - "nvim-lspconfig": { "branch": "master", "commit": "e25994a1c2373784364852cd904cb39b6d75f227" }, + "nvim-lspconfig": { "branch": "master", "commit": "a89bfcfd0e44f898341ac8a80ba83ccf6218bef3" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, "nvim-tree.lua": { "branch": "master", "commit": "64e2192f5250796aa4a7f33c6ad888515af50640" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, - "opencode.nvim": { "branch": "main", "commit": "c7594f8727541ca5ca3b44aa4796b8ffcb0d1bad" }, + "opencode.nvim": { "branch": "main", "commit": "d0593a0ca06a089471051fc0517106538065ee0d" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "quick-scope": { "branch": "master", "commit": "6cee1d9e0b9ac0fbffeb538d4a5ba9f5628fabbc" }, "render-markdown.nvim": { "branch": "main", "commit": "10126effbafb74541b69219711dfb2c631e7ebf8" }, - "snacks.nvim": { "branch": "main", "commit": "76160be5d38cd67e46557cb5d0b3e36ececdfa3c" }, + "snacks.nvim": { "branch": "main", "commit": "9ad41782eced6a06034e568357cdad35cbf52ffa" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "994c13daf8e75011af82edf30fb0fd90c019a898" }, - "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, "tokyonight.nvim": { "branch": "main", "commit": "2642dbb83333e0575d1c3436e1d837926871c5fb" }, "vim-highlightedyank": { "branch": "master", "commit": "285a61425e79742997bbde76a91be6189bc988fb" }, "vim-peekaboo": { "branch": "master", "commit": "2a8a3187ba6b15201b2563a3f0331fcdf49da36c" }, "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, "vscode-js-debug": { "branch": "main", "commit": "74702375c67744e2f123d89ef950d7b6859c6f16" }, - "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }, - "zen-mode.nvim": { "branch": "main", "commit": "8564ce6d29ec7554eb9df578efa882d33b3c23a7" } + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/nvim/lua/nairovim/plugins/customizations/keymaps/nvim-ide.lua b/nvim/lua/nairovim/plugins/customizations/keymaps/nvim-ide.lua deleted file mode 100644 index 95e772e..0000000 --- a/nvim/lua/nairovim/plugins/customizations/keymaps/nvim-ide.lua +++ /dev/null @@ -1,37 +0,0 @@ -local M = {} - ---- @type nairovim.KeymapDef[] -M.mappings = { - { - mode = "n", - key_sequence = "tl", - handler = ":Workspace LeftPanelToggle", - desc = "Toggle Left Panel", - }, - { - mode = "n", - key_sequence = "tr", - handler = ":Workspace RightPanelToggle", - desc = "Toggle Right Panel", - }, - { - mode = "n", - key_sequence = "Tf", - handler = ":Workspace Timeline Focus", - desc = "Focus Timeline", - }, - { - mode = "n", - key_sequence = "Bf", - handler = ":Workspace BufferList Focus", - desc = "Focus Buffer List", - }, - { - mode = "n", - key_sequence = "Of", - handler = ":Workspace Outline Focus", - desc = "Focus Outline", - }, -} - -return M diff --git a/nvim/lua/nairovim/plugins/customizations/keymaps/opencode.lua b/nvim/lua/nairovim/plugins/customizations/keymaps/opencode.lua index b0b10ac..197b3ae 100644 --- a/nvim/lua/nairovim/plugins/customizations/keymaps/opencode.lua +++ b/nvim/lua/nairovim/plugins/customizations/keymaps/opencode.lua @@ -12,7 +12,7 @@ M.mappings = { handler = function() require("opencode").toggle() end, - opts = { desc = "Toggle" }, + opts = { desc = "OpenCode: Toggle" }, }, -- OpenCode AI - Ask (general) { @@ -21,7 +21,7 @@ M.mappings = { handler = function() require("opencode").ask() end, - opts = { desc = "Ask" }, + opts = { desc = "OpenCode: Ask" }, }, -- OpenCode AI - Ask about cursor { @@ -30,7 +30,7 @@ M.mappings = { handler = function() require("opencode").ask("@cursor: ") end, - opts = { desc = "Ask about this" }, + opts = { desc = "OpenCode: Ask about this" }, }, -- OpenCode AI - Ask about selection { @@ -39,7 +39,7 @@ M.mappings = { handler = function() require("opencode").ask("@selection: ") end, - opts = { desc = "Ask about selection" }, + opts = { desc = "OpenCode: Ask about selection" }, }, -- OpenCode AI - Add buffer to prompt { @@ -48,7 +48,7 @@ M.mappings = { handler = function() require("opencode").append_prompt("@buffer") end, - opts = { desc = "Add buffer to prompt" }, + opts = { desc = "OpenCode: Add buffer to prompt" }, }, -- OpenCode AI - Add selection to prompt { @@ -57,7 +57,7 @@ M.mappings = { handler = function() require("opencode").append_prompt("@selection") end, - opts = { desc = "Add selection to prompt" }, + opts = { desc = "OpenCode: Add selection to prompt" }, }, -- OpenCode AI - New session { @@ -66,7 +66,7 @@ M.mappings = { handler = function() require("opencode").command("session_new") end, - opts = { desc = "New session" }, + opts = { desc = "OpenCode: New session" }, }, -- OpenCode AI - Copy last response { @@ -75,7 +75,7 @@ M.mappings = { handler = function() require("opencode").command("messages_copy") end, - opts = { desc = "Copy last response" }, + opts = { desc = "OpenCode: Copy last response" }, }, -- OpenCode AI - Messages half page up { @@ -84,7 +84,7 @@ M.mappings = { handler = function() require("opencode").command("messages_half_page_up") end, - opts = { desc = "Messages half page up" }, + opts = { desc = "OpenCode: Messages half page up" }, }, -- OpenCode AI - Messages half page down { @@ -93,7 +93,7 @@ M.mappings = { handler = function() require("opencode").command("messages_half_page_down") end, - opts = { desc = "Messages half page down" }, + opts = { desc = "OpenCode: Messages half page down" }, }, -- OpenCode AI - Select prompt { @@ -102,7 +102,7 @@ M.mappings = { handler = function() require("opencode").select() end, - opts = { desc = "Select prompt" }, + opts = { desc = "OpenCode: Select prompt" }, }, -- OpenCode AI - Explain code (custom prompt) { @@ -111,7 +111,7 @@ M.mappings = { handler = function() require("opencode").prompt("Explain @cursor and its context") end, - opts = { desc = "Explain this code" }, + opts = { desc = "OpenCode: Explain this code" }, }, } diff --git a/nvim/lua/nairovim/plugins/init.lua b/nvim/lua/nairovim/plugins/init.lua index 10b955a..ed115ba 100644 --- a/nvim/lua/nairovim/plugins/init.lua +++ b/nvim/lua/nairovim/plugins/init.lua @@ -30,7 +30,6 @@ return { { "mattn/emmet-vim", event = { "BufReadPre", "BufNewFile" } }, { "unblevable/quick-scope" }, { "junegunn/vim-peekaboo" }, - -- { "ctrlpvim/ctrlp.vim" }, { "windwp/nvim-ts-autotag", event = { "BufReadPre", "BufNewFile" } }, { "tpope/vim-surround", event = { "BufReadPre", "BufNewFile" } }, { "vim-scripts/ReplaceWithRegister", event = { "BufReadPre", "BufNewFile" } }, @@ -49,25 +48,10 @@ return { }, }, }, - { - "folke/zen-mode.nvim", - opts = { - window = { - width = 200, - }, - }, - }, }, -- Search/Replace - { - { - "MagicDuck/grug-far.nvim", - config = function() - require("grug-far").setup({}) - end, - }, - }, + -- Search and replace functionality provided by scooter terminal (keybinding: s) -- Markdown { @@ -102,6 +86,5 @@ return { }, -- Other utility plugins - -- Terminal - { "akinsho/toggleterm.nvim", version = "*", config = true }, + -- Terminal functionality provided by Snacks.nvim } diff --git a/nvim/lua/nairovim/plugins/noice.lua b/nvim/lua/nairovim/plugins/noice.lua index 20bce1d..2dba77e 100644 --- a/nvim/lua/nairovim/plugins/noice.lua +++ b/nvim/lua/nairovim/plugins/noice.lua @@ -4,21 +4,12 @@ return { opts = {}, dependencies = { "MunifTanjim/nui.nvim", - "rcarriga/nvim-notify", + -- Using Snacks.nvim notifier instead of nvim-notify -- "stevearc/dressing.nvim", -- better vim.select UI }, config = function() ---------------------------------------------------------------------- - -- 1. Setup nvim-notify - ---------------------------------------------------------------------- - local notify = require("notify") - notify.setup({ - max_width = 130, - merge_duplicates = true, - }) - - ---------------------------------------------------------------------- - -- 2. Setup noice.nvim + -- Setup noice.nvim (uses Snacks notifier via vim.notify override) ---------------------------------------------------------------------- require("noice").setup({ routes = { diff --git a/nvim/lua/nairovim/plugins/scooter.lua b/nvim/lua/nairovim/plugins/scooter.lua index 9d83436..c506a68 100644 --- a/nvim/lua/nairovim/plugins/scooter.lua +++ b/nvim/lua/nairovim/plugins/scooter.lua @@ -1,48 +1,48 @@ local M = {} -local Terminal = require("toggleterm.terminal").Terminal -local window_utils = require("nairovim.utils.windows") -local scooter_term = nil local scooter_backdrop = nil ---- Open existing scooter terminal if one is available, otherwise create a new one +--- Open scooter terminal local open_scooter = function() - if not scooter_term then - scooter_term = Terminal:new({ - cmd = "scooter", - direction = "float", - close_on_exit = true, - display_name = "Find and Replace", - on_open = function() - -- Create backdrop with z-index lower than terminal (default: 40) - scooter_backdrop = window_utils.create_backdrop("ScooterBackdrop", 60, 39) - end, - on_close = function() - -- Clean up backdrop when terminal closes - if scooter_backdrop then - scooter_backdrop.cleanup() - scooter_backdrop = nil - end - end, - highlights = { - FloatBorder = { link = "FloatBorder" }, - }, - float_opts = { - border = "rounded", + -- Clean up existing backdrop if any + if scooter_backdrop then + scooter_backdrop.cleanup() + scooter_backdrop = nil + end + + require("snacks").terminal("scooter", { + win = { + border = "rounded", + width = 175, + wo = { winblend = 9, - width = 175, }, - on_exit = function() - scooter_term = nil - end, - }) - end - scooter_term:open() + }, + on_exit = function() + -- Clean up backdrop when terminal exits + if scooter_backdrop then + scooter_backdrop.cleanup() + scooter_backdrop = nil + end + end, + }) end --- Called by scooter to open the selected file at the correct line from the scooter search list _G.EditLineFromScooter = function(file_path, line) - if scooter_term and scooter_term:is_open() then - scooter_term:close() + -- Close any open terminal windows + local wins = vim.api.nvim_list_wins() + for _, win in ipairs(wins) do + local buf = vim.api.nvim_win_get_buf(win) + local buf_name = vim.api.nvim_buf_get_name(buf) + if buf_name:match("snacks_terminal") or vim.bo[buf].buftype == "terminal" then + vim.api.nvim_win_close(win, true) + end + end + + -- Clean up backdrop + if scooter_backdrop then + scooter_backdrop.cleanup() + scooter_backdrop = nil end local current_path = vim.fn.expand("%:p") @@ -57,31 +57,29 @@ end --- Opens scooter with the search text populated by the `search_text` arg _G.OpenScooterSearchText = function(search_text) - if scooter_term and scooter_term:is_open() then - scooter_term:close() + -- Clean up existing backdrop if any + if scooter_backdrop then + scooter_backdrop.cleanup() + scooter_backdrop = nil end local escaped_text = vim.fn.shellescape(search_text:gsub("\r?\n", " ")) - scooter_term = Terminal:new({ - cmd = "scooter --search-text " .. escaped_text, - direction = "float", - close_on_exit = true, - on_open = function() - -- Create backdrop with z-index lower than terminal (default: 40) - scooter_backdrop = window_utils.create_backdrop("ScooterBackdrop", 60, 39) - end, - on_close = function() - -- Clean up backdrop when terminal closes + require("snacks").terminal("scooter --search-text " .. escaped_text, { + win = { + border = "rounded", + width = 175, + wo = { + winblend = 9, + }, + }, + on_exit = function() + -- Clean up backdrop when terminal exits if scooter_backdrop then scooter_backdrop.cleanup() scooter_backdrop = nil end end, - on_exit = function() - scooter_term = nil - end, }) - scooter_term:open() end ---------------------------------------------------------------------- diff --git a/nvim/lua/nairovim/plugins/snacks.lua b/nvim/lua/nairovim/plugins/snacks.lua index fd055a1..675b723 100644 --- a/nvim/lua/nairovim/plugins/snacks.lua +++ b/nvim/lua/nairovim/plugins/snacks.lua @@ -59,7 +59,7 @@ You are in %s action = ":lua Snacks.dashboard.pick('files')", }, { icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" }, - { icon = " ", key = "F", desc = "Find/Replace", action = ":GrugFar" }, + { icon = " ", key = "F", desc = "Find/Replace", action = ":FindReplace" }, { icon = " ", key = "g",