summaryrefslogtreecommitdiff
path: root/alot/completion.py
diff options
context:
space:
mode:
authorPatrick Totzke <patricktotzke@gmail.com>2011-12-18 13:09:20 +0000
committerPatrick Totzke <patricktotzke@gmail.com>2011-12-24 15:49:36 +0000
commit0537884cf95fabfc163d01a1fb6618f06a21ba9a (patch)
tree206727937c9b62a66b5d1f4dca3a72eb3a108d63 /alot/completion.py
parent92f721c1a11230820aa538d6fec93c15de976ab6 (diff)
header key completion for envelope.set/unset
issue #104 issue, #161
Diffstat (limited to 'alot/completion.py')
-rw-r--r--alot/completion.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/alot/completion.py b/alot/completion.py
index fe1cd187..e609c552 100644
--- a/alot/completion.py
+++ b/alot/completion.py
@@ -73,8 +73,8 @@ class StringlistCompleter(Completer):
:rtype: list of (str, int)
"""
if not listseparator:
- prefix = original[:pos]
- return [(a, len(a)) for a in self.resultlist if a.startswith(prefix)]
+ pref = original[:pos]
+ return [(a, len(a)) for a in self.resultlist if a.startswith(pref)]
else:
mypart, start, end, mypos = self.relevant_part(original, pos,
sep=listseparator)
@@ -257,7 +257,7 @@ class CommandLineCompleter(Completer):
res = self._commandcompleter.complete(params, localpos)
elif cmd in ['compose']:
res = self._contactscompleter.complete(params, localpos)
- # search
+ # search
elif self.mode == 'search' and cmd == 'refine':
res = self._querycompleter.complete(params, localpos)
elif self.mode == 'search' and cmd == 'retag':
@@ -269,7 +269,11 @@ class CommandLineCompleter(Completer):
elif self.mode == 'envelope' and cmd == 'set':
plist = params.split(' ', 1)
if len(plist) == 1: # complete from header keys
- pass
+ localprefix = params
+ headers = ['Subject', 'To', 'Cc', 'Bcc', 'In-Reply-To']
+ localcompleter = StringlistCompleter(headers)
+ localres = localcompleter.complete(localprefix, localpos)
+ res = [(c, p + 6) for (c, p) in localres]
else: # must have 2 elements
header, params = plist
localpos = localpos - (len(header) + 1)
@@ -280,7 +284,19 @@ class CommandLineCompleter(Completer):
return ('%s %s' % (header, completed),
pos + len(header) + 1)
res = map(f, self._contactscompleter.complete(params,
- localpos))
+ localpos))
+ elif self.mode == 'envelope' and cmd == 'unset':
+ plist = params.split(' ', 1)
+ if len(plist) == 1: # complete from header keys
+ localprefix = params
+ buf = self.currentbuffer
+ if buf:
+ if isinstance(buf, EnvelopeBuffer):
+ available = buf.envelope.headers.keys()
+ localcompleter = StringlistCompleter(available)
+ localres = localcompleter.complete(localprefix,
+ localpos)
+ res = [(c, p + 6) for (c, p) in localres]
elif self.mode == 'envelope' and cmd == 'attach':
res = self._pathcompleter.complete(params, localpos)