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