# # taskwarrior shell integration # # Copyright © 2018 martin f. krafft # Released under the terms of the Artistic Licence 2.0 # # Source repository: http://git.madduck.net/v/etc/zsh.git # if whence task >/dev/null; then function task_() { local spec cmd args nospec=0 cmd="$1"; shift [[ "$cmd" = add ]] && nospec=1 for i in "$@"; do case "$nospec@$i" in (0@<->) :;& (0@/*/) spec="${spec:+$spec }$i";; (*) args="${args:+$args }$i";; esac done eval task $spec $cmd $args } function task_postpone() { local args for i in scheduled due until wait; do if [[ -n "$(eval task _get "$1"."$i")" ]]; then args="${args:+$args }${i}:${i}+$2" fi done eval task "$1" modify $args } alias t\?='alias -rm t t[-+a-z] | sed -r "s,_ ?, ,"' alias ta='task_ add' alias tc='task_ call' alias th='task_ attach' alias tl='task_ all' alias ty='task_ next rc.recurrence=on >/dev/null && task_ sync' alias td='task_ done' alias te='task_ edit' alias tu='task_ undo' alias tm='task_ modify' alias ts='task_ start' alias tw='task_ waiting' alias tp='task_postpone' alias t+='task_ annotate' alias t='task_ ""' run_at_most_every 5m \ t 2>/dev/null || : fi # vim:ft=zsh