From 7e17485e77441d0d9c27f77ff7d06c91c6e80a67 Mon Sep 17 00:00:00 2001 From: Patrick Totzke Date: Sat, 20 Aug 2011 15:57:41 +0100 Subject: first attempt to contactscompleter --- alot/command.py | 3 ++- alot/completion.py | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) (limited to 'alot') 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 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): -- cgit v1.2.3