This commit was generated by cvs2svn to compensate for changes in r5670,
[chise/xemacs-chise.git.1] / man / xemacs / packages.texi
1 @c This is part of the XEmacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
3 @c See file xemacs.texi for copying conditions.
4 @node Packages, Basic, Startup Paths, Top
5 @comment  node-name,  next,  previous,  up
6
7 @section Packages
8 @cindex packages
9
10 The XEmacs 21 distribution comes only with a very basic set of
11 built-in modes and packages.  Most of the packages that were part of
12 the distribution of earlier versions of XEmacs are now available
13 separately.  The installer as well as the user can choose which
14 packages to install; the actual installation process is easy.
15 This gives an installer the ability to tailor an XEmacs installation for
16 local needs with safe removal of unnecessary code.
17
18 @menu
19 * Package Terminology:: Understanding different kinds of packages.
20 * Installing Packages:: How to install packages.
21 * Building Packages::   Building packages from CVS sources.
22 * Local.rules File::    This is an important file that you must create.
23 * Creating Packages::   The basics.
24 * Available Packages::  A brief directory of packaged LISP.
25 @end menu
26
27 @node Package Terminology, Installing Packages, , Packages
28 @comment  node-name,  next,  previous,  up
29 @heading Package Terminology:
30 @subsection Package Flavors
31
32 There are two main flavors of packages.
33
34 @itemize @bullet
35 @item
36 Regular Packages
37 @cindex regular packages
38 A regular package is one in which multiple files are involved and one
39 may not in general safely remove any of them.
40
41 @item
42 Single-File Packages
43 @cindex single-file packages
44 A single-file package is an aggregate collection of thematically
45 related but otherwise independent lisp files.  These files are bundled 
46 together for download convenience and individual files may be deleted at
47 will without any loss of functionality.  However, we would recommend
48 that you follow this rule of thumb: "When in doubt, don't delete".
49 @end itemize
50
51 @subsection Package Distributions
52 @cindex package distributions
53 XEmacs Lisp packages are distributed in two ways, depending on the
54 intended use.  Binary Packages are for installers and end-users that can
55 be installed directly into an XEmacs package directory.  Source Packages
56 are for developers and include all files necessary for rebuilding
57 bytecompiled lisp and creating tarballs for distribution.
58
59 @subsection Binary Packages
60 @cindex binary packages
61 Binary packages may be installed directly into an XEmacs package
62 hierarchy.
63
64 @subsection Source Packages
65 @cindex source packages
66 Source packages contain all of the Package author's (where appropriate
67 in regular packages) source code plus all of the files necessary to
68 build distribution tarballs (Unix Tar format files, gzipped for space
69 savings).
70
71 Currently, source packages are only available via CVS.  See
72 @url{http://cvs.xemacs.org/} for details.
73 @node Installing Packages, Building Packages, Package Terminology, Packages
74 @comment  node-name,  next,  previous,  up
75 @cindex installing packages
76 @cindex install
77 @heading Installing Packages:
78 @subsection Getting Started
79
80 When you first download XEmacs 21, you will usually first grab the
81 @dfn{core distribution},
82 @cindex core distribution
83 a file called
84 @file{xemacs-21.x.x.tar.gz}. (Replace the @t{21.x.x} by the current version
85 number.)  The core distribution contains the sources of XEmacs and a
86 minimal set of Emacs Lisp files, which are in the subdirectory named
87 @file{lisp}.  This subdirectory used to contain all Emacs Lisp files
88 distributed with XEmacs.  Now, to conserve disk space, most
89 non-essential packages were made optional.
90
91 @subsection Choosing the Packages You Need
92 @cindex choosing packages
93 The @ref{Available Packages} can currently be found in the same ftp directory
94 where you grabbed the core distribution from, and are located in the
95 subdirectory @file{packages}.  Package file names follow
96 the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
97
98 If you have @ref{(EFS)}, packages can be installed over the network.
99 Alternatively, if you have copies of the packages locally, you can
100 install packages from a local disk or CDROM.
101
102 The file @file{etc/PACKAGES} in the core distribution contains a list of
103 the @ref{Available Packages} at the time of the XEmacs release.
104
105 You can also get a list of available packages, and whether or not they
106 are installed, using the visual package browser and installer.  You can
107 access it via the menus:
108
109 @example
110         Tools -> Packages -> List and Install
111 @end example
112
113 Or, you can get to it via the keyboard:
114
115 @example
116 M-x pui-list-packages
117 @end example
118
119 Hint to system administrators of multi-user systems: it might be a good
120 idea to install all packages and not interfere with the wishes of your
121 users.
122
123 If you can't find which package provides the feature you require, try
124 using the @code{package-get-package-provider} function. Eg., if you know 
125 that you need @code{thingatpt}, type:
126
127 @example
128 M-x package-get-package-provider RET thingatpt
129 @end example
130
131 which will return something like (fsf-compat "1.08"). You can the use
132 one of the methods above for installing the package you want.
133
134 @subsection XEmacs and Installing Packages
135
136 There are three main ways to install packages:
137
138 @menu
139 * Sumo::              All at once, using the 'Sumo Tarball'.
140 * Manually::          Using individual package tarballs.
141 * Automatically::     Using the package tools from XEmacs.
142 * Which Packages::    Which packages to install.
143 * Removing Packages:: Removing packages.
144 @end menu
145
146 But regardless of the method you use to install packages, they can only
147 be used by XEmacs after a restart.
148
149 @node Sumo, Manually, ,Installing Packages
150 @comment  node-name,  next,  previous,  up
151 @cindex sumo package install
152 @heading Installing the Sumo Packages:
153 Those with little time, cheap connections and plenty of disk space can
154 install all the packages at once using the sumo tarballs.
155 Download the file: @file{xemacs-sumo.tar.gz}
156
157 For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
158
159 N.B. They are called 'Sumo Tarballs' for good reason. They are
160 currently about 19MB and 4.5MB (gzipped) respectively.
161
162 Install them by:
163
164 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
165
166 Or, if you have GNU tar:
167
168 @code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
169
170 As the Sumo tarballs are not regenerated as often as the individual
171 packages, it is recommended that you use the automatic package tools
172 afterwards to pick up any recent updates.
173
174 @node Manually, Automatically, Sumo, Installing Packages
175 @comment  node-name,  next,  previous,  up
176 @cindex manual package install
177 @heading Manual Package Installation:
178 Fetch the packages from the FTP site, CD-ROM whatever. The filenames
179 have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
180 a fresh install it is sufficient to untar the file at the top of the
181 package hierarchy. 
182
183 Note: If you are upgrading packages already installed, it's best to
184 remove the old package first @ref{Removing Packages}.
185
186 For example if we are installing the @file{xemacs-base}
187 package (version 1.48):
188
189 @example
190    mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
191    cd $prefix/lib/xemacs/xemacs-packages RET
192    gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
193
194 Or if you have GNU tar, the last step can be:
195
196    tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
197 @end example
198
199 For MULE related packages, it is best to untar into the mule-packages
200 hierarchy, i.e. for the @file{mule-base} package, version 1.37:
201
202 @example
203    mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
204    cd $prefix/lib/xemacs/mule-packages RET
205    gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
206
207 Or if you have GNU tar, the last step can be:
208
209    tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
210 @end example
211
212 @node Automatically, Which Packages ,Manually, Installing Packages
213 @comment  node-name,  next,  previous,  up
214 @cindex automatic package install
215 @cindex package tools
216 @heading Automatic Package Installation:
217 XEmacs comes with some tools to make the periodic updating and
218 installing easier. It will notice if new packages or versions are
219 available and will fetch them from the FTP site.
220
221 Unfortunately this requires that a few packages are already in place.
222 You will have to install them by hand as above or use a SUMO tarball.
223 This requirement will hopefully go away in the future. The packages
224 you need are:
225
226 @example
227    efs          - To fetch the files from the FTP site or mirrors.
228    xemacs-base  - Needed by efs.
229
230 and optionally:
231
232    mule-base    - Needed if you want to use XEmacs with MULE.
233 @end example
234
235 After installing these by hand, fire up XEmacs and follow these
236 steps.
237
238 @enumerate 1
239 @item
240 Choose a download site.
241 via menu: Tools -> Packages -> Add Download Site 
242 via keyb: @code{M-x customize-variable RET package-get-remote RET}
243 (put in the details of remote host and directory)
244
245 If the package tarballs _AND_ the package-index file are in a
246 local directory, you can: @code{M-x pui-add-install-directory RET}
247
248 @item
249 Obtain a list of packages and display the list in a buffer named
250 @file{*Packages*}.
251 menu: Tools -> Packages -> List & Install
252 keyb: @code{M-x pui-list-packages RET}
253
254 XEmacs will now connect to the remote site and download the
255 latest package-index file.  If you see an error about the
256 package-index entries not being PGP signed, you can safely
257 ignore this because PGP has not been integrated into the XEmacs
258 package tools yet.
259
260 The visual package browser will then display a list of all packages.
261 Help information will be displayed at the very bottom of the buffer; you
262 may have to scroll down to see it.  You can also press @kbd{?} to get
263 the same help.  From this buffer, you can tell the package status by the
264 character in the first column:
265
266 @table @kbd
267 @item -
268 The package has not been installed.
269 @item *
270 The package has been installed, but a newer version is available.  The
271 current version is out-of-date.
272 @item +
273 The package has been marked for installation/update.
274 @end table
275
276 If there is no character in the first column, the package has been
277 installed and is up to date.
278
279 From here, you can select or unselect packages for installation using
280 the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
281 the (Popup) Menu.
282 Once you've finished selecting the packages, you can
283 press the @kbd{x} key (or use the menu) to actually install the
284 packages. Note that you will have to restart XEmacs for XEmacs to
285 recognize any new packages.
286
287 Key summary:
288
289 @table @kbd
290 @item ?
291 Display simple help.
292 @item @key{RET}
293 @itemx @key{Mouse-2}
294 Toggle between selecting and unselecting a package for installation.
295 @item x
296 Install selected packages.
297 @item @key{SPC}
298 View, in the minibuffer, additional information about the package, such
299 as the package date (not the build date) and the package author.  Moving 
300 the mouse over a package name will also do the same thing.
301 @item v
302 Toggle between verbose and non-verbose package display.
303 @item g
304 Refresh the package display.
305 @item q
306 Kill the package buffer.
307 @end table
308
309 Moving the mouse over a package will also cause additional information
310 about the package to be displayed in the minibuffer.
311
312
313 @item
314 Choose the packages you wish to install.
315 mouse: Click button 2 on the package name.
316  keyb: @kbd{RET} on the package name
317
318 @item
319 Make sure you have everything you need.
320 menu: Packages -> Add Required
321 keyb: @kbd{r}
322
323 XEmacs will now search for packages that are required by the
324 ones that you have chosen to install and offer to select
325 those packages also.
326
327 For novices and gurus alike, this step can save your bacon.
328 It's easy to forget to install a critical package.
329
330 @item
331 Download and install the packages.
332 menu: Packages -> Install/Remove Selected
333 keyb: @kbd{x}
334 @end enumerate
335
336 You can also install packages using a semi-manual interface:
337
338 @example
339 M-x package-get-all <return>
340 @end example
341
342 Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
343 will search for the latest version and install it and any packages that
344 it depends upon.
345
346 @node Which Packages, Removing Packages, Automatically, Installing Packages
347 @comment  node-name,  next,  previous,  up
348 @cindex which packages
349 @cindex choosing packages
350 @heading Which Packages to Install:
351 This is difficult to say. When in doubt install a package. If you
352 administrate a big site it might be a good idea to just install
353 everything. A good minimal set of packages for XEmacs-latin1 would be
354
355 xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
356 edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
357 text-modes, time
358
359 If you are using the XEmacs package tools, don't forget to do:
360
361         Packages -> Add Required
362
363 To make sure you have everything that the packages you have chosen to
364 install need.
365
366 See also @ref{Available Packages} for further descriptions of the individual
367 packages.
368
369 @node Removing Packages, ,Which Packages, Installing Packages
370 @comment  node-name,  next,  previous,  up
371 @cindex removing packages
372 @cindex deleting packages
373 @heading Removing Packages:
374 Because the exact files and their locations contained in a package may
375 change it is recommended to remove a package first before installing a
376 new version. In order to facilitate removal each package contains an
377 @file{pgkinfo/MANIFEST.pkgname} file which list all the files belonging
378 to the package. 
379
380 No need to panic, you don't have to go through the
381 @file{pkinfo/MANIFEST.pkgname} and manually delete the files.  Instead, use
382 @code{M-x package-get-delete-package RET}.
383
384 Note that the interactive package tools included with XEmacs already do
385 this for you.
386
387 @node Building Packages, Local.rules File, Installing Packages, Packages
388 @comment  node-name,  next,  previous,  up
389 @cindex building packages
390 @cindex package building
391 @heading Building Packages:
392 Currently, source packages are only available via anonymous CVS.  See
393 @url{http://cvs.xemacs.org/} for details of checking out the
394 @file{xemacs-packages} module.
395
396 @subsection Prerequisites for Building Source Packages
397
398 @table @code
399 @item GNU cp
400 @item GNU install 
401 (or a BSD compatible install program).
402 @item GNU make 
403 (3.75 or later preferred).
404 @item makeinfo 
405 (1.68 from texinfo-3.11 or later required).
406 @item GNU tar
407 (or equivalent).
408 @item GNU gzip
409 (or equivalent).
410 @item A properly configured @file{Local.rules} file.
411 @ref{Local.rules File}.
412 @end table
413 And of course, XEmacs 21.0 or higher.
414
415 @subsection What You Can Do With Source Packages
416
417 The packages CVS sources are most useful for creating XEmacs package
418 tarballs for installation into your own XEmacs installations or for
419 distributing to others.
420
421 Supported operations from @file{make} are:
422
423 @table @code
424 @item all
425 Bytecompile all files, build and bytecompile byproduct files like
426 @file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
427 of TeXinfo documentation if present.
428
429 @item bindist
430 Does a @code{make all} as well as create a binary package tarball in the
431 staging directory.
432
433 @item install
434 Bytecompile all files, build and bytecompile byproduct files like
435 @file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
436 of TeXinfo documentation if present.  And install everything into the
437 staging directory.
438
439 @item srckit
440 Usually aliased to @code{srckit-std}.  This does a @code{make
441 distclean} and creates a package source tarball in the staging
442 directory.  This is generally only of use for package maintainers.
443
444 @item binkit
445 May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
446 @code{binkit-sourcedata}, or
447 @code{binkit-sourcedatainfo}. @code{sourceonly} indicates there is
448 nothing to install in a data directory or info directory.
449 @code{sourceinfo} indicates that source and info files are to be
450 installed.  @code{sourcedata} indicates that source and etc (data) files
451 are to be installed.  @code{sourcedatainfo} indicates source, etc
452 (data), and info files are to be installed.  A few packages have needs
453 beyond the basic templates so this is not yet complete.
454
455 @item dist
456 Runs the rules @code{srckit} followed by @code{binkit}.  This is
457 primarily of use by XEmacs maintainers producing files for distribution.
458
459 @item clean
460 Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
461
462 @item distclean
463 Remove all created files.
464 @end table
465
466 @node Local.rules File, Creating Packages, Building Packages, Packages
467 @comment  node-name,  next,  previous,  up
468 @cindex local.rules
469 @heading The Local.rules File:
470 This file is used when building and installing packages from source.  In
471 the top level of the CVS module, @file{xemacs-packages}, contains the
472 file, @file{Local.rules.template}.  Simply copy that to
473 @file{Local.rules} and edit it to suit your needs.
474
475 These are the variables in 'Local.rules' that you will need to
476 address. 
477
478 @table @var
479 @item symlink = 
480 Set this to 't' if you want to do a "run in place".
481 Setting this doesn't work well with 'make bindist'
482
483 @item XEMACS_PACKAGES =
484 This is where you set the normal packages that you
485 want to install. eg:
486 @example
487       XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
488 @end example
489
490 @item XEMACS_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Packages
491 Set this to where you want normal packages to be
492 installed to.
493
494 @item PACKAGE_INDEX = package-index
495 If you want the package-index file to have a different
496 name, change this.
497
498 @item BUILD_WITHOUT_MULE =
499 Building from CVS defaults to building the Mule
500 packages.  Set this to 't' if you don't want/have Mule
501
502 @item MULE_PACKAGES =
503 Same as for 'XEMACS_PACKAGES' except you list the Mule
504 packages you want to install here. eg:
505 @example
506       MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
507 @end example
508
509 @item MULE_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Mule-Packages
510 Set this to where you want Mule packages installed
511 to.  Note:  'make bindist' does not use this variable.
512
513 @item XEMACS = xemacs
514 If your XEmacs isn't in your path, change this.
515
516 @item XEMACS_NATIVE_NT =
517 Set this to 't' if you are building on WinNT.
518
519 @item INSTALL = install -c
520 The path to your BSD compatible install program.
521
522 @item TAR = tar
523 The path to your tar program
524
525 @item BZIP2 =
526 If you want bzip2 tarballs, set this.
527
528 @item MAKEINFO = makeinfo
529 The path to your makeinfo program
530 @end table
531
532
533 @node Creating Packages, Available Packages, Local.rules File, Packages
534 @comment  node-name,  next,  previous,  up
535 @cindex creating packages
536 @heading Creating Packages:
537 Creating a package from an existing Lisp library is not very difficult.
538
539 In addition to the Lisp libraries themselves, you need a
540 @file{package-info.in} file and a simple @file{Makefile}.  The rest is
541 done by @file{XEmacs.rules}, part of the packaging system
542 infrastructure.
543
544 @file{package-info.in} contains a single Lisp form like this:
545
546 @example
547 (name                               ; your package's name
548   (standards-version 1.1
549    version VERSION
550    author-version AUTHOR_VERSION
551    date DATE
552    build-date BUILD_DATE
553    maintainer MAINTAINER
554    distribution xemacs              ; change to "mule" if MULE is needed
555    priority high
556    category CATEGORY
557    dump nil
558    description "description"        ; a one-line description string
559    filename FILENAME
560    md5sum MD5SUM
561    size SIZE
562    provides (feature1 feature2)     ; one for every `provides' form
563    requires (REQUIRES)
564    type regular
565 ))
566 @end example
567
568 You must fill in the four commented lines.  The value of @code{name} is
569 the name of your package as an unquoted symbol.  Normally it is the name
570 of the main Lisp file or principal feature provided.  The allowed values
571 for distribution are @code{xemacs} and @code{mule}.  Write them as
572 unquoted symbols.  The @code{description} is a quoted Lisp string; use
573 the usual conventions.  The value for @code{provides} is a list of
574 feature symbols (written unquoted).  All of the features provided by
575 libraries in your package should be elements of this list.  Implementing
576 an automatic method for generating the @file{provides} line is
577 desirable, but as yet undone.
578
579 The variables in upper-case are references to variables set in the
580 @file{Makefile} or automatically generated.  Do not change them; they
581 are automatically filled in by the build process.
582
583 The remaining lines refer to implementation constants
584 (@code{standards-version}), or features that are unimplemented or have
585 been removed (@code{priority} and @code{dump}).  The @code{type} line is
586 not normally relevant to external maintainers; the alternate value is
587 @code{single-file}, which refers to packages consed up out of a number
588 of single-file libraries that are more or less thematically related.  An
589 example is @code{prog-modes}.  Single-file packages are basically for
590 administrative convenience, and new packages should generally be created
591 as regular packages.
592
593 The @file{Makefile} is quite stylized.  The idea is similar to an
594 @file{Imakefile} or an @code{automake} file: the complexity is hidden in
595 generic rules files, in this case the @file{XEmacs.rules} include file
596 in the top directory of the packages hierarchy.  Although a number of
597 facilities are available for complex libraries, most simple packages'
598 @file{Makefile}s contain a copyright notice, a few variable definitions,
599 an include for @file{XEmacs.rules}, and a couple of standard targets.
600
601 The first few @code{make} variables defined are @code{VERSION},
602 @code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE},
603 @code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
604 described in the description of @file{package-info.in}.  The last is an
605 administrative grouping.  Current categories include @code{standard},
606 and @code{mule}.
607
608 Next, define the variable @code{ELCS}.  This contains the list of the
609 byte-compiled Lisp files used by the package.  These files and their
610 @file{.el} versions will be included in the binary package.  If there
611 are other files (such as extra Lisp sources or an upstream
612 @file{Makefile}) that are normally placed in the installed Lisp
613 directory, but not byte-compiled, they can be listed as the value of
614 @code{EXTRA_SOURCES}.
615
616 The include is simply
617 @example
618 include ../../XEmacs.rules
619 @end example
620
621 The standard targets follow.  These are
622
623 @example
624 all:: $(ELCS) auto-autoloads.elc
625
626 srckit: srckit-alias
627
628 binkit: binkit-alias
629 @end example
630
631 Other targets (such as Texinfo sources) may need to be added as
632 dependencies for the @code{all} target.  Dependencies for @code{srckit}
633 and @code{binkit} (that is, values for @var{srckit-alias} and
634 @var{binkit-alias}) are defined in @file{XEmacs.rules}.  The most useful
635 of these values are given in the following table.
636
637 @table @var
638 @item srckit-alias
639 Usually set to @code{srckit-std}.
640
641 @item binkit-alias
642 May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
643 @code{binkit-sourcedata}, or
644 @code{binkit-sourcedatainfo}.  @code{sourceonly} indicates there is
645 nothing to install in a data directory or info directory.
646 @code{sourceinfo} indicates that source and info files are to be
647 installed.  @code{sourcedata} indicates that source and etc (data) files
648 are to be installed.  @code{sourcedatainfo} indicates source, etc
649 (data), and info files are to be installed.
650 @end table
651
652 Data files include things like pixmaps for a package-specific toolbar,
653 and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
654 packages have needs beyond the basic templates.  See @file{XEmacs.rules}
655 or a future revision of this manual for details.
656
657 @node Available Packages,  , Creating Packages, Packages
658 @comment  node-name,  next,  previous,  up
659 @cindex available packages
660 @cindex packages
661 @heading Available Packages:
662 This section lists the Lisp packages that are currently available from
663 xemacs.org and it's mirrors.  If a particular package that you are
664 looking for isn't here, please send a message to the
665 @email{xemacs-beta@@xemacs.org, XEmacs Beta list}.
666
667 This data is up to date as of September 22, 2002.
668
669 @subsection Normal Packages
670 A very broad selection of elisp packages.
671
672 @table @file
673 @item Sun
674 Support for Sparcworks.
675
676 @item ada
677 Ada language support.
678
679 @item apel
680 A Portable Emacs Library.  Used by XEmacs MIME support.
681
682 @item auctex
683 Basic TeX/LaTeX support.
684
685 @item bbdb
686 The Big Brother Data Base: a rolodex-like database program.
687
688 @item build
689 Build XEmacs using custom widgets.
690
691 @item c-support
692 Basic single-file add-ons for editing C code.
693
694 @item calc
695 Emacs calculator.
696
697 @item calendar
698 Calendar and diary support.
699
700 @item cc-mode
701 C, C++ and Java language support.
702
703 @item clearcase
704 Support for the Clearcase version control system.
705
706 @item cookie
707 "Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
708 and Yow (Zippy quotes).
709
710 @item crisp
711 Crisp/Brief emulation.
712
713 @item debug
714 GUD, gdb, dbx debugging support.
715
716 @item dictionary
717 Interface to RFC2229 dictionary servers.
718
719 @item dired
720 The DIRectory EDitor is for manipulating, and running commands on
721 files in a directory.
722
723 @item docbookide
724 DocBook editing support.
725
726 @item ecrypto
727 Crypto functionality in Emacs Lisp.
728
729 @item edebug
730 A Lisp debugger.
731
732 @item ediff
733 Interface over patch.
734
735 @item edit-utils
736 Single file lisp packages for various XEmacs goodies.  Load this and
737 weed out the junk you don't want.
738
739 @item edt
740 DEC EDIT/EDT emulation.
741
742 @item efs
743 Treat files on remote systems the same as local files.
744
745 @item eieio
746 Enhanced Implementation of Emacs Interpreted Objects.
747
748 @item elib
749 Portable Emacs Lisp utilities library.
750
751 @item emerge
752 Another interface over patch.
753
754 @item eshell
755 Command shell implemented entirely in Emacs Lisp.
756
757 @item ess
758 ESS: Emacs Speaks Statistics.
759
760 @item eterm
761 Terminal emulator.
762
763 @item eudc
764 Emacs Unified Directory Client (LDAP, PH).
765
766 @item footnote
767 Footnoting in mail message editing modes.
768
769 @item forms
770 Forms editing support (obsolete, use the built-in Widget instead).
771
772 @item fortran-modes
773 Fortran language support.
774
775 @item frame-icon
776 Provide a WM icon based on major mode.
777
778 @item fsf-compat
779 GNU Emacs compatibility files.
780
781 @item games
782 Tetris, Sokoban, and Snake.
783
784 @item gnats
785 XEmacs bug reports.
786
787 @item gnus
788 The Gnus Newsreader and Mailreader.
789
790 @item haskell-mode
791 Haskell language support.
792
793 @item hm--html-menus
794 HTML editing.
795
796 @item ibuffer
797 Advanced replacement for buffer-menu.
798
799 @item idlwave
800 Editing and Shell mode for the Interactive Data Language.
801
802 @item igrep
803 Enhanced front-end for Grep.
804
805 @item ilisp
806 Front-end for interacting with Inferior Lisp (external lisps).
807
808 @item ispell
809 Spell-checking with ispell.
810
811 @item jde
812 Java language and development support.
813
814 @item liece
815 IRC (Internet Relay Chat) client for Emacs.
816
817 @item mail-lib
818 Fundamental lisp files for providing email support.
819
820 @item mailcrypt
821 Support for messaging encryption with PGP.
822
823 @item mew
824 Messaging in an Emacs World; a MIME-based email program.
825
826 @item mh-e
827 Front end support for MH.
828
829 @item mine
830 Elisp implementation of the game 'Minehunt'.
831
832 @item misc-games
833 Other amusements and diversions.
834
835 @item mmm-mode
836 Support for Multiple Major Modes within a single buffer.
837
838 @item net-utils
839 Miscellaneous Networking Utilities.  This is a single-file package and 
840 files may be deleted at will.
841
842 @item os-utils
843 Miscellaneous single-file O/S utilities, for printing, archiving,
844 compression, remote shells, etc.
845
846 @item ocaml
847 Objective Caml language support.
848
849 @item pc
850 PC style interface emulation.
851
852 @item pcl-cvs
853 CVS frontend.
854
855 @item pcomplete
856 Provides programmatic completion.
857
858 @item perl-modes
859 Perl language support.
860
861 @item prog-modes
862 Miscellaneous single-file lisp files for various programming languages.
863
864 @item ps-print
865 Print buffers to PostScript printers.
866
867 @item psgml
868 Validated HTML/SGML editing.
869
870 @item psgml-dtds
871 A collection of DTDs for psgml.  Note that this package is deprecated
872 and will be removed in the future, most likely Q2/2003.  Instead of using
873 this, you should install needed DTDs yourself.
874
875 @item python-modes
876 Python language support.
877
878 @item reftex
879 Emacs support for LaTeX cross-references, citations.
880
881 @item rmail
882 An obsolete Emacs mailer.  If you do not already use it don't start.
883
884 @item ruby-modes
885 Ruby language support.
886
887 @item sasl
888 Simple Authentication and Security Layer (SASL) library.
889
890 @item scheme
891 Front-end support for Inferior Scheme.
892
893 @item semantic
894 Semantic bovinator.
895
896 @item sgml
897 SGML/Linuxdoc-SGML editing.
898
899 @item sh-script
900 Support for editing shell scripts.
901
902 @item sieve
903 Manage Sieve email filtering scripts.
904
905 @item slider
906 User interface tool.
907
908 @item sml-mode
909 Standard ML editing support.
910
911 @item sounds-au
912 XEmacs Sun sound files.
913
914 @item sounds-wav
915 XEmacs Microsoft sound files.
916
917 @item speedbar
918 Provides a separate frame with convenient references.
919
920 @item strokes
921 Mouse enhancement utility.
922
923 @item supercite
924 An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
925
926 @item texinfo
927 XEmacs TeXinfo support.
928
929 @item text-modes
930 Various single file lisp packages for editing text files.
931
932 @item textools
933 Single-file TeX support.
934
935 @item time
936 Display time & date on the modeline.
937
938 @item tm
939 Emacs MIME support. Not needed for Gnus >= 5.8.0
940
941 @item tooltalk
942 Support for building with Tooltalk.
943
944 @item tpu
945 DEC EDIT/TPU support.
946
947 @item tramp
948 Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
949 but works with rsh/ssh and rcp/scp.
950
951 @item vc
952 Version Control for Free systems.
953
954 @item vc-cc
955 Version Control for ClearCase.  This package will shortly be
956 replaced with clearcase.el
957
958 @item vhdl
959 Support for VHDL.
960
961 @item view-process
962 A Unix process browsing tool.
963
964 @item viper
965 VI emulation support.
966
967 @item vm
968 An Emacs mailer.
969
970 @item w3
971 A Web browser.
972
973 @item xemacs-base
974 Fundamental XEmacs support.  Install this unless you wish a totally
975 naked XEmacs.
976
977 @item xemacs-devel
978 XEmacs Lisp developer support.  This package contains utilities for
979 supporting Lisp development.  It is a single-file package so it may be 
980 tailored.
981
982 @item xslide
983 XSL editing support.
984
985 @item xslt-process
986 A minor mode for (X)Emacs which allows running an XSLT processor on a
987 buffer.
988
989 @item zenirc
990 ZENIRC IRC Client.
991 @end table
992
993 @subsection Mule Support (mule)
994
995 MULti-lingual Enhancement.  Support for world scripts such as
996 Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
997 To use these packages your XEmacs must be compiled with Mule
998 support.
999
1000 @table @file
1001 @item edict
1002 Lisp Interface to EDICT, Kanji Dictionary.
1003
1004 @item egg-its
1005 Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
1006 XEmacs build.
1007
1008 @item latin-unity
1009 Unify character sets in a buffer. When characters belong to disjoint
1010 character sets, this attempts to translate the characters so
1011 that they belong to one character set. If the buffer coding system is
1012 not sufficient, this suggests different coding systems.
1013
1014 @item leim
1015 Quail.  Used for everything other than English and Japanese.
1016
1017 @item locale
1018 Used for localized menubars (French and Japanese) and localized splash
1019 screens (Japanese).
1020
1021 @item lookup
1022 Dictionary support. (This isn't an English dictionary program)
1023
1024 @item mule-base
1025 Basic Mule support.  Must be installed prior to building with Mule.
1026
1027 @item mule-ucs
1028 Extended coding systems (including Unicode) for XEmacs.
1029
1030 @item skk
1031 Another Japanese Language Input Method.  Can be used without a
1032 separate process running as a dictionary server.
1033 @end table
1034