diff -r 312a2220100c Lib/venv/scripts/posix/activate.fish --- a/Lib/venv/scripts/posix/activate.fish Wed Nov 18 21:19:18 2015 -0800 +++ b/Lib/venv/scripts/posix/activate.fish Thu Nov 19 10:23:47 2015 -0500 @@ -47,16 +47,16 @@ # 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) + if test -n "__VENV_PROMPT__" + printf "%s%s" "__VENV_PROMPT__" (set_color normal) return end # ...Otherwise, prepend env @@ -64,10 +64,14 @@ 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) + printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) else - printf "%s(%s)%s%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt) + printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) 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"