Line Ending Issue for external diff commands#97
Open
debjan wants to merge 1 commit intocolinta:mainfrom
Open
Conversation
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.
Problem
When using "Diff file with Saved" on Windows with CRLF line endings:
\r\n)\n) line endingsdiff_with_external()writes the temp file with LF line endingsRoot Cause
The
prep_content()method normalizes all line endings to LF:This is fine for internal Sublime diffs, but problematic for external diff tools comparing temp files.
Solution
Detect buffer line ending style and apply it when writing temp files for external diff:
get_buffer_line_ending()- Detect buffer line endingset_line_endings(content, line_ending)- Normalize all line endings in content to specified line endingdiff_with_external()- Apply detected line ending before writing temp filesFix Status
The fix preserves internal Sublime diff behavior while ensuring external diff tools receive properly line-ending-matched temp files.