removed deprecated "findInjectedElementNoCommit" usages

This commit is contained in:
Alexey Kudravtsev
2017-12-01 18:02:37 +03:00
parent 698f377768
commit 4c7da02fec
7 changed files with 22 additions and 10 deletions
@@ -79,6 +79,12 @@ public abstract class InjectedLanguageManager {
public abstract boolean isInjectedFragment(@NotNull PsiFile file);
/**
* Finds PSI element in injected fragment (if any) at the given offset in the host file.<p/>
* E.g. if you injected XML {@code "<xxx/>"} into Java string literal {@code "String s = "<xxx/>";"} and the caret is at {@code "xxx"} then
* this method will return XmlToken(XML_TAG_START) with the text {@code "xxx"}.<br/>
* Invocation of this method on uncommitted {@code hostFile} can lead to unexpected results, including throwing an exception!
*/
@Nullable
public abstract PsiElement findInjectedElementAt(@NotNull PsiFile hostFile, int hostDocumentOffset);
@@ -29,6 +29,7 @@ import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.ide.DataManager;
import com.intellij.injected.editor.DocumentWindow;
import com.intellij.lang.Language;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DataContext;
@@ -240,7 +241,7 @@ public class CodeCompletionHandlerBase {
int offset = editor.getCaretModel().getOffset();
int psiOffset = Math.max(0, offset - 1);
PsiElement elementAt = InjectedLanguageUtil.findInjectedElementNoCommit(psiFile, psiOffset);
PsiElement elementAt = InjectedLanguageManager.getInstance(psiFile.getProject()).findInjectedElementAt(psiFile, psiOffset);
if (elementAt == null) {
elementAt = psiFile.findElementAt(psiOffset);
}
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.codeInsight.hint.EditorFragmentComponent;
import com.intellij.injected.editor.EditorWindow;
import com.intellij.lang.Language;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
@@ -190,7 +191,7 @@ public class BraceHighlightingHandler {
Document document = editor.getDocument();
// when document is committed, try to highlight braces in injected lang - it's fast
if (PsiDocumentManager.getInstance(project).isCommitted(document)) {
final PsiElement injectedElement = InjectedLanguageUtil.findInjectedElementNoCommit(psiFile, offset);
final PsiElement injectedElement = InjectedLanguageManager.getInstance(psiFile.getProject()).findInjectedElementAt(psiFile, offset);
if (injectedElement != null /*&& !(injectedElement instanceof PsiWhiteSpace)*/) {
final PsiFile injected = injectedElement.getContainingFile();
if (injected != null) {
@@ -59,7 +59,7 @@ public class CustomTemplateCallback {
myTemplateManager = TemplateManager.getInstance(myProject);
myOffset = getOffset(editor);
PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, myOffset);
PsiElement element = InjectedLanguageManager.getInstance(file.getProject()).findInjectedElementAt(file, myOffset);
myFile = element != null ? element.getContainingFile() : file;
myInInjectedFragment = InjectedLanguageManager.getInstance(myProject).isInjectedFragment(myFile);
@@ -171,7 +171,7 @@ public class CustomTemplateCallback {
AttachmentFactory.createAttachment(file.getVirtualFile()));
}
else {
element = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset);
element = InjectedLanguageManager.getInstance(file.getProject()).findInjectedElementAt(file, offset);
}
}
if (element == null) {
@@ -20,6 +20,7 @@ import com.intellij.formatting.Block;
import com.intellij.formatting.FormattingDocumentModel;
import com.intellij.formatting.FormattingModelEx;
import com.intellij.lang.ASTNode;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
@@ -86,7 +87,7 @@ public class PsiBasedFormattingModel implements FormattingModelEx {
if (leafElement != null) {
PsiFile hostFile = myASTNode.getPsi().getContainingFile();
PsiElement injectedElement = InjectedLanguageUtil.findInjectedElementNoCommit(hostFile, offset);
PsiElement injectedElement = InjectedLanguageManager.getInstance(hostFile.getProject()).findInjectedElementAt(hostFile, offset);
TextRange effectiveRange = injectedElement != null ? rangeInInjectedDocument(textRange, injectedElement) : null;
if (effectiveRange == null) {
@@ -151,7 +152,8 @@ public class PsiBasedFormattingModel implements FormattingModelEx {
assert !PsiDocumentManager.getInstance(project).isUncommited(myDocumentModel.getDocument());
// TODO:default project can not be used for injections, because latter might wants (unavailable) indices
PsiElement psiElement = project.isDefault() ? null : InjectedLanguageUtil.findInjectedElementNoCommit(containingFile, offset);
PsiElement psiElement = project.isDefault() ? null : InjectedLanguageManager.getInstance(containingFile.getProject())
.findInjectedElementAt(containingFile, offset);
if (psiElement != null) {
return psiElement.getNode();
}
@@ -43,7 +43,6 @@ import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.impl.source.tree.FileElement;
import com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor;
import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.util.CharTable;
import com.intellij.util.IncorrectOperationException;
@@ -560,7 +559,7 @@ public class CodeStyleManagerImpl extends CodeStyleManager implements Formatting
if (!(astNode instanceof FileElement)) {
return new Pair<>(null, null);
}
PsiElement elementAt = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset);
PsiElement elementAt = InjectedLanguageManager.getInstance(file.getProject()).findInjectedElementAt(file, offset);
final CharTable charTable = ((FileElement)astNode).getCharTable();
if (elementAt == null) {
elementAt = findElementInTreeWithFormatterEnabled(file, offset);
@@ -15,10 +15,11 @@
*/
package com.jetbrains.python;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.jetbrains.python.fixtures.PyTestCase;
/**
@@ -75,7 +76,9 @@ public class PyWrapTest extends PyTestCase {
myFixture.configureByFile("wrap/WrapInStringLiteral.py");
final int stringLiteralOffset = 114;
assertNotNull(InjectedLanguageUtil.findInjectedElementNoCommit(myFixture.getFile(), stringLiteralOffset + "\"".length()));
PsiFile hostFile = myFixture.getFile();
assertNotNull(
InjectedLanguageManager.getInstance(hostFile.getProject()).findInjectedElementAt(hostFile, stringLiteralOffset + "\"".length()));
myFixture.type(" AND field");
myFixture.checkResultByFile("wrap/WrapInStringLiteral.after.py", true);