]>
git.madduck.net Git - etc/zsh.git/blobdiff - .zsh/zshrc/20-tempfile+dir_functions
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
- 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"
for i in "$@"; do
case "$i" in
-) local stdin=1; shift;;
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
- zwarn "prefix $prefix already specified, skipping: $i"
+ zwarn "tag $tag already specified, skipping: $i"
- REPLY=$(mktemp -t ${prefix:-vit}-XXXXXX.txt)
- [ -n "$stdin" ] && cat >| $REPLY
- sensible-editor +start $REPLY </dev/tty >/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 >/dev/tty
+ ln -Tsf $file ${TMPDIR:-/tmp}/${tag:-vit}
bindkey '\ef' _vit
pastebin() {
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
}
pub "${1}==${target}" 2>&1
}
bindkey '\ec' _copy_reply
TS() {
bindkey '\ec' _copy_reply
TS() {
- local topic ret quiet
- typeset -g REPLY
+ local topic ts ret script
- 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"
-%# " RPS1= script -qe -c "zsh -f" -f "$REPLY "
+%# " RPS1= script -qe -c "zsh -f" -f "$script "
- 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