WEB-10858 File Watchers plugin doesn't work appcode/134.1031 cppide/134.1026 idea/134.1025 idea/134.1028 idea/134.1033
authorSergey Simonchik <sergey.simonchik@jetbrains.com>
Sat, 8 Feb 2014 07:29:21 +0000 (11:29 +0400)
committerSergey Simonchik <sergey.simonchik@jetbrains.com>
Sat, 8 Feb 2014 07:29:21 +0000 (11:29 +0400)
http://youtrack.jetbrains.com/issue/WEB-10858#comment=27-672181

platform/platform-api/src/com/intellij/execution/configurations/EncodingEnvironmentUtil.java
platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java

index 79fff54a9a7f3a0010480aca7cd8dbecb06db483..9983a6c216e5059a83a868c786970e79b6a5fe0a 100644 (file)
@@ -22,7 +22,6 @@ import com.intellij.openapi.vfs.CharsetToolkit;
 import com.intellij.openapi.vfs.encoding.EncodingManager;
 import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
 import com.intellij.util.EnvironmentUtil;
 import com.intellij.openapi.vfs.encoding.EncodingManager;
 import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
 import com.intellij.util.EnvironmentUtil;
-import com.intellij.util.PlatformUtils;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -73,8 +72,7 @@ public class EncodingEnvironmentUtil {
     }
     if (commandLine.isPassParentEnvironment()) {
       // 'parentEnv' calculation logic should be kept in sync with GeneralCommandLine.setupEnvironment
     }
     if (commandLine.isPassParentEnvironment()) {
       // 'parentEnv' calculation logic should be kept in sync with GeneralCommandLine.setupEnvironment
-      Map<String, String> parentEnv = PlatformUtils.isAppCode() ? System.getenv() // Temporarily fix for OC-8606
-                                                                : EnvironmentUtil.getEnvironmentMap();
+      Map<String, String> parentEnv = commandLine.isPassShellEnvironmentAsParent() ? EnvironmentUtil.getEnvironmentMap() : System.getenv();
       if (isLocaleDefined(parentEnv)) {
         return true;
       }
       if (isLocaleDefined(parentEnv)) {
         return true;
       }
index a42a1bfab18a75c0604e3133ce0842b10fe26e9c..893a548d262d363e8f413652ff094b8292acfe7d 100644 (file)
@@ -58,6 +58,7 @@ public class GeneralCommandLine implements UserDataHolder {
   private File myWorkDirectory = null;
   private final Map<String, String> myEnvParams = new MyTHashMap();
   private boolean myPassParentEnvironment = true;
   private File myWorkDirectory = null;
   private final Map<String, String> myEnvParams = new MyTHashMap();
   private boolean myPassParentEnvironment = true;
+  private boolean myPassShellEnvironmentAsParent = !PlatformUtils.isAppCode();
   private final ParametersList myProgramParams = new ParametersList();
   private Charset myCharset = CharsetToolkit.getDefaultSystemCharset();
   private boolean myRedirectErrorStream = false;
   private final ParametersList myProgramParams = new ParametersList();
   private Charset myCharset = CharsetToolkit.getDefaultSystemCharset();
   private boolean myRedirectErrorStream = false;
@@ -142,6 +143,19 @@ public class GeneralCommandLine implements UserDataHolder {
     return myPassParentEnvironment;
   }
 
     return myPassParentEnvironment;
   }
 
+  /**
+   * @param passShellEnvironmentAsParent if true, a shell (Terminal.app) environment will be used as parent (see {@link EnvironmentUtil#getEnvironmentMap}).
+   *                                     Otherwise, {@link System#getenv()} will be used.
+   */
+  public void setPassShellEnvironmentAsParent(boolean passShellEnvironmentAsParent) {
+    // Temporarily fix for OC-8606
+    myPassShellEnvironmentAsParent = passShellEnvironmentAsParent;
+  }
+
+  public boolean isPassShellEnvironmentAsParent() {
+    return myPassShellEnvironmentAsParent;
+  }
+
   public void addParameters(final String... parameters) {
     for (String parameter : parameters) {
       addParameter(parameter);
   public void addParameters(final String... parameters) {
     for (String parameter : parameters) {
       addParameter(parameter);
@@ -278,8 +292,7 @@ public class GeneralCommandLine implements UserDataHolder {
     environment.clear();
 
     if (myPassParentEnvironment) {
     environment.clear();
 
     if (myPassParentEnvironment) {
-      environment.putAll(PlatformUtils.isAppCode() ? System.getenv() // Temporarily fix for OC-8606
-                                                   : EnvironmentUtil.getEnvironmentMap());
+      environment.putAll(myPassShellEnvironmentAsParent ? EnvironmentUtil.getEnvironmentMap() : System.getenv());
     }
 
     if (!myEnvParams.isEmpty()) {
     }
 
     if (!myEnvParams.isEmpty()) {