summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Totzke <patricktotzke@gmail.com>2011-09-15 23:23:38 +0100
committerPatrick Totzke <patricktotzke@gmail.com>2011-09-15 23:23:38 +0100
commit51ce77e10f59629986068e2ae62919e030b2f688 (patch)
treef3ac00bc71a165e3ee9008b126b4d8bcb27b0b06
parentcc120c396b32e5115335ee208e0e7b88458f50a5 (diff)
ContactsCompleter respects given order on accounts
-rw-r--r--alot/account.py9
-rw-r--r--alot/command.py7
-rw-r--r--alot/completion.py11
3 files changed, 18 insertions, 9 deletions
diff --git a/alot/account.py b/alot/account.py
index 3fd7769c..73d37377 100644
--- a/alot/account.py
+++ b/alot/account.py
@@ -242,8 +242,13 @@ class AccountManager:
"""returns addresses of known accounts including all their aliases"""
return self.accountmap.keys()
- def get_addressbooks(self):
- return [a.abook for a in self.accounts if a.abook]
+ def get_addressbooks(self, order=[], append_remaining=True):
+ abooks = [a.abook for a in order]
+ if append_remaining:
+ for a in self.accounts:
+ if a.abook and a.abook not in abooks:
+ abooks.append(a.abook)
+ return abooks
class AddressBook:
diff --git a/alot/command.py b/alot/command.py
index 229b163e..cb11154a 100644
--- a/alot/command.py
+++ b/alot/command.py
@@ -386,8 +386,11 @@ class ComposeCommand(Command):
#get To header
if 'To' not in self.mail:
- to = yield ui.prompt(prefix='To>',
- completer=ContactsCompleter(ui.accountman))
+ allbooks = settings.config.getboolean('general',
+ 'complete_matching_abook_only')
+ abooks = ui.accountman.get_addressbooks(order=[a],
+ append_remaining=not allbooks)
+ to = yield ui.prompt(prefix='To>',completer=ContactsCompleter(abooks))
if to == None:
ui.notify('canceled')
return
diff --git a/alot/completion.py b/alot/completion.py
index 3cc673aa..f31d0d69 100644
--- a/alot/completion.py
+++ b/alot/completion.py
@@ -52,8 +52,8 @@ class QueryCompleter(Completer):
"""completion for a notmuch query string"""
def __init__(self, dbman, accountman):
self.dbman = dbman
- self._contactscompleter = ContactsCompleter(accountman,
- addressesonly=True)
+ abooks = accountman.get_addressbooks()
+ self._contactscompleter = ContactsCompleter(abooks, addressesonly=True)
self._tagscompleter = TagsCompleter(dbman)
self.keywords = ['tag', 'from', 'to', 'subject', 'attachment',
'is', 'id', 'thread', 'folder']
@@ -114,8 +114,8 @@ class TagsCompleter(Completer):
class ContactsCompleter(Completer):
"""completes contacts"""
- def __init__(self, accountman, addressesonly=False):
- self.abooks = accountman.get_addressbooks()
+ def __init__(self, abooks, addressesonly=False):
+ self.abooks = abooks
self.addressesonly = addressesonly
def complete(self, original, pos):
@@ -174,7 +174,8 @@ class CommandLineCompleter(Completer):
self._commandcompleter = CommandCompleter(dbman, mode)
self._querycompleter = QueryCompleter(dbman, accountman)
self._tagscompleter = TagsCompleter(dbman)
- self._contactscompleter = ContactsCompleter(accountman)
+ abooks = accountman.get_addressbooks()
+ self._contactscompleter = ContactsCompleter(abooks, addressesonly=True)
self._pathcompleter = PathCompleter()
def complete(self, line, pos):