Compare commits
4 Commits
9638b5346d
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
795bc802b3 | ||
|
|
fa6c35ff1e | ||
|
|
1c3558380e | ||
|
|
bf573ef961 |
25
.gitignore
vendored
25
.gitignore
vendored
@@ -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
|
||||
|
||||
208
NVIM_PERFORMANCE_ANALYSIS.md
Normal file
208
NVIM_PERFORMANCE_ANALYSIS.md
Normal 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*
|
||||
609
checkhealth.log
609
checkhealth.log
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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" })
|
||||
|
||||
@@ -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" })
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)" })
|
||||
|
||||
@@ -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" })
|
||||
|
||||
@@ -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" })
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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,
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
-- }
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
44
lua/cargdev/plugins/curls.lua
Normal file
44
lua/cargdev/plugins/curls.lua
Normal 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,
|
||||
}
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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
|
||||
-- }
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user