From 869e679b795e08d73f46c475810666de7c4a136c Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Mon, 24 Nov 2014 20:12:45 +0100 Subject: [PATCH] Fix handling of stack for leave, add to stack for autoenv_source_parent --- autoenv.zsh | 9 ++++++--- tests/_autoenv_stack.t | 6 ++++++ tests/recurse-upwards.t | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/autoenv.zsh b/autoenv.zsh index c2daa07..9f8ae90 100644 --- a/autoenv.zsh +++ b/autoenv.zsh @@ -29,6 +29,9 @@ autoenv_source_parent() { && _autoenv_check_authorized_env_file $parent_env_file; then local parent_env_dir=${parent_env_file:A:h} + + _autoenv_stack_entered_add $parent_env_file + _autoenv_source $parent_env_file enter $parent_env_dir fi } @@ -44,7 +47,7 @@ _autoenv_stack_entered_add() { local env_file=$1 # Remove any existing entry. - _autoenv_stack_entered[$_autoenv_stack_entered[(i)$1]]=() + _autoenv_stack_entered_remove $env_file # Append it to the stack, and remember its mtime. _autoenv_stack_entered+=($env_file) @@ -62,7 +65,7 @@ _autoenv_get_file_mtime() { # Remove an entry from the stack. _autoenv_stack_entered_remove() { local env_file=$1 - _autoenv_stack_entered=(${_autoenv_stack_entered#$env_file}) + _autoenv_stack_entered[$_autoenv_stack_entered[(i)$env_file]]=() _autoenv_stack_entered_mtime[$env_file]= } @@ -218,7 +221,7 @@ _autoenv_chpwd_handler() { if _autoenv_check_authorized_env_file $env_file_leave; then _autoenv_source $env_file_leave leave $prev_dir fi - _autoenv_stack_entered_remove $prev_dir + _autoenv_stack_entered_remove $prev_file fi done fi diff --git a/tests/_autoenv_stack.t b/tests/_autoenv_stack.t index df1e0f9..6f659c6 100644 --- a/tests/_autoenv_stack.t +++ b/tests/_autoenv_stack.t @@ -50,3 +50,9 @@ Test lookup of containing elements. $ _autoenv_stack_entered_contains not-added [1] +Test removing. + + $ _autoenv_stack_entered_remove sub + $ echo ${_autoenv_stack_entered} + sub/sub2 non-existing sub/file + diff --git a/tests/recurse-upwards.t b/tests/recurse-upwards.t index 6a4930f..8d94bf3 100644 --- a/tests/recurse-upwards.t +++ b/tests/recurse-upwards.t @@ -98,10 +98,11 @@ Add sub/sub2/.env file. done_sub2 Go to root. +This should not trigger the enter event, because it was handled via +autoenv_source_parent already. $ cd ../.. LEFT_sub: PWD:sub from:sub2 to:recurse-upwards.t - ENTERED_root: PWD:recurse-upwards.t from:sub2 to:recurse-upwards.t Changing the root .env should trigger re-authentication via autoenv_source_parent. -- 2.44.0