}
};
- 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;
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) {
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);
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;