[Python-checkins] cpython (3.5): Fixes #25671: Updated prompt handling in activate.fish.

vinay.sajip python-checkins at python.org
Sun Sep 11 07:53:42 EDT 2016


https://hg.python.org/cpython/rev/f6125944ffb8
changeset:   103623:f6125944ffb8
branch:      3.5
parent:      103617:ca68bb597df9
user:        Vinay Sajip <vinay_sajip at yahoo.co.uk>
date:        Sun Sep 11 12:52:08 2016 +0100
summary:
  Fixes #25671: Updated prompt handling in activate.fish.

files:
  Lib/venv/scripts/posix/activate.fish |  41 ++++++++-------
  1 files changed, 21 insertions(+), 20 deletions(-)


diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish
--- a/Lib/venv/scripts/posix/activate.fish
+++ b/Lib/venv/scripts/posix/activate.fish
@@ -15,10 +15,7 @@
     if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
         functions -e fish_prompt
         set -e _OLD_FISH_PROMPT_OVERRIDE
-        . ( begin
-                printf "function fish_prompt\n\t#"
-                functions _old_fish_prompt
-            end | psub )
+        functions -c _old_fish_prompt fish_prompt
         functions -e _old_fish_prompt
     end
 
@@ -47,27 +44,31 @@
     # fish uses a function instead of an env var to generate the prompt.
 
     # save the current fish_prompt function as the function _old_fish_prompt
-    . ( begin
-            printf "function _old_fish_prompt\n\t#"
-            functions fish_prompt
-        end | psub )
+    functions -c fish_prompt _old_fish_prompt
 
     # with the original prompt function renamed, we can override with our own.
     function fish_prompt
+        # Save the return status of the last command
+        set -l old_status $status
+
         # Prompt override?
-        if test -n "__VENV_PROMPT__"
-            printf "%s%s%s" "__VENV_PROMPT__" (set_color normal) (_old_fish_prompt)
-            return
+        if test -n "__VENV_PROMPT__"            
+            printf "%s%s" "__VENV_PROMPT__" (set_color normal)
+        else
+            # ...Otherwise, prepend env
+            set -l _checkbase (basename "$VIRTUAL_ENV")
+            if test $_checkbase = "__"
+                # special case for Aspen magic directories
+                # see http://www.zetadev.com/software/aspen/
+                printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
+            else
+                printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
+            end
         end
-        # ...Otherwise, prepend env
-        set -l _checkbase (basename "$VIRTUAL_ENV")
-        if test $_checkbase = "__"
-            # special case for Aspen magic directories
-            # see http://www.zetadev.com/software/aspen/
-            printf "%s[%s]%s %s" (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) (_old_fish_prompt)
-        else
-            printf "%s(%s)%s%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt)
-        end
+
+        # Restore the return status of the previous command.
+        echo "exit $old_status" | .
+        _old_fish_prompt
     end
 
     set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list