Compare commits

4 Commits

Author SHA1 Message Date
Carlos Gutierrez
795bc802b3 Add C++ formatting support with clang-format 2025-12-06 19:39:53 -05:00
Carlos Gutierrez
fa6c35ff1e Clean up repository for public sharing
- Updated .gitignore to exclude log files, backup files, and temporary files
- Removed log files containing personal paths and system information
- Removed backup files with personal development paths
- Repository is now ready for public visibility
2025-10-22 22:12:49 -04:00
Carlos Gutierrez
1c3558380e updating packages 2025-10-22 21:59:07 -04:00
Carlos Gutierrez
bf573ef961 updating packages 2025-10-22 21:58:30 -04:00
19 changed files with 391 additions and 2183 deletions

25
.gitignore vendored
View File

@@ -1 +1,26 @@
lazy-lock.json
# Log files (contain personal paths and system info)
*.log
checkhealth*.log
nvim-profile.log
lazigitconfig.log
# Backup files with personal paths
*.bak
# Temporary files
*.tmp
*.temp
# Session files
Session.vim
session.vim
# Swap files
*.swp
*.swo
*~
# Local configuration overrides
local.lua

View File

@@ -0,0 +1,208 @@
# 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 `<leader>s` to `<leader>sub` to avoid conflict with `<leader>fs`
- **File**: `lua/cargdev/core/keymaps/plugins.lua`
- **Impact**: `<leader>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*

View File

@@ -1,609 +0,0 @@
==============================================================================
CopilotChat: ✅
CopilotChat.nvim [core] ~
- ✅ OK nvim: NVIM v0.11.3
Build type: Release
LuaJIT 2.1.1753364724
Run "nvim -V1 -v" for more info
- ✅ OK setup: called
CopilotChat.nvim [commands] ~
- ✅ OK curl: curl 8.7.1 (x86_64-apple-darwin24.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.64.0
Release-Date: 2024-03-27
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe UnixSockets
- ✅ OK git: git version 2.50.1
- ✅ OK rg: ripgrep 14.1.1
features:+pcre2
simd(compile):+NEON
simd(runtime):+NEON
PCRE2 10.43 is available (JIT is available)
- ✅ OK lynx: Lynx Version 2.9.2 (31 May 2024)
libwww-FM 2.14, SSL-MM 1.4.1, OpenSSL 3.5.1, ncurses 6.5.20240427
Built on darwin24.2.0 (May 31 2024 23:03:20).
Copyrights held by the Lynx Developers Group,
the University of Kansas, CERN, and other contributors.
Distributed under the GNU General Public License (Version 2).
See https://lynx.invisible-island.net/ and the online help for more information.
See http://www.openssl.org/ for information about OpenSSL.
CopilotChat.nvim [dependencies] ~
- ✅ OK plenary: installed
- ✅ OK copilot: copilot.lua
- ✅ OK vim.ui.select: overridden by `@/Users/carlos/.local/share/nvim/lazy/dressing.nvim/lua/dressing/patch.lua`
- ✅ OK tiktoken_core: installed
- ✅ OK treesitter[markdown]: installed
- ✅ OK treesitter[diff]: installed
==============================================================================
auto-session: 1 ⚠️
Setup ~
- ✅ OK setup() called
Lazy.nvim settings ~
- ✅ OK Lazy.nvim support is enabled
- ✅ OK auto-session is not lazy loaded
Config ~
- ⚠️ WARNING `vim.o.sessionoptions` should contain 'localoptions' to make sure
filetype and highlighting work correctly after a session is restored.
Recommended setting is:
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
Current Config ~
- {
auto_restore = false,
suppressed_dirs = { "~/", "~/Dev/", "~/Downloads", "~/Documents", "~/Desktop/" }
}
General Info ~
- Session directory: /Users/carlos/.local/share/nvim/sessions/
- Current session:
- Current session file:
==============================================================================
avante: ✅
avante.nvim ~
- ✅ OK Found required plugin: nvim-lua/plenary.nvim
- ✅ OK Found required plugin: MunifTanjim/nui.nvim
- ✅ OK Found icons plugin (nvim-web-devicons or mini.icons)
- ✅ OK Using native input provider (no additional dependencies required)
TreeSitter Dependencies ~
- ✅ OK All essential TreeSitter parsers are installed
- ✅ OK TreeSitter highlighter is available
==============================================================================
copilot: 1 ❌
{copilot.lua} ~
- {copilot.lua} GitHub Copilot plugin for Neovim
Copilot Dependencies ~
- ✅ OK `node` found: v22.11.0
Copilot Authentication ~
- No environment token set (`GITHUB_COPILOT_TOKEN` or `GH_COPILOT_TOKEN`)
- ✅ OK Local credentials file found
- Location: `/Users/carlos/.config/github-copilot/apps.json`
- ❌ ERROR Copilot LSP client not available
- Check that the plugin is properly loaded and configured
- Or restart Neovim if the plugin was just installed
==============================================================================
dap: ✅
dap: Adapters ~
dap.adapter: node2 ~
- ✅ OK is executable: node
dap.adapter: java ~
- Adapter is a function. Can't validate it
dap: Sessions ~
- ✅ OK No active sessions
==============================================================================
dressing: ✅
dressing.nvim ~
- ✅ OK vim.ui.input active
- ✅ OK vim.ui.select active: telescope
==============================================================================
fzf_lua: ✅
fzf-lua [required] ~
- ✅ OK 'fzf' `0.65.0 (brew)`
- ✅ OK 'git' `git version 2.50.1`
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK 'fd' `fd 10.2.0`
fzf-lua [optional] ~
- ✅ OK `nvim-web-devicons` found
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK 'fd' `fd 10.2.0`
- ✅ OK 'bat' `bat 0.25.0`
- ✅ OK 'delta' `delta 0.18.2`
fzf-lua [optional:media] ~
- ✅ OK 'viu' `viu 1.5.1`
- ✅ OK 'chafa' `Chafa version 1.16.2`
- ✅ OK 'ueberzugpp' `ueberzugpp 2.9.6`
fzf-lua [env] ~
- ✅ OK `$FZF_DEFAULT_OPTS` is set to:
--color=fg:#CBE0F0,bg:#011628,hl:#B388FF,fg+:#CBE0F0,bg+:#143652,hl+:#B388FF,info:#06BCE4,prompt:#2CF9ED,pointer:#2CF9ED,marker:#2CF9ED,spinner:#2CF9ED,header:#2CF9ED
- ✅ OK `FZF_DEFAULT_OPTS_FILE` is not set
==============================================================================
img-clip: ✅
img-clip.nvim ~
- ✅ OK `pngpaste` is installed
==============================================================================
lazy: 2 ⚠️
lazy.nvim ~
- {lazy.nvim} version `11.17.1`
- ✅ OK {git} `version 2.50.1`
- ✅ OK no existing packages found by other package managers
- ✅ OK packer_compiled.lua not found
luarocks ~
- checking `luarocks` installation
- ✅ OK no plugins require `luarocks`, so you can ignore any warnings below
- ✅ OK {luarocks} `/opt/homebrew/bin/luarocks 3.12.2`
- ⚠️ WARNING `lua` version `5.1` needed, but found `Lua 5.4.8 Copyright (C) 1994-2025 Lua.org, PUC-Rio`
- ⚠️ WARNING {lua5.1} or {lua} or {lua-5.1} version `5.1` not installed
==============================================================================
luasnip: ✅
luasnip ~
- ✅ OK jsregexp is installed
==============================================================================
mason: ✅
mason.nvim ~
- ✅ OK mason.nvim version v2.0.1
- ✅ OK PATH: prepend
- ✅ OK Providers:
mason.providers.registry-api
mason.providers.client
- ✅ OK neovim version >= 0.10.0
mason.nvim [Registries] ~
- ✅ OK Registry `github.com/mason-org/mason-registry version: 2025-07-28-rusty-action` is installed.
mason.nvim [Core utils] ~
- ✅ OK unzip: `UnZip 6.00 of 20 April 2009, by Info-ZIP, with modifications by Apple Inc.`
- ✅ OK wget: `GNU Wget 1.25.0, a non-interactive network retriever.`
- ✅ OK curl: `curl 8.7.1 (x86_64-apple-darwin24.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.64.0`
- ✅ OK gzip: `Apple gzip 457.120.3`
- ✅ OK tar: `bsdtar 3.5.3 - libarchive 3.7.4 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 `
- ✅ OK bash: `GNU bash, version 3.2.57(1)-release (arm64-apple-darwin24)`
- ✅ OK sh: `Ok`
mason.nvim [Languages] ~
- ✅ OK Go: `go version go1.24.5 darwin/arm64`
- ✅ OK luarocks: `/opt/homebrew/bin/luarocks 3.12.2`
- ✅ OK cargo: `cargo 1.82.0 (8f40fc59f 2024-08-21)`
- ✅ OK Ruby: `ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin24]`
- ✅ OK node: `v22.11.0`
- ✅ OK RubyGem: `3.5.3`
- ✅ OK npm: `11.4.2`
- ✅ OK PHP: `PHP 8.4.10 (cli) (built: Jul 2 2025 02:22:42) (NTS)`
- ✅ OK python: `Python 3.13.5`
- ✅ OK java: `openjdk version "23.0.2" 2025-01-21`
- ✅ OK Composer: `Composer version 2.8.10 2025-07-10 19:08:33`
- ✅ OK javac: `javac 23.0.2`
- ✅ OK julia: `julia version 1.11.6`
- ✅ OK pip: `pip 25.1.1 from /opt/homebrew/lib/python3.13/site-packages/pip (python 3.13)`
- ✅ OK python venv: `Ok`
==============================================================================
mason-lspconfig: ✅
mason-lspconfig.nvim ~
- ✅ OK Neovim v0.11
- ✅ OK mason.nvim v2
==============================================================================
mcphub: 1 ⚠️
mcphub.nvim ~
- mcphub.nvim version: 6.1.0
- mcp-hub binary:
- mcp-hub required version: 4.2.0
- mcp-hub installed version: 4.2.0
- ✅ OK mcp-hub version 4.2.0 is compatible
Plugin Dependencies: ~
- ✅ OK plenary.nvim installed
Libraries: ~
- ✅ OK curl installed
- ✅ OK node installed
- ✅ OK uv installed
Chat plugins ~
- ⚠️ WARNING codecompanion.nvim not found
- ✅ OK avante.nvim installed
- ✅ OK CopilotChat.nvim installed
==============================================================================
nvim-treesitter: ✅
Installation ~
- ✅ OK `tree-sitter` found 0.25.8 (parser generator, only needed for :TSInstallFromGrammar)
- ✅ OK `node` found v22.11.0 (only needed for :TSInstallFromGrammar)
- ✅ OK `git` executable found.
- ✅ OK `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
Version: Apple clang version 17.0.0 (clang-1700.0.13.5)
- ✅ OK Neovim was compiled with tree-sitter runtime ABI version 15 (required >=13). Parsers must be compatible with runtime ABI.
OS Info:
{
machine = "arm64",
release = "24.5.0",
sysname = "Darwin",
version = "Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:33 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T8122"
} ~
Parser/Features H L F I J
- bash ✓ ✓ ✓ . ✓
- c ✓ ✓ ✓ ✓ ✓
- css ✓ . ✓ ✓ ✓
- diff ✓ . ✓ . ✓
- dockerfile ✓ . . . ✓
- gitignore ✓ . . . ✓
- graphql ✓ . . ✓ ✓
- html ✓ ✓ ✓ ✓ ✓
- java ✓ ✓ ✓ ✓ ✓
- javascript ✓ ✓ ✓ ✓ ✓
- json ✓ ✓ ✓ ✓ .
- latex ✓ . ✓ . ✓
- lua ✓ ✓ ✓ ✓ ✓
- markdown ✓ . ✓ ✓ ✓
- markdown_inline ✓ . . . ✓
- prisma ✓ . ✓ . ✓
- query ✓ ✓ ✓ ✓ ✓
- regex ✓ . . . .
- sql ✓ . ✓ ✓ ✓
- svelte ✓ ✓ ✓ ✓ ✓
- tsx ✓ ✓ ✓ ✓ ✓
- typescript ✓ ✓ ✓ ✓ ✓
- vim ✓ ✓ ✓ . ✓
- vimdoc ✓ . . . ✓
- yaml ✓ ✓ ✓ ✓ ✓
Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
+) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang} ~
==============================================================================
render-markdown: ✅
render-markdown.nvim [version] ~
- ✅ OK plugin 8.6.9
- ✅ OK neovim >= 0.11
render-markdown.nvim [configuration] ~
- ✅ OK valid
render-markdown.nvim [treesitter] ~
- ✅ OK markdown: parser installed
- ✅ OK markdown: highlights ~/.local/share/nvim/lazy/nvim-treesitter/queries/markdown/highlights.scm
- ✅ OK markdown: highlighter enabled
- ✅ OK markdown_inline: parser installed
- ✅ OK markdown_inline: highlights ~/.local/share/nvim/lazy/nvim-treesitter/queries/markdown_inline/highlights.scm
- ✅ OK html: parser installed
render-markdown.nvim [icons] ~
- ✅ OK using: nvim-web-devicons
render-markdown.nvim [executables] ~
render-markdown.nvim [conflicts] ~
- ✅ OK headlines: not installed
- ✅ OK markview: not installed
- ✅ OK obsidian: not installed
==============================================================================
snacks: 4 ⚠️ 3 ❌
Snacks ~
- ✅ OK setup called
Snacks.bigfile ~
- ✅ OK setup {enabled}
Snacks.dashboard ~
- ✅ OK setup {enabled}
- ❌ ERROR setup did not run
Snacks.explorer ~
- ✅ OK setup {enabled}
Snacks.image ~
- ✅ OK setup {enabled}
- ✅ OK 'kitty' `kitty 0.42.2 created by Kovid Goyal`
- ✅ OK 'magick' `Version: ImageMagick 7.1.2-0 Q16-HDRI aarch64 23234 https://imagemagick.org`
- ✅ OK 'convert' `WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert"`
- ✅ OK `wezterm` detected and supported
- ⚠️ WARNING `wezterm` does not support placeholders. Fallback rendering will be used
- ⚠️ WARNING Inline images are disabled
- ✅ OK `tmux` detected and supported
- ✅ OK Terminal Dimensions:
- {size}: `0` x `0` pixels
- {scale}: `1.00`
- {cell}: `0` x `0` pixels
- ✅ OK Available Treesitter languages:
`css`, `html`, `javascript`, `latex`, `markdown_inline`, `markdown`, `svelte`, `tsx`
- ⚠️ WARNING Missing Treesitter languages:
`norg`, `scss`, `typst`, `vue`
- ⚠️ WARNING Image rendering in docs with missing treesitter parsers won't work
- ✅ OK 'gs' `10.05.1`
- ✅ OK PDF files are supported
- ✅ OK 'tectonic' `tectonic 0.15.0Tectonic 0.15.0`
- ✅ OK LaTeX math equations are supported
- ✅ OK 'mmdc' `node:internal/modules/esm/resolve:838`
- ✅ OK Mermaid diagrams are supported
- ✅ OK your terminal supports the kitty graphics protocol
Snacks.input ~
- ✅ OK setup {enabled}
- ❌ ERROR `vim.ui.input` is not set to `Snacks.input`
Snacks.lazygit ~
- ✅ OK {lazygit} installed
Snacks.notifier ~
- ✅ OK setup {enabled}
- ✅ OK is ready
Snacks.picker ~
- ✅ OK setup {enabled}
- ❌ ERROR `vim.ui.select` is not set to `Snacks.picker.select`
- ✅ OK Available Treesitter languages:
`regex`
- ✅ OK 'git' `git version 2.50.1`
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK `Snacks.picker.grep()` is available
- ✅ OK 'fd' `fd 10.2.0`
- ✅ OK `Snacks.picker.files()` is available
- ✅ OK `Snacks.picker.explorer()` is available
- ✅ OK `SQLite3` is available
Snacks.quickfile ~
- ✅ OK setup {enabled}
Snacks.scope ~
- ✅ OK setup {enabled}
Snacks.scroll ~
- ✅ OK setup {enabled}
Snacks.statuscolumn ~
- ✅ OK setup {enabled}
Snacks.terminal ~
- ✅ OK shell configured
- `vim.o.shell`: /bin/zsh
- `parsed`: { "/bin/zsh" }
Snacks.toggle ~
- ✅ OK {which-key} is installed
Snacks.words ~
- ✅ OK setup {enabled}
==============================================================================
telescope: ✅
Checking for required plugins ~
- ✅ OK plenary installed.
- ✅ OK nvim-treesitter installed.
Checking external dependencies ~
- ✅ OK rg: found ripgrep 14.1.1
- ✅ OK fd: found fd 10.2.0
===== Installed extensions ===== ~
Telescope Extension: `dap` ~
- No healthcheck provided
Telescope Extension: `fzf` ~
- ✅ OK lib working as expected
- ✅ OK file_sorter correctly configured
- ✅ OK generic_sorter correctly configured
Telescope Extension: `session-lens` ~
- No healthcheck provided
==============================================================================
vim.deprecated: ✅
- ✅ OK No deprecated functions detected
==============================================================================
vim.health: 1 ❌
Configuration ~
- ✅ OK no issues found
Runtime ~
- ✅ OK $VIMRUNTIME: /opt/homebrew/Cellar/neovim/0.11.3/share/nvim/runtime
Performance ~
- ✅ OK Build type: Release
Remote Plugins ~
- ✅ OK Up to date
terminal ~
- key_backspace (kbs) terminfo entry: `key_backspace=^H`
- key_dc (kdch1) terminfo entry: `key_dc=\E[3~`
- $TERM_PROGRAM="vscode"
- $COLORTERM="truecolor"
tmux ~
- ✅ OK escape-time: 10
- ✅ OK focus-events: on
- $TERM: xterm-256color
- default-terminal: tmux-256color
- ❌ ERROR $TERM differs from the tmux `default-terminal` setting. Colors might look wrong.
- ADVICE:
- $TERM may have been set by some rc (.bashrc, .zshrc, ...).
External Tools ~
- ✅ OK ripgrep 14.1.1 (/opt/homebrew/bin/rg)
==============================================================================
vim.lsp: 15 ⚠️
- LSP log level : WARN
- Log path: /Users/carlos/.local/state/nvim/lsp.log
- Log size: 9415 KB
vim.lsp: Active Clients ~
- No active clients
vim.lsp: Enabled Configurations ~
- ⚠️ WARNING 'css_variables' config not found. Ensure that vim.lsp.config('css_variables') was called.
- css_variables:
- ⚠️ WARNING 'cssls' config not found. Ensure that vim.lsp.config('cssls') was called.
- cssls:
- ⚠️ WARNING 'cssmodules_ls' config not found. Ensure that vim.lsp.config('cssmodules_ls') was called.
- cssmodules_ls:
- ⚠️ WARNING 'emmet_ls' config not found. Ensure that vim.lsp.config('emmet_ls') was called.
- emmet_ls:
- ⚠️ WARNING 'eslint' config not found. Ensure that vim.lsp.config('eslint') was called.
- eslint:
- ⚠️ WARNING 'gopls' config not found. Ensure that vim.lsp.config('gopls') was called.
- gopls:
- ⚠️ WARNING 'graphql' config not found. Ensure that vim.lsp.config('graphql') was called.
- graphql:
- ⚠️ WARNING 'html' config not found. Ensure that vim.lsp.config('html') was called.
- html:
- ⚠️ WARNING 'jdtls' config not found. Ensure that vim.lsp.config('jdtls') was called.
- jdtls:
- ⚠️ WARNING 'lua_ls' config not found. Ensure that vim.lsp.config('lua_ls') was called.
- lua_ls:
- ⚠️ WARNING 'prismals' config not found. Ensure that vim.lsp.config('prismals') was called.
- prismals:
- ⚠️ WARNING 'pyright' config not found. Ensure that vim.lsp.config('pyright') was called.
- pyright:
- ⚠️ WARNING 'svelte' config not found. Ensure that vim.lsp.config('svelte') was called.
- svelte:
- ⚠️ WARNING 'tailwindcss' config not found. Ensure that vim.lsp.config('tailwindcss') was called.
- tailwindcss:
- ⚠️ WARNING 'ts_ls' config not found. Ensure that vim.lsp.config('ts_ls') was called.
- ts_ls:
vim.lsp: File Watcher ~
- file watching "(workspace/didChangeWatchedFiles)" disabled on all clients
vim.lsp: Position Encodings ~
- No active clients
==============================================================================
vim.provider: ✅
Clipboard (optional) ~
- ✅ OK Clipboard tool found: pbcopy
Node.js provider (optional) ~
- Node.js: v22.11.0
- Nvim node.js host: /Users/carlos/.config/yarn/global//node_modules/neovim/bin/cli.js
Perl provider (optional) ~
- Disabled (loaded_perl_provider=0).
Python 3 provider (optional) ~
- pyenv: Path: /opt/homebrew/Cellar/pyenv/2.6.5/libexec/pyenv
- pyenv: Root: /Users/carlos/.pyenv
- `g:python3_host_prog` is not set. Searching for python3.12 in the environment.
- Executable: /opt/homebrew/bin/python3.12
- Python version: 3.12.11
- pynvim version: 0.5.2
- ✅ OK Latest pynvim is installed.
Python virtualenv ~
- ✅ OK no $VIRTUAL_ENV
Ruby provider (optional) ~
- Disabled (loaded_ruby_provider=0).
==============================================================================
vim.treesitter: ✅
Treesitter features ~
- Treesitter ABI support: min 13, max 15
- WASM parser support: false
Treesitter parsers ~
- ✅ OK Parser: bash ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/bash.so
- ✅ OK Parser: c ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/c.so
- ✅ OK Parser: c ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/c.so
- ✅ OK Parser: css ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/css.so
- ✅ OK Parser: diff ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/diff.so
- ✅ OK Parser: dockerfile ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/dockerfile.so
- ✅ OK Parser: gitignore ABI: 13, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/gitignore.so
- ✅ OK Parser: graphql ABI: 13, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/graphql.so
- ✅ OK Parser: html ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/html.so
- ✅ OK Parser: java ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/java.so
- ✅ OK Parser: javascript ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/javascript.so
- ✅ OK Parser: json ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/json.so
- ✅ OK Parser: latex ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/latex.so
- ✅ OK Parser: lua ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/lua.so
- ✅ OK Parser: lua ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/lua.so
- ✅ OK Parser: markdown ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/markdown.so
- ✅ OK Parser: markdown ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/markdown.so
- ✅ OK Parser: markdown_inline ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/markdown_inline.so
- ✅ OK Parser: markdown_inline ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/markdown_inline.so
- ✅ OK Parser: prisma ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/prisma.so
- ✅ OK Parser: query ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/query.so
- ✅ OK Parser: query ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/query.so
- ✅ OK Parser: regex ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/regex.so
- ✅ OK Parser: sql ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/sql.so
- ✅ OK Parser: svelte ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/svelte.so
- ✅ OK Parser: tsx ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/tsx.so
- ✅ OK Parser: typescript ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/typescript.so
- ✅ OK Parser: vim ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/vim.so
- ✅ OK Parser: vim ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/vim.so
- ✅ OK Parser: vimdoc ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/vimdoc.so
- ✅ OK Parser: vimdoc ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/vimdoc.so
- ✅ OK Parser: yaml ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/yaml.so

View File

@@ -1,577 +0,0 @@
==============================================================================
CopilotChat: ✅
CopilotChat.nvim [core] ~
- ✅ OK nvim: NVIM v0.11.3
Build type: Release
LuaJIT 2.1.1753364724
Run "nvim -V1 -v" for more info
- ✅ OK setup: called
CopilotChat.nvim [commands] ~
- ✅ OK curl: curl 8.7.1 (x86_64-apple-darwin24.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.64.0
Release-Date: 2024-03-27
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe UnixSockets
- ✅ OK git: git version 2.50.1
- ✅ OK rg: ripgrep 14.1.1
features:+pcre2
simd(compile):+NEON
simd(runtime):+NEON
PCRE2 10.43 is available (JIT is available)
- ✅ OK lynx: Lynx Version 2.9.2 (31 May 2024)
libwww-FM 2.14, SSL-MM 1.4.1, OpenSSL 3.5.1, ncurses 6.5.20240427
Built on darwin24.2.0 (May 31 2024 23:03:20).
Copyrights held by the Lynx Developers Group,
the University of Kansas, CERN, and other contributors.
Distributed under the GNU General Public License (Version 2).
See https://lynx.invisible-island.net/ and the online help for more information.
See http://www.openssl.org/ for information about OpenSSL.
CopilotChat.nvim [dependencies] ~
- ✅ OK plenary: installed
- ✅ OK copilot: copilot.lua
- ✅ OK vim.ui.select: overridden by `@/Users/carlos/.local/share/nvim/lazy/dressing.nvim/lua/dressing/patch.lua`
- ✅ OK tiktoken_core: installed
- ✅ OK treesitter[markdown]: installed
- ✅ OK treesitter[diff]: installed
==============================================================================
avante: ✅
avante.nvim ~
- ✅ OK Found required plugin: nvim-lua/plenary.nvim
- ✅ OK Found required plugin: MunifTanjim/nui.nvim
- ✅ OK Found icons plugin (nvim-web-devicons or mini.icons)
- ✅ OK Using native input provider (no additional dependencies required)
TreeSitter Dependencies ~
- ✅ OK All essential TreeSitter parsers are installed
- ✅ OK TreeSitter highlighter is available
==============================================================================
copilot: 1 ❌
{copilot.lua} ~
- {copilot.lua} GitHub Copilot plugin for Neovim
Copilot Dependencies ~
- ✅ OK `node` found: v22.11.0
Copilot Authentication ~
- No environment token set (`GITHUB_COPILOT_TOKEN` or `GH_COPILOT_TOKEN`)
- ✅ OK Local credentials file found
- Location: `/Users/carlos/.config/github-copilot/apps.json`
- ❌ ERROR Copilot LSP client not available
- Check that the plugin is properly loaded and configured
- Or restart Neovim if the plugin was just installed
==============================================================================
dap: ✅
dap: Adapters ~
dap.adapter: node2 ~
- ✅ OK is executable: node
dap.adapter: java ~
- Adapter is a function. Can't validate it
dap: Sessions ~
- ✅ OK No active sessions
==============================================================================
dressing: ✅
dressing.nvim ~
- ✅ OK vim.ui.input active
- ✅ OK vim.ui.select active: telescope
==============================================================================
fzf_lua: ✅
fzf-lua [required] ~
- ✅ OK 'fzf' `0.65.0 (brew)`
- ✅ OK 'git' `git version 2.50.1`
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK 'fd' `fd 10.2.0`
fzf-lua [optional] ~
- ✅ OK `nvim-web-devicons` found
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK 'fd' `fd 10.2.0`
- ✅ OK 'bat' `bat 0.25.0`
- ✅ OK 'delta' `delta 0.18.2`
fzf-lua [optional:media] ~
- ✅ OK 'viu' `viu 1.5.1`
- ✅ OK 'chafa' `Chafa version 1.16.2`
- ✅ OK 'ueberzugpp' `ueberzugpp 2.9.6`
fzf-lua [env] ~
- ✅ OK `$FZF_DEFAULT_OPTS` is set to:
--color=fg:#CBE0F0,bg:#011628,hl:#B388FF,fg+:#CBE0F0,bg+:#143652,hl+:#B388FF,info:#06BCE4,prompt:#2CF9ED,pointer:#2CF9ED,marker:#2CF9ED,spinner:#2CF9ED,header:#2CF9ED
- ✅ OK `FZF_DEFAULT_OPTS_FILE` is not set
==============================================================================
img-clip: ✅
img-clip.nvim ~
- ✅ OK `pngpaste` is installed
==============================================================================
lazy: 2 ⚠️
lazy.nvim ~
- {lazy.nvim} version `11.17.1`
- ✅ OK {git} `version 2.50.1`
- ✅ OK no existing packages found by other package managers
- ✅ OK packer_compiled.lua not found
luarocks ~
- checking `luarocks` installation
- ✅ OK no plugins require `luarocks`, so you can ignore any warnings below
- ✅ OK {luarocks} `/opt/homebrew/bin/luarocks 3.12.2`
- ⚠️ WARNING `lua` version `5.1` needed, but found `Lua 5.4.8 Copyright (C) 1994-2025 Lua.org, PUC-Rio`
- ⚠️ WARNING {lua5.1} or {lua} or {lua-5.1} version `5.1` not installed
==============================================================================
luasnip: ✅
luasnip ~
- ✅ OK jsregexp is installed
==============================================================================
mason: ✅
mason.nvim ~
- ✅ OK mason.nvim version v2.0.1
- ✅ OK PATH: prepend
- ✅ OK Providers:
mason.providers.registry-api
mason.providers.client
- ✅ OK neovim version >= 0.10.0
mason.nvim [Registries] ~
- ✅ OK Registry `github.com/mason-org/mason-registry version: 2025-07-28-rusty-action` is installed.
mason.nvim [Core utils] ~
- ✅ OK unzip: `UnZip 6.00 of 20 April 2009, by Info-ZIP, with modifications by Apple Inc.`
- ✅ OK wget: `GNU Wget 1.25.0, a non-interactive network retriever.`
- ✅ OK curl: `curl 8.7.1 (x86_64-apple-darwin24.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.64.0`
- ✅ OK gzip: `Apple gzip 457.120.3`
- ✅ OK tar: `bsdtar 3.5.3 - libarchive 3.7.4 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 `
- ✅ OK bash: `GNU bash, version 3.2.57(1)-release (arm64-apple-darwin24)`
- ✅ OK sh: `Ok`
mason.nvim [Languages] ~
- ✅ OK Go: `go version go1.24.5 darwin/arm64`
- ✅ OK luarocks: `/opt/homebrew/bin/luarocks 3.12.2`
- ✅ OK cargo: `cargo 1.82.0 (8f40fc59f 2024-08-21)`
- ✅ OK Ruby: `ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin24]`
- ✅ OK node: `v22.11.0`
- ✅ OK npm: `11.4.2`
- ✅ OK PHP: `PHP 8.4.10 (cli) (built: Jul 2 2025 02:22:42) (NTS)`
- ✅ OK Composer: `Composer version 2.8.10 2025-07-10 19:08:33`
- ✅ OK RubyGem: `3.5.3`
- ✅ OK python: `Python 3.13.5`
- ✅ OK java: `openjdk version "23.0.2" 2025-01-21`
- ✅ OK javac: `javac 23.0.2`
- ✅ OK julia: `julia version 1.11.6`
- ✅ OK pip: `pip 25.1.1 from /opt/homebrew/lib/python3.13/site-packages/pip (python 3.13)`
- ✅ OK python venv: `Ok`
==============================================================================
mason-lspconfig: ✅
mason-lspconfig.nvim ~
- ✅ OK Neovim v0.11
- ✅ OK mason.nvim v2
==============================================================================
mcphub: 1 ⚠️
mcphub.nvim ~
- mcphub.nvim version: 6.1.0
- mcp-hub binary:
- mcp-hub required version: 4.2.0
- mcp-hub installed version: 4.2.0
- ✅ OK mcp-hub version 4.2.0 is compatible
Plugin Dependencies: ~
- ✅ OK plenary.nvim installed
Libraries: ~
- ✅ OK curl installed
- ✅ OK node installed
- ✅ OK uv installed
Chat plugins ~
- ⚠️ WARNING codecompanion.nvim not found
- ✅ OK avante.nvim installed
- ✅ OK CopilotChat.nvim installed
==============================================================================
nvim-treesitter: ✅
Installation ~
- ✅ OK `tree-sitter` found 0.25.8 (parser generator, only needed for :TSInstallFromGrammar)
- ✅ OK `node` found v22.11.0 (only needed for :TSInstallFromGrammar)
- ✅ OK `git` executable found.
- ✅ OK `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
Version: Apple clang version 17.0.0 (clang-1700.0.13.5)
- ✅ OK Neovim was compiled with tree-sitter runtime ABI version 15 (required >=13). Parsers must be compatible with runtime ABI.
OS Info:
{
machine = "arm64",
release = "24.5.0",
sysname = "Darwin",
version = "Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:33 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T8122"
} ~
Parser/Features H L F I J
- bash ✓ ✓ ✓ . ✓
- c ✓ ✓ ✓ ✓ ✓
- css ✓ . ✓ ✓ ✓
- diff ✓ . ✓ . ✓
- dockerfile ✓ . . . ✓
- gitignore ✓ . . . ✓
- graphql ✓ . . ✓ ✓
- html ✓ ✓ ✓ ✓ ✓
- java ✓ ✓ ✓ ✓ ✓
- javascript ✓ ✓ ✓ ✓ ✓
- json ✓ ✓ ✓ ✓ .
- latex ✓ . ✓ . ✓
- lua ✓ ✓ ✓ ✓ ✓
- markdown ✓ . ✓ ✓ ✓
- markdown_inline ✓ . . . ✓
- prisma ✓ . ✓ . ✓
- query ✓ ✓ ✓ ✓ ✓
- regex ✓ . . . .
- sql ✓ . ✓ ✓ ✓
- svelte ✓ ✓ ✓ ✓ ✓
- tsx ✓ ✓ ✓ ✓ ✓
- typescript ✓ ✓ ✓ ✓ ✓
- vim ✓ ✓ ✓ . ✓
- vimdoc ✓ . . . ✓
- yaml ✓ ✓ ✓ ✓ ✓
Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
+) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang} ~
==============================================================================
render-markdown: ✅
render-markdown.nvim [version] ~
- ✅ OK plugin 8.6.9
- ✅ OK neovim >= 0.11
render-markdown.nvim [configuration] ~
- ✅ OK valid
render-markdown.nvim [treesitter] ~
- ✅ OK markdown: parser installed
- ✅ OK markdown: highlights ~/.local/share/nvim/lazy/nvim-treesitter/queries/markdown/highlights.scm
- ✅ OK markdown: highlighter enabled
- ✅ OK markdown_inline: parser installed
- ✅ OK markdown_inline: highlights ~/.local/share/nvim/lazy/nvim-treesitter/queries/markdown_inline/highlights.scm
- ✅ OK html: parser installed
render-markdown.nvim [icons] ~
- ✅ OK using: nvim-web-devicons
render-markdown.nvim [executables] ~
render-markdown.nvim [conflicts] ~
- ✅ OK headlines: not installed
- ✅ OK markview: not installed
- ✅ OK obsidian: not installed
==============================================================================
snacks: 4 ⚠️ 3 ❌
Snacks ~
- ✅ OK setup called
Snacks.bigfile ~
- ✅ OK setup {enabled}
Snacks.dashboard ~
- ✅ OK setup {enabled}
- ❌ ERROR setup did not run
Snacks.explorer ~
- ✅ OK setup {enabled}
Snacks.image ~
- ✅ OK setup {enabled}
- ✅ OK 'kitty' `kitty 0.42.2 created by Kovid Goyal`
- ✅ OK 'magick' `Version: ImageMagick 7.1.2-0 Q16-HDRI aarch64 23234 https://imagemagick.org`
- ✅ OK 'convert' `WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert"`
- ✅ OK `wezterm` detected and supported
- ⚠️ WARNING `wezterm` does not support placeholders. Fallback rendering will be used
- ⚠️ WARNING Inline images are disabled
- ✅ OK `tmux` detected and supported
- ✅ OK Terminal Dimensions:
- {size}: `0` x `0` pixels
- {scale}: `1.00`
- {cell}: `0` x `0` pixels
- ✅ OK Available Treesitter languages:
`css`, `html`, `javascript`, `latex`, `markdown_inline`, `markdown`, `svelte`, `tsx`
- ⚠️ WARNING Missing Treesitter languages:
`norg`, `scss`, `typst`, `vue`
- ⚠️ WARNING Image rendering in docs with missing treesitter parsers won't work
- ✅ OK 'gs' `10.05.1`
- ✅ OK PDF files are supported
- ✅ OK 'tectonic' `tectonic 0.15.0Tectonic 0.15.0`
- ✅ OK LaTeX math equations are supported
- ✅ OK 'mmdc' `node:internal/modules/esm/resolve:838`
- ✅ OK Mermaid diagrams are supported
- ✅ OK your terminal supports the kitty graphics protocol
Snacks.input ~
- ✅ OK setup {enabled}
- ❌ ERROR `vim.ui.input` is not set to `Snacks.input`
Snacks.lazygit ~
- ✅ OK {lazygit} installed
Snacks.notifier ~
- ✅ OK setup {enabled}
- ✅ OK is ready
Snacks.picker ~
- ✅ OK setup {enabled}
- ❌ ERROR `vim.ui.select` is not set to `Snacks.picker.select`
- ✅ OK Available Treesitter languages:
`regex`
- ✅ OK 'git' `git version 2.50.1`
- ✅ OK 'rg' `ripgrep 14.1.1`
- ✅ OK `Snacks.picker.grep()` is available
- ✅ OK 'fd' `fd 10.2.0`
- ✅ OK `Snacks.picker.files()` is available
- ✅ OK `Snacks.picker.explorer()` is available
- ✅ OK `SQLite3` is available
Snacks.quickfile ~
- ✅ OK setup {enabled}
Snacks.scope ~
- ✅ OK setup {enabled}
Snacks.scroll ~
- ✅ OK setup {enabled}
Snacks.statuscolumn ~
- ✅ OK setup {enabled}
Snacks.terminal ~
- ✅ OK shell configured
- `vim.o.shell`: /bin/zsh
- `parsed`: { "/bin/zsh" }
Snacks.toggle ~
- ✅ OK {which-key} is installed
Snacks.words ~
- ✅ OK setup {enabled}
==============================================================================
telescope: ✅
Checking for required plugins ~
- ✅ OK plenary installed.
- ✅ OK nvim-treesitter installed.
Checking external dependencies ~
- ✅ OK rg: found ripgrep 14.1.1
- ✅ OK fd: found fd 10.2.0
===== Installed extensions ===== ~
Telescope Extension: `dap` ~
- No healthcheck provided
Telescope Extension: `fzf` ~
- ✅ OK lib working as expected
- ✅ OK file_sorter correctly configured
- ✅ OK generic_sorter correctly configured
==============================================================================
vim.deprecated: ✅
- ✅ OK No deprecated functions detected
==============================================================================
vim.health: 1 ❌
Configuration ~
- ✅ OK no issues found
Runtime ~
- ✅ OK $VIMRUNTIME: /opt/homebrew/Cellar/neovim/0.11.3/share/nvim/runtime
Performance ~
- ✅ OK Build type: Release
Remote Plugins ~
- ✅ OK Up to date
terminal ~
- key_backspace (kbs) terminfo entry: `key_backspace=^H`
- key_dc (kdch1) terminfo entry: `key_dc=\E[3~`
- $TERM_PROGRAM="vscode"
- $COLORTERM="truecolor"
tmux ~
- ✅ OK escape-time: 10
- ✅ OK focus-events: on
- $TERM: xterm-256color
- default-terminal: tmux-256color
- ❌ ERROR $TERM differs from the tmux `default-terminal` setting. Colors might look wrong.
- ADVICE:
- $TERM may have been set by some rc (.bashrc, .zshrc, ...).
External Tools ~
- ✅ OK ripgrep 14.1.1 (/opt/homebrew/bin/rg)
==============================================================================
vim.lsp: 15 ⚠️
- LSP log level : WARN
- Log path: /Users/carlos/.local/state/nvim/lsp.log
- Log size: 9416 KB
vim.lsp: Active Clients ~
- No active clients
vim.lsp: Enabled Configurations ~
- ⚠️ WARNING 'css_variables' config not found. Ensure that vim.lsp.config('css_variables') was called.
- css_variables:
- ⚠️ WARNING 'cssls' config not found. Ensure that vim.lsp.config('cssls') was called.
- cssls:
- ⚠️ WARNING 'cssmodules_ls' config not found. Ensure that vim.lsp.config('cssmodules_ls') was called.
- cssmodules_ls:
- ⚠️ WARNING 'emmet_ls' config not found. Ensure that vim.lsp.config('emmet_ls') was called.
- emmet_ls:
- ⚠️ WARNING 'eslint' config not found. Ensure that vim.lsp.config('eslint') was called.
- eslint:
- ⚠️ WARNING 'gopls' config not found. Ensure that vim.lsp.config('gopls') was called.
- gopls:
- ⚠️ WARNING 'graphql' config not found. Ensure that vim.lsp.config('graphql') was called.
- graphql:
- ⚠️ WARNING 'html' config not found. Ensure that vim.lsp.config('html') was called.
- html:
- ⚠️ WARNING 'jdtls' config not found. Ensure that vim.lsp.config('jdtls') was called.
- jdtls:
- ⚠️ WARNING 'lua_ls' config not found. Ensure that vim.lsp.config('lua_ls') was called.
- lua_ls:
- ⚠️ WARNING 'prismals' config not found. Ensure that vim.lsp.config('prismals') was called.
- prismals:
- ⚠️ WARNING 'pyright' config not found. Ensure that vim.lsp.config('pyright') was called.
- pyright:
- ⚠️ WARNING 'svelte' config not found. Ensure that vim.lsp.config('svelte') was called.
- svelte:
- ⚠️ WARNING 'tailwindcss' config not found. Ensure that vim.lsp.config('tailwindcss') was called.
- tailwindcss:
- ⚠️ WARNING 'ts_ls' config not found. Ensure that vim.lsp.config('ts_ls') was called.
- ts_ls:
vim.lsp: File Watcher ~
- file watching "(workspace/didChangeWatchedFiles)" disabled on all clients
vim.lsp: Position Encodings ~
- No active clients
==============================================================================
vim.provider: ✅
Clipboard (optional) ~
- ✅ OK Clipboard tool found: pbcopy
Node.js provider (optional) ~
- Node.js: v22.11.0
- Nvim node.js host: /Users/carlos/.config/yarn/global//node_modules/neovim/bin/cli.js
Perl provider (optional) ~
- Disabled (loaded_perl_provider=0).
Python 3 provider (optional) ~
- pyenv: Path: /opt/homebrew/Cellar/pyenv/2.6.5/libexec/pyenv
- pyenv: Root: /Users/carlos/.pyenv
- `g:python3_host_prog` is not set. Searching for python3.12 in the environment.
- Executable: /opt/homebrew/bin/python3.12
- Python version: 3.12.11
- pynvim version: 0.5.2
- ✅ OK Latest pynvim is installed.
Python virtualenv ~
- ✅ OK no $VIRTUAL_ENV
Ruby provider (optional) ~
- Disabled (loaded_ruby_provider=0).
==============================================================================
vim.treesitter: ✅
Treesitter features ~
- Treesitter ABI support: min 13, max 15
- WASM parser support: false
Treesitter parsers ~
- ✅ OK Parser: bash ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/bash.so
- ✅ OK Parser: c ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/c.so
- ✅ OK Parser: c ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/c.so
- ✅ OK Parser: css ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/css.so
- ✅ OK Parser: diff ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/diff.so
- ✅ OK Parser: dockerfile ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/dockerfile.so
- ✅ OK Parser: gitignore ABI: 13, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/gitignore.so
- ✅ OK Parser: graphql ABI: 13, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/graphql.so
- ✅ OK Parser: html ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/html.so
- ✅ OK Parser: java ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/java.so
- ✅ OK Parser: javascript ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/javascript.so
- ✅ OK Parser: json ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/json.so
- ✅ OK Parser: latex ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/latex.so
- ✅ OK Parser: lua ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/lua.so
- ✅ OK Parser: lua ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/lua.so
- ✅ OK Parser: markdown ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/markdown.so
- ✅ OK Parser: markdown ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/markdown.so
- ✅ OK Parser: markdown_inline ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/markdown_inline.so
- ✅ OK Parser: markdown_inline ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/markdown_inline.so
- ✅ OK Parser: prisma ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/prisma.so
- ✅ OK Parser: query ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/query.so
- ✅ OK Parser: query ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/query.so
- ✅ OK Parser: regex ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/regex.so
- ✅ OK Parser: sql ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/sql.so
- ✅ OK Parser: svelte ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/svelte.so
- ✅ OK Parser: tsx ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/tsx.so
- ✅ OK Parser: typescript ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/typescript.so
- ✅ OK Parser: vim ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/vim.so
- ✅ OK Parser: vim ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/vim.so
- ✅ OK Parser: vimdoc ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/vimdoc.so
- ✅ OK Parser: vimdoc ABI: 14, path: /opt/homebrew/Cellar/neovim/0.11.3/lib/nvim/parser/vimdoc.so
- ✅ OK Parser: yaml ABI: 14, path: /Users/carlos/.local/share/nvim/lazy/nvim-treesitter/parser/yaml.so

View File

@@ -1,296 +0,0 @@
gui:
authorColors: {}
branchColors: {}
branchColorPatterns: {}
scrollHeight: 2
scrollPastBottom: true
scrollOffMargin: 2
scrollOffBehavior: margin
mouseEvents: true
skipDiscardChangeWarning: false
skipStashWarning: false
skipNoStagedFilesWarning: false
skipRewordInEditorWarning: false
sidePanelWidth: 0.3333
expandFocusedSidePanel: false
expandedSidePanelWeight: 2
mainPanelSplitMode: flexible
enlargedSideViewLocation: left
wrapLinesInStagingView: true
language: auto
timeFormat: 02 Jan 06
shortTimeFormat: 3:04PM
theme:
activeBorderColor:
- green
- bold
inactiveBorderColor:
- default
searchingActiveBorderColor:
- cyan
- bold
optionsTextColor:
- blue
selectedLineBgColor:
- blue
inactiveViewSelectedLineBgColor:
- bold
cherryPickedCommitFgColor:
- blue
cherryPickedCommitBgColor:
- cyan
markedBaseCommitFgColor:
- blue
markedBaseCommitBgColor:
- yellow
unstagedChangesColor:
- red
defaultFgColor:
- default
commitLength:
show: true
showListFooter: true
showFileTree: true
showNumstatInFilesView: false
showRandomTip: true
showCommandLog: true
showBottomLine: true
showPanelJumps: true
showIcons: false
nerdFontsVersion: ""
showFileIcons: true
commitAuthorShortLength: 2
commitAuthorLongLength: 17
commitHashLength: 8
showBranchCommitHash: false
showDivergenceFromBaseBranch: none
commandLogSize: 8
splitDiff: auto
screenMode: normal
border: rounded
animateExplosion: true
portraitMode: auto
filterMode: substring
spinner:
frames:
- '|'
- /
- '-'
- \
rate: 50
statusPanelView: dashboard
switchToFilesAfterStashPop: true
switchToFilesAfterStashApply: true
switchTabsWithPanelJumpKeys: false
git:
paging:
colorArg: always
pager: ""
useConfig: false
externalDiffCommand: ""
commit:
signOff: false
autoWrapCommitMessage: true
autoWrapWidth: 72
merging:
manualCommit: false
args: ""
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
mainBranches:
- master
- main
skipHookPrefix: WIP
autoFetch: true
autoRefresh: true
fetchAll: true
autoStageResolvedConflicts: true
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
allBranchesLogCmds: []
overrideGpg: false
disableForcePushing: false
commitPrefix: null
commitPrefixes: {}
branchPrefix: ""
parseEmoji: false
log:
order: topo-order
showGraph: always
showWholeGraph: false
truncateCopiedCommitHashesTo: 12
update:
method: prompt
days: 14
refresher:
refreshInterval: 10
fetchInterval: 60
confirmOnQuit: false
quitOnTopLevelReturn: false
disableStartupPopups: false
customCommands: []
services: {}
notARepository: prompt
promptToReturnFromSubprocess: true
keybinding:
universal:
quit: q
quit-alt1: <c-c>
return: <esc>
quitWithoutChangingDirectory: Q
togglePanel: <tab>
prevItem: <up>
nextItem: <down>
prevItem-alt: k
nextItem-alt: j
prevPage: ','
nextPage: .
scrollLeft: H
scrollRight: L
gotoTop: <
gotoBottom: '>'
toggleRangeSelect: v
rangeSelectDown: <s-down>
rangeSelectUp: <s-up>
prevBlock: <left>
nextBlock: <right>
prevBlock-alt: h
nextBlock-alt: l
nextBlock-alt2: <tab>
prevBlock-alt2: <backtab>
jumpToBlock:
- "1"
- "2"
- "3"
- "4"
- "5"
nextMatch: "n"
prevMatch: "N"
startSearch: /
optionMenu: <disabled>
optionMenu-alt1: '?'
select: <space>
goInto: <enter>
confirm: <enter>
confirmInEditor: <a-enter>
remove: d
new: "n"
edit: e
openFile: o
scrollUpMain: <pgup>
scrollDownMain: <pgdown>
scrollUpMain-alt1: K
scrollDownMain-alt1: J
scrollUpMain-alt2: <c-u>
scrollDownMain-alt2: <c-d>
executeShellCommand: ':'
createRebaseOptionsMenu: m
pushFiles: P
pullFiles: p
refresh: R
createPatchOptionsMenu: <c-p>
nextTab: ']'
prevTab: '['
nextScreenMode: +
prevScreenMode: _
undo: z
redo: <c-z>
filteringMenu: <c-s>
diffingMenu: W
diffingMenu-alt: <c-e>
copyToClipboard: <c-o>
openRecentRepos: <c-r>
submitEditorText: <enter>
extrasMenu: '@'
toggleWhitespaceInDiffView: <c-w>
increaseContextInDiffView: '}'
decreaseContextInDiffView: '{'
increaseRenameSimilarityThreshold: )
decreaseRenameSimilarityThreshold: (
openDiffTool: <c-t>
status:
checkForUpdate: u
recentRepos: <enter>
allBranchesLogGraph: a
files:
commitChanges: c
commitChangesWithoutHook: w
amendLastCommit: A
commitChangesWithEditor: C
findBaseCommitForFixup: <c-f>
confirmDiscard: x
ignoreFile: i
refreshFiles: r
stashAllChanges: s
viewStashOptions: S
toggleStagedAll: a
viewResetOptions: D
fetch: f
toggleTreeView: '`'
openMergeTool: M
openStatusFilter: <c-b>
copyFileInfoToClipboard: "y"
collapseAll: '-'
expandAll: =
branches:
createPullRequest: o
viewPullRequestOptions: O
copyPullRequestURL: <c-y>
checkoutBranchByName: c
forceCheckoutBranch: F
rebaseBranch: r
renameBranch: R
mergeIntoCurrentBranch: M
viewGitFlowOptions: i
fastForward: f
createTag: T
pushTag: P
setUpstream: u
fetchRemote: f
sortOrder: s
worktrees:
viewWorktreeOptions: w
commits:
squashDown: s
renameCommit: r
renameCommitWithEditor: R
viewResetOptions: g
markCommitAsFixup: f
createFixupCommit: F
squashAboveCommits: S
moveDownCommit: <c-j>
moveUpCommit: <c-k>
amendToCommit: A
resetCommitAuthor: a
pickCommit: p
revertCommit: t
cherryPickCopy: C
pasteCommits: V
markCommitAsBaseForRebase: B
tagCommit: T
checkoutCommit: <space>
resetCherryPick: <c-R>
copyCommitAttributeToClipboard: "y"
openLogMenu: <c-l>
openInBrowser: o
viewBisectOptions: b
startInteractiveRebase: i
amendAttribute:
resetAuthor: a
setAuthor: A
addCoAuthor: c
stash:
popStash: g
renameStash: r
commitFiles:
checkoutCommitFile: c
main:
toggleSelectHunk: a
pickBothHunks: b
editSelectHunk: E
submodules:
init: i
update: u
bulkMenu: b
commitMessage:
commitMenu: <c-o>

View File

@@ -4,6 +4,15 @@
-- Main core initialization for cargdev Neovim config
-- =============================================================================
-- 0. Setup LuaRocks path for rest.nvim dependencies (Lua 5.1 - Neovim uses LuaJIT)
local function setup_luarocks_path()
local luarocks_path = vim.fn.system("luarocks path --lr-path --lua-version=5.1 --local"):gsub("\n", "")
if luarocks_path and luarocks_path ~= "" then
package.path = package.path .. ";" .. luarocks_path
end
end
setup_luarocks_path()
-- 1. Compatibility Layer
require("cargdev.core.compatibility").setup()

View File

@@ -1,13 +1,13 @@
-- Copilot Chat keymaps
local keymap = vim.keymap
keymap.set("v", "<leader>zn", ":CopilotChatRename<CR>", { desc = "Rename variable (Copilot Chat)" })
keymap.set("n", "<leader>zc", ":CopilotChat<CR>", { desc = "Open Copilot Chat" })
keymap.set("v", "<leader>ze", ":CopilotChatExplain<CR>", { desc = "Explain code (Copilot Chat)" })
keymap.set("v", "<leader>zr", ":CopilotChatReview<CR>", { desc = "Review code (Copilot Chat)" })
keymap.set("v", "<leader>zf", ":CopilotChatFix<CR>", { desc = "Fix code issues (Copilot Chat)" })
keymap.set("v", "<leader>zo", ":CopilotChatOptimize<CR>", { desc = "Optimize code (Copilot Chat)" })
keymap.set("v", "<leader>zd", ":CopilotChatDocs<CR>", { desc = "Generate docs (Copilot Chat)" })
keymap.set("n", "<leader>cp", ":Copilot panel<CR>", { desc = "Copilot: Open copilot panel" })
keymap.set("n", "<leader>cd", ":Copilot disable<CR>", { desc = "Copilot: Disabled" })
keymap.set("n", "<leader>cs", ":Copilot status<CR>", { desc = "Copilot: Status" })
-- -- Copilot Chat keymaps
-- local keymap = vim.keymap
--
-- keymap.set("v", "<leader>zn", ":CopilotChatRename<CR>", { desc = "Rename variable (Copilot Chat)" })
-- keymap.set("n", "<leader>zc", ":CopilotChat<CR>", { desc = "Open Copilot Chat" })
-- keymap.set("v", "<leader>ze", ":CopilotChatExplain<CR>", { desc = "Explain code (Copilot Chat)" })
-- keymap.set("v", "<leader>zr", ":CopilotChatReview<CR>", { desc = "Review code (Copilot Chat)" })
-- keymap.set("v", "<leader>zf", ":CopilotChatFix<CR>", { desc = "Fix code issues (Copilot Chat)" })
-- keymap.set("v", "<leader>zo", ":CopilotChatOptimize<CR>", { desc = "Optimize code (Copilot Chat)" })
-- keymap.set("v", "<leader>zd", ":CopilotChatDocs<CR>", { desc = "Generate docs (Copilot Chat)" })
-- keymap.set("n", "<leader>cp", ":Copilot panel<CR>", { desc = "Copilot: Open copilot panel" })
-- keymap.set("n", "<leader>cd", ":Copilot disable<CR>", { desc = "Copilot: Disabled" })
-- keymap.set("n", "<leader>cs", ":Copilot status<CR>", { desc = "Copilot: Status" })

View File

@@ -6,7 +6,7 @@ local fn = vim.fn
local keymap = vim.keymap.set
if ok_dap and ok_dapui then
keymap("n", "<leader>dc", dap.continue, { desc = "▶ Start Debugging" })
keymap("n", "<leader>dcr", dap.continue, { desc = "▶ Start Debugging" })
keymap("n", "<leader>do", dap.step_over, { desc = "⏭ Step Over" })
keymap("n", "<leader>di", dap.step_into, { desc = "⤵ Step Into" })
keymap("n", "<leader>dot", dap.step_out, { desc = "⤴ Step Out" })

View File

@@ -6,10 +6,6 @@ local opts = { noremap = true, silent = true }
-- GENERAL KEYMAPS
-- =============================================================================
-- Set leader key
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- General keymaps
keymap.set("i", "jk", "<ESC>", opts) -- Exit insert mode with jk
keymap.set("n", "<leader>nh", ":nohl<CR>", opts) -- Clear search highlights

View File

@@ -3,7 +3,7 @@ local keymap = vim.keymap
keymap.set("n", "]x", "<Plug>(git-conflict-next-conflict)", { desc = "Go to next git conflict" })
keymap.set("n", "[x", "<Plug>(git-conflict-prev-conflict)", { desc = "Go to previous git conflict" })
keymap.set("n", "<leader>co", "<Plug>(git-conflict-ours)", { desc = "Choose ours (git conflict)" })
keymap.set("n", "<leader>coo", "<Plug>(git-conflict-ours)", { desc = "Choose ours (git conflict)" })
keymap.set("n", "<leader>ct", "<Plug>(git-conflict-theirs)", { desc = "Choose theirs (git conflict)" })
keymap.set("n", "<leader>cb", "<Plug>(git-conflict-both)", { desc = "Choose both (git conflict)" })
keymap.set("n", "<leader>c0", "<Plug>(git-conflict-none)", { desc = "Choose none (git conflict)" })

View File

@@ -5,8 +5,14 @@ local keymap = vim.keymap
-- PERSONAL KEYMAPS (ORIGINAL WORKFLOW)
-- =============================================================================
keymap.set("n", "<leader>u", "gg0vG$$", { desc = "Select the whole file open" })
keymap.set("n", "<leader>4", "0v$hy<Esc>0o<Esc>0p0kw<CR>", { desc = "Copy the entire line and paste just below" })
keymap.set("n", "<leader>u", function()
vim.cmd("normal! ggVG")
end, { desc = "Select the whole file" })
keymap.set("n", "<leader>4", function()
-- Copy current line and paste below
vim.cmd("normal! yy")
vim.cmd("normal! p")
end, { desc = "Copy the entire line and paste just below" })
-- file management
keymap.set("n", "<leader>w", ":w<CR>", { desc = "Save the current file" })

View File

@@ -21,7 +21,7 @@ keymap.set("n", "<leader>gg", "<cmd>LazyGit<CR>", { desc = "LazyGit" })
-- DAP
keymap.set("n", "<leader>db", "<cmd>lua require'dap'.toggle_breakpoint()<cr>", { desc = "Toggle breakpoint" })
keymap.set("n", "<leader>dc", "<cmd>lua require'dap'.continue()<cr>", { desc = "Continue" })
keymap.set("n", "<leader>dcc", "<cmd>lua require'dap'.continue()<cr>", { desc = "Continue" })
keymap.set("n", "<leader>di", "<cmd>lua require'dap'.step_into()<cr>", { desc = "Step into" })
keymap.set("n", "<leader>do", "<cmd>lua require'dap'.step_over()<cr>", { desc = "Step over" })
keymap.set("n", "<leader>dO", "<cmd>lua require'dap'.step_out()<cr>", { desc = "Step out" })
@@ -49,8 +49,8 @@ keymap.set("n", "<leader>sr", "<cmd>SessionRestore<cr>", { desc = "Restore sessi
-- Formatting
keymap.set("n", "<leader>f", "<cmd>lua vim.lsp.buf.format()<cr>", { desc = "Format buffer" })
-- Substitute
keymap.set("n", "<leader>s", "<cmd>lua require('substitute').operator()<cr>", { desc = "Substitute with motion" })
-- Substitute (changed from <leader>s to <leader>sub to avoid conflicts)
keymap.set("n", "<leader>sub", "<cmd>lua require('substitute').operator()<cr>", { desc = "Substitute with motion" })
keymap.set("n", "<leader>ss", "<cmd>lua require('substitute').line()<cr>", { desc = "Substitute line" })
keymap.set("n", "<leader>S", "<cmd>lua require('substitute').eol()<cr>", { desc = "Substitute to end of line" })
@@ -205,4 +205,4 @@ keymap.set("n", "<leader>tC", "<cmd>set formatoptions-=c<cr>", { desc = "Disable
-- Indent and wrap
keymap.set("n", "<leader>ti", "<cmd>set breakindent!<cr>", { desc = "Toggle break indent" })
keymap.set("n", "<leader>ts", "<cmd>set showbreak=↪ <cr>", { desc = "Show break indicator" })
keymap.set("n", "<leader>tS", "<cmd>set showbreak=<cr>", { desc = "Hide break indicator" })
keymap.set("n", "<leader>tS", "<cmd>set showbreak=<cr>", { desc = "Hide break indicator" })

View File

@@ -42,6 +42,23 @@ opt.scrolljump = 1 -- Minimal number of screen lines to scroll
opt.scrolloff = 3 -- Keep 3 lines above/below cursor (reduced from 8)
opt.sidescrolloff = 3 -- Keep 3 columns left/right of cursor (reduced from 8)
-- Syntax loading optimizations
opt.syntax = "on" -- Enable syntax highlighting
opt.synmaxcol = 200 -- Reduce syntax highlighting column limit
opt.lazyredraw = false -- Don't use lazy redraw (can cause issues)
opt.foldmethod = "syntax" -- Use syntax-based folding for better performance
opt.foldlevel = 99 -- Don't fold by default
-- Filetype plugin optimizations
opt.filetype = "on" -- Enable filetype detection
opt.modeline = false -- Disable modeline for security and performance
opt.modelines = 0 -- Disable modelines
-- Matchparen optimizations
g.matchparen_timeout = 100 -- Reduce from default 300ms
g.matchparen_insert_timeout = 50 -- Reduce from default 100ms
g.matchparen_disable_cursor_hl = 0 -- Keep cursor highlighting but optimize
-- UI settings
opt.number = true -- Show line numbers
opt.relativenumber = true -- Show relative line numbers
@@ -108,10 +125,27 @@ opt.splitright = true -- Split right when creating vertical splits
-- Conceal
opt.conceallevel = 2 -- Conceal certain characters
-- Disable providers that cause warnings
-- Provider configurations
g.loaded_perl_provider = 0 -- Disable Perl provider
g.loaded_ruby_provider = 0 -- Disable Ruby provider (optional)
-- Python provider configuration
g.python3_host_prog = "/opt/homebrew/bin/python3.12" -- Explicit Python path
-- Clipboard provider optimization (macOS)
g.clipboard = {
name = 'pbcopy',
copy = {
['+'] = 'pbcopy',
['*'] = 'pbcopy',
},
paste = {
['+'] = 'pbpaste',
['*'] = 'pbpaste',
},
cache_enabled = 1,
}
-- Lua specific settings
opt.runtimepath:append(vim.fn.stdpath("config") .. "/lua")
@@ -171,48 +205,37 @@ for _, plugin in pairs(disabled_built_ins) do
end
-- =============================================================================
-- AUTO WRAPPER AUTOCMDS
-- OPTIMIZED AUTO WRAPPER AUTOCMDS
-- =============================================================================
-- Set up auto-wrapping for different file types
-- Consolidated auto-wrapping configuration
vim.api.nvim_create_autocmd("FileType", {
pattern = { "text", "markdown", "gitcommit", "mail" },
pattern = "*",
callback = function()
vim.opt_local.textwidth = 80
vim.opt_local.wrap = true
vim.opt_local.linebreak = true
vim.opt_local.formatoptions:append("t") -- Auto-wrap text
end,
})
-- Set up auto-wrapping for code files
vim.api.nvim_create_autocmd("FileType", {
pattern = { "lua", "javascript", "typescript", "python", "java", "cpp", "c", "rust", "go" },
callback = function()
vim.opt_local.textwidth = 100 -- Longer lines for code
vim.opt_local.formatoptions:append("c") -- Auto-wrap comments
vim.opt_local.formatoptions:append("r") -- Auto-wrap comments with leader
vim.opt_local.formatoptions:append("o") -- Auto-wrap comments with 'o'
vim.opt_local.formatoptions:append("q") -- Allow formatting of comments with 'gq'
end,
})
-- Set up auto-wrapping for documentation files
vim.api.nvim_create_autocmd("FileType", {
pattern = { "help", "man" },
callback = function()
vim.opt_local.textwidth = 78
vim.opt_local.wrap = true
vim.opt_local.linebreak = true
vim.opt_local.formatoptions:append("t") -- Auto-wrap text
end,
})
-- Set up auto-wrapping for configuration files
vim.api.nvim_create_autocmd("FileType", {
pattern = { "conf", "config", "ini", "toml", "yaml", "json" },
callback = function()
vim.opt_local.textwidth = 80
vim.opt_local.formatoptions:append("c") -- Auto-wrap comments
local filetype = vim.bo.filetype
local opt = vim.opt_local
-- Text/documentation files
if vim.tbl_contains({ "text", "markdown", "gitcommit", "mail", "help", "man" }, filetype) then
opt.textwidth = filetype == "help" or filetype == "man" and 78 or 80
opt.wrap = true
opt.linebreak = true
opt.formatoptions:append("t") -- Auto-wrap text
end
-- Code files
if vim.tbl_contains({ "lua", "javascript", "typescript", "python", "java", "cpp", "c", "rust", "go" }, filetype) then
opt.textwidth = 100 -- Longer lines for code
opt.formatoptions:append("c") -- Auto-wrap comments
opt.formatoptions:append("r") -- Auto-wrap comments with leader
opt.formatoptions:append("o") -- Auto-wrap comments with 'o'
opt.formatoptions:append("q") -- Allow formatting of comments with 'gq'
end
-- Configuration files
if vim.tbl_contains({ "conf", "config", "ini", "toml", "yaml", "json" }, filetype) then
opt.textwidth = 80
opt.formatoptions:append("c") -- Auto-wrap comments
end
end,
})

View File

@@ -1,56 +0,0 @@
-- return {
-- {
-- "yetone/avante.nvim",
-- event = "VeryLazy",
-- lazy = false,
-- version = false, -- Always pull the latest change
-- opts = {
-- provider = "cargdev", -- API provider configuration
-- providers = {
-- cargdev = {
-- name = "cargdev", -- Optional
-- endpoint = "https://api-ai.cargdev.io", -- API endpoint
-- api_key_name = "CARGDEV_API_KEY", -- reference the ENV VAR below
-- model = "deepseek-r1:latest",
-- __inherited_from = "ollama", -- ensures compatibility
-- max_tokens = 8192,
-- },
-- },
-- },
-- -- Optional: Build from source if required
-- build = "make",
-- dependencies = {
-- "nvim-treesitter/nvim-treesitter", -- Syntax highlighting support
-- "stevearc/dressing.nvim", -- UI elements
-- "nvim-lua/plenary.nvim", -- Utility library
-- "MunifTanjim/nui.nvim", -- UI library for modal components
-- -- Optional dependencies:
-- "nvim-tree/nvim-web-devicons", -- Icons support
-- "zbirenbaum/copilot.lua", -- Copilot integration
-- {
-- "HakonHarnes/img-clip.nvim", -- Image pasting support
-- event = "VeryLazy",
-- opts = {
-- -- Recommended settings
-- default = {
-- embed_image_as_base64 = false,
-- prompt_for_file_name = false,
-- drag_and_drop = {
-- insert_mode = true,
-- },
-- use_absolute_path = true, -- For Windows users
-- },
-- },
-- },
-- {
-- "MeanderingProgrammer/render-markdown.nvim",
-- ft = { "markdown", "Avante" },
-- config = function()
-- require("render-markdown").setup({
-- file_types = { "markdown", "Avante" },
-- })
-- end,
-- },
-- },
-- },
-- }

View File

@@ -1,75 +0,0 @@
return {
{
-- Main Copilot plugin
"zbirenbaum/copilot.lua",
lazy = false, -- Load at startup
enabled = true,
config = function()
require("copilot").setup({
-- General settings
panel = {
enabled = true,
auto_refresh = false,
keymap = {
jump_prev = "[[",
jump_next = "]]",
accept = "<CR>",
refresh = "gr",
},
layout = {
position = "bottom", -- | top | left | right | horizontal | vertical
ratio = 0.4,
},
},
suggestion = {
enabled = true,
auto_trigger = true,
debounce = 75,
trigger_on_accept = false,
keymap = {
accept = "<C-l>", -- Accept suggestion
next = "<C-j>", -- Next suggestion
prev = "<C-k>", -- Previous suggestion
dismiss = "<C-x>", -- Dismiss suggestion
},
},
filetypes = {
markdown = true,
["*"] = true, -- Enable for all filetypes
},
copilot_node_command = "node", -- Ensure your system's Node.js is v20+
})
end,
},
{
-- Copilot Chat plugin
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "zbirenbaum/copilot.lua" },
{ "nvim-lua/plenary.nvim", branch = "master" }, -- For curl, log and async functions
},
build = "make tiktoken", -- Only on MacOS or Linux
opts = {
layout = {
position = "right", -- Position of the chat window
ratio = 0.5,
},
tiktoken = {
enabled = false, -- Enable token counting
},
floating = {
enabled = true,
border = "rounded",
},
prompts = {
Rename = {
prompt = "Please rename the variable correctly in given selection based on context",
selection = function(source)
local select = require("CopilotChat.select")
return select.visual(source)
end,
},
},
},
},
}

View File

@@ -0,0 +1,44 @@
return {
"CarGDev/rest.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "http")
end,
},
config = function()
-- Basic configuration for rest.nvim
vim.g.rest_nvim = {
-- Enable request highlighting
highlight = {
enable = true,
timeout = 750,
},
-- Enable response formatting
response = {
hooks = {
format = true,
decode_url = true,
},
},
-- Enable cookies
cookies = {
enable = true,
},
-- Enable environment variables
env = {
enable = true,
pattern = ".*%.env.*",
},
-- UI configuration
ui = {
winbar = true,
keybinds = {
prev = "H",
next = "L",
},
},
}
end,
}

View File

@@ -29,6 +29,10 @@ return {
liquid = { "prettier" },
lua = { "stylua" },
python = { "isort", "black" },
c = { "clang_format" },
cpp = { "clang_format" },
cxx = { "clang_format" },
hpp = { "clang_format" },
dbml = { "dbml" }, -- DBML formatting
sql = { "sqlfluff" }, -- SQL formatting
},

View File

@@ -1,504 +0,0 @@
-- return {
-- dir = "/Users/carlos/Documents/SSD_Documents/projects/intellij.nvim",
-- dependencies = {
-- "mfussenegger/nvim-jdtls", -- Java Language Server Protocol
-- "mfussenegger/nvim-dap", -- Debug Adapter Protocol
-- "rcarriga/nvim-dap-ui", -- DAP UI components
-- "akinsho/toggleterm.nvim", -- Terminal integration
-- "nvim-telescope/telescope.nvim", -- For command palette search
-- },
-- config = function()
-- require("intellij").setup({
-- -- Theme configuration
-- theme = "inherit", -- or "light", "dark"
--
-- -- Enable verbose logging for debugging
-- verbose_logging = false,
--
-- -- Automatically toggle auto-open main file on start
-- auto_open_main_on_start = true,
--
-- -- Custom actions for your workflow
-- custom_actions = {
-- {
-- name = "Open Project in IntelliJ IDEA",
-- action = function()
-- vim.fn.system("idea .")
-- vim.notify("Opening project in IntelliJ IDEA...")
-- end
-- },
-- {
-- name = "Open in VS Code",
-- action = function()
-- vim.fn.system("code .")
-- vim.notify("Opening project in VS Code...")
-- end
-- },
-- {
-- name = "Git Status",
-- action = function()
-- require("toggleterm").exec("git status", 1, 12, "float")
-- end
-- },
-- {
-- name = "Git Log",
-- action = function()
-- require("toggleterm").exec("git log --oneline -10", 1, 12, "float")
-- end
-- }
-- },
--
-- -- Keymaps for quick access
-- keymaps = {
-- n = {
-- ["<leader>jp"] = function() require('intellij').show_palette() end,
-- ["<leader>jd"] = function() require('intellij').show_startup_diagnostics() end,
-- ["<leader>jr"] = function() require('intellij').reload() end,
-- ["<leader>jv"] = function() require('intellij').toggle_verbose_logging() end,
-- },
-- v = {
-- ["<leader>jt"] = function()
-- local start_line = vim.fn.line("'<")
-- local end_line = vim.fn.line("'>")
-- require("toggleterm").exec("mvn test -Dtest=*#" .. start_line .. "_" .. end_line, 1, 12, "float")
-- end
-- }
-- },
--
-- -- Project-specific commands based on project type
-- project_commands = function(project_type)
-- local commands = {}
--
-- if project_type == "spring-boot" then
-- table.insert(commands, {
-- name = "Spring Boot DevTools",
-- action = function()
-- require("toggleterm").exec("mvn spring-boot:run -Dspring-boot.run.profiles=dev", 1, 12, "float")
-- end
-- })
-- table.insert(commands, {
-- name = "Spring Boot Actuator Health",
-- action = function()
-- require("toggleterm").exec("curl -s http://localhost:8080/actuator/health | jq", 1, 12, "float")
-- end
-- })
-- end
--
-- if project_type == "maven" then
-- table.insert(commands, {
-- name = "Maven Dependency Tree",
-- action = function()
-- require("toggleterm").exec("mvn dependency:tree", 1, 12, "float")
-- end
-- })
-- table.insert(commands, {
-- name = "Maven Clean Install",
-- action = function()
-- require("toggleterm").exec("mvn clean install", 1, 12, "float")
-- end
-- })
-- end
--
-- if project_type == "gradle" then
-- table.insert(commands, {
-- name = "Gradle Dependencies",
-- action = function()
-- require("toggleterm").exec("./gradlew dependencies", 1, 12, "float")
-- end
-- })
-- table.insert(commands, {
-- name = "Gradle Clean Build",
-- action = function()
-- require("toggleterm").exec("./gradlew clean build", 1, 12, "float")
-- end
-- })
-- end
--
-- return commands
-- end
-- })
--
-- -- Register hooks for additional functionality
-- require("intellij").register_hook("actions", function(project_type)
-- local hooks = {}
--
-- -- Add recent files action
-- table.insert(hooks, {
-- name = "Recent Java Files",
-- action = function()
-- local recent_files = require("intellij").get_recent_java_files()
-- if #recent_files > 0 then
-- vim.ui.select(recent_files, { prompt = "Recent Java Files:" }, function(choice)
-- if choice then
-- local ok, _ = pcall(vim.cmd, "edit " .. choice)
-- if not ok then
-- vim.notify("Could not open file: " .. choice, vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end
-- end)
-- else
-- vim.notify("No recent Java files found")
-- end
-- end
-- })
--
-- return hooks
-- end)
--
-- -- AUTOMATIC JAVA PROJECT DETECTION AND STARTUP
-- local function find_main_java_files()
-- local actions = require("intellij.actions")
-- local configs = actions.get_run_configs()
-- return configs and configs.mains or {}
-- end
--
-- local function is_main_file_open()
-- local current_file = vim.api.nvim_buf_get_name(0)
-- local main_files = find_main_java_files()
--
-- for _, main_file in ipairs(main_files) do
-- if current_file:match(main_file:gsub("%.", "/") .. "%.java$") then
-- return true
-- end
-- end
-- return false
-- end
--
-- local function open_first_main_file()
-- local main_files = find_main_java_files()
--
-- if #main_files > 0 then
-- -- Try to find the main file in the project
-- local project_root = vim.loop.cwd()
-- local found_file = nil
--
-- -- Debug: show what we're looking for
-- vim.notify("Looking for main files: " .. table.concat(main_files, ", "), vim.log.levels.INFO, { title = "intellij.nvim" })
--
-- for _, main_class in ipairs(main_files) do
-- local file_path
-- if main_class:match("%.java$") then
-- file_path = main_class:gsub("^%./", "")
-- else
-- file_path = main_class:gsub("%.", "/") .. ".java"
-- end
--
-- local possible_paths = {
-- project_root .. "/" .. file_path,
-- project_root .. "/src/main/java/" .. file_path,
-- project_root .. "/src/java/" .. file_path,
-- project_root .. "/src/" .. file_path,
-- project_root .. "/app/src/main/java/" .. file_path,
-- project_root .. "/main/java/" .. file_path,
-- }
--
-- for _, full_path in ipairs(possible_paths) do
-- if vim.fn.filereadable(full_path) == 1 then
-- found_file = full_path
-- vim.notify("Found main file at: " .. full_path, vim.log.levels.INFO, { title = "intellij.nvim" })
-- break
-- end
-- end
--
-- if found_file then
-- break
-- end
-- end
--
-- if found_file then
-- local ok, _ = pcall(vim.cmd, "edit " .. found_file)
-- if ok then
-- vim.notify("Opened main file: " .. found_file, vim.log.levels.INFO, { title = "intellij.nvim" })
-- else
-- vim.notify("Could not open main file: " .. found_file, vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- return true
-- else
-- -- Use telescope for better selection if available
-- local function select_with_telescope(items, prompt, cb)
-- local ok, telescope = pcall(require, 'telescope.builtin')
-- if ok then
-- telescope.find_files({
-- prompt_title = prompt,
-- find_command = { 'echo', table.concat(items, '\n') },
-- attach_mappings = function(_, map)
-- require('telescope.actions').select_default:replace(function()
-- local entry = require('telescope.actions.state').get_selected_entry()
-- cb(entry.value)
-- require('telescope.actions').close(_)
-- end)
-- return true
-- end,
-- })
-- else
-- vim.ui.select(items, { prompt = prompt }, cb)
-- end
-- end
--
-- vim.notify("Could not automatically find main files. Showing selection dialog.", vim.log.levels.WARN, { title = "intellij.nvim" })
-- select_with_telescope(main_files, "Select main class to open:", function(choice)
-- if choice then
-- local file_path
-- if choice:match("%.java$") then
-- file_path = choice:gsub("^%./", "")
-- else
-- file_path = choice:gsub("%.", "/") .. ".java"
-- end
--
-- local possible_paths = {
-- project_root .. "/" .. file_path,
-- project_root .. "/src/main/java/" .. file_path,
-- project_root .. "/src/java/" .. file_path,
-- project_root .. "/src/" .. file_path,
-- project_root .. "/app/src/main/java/" .. file_path,
-- project_root .. "/main/java/" .. file_path,
-- }
--
-- local found = false
-- for _, full_path in ipairs(possible_paths) do
-- if vim.fn.filereadable(full_path) == 1 then
-- local ok, _ = pcall(vim.cmd, "edit " .. full_path)
-- if ok then
-- vim.notify("Opened main file: " .. full_path, vim.log.levels.INFO, { title = "intellij.nvim" })
-- else
-- vim.notify("Could not open main file: " .. full_path, vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- found = true
-- break
-- end
-- end
--
-- if not found then
-- vim.notify("Could not find main file for: " .. choice .. "\nTried paths:\n" .. table.concat(possible_paths, "\n"), vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end
-- end)
-- return true
-- end
-- else
-- vim.notify("No main files found in project", vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- return false
-- end
--
-- local function detect_and_start_java_project()
-- -- Prevent duplicate detection
-- if vim.b.java_project_detected then
-- return true
-- end
--
-- local actions = require("intellij.actions")
-- local project_type = actions.detect_project_type()
--
-- if project_type then
-- -- Store project info in buffer variables
-- vim.b.java_project_type = project_type
-- vim.b.java_project_detected = true
--
-- -- Get JDK and environment info
-- local jdk_info = actions.get_jdk_info()
-- local env_info = actions.get_env_info()
--
-- -- Show project detection notification (only once)
-- local jdk_version = jdk_info and jdk_info.jdk_version or "unknown"
-- vim.notify(
-- string.format("Java project detected: %s (JDK: %s)", project_type, jdk_version),
-- vim.log.levels.INFO,
-- { title = "intellij.nvim", timeout = 3000 }
-- )
--
-- -- Auto-start Java LSP if available (only if not already started)
-- if pcall(require, 'jdtls') and not vim.lsp.get_active_clients({ name = 'jdtls' })[1] then
-- vim.defer_fn(function()
-- -- Try to start LSP safely with error handling
-- local ok, result = pcall(vim.cmd, "LspStart jdtls")
-- if ok then
-- vim.notify("Java LSP started", vim.log.levels.INFO, { title = "intellij.nvim" })
--
-- -- Add error handler for LSP semantic tokens issues
-- vim.api.nvim_create_autocmd("LspAttach", {
-- callback = function(args)
-- local client = vim.lsp.get_client_by_id(args.data.client_id)
-- if client and client.name == "jdtls" then
-- -- Disable semantic tokens if they cause issues
-- client.server_capabilities.semanticTokensProvider = nil
-- end
-- end,
-- })
-- else
-- vim.notify("Java LSP could not be started automatically", vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end, 1000)
-- end
--
-- -- Auto-compile project on detection (optional)
-- if vim.g.auto_compile_java_projects then
-- vim.defer_fn(function()
-- if project_type == "maven" then
-- require("toggleterm").exec("mvn compile", 1, 12, "float")
-- elseif project_type == "gradle" then
-- require("toggleterm").exec("./gradlew compileJava", 1, 12, "float")
-- end
-- end, 2000)
-- end
--
-- -- Auto-open main file if not already open
-- if vim.g.auto_open_main_file and not is_main_file_open() then
-- vim.defer_fn(function()
-- open_first_main_file()
-- end, 1500)
-- end
--
-- return true
-- end
-- return false
-- end
--
-- -- Set up autocommands for automatic detection (with debouncing)
-- local detection_timer = nil
--
-- local function debounced_detection()
-- if detection_timer then
-- vim.loop.timer_stop(detection_timer)
-- end
-- detection_timer = vim.defer_fn(detect_and_start_java_project, 100)
-- end
--
-- vim.api.nvim_create_autocmd("FileType", {
-- pattern = { "java" },
-- callback = function()
-- -- Auto-detect project type when opening Java files
-- debounced_detection()
-- end
-- })
--
-- -- Auto-detect when entering directories with Java project files
-- vim.api.nvim_create_autocmd("DirChanged", {
-- pattern = "*",
-- callback = function()
-- -- Check if we're in a Java project directory
-- if vim.fn.filereadable("pom.xml") == 1 or
-- vim.fn.filereadable("build.gradle") == 1 or
-- vim.fn.filereadable("build.gradle.kts") == 1 then
-- debounced_detection()
-- end
-- end
-- })
--
-- -- Auto-detect when opening files in Java project directories
-- vim.api.nvim_create_autocmd("BufRead", {
-- pattern = "*",
-- callback = function()
-- local cwd = vim.loop.cwd()
-- if cwd and (vim.fn.filereadable(cwd .. "/pom.xml") == 1 or
-- vim.fn.filereadable(cwd .. "/build.gradle") == 1 or
-- vim.fn.filereadable(cwd .. "/build.gradle.kts") == 1) then
-- debounced_detection()
-- end
-- end
-- })
--
-- -- Auto-detect when VimEnter (when Neovim starts)
-- vim.api.nvim_create_autocmd("VimEnter", {
-- pattern = "*",
-- callback = function()
-- -- Check if we started in a Java project directory
-- local cwd = vim.loop.cwd()
-- if cwd and (vim.fn.filereadable(cwd .. "/pom.xml") == 1 or
-- vim.fn.filereadable(cwd .. "/build.gradle") == 1 or
-- vim.fn.filereadable(cwd .. "/build.gradle.kts") == 1) then
-- vim.defer_fn(detect_and_start_java_project, 500)
-- end
-- end
-- })
--
-- -- Global variable to control auto-compilation
-- vim.g.auto_compile_java_projects = true
--
-- -- Global variable to control auto-opening main files
-- vim.g.auto_open_main_file = true
--
-- -- Add command to toggle auto-compilation
-- vim.api.nvim_create_user_command("ToggleJavaAutoCompile", function()
-- vim.g.auto_compile_java_projects = not vim.g.auto_compile_java_projects
-- vim.notify(
-- "Java auto-compilation " .. (vim.g.auto_compile_java_projects and "enabled" or "disabled"),
-- vim.log.levels.INFO,
-- { title = "intellij.nvim" }
-- )
-- end, {})
--
-- -- Add command to clean up cache and temporary files
-- vim.api.nvim_create_user_command("IntelliJCleanup", function()
-- require("intellij").cleanup()
-- end, {})
--
-- -- Add command to toggle auto-opening main files
-- vim.api.nvim_create_user_command("ToggleJavaAutoOpenMain", function()
-- vim.g.auto_open_main_file = not vim.g.auto_open_main_file
-- vim.notify(
-- "Java auto-open main file " .. (vim.g.auto_open_main_file and "enabled" or "disabled"),
-- vim.log.levels.INFO,
-- { title = "intellij.nvim" }
-- )
-- end, {})
--
-- -- Add command to manually open main file
-- vim.api.nvim_create_user_command("OpenJavaMainFile", function()
-- if open_first_main_file() then
-- vim.notify("Main file opened", vim.log.levels.INFO, { title = "intellij.nvim" })
-- else
-- vim.notify("No main file found in current project", vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end, {})
--
-- -- Add command to debug file search
-- vim.api.nvim_create_user_command("DebugJavaFileSearch", function()
-- local actions = require("intellij.actions")
-- local configs = actions.get_run_configs()
--
-- vim.notify("=== Java File Search Debug ===", vim.log.levels.INFO, { title = "intellij.nvim" })
-- vim.notify("Project root: " .. vim.loop.cwd(), vim.log.levels.INFO, { title = "intellij.nvim" })
--
-- if configs and configs.mains then
-- vim.notify("Found main classes: " .. table.concat(configs.mains, ", "), vim.log.levels.INFO, { title = "intellij.nvim" })
--
-- for _, main_class in ipairs(configs.mains) do
-- local file_path = main_class:gsub("%.", "/") .. ".java"
-- local project_root = vim.loop.cwd()
--
-- local possible_paths = {
-- project_root .. "/src/main/java/" .. file_path,
-- project_root .. "/src/java/" .. file_path,
-- project_root .. "/src/" .. file_path,
-- project_root .. "/" .. file_path,
-- project_root .. "/app/src/main/java/" .. file_path,
-- project_root .. "/main/java/" .. file_path,
-- }
--
-- vim.notify("Searching for: " .. main_class, vim.log.levels.INFO, { title = "intellij.nvim" })
-- for _, path in ipairs(possible_paths) do
-- local exists = vim.fn.filereadable(path) == 1
-- vim.notify(" " .. path .. " -> " .. (exists and "EXISTS" or "NOT FOUND"), vim.log.levels.INFO, { title = "intellij.nvim" })
-- end
-- end
-- else
-- vim.notify("No main classes found", vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end, {})
--
-- -- Add command to manually detect Java project
-- vim.api.nvim_create_user_command("DetectJavaProject", function()
-- if detect_and_start_java_project() then
-- vim.notify("Java project detection completed", vim.log.levels.INFO, { title = "intellij.nvim" })
-- else
-- vim.notify("No Java project detected in current directory", vim.log.levels.WARN, { title = "intellij.nvim" })
-- end
-- end, {})
--
-- -- Check for config flag to auto-toggle main file opening
-- if type(require("intellij").opts) == "table" and require("intellij").opts.auto_open_main_on_start then
-- vim.g.auto_open_main_file = true
-- end
-- end
-- }

View File

@@ -1 +1,11 @@
return { "wakatime/vim-wakatime", lazy = false }
return {
"wakatime/vim-wakatime",
lazy = false,
config = function()
-- WakaTime performance optimizations
vim.g.wakatime_HeartbeatFrequency = 2 -- Increase from default 1 minute to 2 minutes
vim.g.wakatime_buffering_heartbeats_enabled = 1 -- Enable buffering
vim.g.wakatime_debug = 0 -- Disable debug mode for performance
vim.g.wakatime_redraw_setting = 'auto' -- Auto redraw setting
end,
}