mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-114241 detect fileType when document is fetched
This commit is contained in:
+9
-6
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user