Subject: bug#14717: closed (Re: bug#14717: 24.3.50; Info-try-follow-nearest-node misses some footnotes)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 27 Jun 2013 09:38:02 +0000

Your bug report

#14717: 24.3.50; Info-try-follow-nearest-node misses some footnotes

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
14717: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14717
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#14717: 24.3.50; Info-try-follow-nearest-node misses some footnotes
From: Stephen Berman <[email-masked]>
To: Juri Linkov <[email-masked]>
Cc: [email-masked]
Date: Thu, 27 Jun 2013 11:37:16 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

On Thu, 27 Jun 2013 02:39:07 +0300 Juri Linkov <[email-masked]> 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

Subject: 24.3.50; Info-try-follow-nearest-node misses some footnotes
From: Stephen Berman <[email-masked]>
To: [email-masked]
Date: Tue, 25 Jun 2013 20:34:53 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

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 [email-masked]
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