(shr-insert): Pass upwards the text start point.
(shr-img): Be silent.
(shr-insert): Add a newline after every picture before text.
(shr-add-font): Use overlays for combining faces.
(shr-img): Be silent.
(shr-insert): Add a newline after every picture before text.
(shr-add-font): Use overlays for combining faces.
+ (shr-insert): Pass upwards the text start point.
* mm-decode.el (mm-text-html-renderer): Default to shr.el rendering, if
possible.
* mm-decode.el (mm-text-html-renderer): Default to shr.el rendering, if
possible.
(defvar shr-folding-mode nil)
(defvar shr-state nil)
(defvar shr-folding-mode nil)
(defvar shr-state nil)
;;;###autoload
(defun shr-insert-document (dom)
;;;###autoload
(defun shr-insert-document (dom)
+ (let ((shr-state nil)
+ (shr-start nil))
(shr-descend (shr-transform-dom dom))))
(defun shr-descend (dom)
(shr-descend (shr-transform-dom dom))))
(defun shr-descend (dom)
(shr-fontize-cont cont 'strikethru))
(defun shr-fontize-cont (cont type)
(shr-fontize-cont cont 'strikethru))
(defun shr-fontize-cont (cont type)
- (shr-add-font start (point) type)))
+ (shr-add-font shr-start (point) type)))
(defun shr-add-font (start end type)
(let ((overlay (make-overlay start end)))
(overlay-put overlay 'face type)))
(defun shr-a (cont)
(defun shr-add-font (start end type)
(let ((overlay (make-overlay start end)))
(overlay-put overlay 'face type)))
(defun shr-a (cont)
- (let ((start (point))
- (url (cdr (assq :href cont))))
+ (let ((url (cdr (assq :href cont)))
+ shr-start)
(shr-generic cont)
(widget-convert-button
(shr-generic cont)
(widget-convert-button
+ 'link shr-start (point)
:action 'shr-browse-url
:url url
:keymap widget-keymap
:action 'shr-browse-url
:url url
:keymap widget-keymap
(let (column)
(dolist (elem (split-string text))
(setq column (current-column))
(let (column)
(dolist (elem (split-string text))
(setq column (current-column))
- (if (zerop column)
- (insert elem)
(if (> (+ column (length elem) 1) shr-width)
(if (> (+ column (length elem) 1) shr-width)
- (insert "\n" elem)
- (insert " " elem))))))))
+ (insert "\n")
+ (insert " ")))
+ ;; The shr-start is a special variable that is used to pass
+ ;; upwards the first point in the buffer where the text really
+ ;; starts.
+ (unless shr-start
+ (setq shr-start (point)))
+ (insert elem))))))
(defun shr-get-image-data (url)
"Get image data for URL.
(defun shr-get-image-data (url)
"Get image data for URL.