X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/8dabf9b46c3654e5182533552e43d0b28a0e0f2c..8078ceed9b50dad2d319a74e2d3014b6ff649b47:/.zsh/zshrc/parts.d/50-taskwarrior diff --git a/.zsh/zshrc/parts.d/50-taskwarrior b/.zsh/zshrc/parts.d/50-taskwarrior index 255a770..2ca20b9 100644 --- a/.zsh/zshrc/parts.d/50-taskwarrior +++ b/.zsh/zshrc/parts.d/50-taskwarrior @@ -10,20 +10,34 @@ 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' @@ -35,6 +49,7 @@ if whence task >/dev/null; then alias tm='task_ modify' alias ts='task_ start' alias tw='task_ waiting' + alias tp='task_postpone' alias t+='task_ annotate' alias t='task_ ""'