emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [External] : Re: Would you say this information window is well desig


From: Drew Adams
Subject: RE: [External] : Re: Would you say this information window is well designed?
Date: Mon, 22 Feb 2021 22:30:12 +0000

> I think linking to the manual (as much as practically possible) from
> *Help* is a good idea.  However, `info-lookup-symbol' (the innards of
> which we basically have to call) is a bit on the slow side.

I don't find it slow.  And it can be invoked only
when a user clicks (or uses RET) on a link.

I do that (in help-fns+.el) when the only manuals
to be searched are Emacs and Elisp.

This is the logic I use, FWIW:

,----
| Info-make-manuals-xref is a Lisp function in 'help-fns+.el'.
| 
| (Info-make-manuals-xref OBJECT &optional NO-NEWLINES-AFTER-P
| MANUALS-SPEC NOMSG)
| 
| For more information see the manuals.
| 
| Create a cross-ref link for entries for OBJECT in manuals.
| Non-`nil' optional arg NO-NEWLINES-AFTER-P means do not add two
| newlines after the cross reference.
| 
| Optional arg MANUALS-SPEC controls which manuals to search.  It has
| the same form as option `help-cross-reference-manuals', and it
| defaults to the value of that option.
| 
| Do nothing if the car of MANUALS-SPEC is nil (no manuals to search).
| 
| Otherwise, there are 3 cases:
| 
| 1. The cdr is `nil' and the car has the two manuals "emacs" and
|    "elisp", and only these (this is the default).
| 
|    Create the link without first searching any manuals.  Clicking the
|    link uses `help-lookup-symbol'.
| 
| 2. The cdr is `nil' and the car does not have just those two manuals.
| 
|    Create the link without first searching any manuals.  Clicking the
|    link then searches the manuals.
| 
| 3. The cdr is non-`nil'.
| 
|    Create the link only if there are search hits in the manuals.
|    This takes time.
| 
| In cases #1 and #2, clicking the link might find that there are no
| search hits in the manuals.  In case #3, if there is a link then it is
| sure to lead to hits.
| 
| In cases #2 and #3, clicking the link brings up an Info index buffer
| for the manuals with hits.  In case #1, clicking the link takes you
| directly to a hit in one of the manuals, Emacs or Elisp.
| 
| Cases #1 and #2 create the `*Help'* buffer quickly.  Case #3 takes
| time to create it - possibly considerable time.
`----

User option `help-cross-reference-manuals':

,----
| 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.
| The default value is (("emacs" "elisp")).  Clicking the
| cross-reference link in `*Help*' uses `info-lookup-symbol' to take you
| directly to the relevant doc in the Emacs or Elisp manual.  This is
| very quick.
| 
| Any other value means that clicking the link searches the indexes of
| the specified manuals and then opens an Info Index buffer with links
| to the relevant manuals.  This can take a while, and if there are no
| matches then the `*info*' buffer shown is empty.  The advantage of
| this approach is that you can get to a hit in more than one manual.
| 
| The option value is a cons: (MANUALS . SEARCH-FIRST).
| 
|  MANUALS is the list of manuals to search, or the symbol `all', to
|   search all.  If `nil' then do not create a cross-reference link.
| 
|  SEARCH-FIRST is a Boolean value.  If MANUALS specifies other than
|  just the Emacs and Elisp manuals (both) then:
| 
|   * `nil' SEARCH-FIRST means create a cross-reference link
|     immediately, whether or not there are actually any matches.
| 
|   * Non-`nil' SEARCH-FIRST means search the indexes, and create a link
|     only if there are matches.  The indexes are thus searched before
|     populating buffer `*Help*', which takes time.  You probably do not
|     want to use this possibility.
| 
| You can customize this variable.
| 
| For more information see the manuals.
`----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]