bug-gnu-emacs
[Top][All Lists]
Advanced

[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==

reply via email to

[Prev in Thread] Current Thread [Next in Thread]