don't load AST in HighlightingSettingsPerFile.getHighlightingSettingForRoot
authorpeter <peter@jetbrains.com>
Wed, 28 Oct 2015 15:40:17 +0000 (16:40 +0100)
committerpeter <peter@jetbrains.com>
Wed, 28 Oct 2015 16:03:44 +0000 (17:03 +0100)
platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java
platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightingSettingsPerFile.java

index b63ee1d6ab2d40e42654c3902cc740ee6148f98b..bebc2ae49532050b2e654082ff7a5c22639ec204 100644 (file)
@@ -53,14 +53,8 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil {
     }
   };
 
-  public static int getRootIndex(PsiElement root) {
-    ASTNode node = root.getNode();
-    while(node != null && node.getTreeParent() != null) {
-      node = node.getTreeParent();
-    }
-    if(node != null) root = node.getPsi();
-    final PsiFile containingFile = root.getContainingFile();
-    FileViewProvider provider = containingFile.getViewProvider();
+  public static int getRootIndex(PsiFile file) {
+    FileViewProvider provider = file.getViewProvider();
     Set<Language> languages = provider.getLanguages();
     if (languages.size() == 1) {
       return 0;
@@ -69,9 +63,9 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil {
     Collections.sort(array, LANGUAGE_COMPARATOR);
     for (int i = 0; i < array.size(); i++) {
       Language language = array.get(i);
-      if (provider.getPsi(language) == containingFile) return i;
+      if (provider.getPsi(language) == file) return i;
     }
-    throw new RuntimeException("Cannot find root for: "+root);
+    throw new RuntimeException("Cannot find root for: "+ file);
   }
 
   public static boolean isUnderPsiRoot(PsiFile root, PsiElement element) {
index ff5c27ad756c625f2db2bc24aa9d2f278d1e0ca7..836a946f62292ccf9f09a1f848f75d7e8311e534 100644 (file)
@@ -53,7 +53,7 @@ public class HighlightingSettingsPerFile extends HighlightingLevelManager implem
     final PsiFile containingFile = root.getContainingFile();
     final VirtualFile virtualFile = containingFile.getVirtualFile();
     FileHighlightingSetting[] fileHighlightingSettings = myHighlightSettings.get(virtualFile);
-    final int index = PsiUtilBase.getRootIndex(root);
+    final int index = PsiUtilBase.getRootIndex(containingFile);
 
     if(fileHighlightingSettings == null || fileHighlightingSettings.length <= index) {
       return getDefaultHighlightingSetting(root.getProject(), virtualFile);
@@ -91,7 +91,7 @@ public class HighlightingSettingsPerFile extends HighlightingLevelManager implem
     final VirtualFile virtualFile = containingFile.getVirtualFile();
     if (virtualFile == null) return;
     FileHighlightingSetting[] defaults = myHighlightSettings.get(virtualFile);
-    int rootIndex = PsiUtilBase.getRootIndex(root);
+    int rootIndex = PsiUtilBase.getRootIndex(containingFile);
     if (defaults != null && rootIndex >= defaults.length) defaults = null;
     if (defaults == null) defaults = getDefaults(containingFile);
     defaults[rootIndex] = setting;