diff --git a/platform/diff-impl/src/com/intellij/diff/actions/BaseShowDiffAction.java b/platform/diff-impl/src/com/intellij/diff/actions/BaseShowDiffAction.java index e918a207063e..2da043cc5812 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/BaseShowDiffAction.java +++ b/platform/diff-impl/src/com/intellij/diff/actions/BaseShowDiffAction.java @@ -51,7 +51,7 @@ abstract class BaseShowDiffAction extends AnAction implements DumbAware { protected abstract boolean isAvailable(@NotNull AnActionEvent e); protected static boolean hasContent(VirtualFile file) { - return ! (file instanceof VirtualFileWithoutContent); + return !(file instanceof VirtualFileWithoutContent); } @Nullable diff --git a/platform/diff-impl/src/com/intellij/diff/actions/CompareFileWithEditorAction.java b/platform/diff-impl/src/com/intellij/diff/actions/CompareFileWithEditorAction.java index 7f27f7ff45b4..4c7939552a37 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/CompareFileWithEditorAction.java +++ b/platform/diff-impl/src/com/intellij/diff/actions/CompareFileWithEditorAction.java @@ -72,7 +72,7 @@ public class CompareFileWithEditorAction extends BaseShowDiffAction { } private static boolean canCompare(@NotNull VirtualFile file1, @NotNull VirtualFile file2) { - return file1.isValid() && file2.isValid() && !file1.equals(file2) && hasContent(file1) && hasContent(file2); + return !file1.equals(file2) && hasContent(file1) && hasContent(file2); } @Nullable diff --git a/platform/diff-impl/src/com/intellij/diff/actions/CompareFilesAction.java b/platform/diff-impl/src/com/intellij/diff/actions/CompareFilesAction.java index 6ac2e1f4a63c..91b51d357f5f 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/CompareFilesAction.java +++ b/platform/diff-impl/src/com/intellij/diff/actions/CompareFilesAction.java @@ -106,7 +106,7 @@ public class CompareFilesAction extends BaseShowDiffAction { if (data.length == 1) { VirtualFile otherFile = getOtherFile(project, data[0]); if (otherFile == null) return null; - if (!data[0].isValid()) return null; + if (!hasContent(data[0])) return null; return DiffRequestFactory.getInstance().createFromFiles(project, data[0], otherFile); } else { diff --git a/platform/diff-impl/src/com/intellij/diff/tools/external/ExternalDiffToolUtil.java b/platform/diff-impl/src/com/intellij/diff/tools/external/ExternalDiffToolUtil.java index b3434dfd28f3..6dafc46c2e22 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/external/ExternalDiffToolUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/external/ExternalDiffToolUtil.java @@ -34,6 +34,7 @@ import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileWithoutContent; import com.intellij.util.LineSeparator; import com.intellij.util.PathUtil; import com.intellij.util.TimeoutUtil; @@ -56,7 +57,11 @@ public class ExternalDiffToolUtil { public static boolean canCreateFile(@NotNull DiffContent content) { if (content instanceof EmptyContent) return true; if (content instanceof DocumentContent) return true; - if (content instanceof FileContent) return true; + if (content instanceof FileContent) { + VirtualFile file = ((FileContent)content).getFile(); + if (file instanceof VirtualFileWithoutContent) return false; + return true; + } if (content instanceof DirectoryContent) return ((DirectoryContent)content).getFile().isInLocalFileSystem(); return false; } diff --git a/platform/diff-impl/src/com/intellij/diff/tools/holders/BinaryEditorHolder.java b/platform/diff-impl/src/com/intellij/diff/tools/holders/BinaryEditorHolder.java index 0b455181d04b..2f13d0c8b023 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/holders/BinaryEditorHolder.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/holders/BinaryEditorHolder.java @@ -34,6 +34,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileWithoutContent; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -130,6 +131,7 @@ public class BinaryEditorHolder extends EditorHolder { if (project == null) project = ProjectManager.getInstance().getDefaultProject(); VirtualFile file = ((FileContent)content).getFile(); if (!file.isValid()) return false; + if (file instanceof VirtualFileWithoutContent) return false; return FileEditorProviderManager.getInstance().getProviders(project, file).length != 0; } return false;