;;; smiley.el --- displaying smiley faces
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
;; Author: Wes Hardaker <hardaker@ece.ucdavis.edu>
;; Keywords: fun
;; To use:
;; (require 'smiley)
-;; (add-hook 'gnus-article-display-hook 'gnus-smiley-display t)
+;; (setq gnus-treat-display-smileys t)
;; The smilies were drawn by Joe Reiss <jreiss@vt.edu>.
("\\(\\^_?\\^\\)\\W" 1 "WideFaceSmile.xbm")
("\\(;_;\\)\\W" 1 "WideFaceWeep.xbm")
("\\(T_T\\)\\W" 1 "WideFaceWeep.xbm")
- ("\\(:-*[<«]+\\)\\W" 1 "FaceAngry.xpm")
+ ("\\(:-*[<\e(I+\e(B]+\\)\\W" 1 "FaceAngry.xpm")
("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm")
("\\(:-*D\\)\\W" 1 "FaceGrinning.xpm")
- ("\\(:-*[)>}»]+\\)\\W" 1 "FaceHappy.xpm")
- ("\\(=[)>»]+\\)\\W" 1 "FaceHappy.xpm")
+ ("\\(:-*[)>}\e(I;\e(B]+\\)\\W" 1 "FaceHappy.xpm")
+ ("\\(=[)>\e(I;\e(B]+\\)\\W" 1 "FaceHappy.xpm")
("\\(:-*[/\\\"]\\)[^/]\\W" 1 "FaceIronic.xpm")
("\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
("\\([:|]-*#+\\)\\W" 1 "FaceNyah.xpm")
("\\(:-*|\\)\\W" 1 "FaceStraight.xpm")
("\\(:-*p\\)\\W" 1 "FaceTalking.xpm")
("\\(:-*d\\)\\W" 1 "FaceTasty.xpm")
- ("\\(;-*[>)}»]+\\)\\W" 1 "FaceWinking.xpm")
- ("\\(:-*[Vvµ]\\)\\W" 1 "FaceWry.xpm")
+ ("\\(;-*[>)}\e(I;\e(B]+\\)\\W" 1 "FaceWinking.xpm")
+ ("\\(:-*[Vv\e(I5\e(B]\\)\\W" 1 "FaceWry.xpm")
("\\([:|]-*P\\)\\W" 1 "FaceYukky.xpm"))
"*Normal and deformed faces for smilies."
:type '(repeat (list regexp
:group 'smiley)
(defcustom smiley-nosey-regexp-alist
- '(("\\(:-+[<«]+\\)\\W" 1 "FaceAngry.xpm")
+ '(("\\(:-+[<\e(I+\e(B]+\\)\\W" 1 "FaceAngry.xpm")
("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm")
("\\(:-+D\\)\\W" 1 "FaceGrinning.xpm")
- ("\\(:-+[}»]+\\)\\W" 1 "FaceHappy.xpm")
+ ("\\(:-+[}\e(I;\e(B]+\\)\\W" 1 "FaceHappy.xpm")
("\\(:-*)+\\)\\W" 1 "FaceHappy.xpm")
- ("\\(=[)>]+\\)\\W" 1 "FaceHappy.xpm")
+ ("\\(=[)]+\\)\\W" 1 "FaceHappy.xpm")
("\\(:-+[/\\\"]+\\)\\W" 1 "FaceIronic.xpm")
("\\([8|]-+[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
("\\([:|]-+#+\\)\\W" 1 "FaceNyah.xpm")
("\\(:-+|\\)\\W" 1 "FaceStraight.xpm")
("\\(:-+p\\)\\W" 1 "FaceTalking.xpm")
("\\(:-+d\\)\\W" 1 "FaceTasty.xpm")
- ("\\(;-+[>)}»]+\\)\\W" 1 "FaceWinking.xpm")
- ("\\(:-+[Vvµ]\\)\\W" 1 "FaceWry.xpm")
+ ("\\(;-+[>)}\e(I;\e(B]+\\)\\W" 1 "FaceWinking.xpm")
+ ("\\(:-+[Vv\e(I5\e(B]\\)\\W" 1 "FaceWry.xpm")
("\\(][:8B]-[)>]\\)\\W" 1 "FaceDevilish.xpm")
("\\([:|]-+P\\)\\W" 1 "FaceYukky.xpm"))
"*Smileys with noses. These get less false matches."
(defun smiley-popup-menu (e)
(interactive "e")
(popup-menu
- `("Smilies"
+ `("Smilies"
["Toggle This Smiley" (smiley-toggle-extent ,e) t]
["Toggle All Smilies" (smiley-toggle-extents ,e) t])))
(smiley-buffer (current-buffer) beg end))
(defun smiley-toggle-extent (event)
- "Toggle smiley at given point"
+ "Toggle smiley at given point."
(interactive "e")
(let* ((ant (event-glyph-extent event))
(pt (event-closest-point event))
(while (re-search-forward regexp nd t)
(let* ((start (match-beginning group))
(end (match-end group))
- (glyph (smiley-create-glyph (buffer-substring start end)
- file)))
+ (glyph
+ (and (or (eq start 1)
+ (not (string-match "\\(\\^\\|;\\|_\\);)"
+ (buffer-substring
+ (1- start) (+ start 2)))))
+ (smiley-create-glyph (buffer-substring start end)
+ file))))
(when glyph
(mapcar 'delete-annotation (annotations-at end))
(let ((ext (make-extent start end))
(set-extent-property ant 'smiley-extent ext)
(set-extent-property ext 'smiley-annotation ant)
;; Help
- (set-extent-property ext 'help-echo
- "button2 toggles smiley, button3 pops up menu")
- (set-extent-property ant 'help-echo
- "button2 toggles smiley, button3 pops up menu")
+ (set-extent-property
+ ext 'help-echo
+ "button2 toggles smiley, button3 pops up menu")
+ (set-extent-property
+ ant 'help-echo
+ "button2 toggles smiley, button3 pops up menu")
(set-extent-property ext 'balloon-help
"Mouse button2 - toggle smiley
Mouse button3 - menu")
(save-excursion
(goto-char start)
(when (and (re-search-backward "[()]" nil t)
- (= (following-char) ?\()
+ (eq (char-after) ?\()
(goto-char end)
(or (not (re-search-forward "[()]" nil t))
- (= (char-after (1- (point))) ?\()))
+ (eq (char-after (1- (point))) ?\()))
t)))
(defvar gnus-article-buffer)
;;;###autoload
(defun gnus-smiley-display ()
- "Display \"smileys\" as small graphical icons."
+ "Display \"smileys\" as small graphical icons."
(interactive)
(save-excursion
(set-buffer gnus-article-buffer)