From 3fb4f7efeebbb67c8c3fecb9d79893aba1f54a55 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 26 Dec 2014 15:26:26 +0300 Subject: [PATCH] detecting facelets after dumb mode --- .../psi/impl/file/impl/FileManagerImpl.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java index b4dda74e39a6..a34c2c8b5539 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java @@ -126,10 +126,24 @@ public class FileManagerImpl implements FileManager { } } removeInvalidFilesAndDirs(false); + checkLanguageChange(); } }); } + private void checkLanguageChange() { + Map fileToPsiFileMap = new THashMap(myVFileToViewProviderMap); + myVFileToViewProviderMap.clear(); + for (Iterator iterator = fileToPsiFileMap.keySet().iterator(); iterator.hasNext();) { + VirtualFile vFile = iterator.next(); + Language language = getLanguage(vFile); + if (language != null && language != fileToPsiFileMap.get(vFile).getBaseLanguage()) { + iterator.remove(); + } + } + myVFileToViewProviderMap.putAll(fileToPsiFileMap); + } + public void forceReload(@NotNull VirtualFile vFile) { if (findCachedViewProvider(vFile) == null) { return; @@ -231,6 +245,11 @@ public class FileManagerImpl implements FileManager { @NotNull public FileViewProvider createFileViewProvider(@NotNull final VirtualFile file, boolean eventSystemEnabled) { Language language = getLanguage(file); + return createFileViewProvider(file, eventSystemEnabled, language); + } + + @NotNull + private FileViewProvider createFileViewProvider(@NotNull VirtualFile file, boolean eventSystemEnabled, Language language) { final FileViewProviderFactory factory = language == null ? FileTypeFileViewProviders.INSTANCE.forFileType(file.getFileType()) : LanguageFileViewProviders.INSTANCE.forLanguage(language);