private void applyLinkResults()

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();
    }
  }