mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
async console filters: detect line removal earlier, allocate less memory (IDEA-163771)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user