(if (not url)
(message "No image under point")
;; Delete the old picture.
- (beginning-of-line)
- (while (get-text-property (point) 'display)
- (forward-line -1))
- (forward-line 1)
+ (while (get-text-property (point) 'image-url)
+ (forward-char -1))
+ (forward-char 1)
(let ((start (point)))
- (while (get-text-property (point) 'display)
- (forward-line 1))
- (forward-line -1)
- (delete-region start (point))
- (forward-char 1)
- (put-text-property start (point) 'display nil))
+ (while (get-text-property (point) 'image-url)
+ (forward-char 1))
+ (forward-char -1)
+ (put-text-property start (point) 'display nil)
+ (when (> (- (point) start) 2)
+ (delete-region start (1- (point)))))
(message "Inserting %s..." url)
(url-retrieve url 'shr-image-fetched
(list (current-buffer) (1- (point)) (point-marker)
(with-current-buffer buffer
(save-excursion
(let ((alt (buffer-substring start end))
+ (properties (text-properties-at start))
(inhibit-read-only t))
(delete-region start end)
(goto-char start)
- (funcall shr-put-image-function data alt flags)))))))
+ (funcall shr-put-image-function data alt flags)
+ (while properties
+ (let ((type (pop properties))
+ (value (pop properties)))
+ (unless (memq type '(display image-size))
+ (put-text-property start (point) type value))))))))))
(kill-buffer (current-buffer)))
(defun shr-put-image (data alt &optional flags)
(> (car (image-size image t)) 400))
(insert "\n"))
(if (eq size 'original)
- (insert-sliced-image image (or alt "*") nil 20 1)
+ (let ((overlays (overlays-at (point))))
+ (insert-sliced-image image (or alt "*") nil 20 1)
+ (dolist (overlay overlays)
+ (overlay-put overlay 'face 'default)))
(insert-image image (or alt "*")))
(put-text-property start (point) 'image-size size)
(when (image-animated-p image)