--- Begin Message ---
Subject: |
24.3.50; Info-try-follow-nearest-node misses some footnotes |
Date: |
Tue, 25 Jun 2013 20:34:53 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
0. emacs -Q
1. Type `C-h i m Elisp RET m Using Interactive RET TAB TAB TAB' to put
point on the left parent of the reference mark for footnote (1) in
this node.
2. Type RET, expecting to jump to the footnote, but instead:
=> user-error: No such node or anchor: It may be a string; its contents
are a sequence of elements
The reason is that in Info-try-follow-nearest-node the search for a node
name succeeds, so it never gets to the footnote search, but the matching
string is not a node name, so user-error is signalled. The following
patch makes the footnote search and hence jumping to the footnote in
that node succeed, but I'll defer to the judgment of the Info or regexp
gurus as to whether it's the best fix.
=== modified file 'lisp/info.el'
*** lisp/info.el 2013-05-27 22:42:11 +0000
--- lisp/info.el 2013-06-25 18:24:56 +0000
***************
*** 3870,3892 ****
((setq node (Info-get-token (point) "\\*note[ \n\t]+"
"\\*note[ \n\t]+\\([^:]*\\):\\(:\\|[
\n\t]*(\\)?"))
(Info-follow-reference node fork))
- ;; menu item: node name
- ((setq node (Info-get-token (point) "\\* +" "\\* +\\([^:]*\\)::"))
- (Info-goto-node node fork))
- ;; menu item: node name or index entry
- ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ")
- (beginning-of-line)
- (forward-char 2)
- (setq node (Info-extract-menu-node-name nil (Info-index-node)))
- (Info-goto-node node fork))
- ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)"))
- (Info-goto-node node fork))
- ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)"))
- (Info-goto-node node fork))
- ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)"))
- (Info-goto-node "Top" fork))
- ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)"))
- (Info-goto-node node fork))
;; footnote
((setq node (Info-get-token (point) "(" "\\(([0-9]+)\\)"))
(let ((old-point (point)) new-point)
--- 3870,3875 ----
***************
*** 3904,3910 ****
(progn
(goto-char new-point)
(setq node t))
! (setq node nil)))))
node))
(defun Info-mouse-follow-link (click)
--- 3887,3910 ----
(progn
(goto-char new-point)
(setq node t))
! (setq node nil))))
! ;; menu item: node name
! ((setq node (Info-get-token (point) "\\* +" "\\* +\\([^:]*\\)::"))
! (Info-goto-node node fork))
! ;; menu item: node name or index entry
! ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ")
! (beginning-of-line)
! (forward-char 2)
! (setq node (Info-extract-menu-node-name nil (Info-index-node)))
! (Info-goto-node node fork))
! ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)"))
! (Info-goto-node node fork))
! ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)"))
! (Info-goto-node node fork))
! ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)"))
! (Info-goto-node "Top" fork))
! ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)"))
! (Info-goto-node node fork)))
node))
(defun Info-mouse-follow-link (click)
In GNU Emacs 24.3.50.2 (x86_64-suse-linux-gnu, GTK+ Version 3.4.4)
of 2013-06-25 on rosalinde
Bzr revision: 113175 address@hidden
Windowing system distributor `The X.Org Foundation', version 11.0.11203000
System Description: openSUSE 12.2 (x86_64)
Configured using:
`configure --without-toolkit-scroll-bars CFLAGS=-g3 -O0'
Important settings:
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=local
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#14717: 24.3.50; Info-try-follow-nearest-node misses some footnotes |
Date: |
Thu, 27 Jun 2013 11:37:16 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
On Thu, 27 Jun 2013 02:39:07 +0300 Juri Linkov <address@hidden> wrote:
>> 0. emacs -Q
>> 1. Type `C-h i m Elisp RET m Using Interactive RET TAB TAB TAB' to put
>> point on the left parent of the reference mark for footnote (1) in
>> this node.
>> 2. Type RET, expecting to jump to the footnote, but instead:
>> => user-error: No such node or anchor: It may be a string; its contents
>> are a sequence of elements
>>
>> The following patch makes the footnote search and
>> hence jumping to the footnote in that node succeed
>
> Thanks, your patch correctly fixes the bug,
Thanks for confirming.
> I recommend to commit it.
Done and closing the bug.
> BTW, if you are interested what I'm trying to do in bug#14670
> where I renamed the text property of footnotes from `link' to `shr-url'
> is to support shr-url links in Info. The value of the text properly
> `shr-url' is the target of the link. The problem is how to address
> a footnote? Maybe add a function that finds a footnote. But I'm afraid
> that supporting an arbitrary function on the text properly `shr-url'
> is too unsafe. So `shr-url' should contain only a string. The question
> is in what format to specify a link to a footnote. Currently it has
> the value `t'. Perhaps as a string it could contain a line number
> of the footnote like "(elisp) Using Interactive (line 42)".
Would that mean the link would have to be manually updated whenever the
line number of the footnote in the file changes? If so, it seems
error-prone. But I don't know the implementation, maybe that's not an
issue. Otherwise, seems like an interesting idea.
Steve Berman
--- End Message ---