[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16415: 24.3.50; Handle contiguous links correctly in shr [PATCH]
From: |
Nathan Trapuzzano |
Subject: |
bug#16415: 24.3.50; Handle contiguous links correctly in shr [PATCH] |
Date: |
Sat, 11 Jan 2014 07:50:14 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
Nathan Trapuzzano <nbtrap@nbtrap.com> writes:
> `shr-next-link' and `shr-previous-link' currently skip over links that
> are contiguous with the current link. The attached patch addressed this
> problem.
>
> When I say "contiguous", I'm talking in terms of Emacs "positions"--not
> in terms of HTML.
Use this one instead. I clarified one of the comments and referenced a
bug number:
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: nbtrap@nbtrap.com-20140111124832-14454dcnawyzjkny
# target_branch: file:///home/nathan/opt/etc/bzr-repos/emacs/trunk/
# testament_sha1: 6cb8b589f64f1b09f140c539ef23d4305646a92e
# timestamp: 2014-01-11 07:48:46 -0500
# base_revision_id: rgm@gnu.org-20140110201931-3ybs57oe9egahtb4
#
# Begin patch
=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog 2014-01-10 20:19:31 +0000
+++ lisp/ChangeLog 2014-01-11 03:16:17 +0000
@@ -1,3 +1,8 @@
+2014-01-11 Nathan Trapuzzano <nbtrap@nbtrap.com>
+
+ * lisp/net/shr.el (shr-next-link, shr-previous-link): Don't skip
+ over contiguous links.
+
2014-01-10 Glenn Morris <rgm@gnu.org>
* emacs-lisp/authors.el (authors-fixed-entries):
=== modified file 'lisp/net/shr.el'
--- lisp/net/shr.el 2014-01-05 10:23:35 +0000
+++ lisp/net/shr.el 2014-01-11 12:48:32 +0000
@@ -242,8 +242,10 @@
(defun shr-next-link ()
"Skip to the next link."
(interactive)
- (let ((skip (text-property-any (point) (point-max) 'help-echo nil)))
- (if (not (setq skip (text-property-not-all skip (point-max)
+ (let ((skip (and (get-text-property (point) 'help-echo)
+ (or (next-single-property-change (point) 'help-echo)
+ (point-max)))))
+ (if (not (setq skip (text-property-not-all (or skip (point)) (point-max)
'help-echo nil)))
(message "No next link")
(goto-char skip)
@@ -254,11 +256,17 @@
(interactive)
(let ((start (point))
(found nil))
- ;; Skip past the current link.
- (while (and (not (bobp))
- (get-text-property (point) 'help-echo))
+ ;; Skip backwards past the current link. Be carefule when the
+ ;; current link extends past the end of the narrowed region and
+ ;; point is at (point-max). In such a case, we proceed as though
+ ;; point is _not_ looking at a link. Cf. Emacs bug#16413.
+ (when (and (get-text-property (point) 'help-echo)
+ (not (and (eobp) (buffer-narrowed-p))))
+ (goto-char (or (previous-single-property-change
+ (min (1+ (point)) (point-max)) 'help-echo)
+ (point-min))))
+ (unless (bobp)
(forward-char -1))
- ;; Find the previous link.
(while (and (not (bobp))
(not (setq found (get-text-property (point) 'help-echo))))
(forward-char -1))
@@ -267,10 +275,9 @@
(message "No previous link")
(goto-char start))
;; Put point at the start of the link.
- (while (and (not (bobp))
- (get-text-property (point) 'help-echo))
- (forward-char -1))
- (forward-char 1)
+ (goto-char (or (previous-single-property-change
+ (min (1+ (point)) (point-max)) 'help-echo)
+ (point-min)))
(message "%s" (get-text-property (point) 'help-echo)))))
(defun shr-show-alt-text ()
# Begin bundle
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
0G1CLtBfYFV0UdwMG8Vh6L/4u5IpwoSCe2CtGA==