summaryrefslogtreecommitdiff
path: root/dot_config/zsh/functions
diff options
context:
space:
mode:
authorChloƩ Vulquin <code@toast.bunkerlabs.net>2026-01-19 18:43:41 +0100
committerChloƩ Vulquin <code@toast.bunkerlabs.net>2026-01-19 18:43:41 +0100
commit7de3287d7f566fa2323ae01ac5d4792295c40c6e (patch)
tree4596d9172ac5b542c0c8363f972d0971ade771e7 /dot_config/zsh/functions
parentzsh: 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/zsh/functions')
-rw-r--r--dot_config/zsh/functions/tt15
1 files changed, 15 insertions, 0 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 "$@"