While this command exists in irssi and might be known by some already,
'sb' is not be the most obvious command name for newcomers.
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
Introduce the concept of priority for event handlers, instead of the
position parameter.
The new `priority` parameter replacing `position` should be an integer
between 0 and 100. It defaults to 50.
The previous `position` parameter was only used to insert at a certain
position in the list of handlers (for this particular event). No
reference of it was kept, which means that it was not possible to ensure
an event was called in the position is was supposed to be.
I am now using per-event dicts, containing priority buckets (lists) of
handlers. I am using OrderedDicts to make it easier to loop through all
of the handlers, as insertion happens less often than reading.
I was also suggested using bisect with a simple list of tuples
(priority, handler) per event, but bisect tries to compare bound
methods, which is obviously not possible. Maybe it would be interesting
to find a way use this method instead of OrderedDict as that might be
less resource consuming.
This said, I don't think this part of poezio is a bottleneck at all, so
maybe this is just fine as is.
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
Corrected the search for lastlog messages and refresh of the window.
patch from Maxime Buquet
Corrected the search for lastlog messages and refresh of the window.
In the case python-gobject isn’t installed, but another package (such as
libibus) provides overrides, the gi module will still get imported fine
despite being empty, resulting in a traceback. To prevent this, we also
catch AttributeError so that gi.require_version can fail.
Tabnames should be treated as opaque strings.
This specific fix prevents tabname (JID) to be compared with invalid
stringly-typed JIDs. JID's __eq__ method used to (after
poezio/slixmpp@47968963) try and convert anything into JIDs. This has
been fixed and now properly returns NotImplemented.
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
`ChatTab.name` is now its own property. It only mirrors `ChatTab.jid`
when it is None for compat reasons.
If code tries to set `ChatTab.name` and it is a valid JID, `ChatTab.jid`
is set instead for compat reasons and `ChatTab.name` stays with its
previous value.
To have `ChatTab.name` mirror `ChatTab.jid` again, set it to None.
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>