IDEA-147611 Live Preview: Editing stops working after editing BNF

This commit is contained in:
Gregory.Shrago
2016-03-15 00:02:58 +03:00
parent 4d2f17ef98
commit 044d87e9e3
3 changed files with 7 additions and 21 deletions
@@ -28,6 +28,7 @@ import com.intellij.psi.LanguageSubstitutors;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.templateLanguages.TemplateLanguage;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -58,7 +59,9 @@ public final class LanguageUtil {
@Nullable
public static Language getFileLanguage(@Nullable VirtualFile file) {
return file == null ? null : getFileTypeLanguage(file.getFileType());
if (file == null) return null;
Language l = file instanceof LightVirtualFile? ((LightVirtualFile)file).getLanguage() : null;
return l != null ? l : getFileTypeLanguage(file.getFileType());
}
@Nullable
@@ -128,13 +128,6 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi
}
private static Language calcBaseLanguage(@NotNull VirtualFile file, @NotNull Project project, @NotNull final FileType fileType) {
if (file instanceof LightVirtualFile) {
final Language language = ((LightVirtualFile)file).getLanguage();
if (language != null) {
return language;
}
}
if (fileType.isBinary()) return Language.ANY;
if (isTooLargeForIntelligence(file)) return PlainTextLanguage.INSTANCE;
@@ -19,12 +19,12 @@ package com.intellij.psi.impl.file.impl;
import com.intellij.injected.editor.DocumentWindow;
import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.lang.Language;
import com.intellij.lang.LanguageUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.FileIndexFacade;
@@ -136,7 +136,7 @@ public class FileManagerImpl implements FileManager {
myVFileToViewProviderMap.clear();
for (Iterator<VirtualFile> iterator = fileToPsiFileMap.keySet().iterator(); iterator.hasNext();) {
VirtualFile vFile = iterator.next();
Language language = getLanguage(vFile, vFile.getFileType());
Language language = LanguageUtil.getLanguageForPsi(myManager.getProject(), vFile);
if (language != null && language != fileToPsiFileMap.get(vFile).getBaseLanguage()) {
iterator.remove();
}
@@ -274,7 +274,7 @@ public class FileManagerImpl implements FileManager {
@NotNull
public FileViewProvider createFileViewProvider(@NotNull final VirtualFile file, boolean eventSystemEnabled) {
FileType fileType = file.getFileType();
Language language = getLanguage(file, fileType);
Language language = LanguageUtil.getLanguageForPsi(myManager.getProject(), file);
FileViewProviderFactory factory = language == null
? FileTypeFileViewProviders.INSTANCE.forFileType(fileType)
: LanguageFileViewProviders.INSTANCE.forLanguage(language);
@@ -283,16 +283,6 @@ public class FileManagerImpl implements FileManager {
return viewProvider == null ? new SingleRootFileViewProvider(myManager, file, eventSystemEnabled, fileType) : viewProvider;
}
@Nullable
private Language getLanguage(@NotNull VirtualFile file, final FileType fileType) {
if (fileType instanceof LanguageFileType) {
Language language = ((LanguageFileType)fileType).getLanguage();
return LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, myManager.getProject());
}
return null;
}
public void markInitialized() {
LOG.assertTrue(!myInitialized);
myDisposed = false;