summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/ssh-agent/ssh-agent.plugin.zsh20
1 files changed, 17 insertions, 3 deletions
diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index 9bc2e8a21..acad4e83e 100644
--- a/plugins/ssh-agent/ssh-agent.plugin.zsh
+++ b/plugins/ssh-agent/ssh-agent.plugin.zsh
@@ -1,5 +1,3 @@
-typeset _agent_forwarding _ssh_env_cache
-
function _start_agent() {
local lifetime
zstyle -s :omz:plugins:ssh-agent lifetime lifetime
@@ -97,7 +95,23 @@ else
_start_agent
fi
-_add_identities
+() {
+ emulate -L zsh
+
+ command mkdir "$ZSH_CACHE_DIR/ssh-agent.lock" 2>/dev/null || return
+
+ trap "
+ ret=\$?
+
+ command rm -rf '$ZSH_CACHE_DIR/ssh-agent.lock'
+ unset _agent_forwarding _ssh_env_cache
+ unfunction _start_agent _add_identities 2>/dev/null
+
+ return \$ret
+ " EXIT INT QUIT
+
+ _add_identities
+}
# tidy up after ourselves
unset _agent_forwarding _ssh_env_cache