Age | Commit message (Collapse) | Author |
|
fix #2185
|
|
fix #2184
|
|
This makes it possible to read the ctrl+arrows keys with python3.3, assign
ctrl+left/right to next/previous tab, in the default config.
|
|
|
|
This avoid some garbage on the screen when we set an option that changes the
behaviour of the UI.
|
|
|
|
|
|
the <history/> element had a xmlns="" instead of the proper namespace.
|
|
|
|
Plugins do not need to escape the command arguments or remove the line
breaks and care about how the will get parsed anymore, they just need to
pass a list of args.
Do not spawn an additional shell, for more clarity, simplicity and possibly
security.
|
|
|
|
|
|
|
|
|
|
|
|
(and fix one more issue with the refresh in the roster)
|
|
|
|
- Also make Core.focus_tab_named take an optional type, and return a boolean
|
|
|
|
|
|
|
|
If we try to send that, we get disconnected…
|
|
|
|
|
|
In case of lags or paste of text, the input can yield a list of chars
instead of just one char. In case of lags, keyboard special keys
(KEY_BACKSPACE, ^W, etc) are mixed with other “normal” chars ('a', 'b', 'D',
' ' etc). Instead of handling that whole batch in one go (which requires us
to ignore all the special keys, otherwise they would be displayed in the
input, which are both bad ways to handle that), we separate special keys
from the normal ones, and we handle that big batch as one or more smaller
batches. This should make the input behave correctly in case of lag AND in
case of paste of huge text (only one refresh per batch, respond instantly,
no key lost or ignored, etc)
fixed #2365
|
|
|
|
|
|
And break it down into understandable functions
|
|
- Now the tab number is computed instead of assigned and fixed
- Added tabs.GapTab to keep the old behaviour
- Added a create_gaps option, defaults to true (may change in the
future)
- If there are gaps before using /set to change the option to false,
they will be removed.
(this is a preparation for the move_tab command)
|
|
previously, the change wasn’t saved
|
|
|
|
|
|
(notably, the /message one)
All JID calls in poezio’s code were already covered, but sleekxmpp does
that, too, so each jid given to sleek must be validated, otherwise an
unwanted exception may occur.
|
|
- get rid of the ugly blacklist thing that didn’t work sometimes
|
|
|
|
(sleekxmpp added JID validation, which means that JID(something) now
raises an exception if the jid is invalid, instead of failing silently and
having JID('') as a default)
|
|
- This option takes a list of words separated by colons
- All the messages containing those words will not be shown
|
|
|
|
- Add a /activity command
- Load xep_0012 on start
- Add a 'l' shortcut in the roster to get the last activity
- Using "/activity" in a direct conversation will add a message in the
conversation, and not in the info buffer.
|
|
|
|
|
|
|
|
This allows the user to run the action defined on a key without having
to press that key. The completion completes all the available keys that
will have an effect.
|
|
- All functions involved return a boolean, and the core function use
that value to determine if a refresh is needed or not. (avoids useless
refreshs)
- Scrolling with PGUP/DOWN on the roster now only does _one_ action, an
not a range corresponding to the screen size (should be way faster)
|
|
- get_conversation_by_jid() now behaves like the removed name
|
|
- Put the commands and the related completions together
- Put the xmpp handlers together
- Put the curses-using functions together
|
|
- Write the config with “option = value” instead of “option= value”
- Docstring for sighup_handler
- Optimize a join() in the main loop
- Rename the verbose get_error_message_from_error_stanza() with
get_error_message()
- Remove the unused Tab.just_before_refresh() which is litterally used
nowhere in poezio
|
|
And improve the completion in the roster (go to the resources)
|
|
With failed_auth, poezio was showing an error message for each
authentication mechanism tried (3, usually). This commit fixes that.
|
|
If the plugins_autoload list was not empty, it caused the plugins to be
reloaded upon each reconnection (with /connect or not). Now it does not.
|