From 60c6975f918a3db5dcbf90d76e95b03a934d1107 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Wed, 16 May 2012 13:50:03 +0200 Subject: [PATCH] use original working directory path to resolve relative paths --- .../com/intellij/openapi/diff/ApplicationStarterBase.java | 8 +++++++- .../src/com/intellij/openapi/application/PathManager.java | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java b/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java index a3e2a9a1abe0..21e9f7595082 100644 --- a/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java +++ b/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java @@ -17,6 +17,7 @@ package com.intellij.openapi.diff; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationStarterEx; +import com.intellij.openapi.application.PathManager; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.StreamUtil; @@ -162,7 +163,12 @@ public abstract class ApplicationStarterBase implements ApplicationStarterEx { @NotNull public static VirtualFile findFile(final String path) throws OperationFailedException { - final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(path)); + File ioFile = new File(path); + if (!ioFile.exists()) { + final String dir = PathManager.getOriginalWorkingDir(); + ioFile = new File(dir + File.separator + path); + } + final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioFile); if (file == null) { throw new OperationFailedException("Can't find file " + path); } diff --git a/platform/util/src/com/intellij/openapi/application/PathManager.java b/platform/util/src/com/intellij/openapi/application/PathManager.java index 78f45fe59910..7a20db08b038 100644 --- a/platform/util/src/com/intellij/openapi/application/PathManager.java +++ b/platform/util/src/com/intellij/openapi/application/PathManager.java @@ -17,7 +17,6 @@ package com.intellij.openapi.application; import com.google.common.collect.Lists; -import com.intellij.CommonBundle; import com.intellij.openapi.util.NamedJDOMExternalizable; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.SystemInfoRt; @@ -49,6 +48,7 @@ public class PathManager { @NonNls public static final String PROPERTY_HOME_PATH = "idea.home.path"; @NonNls public static final String PROPERTY_LOG_PATH = "idea.log.path"; @NonNls public static final String PROPERTY_PATHS_SELECTOR = "idea.paths.selector"; + @NonNls public static final String PROPERTY_ORIGINAL_WORKING_DIR = "original.working.dir"; @NonNls private static String ourHomePath; @NonNls private static String ourSystemPath; @@ -293,6 +293,11 @@ public class PathManager { return new File(getOptionsPath()+File.separatorChar+externalizable.getExternalFileName()+".xml"); } + @Nullable + public static String getOriginalWorkingDir() { + return System.getProperty(PROPERTY_ORIGINAL_WORKING_DIR); + } + @NonNls public static File getOptionsFile(@NonNls String fileName) { return new File(getOptionsPath()+File.separatorChar+fileName+".xml");