1
0
mirror of https://github.com/Tarrasch/zsh-autoenv.git synced 2024-11-25 16:31:00 +02:00

Merge pull request #12 from Tarrasch/autounstash-on-leave

Call `autounstash` automatically/always when leaving a directory
This commit is contained in:
Daniel Hahler 2014-12-04 13:31:56 +01:00
commit d6fbb13451
2 changed files with 65 additions and 4 deletions

View File

@ -275,6 +275,10 @@ _autoenv_chpwd_handler() {
if _autoenv_check_authorized_env_file $env_file_leave; then if _autoenv_check_authorized_env_file $env_file_leave; then
_autoenv_source $env_file_leave leave $prev_dir _autoenv_source $env_file_leave leave $prev_dir
fi fi
# Unstash any autostash'd stuff.
varstash_dir=$prev_dir autounstash
_autoenv_stack_entered_remove $prev_file _autoenv_stack_entered_remove $prev_file
fi fi
done done

View File

@ -6,7 +6,7 @@ Setup test environment.
$ mkdir sub $ mkdir sub
$ cd sub $ cd sub
$ echo 'echo ENTER; autostash FOO=baz' > $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 Manually create auth file
@ -15,18 +15,75 @@ Manually create auth file
Set environment variable. Set environment variable.
$ FOO=bar $ FOO=orig
Activating the env stashes it and applies a new value. Activating the env stashes it and applies a new value.
$ cd . $ cd .
ENTER ENTER
$ echo $FOO $ echo $FOO
baz changed
Leaving the directory unstashes it. Leaving the directory unstashes it.
$ cd .. $ cd ..
LEAVE LEAVE
$ echo $FOO $ echo $FOO
bar orig
Test autounstashing when leaving a directory. {{{
Setup:
$ cd sub
ENTER
$ echo 'echo ENTER; autostash VAR=changed' > $AUTOENV_FILE_ENTER
$ echo 'echo LEAVE; echo "no explicit call to autounstash"' > $AUTOENV_FILE_LEAVE
$ test_autoenv_auth_env_files
$VAR is empty:
$ echo VAR:$VAR
VAR:
Set it:
$ VAR=orig
$ cd ..
LEAVE
no explicit call to autounstash
Leaving the directory keeps it intact - nothing had been stashed yet.
$ echo $VAR
orig
Enter the dir, trigger the autostashing.
$ cd sub
ENTER
$ echo $VAR
changed
Now leave again.
$ cd ..
LEAVE
no explicit call to autounstash
$ echo $VAR
orig
Remove the leave file, auto-unstashing should still happen.
$ rm sub/$AUTOENV_FILE_LEAVE
$ cd sub
ENTER
$ echo $VAR
changed
$ cd ..
$ echo $VAR
orig
}}}