#compdef task
#
# zsh completion for taskwarrior
#
# Copyright 2010 - 2011 Johannes Schlatow
# Copyright 2009 P.C. Shyamshankar
# All rights reserved.
#
# This script is part of the taskwarrior project.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the
#
#     Free Software Foundation, Inc.,
#     51 Franklin Street, Fifth Floor,
#     Boston, MA
#     02110-1301
#     USA
#
typeset -g _task_cmds _task_projects _task_tags _task_config _task_modifiers
_task_projects=($(task _projects))
_task_tags=($(task _tags))
_task_ids=($(task _ids))
_task_config=($(task _config))
_task_modifiers=(
    'before' \
    'after' \
    'none' \
    'any' \
    'is' \
    'isnt' \
    'has' \
    'hasnt' \
    'startswith' \
    'endswith' \
    'word' \
    'noword'
)
_task_cmds=($(task _commands))
_task_zshcmds=( ${(f)"$(task _zshcommands)"} )
 
 
_task_idCmds=(
    'append' \
    'prepend' \
    'annotate' \
    'denotate' \
    'edit' \
    'duplicate' \
    'info' \
    'start' \
    'stop' \
    'done'
)
 
_task_idCmdsDesc=(
    'append:Appends more description to an existing task.' \
    'prepend:Prepends more description to an existing task.' \
    'annotate:Adds an annotation to an existing task.' \
    'denotate:Deletes an annotation of an existing task.' \
    'edit:Launches an editor to let you modify a task directly.' \
    'duplicate:Duplicates the specified task, and allows modifications.' \
    'info:Shows all data, metadata for specified task.' \
    'start:Marks specified task as started.' \
    'stop:Removes the start time from a task.' \
    'done:Marks the specified task as completed.'
)
 
_task() {
    _arguments -s -S \
        "*::task command:_task_commands"
    return 0
}
 
local -a reply args word
word=$'[^\0]#\0'
 
# priorities
local -a task_priorities
_regex_words values 'task priorities' \
    'H:High' \
    'M:Middle' \
    'L:Low'
task_priorities=("$reply[@]")
 
# projects
local -a task_projects
task_projects=(
    /"$word"/
    ":values:task projects:compadd -a _task_projects"
)
 
local -a _task_dates