summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog2
-rw-r--r--lisp/net/eww.el6
-rw-r--r--lisp/net/shr.el8
3 files changed, 13 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8c196343e7e..d267715bee3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,7 @@
2013-12-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * net/shr.el (shr-tag-a): Support zero-length <a name="foo"> elements.
+
* net/eww.el (eww-display-html): If we can't find the anchor we're
looking for, then go to point-min.
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index afcd2ecb391..a4cec26dbf9 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -269,11 +269,11 @@ word(s) will be searched for via `eww-search-prefix'."
(point
(goto-char point))
(shr-target-id
+ (goto-char (point-min))
(let ((point (next-single-property-change
(point-min) 'shr-target-id)))
- (goto-char (if point
- (1+ point)
- (point-min)))))
+ (when point
+ (goto-char point))))
(t
(goto-char (point-min)))))
(setq eww-current-url url
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index 4c256f8d716..34672b28191 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -1078,6 +1078,14 @@ ones, in case fg and bg are nil."
(start (point))
shr-start)
(shr-generic cont)
+ (when (and shr-target-id
+ (equal (cdr (assq :name (cdr dom))) shr-target-id))
+ ;; We have a zero-length <a name="foo"> element, so just
+ ;; insert... something.
+ (when (= start (point))
+ (shr-ensure-newline)
+ (insert " "))
+ (put-text-property start (1+ start) 'shr-target-id shr-target-id))
(when (and url
(not shr-inhibit-decoration))
(shr-urlify (or shr-start start) (shr-expand-url url) title))))