2001-12-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * smiley-ems.el (smiley-region): Return images.
+ (gnus-smiley-display): Allow toggling.
+ (smiley-region): Use text properties, not overlays.
+
+ * gnus-xmas.el (gnus-xmas-remove-image): New function, not
+ implemented yet.
+
* smiley-ems.el (smiley-update-cache): Check for valid types.
* gnus-art.el (gnus-with-article-buffer): New macro.
(defalias 'gnus-image-type-available-p 'gnus-xmas-image-type-available-p)
(defalias 'gnus-put-image 'gnus-xmas-put-image)
(defalias 'gnus-create-image 'gnus-xmas-create-image)
+ (defalias 'gnus-remove-image 'gnus-xmas-remove-image)
;; These ones are not defcutom'ed, sometimes not even defvar'ed. They
;; probably should. If that is done, the code below should then be moved
(set-extent-property annot 'mm t)
(set-extent-property annot 'duplicable t)))
+(defun gnus-xmas-remove-image (image)
+ )
+
(provide 'gnus-xmas)
;;; gnus-xmas.el ends here
;;;###autoload
(defun smiley-region (start end)
- "Replace in the region `smiley-regexp-alist' matches with corresponding images."
+ "Replace in the region `smiley-regexp-alist' matches with corresponding images.
+A list of images is returned."
(interactive "r")
(when (and (fboundp 'display-graphic-p)
(display-graphic-p))
(overlays-in start end))
(unless smiley-cached-regexp-alist
(smiley-update-cache))
+ (setq smiley-active t)
(save-excursion
(let ((beg (or start (point-min)))
- group overlay image)
+ group overlay image images)
(dolist (entry smiley-cached-regexp-alist)
(setq group (nth 1 entry)
image (nth 2 entry))
(goto-char beg)
(while (re-search-forward (car entry) end t)
(when image
- (setq overlay (make-overlay (match-beginning group)
- (match-end group)))
- (overlay-put overlay
- 'display `(when smiley-active ,@image))
- (overlay-put overlay 'mouse-face 'highlight)
- (overlay-put overlay 'smiley t)
- (overlay-put overlay
- 'help-echo "mouse-2: toggle smilies in buffer")
- (overlay-put overlay 'keymap smiley-mouse-map))))))
- (setq smiley-active t)))
+ (push image images)
+ (add-text-properties
+ (match-beginning group) (match-end group)
+ `(display ,image
+ mouse-face highlight
+ smiley t
+ help-echo "mouse-2: toggle smilies in buffer"
+ keymap smiley-mouse-map)))))
+ images))))
(defun smiley-toggle-buffer (&optional arg)
"Toggle displaying smiley faces.
"Display textual emoticaons (\"smilies\") as small graphical icons.
With arg, turn displaying on if and only if arg is positive."
(interactive "P")
- (save-excursion
- (article-goto-body)
- (smiley-region (point) (point-max))
- (if (and (numberp arg) (<= arg 0))
- (smiley-toggle-buffer arg))))
+ (gnus-with-article-buffer
+ (if (memq 'smiley gnus-article-wash-types)
+ (gnus-delete-images 'smiley)
+ (article-goto-body)
+ (let ((images (smiley-region (point) (point-max))))
+ (when images
+ (gnus-add-wash-type 'smiley)
+ (dolist (image images)
+ (gnus-add-image 'smiley image))))
+ (when (and (numberp arg)
+ (<= arg 0))
+ (smiley-toggle-buffer arg)))))
(provide 'smiley)