private final VirtualFile myVirtualFile;
private final Project myProject;
private final Language myLanguage;
+ private final Language myFileLanguage;
private final int myStartOffset;
private final int myEndOffset;
private final Class myClass;
myEndOffset = endOffset;
myClass = aClass;
myLanguage = language;
+ myFileLanguage = file.getLanguage();
}
@Override
}
@Override
+ @Nullable
public PsiFile getFile() {
- return SelfElementInfo.restoreFileFromVirtual(myVirtualFile, myProject);
+ return SelfElementInfo.restoreFileFromVirtual(myVirtualFile, myProject, myLanguage);
}
@Override
@Nullable
public static PsiFile restoreFileFromVirtual(final VirtualFile virtualFile, @NotNull final Project project) {
+ return restoreFileFromVirtual(virtualFile, project, null);
+ }
+ @Nullable
+ public static PsiFile restoreFileFromVirtual(final VirtualFile virtualFile, @NotNull final Project project, @Nullable final Language language) {
if (virtualFile == null) return null;
- return ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
+ return ApplicationManager.getApplication().runReadAction(new NullableComputable<PsiFile>() {
@Override
public PsiFile compute() {
VirtualFile child;
}
if (child == null || !child.isValid()) return null;
PsiFile file = PsiManager.getInstance(project).findFile(child);
- if (file == null || !file.isValid()) return null;
+ if (file != null && language != null) {
+ return file.getViewProvider().getPsi(language);
+ }
+
return file;
}
});