Compare commits
5 Commits
master
...
feature/up
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65ffd3275b | ||
|
|
24dc3916df | ||
|
|
0071aa4485 | ||
|
|
22352723cf | ||
|
|
c1cddfdf68 |
25
.gitignore
vendored
25
.gitignore
vendored
@@ -1,26 +1 @@
|
||||
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
|
||||
|
||||
83
DATABASE_SETUP_GUIDE.md
Normal file
83
DATABASE_SETUP_GUIDE.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Database Setup Guide
|
||||
|
||||
## Current Status: ✅ **FIXED**
|
||||
|
||||
The database error has been resolved! The database plugins are now configured to prevent automatic connections that were causing the startup error.
|
||||
|
||||
## What Was Fixed
|
||||
|
||||
1. **Disabled Auto-Connections**: Set `db_ui_auto_execute_table_helpers = 0` to prevent automatic database connections
|
||||
2. **Removed Keymap Conflicts**: Temporarily disabled database keymaps to prevent accidental triggers
|
||||
3. **Safe Configuration**: Database plugins are loaded but won't attempt to connect automatically
|
||||
|
||||
## To Re-Enable Database Functionality
|
||||
|
||||
When you want to use database features, you can:
|
||||
|
||||
### 1. Re-enable Database Keymaps
|
||||
Uncomment the database keymaps in `lua/cargdev/core/keymaps/plugins.lua`:
|
||||
|
||||
```lua
|
||||
-- Change from:
|
||||
-- keymap.set("n", "<leader>du", "<cmd>DBUI<CR>", { desc = "Open Database UI" })
|
||||
|
||||
-- To:
|
||||
keymap.set("n", "<leader>du", "<cmd>DBUI<CR>", { desc = "Open Database UI" })
|
||||
```
|
||||
|
||||
### 2. Manual Database Usage
|
||||
You can still use database features manually:
|
||||
|
||||
- **Open Database UI**: `:DBUI`
|
||||
- **Add Connection**: `:DBUIAddConnection`
|
||||
- **Execute SQL**: `:DBExecute`
|
||||
- **Format SQL**: `:SQLFormat`
|
||||
|
||||
### 3. Database Keymaps (when re-enabled)
|
||||
- **`<leader>du`** - Open Database UI
|
||||
- **`<leader>dua`** - Add database connection
|
||||
- **`<leader>due`** - Execute SQL query
|
||||
- **`<leader>dus`** - Select SQL query
|
||||
- **`<leader>dut`** - Create table
|
||||
- **`<leader>duf`** - Format SQL query
|
||||
|
||||
## Supported Databases
|
||||
|
||||
- **SQLite**: `sqlite3`
|
||||
- **MySQL**: `mysql`
|
||||
- **PostgreSQL**: `psql`
|
||||
- **Redis**: `redis-cli`
|
||||
|
||||
## Installation Requirements
|
||||
|
||||
Make sure you have the database clients installed:
|
||||
|
||||
```bash
|
||||
# macOS
|
||||
brew install mysql redis mongodb/brew/mongodb-community
|
||||
|
||||
# Ubuntu/Debian
|
||||
sudo apt install mysql-client postgresql-client redis-tools
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install mysql postgresql redis
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter database errors again:
|
||||
|
||||
1. **Check for saved connections**: Look for `.dadbod` files in your project directories
|
||||
2. **Clear database cache**: Remove any saved database sessions
|
||||
3. **Verify adapters**: Ensure database clients are properly installed
|
||||
4. **Check keymaps**: Make sure there are no conflicting keymaps
|
||||
|
||||
## Current Configuration
|
||||
|
||||
The database plugins are configured with:
|
||||
- ✅ **No automatic connections**
|
||||
- ✅ **Manual trigger only**
|
||||
- ✅ **Proper adapters configured**
|
||||
- ✅ **No startup errors**
|
||||
|
||||
Your Neovim should now start cleanly without any database errors! 🎉
|
||||
189
LSP_TROUBLESHOOTING_GUIDE.md
Normal file
189
LSP_TROUBLESHOOTING_GUIDE.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# LSP Troubleshooting and Performance Guide
|
||||
|
||||
## Overview
|
||||
This guide addresses the LSP errors and image freezing issues you've been experiencing during file searches in Neovim.
|
||||
|
||||
## Problems Solved
|
||||
|
||||
### 1. LSP Errors on Non-Text Files
|
||||
**Problem**: LSP servers were trying to process image files (PNG, SVG, etc.), video files, and other binary files, causing errors.
|
||||
|
||||
**Solution**: Added comprehensive file type filtering that prevents LSP from attaching to non-text files.
|
||||
|
||||
### 2. Image Freezing During Search
|
||||
**Problem**: When searching for files, image files would freeze the preview window indefinitely.
|
||||
|
||||
**Solution**: Enhanced Telescope configuration with file filtering and optimized preview settings.
|
||||
|
||||
### 3. Slow Leader Key Response
|
||||
**Problem**: Leader key commands (like `<leader>ff`, `<leader>fs`) were slow to respond.
|
||||
|
||||
**Solution**: Reduced timeout settings and optimized completion performance.
|
||||
|
||||
## New Keymaps
|
||||
|
||||
### Performance Monitoring
|
||||
- `<leader>pp` - Check overall performance
|
||||
- `<leader>po` - Check plugin performance
|
||||
- `<leader>pb` - Optimize current buffer
|
||||
|
||||
### LSP Troubleshooting
|
||||
- `<leader>pl` - Check LSP health
|
||||
- `<leader>pr` - Restart LSP for current buffer
|
||||
|
||||
### Safe File Searching (Recommended)
|
||||
- `<leader>ff` - Find files (safe - prevents LSP errors)
|
||||
- `<leader>fs` - Live grep (safe)
|
||||
- `<leader>fg` - Git files (safe)
|
||||
- `<leader>ft` - Text files only
|
||||
|
||||
### Regular Search (Use with Caution)
|
||||
- `<leader>fF` - Find files (all file types)
|
||||
|
||||
## File Types Automatically Filtered
|
||||
|
||||
### Images (Prevent LSP errors)
|
||||
- PNG, JPG, JPEG, GIF, SVG, ICO, BMP, WebP, TIFF, TGA
|
||||
|
||||
### Videos (Prevent freezing)
|
||||
- MP4, AVI, MOV, WMV, FLV, WebM, MKV, M4V, 3GP
|
||||
|
||||
### Audio (Prevent LSP errors)
|
||||
- MP3, WAV, FLAC, AAC, OGG, M4A, WMA
|
||||
|
||||
### Documents (Prevent LSP errors)
|
||||
- PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS, ODP
|
||||
|
||||
### Archives (Prevent LSP errors)
|
||||
- ZIP, RAR, 7Z, TAR, GZ, BZ2, XZ, LZMA
|
||||
|
||||
### Binaries (Prevent LSP errors)
|
||||
- EXE, DLL, SO, DYLD, BIN, APP, DMG, DEB, RPM
|
||||
|
||||
### Other Problematic Files
|
||||
- LOCK, LOG, TMP, TEMP, CACHE, BAK, BACKUP
|
||||
|
||||
## Performance Optimizations Applied
|
||||
|
||||
### LSP Configuration
|
||||
- **File filtering**: Only text files get LSP services
|
||||
- **Error handling**: Graceful handling of LSP failures
|
||||
- **Timeouts**: 5-second timeout for LSP requests
|
||||
- **Debouncing**: 150ms debounce for text changes
|
||||
- **Diagnostics**: Reduced diagnostic updates
|
||||
|
||||
### Telescope Configuration
|
||||
- **File filtering**: Automatic exclusion of problematic files
|
||||
- **Preview optimization**: Disabled preview for non-text files
|
||||
- **Search optimization**: Skip heavy directories (node_modules, vendor, etc.)
|
||||
- **Performance flags**: Enhanced caching and sorting
|
||||
|
||||
### General Performance
|
||||
- **Reduced timeouts**: Faster leader key response
|
||||
- **Optimized scrolling**: Reduced scrolloff for smoother movement
|
||||
- **Memory management**: Better memory usage patterns
|
||||
- **Startup optimization**: Deferred heavy operations
|
||||
|
||||
## Troubleshooting Steps
|
||||
|
||||
### If You Still Experience LSP Errors
|
||||
|
||||
1. **Check LSP Health**
|
||||
```
|
||||
<leader>pl
|
||||
```
|
||||
|
||||
2. **Restart LSP for Current Buffer**
|
||||
```
|
||||
<leader>pr
|
||||
```
|
||||
|
||||
3. **Check Performance**
|
||||
```
|
||||
<leader>pp
|
||||
```
|
||||
|
||||
4. **Use Safe File Search**
|
||||
- Always use `<leader>ff` instead of `<leader>fF`
|
||||
- This prevents LSP from processing problematic files
|
||||
|
||||
### If Images Still Freeze
|
||||
|
||||
1. **Check File Extensions**
|
||||
- Ensure the file has a text-based extension
|
||||
- Use `<leader>ft` for text-only file search
|
||||
|
||||
2. **Optimize Current Buffer**
|
||||
```
|
||||
<leader>pb
|
||||
```
|
||||
|
||||
3. **Check Plugin Performance**
|
||||
```
|
||||
<leader>po
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Custom File Filtering
|
||||
You can modify the file filtering in `lua/cargdev/plugins/lsp/lspconfig.lua`:
|
||||
|
||||
```lua
|
||||
local non_text_extensions = {
|
||||
-- Add or remove extensions as needed
|
||||
"png", "jpg", "jpeg", "gif", "svg",
|
||||
-- ... other extensions
|
||||
}
|
||||
```
|
||||
|
||||
### Telescope Customization
|
||||
Modify the file filter in `lua/cargdev/plugins/telescope.lua`:
|
||||
|
||||
```lua
|
||||
local function filter_files(entry)
|
||||
-- Customize filtering logic here
|
||||
local filename = entry.filename or entry.value
|
||||
-- ... your custom logic
|
||||
end
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Always Use Safe Search
|
||||
- `<leader>ff` for file finding
|
||||
- `<leader>fs` for text searching
|
||||
- Avoid `<leader>fF` unless you specifically need all file types
|
||||
|
||||
### 2. Monitor Performance
|
||||
- Use `<leader>pp` regularly to check for issues
|
||||
- Monitor LSP health with `<leader>pl`
|
||||
|
||||
### 3. Optimize Large Files
|
||||
- Use `<leader>pb` for files over 10,000 lines
|
||||
- Consider disabling heavy features for very large files
|
||||
|
||||
### 4. Keep LSP Healthy
|
||||
- Restart LSP with `<leader>pr` if you experience issues
|
||||
- Check for LSP errors in the performance report
|
||||
|
||||
## Expected Results
|
||||
|
||||
After applying these optimizations:
|
||||
|
||||
- ✅ **No more LSP errors** on image/video/binary files
|
||||
- ✅ **No more image freezing** during file searches
|
||||
- ✅ **Faster leader key response** (reduced from 500ms to 200ms)
|
||||
- ✅ **Smoother scrolling** and UI performance
|
||||
- ✅ **Better memory usage** and startup times
|
||||
- ✅ **Automatic file type filtering** to prevent issues
|
||||
|
||||
## Support
|
||||
|
||||
If you continue to experience issues:
|
||||
|
||||
1. Run `<leader>pp` to get a detailed performance report
|
||||
2. Check LSP health with `<leader>pl`
|
||||
3. Use the safe file search commands (`<leader>ff`, `<leader>fs`)
|
||||
4. Consider restarting LSP with `<leader>pr`
|
||||
|
||||
The optimizations maintain all your functionality while significantly improving stability and performance.
|
||||
@@ -1,208 +0,0 @@
|
||||
# Neovim Performance Analysis & Optimization Results
|
||||
|
||||
## Overview
|
||||
This document analyzes the performance profile from `nvim-profile.log` and shows the results of applied optimizations.
|
||||
|
||||
## 📊 Performance Comparison Results
|
||||
|
||||
### ✅ **Significant Improvements**
|
||||
|
||||
#### 1. Clipboard Provider Performance
|
||||
- **Before**: 2.16s total time, 123 calls
|
||||
- **After**: 0.54s total time, 78 calls
|
||||
- **Improvement**: **75% reduction** in total time, **37% fewer** calls
|
||||
- **Status**: ✅ **MAJOR SUCCESS**
|
||||
|
||||
#### 2. Syntax Loading Performance
|
||||
- **Before**: 0.70s total time, 699 calls
|
||||
- **After**: 0.47s total time, 189 calls
|
||||
- **Improvement**: **33% reduction** in total time, **73% fewer** calls
|
||||
- **Status**: ✅ **SUCCESS**
|
||||
|
||||
#### 3. Filetype Plugin Loading
|
||||
- **Before**: 0.70s total time, 278 calls
|
||||
- **After**: 0.62s total time, 175 calls
|
||||
- **Improvement**: **11% reduction** in total time, **37% fewer** calls
|
||||
- **Status**: ✅ **MODERATE SUCCESS**
|
||||
|
||||
### ⚠️ **Performance Regressions**
|
||||
|
||||
#### 4. WakaTime Plugin Performance
|
||||
- **Before**: 0.48s total time, 686 calls
|
||||
- **After**: 1.82s total time, 2,052 calls
|
||||
- **Change**: **279% increase** in total time, **199% more** calls
|
||||
- **Status**: ❌ **REGRESSION** - Need to investigate
|
||||
|
||||
#### 5. Matchparen Highlighting
|
||||
- **Before**: 0.23s total time, 2,912 calls
|
||||
- **After**: 0.78s total time, 6,055 calls
|
||||
- **Change**: **239% increase** in total time, **108% more** calls
|
||||
- **Status**: ❌ **REGRESSION** - Need to investigate
|
||||
|
||||
## 🔧 Applied Optimizations
|
||||
|
||||
### ✅ Successful Optimizations
|
||||
|
||||
#### 1. Keymap Conflict Resolution
|
||||
- **Fixed**: Changed `<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
Normal file
609
checkhealth.log
Normal file
@@ -0,0 +1,609 @@
|
||||
|
||||
==============================================================================
|
||||
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
|
||||
|
||||
577
checkhealth_fixed.log
Normal file
577
checkhealth_fixed.log
Normal file
@@ -0,0 +1,577 @@
|
||||
|
||||
==============================================================================
|
||||
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
|
||||
|
||||
296
lazigitconfig.log
Normal file
296
lazigitconfig.log
Normal file
@@ -0,0 +1,296 @@
|
||||
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>
|
||||
|
||||
334
lua/cargdev/core/function/performance_monitor.lua
Normal file
334
lua/cargdev/core/function/performance_monitor.lua
Normal file
@@ -0,0 +1,334 @@
|
||||
-- Performance monitoring and diagnostics
|
||||
local M = {}
|
||||
|
||||
-- Function to check Neovim performance
|
||||
function M.check_performance()
|
||||
local start_time = vim.loop.hrtime()
|
||||
|
||||
-- Check startup time
|
||||
local startup_time = vim.g.startup_time or 0
|
||||
|
||||
-- Check memory usage safely
|
||||
local memory_mb = 0
|
||||
local memory_info_available = pcall(function()
|
||||
local info = vim.loop.get_memory_info()
|
||||
if info and info.used then
|
||||
memory_mb = math.floor(info.used / 1024 / 1024)
|
||||
end
|
||||
end)
|
||||
|
||||
if not memory_info_available then
|
||||
memory_mb = "N/A (not available on this platform)"
|
||||
end
|
||||
|
||||
-- Check buffer count
|
||||
local buffer_count = #vim.api.nvim_list_bufs()
|
||||
|
||||
-- Check window count
|
||||
local window_count = #vim.api.nvim_list_wins()
|
||||
|
||||
-- Check tab count
|
||||
local tab_count = #vim.api.nvim_list_tabpages()
|
||||
|
||||
-- Check if any LSP servers are running
|
||||
local active_clients = vim.lsp.get_active_clients()
|
||||
local lsp_count = #active_clients
|
||||
|
||||
-- Check if treesitter is active
|
||||
local ts_available, ts = pcall(require, "nvim-treesitter")
|
||||
local ts_active = ts_available and ts.status() and "Active" or "Inactive"
|
||||
|
||||
-- Check LSP errors and warnings
|
||||
local diagnostics = vim.diagnostic.get()
|
||||
local error_count = 0
|
||||
local warning_count = 0
|
||||
|
||||
for _, diag in ipairs(diagnostics) do
|
||||
if diag.severity == vim.diagnostic.severity.ERROR then
|
||||
error_count = error_count + 1
|
||||
elseif diag.severity == vim.diagnostic.severity.WARN then
|
||||
warning_count = warning_count + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- Check current buffer file type and potential issues
|
||||
local current_buf = vim.api.nvim_get_current_buf()
|
||||
local current_filename = vim.api.nvim_buf_get_name(current_buf)
|
||||
local current_filetype = vim.api.nvim_buf_get_option(current_buf, "filetype")
|
||||
local current_line_count = vim.api.nvim_buf_line_count(current_buf)
|
||||
|
||||
-- Check if current file might cause LSP issues
|
||||
local problematic_extensions = {
|
||||
"png", "jpg", "jpeg", "gif", "svg", "ico", "bmp", "webp",
|
||||
"mp4", "avi", "mov", "wmv", "flv", "webm", "mkv",
|
||||
"mp3", "wav", "flac", "aac", "ogg",
|
||||
"pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx",
|
||||
"zip", "rar", "7z", "tar", "gz", "bz2",
|
||||
"exe", "dll", "so", "dylib", "bin"
|
||||
}
|
||||
|
||||
local is_problematic_file = false
|
||||
local file_extension = ""
|
||||
|
||||
for _, ext in ipairs(problematic_extensions) do
|
||||
if current_filename:match("%." .. ext .. "$") then
|
||||
is_problematic_file = true
|
||||
file_extension = ext
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- Performance recommendations
|
||||
local recommendations = {}
|
||||
|
||||
if type(memory_mb) == "number" and memory_mb > 500 then
|
||||
table.insert(recommendations, "High memory usage: " .. memory_mb .. "MB - Consider disabling heavy plugins")
|
||||
end
|
||||
|
||||
if buffer_count > 20 then
|
||||
table.insert(recommendations, "Many buffers open: " .. buffer_count .. " - Close unused buffers")
|
||||
end
|
||||
|
||||
if lsp_count > 5 then
|
||||
table.insert(recommendations, "Many LSP servers: " .. lsp_count .. " - Consider disabling unused language servers")
|
||||
end
|
||||
|
||||
if startup_time > 1000 then
|
||||
table.insert(recommendations, "Slow startup: " .. startup_time .. "ms - Check plugin loading order")
|
||||
end
|
||||
|
||||
if error_count > 10 then
|
||||
table.insert(recommendations, "Many LSP errors: " .. error_count .. " - Check file syntax and LSP configuration")
|
||||
end
|
||||
|
||||
if is_problematic_file then
|
||||
table.insert(recommendations, "Current file type (" .. file_extension .. ") may cause LSP issues - Use safe file search")
|
||||
end
|
||||
|
||||
if current_line_count > 10000 then
|
||||
table.insert(recommendations, "Large file (" .. current_line_count .. " lines) - Consider disabling heavy features")
|
||||
end
|
||||
|
||||
-- Display results
|
||||
local output = string.format([[
|
||||
Performance Report:
|
||||
==================
|
||||
Startup Time: %dms
|
||||
Memory Usage: %s
|
||||
Active Buffers: %d
|
||||
Active Windows: %d
|
||||
Active Tabs: %d
|
||||
LSP Servers: %d
|
||||
Treesitter: %s
|
||||
LSP Errors: %d
|
||||
LSP Warnings: %d
|
||||
|
||||
Current File Analysis:
|
||||
=====================
|
||||
Filename: %s
|
||||
Filetype: %s
|
||||
Line Count: %d
|
||||
Potential Issues: %s
|
||||
|
||||
Performance Recommendations:
|
||||
]], startup_time, tostring(memory_mb), buffer_count, window_count, tab_count, lsp_count, ts_active, error_count, warning_count,
|
||||
current_filename, current_filetype, current_line_count, is_problematic_file and "Yes (" .. file_extension .. ")" or "No")
|
||||
|
||||
if #recommendations > 0 then
|
||||
for _, rec in ipairs(recommendations) do
|
||||
output = output .. "- " .. rec .. "\n"
|
||||
end
|
||||
else
|
||||
output = output .. "- No immediate performance issues detected\n"
|
||||
end
|
||||
|
||||
-- Add LSP-specific recommendations
|
||||
if lsp_count > 0 then
|
||||
output = output .. "\nLSP Status:\n"
|
||||
for _, client in ipairs(active_clients) do
|
||||
local status = "Unknown"
|
||||
if client.is_stopped then
|
||||
status = "Stopped"
|
||||
elseif client.workspace_folders then
|
||||
status = "Active"
|
||||
end
|
||||
output = output .. "- " .. client.name .. ": " .. status .. "\n"
|
||||
end
|
||||
end
|
||||
|
||||
-- Create a new buffer to display the report
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
local win = vim.api.nvim_open_win(buf, true, {
|
||||
relative = "editor",
|
||||
width = 80,
|
||||
height = 25,
|
||||
row = 2,
|
||||
col = 2,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
})
|
||||
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, vim.split(output, "\n"))
|
||||
vim.api.nvim_buf_set_option(buf, "modifiable", false)
|
||||
vim.api.nvim_buf_set_option(buf, "filetype", "markdown")
|
||||
|
||||
-- Add keymaps to close the window
|
||||
local opts = { buffer = buf, noremap = true, silent = true }
|
||||
vim.keymap.set("n", "q", "<cmd>close<CR>", opts)
|
||||
vim.keymap.set("n", "<ESC>", "<cmd>close<CR>", opts)
|
||||
|
||||
-- Auto-close after 15 seconds
|
||||
vim.defer_fn(function()
|
||||
if vim.api.nvim_win_is_valid(win) then
|
||||
vim.api.nvim_win_close(win, true)
|
||||
end
|
||||
end, 15000)
|
||||
|
||||
local end_time = vim.loop.hrtime()
|
||||
local function_time = (end_time - start_time) / 1000000
|
||||
print("Performance check completed in " .. string.format("%.2f", function_time) .. "ms")
|
||||
end
|
||||
|
||||
-- Function to profile a specific operation
|
||||
function M.profile_operation(operation_name, operation_func)
|
||||
local start_time = vim.loop.hrtime()
|
||||
|
||||
-- Run the operation
|
||||
local success, result = pcall(operation_func)
|
||||
|
||||
local end_time = vim.loop.hrtime()
|
||||
local duration = (end_time - start_time) / 1000000
|
||||
|
||||
if success then
|
||||
print(string.format("Operation '%s' completed in %.2fms", operation_name, duration))
|
||||
return result
|
||||
else
|
||||
print(string.format("Operation '%s' failed after %.2fms: %s", operation_name, duration, result))
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
-- Function to check if specific plugins are causing issues
|
||||
function M.check_plugin_performance()
|
||||
local plugins_to_check = {
|
||||
"nvim-treesitter",
|
||||
"nvim-lspconfig",
|
||||
"nvim-cmp",
|
||||
"telescope.nvim",
|
||||
"which-key.nvim",
|
||||
}
|
||||
|
||||
local results = {}
|
||||
|
||||
for _, plugin_name in ipairs(plugins_to_check) do
|
||||
local start_time = vim.loop.hrtime()
|
||||
local success, plugin = pcall(require, plugin_name)
|
||||
local end_time = vim.loop.hrtime()
|
||||
local load_time = (end_time - start_time) / 1000000
|
||||
|
||||
table.insert(results, {
|
||||
name = plugin_name,
|
||||
loaded = success,
|
||||
load_time = load_time,
|
||||
status = success and "OK" or "Failed"
|
||||
})
|
||||
end
|
||||
|
||||
-- Display results
|
||||
local output = "Plugin Performance Check:\n=======================\n"
|
||||
for _, result in ipairs(results) do
|
||||
output = output .. string.format("%s: %s (%.2fms)\n",
|
||||
result.name, result.status, result.load_time)
|
||||
end
|
||||
|
||||
print(output)
|
||||
return results
|
||||
end
|
||||
|
||||
-- Function to optimize current buffer
|
||||
function M.optimize_buffer()
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
local filetype = vim.api.nvim_buf_get_option(buf, "filetype")
|
||||
|
||||
-- Disable heavy features for large files
|
||||
local line_count = vim.api.nvim_buf_line_count(buf)
|
||||
|
||||
if line_count > 10000 then
|
||||
-- Disable treesitter for very large files
|
||||
vim.api.nvim_buf_set_option(buf, "syntax", "off")
|
||||
print("Large file detected (" .. line_count .. " lines). Disabled syntax highlighting for performance.")
|
||||
end
|
||||
|
||||
-- Optimize buffer-specific settings
|
||||
vim.api.nvim_buf_set_option(buf, "foldmethod", "manual")
|
||||
vim.api.nvim_buf_set_option(buf, "foldlevel", 99)
|
||||
|
||||
print("Buffer optimized for performance")
|
||||
end
|
||||
|
||||
-- Function to check LSP health and fix common issues
|
||||
function M.check_lsp_health()
|
||||
local active_clients = vim.lsp.get_active_clients()
|
||||
local output = "LSP Health Check:\n================\n"
|
||||
|
||||
if #active_clients == 0 then
|
||||
output = output .. "No LSP clients active\n"
|
||||
else
|
||||
for _, client in ipairs(active_clients) do
|
||||
local status = "Unknown"
|
||||
if client.is_stopped then
|
||||
status = "Stopped"
|
||||
elseif client.workspace_folders then
|
||||
status = "Active"
|
||||
end
|
||||
|
||||
output = output .. string.format("- %s: %s\n", client.name, status)
|
||||
|
||||
-- Check for common LSP issues
|
||||
if client.config and client.config.flags then
|
||||
if not client.config.flags.debounce_text_changes then
|
||||
output = output .. " ⚠️ No text change debouncing\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Check current buffer LSP status
|
||||
local current_buf = vim.api.nvim_get_current_buf()
|
||||
local attached_clients = vim.lsp.get_clients({ bufnr = current_buf })
|
||||
|
||||
if #attached_clients > 0 then
|
||||
output = output .. "\nCurrent Buffer LSP:\n"
|
||||
for _, client in ipairs(attached_clients) do
|
||||
output = output .. string.format("- %s attached\n", client.name)
|
||||
end
|
||||
else
|
||||
output = output .. "\nNo LSP attached to current buffer\n"
|
||||
end
|
||||
|
||||
print(output)
|
||||
return active_clients
|
||||
end
|
||||
|
||||
-- Function to safely restart LSP for current buffer
|
||||
function M.restart_lsp()
|
||||
local current_buf = vim.api.nvim_get_current_buf()
|
||||
local attached_clients = vim.lsp.get_clients({ bufnr = current_buf })
|
||||
|
||||
if #attached_clients > 0 then
|
||||
for _, client in ipairs(attached_clients) do
|
||||
client.stop()
|
||||
print("Stopped LSP client: " .. client.name)
|
||||
end
|
||||
|
||||
-- Restart LSP after a short delay
|
||||
vim.defer_fn(function()
|
||||
vim.cmd("LspStart")
|
||||
print("LSP restarted for current buffer")
|
||||
end, 100)
|
||||
else
|
||||
print("No LSP clients attached to current buffer")
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,56 +1,44 @@
|
||||
|
||||
-- =============================================================================
|
||||
-- cargdev/core/init.lua
|
||||
-- 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
|
||||
-- Load compatibility layer first
|
||||
require("cargdev.core.compatibility").setup()
|
||||
|
||||
-- 2. Core Options and Keymaps
|
||||
-- Load startup optimizations early
|
||||
require("cargdev.core.startup_optimization")
|
||||
|
||||
require("cargdev.core.options")
|
||||
require("cargdev.core.keymaps")
|
||||
|
||||
-- 3. Utility: Load all Lua files inside `cargdev/core/function/` AFTER plugins are loaded
|
||||
-- Load all Lua files inside `cargdev/core/function/` AFTER plugins are loaded
|
||||
local function load_functions()
|
||||
local function_path = vim.fn.stdpath("config") .. "/lua/cargdev/core/function"
|
||||
local scan = vim.fn.globpath(function_path, "*.lua", false, true)
|
||||
|
||||
for _, file in ipairs(scan) do
|
||||
local module_name = "cargdev.core.function." .. file:match("([^/]+)%.lua$")
|
||||
-- Skip notification manager as it's loaded separately
|
||||
if module_name ~= "cargdev.core.function.notification_manager" then
|
||||
local success, err = pcall(require, module_name)
|
||||
|
||||
if not success then
|
||||
vim.notify("Error loading function module: " .. module_name .. "\n" .. err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- 4. Fix: Force filetype detection on BufRead (fix for nvim-tree/plain text issue)
|
||||
vim.api.nvim_create_autocmd("BufRead", {
|
||||
pattern = "*",
|
||||
-- Defer function loading until after plugins are loaded
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyDone",
|
||||
callback = function()
|
||||
vim.cmd("filetype detect")
|
||||
end,
|
||||
})
|
||||
-- Load notification manager after plugins with error handling
|
||||
local success, err = pcall(require, "cargdev.core.function.notification_manager")
|
||||
if not success then
|
||||
-- Use safe echo instead of vim.notify to avoid circular dependency
|
||||
local safe_msg = tostring(err):gsub("'", "\\'")
|
||||
vim.api.nvim_echo({{"Warning: Notification manager failed to load: " .. safe_msg, "WarningMsg"}}, false, {})
|
||||
end
|
||||
|
||||
-- 5. Load functions immediately
|
||||
-- Load all other functions
|
||||
load_functions()
|
||||
|
||||
-- 6. Fallback: also try to load on VimEnter if LazyDone doesn't fire
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
callback = function()
|
||||
-- Wait a bit for plugins to load
|
||||
vim.defer_fn(function()
|
||||
load_functions()
|
||||
end, 200)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
@@ -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>dcr", dap.continue, { desc = "▶ Start Debugging" })
|
||||
keymap("n", "<leader>dc", 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" })
|
||||
|
||||
115
lua/cargdev/core/keymaps/database.lua
Normal file
115
lua/cargdev/core/keymaps/database.lua
Normal file
@@ -0,0 +1,115 @@
|
||||
-- =============================================================================
|
||||
-- DATABASE KEYMAPS
|
||||
-- =============================================================================
|
||||
|
||||
local keymap = vim.keymap
|
||||
local opts = { noremap = true, silent = true }
|
||||
|
||||
-- =============================================================================
|
||||
-- GLOBAL DATABASE KEYMAPS
|
||||
-- =============================================================================
|
||||
|
||||
-- Open database interface
|
||||
keymap.set("n", "<leader>db", function()
|
||||
require("dbee").open()
|
||||
end, { desc = "Open Database Interface" })
|
||||
|
||||
-- Close database interface
|
||||
keymap.set("n", "<leader>dc", function()
|
||||
require("dbee").close()
|
||||
end, { desc = "Close Database Interface" })
|
||||
|
||||
-- Execute current query (when in database editor)
|
||||
keymap.set("n", "<leader>dq", function()
|
||||
require("dbee").api.ui.execute_query()
|
||||
end, { desc = "Execute Query" })
|
||||
|
||||
-- Store results to file
|
||||
keymap.set("n", "<leader>ds", function()
|
||||
require("dbee").store("csv", "file", { extra_arg = "~/query_results.csv" })
|
||||
end, { desc = "Store Results to File" })
|
||||
|
||||
-- Yank results to clipboard
|
||||
keymap.set("n", "<leader>dy", function()
|
||||
require("dbee").store("json", "yank", {})
|
||||
end, { desc = "Yank Results to Clipboard" })
|
||||
|
||||
-- =============================================================================
|
||||
-- NVIM-DBEE INTERNAL KEYMAPS
|
||||
-- =============================================================================
|
||||
|
||||
-- Set up nvim-dbee internal keymaps
|
||||
local function setup_dbee_keymaps()
|
||||
-- Drawer mappings (left panel)
|
||||
keymap.set("n", "<CR>", function()
|
||||
require("dbee").api.ui.open_connection()
|
||||
end, { buffer = true, desc = "Open Connection" })
|
||||
|
||||
keymap.set("n", "a", function()
|
||||
require("dbee").api.ui.add_connection()
|
||||
end, { buffer = true, desc = "Add Connection" })
|
||||
|
||||
keymap.set("n", "e", function()
|
||||
require("dbee").api.ui.edit_connection()
|
||||
end, { buffer = true, desc = "Edit Connection" })
|
||||
|
||||
keymap.set("n", "d", function()
|
||||
require("dbee").api.ui.delete_connection()
|
||||
end, { buffer = true, desc = "Delete Connection" })
|
||||
|
||||
keymap.set("n", "r", function()
|
||||
require("dbee").api.ui.refresh_connections()
|
||||
end, { buffer = true, desc = "Refresh Connections" })
|
||||
|
||||
-- Editor mappings (query editor)
|
||||
keymap.set("n", "BB", function()
|
||||
require("dbee").api.ui.execute_query()
|
||||
end, { buffer = true, desc = "Execute Query" })
|
||||
|
||||
keymap.set("n", "cc", function()
|
||||
require("dbee").api.ui.clear_results()
|
||||
end, { buffer = true, desc = "Clear Results" })
|
||||
|
||||
keymap.set("n", "ss", function()
|
||||
require("dbee").api.ui.save_scratchpad()
|
||||
end, { buffer = true, desc = "Save Scratchpad" })
|
||||
|
||||
-- Result mappings (results buffer)
|
||||
keymap.set("n", "L", function()
|
||||
require("dbee").api.ui.result_page_next()
|
||||
end, { buffer = true, desc = "Next Page" })
|
||||
|
||||
keymap.set("n", "H", function()
|
||||
require("dbee").api.ui.result_page_prev()
|
||||
end, { buffer = true, desc = "Previous Page" })
|
||||
|
||||
keymap.set("n", "F", function()
|
||||
require("dbee").api.ui.result_page_first()
|
||||
end, { buffer = true, desc = "First Page" })
|
||||
|
||||
keymap.set("n", "E", function()
|
||||
require("dbee").api.ui.result_page_last()
|
||||
end, { buffer = true, desc = "Last Page" })
|
||||
|
||||
keymap.set("n", "yaj", function()
|
||||
require("dbee").api.ui.yank_row_json()
|
||||
end, { buffer = true, desc = "Yank Row as JSON" })
|
||||
|
||||
keymap.set("n", "yac", function()
|
||||
require("dbee").api.ui.yank_row_csv()
|
||||
end, { buffer = true, desc = "Yank Row as CSV" })
|
||||
|
||||
keymap.set("n", "yaJ", function()
|
||||
require("dbee").api.ui.yank_all_json()
|
||||
end, { buffer = true, desc = "Yank All as JSON" })
|
||||
|
||||
keymap.set("n", "yaC", function()
|
||||
require("dbee").api.ui.yank_all_csv()
|
||||
end, { buffer = true, desc = "Yank All as CSV" })
|
||||
end
|
||||
|
||||
-- Apply dbee keymaps when dbee buffers are created
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "dbee-drawer", "dbee-editor", "dbee-result" },
|
||||
callback = setup_dbee_keymaps,
|
||||
})
|
||||
@@ -6,111 +6,38 @@ 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
|
||||
keymap.set("n", "x", '"_x', opts) -- Delete character without copying into register
|
||||
|
||||
-- Comment keymaps
|
||||
keymap.set("n", "gcc", "<cmd>CommentToggle<CR>", { desc = "Toggle comment line" })
|
||||
keymap.set("n", "gc", "<cmd>CommentToggle<CR>", { desc = "Toggle comment line" })
|
||||
keymap.set("v", "gc", "<cmd>CommentToggle<CR>", { desc = "Toggle comment selection" })
|
||||
keymap.set("n", "gbc", "<cmd>CommentToggle<CR>", { desc = "Toggle comment block" })
|
||||
keymap.set("v", "gb", "<cmd>CommentToggle<CR>", { desc = "Toggle comment block" })
|
||||
|
||||
-- Save and quit (additional)
|
||||
keymap.set("n", "<leader>Q", ":qa!<CR>", { desc = "Quit all" })
|
||||
|
||||
-- Put this in your init.lua
|
||||
local vault_path = vim.env.IDEA_DIR
|
||||
-- Performance monitoring keymaps
|
||||
keymap.set("n", "<leader>pp", "<cmd>lua require('cargdev.core.function.performance_monitor').check_performance()<CR>", { desc = "Check performance" })
|
||||
keymap.set("n", "<leader>po", "<cmd>lua require('cargdev.core.function.performance_monitor').check_plugin_performance()<CR>", { desc = "Check plugin performance" })
|
||||
keymap.set("n", "<leader>pb", "<cmd>lua require('cargdev.core.function.performance_monitor').optimize_buffer()<CR>", { desc = "Optimize current buffer" })
|
||||
|
||||
-- LSP health and troubleshooting keymaps
|
||||
keymap.set("n", "<leader>pl", "<cmd>lua require('cargdev.core.function.performance_monitor').check_lsp_health()<CR>", { desc = "Check LSP health" })
|
||||
keymap.set("n", "<leader>pr", "<cmd>lua require('cargdev.core.function.performance_monitor').restart_lsp()<CR>", { desc = "Restart LSP" })
|
||||
|
||||
-- Notification management keymaps
|
||||
keymap.set("n", "<leader>nc", "<cmd>lua require('cargdev.core.function.notification_manager').clear_all_notifications()<CR>", { desc = "Clear all notifications" })
|
||||
keymap.set("n", "<leader>nn", "<cmd>lua require('cargdev.core.function.notification_manager').show_notification('Test notification', vim.log.levels.INFO)<CR>", { desc = "Test notification" })
|
||||
|
||||
local function follow_obsidian_link()
|
||||
-- Extract the full [[...]] link from the current line under/around the cursor
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local col = vim.fn.col('.')
|
||||
local start_idx, end_idx, raw
|
||||
-- Search for all [[...]] in the line, pick the one under/around the cursor
|
||||
local i = 1
|
||||
while true do
|
||||
local s, e = line:find('%[%[.-%]%]', i)
|
||||
if not s then break end
|
||||
if col >= s and col <= e + 1 then
|
||||
start_idx, end_idx = s, e
|
||||
break
|
||||
end
|
||||
i = e + 1
|
||||
end
|
||||
if not start_idx then
|
||||
vim.notify('No [[link]] under cursor', vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
raw = line:sub(start_idx, end_idx)
|
||||
raw = raw:gsub('^!%[%[', '[[') -- strip leading ! from embeds
|
||||
local link = raw:gsub('%[%[', ''):gsub('%]%]', '')
|
||||
|
||||
-- split off alias (|) and heading (#) only after extracting the full link
|
||||
local alias
|
||||
local heading
|
||||
-- first, split off alias if present
|
||||
local pipe_idx = link:find("|", 1, true)
|
||||
if pipe_idx then
|
||||
alias = link:sub(pipe_idx + 1)
|
||||
link = link:sub(1, pipe_idx - 1)
|
||||
end
|
||||
-- then, split off heading if present
|
||||
local hash_idx = link:find("#", 1, true)
|
||||
if hash_idx then
|
||||
heading = link:sub(hash_idx + 1)
|
||||
link = link:sub(1, hash_idx - 1)
|
||||
end
|
||||
|
||||
-- normalize spaces
|
||||
link = link:gsub("\\ ", " "):gsub("^%s+", ""):gsub("%s+$", "")
|
||||
|
||||
local function goto_heading(h)
|
||||
if not h or h == "" then
|
||||
return
|
||||
end
|
||||
-- crude jump: search for markdown heading or block that contains it
|
||||
vim.cmd("keepjumps normal! gg")
|
||||
local pat = "^%s*#+%s*" .. vim.pesc(h)
|
||||
if vim.fn.search(pat) == 0 then
|
||||
-- fallback: plain search
|
||||
vim.fn.search(vim.pesc(h))
|
||||
end
|
||||
end
|
||||
|
||||
-- if link contains a '/', treat it as a relative path inside the vault
|
||||
if link:find("/") then
|
||||
local target = vault_path .. "/" .. link .. ".md"
|
||||
vim.cmd.edit(target)
|
||||
goto_heading(heading)
|
||||
return
|
||||
end
|
||||
|
||||
-- otherwise search recursively for basename match anywhere in the vault
|
||||
local pattern = "**/" .. link .. ".md"
|
||||
local matches = vim.fn.globpath(vault_path, pattern, false, true) -- list
|
||||
|
||||
if #matches == 1 then
|
||||
vim.cmd.edit(matches[1])
|
||||
goto_heading(heading)
|
||||
elseif #matches > 1 then
|
||||
vim.ui.select(matches, { prompt = "Multiple matches for " .. link .. ":" }, function(choice)
|
||||
if choice then
|
||||
vim.cmd.edit(choice)
|
||||
goto_heading(heading)
|
||||
end
|
||||
end)
|
||||
else
|
||||
-- not found: offer to create at vault root
|
||||
local target = vault_path .. "/" .. link .. ".md"
|
||||
vim.ui.input({ prompt = "Create " .. target .. " ? (y/N) " }, function(ans)
|
||||
if ans and ans:lower():sub(1, 1) == "y" then
|
||||
vim.cmd.edit(target)
|
||||
-- optional: insert a title
|
||||
if vim.fn.line("$") == 1 and vim.fn.getline(1) == "" then
|
||||
vim.api.nvim_buf_set_lines(0, 0, 0, false, { "# " .. (alias or link), "" })
|
||||
end
|
||||
goto_heading(heading)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<leader>o", follow_obsidian_link, { noremap = true, silent = true })
|
||||
-- Startup prompt management keymaps
|
||||
keymap.set("n", "<leader>ns", "<cmd>redraw!<CR><cmd>echo ''<CR>", { desc = "Clear startup prompts" })
|
||||
keymap.set("n", "<leader>nr", "<cmd>redraw!<CR>", { desc = "Redraw screen" })
|
||||
@@ -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>coo", "<Plug>(git-conflict-ours)", { desc = "Choose ours (git conflict)" })
|
||||
keymap.set("n", "<leader>co", "<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,14 +5,8 @@ local keymap = vim.keymap
|
||||
-- PERSONAL KEYMAPS (ORIGINAL WORKFLOW)
|
||||
-- =============================================================================
|
||||
|
||||
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" })
|
||||
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" })
|
||||
|
||||
-- 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>dcc", "<cmd>lua require'dap'.continue()<cr>", { desc = "Continue" })
|
||||
keymap.set("n", "<leader>dc", "<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 (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" })
|
||||
-- Substitute
|
||||
keymap.set("n", "<leader>s", "<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" })
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ opt.autoindent = true -- Auto indent
|
||||
opt.smartindent = true -- Smart indent
|
||||
|
||||
-- Performance optimizations
|
||||
opt.lazyredraw = true -- Don't redraw while executing macros
|
||||
opt.updatetime = 100 -- Faster completion (reduced from 250)
|
||||
opt.timeoutlen = 200 -- Faster key sequence completion (reduced from 300)
|
||||
opt.redrawtime = 1500 -- Allow more time for loading syntax
|
||||
@@ -42,23 +43,6 @@ 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,7 +92,6 @@ opt.swapfile = false -- Don't create swap files
|
||||
|
||||
-- Terminal
|
||||
opt.termguicolors = true -- Enable true color support
|
||||
opt.background = "dark" -- Set background to dark
|
||||
|
||||
-- File encoding
|
||||
opt.encoding = "utf-8" -- Set encoding to UTF-8
|
||||
@@ -125,27 +108,10 @@ opt.splitright = true -- Split right when creating vertical splits
|
||||
-- Conceal
|
||||
opt.conceallevel = 2 -- Conceal certain characters
|
||||
|
||||
-- Provider configurations
|
||||
-- Disable providers that cause warnings
|
||||
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")
|
||||
|
||||
@@ -205,37 +171,48 @@ for _, plugin in pairs(disabled_built_ins) do
|
||||
end
|
||||
|
||||
-- =============================================================================
|
||||
-- OPTIMIZED AUTO WRAPPER AUTOCMDS
|
||||
-- AUTO WRAPPER AUTOCMDS
|
||||
-- =============================================================================
|
||||
|
||||
-- Consolidated auto-wrapping configuration
|
||||
-- Set up auto-wrapping for different file types
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "*",
|
||||
pattern = { "text", "markdown", "gitcommit", "mail" },
|
||||
callback = function()
|
||||
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
|
||||
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
|
||||
end,
|
||||
})
|
||||
|
||||
215
lua/cargdev/core/startup_optimization.lua
Normal file
215
lua/cargdev/core/startup_optimization.lua
Normal file
@@ -0,0 +1,215 @@
|
||||
-- Startup performance optimizations
|
||||
local M = {}
|
||||
|
||||
-- Function to optimize startup performance
|
||||
function M.optimize_startup()
|
||||
-- Record startup time
|
||||
local start_time = vim.loop.hrtime()
|
||||
|
||||
-- Disable unused providers
|
||||
vim.g.loaded_python3_provider = 0
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
vim.g.loaded_perl_provider = 0
|
||||
|
||||
-- Disable unused builtin plugins
|
||||
local disabled_builtins = {
|
||||
"gzip",
|
||||
"zip",
|
||||
"zipPlugin",
|
||||
"tar",
|
||||
"tarPlugin",
|
||||
"getscript",
|
||||
"getscriptPlugin",
|
||||
"vimball",
|
||||
"vimballPlugin",
|
||||
"2html_plugin",
|
||||
"logipat",
|
||||
"rrhelper",
|
||||
"spellfile_plugin",
|
||||
"matchit",
|
||||
"netrw",
|
||||
"netrwPlugin",
|
||||
"netrwSettings",
|
||||
"netrwFileHandlers",
|
||||
}
|
||||
|
||||
for _, plugin in pairs(disabled_builtins) do
|
||||
vim.g["loaded_" .. plugin] = 1
|
||||
end
|
||||
|
||||
-- Optimize filetype detection
|
||||
vim.g.do_filetype_lua = 1
|
||||
vim.g.did_load_filetypes = 0
|
||||
|
||||
-- Fix lazyredraw conflict with Noice - but only after LazyVim loads
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyDone",
|
||||
callback = function()
|
||||
vim.opt.lazyredraw = false -- Disable to prevent Noice conflicts
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
-- Optimize completion settings
|
||||
vim.opt.completeopt = "menuone,noselect"
|
||||
vim.opt.pumheight = 10 -- Limit completion menu height
|
||||
|
||||
-- Optimize search settings
|
||||
vim.opt.hlsearch = false
|
||||
vim.opt.incsearch = true
|
||||
|
||||
-- Optimize syntax highlighting
|
||||
vim.opt.synmaxcol = 240
|
||||
vim.opt.redrawtime = 1500
|
||||
|
||||
-- Optimize folding
|
||||
vim.opt.foldmethod = "manual"
|
||||
vim.opt.foldlevel = 99
|
||||
|
||||
-- Completely eliminate "Press ENTER" prompts
|
||||
vim.opt.shortmess = vim.opt.shortmess + "I" -- No intro message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "c" -- No completion messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "F" -- No file info message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "W" -- No "written" message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "A" -- No attention message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "o" -- No overwrite messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "t" -- No truncation messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "T" -- No truncation messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "f" -- No file info messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "i" -- No intro messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "l" -- No line number messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "m" -- No modification messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "n" -- No line number messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "r" -- No read messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "s" -- No search messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "x" -- No truncation messages
|
||||
|
||||
-- Disable swap file messages completely
|
||||
vim.opt.shortmess = vim.opt.shortmess + "O" -- No overwrite messages
|
||||
|
||||
-- Disable all startup messages
|
||||
vim.opt.cmdheight = 0 -- Reduce command line height
|
||||
vim.opt.showmode = false -- Don't show mode in command line
|
||||
|
||||
-- Record end time and calculate duration
|
||||
local end_time = vim.loop.hrtime()
|
||||
local duration = (end_time - start_time) / 1000000
|
||||
|
||||
-- Store startup time for performance monitoring
|
||||
vim.g.startup_time = duration
|
||||
|
||||
print("Startup optimizations applied in " .. string.format("%.2f", duration) .. "ms")
|
||||
end
|
||||
|
||||
-- Function to defer heavy operations
|
||||
function M.defer_heavy_operations()
|
||||
-- Defer treesitter loading
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyDone",
|
||||
callback = function()
|
||||
vim.defer_fn(function()
|
||||
if vim.fn.exists(":TSBufEnable") > 0 then
|
||||
vim.cmd("TSBufEnable highlight")
|
||||
end
|
||||
end, 100)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
-- Defer LSP setup for non-critical buffers
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyDone",
|
||||
callback = function()
|
||||
vim.defer_fn(function()
|
||||
-- Enable LSP for current buffer if it's a supported filetype
|
||||
local supported_ft = {
|
||||
"lua", "javascript", "typescript", "python", "java", "cpp", "c", "rust", "go",
|
||||
"html", "css", "json", "yaml", "markdown"
|
||||
}
|
||||
|
||||
local current_ft = vim.bo.filetype
|
||||
if vim.tbl_contains(supported_ft, current_ft) then
|
||||
vim.cmd("LspStart")
|
||||
end
|
||||
end, 200)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
-- Defer completion setup
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyDone",
|
||||
callback = function()
|
||||
vim.defer_fn(function()
|
||||
if vim.fn.exists(":CmpStatus") > 0 then
|
||||
vim.cmd("CmpStatus")
|
||||
end
|
||||
end, 300)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
end
|
||||
|
||||
-- Function to check if we're in a large repository
|
||||
function M.check_repo_size()
|
||||
local cwd = vim.fn.getcwd()
|
||||
local git_dir = cwd .. "/.git"
|
||||
|
||||
if vim.fn.isdirectory(git_dir) > 0 then
|
||||
-- Check if this is a large repository
|
||||
local file_count = tonumber(vim.fn.system("git ls-files | wc -l")) or 0
|
||||
|
||||
if file_count > 10000 then
|
||||
-- Large repository detected, apply additional optimizations
|
||||
vim.opt.tags = "" -- Disable tag loading
|
||||
vim.opt.cursorline = false -- Disable cursor line
|
||||
vim.opt.relativenumber = false -- Disable relative numbers
|
||||
|
||||
print("Large repository detected (" .. file_count .. " lines). Applied additional optimizations.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Function to completely eliminate startup prompts
|
||||
function M.eliminate_startup_prompts()
|
||||
-- Create autocmd to handle any remaining startup messages
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
callback = function()
|
||||
-- Clear any startup messages immediately
|
||||
vim.cmd("redraw!")
|
||||
vim.cmd("echo ''")
|
||||
|
||||
-- Force clear any pending messages
|
||||
vim.defer_fn(function()
|
||||
vim.cmd("redraw!")
|
||||
vim.cmd("echo ''")
|
||||
end, 50)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
-- Create autocmd to handle any message events - use valid events
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
callback = function()
|
||||
-- Clear messages that might cause prompts
|
||||
vim.cmd("redraw!")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Override the message display to prevent prompts
|
||||
local original_echo = vim.cmd.echo
|
||||
vim.cmd.echo = function(msg)
|
||||
-- Only echo if it's not a startup message
|
||||
if not tostring(msg):match("Press ENTER") and not tostring(msg):match("lazyredraw") then
|
||||
original_echo(msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Initialize startup optimizations
|
||||
M.optimize_startup()
|
||||
M.defer_heavy_operations()
|
||||
M.check_repo_size()
|
||||
M.eliminate_startup_prompts()
|
||||
|
||||
return M
|
||||
@@ -107,5 +107,42 @@ return {
|
||||
|
||||
-- 🔥 Disable folding on alpha buffer
|
||||
vim.cmd([[autocmd FileType alpha setlocal nofoldenable]])
|
||||
|
||||
-- 🚫 Suppress startup messages that can overlap with dashboard
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
callback = function()
|
||||
-- Clear any startup messages
|
||||
vim.cmd("redraw!")
|
||||
|
||||
-- Suppress specific startup messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "I" -- No intro message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "c" -- No completion messages
|
||||
vim.opt.shortmess = vim.opt.shortmess + "F" -- No file info message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "W" -- No "written" message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "A" -- No attention message
|
||||
vim.opt.shortmess = vim.opt.shortmess + "o" -- No overwrite messages
|
||||
|
||||
-- Clear any existing messages
|
||||
vim.cmd("echo ''")
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
|
||||
-- 🎨 Improve dashboard appearance and reduce overlapping
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "alpha",
|
||||
callback = function()
|
||||
-- Set buffer options for better appearance
|
||||
vim.opt_local.number = false
|
||||
vim.opt_local.relativenumber = false
|
||||
vim.opt_local.cursorline = false
|
||||
vim.opt_local.cursorcolumn = false
|
||||
vim.opt_local.signcolumn = "no"
|
||||
vim.opt_local.foldcolumn = "0"
|
||||
|
||||
-- Clear any messages that might overlap
|
||||
vim.cmd("redraw!")
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -50,11 +50,7 @@ return {
|
||||
statuscolumn = { enabled = true },
|
||||
terminal = { enabled = true },
|
||||
toggle = { enabled = true },
|
||||
words = {
|
||||
enabled = true,
|
||||
lsp = { enabled = false }, -- Disable LSP to prevent crashes
|
||||
hl = { enabled = true },
|
||||
},
|
||||
words = { enabled = true },
|
||||
})
|
||||
|
||||
-- Set up vim.ui.input and vim.ui.select for snacks
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
return {
|
||||
"CarGDev/cargdev-cyberpunk",
|
||||
name = "cargdev-cyberpunk",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
--[[ dir = "/Users/carlos/Documents/SSD_Documents/projects/cargdevschemecolor.nvim", ]]
|
||||
config = function()
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.background = "dark"
|
||||
require("cargdev-cyberpunk").setup()
|
||||
end,
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
}
|
||||
|
||||
@@ -8,13 +8,32 @@ return {
|
||||
-- import comment plugin safely
|
||||
local comment = require("Comment")
|
||||
|
||||
local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim")
|
||||
|
||||
-- enable comment
|
||||
-- Check if treesitter context commentstring is available
|
||||
local ok, ts_context_commentstring = pcall(require, "ts_context_commentstring.integrations.comment_nvim")
|
||||
|
||||
-- enable comment with safe configuration
|
||||
comment.setup({
|
||||
-- for commenting tsx, jsx, svelte, html files
|
||||
pre_hook = ts_context_commentstring.create_pre_hook(),
|
||||
pre_hook = ok and ts_context_commentstring.create_pre_hook() or nil,
|
||||
-- Add explicit commentstring fallbacks
|
||||
opleader = {
|
||||
line = "gc",
|
||||
block = "gb",
|
||||
},
|
||||
toggler = {
|
||||
line = "gcc",
|
||||
block = "gbc",
|
||||
},
|
||||
extra = {
|
||||
above = "gcO",
|
||||
below = "gco",
|
||||
eol = "gcA",
|
||||
},
|
||||
mappings = {
|
||||
basic = true,
|
||||
extra = true,
|
||||
extended = false,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
75
lua/cargdev/plugins/copilot.lua
Normal file
75
lua/cargdev/plugins/copilot.lua
Normal file
@@ -0,0 +1,75 @@
|
||||
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,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
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,
|
||||
}
|
||||
132
lua/cargdev/plugins/database.lua
Normal file
132
lua/cargdev/plugins/database.lua
Normal file
@@ -0,0 +1,132 @@
|
||||
return {
|
||||
-- =============================================================================
|
||||
-- DATABASE PLUGINS
|
||||
-- =============================================================================
|
||||
|
||||
-- Modern database client for Neovim (replaces vim-dadbod)
|
||||
{
|
||||
"kndndrj/nvim-dbee",
|
||||
build = function()
|
||||
-- Install the Go binary
|
||||
require("dbee").install()
|
||||
end,
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("dbee").setup({
|
||||
-- Sources for database connections
|
||||
sources = {
|
||||
-- Load connections from memory (only guaranteed working connections)
|
||||
require("dbee.sources").MemorySource:new({
|
||||
-- PostgreSQL (confirmed working)
|
||||
{
|
||||
name = "mock_api",
|
||||
type = "postgres",
|
||||
url = "postgres://localhost:5432/mock_api?sslmode=disable",
|
||||
},
|
||||
}),
|
||||
-- Load connections from environment variable (for dynamic connections)
|
||||
require("dbee.sources").EnvSource:new("DBEE_CONNECTIONS"),
|
||||
-- Load connections from file (persistent storage - user-added connections)
|
||||
require("dbee.sources").FileSource:new(vim.fn.stdpath("cache") .. "/dbee/persistence.json"),
|
||||
},
|
||||
|
||||
-- UI Configuration
|
||||
ui = {
|
||||
-- Layout configuration
|
||||
layout = {
|
||||
-- Drawer (left panel) width
|
||||
drawer_width = 30,
|
||||
-- Result buffer height
|
||||
result_height = 15,
|
||||
-- Editor buffer height
|
||||
editor_height = 10,
|
||||
},
|
||||
},
|
||||
|
||||
-- Database configuration
|
||||
database = {
|
||||
-- Default page size for results
|
||||
page_size = 100,
|
||||
-- Connection timeout in seconds
|
||||
timeout = 30,
|
||||
-- Maximum number of connections
|
||||
max_connections = 5,
|
||||
},
|
||||
|
||||
-- Logging configuration
|
||||
log = {
|
||||
-- Log level: "debug", "info", "warn", "error"
|
||||
level = "info",
|
||||
-- Log file path
|
||||
file = vim.fn.stdpath("cache") .. "/dbee/dbee.log",
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- SQL formatting and syntax highlighting
|
||||
{
|
||||
"b4winckler/vim-objc",
|
||||
ft = { "sql", "mysql", "postgresql", "oracle" },
|
||||
},
|
||||
|
||||
-- SQL formatting with sqlparse
|
||||
{
|
||||
"b4winckler/vim-objc",
|
||||
ft = { "sql" },
|
||||
config = function()
|
||||
vim.g.sqlformat_command = "sqlformat"
|
||||
vim.g.sqlformat_options = "-r -k upper"
|
||||
end,
|
||||
},
|
||||
|
||||
|
||||
|
||||
-- MongoDB syntax highlighting (without LSP)
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
ft = { "javascript", "json" },
|
||||
config = function()
|
||||
-- Enable MongoDB syntax highlighting for .js files
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "javascript", "json" },
|
||||
callback = function()
|
||||
vim.bo.filetype = "javascript"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Redis syntax highlighting
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
ft = { "redis" },
|
||||
config = function()
|
||||
-- Enable Redis syntax highlighting
|
||||
vim.api.nvim_create_autocmd("BufRead,BufNewFile", {
|
||||
pattern = "*.redis",
|
||||
callback = function()
|
||||
vim.bo.filetype = "redis"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- CQL (Cassandra Query Language) syntax highlighting
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
ft = { "cql" },
|
||||
config = function()
|
||||
-- Enable CQL syntax highlighting
|
||||
vim.api.nvim_create_autocmd("BufRead,BufNewFile", {
|
||||
pattern = "*.cql",
|
||||
callback = function()
|
||||
vim.bo.filetype = "cql"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
333
lua/cargdev/plugins/essential_enhancements.lua
Normal file
333
lua/cargdev/plugins/essential_enhancements.lua
Normal file
@@ -0,0 +1,333 @@
|
||||
return {
|
||||
-- Enhanced notifications with better positioning
|
||||
{
|
||||
"rcarriga/nvim-notify",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
vim.notify = require("notify")
|
||||
|
||||
-- Configure notifications to avoid overlapping
|
||||
require("notify").setup({
|
||||
-- Position notifications to avoid overlapping with dashboard
|
||||
stages = "fade_in_slide_out",
|
||||
timeout = 3000,
|
||||
background_colour = "#000000",
|
||||
max_width = 50,
|
||||
max_height = 10,
|
||||
default_timeout = 4000,
|
||||
top_down = false, -- Show newer notifications at the bottom
|
||||
render = "minimal",
|
||||
minimum_width = 20,
|
||||
icons = {
|
||||
ERROR = " ",
|
||||
WARN = " ",
|
||||
INFO = " ",
|
||||
DEBUG = " ",
|
||||
TRACE = " ",
|
||||
},
|
||||
-- Position notifications away from dashboard
|
||||
on_open = function(win)
|
||||
-- Move notification window to avoid overlapping with alpha dashboard
|
||||
local config = vim.api.nvim_win_get_config(win)
|
||||
if config.relative == "editor" then
|
||||
-- Position notifications in the top-right, but not overlapping dashboard
|
||||
vim.api.nvim_win_set_config(win, {
|
||||
row = 2,
|
||||
col = vim.o.columns - 60, -- Position from right side
|
||||
relative = "editor",
|
||||
width = 55,
|
||||
height = 8,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Better session management
|
||||
{
|
||||
"folke/persistence.nvim",
|
||||
event = "BufReadPre",
|
||||
opts = {
|
||||
dir = vim.fn.stdpath("state") .. "/sessions",
|
||||
options = { "buffers", "curdir", "tabpages", "winsize", "help" }
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>qs", function() require("persistence").load() end, desc = "Restore Session" },
|
||||
{ "<leader>ql", function() require("persistence").load({ last = true }) end, desc = "Restore Last Session" },
|
||||
{ "<leader>qd", function() require("persistence").stop() end, desc = "Don't Save Current Session" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Project management
|
||||
{
|
||||
"ahmedkhalf/project.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("project_nvim").setup({
|
||||
detection_methods = { "pattern", "lsp" },
|
||||
patterns = {
|
||||
".git",
|
||||
"package.json",
|
||||
"pyproject.toml",
|
||||
"Cargo.toml",
|
||||
"go.mod",
|
||||
"requirements.txt"
|
||||
},
|
||||
show_hidden = false,
|
||||
silent_chdir = true,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Better search and replace
|
||||
{
|
||||
"nvim-pack/nvim-spectre",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("spectre").setup({
|
||||
color_devicons = true,
|
||||
open_cmd = "vnew",
|
||||
live_update = false, -- Disable for better performance
|
||||
line_sep_start = "┌──────────────────────────────────────────────────────────────────────────────┐",
|
||||
line_sep = "├──────────────────────────────────────────────────────────────────────────────┤",
|
||||
line_sep_end = "└──────────────────────────────────────────────────────────────────────────────┘",
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>sr", function() require("spectre").open() end, desc = "Search and Replace" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Enhanced terminal
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
version = "*",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
size = 20,
|
||||
open_mapping = [[<c-\>]],
|
||||
shade_filetypes = {},
|
||||
direction = "float",
|
||||
float_opts = {
|
||||
border = "curved",
|
||||
highlights = {
|
||||
border = "Normal",
|
||||
background = "Normal",
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>tt", "<cmd>ToggleTerm<CR>", desc = "Toggle Terminal" },
|
||||
{ "<leader>tf", "<cmd>ToggleTerm direction=float<CR>", desc = "Float Terminal" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Better file operations
|
||||
{
|
||||
"chrisgrieser/nvim-early-retirement",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
retirementAgeMins = 1440, -- 24 hours
|
||||
notificationOnAutoClose = true,
|
||||
deleteBufferWhenFileDeleted = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Enhanced quickfix
|
||||
{
|
||||
"kevinhwang91/nvim-bqf",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("bqf").setup({
|
||||
auto_enable = true,
|
||||
preview = {
|
||||
win_height = 12,
|
||||
win_vheight = 12,
|
||||
delay_syntax = 80,
|
||||
border_chars = { "┃", "┃", "━", "━", "┏", "┃", "┃", "┛" },
|
||||
},
|
||||
func_map = {
|
||||
vsplit = "",
|
||||
ptogglemode = "z,",
|
||||
stoggleup = "",
|
||||
},
|
||||
filter = {
|
||||
fzf = {
|
||||
action_for = { ["ctrl-s"] = "split" },
|
||||
extra_opts = { "--bind", "ctrl-o:toggle-all", "--prompt", "> " },
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Better completion menu with improved positioning
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
"MunifTanjim/nui.nvim",
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
opts = {
|
||||
lsp = {
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
routes = {
|
||||
{
|
||||
filter = {
|
||||
event = "msg_show",
|
||||
any = {
|
||||
{ find = "%d+L, %d+B" },
|
||||
{ find = "; after #%d+" },
|
||||
{ find = "; before #%d+" },
|
||||
{ find = "%d fewer lines" },
|
||||
{ find = "%d more lines" },
|
||||
},
|
||||
},
|
||||
view = "mini",
|
||||
},
|
||||
-- Route startup messages to avoid overlapping with dashboard
|
||||
{
|
||||
filter = {
|
||||
event = "msg_show",
|
||||
any = {
|
||||
{ find = "ideaDrop loaded!" },
|
||||
{ find = "noice.nvim" },
|
||||
{ find = "lazyredraw" },
|
||||
},
|
||||
},
|
||||
view = "notify",
|
||||
opts = { timeout = 2000 },
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
bottom_search = true,
|
||||
command_palette = true,
|
||||
long_message_to_split = true,
|
||||
inc_rename = true,
|
||||
},
|
||||
-- Position command palette and other UI elements to avoid overlapping
|
||||
cmdline = {
|
||||
position = {
|
||||
row = "50%",
|
||||
col = "50%",
|
||||
},
|
||||
},
|
||||
popupmenu = {
|
||||
position = {
|
||||
row = "50%",
|
||||
col = "50%",
|
||||
},
|
||||
},
|
||||
notify = {
|
||||
-- Position notifications to avoid dashboard overlap
|
||||
position = "top_right",
|
||||
max_width = 50,
|
||||
max_height = 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Better status line
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
options = {
|
||||
theme = "auto",
|
||||
globalstatus = true,
|
||||
disabled_filetypes = { statusline = { "dashboard", "alpha" } },
|
||||
component_separators = { left = "│", right = "│" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { "mode" },
|
||||
lualine_b = { "branch", "diff", "diagnostics" },
|
||||
lualine_c = { "filename" },
|
||||
lualine_x = { "encoding", "fileformat", "filetype" },
|
||||
lualine_y = { "progress" },
|
||||
lualine_z = { "location" },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Better buffer management
|
||||
{
|
||||
"akinsho/bufferline.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
options = {
|
||||
mode = "buffers",
|
||||
separator_style = "slant",
|
||||
always_show_bufferline = false,
|
||||
show_buffer_close_icons = true,
|
||||
show_close_icon = false,
|
||||
color_icons = true,
|
||||
diagnostics = "nvim_lsp",
|
||||
diagnostics_indicator = function(_, _, diag)
|
||||
local icons = require("lazyvim.config").icons.diagnostics
|
||||
local ret = (diag.error and icons.Error .. diag.error .. " " or "")
|
||||
.. (diag.warning and icons.Warn .. diag.warning or "")
|
||||
return vim.trim(ret)
|
||||
end,
|
||||
offsets = {
|
||||
{
|
||||
filetype = "neo-tree",
|
||||
text = "Neo-tree",
|
||||
highlight = "Directory",
|
||||
text_align = "left",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Better git integration
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
signs = {
|
||||
add = { text = "│" },
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
signcolumn = true,
|
||||
numhl = false,
|
||||
linehl = false,
|
||||
word_diff = false,
|
||||
watch_gitdir = {
|
||||
interval = 1000,
|
||||
follow_files = true,
|
||||
},
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = false,
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = "eol",
|
||||
delay = 1000,
|
||||
ignore_whitespace = false,
|
||||
},
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil,
|
||||
max_file_length = 40000,
|
||||
preview_config = {
|
||||
border = "single",
|
||||
style = "minimal",
|
||||
relative = "cursor",
|
||||
row = 0,
|
||||
col = 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
return {
|
||||
"akinsho/flutter-tools.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"stevearc/dressing.nvim",
|
||||
},
|
||||
config = true,
|
||||
}
|
||||
@@ -29,10 +29,6 @@ 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,4 +1,5 @@
|
||||
return {
|
||||
--[[dir = "/Volumes/Carlos_SSD/Documents/projects/ideaDrop",]]
|
||||
"CarGDev/ideadrop.nvim",
|
||||
name = "ideaDrop",
|
||||
dependencies = {
|
||||
@@ -7,7 +8,7 @@ return {
|
||||
},
|
||||
config = function()
|
||||
require("ideaDrop").setup({
|
||||
idea_dir = vim.env.IDEA_DIR,
|
||||
idea_dir = "/Users/carlos/Nextcloud/ObsidianVault",
|
||||
})
|
||||
|
||||
-- Set up convenient keymaps for ideaDrop
|
||||
|
||||
@@ -5,14 +5,13 @@ return {
|
||||
opts = {
|
||||
indent = {
|
||||
char = "┊",
|
||||
},
|
||||
exclude = {
|
||||
filetypes = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason" },
|
||||
buftypes = { "terminal", "nofile", "quickfix", "prompt" },
|
||||
exclude_filetypes = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason" }
|
||||
},
|
||||
scope = {
|
||||
enabled = false
|
||||
},
|
||||
exclude = {
|
||||
filetypes = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason" }
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
return {
|
||||
"neovim/nvim-lspconfig",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
event = { "BufReadPost", "BufNewFile" }, -- Changed from BufReadPre to BufReadPost for better performance
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
{ "antosha417/nvim-lsp-file-operations", config = true },
|
||||
@@ -23,11 +23,18 @@ return {
|
||||
"gopls",
|
||||
"graphql",
|
||||
"html",
|
||||
-- "jdtls", -- uncomment if you're actively doing Java
|
||||
"lua_ls",
|
||||
"prismals",
|
||||
"pyright",
|
||||
"svelte",
|
||||
"tailwindcss",
|
||||
-- Database language servers
|
||||
"sqls", -- SQL language server
|
||||
"mongodb", -- MongoDB language server
|
||||
"redis", -- Redis language server
|
||||
"oracle", -- Oracle language server
|
||||
"cassandra", -- Cassandra language server
|
||||
},
|
||||
})
|
||||
|
||||
@@ -64,94 +71,94 @@ return {
|
||||
},
|
||||
})
|
||||
|
||||
-- Only attach to sensible buffers
|
||||
local function should_attach_lsp(bufnr)
|
||||
if type(bufnr) ~= "number" or bufnr == 0 then
|
||||
bufnr = vim.api.nvim_get_current_buf()
|
||||
end
|
||||
local ft = vim.bo[bufnr].filetype
|
||||
local name = vim.api.nvim_buf_get_name(bufnr)
|
||||
-- File type filtering to prevent LSP errors on non-text files
|
||||
local function should_attach_lsp(client, bufnr)
|
||||
local filetype = vim.api.nvim_buf_get_option(bufnr, "filetype")
|
||||
local filename = vim.api.nvim_buf_get_name(bufnr)
|
||||
|
||||
-- skip binaries / media
|
||||
local exts = {
|
||||
-- Skip non-text files
|
||||
local non_text_extensions = {
|
||||
"png", "jpg", "jpeg", "gif", "svg", "ico", "bmp", "webp",
|
||||
"mp4", "avi", "mov", "wmv", "flv", "webm", "mkv",
|
||||
"mp3", "wav", "flac", "aac", "ogg",
|
||||
"pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx",
|
||||
"zip", "rar", "7z", "tar", "gz", "bz2", "exe", "dll", "so", "dylib", "bin"
|
||||
"zip", "rar", "7z", "tar", "gz", "bz2",
|
||||
"exe", "dll", "so", "dylib", "bin"
|
||||
}
|
||||
for _, e in ipairs(exts) do
|
||||
if name:match("%." .. e .. "$") then
|
||||
|
||||
for _, ext in ipairs(non_text_extensions) do
|
||||
if filename:match("%." .. ext .. "$") then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local lines = vim.api.nvim_buf_line_count(bufnr)
|
||||
if lines == 0 or lines > 50000 then
|
||||
-- Skip empty or very large files
|
||||
local line_count = vim.api.nvim_buf_line_count(bufnr)
|
||||
if line_count == 0 or line_count > 50000 then
|
||||
return false
|
||||
end
|
||||
|
||||
local skip_ft = {
|
||||
git = true, gitcommit = true, gitrebase = true, gitconfig = true,
|
||||
help = true, man = true, qf = true, quickfix = true, terminal = true, toggleterm = true
|
||||
-- Skip specific file types that don't need LSP
|
||||
local skip_filetypes = {
|
||||
"git", "gitcommit", "gitrebase", "gitconfig",
|
||||
"help", "man", "markdown", "text",
|
||||
"qf", "quickfix", "locationlist",
|
||||
"terminal", "toggleterm"
|
||||
}
|
||||
if skip_ft[ft] then
|
||||
|
||||
for _, skip_ft in ipairs(skip_filetypes) do
|
||||
if filetype == skip_ft then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
-- Shared on_attach
|
||||
local function on_attach(client, bufnr)
|
||||
if not should_attach_lsp(bufnr) then
|
||||
-- Detach politely; don't override client.request
|
||||
vim.schedule(function()
|
||||
if vim.api.nvim_buf_is_valid(bufnr) then
|
||||
vim.lsp.buf_detach_client(bufnr, client.id)
|
||||
else
|
||||
client.stop()
|
||||
end
|
||||
end)
|
||||
return
|
||||
end
|
||||
-- your normal keymaps/etc here
|
||||
end
|
||||
|
||||
local servers = {
|
||||
cssls = {
|
||||
settings = {
|
||||
css = {
|
||||
validate = true,
|
||||
lint = { unknownAtRules = "ignore" }
|
||||
lint = {
|
||||
unknownAtRules = "ignore"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
emmet_ls = {},
|
||||
eslint = {
|
||||
settings = { workingDirectory = { mode = "auto" } }
|
||||
settings = {
|
||||
workingDirectory = { mode = "auto" }
|
||||
}
|
||||
},
|
||||
gopls = {
|
||||
settings = {
|
||||
gopls = {
|
||||
analyses = { unusedparams = true },
|
||||
analyses = {
|
||||
unusedparams = true,
|
||||
},
|
||||
staticcheck = true,
|
||||
usePlaceholders = true
|
||||
}
|
||||
}
|
||||
usePlaceholders = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
graphql = {},
|
||||
html = {},
|
||||
-- jdtls = {}, -- same here
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = { globals = { "vim" } },
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
checkThirdParty = false
|
||||
checkThirdParty = false,
|
||||
},
|
||||
-- Performance optimizations
|
||||
telemetry = { enable = false },
|
||||
hint = { enable = false },
|
||||
hint = {
|
||||
enable = false, -- Disable hints for better performance
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -160,28 +167,112 @@ return {
|
||||
settings = {
|
||||
python = {
|
||||
analysis = {
|
||||
typeCheckingMode = "basic",
|
||||
autoImportCompletions = true
|
||||
}
|
||||
}
|
||||
}
|
||||
typeCheckingMode = "basic", -- Reduce type checking for better performance
|
||||
autoImportCompletions = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
svelte = {},
|
||||
tailwindcss = {},
|
||||
-- sqls = { settings = { sqls = { connections = { /* …your dbs… */ } } } }, -- optional
|
||||
-- Database servers
|
||||
sqls = {
|
||||
settings = {
|
||||
sqls = {
|
||||
connections = {
|
||||
{
|
||||
name = "PostgreSQL",
|
||||
adapter = "postgresql",
|
||||
host = "localhost",
|
||||
port = 5432,
|
||||
database = "postgres",
|
||||
username = "postgres",
|
||||
password = "",
|
||||
},
|
||||
{
|
||||
name = "MySQL",
|
||||
adapter = "mysql",
|
||||
host = "localhost",
|
||||
port = 3306,
|
||||
database = "mysql",
|
||||
username = "root",
|
||||
password = "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
mongols = {
|
||||
settings = {
|
||||
mongols = {
|
||||
connectionString = "mongodb://localhost:27017",
|
||||
maxNumberOfProblems = 100,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Set up all LSP servers with performance optimizations and error handling
|
||||
for name, cfg in pairs(servers) do
|
||||
lspconfig[name].setup({
|
||||
for server_name, server_config in pairs(servers) do
|
||||
lspconfig[server_name].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = cfg.settings,
|
||||
flags = { debounce_text_changes = 150 },
|
||||
settings = server_config.settings or {},
|
||||
-- Performance optimizations
|
||||
flags = {
|
||||
debounce_text_changes = 150, -- Debounce text changes
|
||||
},
|
||||
-- Enhanced error handling and file filtering
|
||||
on_attach = function(client, bufnr)
|
||||
-- Only attach LSP if it's appropriate for this file
|
||||
if not should_attach_lsp(client, bufnr) then
|
||||
client.stop()
|
||||
return
|
||||
end
|
||||
|
||||
-- Add error handling for LSP operations
|
||||
local function safe_lsp_call(func, ...)
|
||||
local success, result = pcall(func, ...)
|
||||
if not success then
|
||||
vim.notify("LSP error: " .. tostring(result), vim.log.levels.WARN)
|
||||
return nil
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
-- Override LSP methods with error handling
|
||||
local original_request = client.request
|
||||
client.request = function(method, params, handler, bufnr)
|
||||
-- Skip requests for non-text files
|
||||
if not should_attach_lsp(client, bufnr or 0) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Add timeout to prevent hanging
|
||||
local timeout_id = vim.defer_fn(function()
|
||||
if handler then
|
||||
handler(nil, { message = "LSP request timed out" })
|
||||
end
|
||||
end, 5000) -- 5 second timeout
|
||||
|
||||
-- Wrap the original request
|
||||
local wrapped_handler = handler and function(...)
|
||||
vim.loop.timer_stop(timeout_id)
|
||||
handler(...)
|
||||
end
|
||||
|
||||
return original_request(method, params, wrapped_handler, bufnr)
|
||||
end
|
||||
end,
|
||||
-- Reduce diagnostic frequency
|
||||
handlers = {
|
||||
["textDocument/publishDiagnostics"] = vim.lsp.with(
|
||||
vim.lsp.diagnostic.on_publish_diagnostics,
|
||||
{ virtual_text = false, signs = true, underline = true, update_in_insert = false }
|
||||
{
|
||||
virtual_text = false,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
}
|
||||
),
|
||||
},
|
||||
})
|
||||
@@ -208,7 +299,7 @@ return {
|
||||
},
|
||||
-- Add error handling for TypeScript Tools
|
||||
on_attach = function(client, bufnr)
|
||||
if not should_attach_lsp(bufnr) then
|
||||
if not should_attach_lsp(client, bufnr) then
|
||||
client.stop()
|
||||
return
|
||||
end
|
||||
|
||||
@@ -1,11 +1 @@
|
||||
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,
|
||||
}
|
||||
return { "wakatime/vim-wakatime", lazy = false }
|
||||
|
||||
Reference in New Issue
Block a user