diff options
| author | 2026-01-19 18:43:41 +0100 | |
|---|---|---|
| committer | 2026-01-19 18:43:41 +0100 | |
| commit | 7de3287d7f566fa2323ae01ac5d4792295c40c6e (patch) | |
| tree | 4596d9172ac5b542c0c8363f972d0971ade771e7 /dot_config | |
| parent | zsh: spcify histsize/savehist (diff) | |
zsh: change implementation of tt
In zsh, an EXIT trap defined in a function runs on that function's
execution end. Unfortunately, that's not what I want! Instead, there's
the zsh hook zshexit, but that takes a function.
This changes tt to add the generated directories to a deduplicated
array, which is cleaned up on exit, as long as the function has been loaded.
Diffstat (limited to 'dot_config')
| -rw-r--r-- | dot_config/zsh/functions/tt | 15 | ||||
| -rw-r--r-- | dot_config/zsh/zshrc | 7 |
2 files changed, 16 insertions, 6 deletions
diff --git a/dot_config/zsh/functions/tt b/dot_config/zsh/functions/tt new file mode 100644 index 0000000..0328e71 --- /dev/null +++ b/dot_config/zsh/functions/tt @@ -0,0 +1,15 @@ +# vim: ft=zsh +typeset -gaU __tt_exit_dirs +__tt_exit() { + (( ${+__tt_exit_dirs[1]} )) && rm -r "${__tt_exit_dirs[@]}" +} +autoload -Uz add-zsh-hook +add-zsh-hook zshexit __tt_exit +tt() { + local dir=$(mktemp -d) + [ -d "$dir" ] || return 1 + cd "$dir" + __tt_exit_dirs+=("$dir") +} + +tt "$@" diff --git a/dot_config/zsh/zshrc b/dot_config/zsh/zshrc index f7d4cc2..f0c99e2 100644 --- a/dot_config/zsh/zshrc +++ b/dot_config/zsh/zshrc @@ -41,16 +41,11 @@ if [[ -x =luarocks ]] { } ## Functions +autoload -Uz tt t() { mkdir -p /tmp/t cd /tmp/t } -tt() { - local dir=$(mktemp -d) - [ -d "$dir" ] || return 1 - cd "$dir" - trap "rm -rf '$dir'" EXIT -} # you may want to: # set up jump/zoxide/etc |
