From fdd1141a804899098f2b1d112a281139b5991c76 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 4 Aug 2011 13:03:56 +0200 Subject: [PATCH] PsiUtilBase.originalElement => CompletionUtil.originalElement --- .../completion/CompletionUtil.java | 20 +++++++++++-------- .../inject/TemporaryPlacesInjector.java | 4 ++-- .../impl/providers/DtdReferencesProvider.java | 4 ++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java index b5597cb1d6a0..123788e93f30 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java @@ -229,7 +229,11 @@ public class CompletionUtil { @Nullable private static Integer translateOffset(int offset, DocumentEvent event) { - if (event.getOffset() < offset && offset < event.getNewLength()) { + if (event.getOffset() < offset && offset < event.getOffset() + event.getNewLength()) { + if (event.getOldLength() == 0) { + return event.getOffset(); + } + return null; } @@ -255,24 +259,24 @@ public class CompletionUtil { public static T getOriginalElement(@NotNull T psi) { final PsiFile file = psi.getContainingFile(); if (file != null && file != file.getOriginalFile()) { + TextRange range = psi.getTextRange(); + Integer start = range.getStartOffset(); + Integer end = range.getEndOffset(); final Document document = file.getViewProvider().getDocument(); if (document != null) { final List translator = document.getUserData(RANGE_TRANSLATION); if (translator != null) { - TextRange range = psi.getTextRange(); - Integer start = range.getStartOffset(); - Integer end = range.getEndOffset(); for (DocumentEvent event : translator) { - start = translateOffset(range.getStartOffset(), event); - end = translateOffset(range.getEndOffset(), event); + start = translateOffset(start, event); + end = translateOffset(end, event); if (start == null || end == null) { return null; } } - - return (T)PsiTreeUtil.findElementOfClassAtRange(file.getOriginalFile(), start, end, psi.getClass()); } } + //noinspection unchecked + return (T)PsiTreeUtil.findElementOfClassAtRange(file.getOriginalFile(), start, end, psi.getClass()); } return psi; diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java index b29eeda1e1c0..dba5a9fd3a4c 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java @@ -16,6 +16,7 @@ package org.intellij.plugins.intelliLang.inject; +import com.intellij.codeInsight.completion.CompletionUtil; import com.intellij.lang.injection.MultiHostInjector; import com.intellij.lang.injection.MultiHostRegistrar; import com.intellij.openapi.diagnostic.Logger; @@ -24,7 +25,6 @@ import com.intellij.psi.ElementManipulator; import com.intellij.psi.ElementManipulators; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; -import com.intellij.psi.util.PsiUtilBase; import org.jetbrains.annotations.NotNull; import java.util.Collections; @@ -50,7 +50,7 @@ public class TemporaryPlacesInjector implements MultiHostInjector { public void getLanguagesToInject(@NotNull final MultiHostRegistrar registrar, @NotNull final PsiElement context) { final PsiLanguageInjectionHost host = (PsiLanguageInjectionHost)context; - final PsiLanguageInjectionHost originalHost = PsiUtilBase.getOriginalElement(host, host.getClass()); + final PsiLanguageInjectionHost originalHost = CompletionUtil.getOriginalElement(host); final List list = myRegistry.getTempInjectionsSafe(originalHost); if (list.isEmpty()) return; final ElementManipulator manipulator = ElementManipulators.getManipulator(host); diff --git a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/DtdReferencesProvider.java b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/DtdReferencesProvider.java index 802eb44ba15f..4a3fcbaddf4a 100644 --- a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/DtdReferencesProvider.java +++ b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/DtdReferencesProvider.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.impl.source.resolve.reference.impl.providers; +import com.intellij.codeInsight.completion.CompletionUtil; import com.intellij.codeInsight.daemon.EmptyResolveMessageProvider; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.LocalQuickFixProvider; @@ -27,7 +28,6 @@ import com.intellij.psi.impl.source.xml.XmlEntityRefImpl; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtilBase; import com.intellij.psi.xml.*; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; @@ -147,7 +147,7 @@ public class DtdReferencesProvider extends PsiReferenceProvider { @Nullable private static XmlNSDescriptor getNsDescriptor(XmlElement element) { final XmlElement parentThatProvidesMetaData = PsiTreeUtil.getParentOfType( - PsiUtilBase.getOriginalElement(element, element.getClass()), + CompletionUtil.getOriginalElement(element), XmlDocument.class, XmlMarkupDecl.class );