mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-147611 Live Preview: Editing stops working after editing BNF
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user