Makefile: Move the completion-specific commands to completion/Makefile.local
[notmuch] / completion / notmuch-completion.bash
1 # Bash completion for notmuch
2 #
3 # Copyright © 2009 Carl Worth
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see http://www.gnu.org/licenses/ .
17 #
18 # Author: Carl Worth <cworth@cworth.org>
19 #
20 # Based on "notmuch help" as follows:
21 #
22 # Usage: notmuch <command> [args...]
23 #
24 # Where <command> and [args...] are as follows:
25 #
26 #       setup
27 #
28 #       new
29 #
30 #       search [options] <search-term> [...]
31 #
32 #       show <search-terms>
33 #
34 #       reply <search-terms>
35 #
36 #       tag +<tag>|-<tag> [...] [--] <search-terms> [...]
37 #
38 #       dump [<filename>]
39 #
40 #       restore <filename>
41 #
42 #       help [<command>]
43
44 _notmuch()
45 {
46     local current previous commands help_options
47
48     previous=${COMP_WORDS[COMP_CWORD-1]}
49     current="${COMP_WORDS[COMP_CWORD]}"
50
51     commands="setup new search show reply tag dump restore help"
52     help_options="setup new search show reply tag dump restore search-terms"
53     search_options="--max-threads= --first= --sort="
54
55     COMPREPLY=()
56
57     case $COMP_CWORD in
58         1)
59             COMPREPLY=( $(compgen -W "${commands}" -- ${current}) ) ;;
60         2)
61             case $previous in
62                 help)
63                     COMPREPLY=( $(compgen -W "${help_options}" -- ${current}) ) ;;
64                 search)
65                     COMPREPLY=( $(compgen -W "${search_options}" -- ${current}) ) ;;
66             esac
67             ;;
68     esac
69 }
70
71 complete -o default -o bashdefault -F _notmuch notmuch