GNU bug report logs -
#14670
Highlight visited links
Previous Next
Reported by: Juri Linkov <juri <at> jurta.org>
Date: Wed, 19 Jun 2013 22:38:02 UTC
Severity: wishlist
Tags: patch
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
This patch adds the support for links in virtual Info nodes
rendered by shr.el. A virtual Info node function can just
call `shr-insert-document' and this patch supports the
fontification and navigation for links added by the renderer.
=== modified file 'lisp/info.el'
--- lisp/info.el 2013-05-27 22:42:11 +0000
+++ lisp/info.el 2013-06-24 22:30:15 +0000
@@ -3114,10 +3145,10 @@ (defun Info-next-reference (&optional re
(old-pt (point))
(case-fold-search t))
(or (eobp) (forward-char 1))
- (or (Info-next-reference-or-link pat 'link)
+ (or (Info-next-reference-or-link pat 'shr-url)
(progn
(goto-char (point-min))
- (or (Info-next-reference-or-link pat 'link)
+ (or (Info-next-reference-or-link pat 'shr-url)
(progn
(goto-char old-pt)
(user-error "No cross references in this node")))))
@@ -3141,10 +3172,10 @@ (defun Info-prev-reference (&optional re
(let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://")
(old-pt (point))
(case-fold-search t))
- (or (Info-prev-reference-or-link pat 'link)
+ (or (Info-prev-reference-or-link pat 'shr-url)
(progn
(goto-char (point-max))
- (or (Info-prev-reference-or-link pat 'link)
+ (or (Info-prev-reference-or-link pat 'shr-url)
(progn
(goto-char old-pt)
(user-error "No cross references in this node")))))
@@ -3863,6 +3919,8 @@ (defun Info-try-follow-nearest-node (&op
If FORK is non-nil, it is passed to `Info-goto-node'."
(let (node)
(cond
+ ((and (setq node (get-text-property (point) 'shr-url))
+ (not (eq node t)))
+ (Info-goto-node node fork))
((setq node (Info-get-token (point) "[hf]t?tps?://"
"\\([hf]t?tps?://[^ \t\n\"`({<>})']+\\)"))
(browse-url node)
@@ -4701,6 +4764,18 @@ (defun Info-fontify-node ()
(add-text-properties (1- (match-beginning 2)) (match-end 2)
'(invisible t front-sticky nil rear-nonsticky t)))))
+ ;; Fontify links
+ (goto-char (point-min))
+ (when (or not-fontified-p fontify-visited-p)
+ (let ((beg (next-single-property-change (point-min) 'shr-url))
+ (end nil))
+ (while (and beg (setq end (next-single-property-change beg 'shr-url)))
+ (add-text-properties beg end
+ `(font-lock-face info-xref
+ mouse-face highlight
+ help-echo "mouse-2: go to this node"))
+ (setq beg (next-single-property-change end 'shr-url)))))
+
;; Fontify cross references
(goto-char (point-min))
(when (or not-fontified-p fontify-visited-p)
@@ -4969,7 +5053,7 @@ (defun Info-fontify-node ()
(while (re-search-forward "\\(([0-9]+)\\)" nil t)
(add-text-properties (match-beginning 0) (match-end 0)
`(font-lock-face info-xref
- link t
+ shr-url t
mouse-face highlight
help-echo
,(if (< (point) limit)
This bug report was last modified 5 years and 332 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.