diff options
author | Patrick Totzke <patricktotzke@gmail.com> | 2011-09-15 23:23:38 +0100 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2011-09-15 23:23:38 +0100 |
commit | 51ce77e10f59629986068e2ae62919e030b2f688 (patch) | |
tree | f3ac00bc71a165e3ee9008b126b4d8bcb27b0b06 | |
parent | cc120c396b32e5115335ee208e0e7b88458f50a5 (diff) |
ContactsCompleter respects given order on accounts
-rw-r--r-- | alot/account.py | 9 | ||||
-rw-r--r-- | alot/command.py | 7 | ||||
-rw-r--r-- | alot/completion.py | 11 |
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): |