Formatter: Improve element and blank line spacing #886
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 pull request updates the formatter to add intelligent element grouping and improved multiline element spacing.
The formatter now uses
capture()to render each element and checks if the output is multiline. If we have multiline elements we add surrounding newlines to help visually separate them. This is in favor of the previous hard-coded list of elements that had this behavior, which should make it more natural and consistent.The formatter now groups consecutive same-type single-line elements together. When there are 2 or more consecutive single-line elements of the same tag type (like
<meta>,<link>, or ERB tags), they're kept together with no spacing within the group, and spacing is only added at boundaries between different groups.Single-line comments stay attached to following elements without spacing, but when both a comment and the following element are multiline, spacing is added between them for better readability.
Resolves #504
Resolves #881