use of com.intellij.openapi.project.IndexNotReadyException in project intellij-community by JetBrains.
the class SmartElementDescriptor method update.
// Should be called in atomic action
@Override
public boolean update() {
PsiElement element = mySmartPointer.getElement();
if (element == null)
return true;
int flags = Iconable.ICON_FLAG_VISIBILITY;
if (isMarkReadOnly()) {
flags |= Iconable.ICON_FLAG_READ_STATUS;
}
Icon icon = null;
try {
icon = element.getIcon(flags);
} catch (IndexNotReadyException ignored) {
}
Color color = null;
if (isMarkModified()) {
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(element);
if (virtualFile != null) {
color = FileStatusManager.getInstance(myProject).getStatus(virtualFile).getColor();
}
}
if (CopyPasteManager.getInstance().isCutElement(element)) {
color = CopyPasteManager.CUT_COLOR;
}
boolean changes = !Comparing.equal(icon, getIcon()) || !Comparing.equal(color, myColor);
setIcon(icon);
myColor = color;
return changes;
}
use of com.intellij.openapi.project.IndexNotReadyException in project intellij-community by JetBrains.
the class CompletionAutoPopupHandler method invokeCompletion.
public static void invokeCompletion(@NotNull CompletionType completionType, boolean autopopup, Project project, Editor editor, int time, boolean restart) {
if (editor.isDisposed()) {
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
return;
}
// retrieve the injected file from scratch since our typing might have destroyed the old one completely
Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(editor);
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(topLevelEditor.getDocument());
if (file == null) {
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
return;
}
PsiFile topLevelFile = InjectedLanguageManager.getInstance(file.getProject()).getTopLevelFile(file);
if (!PsiDocumentManager.getInstance(project).isCommitted(editor.getDocument())) {
LOG.error("Non-committed document");
PsiDocumentManager.getInstance(project).commitAllDocuments();
}
Editor newEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(topLevelEditor, topLevelFile);
try {
CodeCompletionHandlerBase.createHandler(completionType, false, autopopup, false).invokeCompletion(project, newEditor, time, false, restart);
} catch (IndexNotReadyException ignored) {
}
}
use of com.intellij.openapi.project.IndexNotReadyException in project intellij-community by JetBrains.
the class GlobalInspectionContextImpl method inspectFile.
private void inspectFile(@NotNull final PsiFile file, @NotNull final InspectionManager inspectionManager, @NotNull List<Tools> localTools, @NotNull List<Tools> globalSimpleTools, @NotNull final Map<String, InspectionToolWrapper> wrappersMap) {
Document document = PsiDocumentManager.getInstance(getProject()).getDocument(file);
if (document == null)
return;
VirtualFile virtualFile = file.getVirtualFile();
String url = ProjectUtilCore.displayUrlRelativeToProject(virtualFile, virtualFile.getPresentableUrl(), getProject(), true, false);
incrementJobDoneAmount(getStdJobDescriptors().LOCAL_ANALYSIS, url);
final LocalInspectionsPass pass = new LocalInspectionsPass(file, document, 0, file.getTextLength(), LocalInspectionsPass.EMPTY_PRIORITY_RANGE, true, HighlightInfoProcessor.getEmpty());
try {
boolean includeDoNotShow = includeDoNotShow(getCurrentProfile());
final List<LocalInspectionToolWrapper> lTools = getWrappersFromTools(localTools, file, includeDoNotShow);
List<LocalInspectionToolWrapper> nonExternalAnnotators = lTools.stream().filter(wrapper -> !(wrapper.getTool() instanceof ExternalAnnotatorBatchInspection)).collect(Collectors.toList());
pass.doInspectInBatch(this, inspectionManager, nonExternalAnnotators);
List<GlobalInspectionToolWrapper> globalSTools = getWrappersFromTools(globalSimpleTools, file, includeDoNotShow);
final List<GlobalInspectionToolWrapper> tools = globalSTools.stream().filter(wrapper -> !(wrapper.getTool() instanceof ExternalAnnotatorBatchInspection)).collect(Collectors.toList());
JobLauncher.getInstance().invokeConcurrentlyUnderProgress(tools, myProgressIndicator, false, toolWrapper -> {
GlobalSimpleInspectionTool tool = (GlobalSimpleInspectionTool) toolWrapper.getTool();
ProblemsHolder holder = new ProblemsHolder(inspectionManager, file, false);
ProblemDescriptionsProcessor problemDescriptionProcessor = getProblemDescriptionProcessor(toolWrapper, wrappersMap);
tool.checkFile(file, inspectionManager, holder, this, problemDescriptionProcessor);
InspectionToolPresentation toolPresentation = getPresentation(toolWrapper);
LocalDescriptorsUtil.addProblemDescriptors(holder.getResults(), false, this, null, CONVERT, toolPresentation);
return true;
});
} catch (ProcessCanceledException e) {
final Throwable cause = e.getCause();
if (cause == null) {
throw e;
}
LOG.error("In file: " + file, cause);
} catch (IndexNotReadyException e) {
throw e;
} catch (Throwable e) {
LOG.error("In file: " + file.getName(), e);
} finally {
InjectedLanguageManager.getInstance(getProject()).dropFileCaches(file);
}
}
use of com.intellij.openapi.project.IndexNotReadyException in project intellij-community by JetBrains.
the class HighlightVisitorImpl method visitExpressionList.
@Override
public void visitExpressionList(PsiExpressionList list) {
super.visitExpressionList(list);
PsiElement parent = list.getParent();
if (parent instanceof PsiMethodCallExpression) {
PsiMethodCallExpression expression = (PsiMethodCallExpression) parent;
if (expression.getArgumentList() == list) {
PsiReferenceExpression referenceExpression = expression.getMethodExpression();
JavaResolveResult[] results = resolveOptimised(referenceExpression);
if (results == null)
return;
JavaResolveResult result = results.length == 1 ? results[0] : JavaResolveResult.EMPTY;
PsiElement resolved = result.getElement();
if ((!result.isAccessible() || !result.isStaticsScopeCorrect()) && !HighlightMethodUtil.isDummyConstructorCall(expression, myResolveHelper, list, referenceExpression) && // this check is for fake expression from JspMethodCallImpl
referenceExpression.getParent() == expression) {
try {
if (PsiTreeUtil.findChildrenOfType(expression.getArgumentList(), PsiLambdaExpression.class).isEmpty()) {
myHolder.add(HighlightMethodUtil.checkAmbiguousMethodCallArguments(referenceExpression, results, list, resolved, result, expression, myResolveHelper, list));
}
} catch (IndexNotReadyException ignored) {
}
}
}
}
}
use of com.intellij.openapi.project.IndexNotReadyException in project intellij-community by JetBrains.
the class PsiMethodTreeElement method getLocationString.
@Override
public String getLocationString() {
if (!Registry.is("show.method.base.class.in.java.file.structure"))
return null;
final PsiMethod method = getElement();
if (myLocation == null && method != null && !DumbService.isDumb(method.getProject())) {
if (isInherited()) {
return super.getLocationString();
} else {
try {
final MethodSignatureBackedByPsiMethod baseMethod = SuperMethodsSearch.search(method, null, true, false).findFirst();
if (baseMethod != null && !method.isEquivalentTo(baseMethod.getMethod())) {
PsiMethod base = baseMethod.getMethod();
PsiClass baseClass = base.getContainingClass();
if (baseClass != null) /*&& !CommonClassNames.JAVA_LANG_OBJECT.equals(baseClass.getQualifiedName())*/
{
if (baseClass.getMethods().length > 1) {
myLocation = baseClass.getName();
}
}
}
} catch (IndexNotReadyException e) {
//some searchers (EJB) require indices. What shall we do?
}
if (StringUtil.isEmpty(myLocation)) {
myLocation = "";
} else {
char upArrow = '↑';
myLocation = UIUtil.getLabelFont().canDisplay(upArrow) ? upArrow + myLocation : myLocation;
}
}
}
return StringUtil.isEmpty(myLocation) ? null : myLocation;
}
Aggregations