X-Git-Url: https://git.madduck.net/etc/zsh.git/blobdiff_plain/59aba6c965455891a22e8ea22f561854e43903bd..c3da6fd36611ed2f8f251f07262830b21b2a562b:/.zsh/zshrc/20-tempfile%20dir_functions/etc/zsh.git/blobdiff_plain/59aba6c965455891a22e8ea22f561854e43903bd..c3da6fd36611ed2f8f251f07262830b21b2a562b:/.zsh/zshrc/20-tempfile+dir_functions diff --git a/.zsh/zshrc/20-tempfile+dir_functions b/.zsh/zshrc/20-tempfile+dir_functions index b887ba6..e782fe0 100644 --- a/.zsh/zshrc/20-tempfile+dir_functions +++ b/.zsh/zshrc/20-tempfile+dir_functions @@ -9,10 +9,17 @@ cdt() { emulate -L zsh - REPLY=$(mktemp -td ${1:-cdt}.XXXXXX) - builtin cd $REPLY - rm -f ${TMPDIR:-/tmp}/cdt.latest - ln -s $REPLY ${TMPDIR:-/tmp}/cdt.latest + local dirname="$(date +'%F-%H%M%S')${1:+-$1}" + REPLY="${TMPDIR:-/tmp}/$dirname" + mkdir -m700 "$REPLY" + if [[ -n "$1" ]]; then + local link="${TMPDIR:-/tmp}/${1:-cdt}" + ln -Tnsf "$dirname" "$link" + builtin cd "$link" + else + builtin cd "$REPLY" + fi + echo "$REPLY" } _cdt() { @@ -25,22 +32,29 @@ bindkey '\ed' _cdt vit() { emulate -L zsh - local prefix i + local i tag for i in "$@"; do case "$i" in -) local stdin=1; shift;; - *) if [ -z "${prefix:-}" ]; then - prefix="$i"; shift + .*) if [ -z "${ft:-}" ]; then + ft="${i#.}"; shift + else + zwarn "filetype $ft already specified, skipping: ${i#.}" + fi + ;; + *) if [ -z "${tag:-}" ]; then + tag="$i"; shift else - zwarn "prefix $prefix already specified, skipping: $i" + zwarn "tag $tag already specified, skipping: $i" fi ;; esac done - REPLY=$(mktemp -t ${prefix:-vit}-XXXXXX.txt) - [ -n "$stdin" ] && cat >| $REPLY - sensible-editor +start $REPLY /dev/tty - ln -sf $REPLY ${TMPDIR:-/tmp}/vit.latest + local file="$(date +'%F-%H%M%S')${tag:+-$tag}" + REPLY="${TMPDIR:-/tmp}/$file" + [ -n "$stdin" ] && cat >| "$REPLY" + sensible-editor +start "$REPLY" /dev/tty + ln -Tsf $file ${TMPDIR:-/tmp}/${tag:-vit} echo "$REPLY" } _vit() { @@ -52,7 +66,12 @@ zle -N _vit bindkey '\ef' _vit pastebin() { - local target="${(%):-"%D{%F-%H%M%S}"}-${1##*/}" + local target basename; + basename="${1##*/}" + case "$basename" in + (????-??-??-*) target="$basename";; + (*) target="${(%):-"%D{%F-%H%M%S}"}-$basename";; + esac pub "${1}==${target}" 2>&1 } @@ -86,14 +105,21 @@ zle -N _copy_reply bindkey '\ec' _copy_reply TS() { - local topic ret quiet - typeset -g REPLY + local topic ts ret script topic="${(j:_:)@}" - REPLY="${TMPDIR:-/tmp}/script.${topic:-$LOGNAME}.$$.${(%):-"%D{%Y%m%d.%H%M}"}" + ts=${(%):-%D{%Y-%m-%d-%H%M}} + script="${TMPDIR:-/tmp}/$ts.$$.${topic:-$LOGNAME}.typescript" PS1=" -%# " RPS1= script -qe -c "zsh -f" -f "$REPLY" +%# " RPS1= script -qe -c "zsh -f" -f "$script" ret=$? - zinfo "typescript is in $REPLY ." + zinfo "typescript is in $script ." + typeset -g REPLY + REPLY="$script" + if command -v unterm >/dev/null; then + REPLY="${script}.txt" + unterm "$script" > "$REPLY" + zinfo "plain text transcript is in $REPLY ." + fi return $ret }