From 07401a984b58d6d1328264efca45df39e1951ea2 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 10 Oct 2016 16:12:23 +0200 Subject: encoding readline completer options in case Python2 unicode strings are involved --- ql/completer.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ql/completer.py b/ql/completer.py index a9b7d8d..89920d4 100644 --- a/ql/completer.py +++ b/ql/completer.py @@ -1,4 +1,5 @@ import readline +import sys class Completer(object): @@ -10,8 +11,15 @@ class Completer(object): readline.set_completer_delims('') # allow options with whitespace readline.parse_and_bind('tab: complete') + def __encode_completion_string(self, s): + try: + return s.encode(sys.stdin.encoding) if isinstance(s, unicode) else s + except NameError: # Python 3.x does not have a 'unicode' type + pass + return s + def __init__(self, options): - self.options = options + self.options = [self.__encode_completion_string(s) for s in options] def complete(self, text, state): text = text.lower() -- cgit v1.2.3