summaryrefslogtreecommitdiff
path: root/plugins/last-working-dir
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-10-27 15:51:38 +0100
committerMarc Cornellà <marc@mcornella.com>2024-10-27 16:03:32 +0100
commit68d189cb35b9826dc186f1697a501314a63e6fe2 (patch)
treea5de646a922288b429fbc229b316fdb2c6388b1f /plugins/last-working-dir
parent45516ca1d830fd21f75942bf414d540db1ab0db2 (diff)
downloadzsh-68d189cb35b9826dc186f1697a501314a63e6fe2.tar.gz
zsh-68d189cb35b9826dc186f1697a501314a63e6fe2.tar.bz2
zsh-68d189cb35b9826dc186f1697a501314a63e6fe2.zip
fix(last-working-dir): save working directory more strictly (#11343)
Fixes #11343
Diffstat (limited to 'plugins/last-working-dir')
-rw-r--r--plugins/last-working-dir/last-working-dir.plugin.zsh17
1 files changed, 10 insertions, 7 deletions
diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh
index 684972cc1..b816f6a8f 100644
--- a/plugins/last-working-dir/last-working-dir.plugin.zsh
+++ b/plugins/last-working-dir/last-working-dir.plugin.zsh
@@ -9,20 +9,23 @@ chpwd_last_working_dir() {
[[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0
# Add ".$SSH_USER" suffix to cache file if $SSH_USER is set and non-empty
local cache_file="$ZSH_CACHE_DIR/last-working-dir${SSH_USER:+.$SSH_USER}"
- builtin pwd >| "$cache_file"
+ 'builtin' 'echo' '-E' "$PWD" >| "$cache_file"
}
# Changes directory to the last working directory
lwd() {
# Add ".$SSH_USER" suffix to cache file if $SSH_USER is set and non-empty
local cache_file="$ZSH_CACHE_DIR/last-working-dir${SSH_USER:+.$SSH_USER}"
- [[ -r "$cache_file" ]] && cd "$(cat "$cache_file")"
+ [[ -r "$cache_file" ]] && cd "$(<"$cache_file")"
}
# Jump to last directory automatically unless:
-# - this isn't the first time the plugin is loaded
-# - it's not in $HOME directory
-[[ -n "$ZSH_LAST_WORKING_DIRECTORY" ]] && return
-[[ "$PWD" != "$HOME" ]] && return
+#
+# - This isn't the first time the plugin is loaded
+# - We're not in the $HOME directory (e.g. if terminal opened a different folder)
+[[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]] || return
+[[ "$PWD" == "$HOME" ]] || return
-lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
+if lwd 2>/dev/null; then
+ ZSH_LAST_WORKING_DIRECTORY=1
+fi