-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Show inline git status indicators (modified, staged, untracked, ignored, etc.) next to each file in directory listings, similar to eza and lsd.
Details
Display
- Add a git status column showing indicators like
M(modified),A(staged/added),?(untracked),!(ignored), etc. - Color-code indicators (e.g., green for staged, red for modified, grey for ignored)
- Column should appear when inside a git repository and a
/Gitswitch is active (or auto-detected)
Implementation Options
- libgit2 (via
git2crate for RCDir, or C bindings for TCDir): Full programmatic access, no subprocess overhead - Shell out to
git status: Simpler but slower for large repos;git status --porcelain=v2gives machine-readable output - Hybrid: Use
git rev-parse --show-toplevelto detect repos, thengit statusfor status
Considerations
- Performance: git status can be slow on large repos — may need caching or lazy evaluation
- Nested repos: handle submodules and nested git roots
- Non-git directories: gracefully degrade (no git column shown)
- This is the biggest gap vs eza/lsd
Switches
/Gitor--Git: enable git status displayTCDIR=Git/RCDIR=Git: env var default/Git-: explicit disable
Prior Art
- eza: shows git status per file with staged/unstaged indicators
- lsd: shows git status with color-coded indicators
- Neither TCDir nor RCDir currently has any git integration
Notes
- Implement in TCDir first, then port to RCDir
- This is the most impactful missing feature compared to eza/lsd
- Consider starting with a minimal viable version (just modified/untracked) before full status support
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request