3.3. Contacts Completion¶
For each account you can define an address book by providing a subsection named abook. Crucially, this section needs an option type that specifies the type of the address book. The only types supported at the moment are “shellcommand” and “abook”. Both respect the ignorecase option which defaults to True and results in case insensitive lookups.
- shellcommand
Address books of this type use a shell command in combination with a regular expression to look up contacts.
The value of command will be called with the search prefix as only argument for lookups. Its output is searched for email-name pairs using the regular expression given as regexp, which must include named groups “email” and “name” to match the email address and realname parts respectively. See below for an example that uses abook
[accounts] [[youraccount]] # ... [[[abook]]] type = shellcommand command = abook --mutt-query regexp = '^(?P<email>[^@]+@[^\t]+)\t+(?P<name>[^\t]+)' ignorecase = True
See here for alternative lookup commands. The few others I have tested so far are:
- goobook
for cached google contacts lookups. Works with the above default regexp
command = goobook query regexp = '^(?P<email>[^@]+@[^\t]+)\t+(?P<name>[^\t]+)'
- nottoomuch-addresses
completes contacts found in the notmuch index:
command = nottoomuch-addresses.sh regexp = \"(?P<name>.+)\"\s*<(?P<email>.*.+?@.+?)>
- notmuch-abook
completes contacts found in database of notmuch-abook:
command = notmuch_abook.py lookup regexp = ^((?P<name>[^(\\s+\<)]*)\s+<)?(?P<email>[^@]+?@[^>]+)>?$
- notmuch address
Since version 0.19, notmuch itself offers a subcommand address, that returns email addresses found in the notmuch index. Combined with the date: syntax to query for mails within a certain timeframe, this allows to search contacts that you’ve sent emails to (output all addresses from the To, Cc and Bcc headers):
command = 'notmuch address --format=json --output=recipients date:1Y.. AND from:my@address.org' regexp = '\[?{"name": "(?P<name>.*)", "address": "(?P<email>.+)", "name-addr": ".*"}[,\]]?' shellcommand_external_filtering = False
If you want to search for senders in the From header (which should be must faster according to notmuch address docs), then use the following command:
command = 'notmuch address --format=json date:1Y..'
- notmuch-addlookup
If you have the ‘notmuch-addrlookup’ tool installed you can hook it to ‘alot’ with the following:
command = 'notmuch-addrlookup ' regexp = '(?P<name>.*).*<(?P<email>.+)>'
Don’t hesitate to send me your custom regexp values to list them here.
- abook
Address books of this type directly parse abooks contact files. You may specify a path using the “abook_contacts_file” option, which defaults to
~/.abook/addressbook
. To use the default path, simply do this:[accounts] [[youraccount]] # ... [[[abook]]] type = abook