From 2358fa76eafd1541987e41bbf24c128ffca296a5 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 11 Sep 2015 13:19:11 +0200 Subject: [PATCH] when retrieving injected smart pointer's file, use faster getPsiRange (and last committed document window) instead of getRange --- .../smartPointers/InjectedSelfElementInfo.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java index 74231e711285..67365ce2e2ac 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java @@ -122,15 +122,18 @@ class InjectedSelfElementInfo extends SmartPointerElementInfo { private PsiFile getInjectedFileIn(@NotNull final PsiElement hostContext, @NotNull final PsiFile hostFile, @NotNull final TextRange rangeInHostFile) { - final InjectedLanguageManager manager = InjectedLanguageManager.getInstance(getProject()); + final PsiDocumentManagerBase docManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(getProject()); final PsiFile[] result = {null}; final PsiLanguageInjectionHost.InjectedPsiVisitor visitor = new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { - TextRange hostRange = manager.injectedToHost(injectedPsi, new TextRange(0, injectedPsi.getTextLength())); - Document document = PsiDocumentManager.getInstance(getProject()).getDocument(injectedPsi); - if (hostRange.contains(rangeInHostFile) && document instanceof DocumentWindow) { - result[0] = injectedPsi; + Document document = docManager.getDocument(injectedPsi); + if (document instanceof DocumentWindow) { + DocumentWindow window = (DocumentWindow)docManager.getLastCommittedDocument(document); + TextRange hostRange = window.injectedToHost(new TextRange(0, injectedPsi.getTextLength())); + if (hostRange.contains(rangeInHostFile)) { + result[0] = injectedPsi; + } } } }; @@ -175,7 +178,7 @@ class InjectedSelfElementInfo extends SmartPointerElementInfo { PsiElement hostContext = myHostContext.getElement(); if (hostContext == null) return null; - Segment segment = myInjectedFileRangeInHostFile.getRange(); + Segment segment = myInjectedFileRangeInHostFile.getPsiRange(); if (segment == null) return null; final TextRange rangeInHostFile = TextRange.create(segment); return getInjectedFileIn(hostContext, hostFile, rangeInHostFile);