aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-01-01 10:56:32 +0000
committerMichael Williamson <mike@zwobble.org>2025-01-01 10:56:32 +0000
commit7ff404bab52df237606f2018ccab722b05beb955 (patch)
treeca5f4e25d5ba63aae1e28c97420f6da692ca6d30 /src/main/java
parent26f165d9c04ecd8bd57a39641e9df4f01112de8d (diff)
Highlight ranges in source description
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java9
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);
}
}