summaryrefslogtreecommitdiff
path: root/zsh/comp/todotxt.zsh-completion
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/comp/todotxt.zsh-completion')
-rw-r--r--zsh/comp/todotxt.zsh-completion107
1 files changed, 0 insertions, 107 deletions
diff --git a/zsh/comp/todotxt.zsh-completion b/zsh/comp/todotxt.zsh-completion
deleted file mode 100644
index bd5b7c3..0000000
--- a/zsh/comp/todotxt.zsh-completion
+++ /dev/null
@@ -1,107 +0,0 @@
-#compdef todo.sh
-
-_todo() {
- local curcontext="$curcontext" state state_descr line
- typeset -A opt_args
- local -a args commands subcmds
-
- local _todo_sh=${_todo_sh:-${words[1]}}
- local -r MOVE_COMMAND_PATTERN='(move|mv)'
- local -r OPTS=('-@' '-@@' '-+' '-++' '-d' '-f' '-h' '-p' '-P' '-PP' '-a' '-n' '-t' '-v' '-vv' '-V' '-x')
- local -r COMMANDS=(
- 'add:a new task'
- 'a:add alias'
- 'addto:add to file'
- 'addm:add multiple'
- 'append:app:app:append to task'
- 'archive:move done tasks to archive'
- 'command:run addon'
- 'del:rm:delete task'
- 'depri:dp:remove priority'
- 'do:mark as done'
- 'help:show help'
- 'list:ls:list tasks'
- 'listaddons:show installed addons'
- 'listall:lsa:list all tasks'
- 'listcon:lsc:list contexts'
- 'listfile:lf:list files'
- 'listpri:lsp:list by priority'
- 'listproj:lsprj:list projects'
- 'move:mv:move task between files'
- 'prepend:insert text at beginning'
- 'pri:p:set priority'
- 'replace:modify task'
- 'report:generate report'
- 'shorthelp:brief help'
- )
-
- _arguments -C \
- "1: :->cmds" \
- "*:: :->args"
-
- case $state in
- cmds)
- local addons=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listaddons 2>/dev/null))
- args=($COMMANDS $addons $OPTS)
- _describe 'todo.sh command' args
- ;;
- args)
- cur="${words[CURRENT]}"
- prev="${words[CURRENT-1]}"
-
- case "$prev" in
- command)
- _describe 'subcommand' COMMANDS
- ;;
- help)
- local addons=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listaddons 2>/dev/null))
- args=($COMMANDS $addons)
- _describe 'help topic' args
- ;;
- addto|listfile|lf|move|mv)
- local files=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listfile 2>/dev/null))
- _describe 'file' files
- ;;
- *)
- case "$cur" in
- due:*)
- _values 'due date' $(seq 0 30 | xargs -I{} date -d "+{} days" +%Y-%m-%d)
- ;;
- *@today*|*@now*)
- _wanted dates expl 'date' compadd -S '' -- $(date +%Y-%m-%d)
- ;;
- +*)
- local projects=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listproj 2>/dev/null))
- [[ ${#projects} -eq 0 ]] && projects=($(eval TODOTXT_VERBOSE=0 TODOTXT_SOURCEVAR=\$DONE_FILE "$_todo_sh" command listproj 2>/dev/null))
- _describe 'project' projects -p '+'
- ;;
- @*)
- local contexts=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listcon 2>/dev/null))
- [[ ${#contexts} -eq 0 ]] && contexts=($(eval TODOTXT_VERBOSE=0 TODOTXT_SOURCEVAR=\$DONE_FILE "$_todo_sh" command listcon 2>/dev/null))
- _describe 'context' contexts -p '@'
- ;;
- [0-9]##)
- local task=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" \
- '-@ -+ -p -x command ls "^ *${cur} "' 2>/dev/null | \
- sed -e 's/^ *[0-9]\{1,\} //' \
- -e 's/^\((.) \)\{0,1\}[0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} /\1/' \
- -e 's/^\([xX] \)\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{1,2\}/\1/' \
- -e 's/[[:space:]]*$//' -e '1q'))
- _message -r "Task ${cur}: ${task}"
- ;;
- *)
- if [[ ${words[1]} == $~MOVE_COMMAND_PATTERN ]] && (( CURRENT == 3 )); then
- local files=($(eval TODOTXT_VERBOSE=0 "$_todo_sh" command listfile 2>/dev/null))
- _describe 'destination file' files
- else
- _files
- fi
- ;;
- esac
- ;;
- esac
- ;;
- esac
-}
-
-_todo "$@"