mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-22 07:20:59 +02:00
Call autounstash
automatically/always when leaving a directory
This commit is contained in:
parent
4ed8aa2be3
commit
b478c5463f
@ -266,6 +266,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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
}}}
|
||||||
|
Loading…
Reference in New Issue
Block a user