Add a /display_corrections plugin.

This commit is contained in:
Emmanuel Gil Peyrot 2012-12-26 17:58:16 +01:00 committed by Florent Le Coz
parent 65e097f410
commit 1313e7be38
3 changed files with 83 additions and 0 deletions

View file

@ -0,0 +1,32 @@
Display corrections
===================
Lists old versions of a corrected message.
Installation
------------
============================
/load display\_corrections
============================
Usage
-----
This plugin adds a _/display\_corrections command that will display a list of
old versions of a message.
_/display\_corrections_ without argument will list the last corrected message,
if any is found. If an integer argument is given, /display\_corrections will
go back gradually in the buffer to list the previous corrected messages, and so
on.
If you are scrolling in the buffer, poezio will list the corrected messages
starting from the first you can see. (although there are some problems with
multiline messages).

View file

@ -70,6 +70,11 @@ Plugins index
Logs the day change inside the buffers, to keep track of the days when
backlogging.
*Display corrections*:: link:display_corrections.html[Display corrections
plugin]
Lists old versions of a corrected message.
*Exec*:: link:exec.html[System command plugin]
Runs a system command an optionally sends the output as a message.

View file

@ -0,0 +1,46 @@
# A plugin that adds the /display_corrections command, to view the previous
# versions of a corrected message.
from plugin import BasePlugin
from common import shell_split
import tabs
class Plugin(BasePlugin):
def init(self):
usage = 'Usage: /display_corrections <number>\nDisplay_corrections: display all the corrections of the number-th last corrected message.'
for tab_type in (tabs.MucTab, tabs.PrivateTab, tabs.ConversationTab):
self.add_tab_command(tab_type, 'display_corrections', self.command_display_corrections, usage)
def find_corrected(self, nb):
messages = self.core.get_conversation_messages()
if not messages:
return None
for message in messages[::-1]:
if message.old_message:
if nb == 1:
return message
else:
nb -= 1
return None
def command_display_corrections(self, args):
args = shell_split(args)
if len(args) == 1:
try:
nb = int(args[0])
except:
return self.core.command_help('display_corrections')
else:
nb = 1
message = self.find_corrected(nb)
if message:
display = []
while message:
display.append('%s %s%s%s %s' % (message.str_time, '* ' if message.me else '', message.nickname, '' if message.me else '>', message.txt))
message = message.old_message
self.core.information('Older versions:\n' + '\n'.join(display[::-1]), 'Info')
else:
self.core.information('No corrected message found.', 'Warning')
def cleanup(self):
del self.config