diff --git a/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java b/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java index 880570ba5128..85c8235d1f02 100644 --- a/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java +++ b/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java @@ -203,6 +203,9 @@ class InitialInfoBuilder { if (rootBlock instanceof ReadOnlyBlockInformationProvider) { myReadOnlyBlockInformationProvider = (ReadOnlyBlockInformationProvider)rootBlock; } + if (!isInsideFormattingRanges && !myCollectAlignmentsInsideFormattingRange) { + return processSimpleBlock(rootBlock, parent, true, index, parentBlock); + } final List subBlocks = rootBlock.getSubBlocks(); if (subBlocks.isEmpty() || myReadOnlyBlockInformationProvider != null @@ -237,10 +240,11 @@ class InitialInfoBuilder { } boolean blocksMayBeOfInterest = false; - if (myPositionOfInterest != -1) { + if (myPositionOfInterest != -1 && rootBlock.getTextRange().contains(myPositionOfInterest)) { myResult.put(wrappedRootBlock, rootBlock); blocksMayBeOfInterest = true; } + final boolean blocksAreReadOnly = rootBlock instanceof ReadOnlyBlockContainer || blocksMayBeOfInterest; State state = new State(rootBlock, wrappedRootBlock, currentWrapParent, blocksAreReadOnly, rootBlockIsRightBlock);