revised describe function now on cvs branch



Hello,

I've committed a revised describe function to a cvs branch.
cvs update -r describe-revision-branch
(executed in maxima directory) should obtain the branch for you.

If someone can try this stuff, i would appreciate it a lot.
I tested it on Linux w/ GCL, Clisp, & SBCL, but not Windows.
Any comments are appreciated. Thanks in advance for your help.

Features:

(1) describe is now much faster, especially for GCL but also for
Clisp & SBCL. Before, describe was intolerably slow (10 -- 20 s)
on GCL. Now, it takes about 1 second or less (usually less)
to retrieve something.

(2) new code fixes a bug -- before, @deffn items which spilled over
multiple lines confused describe. Now they don't.

(3) ?! causes exact search (while ? is substring search, as before).
E.g. "?! e" yields only the %e item, not every topic which contains "e".

(4) Now describe can find index items which don't have their own
@deffn or @defvr. E.g. the @defvr for %i has @vrindex Imaginary unit
so now "? imaginary" finds %i. These extra index items weren't
handled correctly before.

(5) New code is shorter and simpler than before.
I am hoping this makes it easier to maintain and extend.

Method:

After the texinfo files are processed into .info, a Perl script is executed
(by the appropriate Makefile) which searches the index data in the
.info files and builds an index as a list of Lisp expressions, with data like
("%pi" . ("maxima.info-2" 131059 67 "Definitions for Constants"))
That file is slurped into Maxima at run time (via the autoload
mechanism) and put into a hash table. describe searches against
the hash table keys (topic strings) and then seeks into the
indicated file to retrieve the text.

Building an index which has to be loaded at run time is suboptimal,
but I didn't see a way to have it compiled with the rest of Maxima
because makeinfo runs after the Lisp compiler (and I didn't want
to change that).

The index stuff seems to work OK with the es and pt translations,
although the index file is not installed by make install.
Maybe someone can help me with that (probably just requires
another Makefile.am modification).

Hope this helps,
Robert