Introduce windmove.el.
[riece] / lisp / riece-mini.el
index a66851a..2c88006 100644 (file)
 ;;; Code:
 
 (require 'riece-message)
+(require 'riece-biff)
 
 (defgroup riece-mini nil
   "riece on minibuffer"
   :group 'riece)
 
-(defcustom riece-mini-backlog-size 10
+(defcustom riece-mini-backlog-size 5
   "*Line numbers for logging back log."
   :type 'integer
   :group 'riece-mini)
@@ -117,12 +118,20 @@ If twice (C-u C-u), then ask the channel."
 (defun riece-mini-show-backlog ()
   "Send back logs to minibuffer."
   (interactive)
-  (let ((max-mini-window-height (1+ riece-mini-backlog-size))
-       (resize-mini-windows t))
-    (when riece-mini-backlog-history
-      (setq riece-mini-backlog-shown t)
-      (riece-mini-message-no-log
-       (mapconcat 'identity riece-mini-backlog-history "\n")))))
+  (when riece-mini-backlog-history
+    (let ((height (1+ riece-mini-backlog-size)))
+      (mapc #'(lambda (string)
+               (setq height (+ height
+                               (/ (length string) (window-width)))))
+           riece-mini-backlog-history)
+      (let ((max-mini-window-height height)
+           (resize-mini-windows t))
+       (setq riece-mini-backlog-shown t)
+       (when (and (memq 'riece-biff riece-addons)
+                  riece-biff-enabled)
+         (riece-biff-clear))
+       (riece-mini-message-no-log
+        "%s" (mapconcat #'identity riece-mini-backlog-history "\n"))))))
 
 (defun riece-mini-pre-command ()
   (when riece-mini-backlog-shown
@@ -130,6 +139,10 @@ If twice (C-u C-u), then ask the channel."
       (setq riece-mini-backlog-shown nil)
       (riece-mini-message-no-log ""))))
 
+(defun riece-mini-requires ()
+  (if (memq 'riece-biff riece-addons)
+ '(riece-biff)))
+
 (defun riece-mini-insinuate ()
   (add-hook 'riece-after-display-message-functions
            'riece-mini-display-message-function)