-;;; riece-mini.el --- "riece on minibuffer" add-on
+;;; riece-mini.el --- use Riece only on the minibuffer
;; Copyright (C) 2003 OHASHI Akira
;; Author: OHASHI Akira <bg66@koka-in.org>
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
+;; NOTE: This is an add-on module for Riece.
+
;; This add-on shows arrival messages to minibuffer. And you can send
;; message using minibuffer.
;;
;;; Code:
(require 'riece-message)
+(require 'riece-biff)
(defgroup riece-mini nil
- "riece on minibuffer"
+ "Use Riece only on the 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)
(defvar riece-mini-backlog-history nil)
(defvar riece-mini-backlog-shown nil)
-(defvar riece-mini-enabled nil)
-
(defconst riece-mini-description
- "Send arrival messages to minibuffer")
+ "Use Riece only on the minibuffer.")
-(defmacro riece-mini-message-no-log (string &rest args)
+(defun riece-mini-message-no-log (string &rest args)
"Like `message', except that message logging is disabled."
(if (featurep 'xemacs)
(if args
- `(display-message 'no-log (format ,string ,@args))
- `(display-message 'no-log ,string))
- `(let (message-log-max)
- (message ,string ,@args))))
+ (display-message 'no-log (apply #'format string args))
+ (display-message 'no-log string))
+ (let (message-log-max)
+ (apply #'message string args))))
(defun riece-mini-display-message-function (message)
"Show arrival messages to minibuffer."
- (when (and riece-mini-enabled
- (not (or (eq (window-buffer (selected-window))
- (get-buffer riece-command-buffer))
- (riece-message-own-p message)
- (active-minibuffer-window))))
- (unless (riece-message-type message)
- (setq riece-mini-last-channel (riece-message-target message)))
- (let ((string (concat (format-time-string "%H:%M") " "
- (riece-format-message message t))))
- (riece-mini-message-no-log "%s" string)
- (when (>= (length riece-mini-backlog-history)
- riece-mini-backlog-size)
- (pop riece-mini-backlog-history))
- (push string riece-mini-backlog-history))))
+ (let ((string (concat (format-time-string "%H:%M") " "
+ (riece-format-message message t))))
+ (when (string-match "\\(.*\\)$" string)
+ (setq string (riece-match-string-no-properties 1 string)))
+ (while (>= (length riece-mini-backlog-history)
+ riece-mini-backlog-size)
+ (setq riece-mini-backlog-history
+ (cdr riece-mini-backlog-history)))
+ (setq riece-mini-backlog-history
+ (reverse (cons string (reverse riece-mini-backlog-history))))
+ (when (and (get 'riece-mini 'riece-addon-enabled)
+ (not (or (eq (window-buffer (selected-window))
+ (get-buffer riece-command-buffer))
+ (riece-message-own-p message)
+ (active-minibuffer-window))))
+ (unless (riece-message-type message)
+ (setq riece-mini-last-channel (riece-message-target message)))
+ (riece-mini-message-no-log "%s" string))))
(defun riece-mini-send-message (arg)
"Send message using minibuffer.
(defun riece-mini-show-backlog ()
"Send back logs to minibuffer."
(interactive)
- (let ((max-mini-window-height 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 (reverse riece-mini-backlog-history) "")))))
+ (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)
+ (get 'riece-biff 'riece-addon-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
(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)
(add-hook 'pre-command-hook 'riece-mini-pre-command))
-(defun riece-mini-enable ()
- (setq riece-mini-enabled t))
-
-(defun riece-mini-disable ()
- (setq riece-mini-enabled nil))
+(defun riece-mini-uninstall ()
+ (remove-hook 'riece-after-display-message-functions
+ 'riece-mini-display-message-function)
+ (remove-hook 'pre-command-hook 'riece-mini-pre-command))
(provide 'riece-mini)