X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus-ems.el;h=bca77f792c0f3e382c8408ad7914d22416dbecc2;hb=9f3162c81831404d152fe79960e70711bdcc1948;hp=5ea1f4f44d25dc08d0805c09a663d8c77a82d005;hpb=78cf42ed94cd262f7b1a21564ea422073a397b40;p=elisp%2Fgnus.git- diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 5ea1f4f..bca77f7 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -49,8 +49,6 @@ (autoload 'nnheader-find-etc-directory "nnheader")) (autoload 'smiley-region "smiley") -;; Fixme: shouldn't require message -(autoload 'message-text-with-property "message") (defun gnus-kill-all-overlays () "Delete all overlays in the current buffer." @@ -230,18 +228,24 @@ glyph)) (defun gnus-remove-image (image &optional category) - (let ((regions (message-text-with-property 'display)) - start end) - (while regions - (setq start (caar regions) - end (cdar regions) - regions (cdr regions)) - (when (and (equal (get-text-property start 'display) image) - (equal (get-text-property start 'gnus-image-category) - category)) - (put-text-property start end 'display nil) - (when (get-text-property start 'gnus-image-text-deletable) - (delete-region start end)))))) + "Remove the image matching IMAGE and CATEGORY found first." + (let ((start (point-min)) + val end) + (while (and (not end) + (or (setq val (get-text-property start 'display)) + (and (setq start + (next-single-property-change start 'display)) + (setq val (get-text-property start 'display))))) + (setq end (next-single-property-change start 'display)) + (if (and (equal val image) + (equal (get-text-property start 'gnus-image-category) + category)) + (progn + (put-text-property start end 'display nil) + (when (get-text-property start 'gnus-image-text-deletable) + (delete-region start end))) + (setq start end + end nil))))) (defun-maybe assoc-ignore-case (key alist) "Like `assoc', but assumes KEY is a string and ignores case when comparing."