Repository navigation
Highlighter: Mark every line of a multi-line offense output - #1999
Merged
Merged
Conversation
marcoroth
marked this pull request as ready for review
August 4, 2026 19:30
🌿 Interactive Playground and Documentation PreviewA preview deployment has been built for this pull request. Try out the changes live in the interactive playground: 🌱 Grown from commit ✅ Preview deployment has been cleaned up. |
commit: |
This branch was successfully deployed
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 pull request updates the Highlighter's diagnostic renderers so an offense that spans multiple lines is marked on every line it covers, instead of drawing a single marker on the start line using the end line's column.
Both renderers computed the marker as
end.column - start.columnanchored atstart.column, and never looked atlocation.end.lineat all. For an offense spanning(26:4)to(28:13)that produced a marker on line 26 running from column 4 to column 13, which is neither where the offense starts nor where it ends:Now every spanned line gets an arrow and a marker: the first line from
start.column, the last line up toend.column, and the lines in between across their non-whitespace content. The trailing context also runs off the end line rather than the start line, so the lines after the offense are actually visible:The marker geometry moves into a new
computeDiagnosticMarkers()helper indiagnostic-markers.ts, shared by both renderers so the split view (herb-lintdetailed output) and the whole-file inline view stay consistent. It returns one marker per line and skips lines with nothing to mark, so a blank line inside a span stays unmarked rather than collecting a stray marker.In the inline renderer the diagnostic message now renders under the last spanned line instead of the first, so it no longer sits wedged between the source lines of its own offense:
Resolves #1982