From 6cfd23196c935dbf4c6ef15091342576ef507c95 Mon Sep 17 00:00:00 2001
From: Maxime Buquet <pep@bouah.net>
Date: Thu, 13 Jun 2019 00:23:48 +0530
Subject: patch from Maxime Buquet

---
 plugins/lastlog.py | 58 ++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 43 insertions(+), 15 deletions(-)

(limited to 'plugins')

diff --git a/plugins/lastlog.py b/plugins/lastlog.py
index 5198527e..ae946f46 100644
--- a/plugins/lastlog.py
+++ b/plugins/lastlog.py
@@ -12,7 +12,7 @@
 
 import re
 from poezio.plugin import BasePlugin
-from poezio import tabs
+from poezio.tabs import ConversationTab, PrivateTab, MucTab
 from poezio.text_buffer import Message, TextBuffer
 
 
@@ -32,32 +32,60 @@ def add_line(text_buffer: TextBuffer, text: str) -> None:
     )
 
 
+def add_message(text_buffer: TextBuffer, msg: Message) -> None:
+    """Adds a message to the TextBuffer"""
+    text_buffer.add_message(
+        msg.txt,
+        msg.time,
+        None,  # Nickname
+        None,  # Nick Color
+        False,  # History
+        None,  # User
+        msg.highlight,
+        msg.identifier,
+        msg.str_time,
+        None,  # Jid
+    )
+
+
 class Plugin(BasePlugin):
     """Lastlog Plugin"""
 
     def init(self):
-        for tab in tabs.ConversationTab, tabs.PrivateTab, tabs.MucTab:
-            self.api.add_tab_command(
-                tab,
-                'lastlog',
-                self.command_lastlog,
-                usage='<keyword>',
-                help='Search <keyword> in the buffer and returns results'
-                  'on the screen')
+        self.api.add_tab_command(
+            ConversationTab, 'lastlog', self.command_lastlog,
+            usage='<keyword>', help=(
+                'Search <keyword> in the buffer and returns results'
+                'on the screen'
+            ),
+        )
+        self.api.add_tab_command(
+            MucTab, 'lastlog', self.command_lastlog, usage='<keyword>',
+            help=('Search <keyword> in the buffer and returns results'
+                  'on the screen'),
+        )
+        self.api.add_tab_command(
+            PrivateTab, 'lastlog', self.command_lastlog, usage='<keyword>',
+            help=('Search <keyword> in the buffer and returns results'
+                  'on the screen'),
+        )
 
     def command_lastlog(self, input_):
         """Define lastlog command"""
 
         text_buffer = self.api.current_tab()._text_buffer
-        search_re = re.compile(input_, re.I)
+        search_re = re.compile(input_)
 
         res = []
-        add_line(text_buffer, "Lastlog:")
         for message in text_buffer.messages:
+            if message.nickname is not None:
+                self.core.information('Foo: %s> %s' % (message.nickname, message.txt), 'Info')
             if message.nickname is not None and \
                search_re.search(message.txt) is not None:
                 res.append(message)
-                add_line(text_buffer, "%s" % (message.txt))
-        add_line(text_buffer, "End of Lastlog")
-        self.api.current_tab().text_win.pos = 0
-        self.api.current_tab().core.refresh_window()
+
+        add_line(text_buffer, "Lastlog for '%s', %d match(es)" % (input_, len(res)))
+
+        for message in res:
+            message.nickname = None
+            add_message(text_buffer, message)
-- 
cgit v1.2.3