X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/0ef567e0af310a906fedede267c1d03d7bba63fa..8078ceed9b50dad2d319a74e2d3014b6ff649b47:/.zsh/zshrc/parts.d/50-taskwarrior diff --git a/.zsh/zshrc/parts.d/50-taskwarrior b/.zsh/zshrc/parts.d/50-taskwarrior index abcd09c..2ca20b9 100644 --- a/.zsh/zshrc/parts.d/50-taskwarrior +++ b/.zsh/zshrc/parts.d/50-taskwarrior @@ -10,31 +10,46 @@ if whence task >/dev/null; then function task_() { - local spec cmd args nospec=0 + local filter cmd args nofilter=0 cmd="$1"; shift - [[ "$cmd" = add ]] && nospec=1 + + case "$cmd" in + (add|attach|call) nofilter=1;; + esac + for i in "$@"; do - case "$nospec@$i" in + case "$nofilter@$i" in (0@<->) :;& - (0@/*/) spec="${spec:+$spec }$i";; + (0@/*/) filter="${filter:+$filter }$i";; (*) args="${args:+$args }$i";; esac done - eval task $spec $cmd $args + eval task $filter $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 s,_,,' + 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 && _mytask sync' + 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_ ""'