// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.execution;
+import com.intellij.execution.ui.ConsoleView;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
return getPlaceholderText(lines);
}
+ public boolean isEnabledForConsole(@NotNull ConsoleView consoleView) {
+ return true;
+ }
+
/**
* @param line to check if should be folded
* @return {@code true} if line should be folded, {@code false} if not
existingRegion = regions[0];
}
}
- String lastFoldingFqn = USED_FOLDING_FQN_KEY.get(existingRegion);
- ConsoleFolding lastFolding = lastFoldingFqn != null
- ? ConsoleFolding.EP_NAME.getByKey(lastFoldingFqn, ConsoleViewImpl.class,
- consoleFolding -> consoleFolding.getClass().getName())
- : null;
+ ConsoleFolding lastFolding = findFoldingByRegion(existingRegion);
int lastStartLine = Integer.MAX_VALUE;
if (lastFolding != null) {
int offset = existingRegion.getStartOffset();
FoldRegion region = placeholder == null ? null : myEditor.getFoldingModel().addFoldRegion(oStart, oEnd, placeholder);
if (region != null) {
region.setExpanded(isExpanded);
- region.putUserData(USED_FOLDING_FQN_KEY, folding.getClass().getName());
+ region.putUserData(USED_FOLDING_FQN_KEY, getFoldingFqn(folding));
}
}
+ @Nullable
+ @Contract("null -> null")
+ private ConsoleFolding findFoldingByRegion(@Nullable FoldRegion region) {
+ String lastFoldingFqn = USED_FOLDING_FQN_KEY.get(region);
+ if (lastFoldingFqn == null) return null;
+ ConsoleFolding consoleFolding = ConsoleFolding.EP_NAME.getByKey(lastFoldingFqn, ConsoleViewImpl.class, ConsoleViewImpl::getFoldingFqn);
+ return consoleFolding != null && consoleFolding.isEnabledForConsole(this) ? consoleFolding : null;
+ }
+
+ @NotNull
+ private static String getFoldingFqn(@NotNull ConsoleFolding consoleFolding) {
+ return consoleFolding.getClass().getName();
+ }
+
@Nullable
private ConsoleFolding foldingForLine(int line, @NotNull Document document) {
String lineText = EditorHyperlinkSupport.getLineText(document, line, false);
}
for (ConsoleFolding extension : ConsoleFolding.EP_NAME.getExtensions()) {
- if (extension.shouldFoldLine(myProject, lineText)) {
+ if (extension.isEnabledForConsole(this) && extension.shouldFoldLine(myProject, lineText)) {
return extension;
}
}
package git4idea.console
import com.intellij.execution.ConsoleFolding
+import com.intellij.execution.ui.ConsoleView
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.openapi.util.text.StringUtil
import com.intellij.vcs.console.VcsConsoleFolding
import com.intellij.vcs.console.VcsConsoleFolding.Placeholder
+import com.intellij.vcs.console.VcsConsoleView
import git4idea.commands.GitImplBase
import java.util.regex.Matcher
import java.util.regex.Pattern
override fun shouldFoldLine(project: Project, line: String): Boolean {
return GitImplBase.looksLikeProgress(line)
}
+
+ override fun isEnabledForConsole(consoleView: ConsoleView): Boolean {
+ return consoleView is VcsConsoleView
+ }
}
\ No newline at end of file