Fix <li><p> indentation in shr

(shr-ensure-paragraph): Don't insert a new paragraph as the first
item in a <li>.
This commit is contained in:
Lars Magne Ingebrigtsen 2015-02-11 17:24:42 +11:00
parent 097e16e266
commit 6ebbeafc94
2 changed files with 29 additions and 17 deletions

View file

@ -3,6 +3,8 @@
* net/shr.el (shr-insert): Make sure the space inserted has the
right font (for width).
(shr-fill-line): Preserve background colours when indenting/folding.
(shr-ensure-paragraph): Don't insert a new paragraph as the first
item in a <li>.
2015-02-10 Lars Ingebrigtsen <larsi@gnus.org>

View file

@ -719,23 +719,32 @@ size, and full-buffer size."
(defun shr-ensure-paragraph ()
(unless (bobp)
(if (<= (current-column) shr-indentation)
(unless (save-excursion
(forward-line -1)
(looking-at " *$"))
(insert "\n"))
(if (save-excursion
(beginning-of-line)
;; If the current line is totally blank, and doesn't even
;; have any face properties set, then delete the blank
;; space.
(and (looking-at " *$")
(not (get-text-property (point) 'face))
(not (= (next-single-property-change (point) 'face nil
(line-end-position))
(line-end-position)))))
(delete-region (match-beginning 0) (match-end 0))
(insert "\n\n")))))
(let ((prefix (get-text-property (line-beginning-position)
'shr-prefix-length)))
(cond
((and (bolp)
(save-excursion
(forward-line -1)
(looking-at " *$")))
;; We're already at a new paragraph; do nothing.
)
((and prefix
(= prefix (- (point) (line-beginning-position))))
;; Do nothing; we're at the start of a <li>.
)
((save-excursion
(beginning-of-line)
;; If the current line is totally blank, and doesn't even
;; have any face properties set, then delete the blank
;; space.
(and (looking-at " *$")
(not (get-text-property (point) 'face))
(not (= (next-single-property-change (point) 'face nil
(line-end-position))
(line-end-position)))))
(delete-region (match-beginning 0) (match-end 0)))
(t
(insert "\n\n"))))))
(defun shr-indent ()
(when (> shr-indentation 0)
@ -1406,6 +1415,7 @@ The preference is a float determined from `shr-prefer-media-type'."
(shr-string-pixel-width bullet))))
(put-text-property start (1+ start)
'shr-continuation-indentation shr-indentation)
(put-text-property start (1+ start) 'shr-prefix-length (length bullet))
(shr-generic dom)))))
(defun shr-mark-fill (start)