boolean (GroovyFile myFile, Editor editor) { if (!CodeInsightWorkspaceSettings.getInstance(myFile.getProject()).isOptimizeImportsOnTheFly()) { return false; } if (onTheFly && editor != null) { // if we stand inside import statements, do not optimize final VirtualFile vfile = myFile.getVirtualFile(); if (vfile != null && ProjectRootManager.getInstance(myFile.getProject()).getFileIndex().isInSource(vfile)) { final GrImportStatement[] imports = myFile.getImportStatements(); if (imports.length > 0) { final int offset = editor.getCaretModel().getOffset(); if (imports[0].getTextRange().getStartOffset() <= offset && offset <= imports[imports.length - 1].getTextRange().getEndOffset()) { return false; } } } } DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myFile.getProject()); if (!codeAnalyzer.isHighlightingAvailable(myFile)) return false; if (!codeAnalyzer.isErrorAnalyzingFinished(myFile)) return false; Document myDocument = PsiDocumentManager.getInstance(myFile.getProject()).getDocument(myFile); boolean errors = containsErrorsPreventingOptimize(myFile, myDocument); // computed in GroovyPostHighlightingPass.doCollectInformation() boolean isInContent = true; return !errors && DaemonListeners.canChangeFileSilently(myFile, isInContent, ThreeState.UNSURE); }