Fix conda env auto activation in the terminal (PY-21643)
[idea/community.git] / python / python-terminal / src / com / jetbrains / python / sdk / PyVirtualEnvTerminalCustomizer.kt
index f05678cddaaae1dac66ad979e3842c5abf881c47..a4b0ed7d88a438fd030c1a8d8d48489d1eb8abc4 100644 (file)
@@ -52,9 +52,11 @@ class PyVirtualEnvTerminalCustomizer : LocalTerminalCustomizer() {
         val shellName = File(shellPath).name
 
         if (shellName == "bash" || (SystemInfo.isMac && shellName == "sh") || (shellName == "zsh") ||
-          ((shellName == "fish") && PythonSdkType.isVirtualEnv(sdk))) { //fish shell works only for virtualenv and not for conda
+            ((shellName == "fish") && PythonSdkType.isVirtualEnv(sdk))) { //fish shell works only for virtualenv and not for conda
           //for bash we pass activate script to jediterm shell integration (see jediterm-bash.in) to source it there
-          findActivateScript(path, shellPath)?.let { activate -> envs.put("JEDITERM_SOURCE", activate) }
+          findActivateScript(path, shellPath)?.let { activate ->
+            envs.put("JEDITERM_SOURCE", if (activate.second != null) "${activate.first} ${activate.second}" else activate.first)
+          }
         }
         else {
           //for other shells we read envs from activate script by the default shell and pass them to the process
@@ -63,7 +65,8 @@ class PyVirtualEnvTerminalCustomizer : LocalTerminalCustomizer() {
             // we add only envs that are setup by the activate script, because adding other variables from the different shell
             // can break the actual shell
             envs.putAll(reader.readShellEnv().mapKeys { k -> k.key.toUpperCase() }.filterKeys { k ->
-              k in arrayOf("PATH", "PS1", "VIRTUAL_ENV", "PYTHONHOME", "PROMPT", "_OLD_VIRTUAL_PROMPT", "_OLD_VIRTUAL_PYTHONHOME", "_OLD_VIRTUAL_PATH")
+              k in arrayOf("PATH", "PS1", "VIRTUAL_ENV", "PYTHONHOME", "PROMPT", "_OLD_VIRTUAL_PROMPT", "_OLD_VIRTUAL_PYTHONHOME",
+                           "_OLD_VIRTUAL_PATH")
             })
           }
         }