in core/src/com/jediterm/terminal/model/hyperlinks/TextProcessing.java [157:185]
private void applyLinkResults(@NotNull List<LinkResultItem> linkResultItems,
@NotNull TextProcessing.LineInfoImpl lineInfo,
@NotNull String lineStr) {
boolean linkAdded = false;
int terminalWidth = lineInfo.myTerminalWidth;
String actualLineStr = joinLines(lineInfo.myLinesToProcess, terminalWidth);
if (!actualLineStr.equals(lineStr)) {
LOG.warn("Outdated lines when applying hyperlinks");
return;
}
for (LinkResultItem item : linkResultItems) {
if (item.getStartOffset() < 0 || item.getEndOffset() > lineStr.length()) continue;
TextStyle style = new HyperlinkStyle(myHyperlinkColor.getForeground(), myHyperlinkColor.getBackground(),
item.getLinkInfo(), myHighlightMode, null);
int prevLinesLength = 0;
for (TerminalLine line : lineInfo.myLinesToProcess) {
int startLineOffset = Math.max(prevLinesLength, item.getStartOffset());
int endLineOffset = Math.min(prevLinesLength + lineInfo.myTerminalWidth, item.getEndOffset());
if (startLineOffset < endLineOffset) {
line.writeString(startLineOffset - prevLinesLength, new CharBuffer(lineStr.substring(startLineOffset, endLineOffset)), style);
linkAdded = true;
}
prevLinesLength += terminalWidth;
}
}
if (linkAdded) {
fireHyperlinksChanged();
}
}