diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-01-01 10:56:32 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-01-01 10:56:32 +0000 |
| commit | 7ff404bab52df237606f2018ccab722b05beb955 (patch) | |
| tree | ca5f4e25d5ba63aae1e28c97420f6da692ca6d30 /src/main/java | |
| parent | 26f165d9c04ecd8bd57a39641e9df4f01112de8d (diff) | |
Highlight ranges in source description
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java b/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java index fe0c6271..0fc05672 100644 --- a/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java +++ b/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java @@ -22,7 +22,10 @@ public record FileFragmentSource( return context( line, lineIndex, - characterIndexStart - position + characterIndexStart - position, + nextLinePosition <= characterIndexEnd + ? 1 + : Math.max(characterIndexEnd - characterIndexStart, 1) ); } position = nextLinePosition; @@ -64,9 +67,9 @@ public record FileFragmentSource( return at(length, length); } - private String context(String line, int lineIndex, int columnIndex) { + private String context(String line, int lineIndex, int columnIndex, int length) { var lineNumber = lineIndex + 1; var columnNumber = columnIndex + 1; - return filename + ":" + lineNumber + ":" + columnNumber + "\n" + line + "\n" + " ".repeat(columnIndex) + "^"; + return filename + ":" + lineNumber + ":" + columnNumber + "\n" + line + "\n" + " ".repeat(columnIndex) + "^".repeat(length); } } |
