;; 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.
;;; Code:
(require 'riece-misc)
(defgroup riece-message nil
- "Messages"
+ "Display messages."
:tag "Message"
:prefix "riece-"
:group 'riece)
:type 'function
:group 'riece-message)
+(defcustom riece-message-format-function-alist nil
+ "Alist mapping message types to format functions."
+ :type 'list
+ :group 'riece-message)
+
(defun riece-message-make-open-bracket (message)
"Make `open-bracket' string for MESSAGE."
(if (eq (riece-message-type message) 'notice)
(list riece-dialogue-buffer riece-others-buffer)
riece-dialogue-buffer)))
-(defun riece-format-message (message &optional global)
+(defun riece-format-message-1 (message &optional global)
(let ((open-bracket
(funcall riece-message-make-open-bracket-function message))
(close-bracket
" " (riece-message-text message)))
"\n"))))
+(defun riece-format-message (message &optional global)
+ (funcall (or (cdr (assq (riece-message-type message)
+ riece-message-format-function-alist))
+ #'riece-format-message-1)
+ message global))
+
(defun riece-display-message-1 (message)
(let ((buffer (riece-message-buffer message))
parent-buffers)
Arguments are appropriate to the sender, the receiver, and text
content, respectively.
Optional 4th argument TYPE specifies the type of the message.
-Currently possible values are `action' and `notice'.
+Currently possible values are `nil' or `notice'.
Optional 5th argument is the flag to indicate that this message is not
from the network."
(vector speaker target text type own-p))