unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob cbd10aa881f2054f7c3447949b5ee5c9fe060ee2 6404 bytes (raw)
name: completion/notmuch-completion.bash 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
 
# bash completion for notmuch                              -*- shell-script -*-
#
# Copyright © 2013 Jani Nikula
#
# Based on the bash-completion package:
# http://bash-completion.alioth.debian.org/
#
# 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, see http://www.gnu.org/licenses/ .
#
# Author: Jani Nikula <jani@nikula.org>
#
#
# BUGS/TODO:
#
# Add space after an --option without parameter (e.g. reply --decrypt)
# on completion.
#
# Do not complete other options immediately after an --option= which
# has no keyword value (e.g. reply --format-version=N).
#
# Filename completions for all file parameters (e.g. dump
# --output=FILE or even config set database.path).
#
# Do not define _notmuch_commands at the top level.
#
# Consider completing options only if the string being completed
# begins with '-' (i.e. do not offer option completions on
# e.g. notmuch search <TAB>).
#

_notmuch_commands="config count dump help new reply restore search setup show tag"

_notmuch_config()
{
    local cur prev words cword split
    _init_completion || return

    case "${prev}" in
	config)
	    COMPREPLY=( $(compgen -W "get set list" -- ${cur}) )
	    return
	    ;;
	get|set)
	    COMPREPLY=( $(compgen -W "`notmuch config list | sed 's/=.*\$//'`" -- ${cur}) )
	    return
	    ;;
    esac
}

_notmuch_count()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--output)
	    COMPREPLY=( $( compgen -W "messages threads" -- "${cur}" ) )
	    return
	    ;;
	--exclude)
	    COMPREPLY=( $( compgen -W "true false" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--output= --exclude="
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

_notmuch_dump()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--format)
	    COMPREPLY=( $( compgen -W "sup batch-tag" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--format= --output="
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

_notmuch_help()
{
    local cur prev words cword split
    _init_completion || return

    local help_topics="$_notmuch_commands hooks search-terms"
    COMPREPLY=( $(compgen -W "${help_topics}" -- ${cur}) )
}

_notmuch_new()
{
    local cur prev words cword split
    _init_completion || return

    local options="--no-hooks"
    COMPREPLY=( $(compgen -W "${options}" -- ${cur}) )
}

_notmuch_reply()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--format)
	    COMPREPLY=( $( compgen -W "default json sexp headers-only" -- "${cur}" ) )
	    return
	    ;;
	--reply-to)
	    COMPREPLY=( $( compgen -W "all sender" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--format= --format-version= --reply-to= --decrypt"
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

_notmuch_restore()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--format)
	    COMPREPLY=( $( compgen -W "sup batch-tag auto" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--format= --accumulate --input="
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

_notmuch_search()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--format)
	    COMPREPLY=( $( compgen -W "json sexp text text0" -- "${cur}" ) )
	    return
	    ;;
	--output)
	    COMPREPLY=( $( compgen -W "summary threads messages files tags" -- "${cur}" ) )
	    return
	    ;;
	--sort)
	    COMPREPLY=( $( compgen -W "newest-first oldest-first" -- "${cur}" ) )
	    return
	    ;;
	--exclude)
	    COMPREPLY=( $( compgen -W "true false flag" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--format= --output= --sort= --offset= --limit= --exclude="
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

# N/A
# _notmuch_setup()
# {
# }

_notmuch_show()
{
    local cur prev words cword split
    _init_completion -s || return

    $split &&
    case "${prev}" in
	--entire-thread)
	    COMPREPLY=( $( compgen -W "true false" -- "${cur}" ) )
	    return
	    ;;
	--format)
	    COMPREPLY=( $( compgen -W "text json sexp mbox raw" -- "${cur}" ) )
	    return
	    ;;
	--exclude|--body)
	    COMPREPLY=( $( compgen -W "true false" -- "${cur}" ) )
	    return
	    ;;
    esac

    local options="--entire-thread= --format= --exclude= --body= --format-version= --part= --verify --decrypt"
    compopt -o nospace
    COMPREPLY=( $(compgen -W "$options" -- ${cur}) )
}

_notmuch_tag()
{
    local cur prev words cword split
    # handle tags with colons and equal signs
    _init_completion -n := || return

    case "${cur}" in
	+*) COMPREPLY=( $(compgen -P "+" -W "`notmuch search --output=tags \*`" -- ${cur##+}) );;
	-*) COMPREPLY=( $(compgen -P "-" -W "`notmuch search --output=tags \*`" -- ${cur##-}) );;
    esac
    # handle tags with colons
    __ltrim_colon_completions "${cur}"
}

_notmuch()
{
    local arg cur prev words cword split
    _init_completion || return

    COMPREPLY=()

    # subcommand
    _get_first_arg

    # complete --help option like the subcommand
    if [ -z "${arg}" -a "${prev}" = "--help" ]; then
	arg="help"
    fi

    if [ -z "${arg}" ]; then
	# top level completion
	local top_options="--help --version"
	case "${cur}" in
	    -*) COMPREPLY=( $(compgen -W "${top_options}" -- ${cur}) ) ;;
	    *) COMPREPLY=( $(compgen -W "${_notmuch_commands}" -- ${cur}) ) ;;
	esac
    else
	# complete using _notmuch_subcommand if one exist
	local completion_func="_notmuch_${arg//-/_}"
	declare -f $completion_func >/dev/null && $completion_func
    fi
} &&
complete -F _notmuch notmuch

debug log:

solving cbd10aa ...
found cbd10aa in https://yhetil.org/notmuch/1362232751-9571-1-git-send-email-jani@nikula.org/
found 8665268 in https://yhetil.org/notmuch.git/
preparing index
index prepared:
100644 8665268c789eda9b789849bf999d59f0a4f87aa3	completion/notmuch-completion.bash

applying [1/1] https://yhetil.org/notmuch/1362232751-9571-1-git-send-email-jani@nikula.org/
diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash
dissimilarity index 66%
index 8665268..cbd10aa 100644

Checking patch completion/notmuch-completion.bash...
Applied patch completion/notmuch-completion.bash cleanly.

index at:
100644 cbd10aa881f2054f7c3447949b5ee5c9fe060ee2	completion/notmuch-completion.bash

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).