1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-06 20:49:33 +00:00

Fix <p> and <div> newlines with or without <li> in shr

* lisp/net/shr.el (shr-ensure-newline): Respect that we're in
a <li>, if we are, and don't insert newlines there.
(shr-ensure-paragraph): When mixing newlines and paragraph
ensurements, don't insert too many blank lines.
(shr-tag-div): A <div> shouldn't introduce a paragraph, but a
new line.
(cherry picked from commit 292921facaff2f02ac4e8602c1f7ecbdcfe7ef45)

Backport:
This commit is contained in:
Lars Magne Ingebrigtsen 2016-03-20 13:43:42 +01:00
parent b8ea08b037
commit 52ba24bdd9

View File

@ -783,8 +783,13 @@ size, and full-buffer size."
(url-expand-file-name url (concat (car base) (cadr base))))))
(defun shr-ensure-newline ()
(unless (zerop (current-column))
(insert "\n")))
(unless (bobp)
(let ((prefix (get-text-property (line-beginning-position)
'shr-prefix-length)))
(unless (or (zerop (current-column))
(and prefix
(= prefix (- (point) (line-beginning-position)))))
(insert "\n")))))
(defun shr-ensure-paragraph ()
(unless (bobp)
@ -812,6 +817,10 @@ size, and full-buffer size."
(line-end-position))
(line-end-position)))))
(delete-region (match-beginning 0) (match-end 0)))
;; We have a single blank line.
((and (eolp) (bolp))
(insert "\n"))
;; Insert new paragraph.
(t
(insert "\n\n"))))))
@ -1206,7 +1215,7 @@ ones, in case fg and bg are nil."
(shr-ensure-paragraph))
(defun shr-tag-div (dom)
(shr-ensure-paragraph)
(shr-ensure-newline)
(shr-generic dom)
(shr-ensure-newline))