diff --git a/platform/platform-api/src/com/intellij/execution/configurations/EncodingEnvironmentUtil.java b/platform/platform-api/src/com/intellij/execution/configurations/EncodingEnvironmentUtil.java
index 79fff54a9a7f..5f57c2d09541 100644
--- a/platform/platform-api/src/com/intellij/execution/configurations/EncodingEnvironmentUtil.java
+++ b/platform/platform-api/src/com/intellij/execution/configurations/EncodingEnvironmentUtil.java
@@ -40,28 +40,44 @@ public class EncodingEnvironmentUtil {
* Sets default encoding on Mac if it's undefined.
* On Mac default character encoding is defined by several environment variables: LC_ALL, LC_CTYPE and LANG.
* See details.
- *
+ *
* Unfortunately, Mac OSX has a special behavior:
* These environment variables aren't passed to an IDE, if the IDE is launched from Spotlight.
* Unfortunately, even {@link com.intellij.util.EnvironmentUtil#getEnvironment()} doesn't have these variables.
* As a result, no encoding environment variables are passed to Ruby/Node.js/Python/other processes that are launched from IDE.
* Thus, these processes wrongly assume that the default encoding is US-ASCII.
*
- *
+ *
* The workaround this method applies is to set LC_CTYPE environment variable if LC_ALL, LC_CTYPE or LANG aren't set before.
* LC_CTYPE value is taken from "Settings | File Encodings".
*
* @param commandLine GeneralCommandLine instance
- * @param project Project instance if any
+ * @param project Project instance if any
*/
public static void fixDefaultEncodingIfMac(@NotNull GeneralCommandLine commandLine, @Nullable Project project) {
if (SystemInfo.isMac) {
if (!isLocaleDefined(commandLine)) {
- Charset charset = getCharset(project);
- commandLine.getEnvironment().put(LC_CTYPE, charset.name());
- if (LOG.isDebugEnabled()) {
- LOG.debug("Fixed mac locale: " + charset.name());
- }
+ fixLocale(commandLine.getEnvironment(), project);
+ }
+ }
+ }
+
+ private static void fixLocale(@NotNull Map env, @Nullable Project project) {
+ Charset charset = getCharset(project);
+ env.put(LC_CTYPE, charset.name());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Fixed mac locale: " + charset.name());
+ }
+ }
+
+
+ /**
+ * Sets default encoding on Mac if it's undefined.
+ */
+ public static void fixDefaultEncodingIfMac(@NotNull Map env, @Nullable Project project) {
+ if (SystemInfo.isMac) {
+ if (!isLocaleDefined(env)) {
+ fixLocale(env, project);
}
}
}
@@ -100,6 +116,4 @@ public class EncodingEnvironmentUtil {
}
return charset;
}
-
-
}
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
index 3d0ec61e5c0a..312f1c400676 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
@@ -1,6 +1,7 @@
package org.jetbrains.plugins.terminal;
import com.intellij.execution.TaskExecutor;
+import com.intellij.execution.configurations.EncodingEnvironmentUtil;
import com.intellij.execution.process.*;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
@@ -67,6 +68,7 @@ public class LocalTerminalDirectRunner extends AbstractTerminalRunner envs = new HashMap(System.getenv());
envs.put("TERM", "xterm");
+ EncodingEnvironmentUtil.fixDefaultEncodingIfMac(envs, getProject());
try {
return PtyProcess.exec(getCommand(), envs, currentProjectFolder());
}