----- Beginning of the official part -----
Description
Finder is a small elisp package that keeps descriptions of other
elisp packages, installed in the system
State of art
Current implementation of finder is inherited from GNU Emacs and
does not match XEmacs's package scheme. Namely, finder keeps all
information in one file which is created during xemacs building and
after adding new packages one must regenerate this file to keep
it in sync with changes.
There are elisp functions in current implementation of finder that
rebuild finder database, but they require write access to xemacs
distribution lisp/ directory. More over, finder rebuilding scheme
rebuilds finder database from scratch, what leads to reparsing many
elisp files. (All files, found in load path).
Proposal
I propose to use distributed database like custom and autoloads
do. Finder database for each package should be generated as a part of
package building process. On user request finder should look through
package tree and collect all package-related databases in one database
in memory.
Affects
Finder
Finder should be partially rewritten. Current finder
implementation does not allow distributed database.
XEmacs building process
XEmacs should build finder database for lisp files that go within
XEmacs distribution.
XEmacs packages building process
Package-local database should be generated during package
building.
----- End of the official part -----
I have reiplemented finder to generate package-local finder database and pick
up these databases on user request. I have split finder.el into two files:
finder.el -- code to generate finder-inf.el
finder-load.el -- code to pick things up and show to user
As for XEmacs building it seems that no changes needed. Makefile references
only `finder-compile-keywords-quiet' and `finder-compile-keywords'. Both are
still there. But ideologically it is more correct to use new functionality
xemacs -batch -l finder -f batch-make-finder-index
Now packages. Proposed functionality is new but might be pretty well
implemented like auto-autoloads code. It requires adding new target to
GENERATED: finder-inf.el. Command to build it:
cd package-lisp-dir; xemacs -batch -l finder -f batch-make-finder-index
If you are interested, have a look at the sources at:
http://www.ispras.ru/~npak/xemacs/finder/finder.el
http://www.ispras.ru/~npak/xemacs/finder/finder-load.el
If you are still interested, then I'll keep on hacking it's user interface. I
plan to add navigation buttons a-la custom.
Nick.