summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alot/command.py3
-rw-r--r--alot/completion.py26
2 files changed, 22 insertions, 7 deletions
diff --git a/alot/command.py b/alot/command.py
index 3f7578a6..28667770 100644
--- a/alot/command.py
+++ b/alot/command.py
@@ -380,7 +380,8 @@ class ComposeCommand(Command):
#get To header
if 'To' not in self.mail:
- to = ui.prompt(prefix='To>', completer=ContactsCompleter())
+ to = ui.prompt(prefix='To>',
+ completer=ContactsCompleter(ui.accountman))
self.mail['To'] = encode_header('to', to)
if settings.config.getboolean('general', 'ask_subject') and \
not 'Subject' in self.mail:
diff --git a/alot/completion.py b/alot/completion.py
index 716554c3..e3821650 100644
--- a/alot/completion.py
+++ b/alot/completion.py
@@ -19,6 +19,7 @@ Copyright (C) 2011 Patrick Totzke <patricktotzke@gmail.com>
import re
import os
+import logging
import command
@@ -33,9 +34,10 @@ class Completer:
class QueryCompleter(Completer):
"""completion for a notmuch query string"""
# TODO: boolean connectors and braces?
- def __init__(self, dbman):
+ def __init__(self, dbman, accountman):
self.dbman = dbman
- self._contactscompleter = ContactsCompleter()
+ self._contactscompleter = ContactsCompleter(accountman,
+ addressesonly=True)
self._tagscompleter = TagsCompleter(dbman)
self.keywords = ['tag', 'from', 'to', 'subject', 'attachment',
'is', 'id', 'thread', 'folder']
@@ -77,10 +79,22 @@ class TagsCompleter(Completer):
class ContactsCompleter(Completer):
"""completes contacts"""
+ def __init__(self, accountman, addressesonly=True):
+ self.abooks = accountman.get_addressbooks()
+ self.addressesonly = addressesonly
def complete(self, prefix):
- # TODO
- return []
+ if not self.abooks:
+ return []
+ res = []
+ for abook in self.abooks:
+ res = res + abook.lookup(prefix)
+ logging.debug(res)
+ if self.addressesonly:
+ returnlist = [e[len(prefix):] for n,e in res]
+ else:
+ returnlist = ["%s <%s>" % (e,n) for n,e in res]
+ return returnlist
class AccountCompleter(Completer):
@@ -117,9 +131,9 @@ class CommandLineCompleter(Completer):
self.accountman = accountman
self.mode = mode
self._commandcompleter = CommandCompleter(dbman, mode)
- self._querycompleter = QueryCompleter(dbman)
+ self._querycompleter = QueryCompleter(dbman, accountman)
self._tagscompleter = TagsCompleter(dbman)
- self._contactscompleter = ContactsCompleter()
+ self._contactscompleter = ContactsCompleter(accountman)
self._pathcompleter = PathCompleter()
def complete(self, prefix):