diff options
Diffstat (limited to 'completion')
-rw-r--r-- | completion/README | 10 | ||||
-rw-r--r-- | completion/notmuch-completion.bash | 71 | ||||
-rw-r--r-- | completion/notmuch-completion.tcsh | 2 | ||||
-rw-r--r-- | completion/notmuch-completion.zsh | 74 |
4 files changed, 157 insertions, 0 deletions
diff --git a/completion/README b/completion/README new file mode 100644 index 00000000..40a30e5f --- /dev/null +++ b/completion/README @@ -0,0 +1,10 @@ +notmuch completion + +This directory contains support for various shells to automatically +complete partially entered notmuch command lines. + +notmuch-completion.bash Command-line completion for the bash shell + +notmuch-completion.tcsh Command-line completion for the tcsh shell + +notmuch-completion.zsh Command-line completion for the zsh shell diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash new file mode 100644 index 00000000..8665268c --- /dev/null +++ b/completion/notmuch-completion.bash @@ -0,0 +1,71 @@ +# Bash completion for notmuch +# +# Copyright © 2009 Carl Worth +# +# 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 3 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, see http://www.gnu.org/licenses/ . +# +# Author: Carl Worth <cworth@cworth.org> +# +# Based on "notmuch help" as follows: +# +# Usage: notmuch <command> [args...] +# +# Where <command> and [args...] are as follows: +# +# setup +# +# new +# +# search [options] <search-term> [...] +# +# show <search-terms> +# +# reply <search-terms> +# +# tag +<tag>|-<tag> [...] [--] <search-terms> [...] +# +# dump [<filename>] +# +# restore <filename> +# +# help [<command>] + +_notmuch() +{ + local current previous commands help_options + + previous=${COMP_WORDS[COMP_CWORD-1]} + current="${COMP_WORDS[COMP_CWORD]}" + + commands="setup new search show reply tag dump restore help" + help_options="setup new search show reply tag dump restore search-terms" + search_options="--max-threads= --first= --sort=" + + COMPREPLY=() + + case $COMP_CWORD in + 1) + COMPREPLY=( $(compgen -W "${commands}" -- ${current}) ) ;; + 2) + case $previous in + help) + COMPREPLY=( $(compgen -W "${help_options}" -- ${current}) ) ;; + search) + COMPREPLY=( $(compgen -W "${search_options}" -- ${current}) ) ;; + esac + ;; + esac +} + +complete -o default -o bashdefault -F _notmuch notmuch diff --git a/completion/notmuch-completion.tcsh b/completion/notmuch-completion.tcsh new file mode 100644 index 00000000..c0d3a446 --- /dev/null +++ b/completion/notmuch-completion.tcsh @@ -0,0 +1,2 @@ +set NOTMUCH_CMD=`notmuch help | awk '/\t/' | cut -f2 |grep -v '^$'` +complete notmuch 'p/1/$NOTMUCH_CMD/' diff --git a/completion/notmuch-completion.zsh b/completion/notmuch-completion.zsh new file mode 100644 index 00000000..67a9aba8 --- /dev/null +++ b/completion/notmuch-completion.zsh @@ -0,0 +1,74 @@ +#compdef notmuch + +# ZSH completion for `notmuch` +# Copyright © 2009 Ingmar Vanhassel <ingmar@exherbo.org> + +_notmuch_commands() +{ + local -a notmuch_commands + notmuch_commands=( + 'setup:interactively set up notmuch for first use' + 'new:find and import any new message to the database' + 'search:search for messages matching the search terms, display matching threads as results' + 'reply:constructs a reply template for a set of messages' + 'show:show all messages matching the search terms' + 'tag:add or remove tags for all messages matching the search terms' + 'dump:creates a plain-text dump of the tags of each message' + 'restore:restores the tags from the given file' + 'help:show details on a command' + ) + + _describe -t command 'command' notmuch_commands +} + +_notmuch_dump() +{ + _files +} + +_notmuch_help_topics() +{ + local -a notmuch_help_topics + notmuch_help_topics=( + 'search-terms:show common search-terms syntax' + ) + _describe -t notmuch-help-topics 'topic' notmuch_help_topics +} + +_notmuch_help() +{ + _alternative \ + _notmuch_commands \ + _notmuch_help_topics +} + +_notmuch_restore() +{ + _files +} + +_notmuch_search() +{ + _arguments -s : \ + '--max-threads=[display only the first x threads from the search results]:number of threads to show: ' \ + '--first=[omit the first x threads from the search results]:number of threads to omit: ' \ + '--sort=[sort results]:sorting:((newest-first\:"reverse chronological order" oldest-first\:"chronological order"))' +} + +_notmuch() +{ + if (( CURRENT > 2 )) ; then + local cmd=${words[2]} + curcontext="${curcontext%:*:*}:notmuch-$cmd" + (( CURRENT-- )) + shift words + _call_function ret _notmuch_$cmd + return ret + else + _notmuch_commands + fi +} + +_notmuch "$@" + +# vim: set sw=2 sts=2 ts=2 et ft=zsh : |