[ OK, this is a revamped patch. I've tested the broken EFS code, and it
definitely works now. ]
[ I'm not sure if this should really go into 21.0, but I'll let others
decide. ]
Here is a patch for B54 that implements the visual package
installer (sorry about gzip'ing it, but it's big), with documentation
updates. Although it's almost, but not quite, complete, I think it's
better to send out what I have now, to get any necessary feedback (and
bug reports ;-).
ChangeLogs are attached, but the important highlights are:
* The function `display-completion-list' was modified to take another
optional keyword, `:completion-string', which allows the programmer to
change the "Possible completions are:" prompt. While this is a
worthwhile change, the reason for making this change is suspect: with
this change, it's now possible to use `display-completion-list' as a
general-purpose function for cleanly displaying a neatly-formatted
list of objects. In the case of the visual package browser/installer,
it's being used to format and display a list of packages to install.
* Added a new menu pick to access the browser/installer:
Options->Customize->List Packages
The elisp command is `pui-list-packages', which is not currently bound
to any key sequence.
* Added ability to install packages from a local disk/CDROM, in addition
to using EFS.
* In addition to .tar.gz package files, the code will now search for
package files with a .tgz extension.
* If an existing package is updated with a newer one, the old package
lisp directory is deleted. This is done using an all-elisp function
for portability, instead of system tools like "rm -rf" or "deltree"
or
"rmdir /s".
* No longer uses "add-big-package.sh". Under Unix, it calls gunzip and
tar directly. However, unlike add-big-package.sh, it won't create the
top-level package directory.
* As a questionable convenience, after installing a package, the code
tries to load "auto-autoloads", and updates `load-path' to include the
package lisp directory. This shouldn't be a problem, but it needs to
be fixed, just in case.
* Native MS windows users (not cygwin users) can now set
`package-admin-default-install-function' to
`package-admin-install-function-mswindows', to install packages.
However, this function uses "djtar" to extract .tar.gz packages, and
few people have djtar. Currently, the user has to manually change
this variable; a future version will automatically do this for the
user.
Here are the "TODO" items remaining, in no particular order (and I don't
know how much time I'll have to do these):
1. Error handling is still lacking in areas.
2. Need to further document package installation (in particular, MS
Windows docs are missing). Also need to document some of the faces
used by the browser/installer.
3. Need to add a function to download (via EFS) a new copy of
package-get-base.el.
4. Need to provide a way to install packages into ~/.xemacs/packages;
currently, all packages are installed in the system package
directory.
5. Need to automatically select between Unix/cygwin and native MS
Windows installation methods.
6. Need to document new keyword for `display-completion-list'.
7. Need to create top-level package directory, if it doesn't already
exist.
8. Need to somehow provide an uninstall method.
9. Need to delete more than just the package lisp directory, when
updating a package.
xemacs-21.0/lisp ChangeLog:
===============================================================================
1998-09-03 Darryl Okahata <darrylo(a)sr.hp.com>
* list-mode.el: `display-completion-list': added new/optional
keyword `:completion-string', which allows the programmer to
change the "Possible completions are:" prompt.
* menubar-items.el: Added new pulldown menu-pick to start up the
visual package browser/installer:
Options->Customize->List Packages
* package-admin.el: Added hooks for installing under both Unix
and MS Windows. Does additional error checking. No longer
calls "add-big-package.sh" to install packages under Unix; now
calls gunzip & tar directly.
* package-get.el: Added ability to install packages from files
on a local disk/CDROM. Now deletes any existing package lisp
directory. Does completion on available packages when
querying for package names. Will also search for .tgz files
in addition for .tar.gz files. Tries to reload
auto-autoloads, as a convenience when loading new packages,
and also tries to add any new package paths to `load-path'.
Changed all occurences of `concat' to use `expand-file-name'.
* package-ui.el: New file which implements the main visual
package browser/installer, which is started via a menu pick or
M-x pui-list packages.
===============================================================================
xemacs-21.0/man/xemacs ChangeLog:
===============================================================================
1998-09-03 Darryl Okahata <darrylo(a)sr.hp.com>
* packages.texi: Correct and update package documentation.
Updated the package installation section to mention the visual
package browser/installer. Added a section on manually
installing binary packages.
===============================================================================
--
Darryl Okahata
darrylo(a)sr.hp.com
DISCLAIMER: this message is the author's personal opinion and does not
constitute the support, opinion, or policy of Hewlett-Packard, or of the
little green men that have been following him all day.
Show replies by date
Darryl,
Very nice work!
The one thing I notice, and it's not really your problem is that packages
like sounds-au which don't have entry in the lisp directory, dont' show
up as being installed when in fact they are installed.
I really think we should add _pkg.el info to packages like the sound
packages so that they should work correctly with this. If we don't I
foresee lot's of questions on comp.emacs.xemacs.
I got fooled by it. I sounds-au to install, it installed, still doesn't
show up as being installed. Then I realized I have installed it a long
time ago. duh!
I realize that currently the sounds packages are the only only this
affects, but what if someone comes up with packages for different toolbar
icons, packages for dynamically loaded stuff, etc?
jeff