- alias t=task
- alias t\?='alias -rm t t[a-z]'
- alias ta='t add'
- alias tn='t next'
- alias tl='t all'
- alias ty='t sync'
- alias td='t done'
- alias te='t edit'
- alias tm='t modify'
-
- local SENTINEL=${XDG_RUNTIME_DIR}/taskwarrior/shell_run_sentinel
- mkdir --parent ${SENTINEL%/*}
- # only print the tasks at most once every 30 seconds
- if [[ -t 0 ]] && [[ -z ${SENTINEL}(#qNms-30) ]]; then
- touch ${SENTINEL}
- task rc.color:off 2>/dev/null || :
- fi
- unset SENTINEL
+ function task_() {
+ local filter cmd args nofilter=0
+ cmd="$1"; shift
+
+ case "$cmd" in
+ (add|attach|call) nofilter=1;;
+ esac
+
+ for i in "$@"; do
+ case "$nofilter@$i" in
+ (0@<->) :;&
+ (0@/*/) filter="${filter:+$filter }$i";;
+ (*) args="${args:+$args }$i";;
+ esac
+ done
+ 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 -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 || :