From f4e2842b9335e000da9778b32c7bccfd4980ddc8 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 4 Oct 2013 13:56:27 +0400 Subject: [PATCH] IDEA-114241 detect fileType when document is fetched --- .../fileEditor/impl/FileDocumentManagerImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java index 6ee46f6dca37..cd979c47f736 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java @@ -81,8 +81,6 @@ import java.lang.reflect.Proxy; import java.util.*; import java.util.List; -import static com.intellij.reference.SoftReference.dereference; - public class FileDocumentManagerImpl extends FileDocumentManager implements ApplicationComponent, VirtualFileListener, ProjectManagerListener, SafeWriteRequestor { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl"); @@ -169,9 +167,14 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Appl public Document getDocument(@NotNull final VirtualFile file) { DocumentEx document = (DocumentEx)getCachedDocument(file); if (document == null) { - if (file.isDirectory() || isBinaryWithoutDecompiler(file) || SingleRootFileViewProvider.isTooLargeForContentLoading(file)) { + if (file.isDirectory() || SingleRootFileViewProvider.isTooLargeForContentLoading(file)) { return null; } + if (isBinaryWithoutDecompiler(file)) { + FileType fileType = file.getFileType(); + if (fileType == UnknownFileType.INSTANCE) fileType = FileTypeManager.getInstance().detectFileTypeFromContent(file); + if (fileType.isBinary()) return null; + } final CharSequence text = LoadTextUtil.loadText(file); synchronized (lock) { @@ -230,7 +233,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Appl @Override @Nullable public Document getCachedDocument(@NotNull VirtualFile file) { - return dereference(file.getUserData(DOCUMENT_KEY)); + return com.intellij.reference.SoftReference.dereference(file.getUserData(DOCUMENT_KEY)); } public static void registerDocument(@NotNull final Document document, @NotNull VirtualFile virtualFile) { @@ -570,8 +573,8 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Appl } private static boolean isBinaryWithoutDecompiler(VirtualFile file) { - final FileType ft = file.getFileType(); - return ft.isBinary() && BinaryFileTypeDecompilers.INSTANCE.forFileType(ft) == null; + final FileType fileType = file.getFileType(); + return fileType.isBinary() && BinaryFileTypeDecompilers.INSTANCE.forFileType(fileType) == null; } @Override