AbstractBlock: /s/isBuildInjectedBlocks/isBuildIndentsOnly/g webstorm/142.4509
authorSergey Ignatov <sergey.ignatov@jetbrains.com>
Wed, 2 Sep 2015 14:19:10 +0000 (17:19 +0300)
committerSergey Ignatov <sergey.ignatov@jetbrains.com>
Wed, 2 Sep 2015 14:21:42 +0000 (17:21 +0300)
java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java
platform/lang-impl/src/com/intellij/psi/codeStyle/autodetect/FormatterBasedLineIndentInfoBuilder.java
platform/lang-impl/src/com/intellij/psi/formatter/common/AbstractBlock.java
platform/lang-impl/src/com/intellij/psi/formatter/common/NewLineBlocksIterator.java

index 39b44d4adb7935a201de9df89c49f5bd5da459af..1fc8d9d896c65fc03cf1e9939e2f3c34a6eeb4dc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -193,7 +193,7 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
     if (isStatement(child, child.getTreeParent())) {
       return new CodeBlockBlock(child, wrap, alignment, actualIndent, settings, javaSettings);
     }
-    if (isBuildInjectedBlocks() &&
+    if (!isBuildIndentsOnly() &&
         child instanceof PsiComment &&
         child instanceof PsiLanguageInjectionHost &&
         InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)child)) {
@@ -372,10 +372,8 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
 
   @Nullable
   protected Wrap createChildWrap() {
-    if (!isBuildInjectedBlocks()) {
-      return null; //when detecting indent we do not care about wraps
-    }
-    return myWrapManager.createChildBlockWrap(this, getSettings(), this);
+    //when detecting indent we do not care about wraps
+    return isBuildIndentsOnly() ? null : myWrapManager.createChildBlockWrap(this, getSettings(), this);
   }
 
   @Nullable
@@ -836,10 +834,8 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
 
   @Nullable
   protected Wrap arrangeChildWrap(final ASTNode child, Wrap defaultWrap) {
-    if (!isBuildInjectedBlocks()) {
-      return null; //when detecting indent we do not care about wraps
-    }
-    return myWrapManager.arrangeChildWrap(child, myNode, mySettings, myJavaSettings, defaultWrap, this);
+    //when detecting indent we do not care about wraps
+    return isBuildIndentsOnly() ? null : myWrapManager.arrangeChildWrap(child, myNode, mySettings, myJavaSettings, defaultWrap, this);
   }
 
   @NotNull
index e18a834445e7fbaa9786ddd995450a2968decaa2..5ec44c04b72cc68aa1f4d077a1476fc318c47a3a 100644 (file)
@@ -26,6 +26,7 @@ import com.intellij.psi.PsiDocumentManager;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.codeStyle.CodeStyleSettings;
 import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
+import com.intellij.psi.formatter.common.AbstractBlock;
 import com.intellij.psi.formatter.common.NewLineBlocksIterator;
 import com.intellij.util.Function;
 import com.intellij.util.containers.ContainerUtil;
@@ -89,7 +90,10 @@ public class FormatterBasedLineIndentInfoBuilder {
       else {
         return false;
       }
-      
+
+      if (block instanceof AbstractBlock) {
+        ((AbstractBlock)block).setBuildIndentsOnly(true);
+      }
       List<Block> subBlocks = block.getSubBlocks();
       block = subBlocks.isEmpty() ? null : subBlocks.get(0);
     }
index d74cffa32d0759289e85efb11b5729f58a5d692d..f50b4481664edb2975941a6e4ed3c0626f331e9a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ public abstract class AbstractBlock implements ASTBlock {
 
   private List<Block> mySubBlocks;
   private Boolean myIncomplete;
-  private boolean myBuildInjectedBlocks = true;
+  private boolean myBuildIndentsOnly = false;
 
   protected AbstractBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment) {
     myNode = node;
@@ -72,17 +72,17 @@ public abstract class AbstractBlock implements ASTBlock {
    * Prevents from building injected blocks, which allows to build blocks faster
    * Initially was made for formatting-based indent detector
    */
-  protected void setBuildInjectedBlocks(boolean value) {
-    myBuildInjectedBlocks = value;
+  public void setBuildIndentsOnly(boolean value) {
+    myBuildIndentsOnly = value;
   }
 
-  protected boolean isBuildInjectedBlocks() {
-    return myBuildInjectedBlocks;
+  protected boolean isBuildIndentsOnly() {
+    return myBuildIndentsOnly;
   }
 
   @NotNull
   private List<Block> buildInjectedBlocks() {
-    if (!myBuildInjectedBlocks) {
+    if (myBuildIndentsOnly) {
       return EMPTY;
     }
     if (!(this instanceof SettingsAwareBlock)) {
index b42a109efb0f4b03882b89e776f056a1a2c4753a..25e8669c92416a489ef34b84d85a42774bad7fa5 100644 (file)
@@ -19,8 +19,10 @@ import com.intellij.formatting.Block;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.util.TextRange;
 
-import java.util.*;
-
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Stack;
 
 public class NewLineBlocksIterator implements Iterator<Block> {
   private final Document myDocument;
@@ -89,7 +91,7 @@ public class NewLineBlocksIterator implements Iterator<Block> {
   private void pushAll(Block current) {
     if (current instanceof AbstractBlock) {
       //building blocks as fast as possible
-      ((AbstractBlock)current).setBuildInjectedBlocks(false);
+      ((AbstractBlock)current).setBuildIndentsOnly(true);
     }
 
     List<Block> blocks = current.getSubBlocks();