;;; smiley-ems.el --- displaying smiley faces
+
;; Copyright (C) 2000 Free Software Foundation, Inc.
;; Author: Dave Love <fx@gnu.org>
;; A re-written, simplified version of Wes Hardaker's XEmacs smiley.el
;; which might be merged back to smiley.el if we get an assignment for
;; that. We don't have assignments for the images smiley.el uses, but
-;; I'm not sure we need that degree of rococoness and they shouldn't
-;; have a yellow background by default. Also, using XBM means we can
-;; display the images more generally. -- fx
+;; I'm not sure we need that degree of rococoness and defaults like a
+;; yellow background. Also, using PBM means we can display the images
+;; more generally. -- fx
;;; Test smileys: :-) :-\ :-( :-/
;; Maybe this should go.
(defcustom smiley-data-directory (nnheader-find-etc-directory "smilies")
- "*Location of the smiley faces files."
- :type 'directory
+ "*If non-nil, a directory to search for the smiley image files.
+This is in addition to the normal image search path."
+ :type '(choice directory
+ (const nil))
:group 'smiley)
;; The XEmacs version has a baroque, if not rococo, set of these.
(defcustom smiley-regexp-alist
;; Perhaps :-) should be distinct -- it does appear in the Jargon File.
- '(("\\([:;]-?)\\)\\W" 1 "smile.xbm")
- ("\\(:-[/\\]\\)\\W" 1 "wry.xbm")
- ("\\(:-[({]\\)\\W" 1 "frown.xbm"))
+ '(("\\([:;]-?)\\)\\(\\W\\|\\'\\)" 1 "smile.pbm")
+ ("\\(:-[/\\]\\)\\(\\W\\|\\'\\)" 1 "wry.pbm")
+ ("\\(:-[({]\\)\\(\\W\\|\\'\\)" 1 "frown.pbm"))
"*A list of regexps to map smilies to images.
The elements are (REGEXP MATCH FILE), where MATCH is the submatch in
-rgexp to replace with IMAGE. IMAGE is the name of an XBM file in
-`smiley-data-directory'."
+rgexp to replace with IMAGE. IMAGE is the name of a PBM file in
+`smiley-data-directory' or the normal image search path."
:type '(repeat (list regexp
(integer :tag "Regexp match number")
(string :tag "Image name")))
(defun smiley-update-cache ()
(dolist (elt smiley-regexp-alist)
(let* ((data-directory smiley-data-directory)
- (image (find-image (list (list :type 'xbm
+ (image (find-image (list (list :type 'pbm
:file (nth 2 elt)
:ascent 'center)))))
(if image
;;;###autoload
(defun smiley-region (start end)
- "Replace in the region `smiley-regexp-alist' matches with corresponding images."
+ "Display textual smileys as images.
+START and END specify the region; interactively, use the values
+of point and mark. The value of `smiley-regexp-alist' determines
+which smileys to operate on and which images to use for them."
(interactive "r")
(when (and (fboundp 'display-graphic-p)
(display-graphic-p))
(smiley-update-cache))
(save-excursion
(let ((beg (or start (point-min)))
+ (inhibit-point-motion-hooks t)
group overlay image)
(dolist (entry smiley-cached-regexp-alist)
(setq group (nth 1 entry)
(overlay-put overlay 'smiley t)
(overlay-put overlay
'help-echo "mouse-2: toggle smilies in buffer")
- (overlay-put overlay 'keymap smiley-mouse-map))))))
+ (overlay-put overlay 'keymap smiley-mouse-map)
+ (goto-char (match-end group)))))))
(setq smiley-active t)))
(defun smiley-toggle-buffer (&optional arg)
(eval-when-compile (defvar gnus-article-buffer))
(defun gnus-smiley-display (&optional arg)
- "Display textual emoticaons (\"smilies\") as small graphical icons.
+ "Display textual emoticons (\"smilies\") as small graphical icons.
With arg, turn displaying on if and only if arg is positive."
(interactive "P")
(save-excursion
(provide 'smiley)
+;;; arch-tag: e726728a-14fb-4e6a-9aef-889941bdf7ad
;;; smiley-ems.el ends here