fix(diff): keep diff pager open on short diffs#51
Merged
Conversation
git exports LESS=FRX to its pager, and the F (quit-if-one-screen) flag makes delta's less exit as soon as a diff fits the pane. The diff session then exits and reap_exited_sessions closes the tab before the user can read it, so any diff shorter than one screen flashed and vanished while longer diffs stayed open. Set LESS=RX (git's defaults without F) for diff sessions so the pager always waits for q. A LESS set by the user via [env] still wins. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes the bug where delta closes instantly on some diffs.
Cause
git exports
LESS=FRXto its pager. TheF(quit-if-one-screen) flag makes delta'slessexit the moment a diff fits the pane, the diff session exits with it, andreap_exited_sessionscloses the tab before the user can read anything. Longer diffs are unaffected, which is why this reads as a length-dependent glitch.Fix
This PR makes it pass
LESS=RX(git's other defaults without theF), so the pager waits forqregardless of diff length. ALESSthe user set via[env]still wins, since the value is only inserted when the key is empty/missing.