[ESS] ess-help+.el

Martin Maechler maechler at stat.math.ethz.ch
Sat Nov 5 23:19:28 CET 2011

>>>>> Vitalie Spinu <spinuvit.list at gmail.com>
>>>>>     on Sat, 5 Nov 2011 14:33:27 +0100 writes:

    > Dear ESS users and developers, I've been working for a
    > while on improving ess-help and you can find the result
    > here: http://vsmisc.googlecode.com/svn/trunk/ess-help+.el

    > Diff is here
    > http://code.google.com/p/vsmisc/source/diff?spec=svn18&old=11&r=19&format=side&path=%2Ftrunk%2Fess-help%2B.el
    > but you better use ediff.

    > Most important changes:

    > 1) new function ess-completion-read: it uses IDO interface
    > for completion whenever available and falls back on
    > completing-read otherwise.  Set 'ess-use-ido-p' to nil if
    > you don't want ido altogether.

    > 2) new function 'ess-display-index' (bound to "i" in
    > ess-help-map). It displays nicely linked index file put
    > automatically in ess-help-mode with all the usual
    > shortcuts available; p and n have modified behavior.

Very cool!   ... though it takes a *long* time initially for me,
as it indexes all the 2000 packages (or so) I have installed.

    > 3) new function 'ess-display-vignettes' (bound to v in
    > ess-help-mode) to display linked vignette file. Links will
    > open rnw or R files directly in emacs, p and n have
    > modified behavior.

very nice, though untested!

    > 4) new function 'ess-display-help-in-browser' opens
    > current page in html browser.  Bound to "w" in
    > ess-help-mode-map.

good idea

    > 5) bonus function 'ess-install.packages' (bound to C-c i),
    > it retrieves all available R packages and asks you through
    > IDO interface which to install.  So for example to install
    > ggplot2 you need to type C-c i gg RET.

    > **internals notes** 6) new internal function
    > ess--switch-to-help-buffer which takes care of how
    > ess-help buffer is displayed. It was extracted from
    > ess-display-help-on-object and is now used by other help
    > functions as well.

    > 7) All new functions (index, vignettes, browser) are
    > designed to be easily expendable to other dialects. Each
    > function starts with a (cond ((string-match "^R"
    > ess-dialect) ...)) statement which initializes all
    > necessary regexps and command to be used latter. To extend
    > to other languages one has to add corresponding
    > customization in cond statement. Presumably for S+, a very
    > small modification of R initialization is necessary. Can
    > anyone look into it?

    > 8) removed curr-* kludge in ess-display-help-on-object, it
    > was not necessary.

    > **breaking changes** 9) ess-display-help-on-object uses
    > C-u argument to both, update the cache of help objects and
    > refetch help. Before, there was no easy way to update the
    > cached list of objects.

    >    Original behavior of C-u was to re-fetch the help
    > page. How useful is this feature? Is anyone using it? Is
    > there a problem if updating and re-fetching live on the
    > same C-u or I should put re-fetching on C-u C-u?

    > 10) "q" is bound to bury-buffer instead of
    > ess-switch-to-end-of-ESS in ess-help-mode-map.

    >     The original behavior is inconsistent with the
    > behavior of help and info files in emacs, and
    > ess-switch-to-end-of-ESS is also bound to C-c C-z which is
    > default for ess-mode buffers. Bury-buffer in my view is
    > much better and healthier default. In case of piling of
    > help buffers (which often happens by pressing "h" (help)
    > and now by "i"(index) and "v" (vignettes)), "q" just
    > buries the buffer and reveals the preceding one, just
    > as-if going backwards in history.

sounds very reasonable... at least if just reading the
description :-)

    > I really hope this will end up in ESS. 

me too... there's another more private e-mail being sent to you,
for that..

    > For time being people can download the file and put

    > (setq ess-help-mode-map nil) (load
    > "~/path/to/ess-help+.el")

    > in their emacs after (load "ess-site.el").

    > There are a few other places in ess where
    > ess-completion-read might be used instead of the
    > competing-read - R-site-search, ess-switch-process etc.

    > I tested it with emacs and xemacs as much as I could and
    > must admin making stuff work in xemacs is much
    > harder:(. Is there still someone out there using Xemacs?

    > In Xemacs some features are not fully supported. First, in
    > the index listing there are no links and you will have to
    > load the package before being able to navigate to the help
    > page (in emacs the function associated with the link takes
    > care of loading the package).  Second,
    > 'ess-display-vignettes' in xemacs does call
    > browseVignettes to display it in browser instead of
    > displaying it directly in ess-help buffer. I just could
    > not make the regexp work in xemacs (regexp-bulder appears
    > to be broken xemacs).

    > Waiting for your feedback, Vitalie.

    > ______________________________________________
    > ESS-help at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/ess-help

More information about the ESS-help mailing list