e3a01e5af1bd47918e8de059af8ff619e2495acf

Author
Robby Russell <robby@planetargon.com>
Committer
Robby Russell <robby@planetargon.com>
Date

Message

Merge pull request #4212 from NAR8789/master

Fix chpwd clobbering in dirhistory and last-working-dir

Diff

 1diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh
 2index d101cfcae6a435ac0d78398f23cb1aac809a0efc..0209981e31f463a30cc6d65f0b58c5d19c280c34 100644
 3--- a/plugins/dirhistory/dirhistory.plugin.zsh
 4+++ b/plugins/dirhistory/dirhistory.plugin.zsh
 5@@ -49,7 +49,8 @@ function push_future() {
 6 }
 7 
 8 # Called by zsh when directory changes
 9-function chpwd() {
10+chpwd_functions+=(chpwd_dirhistory)
11+function chpwd_dirhistory() {
12   push_past $PWD
13   # If DIRHISTORY_CD is not set...
14   if [[ -z "${DIRHISTORY_CD+x}" ]]; then
15diff --git a/plugins/dirpersist/dirpersist.plugin.zsh b/plugins/dirpersist/dirpersist.plugin.zsh
16index 88d1129d4ac9a21a0a08f1a61f6531b84f320c34..616e2c3c658710d47073cfdd88aa43aea3782675 100644
17--- a/plugins/dirpersist/dirpersist.plugin.zsh
18+++ b/plugins/dirpersist/dirpersist.plugin.zsh
19@@ -11,7 +11,8 @@ if [[ -f ${dirstack_file} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
20   [[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD
21 fi
22 
23-chpwd() {
24+chpwd_functions+=(chpwd_dirpersist)
25+chpwd_dirpersist() {
26   if (( $DIRSTACKSIZE <= 0 )) || [[ -z $dirstack_file ]]; then return; fi
27   local -ax my_stack
28   my_stack=( ${PWD} ${dirstack} )
29diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh
30index 75041f08ef63874a9ecba86180ea912bb9d43e2c..c458464ce32a7e3734bf2738f42a41e7e717ceab 100644
31--- a/plugins/last-working-dir/last-working-dir.plugin.zsh
32+++ b/plugins/last-working-dir/last-working-dir.plugin.zsh
33@@ -8,7 +8,8 @@ mkdir -p $ZSH_CACHE_DIR
34 cache_file="$ZSH_CACHE_DIR/last-working-dir"
35 
36 # Updates the last directory once directory is changed.
37-function chpwd() {
38+chpwd_functions+=(chpwd_last_working_dir)
39+function chpwd_last_working_dir() {
40   # Use >| in case noclobber is set to avoid "file exists" error
41 	pwd >| "$cache_file"
42 }