mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-25 00:10:59 +02:00
Only source varstash lib if it's being used
I have noticed that `autostash` called an (accidentally) defined/overwritten `stash` function. While it's not possible to put this into a local scope, this will at least make it less polluting by default (when autostashing is not used). Additionally we could source it always (not just once), but then it would only re-overwrite the function. A better fix would be to prefix the functions explicitly, e.g. `autoenv_autostash` etc. Closes https://github.com/Tarrasch/zsh-autoenv/pull/42.
This commit is contained in:
parent
f021750e89
commit
ecf2b2961f
@ -260,8 +260,12 @@ _autoenv_source() {
|
|||||||
local autoenv_to_dir=$PWD
|
local autoenv_to_dir=$PWD
|
||||||
|
|
||||||
# Source varstash library once.
|
# Source varstash library once.
|
||||||
|
# XXX: pollutes environment with e.g. `stash`, and `autostash` will cause
|
||||||
|
# an overwritten `stash` function to be called!
|
||||||
if [[ -z "$functions[(I)autostash]" ]]; then
|
if [[ -z "$functions[(I)autostash]" ]]; then
|
||||||
|
if \grep -qE '\b(autostash|autounstash|stash)\b' $autoenv_env_file; then
|
||||||
source ${${funcsourcetrace[1]%:*}:h}/lib/varstash
|
source ${${funcsourcetrace[1]%:*}:h}/lib/varstash
|
||||||
|
fi
|
||||||
# NOTE: Varstash uses $PWD as default for varstash_dir, we might set it to
|
# NOTE: Varstash uses $PWD as default for varstash_dir, we might set it to
|
||||||
# ${autoenv_env_file:h}.
|
# ${autoenv_env_file:h}.
|
||||||
fi
|
fi
|
||||||
@ -331,7 +335,9 @@ _autoenv_chpwd_handler() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Unstash any autostashed stuff.
|
# Unstash any autostashed stuff.
|
||||||
|
if [[ -n "$functions[(I)autostash]" ]]; then
|
||||||
varstash_dir=$prev_dir autounstash
|
varstash_dir=$prev_dir autounstash
|
||||||
|
fi
|
||||||
|
|
||||||
_autoenv_stack_entered_remove $prev_file
|
_autoenv_stack_entered_remove $prev_file
|
||||||
fi
|
fi
|
||||||
|
@ -6,11 +6,22 @@ Setup test environment.
|
|||||||
|
|
||||||
$ mkdir sub
|
$ mkdir sub
|
||||||
$ cd sub
|
$ cd sub
|
||||||
|
|
||||||
|
The varstash library should not get loaded always.
|
||||||
|
|
||||||
|
$ echo 'echo ENTER' > $AUTOENV_FILE_ENTER
|
||||||
|
$ echo 'echo LEAVE' > $AUTOENV_FILE_LEAVE
|
||||||
|
$ test_autoenv_auth_env_files
|
||||||
|
$ cd .
|
||||||
|
ENTER
|
||||||
|
$ type -w autostash
|
||||||
|
autostash: none
|
||||||
|
[1]
|
||||||
|
|
||||||
|
Now on to some stashing.
|
||||||
|
|
||||||
$ echo 'echo ENTER; autostash FOO=changed' > $AUTOENV_FILE_ENTER
|
$ echo 'echo ENTER; autostash FOO=changed' > $AUTOENV_FILE_ENTER
|
||||||
$ echo 'echo LEAVE; autounstash' > $AUTOENV_FILE_LEAVE
|
$ echo 'echo LEAVE; autounstash' > $AUTOENV_FILE_LEAVE
|
||||||
|
|
||||||
Manually create auth file
|
|
||||||
|
|
||||||
$ test_autoenv_auth_env_files
|
$ test_autoenv_auth_env_files
|
||||||
|
|
||||||
Set environment variable.
|
Set environment variable.
|
||||||
@ -19,8 +30,12 @@ Set environment variable.
|
|||||||
|
|
||||||
Activating the env stashes it and applies a new value.
|
Activating the env stashes it and applies a new value.
|
||||||
|
|
||||||
$ cd .
|
$ cd ..
|
||||||
|
LEAVE
|
||||||
|
$ cd sub
|
||||||
ENTER
|
ENTER
|
||||||
|
$ type -w autostash
|
||||||
|
autostash: function
|
||||||
$ echo $FOO
|
$ echo $FOO
|
||||||
changed
|
changed
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user