Mercurial > hg > xemacs-beta
view man/xemacs/packages.texi @ 2367:ecf1ebac70d8
[xemacs-hg @ 2004-11-04 23:05:23 by ben]
commit mega-patch
configure.in: Turn off -Winline and -Wchar-subscripts.
Use the right set of cflags when compiling modules.
Rewrite ldap configuration to separate the inclusion of lber
(needed in recent Cygwin) from the basic checks for the
needed libraries.
add a function for MAKE_JUNK_C; initially code was added to
generate xemacs.def using this, but it will need to be rewritten.
add an rm -f for junk.c to avoid weird Cygwin bug with cp -f onto
an existing file.
Sort list of auto-detected functions and eliminate unused checks for
stpcpy, setlocale and getwd.
Add autodetection of Cygwin scanf problems
BETA: Rewrite section on configure to indicate what flags are important
and what not.
digest-doc.c, make-dump-id.c, profile.c, sorted-doc.c: Add proper decls for main().
make-msgfile.c: Document that this is old junk.
Move proposal to text.c.
make-msgfile.lex: Move proposal to text.c.
make-mswin-unicode.pl: Convert error-generating code so that the entire message will
be seen as a single unrecognized token.
mule/mule-ccl.el: Update docs.
lispref/mule.texi: Update CCL docs.
ldap/eldap.c: Mule-ize.
Use EXTERNAL_LIST_LOOP_2 instead of deleted EXTERNAL_LIST_LOOP.
* XEmacs 21.5.18 "chestnut" is released.
---------------------------------------------------------------
MULE-RELATED WORK:
---------------------------------------------------------------
---------------------------
byte-char conversion
---------------------------
buffer.c, buffer.h, insdel.c, text.c: Port FSF algorithm for byte-char conversion, replacing broken
previous version. Track the char position of the gap. Add
functions to do char-byte conversion downwards as well as upwards.
Move comments about algorithm workings to internals manual.
---------------------------
work on types
---------------------------
alloc.c, console-x-impl.h, dump-data.c, dump-data.h, dumper.c, dialog-msw.c, dired-msw.c, doc.c, editfns.c, esd.c, event-gtk.h, event-msw.c, events.c, file-coding.c, file-coding.h, fns.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-shared.c, glyphs-x.c, glyphs.c, glyphs.h, gui.c, hpplay.c, imgproc.c, intl-win32.c, lrecord.h, lstream.c, keymap.c, lisp.h, libsst.c, linuxplay.c, miscplay.c, miscplay.h, mule-coding.c, nas.c, nt.c, ntheap.c, ntplay.c, objects-msw.c, objects-tty.c, objects-x.c, print.c, process-nt.c, process.c, redisplay.h, select-common.h, select-gtk.c, select-x.c, sgiplay.c, sound.c, sound.h, sunplay.c, sysfile.h, sysdep.c, syswindows.h, text.c, unexnt.c, win32.c, xgccache.c: Further work on types. This creates a full set of types for all
the basic semantics of `char' that I have so far identified, so that
its semantics can always be identified for the purposes of proper
Mule-safe code, and the raw use of `char' always avoided.
(1) More type renaming, for consistency of naming.
Char_ASCII -> Ascbyte
UChar_ASCII -> UAscbyte
Char_Binary -> CBinbyte
UChar_Binary -> Binbyte
SChar_Binary -> SBinbyte
(2) Introduce Rawbyte, CRawbyte, Boolbyte, Chbyte, UChbyte, and
Bitbyte and use them.
(3) New types Itext, Wexttext and Textcount for separating out
the concepts of bytes and textual units (different under UTF-16
and UTF-32, which are potential internal encodings).
(4) qxestr*_c -> qxestr*_ascii.
lisp.h: New; goes with other qxe() functions. #### Maybe goes in a
different section.
lisp.h: Group generic int-type defs together with EMACS_INT defs.
lisp.h: * lisp.h (WEXTTEXT_IS_WIDE)
New defns.
lisp.h: New type to replace places where int occurs as a boolean.
It's signed because occasionally people may want to use -1 as
an error value, and because unsigned ints are viral -- see comments
in the internals manual against using them.
dynarr.c: int -> Bytecount.
---------------------------
Mule-izing
---------------------------
device-x.c: Partially Mule-ize.
dumper.c, dumper.h: Mule-ize. Use Rawbyte. Use stderr_out not printf. Use wext_*().
sysdep.c, syswindows.h, text.c: New Wexttext API for manipulation of external text that may be
Unicode (e.g. startup code under Windows).
emacs.c: Mule-ize. Properly deal with argv in external encoding.
Use wext_*() and Wexttext. Use Rawbyte.
#if 0 some old junk on SCO that is unlikely to be correct.
Rewrite allocation code in run-temacs.
emacs.c, symsinit.h, win32.c: Rename win32 init function and call it even earlier, to
initialize mswindows_9x_p even earlier, for use in startup code
(XEUNICODE_P).
process.c: Use _wenviron not environ under Windows, to get Unicode environment
variables.
event-Xt.c: Mule-ize drag-n-drop related stuff.
dragdrop.c, dragdrop.h, frame-x.c: Mule-ize.
text.h: Add some more stand-in defines for particular kinds of conversion;
use in Mule-ization work in frame-x.c etc.
---------------------------
Freshening
---------------------------
intl-auto-encap-win32.c, intl-auto-encap-win32.h: Regenerate.
---------------------------
Unicode-work
---------------------------
intl-win32.c, syswindows.h: Factor out common options to MultiByteToWideChar and
WideCharToMultiByte. Add convert_unicode_to_multibyte_malloc()
and convert_unicode_to_multibyte_dynarr() and use. Add stuff for
alloca() conversion of multibyte/unicode.
alloc.c: Use dfc_external_data_len() in case of unicode coding system.
alloc.c, mule-charset.c: Don't zero out and reinit charset Unicode tables. This fucks up
dump-time loading. Anyway, either we load them at dump time or
run time, never both.
unicode.c: Dump the blank tables as well.
---------------------------------------------------------------
DOCUMENTATION, MOSTLY MULE-RELATED:
---------------------------------------------------------------
EmacsFrame.c, emodules.c, event-Xt.c, fileio.c, input-method-xlib.c, mule-wnnfns.c, redisplay-gtk.c, redisplay-tty.c, redisplay-x.c, regex.c, sysdep.c: Add comment about Mule work needed.
text.h: Add more documentation describing why DFC routines were not written
to return their value. Add some other DFC documentation.
console-msw.c, console-msw.h: Add pointer to docs in win32.c.
emacs.c: Add comments on sources of doc info.
text.c, charset.h, unicode.c, intl-win32.c, intl-encap-win32.c, text.h, file-coding.c, mule-coding.c: Collect background comments and related to text matters and
internationalization, and proposals for work to be done, in text.c
or Internals manual, stuff related to specific textual API's in
text.h, and stuff related to internal implementation of Unicode
conversion in unicode.c. Put lots of pointers to the comments to
make them easier to find.
s/mingw32.h, s/win32-common.h, s/win32-native.h, s/windowsnt.h, win32.c: Add bunches of new documentation on the different kinds of
builds and environments under Windows and how they work.
Collect this info in win32.c. Add pointers to these docs in
the relevant s/* files.
emacs.c: Document places with long comments.
Remove comment about exiting, move to internals manual, put
in pointer.
event-stream.c: Move docs about event queues and focus to internals manual, put
in pointer.
events.h: Move docs about event stream callbacks to internals manual, put
in pointer.
profile.c, redisplay.c, signal.c: Move documentation to the Internals manual.
process-nt.c: Add pointer to comment in win32-native.el.
lisp.h: Add comments about some comment conventions.
lisp.h: Add comment about the second argument.
device-msw.c, redisplay-msw.c: @@#### comments are out-of-date.
---------------------------------------------------------------
PDUMP WORK (MOTIVATED BY UNICODE CHANGES)
---------------------------------------------------------------
alloc.c, buffer.c, bytecode.c, console-impl.h, console.c, device.c, dumper.c, lrecord.h, elhash.c, emodules.h, events.c, extents.c, frame.c, glyphs.c, glyphs.h, mule-charset.c, mule-coding.c, objects.c, profile.c, rangetab.c, redisplay.c, specifier.c, specifier.h, window.c, lstream.c, file-coding.h, file-coding.c: PDUMP:
Properly implement dump_add_root_block(), which never worked before,
and is necessary for dumping Unicode tables.
Pdump name changes for accuracy:
XD_STRUCT_PTR -> XD_BLOCK_PTR.
XD_STRUCT_ARRAY -> XD_BLOCK_ARRAY.
XD_C_STRING -> XD_ASCII_STRING.
*_structure_* -> *_block_*.
lrecord.h: some comments added about
dump_add_root_block() vs dump_add_root_block_ptr().
extents.c: remove incorrect comment about pdump problems with gap array.
---------------------------------------------------------------
ALLOCATION
---------------------------------------------------------------
abbrev.c, alloc.c, bytecode.c, casefiddle.c, device-msw.c, device-x.c, dired-msw.c, doc.c, doprnt.c, dragdrop.c, editfns.c, emodules.c, file-coding.c, fileio.c, filelock.c, fns.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, gui-msw.c, gui-x.c, imgproc.c, intl-win32.c, lread.c, menubar-gtk.c, menubar.c, nt.c, objects-msw.c, objects-x.c, print.c, process-nt.c, process-unix.c, process.c, realpath.c, redisplay.c, search.c, select-common.c, symbols.c, sysdep.c, syswindows.h, text.c, text.h, ui-byhand.c: New macros {alloca,xnew}_{itext,{i,ext,raw,bin,asc}bytes} for
more convenient allocation of these commonly requested items.
Modify functions to use alloca_ibytes, alloca_array, alloca_extbytes,
xnew_ibytes, etc. also XREALLOC_ARRAY, xnew.
alloc.c: Rewrite the allocation functions to factor out repeated code.
Add assertions for freeing dumped data.
lisp.h: Moved down and consolidated with other allocation stuff.
lisp.h, dynarr.c: New functions for allocation that's very efficient when mostly in
LIFO order.
lisp.h, text.c, text.h: Factor out some stuff for general use by alloca()-conversion funs.
text.h, lisp.h: Fill out convenience routines for allocating various kinds of
bytes and put them in lisp.h. Use them in place of xmalloc(),
ALLOCA().
text.h: Fill out the convenience functions so the _MALLOC() kinds match
the alloca() kinds.
---------------------------------------------------------------
ERROR-CHECKING
---------------------------------------------------------------
text.h: Create ASSERT_ASCTEXT_ASCII() and ASSERT_ASCTEXT_ASCII_LEN()
from similar Eistring checkers and change the Eistring checkers to
use them instead.
---------------------------------------------------------------
MACROS IN LISP.H
---------------------------------------------------------------
lisp.h: Redo GCPRO declarations. Create a "base" set of functions that can
be used to generate any kind of gcpro sets -- regular, ngcpro,
nngcpro, private ones used in GC_EXTERNAL_LIST_LOOP_2.
buffer.c, callint.c, chartab.c, console-msw.c, device-x.c, dialog-msw.c, dired.c, extents.c, ui-gtk.c, rangetab.c, nt.c, mule-coding.c, minibuf.c, menubar-msw.c, menubar.c, menubar-gtk.c, lread.c, lisp.h, gutter.c, glyphs.c, glyphs-widget.c, fns.c, fileio.c, file-coding.c, specifier.c: Eliminate EXTERNAL_LIST_LOOP, which does not check for circularities.
Use EXTERNAL_LIST_LOOP_2 instead or EXTERNAL_LIST_LOOP_3
or EXTERNAL_PROPERTY_LIST_LOOP_3 or GC_EXTERNAL_LIST_LOOP_2
(new macro). Removed/redid comments on EXTERNAL_LIST_LOOP.
---------------------------------------------------------------
SPACING FIXES
---------------------------------------------------------------
callint.c, hftctl.c, number-gmp.c, process-unix.c: Spacing fixes.
---------------------------------------------------------------
FIX FOR GEOMETRY PROBLEM IN FIRST FRAME
---------------------------------------------------------------
unicode.c: Add workaround for newlib bug in sscanf() [should be fixed by
release 1.5.12 of Cygwin].
toolbar.c: bug fix for problem of initial frame being 77 chars wide on Windows.
will be overridden by my other ws.
---------------------------------------------------------------
FIX FOR LEAKING PROCESS HANDLES:
---------------------------------------------------------------
process-nt.c: Fixes for leaking handles. Inspired by work done by Adrian Aichner
<adrian@xemacs.org>.
---------------------------------------------------------------
FIX FOR CYGWIN BUG (Unicode-related):
---------------------------------------------------------------
unicode.c: Add workaround for newlib bug in sscanf() [should be fixed by
release 1.5.12 of Cygwin].
---------------------------------------------------------------
WARNING FIXES:
---------------------------------------------------------------
console-stream.c: `reinit' is unused.
compiler.h, event-msw.c, frame-msw.c, intl-encap-win32.c, text.h: Add stuff to deal with ANSI-aliasing warnings I got.
regex.c: Gather includes together to avoid warning.
---------------------------------------------------------------
CHANGES TO INITIALIZATION ROUTINES:
---------------------------------------------------------------
buffer.c, emacs.c, console.c, debug.c, device-x.c, device.c, dragdrop.c, emodules.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, font-lock.c, frame-msw.c, glyphs-widget.c, glyphs.c, gui-x.c, insdel.c, lread.c, lstream.c, menubar-gtk.c, menubar-x.c, minibuf.c, mule-wnnfns.c, objects-msw.c, objects.c, print.c, scrollbar-x.c, search.c, select-x.c, text.c, undo.c, unicode.c, window.c, symsinit.h: Call reinit_*() functions directly from emacs.c, for clarity.
Factor out some redundant init code. Move disallowed stuff
that had crept into vars_of_glyphs() into complex_vars_of_glyphs().
Call init_eval_semi_early() from eval.c not in the middle of
vars_of_() in emacs.c since there should be no order dependency
in the latter calls.
---------------------------------------------------------------
ARMAGEDDON:
---------------------------------------------------------------
alloc.c, emacs.c, lisp.h, print.c: Rename inhibit_non_essential_printing_operations to
inhibit_non_essential_conversion_operations.
text.c: Assert on !inhibit_non_essential_conversion_operations.
console-msw.c, print.c: Don't do conversion in SetConsoleTitle or FindWindow to avoid
problems during armageddon. Put #errors for NON_ASCII_INTERNAL_FORMAT
in places where problems would arise.
---------------------------------------------------------------
CHANGES TO THE BUILD PROCEDURE:
---------------------------------------------------------------
config.h.in, s/cxux.h, s/usg5-4-2.h, m/powerpc.h: Add comment about correct ordering of this file.
Rearrange everything to follow this -- put all #undefs together
and before the s&m files. Add undefs for HAVE_ALLOCA, C_ALLOCA,
BROKEN_ALLOCA_IN_FUNCTION_CALLS, STACK_DIRECTION. Remove unused
HAVE_STPCPY, HAVE_GETWD, HAVE_SETLOCALE.
m/gec63.h: Deleted; totally broken, not used at all, not in FSF.
m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/altos.h, m/amdahl.h, m/apollo.h, m/att3b.h, m/aviion.h, m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/ews4800r.h, m/gould.h, m/hp300bsd.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, m/intel386.h, m/iris4d.h, m/iris5d.h, m/iris6d.h, m/irist.h, m/isi-ov.h, m/luna88k.h, m/m68k.h, m/masscomp.h, m/mg1.h, m/mips-nec.h, m/mips-siemens.h, m/mips.h, m/news.h, m/nh3000.h, m/nh4000.h, m/ns32000.h, m/orion105.h, m/pfa50.h, m/plexus.h, m/pmax.h, m/powerpc.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h, m/sgi-challenge.h, m/symmetry.h, m/tad68k.h, m/tahoe.h, m/targon31.h, m/tekxd88.h, m/template.h, m/tower32.h, m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/xps100.h: Delete C_ALLOCA, HAVE_ALLOCA, STACK_DIRECTION,
BROKEN_ALLOCA_IN_FUNCTION_CALLS. All of this is auto-detected.
When in doubt, I followed recent FSF sources, which also have
these things deleted.
author | ben |
---|---|
date | Thu, 04 Nov 2004 23:08:28 +0000 |
parents | 712931b4b71d |
children | ab71ad6ff3dd |
line wrap: on
line source
@c This is part of the XEmacs manual. @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc. @c See file xemacs.texi for copying conditions. @node Packages, Basic, Startup Paths, Top @comment node-name, next, previous, up @section Packages @cindex packages The XEmacs 21 distribution comes only with a very basic set of built-in modes and packages. Most of the packages that were part of the distribution of earlier versions of XEmacs are now available separately. The installer as well as the user can choose which packages to install; the actual installation process is easy. This gives an installer the ability to tailor an XEmacs installation for local needs with safe removal of unnecessary code. @menu * Package Terminology:: Understanding different kinds of packages. * Installing Packages:: How to install packages. * Building Packages:: Building packages from CVS sources. * Local.rules File:: This is an important file that you must create. * Available Packages:: A brief directory of packaged LISP. @end menu @node Package Terminology, Installing Packages, , Packages @comment node-name, next, previous, up @heading Package Terminology: @subsection Package Flavors There are two main flavors of packages. @itemize @bullet @item Regular Packages @cindex regular packages A regular package is one in which multiple files are involved and one may not in general safely remove any of them. @item Single-File Packages @cindex single-file packages A single-file package is an aggregate collection of thematically related but otherwise independent lisp files. These files are bundled together for download convenience and individual files may be deleted at will without any loss of functionality. However, we would recommend that you follow this rule of thumb: "When in doubt, don't delete". @end itemize @subsection Package Distributions @cindex package distributions XEmacs Lisp packages are distributed in two ways, depending on the intended use. Binary Packages are for installers and end-users that can be installed directly into an XEmacs package directory. Source Packages are for developers and include all files necessary for rebuilding bytecompiled lisp and creating tarballs for distribution. @subsection Binary Packages @cindex binary packages Binary packages may be installed directly into an XEmacs package hierarchy. @subsection Source Packages @cindex source packages Source packages contain all of the Package author's (where appropriate in regular packages) source code plus all of the files necessary to build distribution tarballs (Unix Tar format files, gzipped for space savings). Currently, source packages are only available via CVS. See @url{http://cvs.xemacs.org/} for details. @node Installing Packages, Building Packages, Package Terminology, Packages @comment node-name, next, previous, up @cindex installing packages @cindex install @heading Installing Packages: @subsection Getting Started When you first download XEmacs 21, you will usually first grab the @dfn{core distribution}, @cindex core distribution a file called @file{xemacs-21.x.x.tar.gz}. (Replace the @t{21.x.x} by the current version number.) The core distribution contains the sources of XEmacs and a minimal set of Emacs Lisp files, which are in the subdirectory named @file{lisp}. This subdirectory used to contain all Emacs Lisp files distributed with XEmacs. Now, to conserve disk space, most non-essential packages were made optional. @subsection Choosing the Packages You Need @cindex choosing packages The @ref{Available Packages} can currently be found in the same ftp directory where you grabbed the core distribution from, and are located in the subdirectory @file{packages}. Package file names follow the naming convention @file{<package-name>-<version>-pkg.tar.gz}. If you have EFS @ref{(EFS)}, packages can be installed over the network. Alternatively, if you have copies of the packages locally, you can install packages from a local disk or CDROM. The file @file{etc/PACKAGES} in the core distribution contains a list of the @ref{Available Packages} at the time of the XEmacs release. You can also get a list of available packages, and whether or not they are installed, using the visual package browser and installer. You can access it via the menus: @example Tools -> Packages -> List and Install @end example Or, you can get to it via the keyboard: @example @code{M-x pui-list-packages} @end example Hint to system administrators of multi-user systems: it might be a good idea to install all packages and not interfere with the wishes of your users. If you can't find which package provides the feature you require, try using the @code{package-get-package-provider} function. Eg., if you know that you need @code{thingatpt}, type: @example @code{M-x package-get-package-provider RET thingatpt} @end example which will return something like @samp{(fsf-compat "1.08")}. You can the use one of the methods above for installing the package you want. @subsection XEmacs and Installing Packages There are three main ways to install packages: @menu * Automatically:: Using the package tools from XEmacs. * Manually:: Using individual package tarballs. * Sumo:: All at once, using the 'Sumo Tarball'. * Which Packages:: Which packages to install. * Removing Packages:: Removing packages. @end menu But regardless of the method you use to install packages, they can only be used by XEmacs after a restart unless the package in question has not been previously installed. @node Automatically, Manually, ,Installing Packages @comment node-name, next, previous, up @cindex automatic package install @cindex package tools @heading Automatic Package Installation: XEmacs comes with some tools to make the periodic updating and installing easier. It will notice if new packages or versions are available and will fetch them from the FTP site. Unfortunately this requires that a few packages are already in place. You will have to install them by hand as above or use a SUMO tarball. This requirement will hopefully go away in the future. The packages you need are: @example efs - To fetch the files from the FTP site or mirrors. xemacs-base - Needed by efs. and optionally: mailcrypt - To do PGP verification of the @file{package-index} file. @end example After installing these by hand, fire up XEmacs and follow these steps. @enumerate 1 @item Choose a download site. via menu: Tools -> Packages -> Set Download Site via keyb: @code{M-x customize-variable RET package-get-remote RET} (put in the details of remote host and directory) If the package tarballs _AND_ the package-index file are in a local directory, you can: @code{M-x pui-set-local-package-get-directory RET} @item Obtain a list of packages and display the list in a buffer named @file{*Packages*}. menu: Tools -> Packages -> List & Install keyb: @code{M-x pui-list-packages RET} XEmacs will now connect to the remote site and download the latest package-index file. The visual package browser will then display a list of all packages. Help information will be displayed at the very bottom of the buffer; you may have to scroll down to see it. You can also press @kbd{?} to get the same help. From this buffer, you can tell the package status by the character in the first column: @table @kbd @item - The package has not been installed. @item * The package has been installed, but a newer version is available. The current version is out-of-date. @item + The package has been marked for installation/update. @end table If there is no character in the first column, the package has been installed and is up to date. From here, you can select or unselect packages for installation using the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from the Popup @kbd{Mouse-3} Menu. Once you've finished selecting the packages, you can press the @kbd{x} key (or use the menu) to actually install the packages. Note that you will have to restart XEmacs for XEmacs to recognize any new packages. Key summary: @table @kbd @item ? Display simple help. @item @key{RET} @itemx @key{Mouse-2} Toggle between selecting and unselecting a package for installation. @item x Install selected packages. @item @key{SPC} View, in the minibuffer, additional information about the package, such as the package date (not the build date) and the package author. Moving the mouse over a package name will also do the same thing. @item v Toggle between verbose and non-verbose package display. @item g Refresh the package display. @item q Kill the package buffer. @end table Moving the mouse over a package will also cause additional information about the package to be displayed in the minibuffer. If you have balloon-help enabled a balloon-help frame will pop up and display additional package information also. @item Choose the packages you wish to install. mouse: Click button 2 on the package name. keyb: @kbd{RET} on the package name @item Make sure you have everything you need. menu: Packages -> Add Required keyb: @kbd{r} XEmacs will now search for packages that are required by the ones that you have chosen to install and offer to select those packages also. For novices and gurus alike, this step can save your bacon. It's easy to forget to install a critical package. @item Download and install the packages. menu: Packages -> Install/Remove Selected keyb: @kbd{x} @end enumerate You can also install packages using a semi-manual interface: @example M-x package-get-all <return> @end example Enter the name of the package (e.g., @code{prog-modes}), and XEmacs will search for the latest version and install it and any packages that it depends upon. @heading Keeping Packages Up To Date: Once you have the packages you want installed (using any of the above methods) you'll want to keep them up to date. You can do this easily from the menubar: @example Tools -> Packages -> Set Download Site Tools -> Packages -> Update Installed Packages @end example @node Manually, Sumo, Automatically, Installing Packages @comment node-name, next, previous, up @cindex manual package install @heading Manual Package Installation: Fetch the packages from the FTP site, CD-ROM whatever. The filenames have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For a fresh install it is sufficient to untar the file at the top of the package hierarchy. Note: If you are upgrading packages already installed, it's best to remove the old package first @ref{Removing Packages}. For example if we are installing the @file{xemacs-base} package (version 1.48): @example mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet cd $prefix/lib/xemacs/xemacs-packages RET gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET Or if you have GNU tar, the last step can be: tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET @end example For MULE related packages, it is best to untar into the mule-packages hierarchy, i.e. for the @file{mule-base} package, version 1.37: @example mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet cd $prefix/lib/xemacs/mule-packages RET gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET Or if you have GNU tar, the last step can be: tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET @end example @node Sumo, Which Packages, Manually, Installing Packages @comment node-name, next, previous, up @cindex sumo package install @heading Installing the Sumo Packages: Those with little time, cheap connections and plenty of disk space can install all the packages at once using the sumo tarballs. Download the file: @file{xemacs-sumo.tar.gz} For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz} N.B. They are called 'Sumo Tarballs' for good reason. They are currently about 19MB and 4.5MB (gzipped) respectively. Install them by: @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET} Or, if you have GNU tar: @code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET} As the Sumo tarballs are not regenerated as often as the individual packages, it is recommended that you use the automatic package tools afterwards to pick up any recent updates. @node Which Packages, Removing Packages, Sumo, Installing Packages @comment node-name, next, previous, up @cindex which packages @cindex choosing packages @heading Which Packages to Install: This is difficult to say. When in doubt install a package. If you administrate a big site it might be a good idea to just install everything. A good minimal set of packages for XEmacs-latin1 would be xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs, edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes, text-modes, time, mailcrypt If you are using the XEmacs package tools, don't forget to do: Packages -> Add Required To make sure you have everything that the packages you have chosen to install need. See also @ref{Available Packages} for further descriptions of the individual packages. @node Removing Packages, ,Which Packages, Installing Packages @comment node-name, next, previous, up @cindex removing packages @cindex deleting packages @heading Removing Packages: Because the exact files and their locations contained in a package may change it is recommended to remove a package first before installing a new version. In order to facilitate removal each package contains an @file{pgkinfo/MANIFEST.pkgname} file which list all the files belonging to the package. No need to panic, you don't have to go through the @file{pkinfo/MANIFEST.pkgname} and manually delete the files. Instead, use @code{M-x package-get-delete-package RET}. Note that the interactive package tools included with XEmacs already do this for you. @node Building Packages, Local.rules File, Installing Packages, Packages @comment node-name, next, previous, up @cindex building packages @cindex package building @heading Building Packages: Currently, source packages are only available via anonymous CVS. See @url{http://cvs.xemacs.org/} for details of checking out the @file{xemacs-packages} module. @subsection Prerequisites for Building Source Packages @table @code @item GNU cp @item GNU install (or a BSD compatible install program). @item GNU make (3.75 or later preferred). @item makeinfo (4.2 from GNU texinfo 4.2 or later required). @item GNU tar (or equivalent). @item GNU gzip (or equivalent). @item A properly configured @file{Local.rules} file. @ref{Local.rules File}. @end table And of course, XEmacs 21.0 or higher. @subsection What You Can Do With Source Packages The packages CVS sources are most useful for creating XEmacs package tarballs for installation into your own XEmacs installations or for distributing to others. For a list and description of the different @file{Makefile} targets, @xref{Makefile Targets,,,lispref}. @node Local.rules File, Available Packages, Building Packages, Packages @comment node-name, next, previous, up @cindex local.rules @heading The Local.rules File: This file is used when building and installing packages from source. In the top level of the CVS module, @file{packages}, contains the file, @file{Local.rules.template}. Simply copy that to @file{Local.rules} and edit it to suit your needs. For a complete discussion of the @file{Local.rules} file, @xref{Local.rules File,,,lispref}. @node Available Packages, , Local.rules File, Packages @comment node-name, next, previous, up @cindex available packages @cindex packages @heading Available Packages: This section lists the Lisp packages that are currently available from xemacs.org and it's mirrors. If a particular package that you are looking for isn't here, please send a message to the @email{xemacs-beta@@xemacs.org, XEmacs Beta list}. This data is up to date as of June 27, 2003. @subsection Normal Packages A very broad selection of elisp packages. @table @file @item Sun Support for Sparcworks. @item ada Ada language support. @item apel A Portable Emacs Library. Used by XEmacs MIME support. @item auctex Basic TeX/LaTeX support. @item bbdb The Big Brother Data Base: a rolodex-like database program. @item build Build XEmacs using custom widgets. @item c-support Basic single-file add-ons for editing C code. @item calc Emacs calculator. @item calendar Calendar and diary support. @item cc-mode C, C++ and Java language support. @item clearcase Support for the Clearcase version control system. @item cookie "Fortune cookie"-style messages. Includes Spook (suspicious phrases) and Yow (Zippy quotes). @item crisp Crisp/Brief emulation. @item debug GUD, gdb, dbx debugging support. @item dictionary Interface to RFC2229 dictionary servers. @item dired The DIRectory EDitor is for manipulating, and running commands on files in a directory. @item docbookide DocBook editing support. @item ecrypto Crypto functionality in Emacs Lisp. @item edebug A Lisp debugger. @item ediff Interface over patch. @item edit-utils Single file lisp packages for various XEmacs goodies. Load this and weed out the junk you don't want. @item edt DEC EDIT/EDT emulation. @item efs Treat files on remote systems the same as local files. @item eieio Enhanced Implementation of Emacs Interpreted Objects. @item elib Portable Emacs Lisp utilities library. @item emerge Another interface over patch. @item eshell Command shell implemented entirely in Emacs Lisp. @item ess ESS: Emacs Speaks Statistics. @item eterm Terminal emulator. @item eudc Emacs Unified Directory Client (LDAP, PH). @item footnote Footnoting in mail message editing modes. @item forms Forms editing support (obsolete, use the built-in Widget instead). @item fortran-modes Fortran language support. @item frame-icon Provide a WM icon based on major mode. @item fsf-compat GNU Emacs compatibility files. @item games Tetris, Sokoban, and Snake. @item general-docs General documentation. Presently, empty. @item gnats XEmacs bug reports. @item gnus The Gnus Newsreader and Mailreader. @item haskell-mode Haskell language support. @item hm--html-menus HTML editing. @item ibuffer Advanced replacement for buffer-menu. @item idlwave Editing and Shell mode for the Interactive Data Language. @item igrep Enhanced front-end for Grep. @item ilisp Front-end for interacting with Inferior Lisp (external lisps). @item ispell Spell-checking with ispell. @item jde Java language and development support. @item liece IRC (Internet Relay Chat) client for Emacs. @item mail-lib Fundamental lisp files for providing email support. @item mailcrypt Support for messaging encryption with PGP. @item mew Messaging in an Emacs World; a MIME-based email program. @item mh-e Front end support for MH. @item mine Elisp implementation of the game 'Minehunt'. @item misc-games Other amusements and diversions. @item mmm-mode Support for Multiple Major Modes within a single buffer. @item net-utils Miscellaneous Networking Utilities. This is a single-file package and files may be deleted at will. @item ocaml Objective Caml editing support. @item os-utils Miscellaneous single-file O/S utilities, for printing, archiving, compression, remote shells, etc. @item pc PC style interface emulation. @item pcl-cvs CVS frontend. @item pcomplete Provides programmatic completion. @item perl-modes Perl language support. @item pgg Emacs interface to various PGP implementations. @item prog-modes Miscellaneous single-file lisp files for various programming languages. @item ps-print Print buffers to PostScript printers. @item psgml Validated HTML/SGML editing. @item psgml-dtds A collection of DTDs for psgml. Note that this package is deprecated and will be removed in the future, most likely Q2/2003. Instead of using this, you should install needed DTDs yourself. @item python-modes Python language support. @item reftex Emacs support for LaTeX cross-references, citations. @item rmail An obsolete Emacs mailer. If you do not already use it don't start. @item ruby-modes Ruby language support. @item sasl Simple Authentication and Security Layer (SASL) library. @item scheme Front-end support for Inferior Scheme. @item semantic Semantic bovinator. @item sgml SGML/Linuxdoc-SGML editing. @item sh-script Support for editing shell scripts. @item sieve Manage Sieve email filtering scripts. @item slider User interface tool. @item sml-mode Standard ML editing support. @item sounds-au XEmacs Sun sound files. @item sounds-wav XEmacs Microsoft sound files. @item speedbar Provides a separate frame with convenient references. @item strokes Mouse enhancement utility. @item supercite An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. @item texinfo XEmacs TeXinfo support. @item text-modes Various single file lisp packages for editing text files. @item textools Single-file TeX support. @item time Display time & date on the modeline. @item tm Emacs MIME support. Not needed for Gnus >= 5.8.0 @item tooltalk Support for building with Tooltalk. @item tpu DEC EDIT/TPU support. @item tramp Remote shell-based file editing. This is similar to EFS or Ange-FTP, but works with rsh/ssh and rcp/scp. @item vc Version Control for Free systems. @item vc-cc Version Control for ClearCase. This package will shortly be replaced with clearcase.el @item vhdl Support for VHDL. @item view-process A Unix process browsing tool. @item viper VI emulation support. @item vm An Emacs mailer. @item w3 A Web browser. @item x-symbol Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts. @item xemacs-base Fundamental XEmacs support. Install this unless you wish a totally naked XEmacs. @item xemacs-devel XEmacs Lisp developer support. This package contains utilities for supporting Lisp development. It is a single-file package so it may be tailored. @item xslide XSL editing support. @item xslt-process A minor mode for (X)Emacs which allows running an XSLT processor on a buffer. @item zenirc ZENIRC IRC Client. @end table @subsection Mule Support (mule) MULti-lingual Enhancement. Support for world scripts such as Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. To use these packages your XEmacs must be compiled with Mule support. @table @file @item edict Lisp Interface to EDICT, Kanji Dictionary. @item egg-its Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to XEmacs build. @item latin-unity Unify character sets in a buffer. When characters belong to disjoint character sets, this attempts to translate the characters so that they belong to one character set. If the buffer coding system is not sufficient, this suggests different coding systems. @item leim Quail. Used for everything other than English and Japanese. @item locale Used for localized menubars (French and Japanese) and localized splash screens (Japanese). @item lookup Dictionary support. (This isn't an English dictionary program) @item mule-base Basic Mule support. Must be installed prior to building with Mule. @item mule-ucs Extended coding systems (including Unicode) for XEmacs. @item skk Another Japanese Language Input Method. Can be used without a separate process running as a dictionary server. @end table