Java 类com.intellij.psi.SmartPsiFileRange 实例源码

项目:consulo    文件:ShredImpl.java   
ShredImpl(@Nonnull SmartPsiFileRange relevantRangeInHost,
          @Nonnull SmartPsiElementPointer<PsiLanguageInjectionHost> hostElementPointer,
          @Nonnull String prefix,
          @Nonnull String suffix,
          @Nonnull TextRange rangeInDecodedPSI,
          boolean usePsiRange,
          boolean isOneLine) {
  this.hostElementPointer = hostElementPointer;
  this.relevantRangeInHost = relevantRangeInHost;
  this.prefix = prefix;
  this.suffix = suffix;
  this.rangeInDecodedPSI = rangeInDecodedPSI;
  this.usePsiRange = usePsiRange;
  this.isOneLine = isOneLine;

  assertValid();
}
项目:consulo    文件:ShredImpl.java   
@Nonnull
ShredImpl withRange(@Nonnull TextRange rangeInDecodedPSI, @Nonnull TextRange rangeInHostElementPSI, @Nonnull PsiLanguageInjectionHost newHost) {
  SmartPsiFileRange rangeMarker = relevantRangeInHost;
  Segment oldRangeInHostElementPSI = calcRangeInsideHostElement(false);
  SmartPointerManager pointerManager = SmartPointerManager.getInstance(rangeMarker.getProject());
  SmartPsiElementPointer<PsiLanguageInjectionHost> newHostPointer = pointerManager.createSmartPsiElementPointer(newHost);

  if (!rangeInHostElementPSI.equals(TextRange.create(oldRangeInHostElementPSI))) {
    Segment hostElementRange = newHostPointer.getRange();
    rangeMarker =
            ((SmartPointerManagerImpl)pointerManager).createSmartPsiFileRangePointer(rangeMarker.getContainingFile(), rangeInHostElementPSI.shiftRight(hostElementRange.getStartOffset()), true);
  }
  return new ShredImpl(rangeMarker, newHostPointer, prefix, suffix, rangeInDecodedPSI, usePsiRange, isOneLine);
}