--- Begin Message ---
Subject: |
23.1; docstring info node links with newlines |
Date: |
Tue, 18 May 2010 10:46:31 +1000 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux) |
In a docstring has an info link with a newline in it like
(defun foo ()
"Foo.
Info node `(emacs)File
Variables'."
nil)
The link is buttonized by M-x describe-function, but pressing Ret on the
button gets an error
No such node or anchor: File
The end of `gnus-level-unsubscribed' is an example of this -- though it
has a separate problem of needing the manual name `(gnus)Group Levels'.
2010-05-18 Kevin Ryde <address@hidden>
* help-mode.el (help-make-xrefs): For info node links turn
newlines into spaces. Link node names with newlines are matched
by help-xref-info-regexp and buttonized, this change ensures they
can be followed successfully with Ret.
--- help-mode.el.~1.71.~ 2009-11-17 10:41:35.000000000 +1100
+++ help-mode.el 2010-05-18 10:39:27.000000000 +1000
@@ -433,7 +433,9 @@
(let ((data (match-string 2)))
(save-match-data
(unless (string-match "^([^)]+)" data)
- (setq data (concat "(emacs)" data))))
+ (setq data (concat "(emacs)" data)))
+ (setq data ;; possible newlines if para filled
+ (replace-regexp-in-string "\n" " " data t t)))
(help-xref-button 2 'help-info data))))
;; URLs
(save-excursion
In GNU Emacs 23.1.1 (i486-pc-linux-gnu, GTK+ Version 2.16.5)
of 2009-09-14 on raven, modified by Debian
configured using `configure '--build=i486-linux-gnu' '--host=i486-linux-gnu'
'--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
'--localstatedir=/var/lib' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.1/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.1/leim'
'--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars'
'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g
-O2' 'LDFLAGS=-g' 'CPPFLAGS=''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_AU
value of $XMODIFIERS: nil
locale-coding-system: iso-latin-1-unix
default-enable-multibyte-characters: t
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#6206: 23.1; docstring info node links with newlines |
Date: |
Fri, 21 May 2010 02:57:52 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (x86_64-pc-linux-gnu) |
>> Should this also handle indentation? (Info generally does.)
>
> I suppose indentation would be unusual in a docstring, but it could be
> worth letting anything help-xref-info-regexp matches work. Perhaps runs
> of whitespace,
>
> (replace-regexp-in-string "\\s-+" " " data t t)
This doesn't work because `help-make-xrefs' uses
`emacs-lisp-mode-syntax-table' where \n is not whitespace.
You can try to eval in a buffer with emacs-lisp-mode:
(replace-regexp-in-string "\\s-+" " " "(gnus)Group\nLevels" t t)
=> "(gnus)Group\nLevels"
So I installed your patch with "[ \t\n]+".
--
Juri Linkov
http://www.jurta.org/emacs/
--- End Message ---