make exception filter return folding descriptor for groovy internals

This commit is contained in:
peter
2010-03-04 13:41:38 +00:00
parent 24d07c714f
commit aa61770c93
@@ -27,9 +27,12 @@ import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.ui.classFilter.ClassFilter;
import com.intellij.ui.classFilter.DebuggerClassFilterProvider;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
@@ -69,6 +72,7 @@ public class ExceptionFilter implements Filter, DumbAware {
final int lastDotIndex = line.lastIndexOf('.', lparenthIndex);
if (lastDotIndex < 0 || lastDotIndex < atIndex) return null;
String className = line.substring(atIndex + AT.length() + 1, lastDotIndex).trim();
final String fullName = className;
final int dollarIndex = className.indexOf('$');
if (dollarIndex >= 0){
className = className.substring(0, dollarIndex);
@@ -112,10 +116,23 @@ public class ExceptionFilter implements Filter, DumbAware {
attributes.setForegroundColor(color);
attributes.setEffectColor(color);
}
return new Result(highlightStartOffset, highlightEndOffset, info, attributes);
return new Result(highlightStartOffset, highlightEndOffset, info, attributes, getFoldingPlaceholder(fullName));
}
catch(NumberFormatException e){
return null;
}
}
@Nullable
private static String getFoldingPlaceholder(String className) {
for (DebuggerClassFilterProvider provider : DebuggerClassFilterProvider.EP_NAME.getExtensions()) {
for (ClassFilter filter : provider.getFilters()) {
final String pattern = filter.getPattern();
if (pattern.endsWith("*") && className.startsWith(pattern.substring(0, pattern.length() - 1))) {
return "...";
}
}
}
return null;
}
}