summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_todo.sh32
1 files changed, 24 insertions, 8 deletions
diff --git a/Completion/Unix/Command/_todo.sh b/Completion/Unix/Command/_todo.sh
index fc984f7d4..2b6b444ee 100644
--- a/Completion/Unix/Command/_todo.sh
+++ b/Completion/Unix/Command/_todo.sh
@@ -3,9 +3,12 @@
# See http://todotxt.com for todo.sh.
#
# Featurettes:
-# - "replace" will complete the original text for editing.
+# - "replace" will complete the original text for editing
# - completing priorities will cycle through A to Z (even without
-# menu completion).
+# menu completion)
+# - list and listall will complete p:<project> and @<where> from
+# values in existing entries
+# - will complete after p: and @ if typed in message text
setopt localoptions braceccl
@@ -57,7 +60,11 @@ case $state in
nextstate=pri
;;
(append|prepend)
- _message $txtmsg
+ if [[ -prefix p: || -prefix @ ]]; then
+ nextstate=proj
+ else
+ _message $txtmsg
+ fi
;;
(replace)
compadd -Q -- "${(qq)$(todo.sh list "^0*${words[CURRENT-1]} ")##<-> }"
@@ -67,14 +74,15 @@ case $state in
;;
(add)
- _message $txtmsg
+ if [[ -prefix p: || -prefix @ ]]; then
+ nextstate=proj
+ else
+ _message $txtmsg
+ fi
;;
(list|listall)
- # This completes stuff beginning with p: (projects) or @ (contexts);
- # these are todo.sh conventions.
- _wanted search expl 'context or project' \
- compadd ${${=${${(M)${(f)"$(todo.sh list)"}##<-> *}##<-> }}:#^(p:*|@*)}
+ nextstate=proj
;;
(listpri)
@@ -103,4 +111,12 @@ case $nextstate in
_wanted priority expl 'priority' compadd {A-Z}
fi
;;
+
+ (proj)
+ # This completes stuff beginning with p: (projects) or @ (contexts);
+ # these are todo.sh conventions.
+ _wanted search expl 'context or project' \
+ compadd ${${=${${(M)${(f)"$(todo.sh list)"}##<-> *}##<-> }}:#^(p:*|@*)}
+ ;;
esac
+