]> code.delx.au - gnu-emacs/blobdiff - lisp/gnus/smiley-ems.el
*** empty log message ***
[gnu-emacs] / lisp / gnus / smiley-ems.el
index 378345d8168c6879f5f81eaa415533f629ee3a27..7fce284e500ee8b7ae70c32122da29fd30326100 100644 (file)
@@ -1,4 +1,5 @@
 ;;; smiley-ems.el --- displaying smiley faces
+
 ;; Copyright (C) 2000 Free Software Foundation, Inc.
 
 ;; Author: Dave Love <fx@gnu.org>
@@ -26,9 +27,9 @@
 ;; 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")))
@@ -70,7 +73,7 @@ rgexp to replace with IMAGE.  IMAGE is the name of an XBM file in
 (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
@@ -90,7 +93,10 @@ rgexp to replace with IMAGE.  IMAGE is the name of an XBM file in
 
 ;;;###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))
@@ -102,6 +108,7 @@ rgexp to replace with IMAGE.  IMAGE is the name of an XBM file in
       (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)
@@ -117,7 +124,8 @@ rgexp to replace with IMAGE.  IMAGE is the name of an XBM file in
              (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)
@@ -140,7 +148,7 @@ With arg, turn displaying on if and only if arg is positive."
 (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
@@ -154,4 +162,5 @@ With arg, turn displaying on if and only if arg is positive."
 
 (provide 'smiley)
 
+;;; arch-tag: e726728a-14fb-4e6a-9aef-889941bdf7ad
 ;;; smiley-ems.el ends here