diff options
author | Johannes Kulick <kulick@hildensia.de> | 2012-12-15 16:41:12 +0100 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2013-02-19 10:10:08 +0000 |
commit | 2b5580267e5fcf6d4e99ef79d9955dac2a3fa3f0 (patch) | |
tree | c2849560916146e788c4677632298813692ee355 /alot | |
parent | 3ec53efa8e2a966ca2d697de6281291549e72b30 (diff) |
add auto completion of gpg keys
Diffstat (limited to 'alot')
-rw-r--r-- | alot/completion.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/alot/completion.py b/alot/completion.py index 70ac8489..fe244a78 100644 --- a/alot/completion.py +++ b/alot/completion.py @@ -7,6 +7,7 @@ import glob import logging import argparse +import alot.crypto as crypto import alot.commands as commands from alot.buffers import EnvelopeBuffer from alot.settings import settings @@ -313,6 +314,8 @@ class CommandCompleter(Completer): self._contactscompleter = ContactsCompleter(abooks) self._pathcompleter = PathCompleter() self._accountscompleter = AccountCompleter() + self._secretkeyscompleter = CryptoKeyCompleter(private=True) + self._publickeyscompleter = CryptoKeyCompleter(private=False) def complete(self, line, pos): # remember how many preceding space characters we see until the command @@ -421,6 +424,11 @@ class CommandCompleter(Completer): elif self.mode == 'envelope' and cmd == 'attach': res = self._pathcompleter.complete(params, localpos) + elif self.mode == 'envelope' and cmd in ['sign', 'togglesign']: + res = self._secretkeyscompleter.complete(params, localpos) + elif self.mode == 'envelope' and cmd in ['encrypt', 'rmencrypt' + 'toggleencrypt']: + res = self._publickeyscompleter.complete(params, localpos) # thread elif self.mode == 'thread' and cmd == 'save': res = self._pathcompleter.complete(params, localpos) @@ -505,3 +513,21 @@ class PathCompleter(Completer): return escaped_path, len(escaped_path) return map(prep, glob.glob(deescape(prefix) + '*')) + + +class CryptoKeyCompleter(StringlistCompleter): + """completion for gpg keys""" + + def __init__(self, private=False): + """ + :param private: return private keys + :type private: bool + """ + keys = crypto.list_keys(private=private) + resultlist = [] + for k in keys: + for s in k.subkeys: + resultlist.append(s.keyid) + for u in k.uids: + resultlist.append(u.email) + StringlistCompleter.__init__(self, resultlist) |