Change line-ending
default to auto
#8057
Merged
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.
Summary
This PR changes the
format.line-ending
default fromlf
toauto
.The motivation for defaulting to
lf
is to ensure all files in a project use the same line ending, regardless of the file author's platform. However, it has the downside that it results in unexpected line-ending changes for existing projects that use a mixture of\n
and\r\n
and projects that use windows only.We haven't received much feedback on the
lf
default, but there has been at least one occurrence where a user was confused about why Ruff changed all lines.They struggled to understand the changes because many diff viewers hide whitespace changes by default.
We also put them in an uncomfortable position because they were unfamiliar with line endings (the difference between
\n
and\r\n
) and didn't know what option to choose. So they defaulted toauto
because it seems like the most clever option that hopefully does the right thing for them.Breaking Change
While this is a breaking change because it changes the configuration, it doesn't require a new minor version because the formatter is still in alpha (excluded from versioning).
Test Plan
I added a new integration test that ensures the formatter preserves the line ending choice when run without any options.