@@ -5,7 +5,7 @@ export _VIRTUALENVWRAPPER_API="$_VIRTUALENVWRAPPER_API mkvirtualenv rmvirtualenv
5
5
6
6
if [ -z " $VIRTUALENVWRAPPER_SCRIPT " ]
7
7
then
8
- export VIRTUALENVWRAPPER_SCRIPT=" $( which virtualenvwrapper.sh) "
8
+ export VIRTUALENVWRAPPER_SCRIPT=" $( command \ w hich virtualenvwrapper.sh) "
9
9
fi
10
10
if [ -z " $VIRTUALENVWRAPPER_SCRIPT " ]
11
11
then
14
14
15
15
# Load the real implementation of the API from virtualenvwrapper.sh
16
16
function virtualenvwrapper_load {
17
- source " $VIRTUALENVWRAPPER_SCRIPT "
17
+ # Only source the script once.
18
+ # We might get called multiple times, because not all of _VIRTUALENVWRAPPER_API gets
19
+ # a real completion.
20
+ if [ -z $VIRTUALENVWRAPPER_LAZY_LOADED ]
21
+ then
22
+ # NOTE: For Zsh, I have tried to unset any auto-load completion.
23
+ # (via `compctl + $(echo ${_VIRTUALENVWRAPPER_API})`.
24
+ # But this does not appear to work / triggers a crash.
25
+ source " $VIRTUALENVWRAPPER_SCRIPT "
26
+ VIRTUALENVWRAPPER_LAZY_LOADED=1
27
+ fi
18
28
}
19
29
20
30
# Set up "alias" functions based on the API definition.
@@ -41,4 +51,6 @@ function virtualenvwrapper_setup_lazy_completion {
41
51
}
42
52
43
53
virtualenvwrapper_setup_lazy_loader
54
+ # Does not really work. Cannot be reset in zsh to fallback to files (e.g. mkvirtualenv).
55
+ # It also needs a second invocation, because the first one only sets up the real completion.
44
56
virtualenvwrapper_setup_lazy_completion
0 commit comments