* [ELPA] New package: inform
@ 2020-05-07 19:36 H. Dieter Wilhelm
2020-05-07 20:40 ` Stefan Monnier
2020-05-09 3:51 ` Richard Stallman
0 siblings, 2 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-07 19:36 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1228 bytes --]
Hello Emacs
Please consider the following package for future inclusion. (Some years
ago I signed the GNU paperwork.)
This library provides links of symbols (functions, variables, faces)
within Emacs' Info viewer to their help documentation. This linking is
done, when the symbol names in the texinfo document are:
1. Quoted symbol names like `quoted-symbol' or:
2. Function names are prefixed by M-x, for example "M-x
function-name" or are quoted and prefixed like "`M-x
function-name'".
3. Function names are behind the following forms in the Elisp manual:
-- Special Form:
-- Command:
-- Function:
-- Macro:
4. Variables names are behind the following text:
-- User Option:
-- Variable:
In any case all symbol names must be known to Emacs, i.e. their names
are found in the variable `obarray'.
You can follow the additional links with the usual Info keybindings.
The customisation variable `mouse-1-click-follows-link' is influencing
the clicking behavior (and the tooltips) of the links, the variable's
default is 450 (milli seconds) setting it to nil means only clicking
with mouse-2 is following the link (hint: Drew Adams).
The code uses mostly mechanisms from GNU-Emacs' lisp/help-mode.el file.
[-- Attachment #2: inform.el --]
[-- Type: application/emacs-lisp, Size: 13413 bytes --]
[-- Attachment #3: Type: text/plain, Size: 82 bytes --]
Thank you
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 19:36 [ELPA] New package: inform H. Dieter Wilhelm
@ 2020-05-07 20:40 ` Stefan Monnier
2020-05-08 1:34 ` T.V Raman
` (3 more replies)
2020-05-09 3:51 ` Richard Stallman
1 sibling, 4 replies; 35+ messages in thread
From: Stefan Monnier @ 2020-05-07 20:40 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: emacs-devel
> Please consider the following package for future inclusion. (Some years
> ago I signed the GNU paperwork.)
I think it would make sense to integrate it directly into `info.el`.
It looks fine to me, except that the extra links should only be added to
those manuals we know are related to Emacs/Elisp (e.g. it doesn't make
sense to add them to the Coreutils or Ada manuals).
Stefan
PS: I mentioned the Ada manual specifically because it can be added as
a GNU ELPA package, so this manual may be found under
~/.emacs.d/elpa and yet doesn't talk about Elisp functions and variables
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 20:40 ` Stefan Monnier
@ 2020-05-08 1:34 ` T.V Raman
2020-05-08 8:29 ` H. Dieter Wilhelm
2020-05-08 8:18 ` H. Dieter Wilhelm
` (2 subsequent siblings)
3 siblings, 1 reply; 35+ messages in thread
From: T.V Raman @ 2020-05-08 1:34 UTC (permalink / raw)
To: Stefan Monnier; +Cc: H. Dieter Wilhelm, emacs-devel
As also SICP (Structure And Interpretation Of Computer Programs). Should
we create an elpa/info directory to hold these?
--
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 20:40 ` Stefan Monnier
2020-05-08 1:34 ` T.V Raman
@ 2020-05-08 8:18 ` H. Dieter Wilhelm
2020-05-08 10:25 ` Eli Zaretskii
2020-05-08 16:23 ` Drew Adams
2020-05-09 17:10 ` H. Dieter Wilhelm
2023-02-01 19:08 ` H. Dieter Wilhelm
3 siblings, 2 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-08 8:18 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Please consider the following package for future inclusion. (Some years
>> ago I signed the GNU paperwork.)
>
> I think it would make sense to integrate it directly into `info.el`.
Yes indeed! :-)
> It looks fine to me, except that the extra links should only be added to
> those manuals we know are related to Emacs/Elisp (e.g. it doesn't make
> sense to add them to the Coreutils or Ada manuals).
I agree, there's a danger of "false positives" and suggest looping over
something in the line of
when (string= (file-name-nondirectory Info-current-file) "emacs").
I assume it would be easier to create a collection of all (important?)
Elisp related documents than the opposite. Is it possible to ask Emacs
package archives programmatically which texinfo docs are included?
Thanks
Dieter
PS: The inform.el source: https://github.com/dieter-wilhelm/inform
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 1:34 ` T.V Raman
@ 2020-05-08 8:29 ` H. Dieter Wilhelm
0 siblings, 0 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-08 8:29 UTC (permalink / raw)
To: T.V Raman; +Cc: Stefan Monnier, emacs-devel
And on most GNU-Linux systems there's, at least, the GNU core utils
documentation.
"T.V Raman" <raman@google.com> writes:
> As also SICP (Structure And Interpretation Of Computer Programs). Should
> we create an elpa/info directory to hold these?
Good to know that books exist on Melpa...
Thanks
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 8:18 ` H. Dieter Wilhelm
@ 2020-05-08 10:25 ` Eli Zaretskii
2020-05-08 11:06 ` H. Dieter Wilhelm
2020-05-08 11:45 ` Maurizio Boriani
2020-05-08 16:23 ` Drew Adams
1 sibling, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2020-05-08 10:25 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: monnier, emacs-devel
> From: dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm)
> Date: Fri, 08 May 2020 10:18:15 +0200
> Cc: emacs-devel@gnu.org
>
> > It looks fine to me, except that the extra links should only be added to
> > those manuals we know are related to Emacs/Elisp (e.g. it doesn't make
> > sense to add them to the Coreutils or Ada manuals).
>
> I agree, there's a danger of "false positives" and suggest looping over
> something in the line of
>
> when (string= (file-name-nondirectory Info-current-file) "emacs").
I think there are several more manuals to be added to the list.
Basically, any manual that describes some Emacs facility should be
there. Examples include elisp, eintr, ebrowse, eieio, cl, tramp, and
many others.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 10:25 ` Eli Zaretskii
@ 2020-05-08 11:06 ` H. Dieter Wilhelm
2020-05-08 11:39 ` Eli Zaretskii
2020-05-08 13:45 ` H. Dieter Wilhelm
2020-05-08 11:45 ` Maurizio Boriani
1 sibling, 2 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-08 11:06 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: monnier, emacs-devel
>> when (string= (file-name-nondirectory Info-current-file) "emacs").
>
> I think there are several more manuals to be added to the list.
> Basically, any manual that describes some Emacs facility should be
> there. Examples include elisp, eintr, ebrowse, eieio, cl, tramp, and
> many others.
Absolutely.
I'll collect the "standard" documentation which will be more or less
eternal. Thank you for the first pointer.
And my hope is that a package repository maintainer is coming up with a
way to update programatically the growing?, ephemeral? Elpa, Melpa
texinfo documentation.
Dieter
PS: Wasn't it decided on this list to change the name "eintr" for the
Elisp Introduction?
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 11:06 ` H. Dieter Wilhelm
@ 2020-05-08 11:39 ` Eli Zaretskii
2020-05-08 13:45 ` H. Dieter Wilhelm
1 sibling, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2020-05-08 11:39 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: monnier, emacs-devel
> From: dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm)
> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
> Date: Fri, 08 May 2020 13:06:17 +0200
>
> PS: Wasn't it decided on this list to change the name "eintr" for the
> Elisp Introduction?
We talked about that, yes.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 10:25 ` Eli Zaretskii
2020-05-08 11:06 ` H. Dieter Wilhelm
@ 2020-05-08 11:45 ` Maurizio Boriani
1 sibling, 0 replies; 35+ messages in thread
From: Maurizio Boriani @ 2020-05-08 11:45 UTC (permalink / raw)
To: emacs-devel
Eli Zaretskii writes:
>> > It looks fine to me, except that the extra links should only be added to
>> > those manuals we know are related to Emacs/Elisp (e.g. it doesn't make
>> > sense to add them to the Coreutils or Ada manuals).
> I think there are several more manuals to be added to the list.
> Basically, any manual that describes some Emacs facility should be
> there. Examples include elisp, eintr, ebrowse, eieio, cl, tramp, and
> many others.
agree, may be an "Emacs canon" :-)
--
Maurizio Boriani
GPG key: 0xCC0FBF8F
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 11:06 ` H. Dieter Wilhelm
2020-05-08 11:39 ` Eli Zaretskii
@ 2020-05-08 13:45 ` H. Dieter Wilhelm
2020-05-08 14:01 ` Eli Zaretskii
2020-05-08 15:04 ` Stefan Monnier
1 sibling, 2 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-08 13:45 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: monnier, emacs-devel
dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm) writes:
> I'll collect the "standard" documentation which will be more or less
> eternal. Thank you for the first pointer.
Aren't these "standards" all the files in Emacs' info/ folder? (Except
the dir file.)
> And my hope is that a package repository maintainer is coming up with a
> way to update programatically the growing?, ephemeral? Elpa, Melpa
> texinfo documentation.
After a second thought, it might be more practical to check if a
document is coming from the `package-user-dir' or info/ and collect over
time a - hopefully - small list of none-Elisp/Emacs related documents to
filter them out.
(defcustom info(rm)-none-emacs-or-elisp-documents
'("aarm2012" ; Stefan: Ada manual
"arm2012" ; Stefan: Ada manual
"sicp" ; T.V: Structure and Interpretation of Computer Programs)
"List of all none GNU-Emacs or Elisp documentation.
Not to be checked for linking."
type: list
group: info)?
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 13:45 ` H. Dieter Wilhelm
@ 2020-05-08 14:01 ` Eli Zaretskii
2020-05-08 15:04 ` Stefan Monnier
1 sibling, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2020-05-08 14:01 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: monnier, emacs-devel
> From: dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm)
> Date: Fri, 08 May 2020 15:45:02 +0200
> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
>
> dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm) writes:
>
> > I'll collect the "standard" documentation which will be more or less
> > eternal. Thank you for the first pointer.
>
> Aren't these "standards" all the files in Emacs' info/ folder?
Quite possibly.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 13:45 ` H. Dieter Wilhelm
2020-05-08 14:01 ` Eli Zaretskii
@ 2020-05-08 15:04 ` Stefan Monnier
2020-05-10 18:19 ` H. Dieter Wilhelm
1 sibling, 1 reply; 35+ messages in thread
From: Stefan Monnier @ 2020-05-08 15:04 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: Eli Zaretskii, emacs-devel
> After a second thought, it might be more practical to check if a
> document is coming from the `package-user-dir' or info/ and collect over
> time a - hopefully - small list of none-Elisp/Emacs related documents to
> filter them out.
Indeed, I suspect a test like
- if it's in the blacklist => don't activate
- if it comes from Emacs's own directory => activate
- if it comes from an ELPA package => activate
- else => don't activate
will be a good enough start. The blacklist should likely use regexps
and will presumably start with the Ada manual and SICP.
Stefan
^ permalink raw reply [flat|nested] 35+ messages in thread
* RE: [ELPA] New package: inform
2020-05-08 8:18 ` H. Dieter Wilhelm
2020-05-08 10:25 ` Eli Zaretskii
@ 2020-05-08 16:23 ` Drew Adams
2020-05-08 16:38 ` Drew Adams
` (2 more replies)
1 sibling, 3 replies; 35+ messages in thread
From: Drew Adams @ 2020-05-08 16:23 UTC (permalink / raw)
To: dieter, Stefan Monnier; +Cc: emacs-devel
> > It looks fine to me, except that the extra links should only be added
> > to those manuals we know are related to Emacs/Elisp (e.g. it doesn't
> > make sense to add them to the Coreutils or Ada manuals).
>
> I agree, there's a danger of "false positives" and suggest looping over
> something in the line of
> when (string= (file-name-nondirectory Info-current-file) "emacs").
>
> I assume it would be easier to create a collection of all (important?)
> Elisp related documents than the opposite. Is it possible to ask Emacs
> package archives programmatically which texinfo docs are included?
In `help-fns+.el' I do something similar: providing links
to manual sections in `*Help*' output. I handle the
question of which manuals to treat with this user option:
___
help-cross-reference-manuals is a variable defined in `help-fns+.el'.
Its value is (("emacs" "elisp"))
Documentation:
Manuals to search, for a `*Help*' buffer link to the manuals.
A cons.
The car is a list of manuals to search, or the symbol `all', to
search all. If nil, then do not create a cross-reference link.
The cdr is a boolean:
Non-`nil' means search the manuals, then create a cross-ref link:
create it only if some search hits are found.
`nil' means create a cross-ref link without searching manuals
first (but only if there are some manuals to search).
___
IOW, the car of the value is a whitelist of manuals to
handle in this regard.
The default value corresponds to what Stefan suggested
for inform.el's links in Info: the manuals known to
always be appropriate for such handling: Emacs, Elisp.
Different users have different sets of Info manuals.
It's quite possible that some will have manuals that
are similar to the Emacs and Elisp manuals in this
regard. They can just add them to the list of manuals
to handle. (And they can remove manuals from the list,
of course.)
You might want to have a user option for what you're
considering wrt Info links: a whitelist of the manuals
to treat.
^ permalink raw reply [flat|nested] 35+ messages in thread
* RE: [ELPA] New package: inform
2020-05-08 16:23 ` Drew Adams
@ 2020-05-08 16:38 ` Drew Adams
2020-05-08 18:53 ` H. Dieter Wilhelm
2020-05-09 9:46 ` Jean-Christophe Helary
2 siblings, 0 replies; 35+ messages in thread
From: Drew Adams @ 2020-05-08 16:38 UTC (permalink / raw)
To: dieter, Stefan Monnier; +Cc: emacs-devel
I wrote:
> a whitelist of manuals to handle in this regard.
> The default value corresponds to what Stefan suggested
> for inform.el's links in Info: the manuals known to
> always be appropriate for such handling: Emacs, Elisp.
It's been pointed out that there are more manuals
than that which generally deal with Elisp functions
etc.
The particular use I make of that whitelist for
*Help* output is a bit different, so I kept the
default list very short. For links in Info, I
agree that the default whitelist would normally
be longer, and could, e.g., be taken from what's
in .../share/info/.
My real point was that you might want to make
the list customizable by users, as they might
want things handled differently from what's
available in .../share/info/.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 16:23 ` Drew Adams
2020-05-08 16:38 ` Drew Adams
@ 2020-05-08 18:53 ` H. Dieter Wilhelm
2020-05-08 21:55 ` Drew Adams
2020-05-09 9:46 ` Jean-Christophe Helary
2 siblings, 1 reply; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-08 18:53 UTC (permalink / raw)
To: Drew Adams; +Cc: Stefan Monnier, emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
>> I assume it would be easier to create a collection of all
>> (important?) Elisp related documents than the opposite. Is it
>> possible to ask Emacs package archives programmatically which texinfo
>> docs are included?
>
> In `help-fns+.el' I do something similar: providing links to manual
> sections in `*Help*' output. I handle the question of which manuals
> to treat with this user option:
I downloaded help-fns+.el and it provides, among other things, the
inverse functionality of inform: It is putting Info links in *Help*
buffers. :-) Which is a georgeous idea because herewith the
documentation loop between Help and Info documentation seems to be
closed, at least for many, many symbols! :-)
> ___
>
> help-cross-reference-manuals is a variable defined in `help-fns+.el'.
> Its value is (("emacs" "elisp"))
Oh, that means (("emacs" "elisp") nil), OK further
> Documentation: Manuals to search, for a `*Help*' buffer link to the
> manuals. A cons.
>
> The car is a list of manuals to search, or the symbol `all', to
> search all. If nil, then do not create a cross-reference link.
>
> The cdr is a boolean:
>
> Non-`nil' means search the manuals, then create a cross-ref link:
> create it only if some search hits are found.
>
> `nil' means create a cross-ref link without searching manuals
> first (but only if there are some manuals to search).
:set #'(lambda (sym defs) (custom-set-default sym defs) (setq Info-indexed-nodes ()))
Hmm, a setter function, why, that's over my horizon...
:type '(cons
(choice :tag "Which Manuals"
(repeat :tag "Specific Manuals (files)" string) (const :tag
"All Manuals" all))
(boolean :tag "Search Before Creating Button?"))
Aha, I learned how to influence `customize' in a non trivial way, thank
you Drew.
> IOW, the car of the value is a whitelist of manuals to handle in this
> regard.
>
> The default value corresponds to what Stefan suggested for inform.el's
> links in Info: the manuals known to always be appropriate for such
> handling: Emacs, Elisp.
>
> Different users have different sets of Info manuals. It's quite
> possible that some will have manuals that are similar to the Emacs and
> Elisp manuals in this regard. They can just add them to the list of
> manuals to handle. (And they can remove manuals from the list, of
> course.)
I agree that white- or blacklists should be customisable.
> You might want to have a user option for what you're considering wrt
> Info links: a whitelist of the manuals to treat.
Are you telling me that I can use, in these situtations, one variable
for two purposes? 1) For specifying and changing the list and 2)
switching a linking for lists off and on?
'((list members) t) ; only these
'((other members) nil) ; none of these
'('all nil) ; no links
'('all t) ; link everything?
Thanks
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* RE: [ELPA] New package: inform
2020-05-08 18:53 ` H. Dieter Wilhelm
@ 2020-05-08 21:55 ` Drew Adams
2020-05-08 22:02 ` Drew Adams
0 siblings, 1 reply; 35+ messages in thread
From: Drew Adams @ 2020-05-08 21:55 UTC (permalink / raw)
To: dieter; +Cc: Stefan Monnier, emacs-devel
> > You might want to have a user option for what
> > you're considering wrt Info links: a whitelist
> > of the manuals to treat.
>
> Are you telling me that I can use, in these situtations, one variable
> for two purposes? 1) For specifying and changing the list and 2)
> switching a linking for lists off and on?
>
> '((list members) t) ; only these
> '((other members) nil) ; none of these
> '('all nil) ; no links
> '('all t) ; link everything?
Not sure what you're asking. I think you're
asking whether you can about doing something
like what I did in help-fns+.el: let a single
option value specify both:
1. Either a list of manuals or a value that means
use all manuals present.
and
2. Whether to do <something>.
In my case, #2 is whether to search the manuals
specified by #1 before creating the button, so
the button either (a) takes you directly to an
Info Index buffer (menu) of the relevant links
or (b) searches the manuals and produces such
an Info Index buffer of links when you click it.
(a) Takes the time to compute the menu before
showing *Help*, which is a waste of time if you
never click the button.
(b) Saves that time before creating *Help*, but
spends it when you click the button.
TBH, the approach in help-fns+.el is not very
satisfactory, because of the time to compute
the links (either way). But that's what that
particular defcustom is about.
In Customize, there are two things to customize:
1. "Which Manuals:" which has a `Value Menu' that
lets you choose between "Specific Manuals (files)"
and "All Manuals".
For the former, the type is a repetition (`repeat')
of type `string'. For the latter, the value is the
symbol `all'.
2. A toggle button, "Search Before Creating Button?"
The type is `boolean'.
^ permalink raw reply [flat|nested] 35+ messages in thread
* RE: [ELPA] New package: inform
2020-05-08 21:55 ` Drew Adams
@ 2020-05-08 22:02 ` Drew Adams
0 siblings, 0 replies; 35+ messages in thread
From: Drew Adams @ 2020-05-08 22:02 UTC (permalink / raw)
To: dieter; +Cc: Stefan Monnier, emacs-devel
> Not sure what you're asking. I think you're
> asking whether you can about doing something
^^^^^^^^^^^
do
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 19:36 [ELPA] New package: inform H. Dieter Wilhelm
2020-05-07 20:40 ` Stefan Monnier
@ 2020-05-09 3:51 ` Richard Stallman
2020-05-09 9:38 ` H. Dieter Wilhelm
1 sibling, 1 reply; 35+ messages in thread
From: Richard Stallman @ 2020-05-09 3:51 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> This library provides links of symbols (functions, variables, faces)
> within Emacs' Info viewer to their help documentation.
It sounds good in principle, but what does a "link" look like
concretely? Does it look like Info cross references, or is it different?
How do you follow one of these links?
--
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-09 3:51 ` Richard Stallman
@ 2020-05-09 9:38 ` H. Dieter Wilhelm
2020-05-09 9:51 ` Eli Zaretskii
0 siblings, 1 reply; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-09 9:38 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 321 bytes --]
Richard Stallman <rms@gnu.org> writes:
> > This library provides links of symbols (functions, variables, faces)
> > within Emacs' Info viewer to their help documentation.
>
> It sounds good in principle, but what does a "link" look like
Thanks, attached a PNG visualisation of the current state in reversed
colour.
[-- Attachment #2: inform.png --]
[-- Type: image/png, Size: 964950 bytes --]
[-- Attachment #3: Type: text/plain, Size: 629 bytes --]
> concretely? Does it look like Info cross references, or is it different?
I think it is helpful (and possibly less confusing) to distinguish these
links from the regular "Info links".
> How do you follow one of these links?
Currently you can use the same keys and mouse clicks to follow and open
them as for the Info links. I feel this is intuitively and is working
well in practice.
(I'm considering the idea of Drew Adams to close the appearing *Help*
window with a second click or <RET> press, though I've no idea how to
achieve this at the moment.)
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 16:23 ` Drew Adams
2020-05-08 16:38 ` Drew Adams
2020-05-08 18:53 ` H. Dieter Wilhelm
@ 2020-05-09 9:46 ` Jean-Christophe Helary
2020-05-09 13:06 ` help-fns+ (WAS: [ELPA] New package: inform) Noam Postavsky
2020-05-09 17:27 ` [ELPA] New package: inform Drew Adams
2 siblings, 2 replies; 35+ messages in thread
From: Jean-Christophe Helary @ 2020-05-09 9:46 UTC (permalink / raw)
To: Drew Adams; +Cc: dieter, Stefan Monnier, emacs-devel
> On May 9, 2020, at 1:23, Drew Adams <drew.adams@oracle.com> wrote:
>
>>> It looks fine to me, except that the extra links should only be added
>>> to those manuals we know are related to Emacs/Elisp (e.g. it doesn't
>>> make sense to add them to the Coreutils or Ada manuals).
>>
>> I agree, there's a danger of "false positives" and suggest looping over
>> something in the line of
>> when (string= (file-name-nondirectory Info-current-file) "emacs").
>>
>> I assume it would be easier to create a collection of all (important?)
>> Elisp related documents than the opposite. Is it possible to ask Emacs
>> package archives programmatically which texinfo docs are included?
>
> In `help-fns+.el' I do something similar: providing links
> to manual sections in `*Help*' output. I handle the
> question of which manuals to treat with this user option:
Why is help-fns+ not in emacs/elpa/melpa ?
(yet ?)
https://www.reddit.com/r/emacs/comments/8z2jd0/why_isnt_the_code_from_helpfns_in_emacs/
That was 1 year ago.
Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-09 9:38 ` H. Dieter Wilhelm
@ 2020-05-09 9:51 ` Eli Zaretskii
2020-05-09 15:29 ` H. Dieter Wilhelm
0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2020-05-09 9:51 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: rms, emacs-devel
> From: dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm)
> Date: Sat, 09 May 2020 11:38:58 +0200
> Cc: emacs-devel@gnu.org
>
> Richard Stallman <rms@gnu.org> writes:
> > > This library provides links of symbols (functions, variables, faces)
> > > within Emacs' Info viewer to their help documentation.
> >
> > It sounds good in principle, but what does a "link" look like
>
> Thanks, attached a PNG visualisation of the current state in reversed
> colour.
I think it's easier to say that these "links" are just normal Emacs
buttons, like we have in *Help* buffers. Isn't that so?
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: help-fns+ (WAS: [ELPA] New package: inform)
2020-05-09 9:46 ` Jean-Christophe Helary
@ 2020-05-09 13:06 ` Noam Postavsky
2020-05-09 13:16 ` Jean-Christophe Helary
2020-05-09 17:27 ` [ELPA] New package: inform Drew Adams
1 sibling, 1 reply; 35+ messages in thread
From: Noam Postavsky @ 2020-05-09 13:06 UTC (permalink / raw)
To: Jean-Christophe Helary
Cc: H. Dieter Wilhelm, Stefan Monnier, Drew Adams, Emacs developers
On Sat, 9 May 2020 at 05:46, Jean-Christophe Helary
<jean.christophe.helary@traduction-libre.org> wrote:
> Why is help-fns+ not in emacs/elpa/melpa ?
>
> (yet ?)
>
> https://www.reddit.com/r/emacs/comments/8z2jd0/why_isnt_the_code_from_helpfns_in_emacs/
>
> That was 1 year ago.
Probably because Drew doesn't want to use git, and nobody else feels
like periodically inspecting and transferring the code from the wiki.
https://www.reddit.com/r/emacs/comments/7vocqa/update_on_melpa_removing_emacswiki_packages_they/dtuhzmt/
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: help-fns+ (WAS: [ELPA] New package: inform)
2020-05-09 13:06 ` help-fns+ (WAS: [ELPA] New package: inform) Noam Postavsky
@ 2020-05-09 13:16 ` Jean-Christophe Helary
0 siblings, 0 replies; 35+ messages in thread
From: Jean-Christophe Helary @ 2020-05-09 13:16 UTC (permalink / raw)
To: Noam Postavsky
Cc: H. Dieter Wilhelm, Stefan Monnier, Drew Adams, Emacs developers
> On May 9, 2020, at 22:06, Noam Postavsky <npostavs@gmail.com> wrote:
>
> On Sat, 9 May 2020 at 05:46, Jean-Christophe Helary
> <jean.christophe.helary@traduction-libre.org> wrote:
>
>> Why is help-fns+ not in emacs/elpa/melpa ?
>>
>> (yet ?)
>>
>> https://www.reddit.com/r/emacs/comments/8z2jd0/why_isnt_the_code_from_helpfns_in_emacs/
>>
>> That was 1 year ago.
>
> Probably because Drew doesn't want to use git, and nobody else feels
> like periodically inspecting and transferring the code from the wiki.
>
> https://www.reddit.com/r/emacs/comments/7vocqa/update_on_melpa_removing_emacswiki_packages_they/dtuhzmt/
Thank you Noam. That makes sense.
Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-09 9:51 ` Eli Zaretskii
@ 2020-05-09 15:29 ` H. Dieter Wilhelm
0 siblings, 0 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-09 15:29 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rms, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
>> From: dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm)
>> Date: Sat, 09 May 2020 11:38:58 +0200
>> Cc: emacs-devel@gnu.org
>>
>> Richard Stallman <rms@gnu.org> writes:
>> > > This library provides links of symbols (functions, variables, faces)
>> > > within Emacs' Info viewer to their help documentation.
>> >
>> > It sounds good in principle, but what does a "link" look like
>>
>> Thanks, attached a PNG visualisation of the current state in reversed
>> colour.
>
> I think it's easier to say that these "links" are just normal Emacs
> buttons, like we have in *Help* buffers. Isn't that so?
It is so. Technically that are "buttons" (realised with text overlays,
as in the *Help* buffers) which provide hyperlinks to other
documents.
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 20:40 ` Stefan Monnier
2020-05-08 1:34 ` T.V Raman
2020-05-08 8:18 ` H. Dieter Wilhelm
@ 2020-05-09 17:10 ` H. Dieter Wilhelm
2023-02-01 19:08 ` H. Dieter Wilhelm
3 siblings, 0 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-09 17:10 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Please consider the following package for future inclusion. (Some years
>> ago I signed the GNU paperwork.)
>
> I think it would make sense to integrate it directly into `info.el`.
May I suggest to put the code in lisp/info-xref.el? It has the right
name and is much smaller than info.el. (The code is practically
independent of info.el.)
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* RE: [ELPA] New package: inform
2020-05-09 9:46 ` Jean-Christophe Helary
2020-05-09 13:06 ` help-fns+ (WAS: [ELPA] New package: inform) Noam Postavsky
@ 2020-05-09 17:27 ` Drew Adams
2020-05-10 1:05 ` Jean-Christophe Helary
1 sibling, 1 reply; 35+ messages in thread
From: Drew Adams @ 2020-05-09 17:27 UTC (permalink / raw)
To: Jean-Christophe Helary; +Cc: dieter, Stefan Monnier, emacs-devel
> Why is help-fns+ not in emacs/elpa/melpa? (yet ?)
>
> https://www.reddit.com/r/emacs/comments/8z2
> jd0/why_isnt_the_code_from_helpfns_in_emacs/
>
> That was 1 year ago.
The thread you cite has nothing to do with MELPA.
The question addressed there was this: "Why isn't
the code from help-fns+.el in Emacs?"
___
The answer to why it is not in MELPA is here:
https://www.reddit.com/r/emacs/comments/7vocqa/update_on_melpa_removing_emacswiki_packages_they/dtuhzmt/
___
It's not hard to obtain help-fns+.el:
https://www.emacswiki.org/emacs/download/help-fns%2b.el
And it's not hard to (require 'help-fns+)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-09 17:27 ` [ELPA] New package: inform Drew Adams
@ 2020-05-10 1:05 ` Jean-Christophe Helary
0 siblings, 0 replies; 35+ messages in thread
From: Jean-Christophe Helary @ 2020-05-10 1:05 UTC (permalink / raw)
To: Drew Adams; +Cc: H. Dieter Wilhelm, Stefan Monnier, emacs-devel
> On May 10, 2020, at 2:27, Drew Adams <drew.adams@oracle.com> wrote:
>
>> Why is help-fns+ not in emacs/elpa/melpa? (yet ?)
>>
>> https://www.reddit.com/r/emacs/comments/8z2
>> jd0/why_isnt_the_code_from_helpfns_in_emacs/
>>
>> That was 1 year ago.
>
> The thread you cite has nothing to do with MELPA.
> The question addressed there was this: "Why isn't
> the code from help-fns+.el in Emacs?"
What I wrote → "Why is help-fns+ not in emacs/elpa/melpa? (yet ?)"
> ___
>
> The answer to why it is not in MELPA is here:
>
> https://www.reddit.com/r/emacs/comments/7vocqa/update_on_melpa_removing_emacswiki_packages_they/dtuhzmt/
> ___
Thank you. That link was sent by Noam before I receive your mail, to whom I replied, "Thank you, that makes sense".
> It's not hard to obtain help-fns+.el:
>
> https://www.emacswiki.org/emacs/download/help-fns%2b.el
>
> And it's not hard to (require 'help-fns+)
Indeed, but since I always use package.el I had forgotten about how to simply install code, and I checked the manual which had no clear information about that and I created a new thread with the title '"Emacs Lisp Packages" chapter in the Emacs manual' where I'm proposing a patch to clarify/improve the documentation on this fundamental subject.
Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-08 15:04 ` Stefan Monnier
@ 2020-05-10 18:19 ` H. Dieter Wilhelm
2022-12-25 9:39 ` Ihor Radchenko
0 siblings, 1 reply; 35+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-10 18:19 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> After a second thought, it might be more practical to check if a
>> document is coming from the `package-user-dir' or info/ and collect over
>> time a - hopefully - small list of none-Elisp/Emacs related documents to
>> filter them out.
>
> Indeed, I suspect a test like
>
> - if it's in the blacklist => don't activate
> - if it comes from Emacs's own directory => activate
> - if it comes from an ELPA package => activate
> - else => don't activate
>
> will be a good enough start. The blacklist should likely use regexps
> and will presumably start with the Ada manual and SICP.
Here's a first prototype along this line, I'm looking forward to your
advice, I'm not sure how to activate this linking, hope the autoloading
below will do...
modified lisp/info-xref.el
@@ -1,4 +1,4 @@
-;;; info-xref.el --- check external references in an Info document -*- lexical-binding: t -*-
+;;; info-xref.el --- Cross references in an Info document -*- lexical-binding: t -*-
;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
@@ -38,6 +38,119 @@
;; `M-x info-xref-docstrings' checks docstring "Info node ..." hyperlinks in
;; source files (and other files).
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; This library provides links of symbols (functions, variables,
+;; faces) within Emacs' Info viewer to their builtin help
+;; documentation. This linking is done, when the symbol names in
+;; texinfo documentations (like the Emacs- and Elisp manual) are
+
+;; 1. Quoted symbol names like `quoted-symbol' or:
+
+;; 2. Function names are prefixed by M-x, for example M-x
+;; function-name or are quoted and prefixed like `M-x function-name'.
+
+;; 3. Function names appearing behind the following forms, which
+;; occur, for example, in the Elisp manual:
+
+;; -- Special Form: function-name
+;; -- Command:
+;; -- Function:
+;; -- Macro:
+
+;; 4. And variables names behind the following text:
+
+;; -- User Option: variable-name
+;; -- Variable:
+
+;; In any case all symbol names must be known to Emacs, i.e. their
+;; names are found in the variable `obarray'.
+
+;; You can follow the additional links with the usual Info
+;; keybindings. The customisation variable
+;; `mouse-1-click-follows-link' is influencing the clicking behavior
+;; (and the tooltips) of the links, the variable's default is 450
+;; (milli seconds) setting it to nil means only clicking with mouse-2
+;; is following the link (hint: Drew Adams).
+
+;; The link color of symbols - referencing their builtin documentation
+;; - is distinct from links which are referencing further Info
+;; documentation.
+
+;; Inform is checking if the Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives. Please see the
+;; customization variable `inform-none-emacs-or-elisp-documents'.
+
+;; The code uses mostly mechanisms from Emacs' lisp/help-mode.el file.
+
+;;; Change Log:
+
+;; 1.3:
+
+;; Inform is checking if the Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives.
+
+;; 1.2:
+
+;; Link Elisp descriptions of symbols to their help documentation,
+;; like the following function example: -- Function: eval form
+
+;; Distinguish color of texinfo links (`link' type) and Help links
+;; (`font-lock-function-name-face')
+
+;;; TODO:
+
+;; Currently inconsistent link colors to help buffers: In *info*
+;; different as in *Help* buffers!
+
+;; Check the application `inform-xref-symbol-regexp' for additional
+;; symbol prefixes without quoting of symbol-names
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Does the following belong to customize.el?
+
+;; Generalise linking to "customization buffers" for the "easy
+;; customization" info documentation see also the customization
+;; section in the elisp manual
+
+;; - distinguish the Customization-links from Help- and Info-links
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Ideas:
+
+;; Link the help buffers back to higher level info manual subjects,
+;; similar to help-fns+.el from Drew Adams.
+
+;; Twice clicking or RETurning removes *Help* buffer (idea: Drew
+;; Adams)
+
+;; Different colors for different symbol types (idea: Drew Adams) see
+;; package helpful and info+ / info-colors on Melpa and see
+;; font-lock.el for common faces.
+
+;; - Do we need to indicate an already visited Help link with a
+;; different color?
+
+;; - Would it be be good to overtake all colors of package
+;; "info-colors"?
+
+;; - Do we need to distinguish the link FONTS? No, difficult to read!
+
+;; Back / Forward button in help buffer - back to info buffer or
+;; remain in help mode?
+
+;; Linking of standard symbol properties?
+
+;; - (info "(elisp) Standard Properties")
+
+;; Elisp manual examples:
+;; (symbol-name 'car) ... ?
+
+;; Shortening the verbose texinfo URLs? But how to handle the changed
+;; indentation?
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
;;; History:
;; Version 3 - new M-x info-xref-docstrings, use compilation-mode
@@ -556,6 +669,301 @@ info-xref-docstrings
(info-xref-check-node node)))))))))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'button)
+(require 'cl-lib)
+(require 'help-mode) ;redundant?
+
+;; activate inform without manually loading it. Is there a better way?
+;; ;;;###autoload (require 'info-xref)
+
+;; this is spawning lisp/info-xref.el's definition to 'info! This
+;; group is sorted now in 'docs and 'info! -FIXME-
+(defgroup info-xref nil
+ "Customisation 'info-xref' subgroup of info.
+Check external cross-references in Info documents and provide
+hyperlinks from symbols to their help documentation."
+ :group 'info)
+
+;;;###autoload
+(defcustom info-xref-make-xref-flag t
+ "Non-nil means create symbol links in info buffers."
+ :type '(choice (const :tag "Create links" t)
+ (const :tag "Do not link" nil))
+ :group 'info-xref)
+
+(require 'cl-seq)
+;; Info-director-list must be initialised
+(info-initialize)
+(defvar Info-xref-emacs-info-dir-content
+ (mapcar 'file-name-nondirectory ;'file-name-sans-extension
+ (directory-files
+ (car
+ ;; search for the main Emacs' info/ directory
+ (cl-member "[^.]emacs" Info-directory-list :test 'string-match-p))
+ ;; don't list "." and ".."
+ t "[^.]$"))
+ "List of file names in Emacs' own info/ directory.")
+
+;; Turn into regexp list necessary? Stefan
+;; Switch to alist with explanation of file name?
+(defcustom info-xref-none-emacs-or-elisp-documents
+ '("aarm2012" ; Stefan: Ada manual, Elpa archive
+ "arm2012" ; Stefan: Ada manual
+ "sicp" ; T.V: Structure and Interpretation of Computer Programs,
+ ; Melpa archive
+ )
+ "List of all none GNU-Emacs or Elisp documentation.
+Or other documents not to be checked for linking to their help
+documentation. The list must contains only the base name of the
+files (without their file name extension \".info\")."
+ :type '(repeat string)
+ :group 'info-xref)
+
+(defun Info-xref-check-docu-p ()
+ "Check if the current info file is relevant to Emacs.
+That means `Info-current-file' is either found in Emacs' info/
+directory or in `package-user-dir' and is not included in the
+`info-xref-none-emacs-or-elisp-documents' list."
+ (let* ((ifile Info-current-file)
+ (ifi (when ifile
+ (file-name-sans-extension
+ (file-name-nondirectory ifile))))
+ (pdir (when (boundp 'package-user-dir)
+ (expand-file-name
+ package-user-dir)))
+ (ifiles Info-xref-emacs-info-dir-content)
+ (ndocu info-xref-none-emacs-or-elisp-documents))
+ (and ifile
+ (or (assoc-string (concat ifi ".info") ifiles)
+ ;; info files might be archived!
+ (assoc-string (concat ifi ".info.gz") ifiles)
+ (when pdir (string-match pdir ifile)))
+ (not (assoc-string ifi ndocu)))))
+
+(defvar describe-symbol-backends) ;from help-mode.el
+(defvar help-xref-following) ;dito
+
+;; this toggles the complete linking process
+;;;###autoload
+(when info-xref-make-xref-flag
+ (add-hook 'Info-selection-hook 'Info-xref-make-xrefs))
+
+(defface Info-xref-color
+ '((t (:inherit font-lock-doc-face
+ ;; font-lock-preprocessor-face ; similar to link face (default)
+ ;; font-lock-builtin-face ; similar (default Emacs)
+ ;; font-lock-function-name-face ; similar (default)
+ ;; Info-xref-face
+ )))
+ "Face for the `symbol' reference items in `info' nodes."
+ :group 'info-colors)
+
+;; Button types
+
+(define-button-type 'Info-xref
+ 'link t ;for Info-next-reference-or-link
+ 'follow-link t
+ 'face 'Info-xref-color
+ 'action #'Info-xref-button-action)
+
+(define-button-type 'Info-xref-function
+ :supertype 'Info-xref
+ 'Info-xref-function 'describe-function
+ 'Info-xref-echo (purecopy "mouse-2, RET: describe this function"))
+
+(define-button-type 'Info-xref-variable
+ :supertype 'Info-xref
+ 'Info-xref-function 'describe-variable
+ 'Info-xref-echo (purecopy "mouse-2, RET: describe this variable"))
+
+(define-button-type 'Info-xref-face
+ :supertype 'Info-xref
+ 'Info-xref-function 'describe-face
+ 'Info-xref-echo (purecopy "mouse-2, RET: describe this face"))
+
+(define-button-type 'Info-xref-symbol
+ :supertype 'Info-xref
+ 'Info-xref-function #'describe-symbol
+ 'Info-xref-echo (purecopy "mouse-2, RET: describe this symbol"))
+
+(define-button-type 'Info-xref-function-def
+ :supertype 'Info-xref
+ 'Info-xref-function (lambda (fun &optional file type)
+ (or file
+ (setq file (find-lisp-object-file-name fun type)))
+ (if (not file)
+ (message "Unable to find defining file")
+ (require 'find-func)
+ (when (eq file 'C-source)
+ (setq file
+ (help-C-file-name (indirect-function fun) 'fun)))
+ ;; Don't use find-function-noselect because it follows
+ ;; aliases (which fails for built-in functions).
+ (let ((location
+ (find-function-search-for-symbol fun type file)))
+ (pop-to-buffer (car location))
+ (run-hooks 'find-function-after-hook)
+ (if (cdr location)
+ (goto-char (cdr location))
+ (message "Unable to find location in file")))))
+ 'Info-xref-echo (purecopy "mouse-2, RET: find function's definition"))
+
+;; Functions
+
+(defun Info-xref-button-action (button)
+ "Call BUTTON's help function."
+ (Info-xref-do-xref nil
+ (button-get button 'Info-xref-function)
+ (button-get button 'Info-xref-args)))
+
+(defun Info-xref-do-xref (_pos function args)
+ "Call the help cross-reference function FUNCTION with args ARGS.
+Things are set up properly so that the resulting `help-buffer' has
+a proper [back] button."
+ ;; There is a reference at point. Follow it.
+ (let ((help-xref-following nil))
+ (apply
+ function (if (eq function 'info)
+ (append args (list (generate-new-buffer-name "*info*")))args))))
+
+(defun Info-xref-button (match-number type &rest args)
+ "Make a hyperlink for cross-reference text previously matched.
+MATCH-NUMBER is the subexpression of interest in the last matched
+regexp. TYPE is the type of button to use. Any remaining arguments are
+passed to the button's Info-xref-function when it is invoked.
+See `Info-xref-make-xrefs' Don't forget ARGS." ; -TODO-
+ ;; Don't mung properties we've added specially in some instances.
+ (unless (button-at (match-beginning match-number))
+ ;; (message "Creating button: %s." args)
+ (make-text-button (match-beginning match-number)
+ (match-end match-number)
+ 'type type 'Info-xref-args args)))
+
+(defconst Info-xref-symbol-regexp
+ (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var
+ "\\(function\\|command\\|call\\)\\|" ; Link to function
+ "\\(face\\)\\|" ; Link to face
+ "\\(symbol\\|program\\|property\\)\\|" ; Don't link
+ "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)"
+ "[ \t\n]+\\)?"
+ ;; Note starting with word-syntax character:
+ "['`‘]\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)['’]"))
+ "Regexp matching doc string references to symbols.
+
+The words preceding the quoted symbol can be used in doc strings to
+distinguish references to variables, functions and symbols.")
+
+;;;###autoload
+(defun Info-xref-make-xrefs (&optional buffer)
+ "Parse and hyperlink documentation cross-references in the given BUFFER.
+
+Find cross-reference information in a buffer and activate such cross
+references for selection with `help-follow'. Cross-references have
+the canonical form `...' and the type of reference may be
+disambiguated by the preceding word(s) used in
+`Info-xref-symbol-regexp'.
+
+Function names are also prefixed by \"M-x\", for example \"M-x
+function-name\" or are quoted and prefixed like `M-x
+function-name'.
+
+Also Function names appearing behind the following forms, which
+occur, for example, in the Elisp manual:
+
+ -- Special Form: function-name
+ -- Command:
+ -- Function:
+ -- Macro:
+
+And variables names behind the following text:
+
+ -- User Option: variable-name
+ -- Variable:
+
+Faces only get cross-referenced if preceded or followed by the
+word `face'. Variables without variable documentation do not get
+cross-referenced, unless preceded by the word `variable' or
+`option'."
+ (interactive "b")
+ (when (Info-xref-check-docu-p)
+ (with-current-buffer (or buffer (current-buffer))
+ (save-excursion
+ (goto-char (point-min))
+ ;; Skip the header-type info, though it might be useful to parse
+ ;; it at some stage (e.g. "function in `library'").
+ ;; (forward-paragraph)
+ (with-silent-modifications ;from Stefan
+ (let (;(stab (syntax-table))
+ (case-fold-search t)
+ (inhibit-read-only t))
+ (with-syntax-table emacs-lisp-mode-syntax-table
+ ;; Quoted symbols
+ (save-excursion
+ (while (re-search-forward Info-xref-symbol-regexp nil t)
+ (let* ((data (match-string 8))
+ (sym (intern-soft data)))
+ (if sym
+ (cond
+ ((match-string 3) ; `variable' &c
+ (and (or (boundp sym) ; `variable' doesn't ensure
+ ; it's actually bound
+ (get sym 'variable-documentation))
+ (Info-xref-button 8 'Info-xref-variable sym)))
+ ((match-string 4) ; `function' &c
+ (and (fboundp sym) ; similarly
+ (Info-xref-button 8 'Info-xref-function sym)))
+ ((match-string 5) ; `face'
+ (and (facep sym)
+ (Info-xref-button 8 'Info-xref-face sym)))
+ ((match-string 6)) ; nothing for `symbol'
+ ((match-string 7)
+ (Info-xref-button 8 'Info-xref-function-def sym))
+ ((cl-some (lambda (x) (funcall (nth 1 x) sym))
+ describe-symbol-backends)
+ (Info-xref-button 8 'Info-xref-symbol sym)))))))
+
+ ;; (info "(elisp) Eval")
+ ;; Elisp manual -- Special Form:
+ ;; -- Command:
+ ;; -- Function: function-name function
+ ;; -- Macro:
+ (save-excursion
+ (while (re-search-forward
+ "-- \\(Special Form:\\|Command:\\|Function:\\|Macro:\\) "
+ nil t)
+ (looking-at "\\(\\sw\\|\\s_\\)+")
+ (let ((sym (intern-soft (match-string 0))))
+ (if (fboundp sym)
+ (Info-xref-button 0 'Info-xref-function sym)))))
+
+ ;; -- User Option:
+ ;; -- Variable: variable-name
+ (save-excursion
+ (while (re-search-forward
+ "-- \\(User Option:\\|Variable:\\) "
+ nil t)
+ (looking-at "\\(\\sw\\|\\s_\\)+")
+ (let ((sym (intern-soft (match-string 0))))
+ (if (boundp sym)
+ (Info-xref-button 0 'Info-xref-variable sym)))))
+
+ ;; M-x prefixed functions
+ (save-excursion
+ (while (re-search-forward
+ ;; Assume command name is only word and symbol
+ ;; characters to get things like `use M-x foo->bar'.
+ ;; Command required to end with word constituent
+ ;; to avoid `.' at end of a sentence.
+ ;; "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" nil t)
+ ;; include M-x and quotes
+ "['`‘]?M-x\\s-*\n?\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)['’]?" nil t)
+ (let ((sym (intern-soft (match-string 1))))
+ ;; (message "found %s" sym)
+ (if (fboundp sym)
+ (Info-xref-button 1 'Info-xref-function sym))))))))))))
+
(provide 'info-xref)
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-10 18:19 ` H. Dieter Wilhelm
@ 2022-12-25 9:39 ` Ihor Radchenko
2022-12-26 0:10 ` Stefan Monnier
0 siblings, 1 reply; 35+ messages in thread
From: Ihor Radchenko @ 2022-12-25 9:39 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: Stefan Monnier, Eli Zaretskii, emacs-devel
dieter@duenenhof-wilhelm.de (H. Dieter Wilhelm) writes:
>> Indeed, I suspect a test like
>>
>> - if it's in the blacklist => don't activate
>> - if it comes from Emacs's own directory => activate
>> - if it comes from an ELPA package => activate
>> - else => don't activate
>>
>> will be a good enough start. The blacklist should likely use regexps
>> and will presumably start with the Ada manual and SICP.
>
> Here's a first prototype along this line, I'm looking forward to your
> advice, I'm not sure how to activate this linking, hope the autoloading
> below will do...
May I know if this has been merged?
Or should anything be done to move the merge forward?
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2022-12-25 9:39 ` Ihor Radchenko
@ 2022-12-26 0:10 ` Stefan Monnier
2022-12-26 20:41 ` H. Dieter Wilhelm
0 siblings, 1 reply; 35+ messages in thread
From: Stefan Monnier @ 2022-12-26 0:10 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: H. Dieter Wilhelm, Eli Zaretskii, emacs-devel
> May I know if this has been merged?
AFAIK it hasn't.
> Or should anything be done to move the merge forward?
I think the last code I saw was sill a prototype, but I can't remember
reviewing it, really :-(
It would be good to get a bug-nb for it and send the latest version of
he suggested patch to it.
Stefan
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2022-12-26 0:10 ` Stefan Monnier
@ 2022-12-26 20:41 ` H. Dieter Wilhelm
2022-12-27 10:54 ` Ihor Radchenko
0 siblings, 1 reply; 35+ messages in thread
From: H. Dieter Wilhelm @ 2022-12-26 20:41 UTC (permalink / raw)
To: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> May I know if this has been merged?
> AFAIK it hasn't.
I also think it hasn't merged.
>> Or should anything be done to move the merge forward?
>
> I think the last code I saw was sill a prototype, but I can't remember
> reviewing it, really :-(
I think I suggested putting it on Melpa to see if there's a real
interest in it (up to now there were 432 downloads, please see
https://melpa.org/#/?q=inform). My idea of getting some feedback, hints
or even bug reports were in vain, though.
> It would be good to get a bug-nb for it and send the latest version of
> he suggested patch to it.
Sorry, what do you mean by bug-nb?
Thanks
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2022-12-26 20:41 ` H. Dieter Wilhelm
@ 2022-12-27 10:54 ` Ihor Radchenko
2022-12-27 22:38 ` H. Dieter Wilhelm
0 siblings, 1 reply; 35+ messages in thread
From: Ihor Radchenko @ 2022-12-27 10:54 UTC (permalink / raw)
To: H. Dieter Wilhelm; +Cc: emacs-devel
"H. Dieter Wilhelm" <dieter@duenenhof-wilhelm.de> writes:
>> I think the last code I saw was sill a prototype, but I can't remember
>> reviewing it, really :-(
>
> I think I suggested putting it on Melpa to see if there's a real
> interest in it (up to now there were 432 downloads, please see
> https://melpa.org/#/?q=inform). My idea of getting some feedback, hints
> or even bug reports were in vain, though.
There is real interest to make it part of info.el :)
Right from Emacs devs.
" I think it would make sense to integrate it directly into `info.el`."
Stefan Monnier <monnier@iro.umontreal.ca> (2020-05-07)
You don't need to publish this as separate package to fix bugs. You will
not fix all of them anyway, and you have more chances to get bug reports
for a core code.
>> It would be good to get a bug-nb for it and send the latest version of
>> he suggested patch to it.
>
> Sorry, what do you mean by bug-nb?
Bug number. Basically: "send it via M-x report-emacs-bug attaching a
patch against Emacs master branch".
Then, we can discuss the implementation and not loose it in emacs-devel
archives. A "bug" will be tracked.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2022-12-27 10:54 ` Ihor Radchenko
@ 2022-12-27 22:38 ` H. Dieter Wilhelm
0 siblings, 0 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2022-12-27 22:38 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: emacs-devel
Ihor Radchenko <yantar92@posteo.net> writes:
> There is real interest to make it part of info.el :)
> Right from Emacs devs.
>
> " I think it would make sense to integrate it directly into `info.el`."
> Stefan Monnier <monnier@iro.umontreal.ca> (2020-05-07)
Obviously missed that. Thanks for the reminder!
> Bug number. Basically: "send it via M-x report-emacs-bug attaching a
> patch against Emacs master branch".
I'll do. Please be patient, grew a bit Elisp rusty..
> Then, we can discuss the implementation and not loose it in emacs-devel
> archives. A "bug" will be tracked.
I'm looking forward to it.
Dieter
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2020-05-07 20:40 ` Stefan Monnier
` (2 preceding siblings ...)
2020-05-09 17:10 ` H. Dieter Wilhelm
@ 2023-02-01 19:08 ` H. Dieter Wilhelm
2023-02-01 19:21 ` H. Dieter Wilhelm
3 siblings, 1 reply; 35+ messages in thread
From: H. Dieter Wilhelm @ 2023-02-01 19:08 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel, stephen_leake
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> It looks fine to me, except that the extra links should only be added
> to those manuals we know are related to Emacs/Elisp (e.g. it doesn't
> make sense to add them to the Coreutils or Ada manuals).
I think 2 years ago were "arm2012" and "aarm2012" on Elpa but now it
seems they're gone. I assume they are succeeded by the package
"ada-ref-man" (from 2020) but'll leave the old notations in the
"blacklist" in case somebody might be using the old manual packages..
--
Dieter
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA] New package: inform
2023-02-01 19:08 ` H. Dieter Wilhelm
@ 2023-02-01 19:21 ` H. Dieter Wilhelm
0 siblings, 0 replies; 35+ messages in thread
From: H. Dieter Wilhelm @ 2023-02-01 19:21 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel, stephen_leake
"H. Dieter Wilhelm" <dieter@duenenhof-wilhelm.de> writes:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> It looks fine to me, except that the extra links should only be added
>> to those manuals we know are related to Emacs/Elisp (e.g. it doesn't
>> make sense to add them to the Coreutils or Ada manuals).
>
> I think 2 years ago were "arm2012" and "aarm2012" on Elpa but now it
> seems they're gone. I assume they are succeeded by the package
> "ada-ref-man" (from 2020) but'll leave the old notations in the
> "blacklist" in case somebody might be using the old manual packages..
Just installed "ada-ref-man" and found these Info files in its folder!
I'm sorry for the noise.
--
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany
^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2023-02-01 19:21 UTC | newest]
Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-07 19:36 [ELPA] New package: inform H. Dieter Wilhelm
2020-05-07 20:40 ` Stefan Monnier
2020-05-08 1:34 ` T.V Raman
2020-05-08 8:29 ` H. Dieter Wilhelm
2020-05-08 8:18 ` H. Dieter Wilhelm
2020-05-08 10:25 ` Eli Zaretskii
2020-05-08 11:06 ` H. Dieter Wilhelm
2020-05-08 11:39 ` Eli Zaretskii
2020-05-08 13:45 ` H. Dieter Wilhelm
2020-05-08 14:01 ` Eli Zaretskii
2020-05-08 15:04 ` Stefan Monnier
2020-05-10 18:19 ` H. Dieter Wilhelm
2022-12-25 9:39 ` Ihor Radchenko
2022-12-26 0:10 ` Stefan Monnier
2022-12-26 20:41 ` H. Dieter Wilhelm
2022-12-27 10:54 ` Ihor Radchenko
2022-12-27 22:38 ` H. Dieter Wilhelm
2020-05-08 11:45 ` Maurizio Boriani
2020-05-08 16:23 ` Drew Adams
2020-05-08 16:38 ` Drew Adams
2020-05-08 18:53 ` H. Dieter Wilhelm
2020-05-08 21:55 ` Drew Adams
2020-05-08 22:02 ` Drew Adams
2020-05-09 9:46 ` Jean-Christophe Helary
2020-05-09 13:06 ` help-fns+ (WAS: [ELPA] New package: inform) Noam Postavsky
2020-05-09 13:16 ` Jean-Christophe Helary
2020-05-09 17:27 ` [ELPA] New package: inform Drew Adams
2020-05-10 1:05 ` Jean-Christophe Helary
2020-05-09 17:10 ` H. Dieter Wilhelm
2023-02-01 19:08 ` H. Dieter Wilhelm
2023-02-01 19:21 ` H. Dieter Wilhelm
2020-05-09 3:51 ` Richard Stallman
2020-05-09 9:38 ` H. Dieter Wilhelm
2020-05-09 9:51 ` Eli Zaretskii
2020-05-09 15:29 ` H. Dieter Wilhelm
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.