|
1 # This file must be used with "source bin/activate.fish" *from fish* (http://fishshell.com) |
|
2 # you cannot run it directly |
|
3 |
|
4 function deactivate -d "Exit virtualenv and return to normal shell environment" |
|
5 # reset old environment variables |
|
6 if test -n "$_OLD_VIRTUAL_PATH" |
|
7 set -gx PATH $_OLD_VIRTUAL_PATH |
|
8 set -e _OLD_VIRTUAL_PATH |
|
9 end |
|
10 if test -n "$_OLD_VIRTUAL_PYTHONHOME" |
|
11 set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME |
|
12 set -e _OLD_VIRTUAL_PYTHONHOME |
|
13 end |
|
14 |
|
15 if test -n "$_OLD_FISH_PROMPT_OVERRIDE" |
|
16 # set an empty local fish_function_path, so fish_prompt doesn't automatically reload |
|
17 set -l fish_function_path |
|
18 # erase the virtualenv's fish_prompt function, and restore the original |
|
19 functions -e fish_prompt |
|
20 functions -c _old_fish_prompt fish_prompt |
|
21 functions -e _old_fish_prompt |
|
22 set -e _OLD_FISH_PROMPT_OVERRIDE |
|
23 end |
|
24 |
|
25 set -e VIRTUAL_ENV |
|
26 if test "$argv[1]" != "nondestructive" |
|
27 # Self destruct! |
|
28 functions -e deactivate |
|
29 end |
|
30 end |
|
31 |
|
32 # unset irrelevant variables |
|
33 deactivate nondestructive |
|
34 |
|
35 set -gx VIRTUAL_ENV "__VIRTUAL_ENV__" |
|
36 |
|
37 set -gx _OLD_VIRTUAL_PATH $PATH |
|
38 set -gx PATH "$VIRTUAL_ENV/__BIN_NAME__" $PATH |
|
39 |
|
40 # unset PYTHONHOME if set |
|
41 if set -q PYTHONHOME |
|
42 set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME |
|
43 set -e PYTHONHOME |
|
44 end |
|
45 |
|
46 if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" |
|
47 # fish uses a function instead of an env var to generate the prompt. |
|
48 |
|
49 # copy the current fish_prompt function as the function _old_fish_prompt |
|
50 functions -c fish_prompt _old_fish_prompt |
|
51 |
|
52 # with the original prompt function copied, we can override with our own. |
|
53 function fish_prompt |
|
54 # Prompt override? |
|
55 if test -n "__VIRTUAL_PROMPT__" |
|
56 printf "%s%s" "__VIRTUAL_PROMPT__" (set_color normal) |
|
57 _old_fish_prompt |
|
58 return |
|
59 end |
|
60 # ...Otherwise, prepend env |
|
61 set -l _checkbase (basename "$VIRTUAL_ENV") |
|
62 if test $_checkbase = "__" |
|
63 # special case for Aspen magic directories |
|
64 # see http://www.zetadev.com/software/aspen/ |
|
65 printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) |
|
66 _old_fish_prompt |
|
67 else |
|
68 printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) |
|
69 _old_fish_prompt |
|
70 end |
|
71 end |
|
72 |
|
73 set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" |
|
74 end |