| _todo() |
| { |
| local cur prev opts |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| |
| COMMANDS="add a addto addm append app archive command del \ |
| rm depri dp do help list ls listall lsa listcon \ |
| lsc listfile lf listpri lsp listproj lsproj move \ |
| mv prepend prep pri p replace report" |
| |
| # Add custom commands from add-ons, if installed. |
| COMMANDS="$COMMANDS $('ls' ${TODO_ACTIONS_DIR:-$HOME/.todo.actions.d}/ 2>/dev/null)" |
| |
| OPTS="-@ -@@ -+ -++ -d -f -h -p -P -PP -a -n -t -v -vv -V -x" |
| |
| if [ $COMP_CWORD -eq 1 ]; then |
| completions="$COMMANDS $OPTS" |
| else |
| case "${prev}" in |
| -*) completions="$COMMANDS $OPTS";; |
| *) return 0;; |
| esac |
| fi |
| |
| COMPREPLY=( $( compgen -W "$completions" -- $cur )) |
| return 0 |
| } |
| |
| complete -F _todo todo.sh |
| # If you define an alias (e.g. "t") to todo.sh, you need to explicitly enable |
| # completion for it, too: |
| complete -F _todo t |