]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problem with spurious extra paragraphs in shr
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 19 Sep 2020 17:11:09 +0000 (19:11 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 19 Sep 2020 17:11:09 +0000 (19:11 +0200)
* lisp/net/shr.el (shr-ensure-paragraph): Don't regard <div
id=foo></div> (empty placeholders) as occupying any space (bug#43510).

lisp/net/shr.el

index 6517596130c8d3f808eda3f1693a6788a8e8773e..1f53bc4016dca1206ba509a3a7b54c98d47253c6 100644 (file)
@@ -555,7 +555,7 @@ size, and full-buffer size."
          ;; If the element was empty, we don't have anything to put the
          ;; anchor on.  So just insert a dummy character.
          (when (= start (point))
-            (insert ?*)
+            (insert ? )
             (put-text-property (1- (point)) (point) 'display ""))
           (put-text-property start (1+ start) 'shr-target-id id))
        ;; If style is set, then this node has set the color.
@@ -932,6 +932,22 @@ size, and full-buffer size."
               (looking-at " *$")))
        ;; We're already at a new paragraph; do nothing.
        )
+       ((and (not (bolp))
+             (save-excursion
+               (beginning-of-line)
+               (looking-at " *$"))
+            (save-excursion
+              (forward-line -1)
+              (looking-at " *$"))
+             ;; Check all chars on the current line and see whether
+             ;; they're all placeholders.
+             (cl-loop for pos from (line-beginning-position) upto (1- (point))
+                      unless (get-text-property pos 'shr-target-id)
+                      return nil
+                      finally return t))
+       ;; We have some invisible markers from <div id="foo"></div>;
+       ;; do nothing.
+       )
        ((and prefix
             (= prefix (- (point) (line-beginning-position))))
        ;; Do nothing; we're at the start of a <li>.