async console filters: detect line removal earlier, allocate less memory (IDEA-163771)

This commit is contained in:
peter
2016-11-10 17:55:05 +01:00
parent edc467316a
commit 616eb7ec4f
2 changed files with 8 additions and 4 deletions
@@ -135,7 +135,7 @@ class AsyncFilterRunner {
List<Filter.Result> results = new ArrayList<>();
for (LineHighlighter task : tasks) {
ProgressManager.checkCanceled();
if (!marker.isValid()) return FilterResults.EMPTY;
if (!marker.isValid() || marker.getEndOffset() == 0) return FilterResults.EMPTY;
ContainerUtil.addIfNotNull(results, task.compute());
}
return new FilterResults(markerOffset, marker, results);
@@ -146,8 +146,8 @@ class AsyncFilterRunner {
private static LineHighlighter processLine(Document document, Filter filter, int line) {
int lineEnd = document.getLineEndOffset(line);
int endOffset = lineEnd + (lineEnd < document.getTextLength() ? 1 /* for \n */ : 0);
String text = EditorHyperlinkSupport.getLineText(document, line, true);
return () -> checkRange(filter, endOffset, filter.applyFilter(text, endOffset));
CharSequence text = EditorHyperlinkSupport.getLineSequence(document, line, true);
return () -> checkRange(filter, endOffset, filter.applyFilter(text.toString(), endOffset));
}
private static Filter.Result checkRange(Filter filter, int endOffset, Filter.Result result) {
@@ -371,11 +371,15 @@ public class EditorHyperlinkSupport {
@NotNull
public static String getLineText(@NotNull Document document, int lineNumber, boolean includeEol) {
return getLineSequence(document, lineNumber, includeEol).toString();
}
static CharSequence getLineSequence(@NotNull Document document, int lineNumber, boolean includeEol) {
int endOffset = document.getLineEndOffset(lineNumber);
if (includeEol && endOffset < document.getTextLength()) {
endOffset++;
}
return document.getImmutableCharSequence().subSequence(document.getLineStartOffset(lineNumber), endOffset).toString();
return document.getImmutableCharSequence().subSequence(document.getLineStartOffset(lineNumber), endOffset);
}
private static class HyperlinkInfoTextAttributes extends TextAttributes {