diff options
author | mathieui <mathieui@mathieui.net> | 2015-07-31 20:47:01 +0200 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2015-07-31 20:47:01 +0200 |
commit | 3633072b365ae858370c5c8e9c17708f255f2dc4 (patch) | |
tree | 489048280a07b97b08cd21ca6cb3f1506c0d4c25 | |
parent | d226c60997b8b65d17a1ba706aed59a8400dd757 (diff) | |
download | poezio-3633072b365ae858370c5c8e9c17708f255f2dc4.tar.gz poezio-3633072b365ae858370c5c8e9c17708f255f2dc4.tar.bz2 poezio-3633072b365ae858370c5c8e9c17708f255f2dc4.tar.xz poezio-3633072b365ae858370c5c8e9c17708f255f2dc4.zip |
Fix #3105 (/message completion is slow)
sorting things several times is slow, and our roster wrapper is even
slower. remove the overly slow code until the roster wrapper is
rewritten (do we even need this level of detailed sorting in the first place?)
-rw-r--r-- | src/core/completions.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/core/completions.py b/src/core/completions.py index f17e916c..9fd44f1b 100644 --- a/src/core/completions.py +++ b/src/core/completions.py @@ -217,12 +217,13 @@ def completion_message(self, the_input): n = the_input.get_argument_position(quoted=True) if n >= 2: return - comp = reduce(lambda x, y: x + [i.jid for i in y], (roster[jid].resources for jid in roster.jids() if len(roster[jid])), []) - comp = sorted(comp) - bares = sorted(roster[contact].bare_jid for contact in roster.jids() if len(roster[contact])) - off = sorted(jid for jid in roster.jids() if jid not in bares) - comp = bares + comp + off - return the_input.new_completion(comp, 1, '', quotify=True) + l = [] + for jid in roster.jids(): + if len(roster[jid]): + l.append(jid) + for resource in roster[jid].resources: + l.append(resource.jid) + return the_input.new_completion(l, 1, '', quotify=True) def completion_invite(self, the_input): |