concurrent injected highlight

This commit is contained in:
Alexey Kudravtsev
2011-04-06 12:05:28 +04:00
parent 0836d5ff07
commit bb0fa00b6e
@@ -316,15 +316,21 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
hosts.addAll(elements1);
hosts.addAll(elements2);
PsiLanguageInjectionHost.InjectedPsiVisitor visitor = new PsiLanguageInjectionHost.InjectedPsiVisitor() {
final PsiLanguageInjectionHost.InjectedPsiVisitor visitor = new PsiLanguageInjectionHost.InjectedPsiVisitor() {
public void visit(@NotNull PsiFile injectedPsi, @NotNull List<PsiLanguageInjectionHost.Shred> places) {
outInjected.add(injectedPsi);
synchronized (outInjected) {
outInjected.add(injectedPsi);
}
}
};
for (PsiElement element : hosts) {
progress.checkCanceled();
InjectedLanguageUtil.enumerate(element, myFile, visitor, false);
}
if (!JobUtil.invokeConcurrentlyUnderProgress(new ArrayList<PsiElement>(hosts), new Processor<PsiElement>() {
@Override
public boolean process(PsiElement element) {
progress.checkCanceled();
InjectedLanguageUtil.enumerate(element, myFile, visitor, false);
return true;
}
}, false, progress)) throw new ProcessCanceledException();
}
// returns false if canceled