21.4.14 "Reasonable Discussion".
[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{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. Items that have default settings have those defaults shown. 
477
478 @table @var
479 @item XEMACS = xemacs
480 If your XEmacs isn't in your path, change this.  Native MS Windows users
481 should double quote this if the path has embedded spaces.
482
483 @item BUILD_WITHOUT_MULE =
484 Building from CVS defaults to building the Mule
485 packages.  Set this to 't' if you don't want/have Mule
486
487 @item XEMACS_NATIVE_NT =
488 Set this to 't' if you are building on WinNT.  NT users should note that
489 you still need the Cygwin environment to build the packages.
490
491 @item XEMACS_INSTALLED_PACKAGES_ROOT = /usr/local/lib/xemacs
492 This is the directory tree under which the installed packages go.  Under
493 this directory there would normally be @file{xemacs-packages/} for
494 standard (non-Mule) packages, @file{mule-packages/} for Mule packages
495 (if you built XEmacs with Mule), and possibly @file{site-packages/} for
496 3rd party packages that aren't distributed by XEmacs.org.
497
498 @item symlink = 
499 Set this to 't' if you want to do a "run in place".
500 Setting this doesn't work well with 'make bindist'
501
502 @item NONMULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages
503 This is where the non-Mule packages are installed to.  You probably
504 don't want to change this.
505
506 @item MULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages
507 This is where the Mule packages are installed to.  You probably don't
508 want to change this.  Please note that @code{make bindist} does
509 @emph{not} use this variable.  When doing a @code{make bindist}
510 @emph{everything} goes into @var{NONMULE_INSTALLED_PACKAGES_ROOT}.
511
512 @item NONMULE_PACKAGES = xemacs-packages
513 This is where you set the non-Mule packages that you want to install. eg:
514 @example
515       XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
516 @end example
517
518 @item MULE_PACKAGES = mule-packages
519 Same as for 'XEMACS_PACKAGES' except you list the Mule
520 packages you want to install here. eg:
521 @example
522       MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
523 @end example
524
525 @item PACKAGE_INDEX = package-index
526 If you want the package-index file to have a different
527 name, change this.
528
529 @item INSTALL = install -c
530 The path to your BSD compatible install program.
531
532 @item TAR = tar
533 The path to your tar program
534
535 @item BZIP2 =
536 If you want bzip2 tarballs, set this.
537
538 @item MAKEINFO = makeinfo
539 The path to your makeinfo program
540 @end table
541
542
543 @node Creating Packages, Available Packages, Local.rules File, Packages
544 @comment  node-name,  next,  previous,  up
545 @cindex creating packages
546 @heading Creating Packages:
547 Creating a package from an existing Lisp library is not very difficult.
548
549 In addition to the Lisp libraries themselves, you need a
550 @file{package-info.in} file and a simple @file{Makefile}.  The rest is
551 done by @file{XEmacs.rules}, part of the packaging system
552 infrastructure.
553
554 @file{package-info.in} contains a single Lisp form like this:
555
556 @example
557 (name                               ; your package's name
558   (standards-version 1.1
559    version VERSION
560    author-version AUTHOR_VERSION
561    date DATE
562    build-date BUILD_DATE
563    maintainer MAINTAINER
564    distribution xemacs              ; change to "mule" if MULE is needed
565    priority high
566    category CATEGORY
567    dump nil
568    description "DESCRIPTION"        ; one-line period-terminated string
569    filename FILENAME
570    md5sum MD5SUM
571    size SIZE
572    provides (feature1 feature2)     ; one for every `provides' form
573    requires (REQUIRES)
574    type regular
575 ))
576 @end example
577
578 You must fill in the four commented lines.  The value of @code{name} is
579 the name of your package as an unquoted symbol.  Normally it is the name
580 of the main Lisp file or principal feature provided.  The allowed values
581 for distribution are @code{xemacs} and @code{mule}.  Write them as
582 unquoted symbols.  The @code{description} is a quoted Lisp string; use
583 the usual conventions.  The first letter should be capitalized, and the
584 string should end in a period.  It need not be a complete sentence
585 grammatically.  The value for @code{provides} is a list of feature
586 symbols (written unquoted).  All of the features provided by libraries
587 in your package should be elements of this list.  Implementing an
588 automatic method for generating the @file{provides} line is desirable,
589 but as yet undone.
590
591 The variables in upper-case are references to variables set in the
592 @file{Makefile} or automatically generated.  Do not change them; they
593 are automatically filled in by the build process.
594
595 The remaining lines refer to implementation constants
596 (@code{standards-version}), or features that are unimplemented or have
597 been removed (@code{priority} and @code{dump}).  The @code{type} line is
598 not normally relevant to external maintainers; the alternate value is
599 @code{single-file}, which refers to packages consed up out of a number
600 of single-file libraries that are more or less thematically related.  An
601 example is @code{prog-modes}.  Single-file packages are basically for
602 administrative convenience, and new packages should generally be created
603 as regular packages.
604
605 The @file{Makefile} is quite stylized.  The idea is similar to an
606 @file{Imakefile} or an @code{automake} file: the complexity is hidden in
607 generic rules files, in this case the @file{XEmacs.rules} include file
608 in the top directory of the packages hierarchy.  Although a number of
609 facilities are available for complex libraries, most simple packages'
610 @file{Makefile}s contain a copyright notice, a few variable definitions,
611 an include for @file{XEmacs.rules}, and a couple of standard targets.
612
613 The first few @code{make} variables defined are @code{VERSION},
614 @code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE},
615 @code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
616 described in the description of @file{package-info.in}.  The last is an
617 administrative grouping.  Current categories include @code{standard},
618 and @code{mule}.
619
620 Next, define the variable @code{ELCS}.  This contains the list of the
621 byte-compiled Lisp files used by the package.  These files and their
622 @file{.el} versions will be included in the binary package.  If there
623 are other files (such as extra Lisp sources or an upstream
624 @file{Makefile}) that are normally placed in the installed Lisp
625 directory, but not byte-compiled, they can be listed as the value of
626 @code{EXTRA_SOURCES}.
627
628 The include is simply
629 @example
630 include ../../XEmacs.rules
631 @end example
632
633 The standard targets follow.  These are
634
635 @example
636 all:: $(ELCS) auto-autoloads.elc
637
638 srckit: srckit-alias
639
640 binkit: binkit-alias
641 @end example
642
643 Other targets (such as Texinfo sources) may need to be added as
644 dependencies for the @code{all} target.  Dependencies for @code{srckit}
645 and @code{binkit} (that is, values for @var{srckit-alias} and
646 @var{binkit-alias}) are defined in @file{XEmacs.rules}.  The most useful
647 of these values are given in the following table.
648
649 @table @var
650 @item srckit-alias
651 Usually set to @code{srckit-std}.
652
653 @item binkit-alias
654 May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
655 @code{binkit-sourcedata}, or
656 @code{binkit-sourcedatainfo}.  @code{sourceonly} indicates there is
657 nothing to install in a data directory or info directory.
658 @code{sourceinfo} indicates that source and info files are to be
659 installed.  @code{sourcedata} indicates that source and etc (data) files
660 are to be installed.  @code{sourcedatainfo} indicates source, etc
661 (data), and info files are to be installed.
662 @end table
663
664 Data files include things like pixmaps for a package-specific toolbar,
665 and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
666 packages have needs beyond the basic templates.  See @file{XEmacs.rules}
667 or a future revision of this manual for details.
668
669 @node Available Packages,  , Creating Packages, Packages
670 @comment  node-name,  next,  previous,  up
671 @cindex available packages
672 @cindex packages
673 @heading Available Packages:
674 This section lists the Lisp packages that are currently available from
675 xemacs.org and it's mirrors.  If a particular package that you are
676 looking for isn't here, please send a message to the
677 @email{xemacs-beta@@xemacs.org, XEmacs Beta list}.
678
679 This data is up to date as of September 22, 2002.
680
681 @subsection Normal Packages
682 A very broad selection of elisp packages.
683
684 @table @file
685 @item Sun
686 Support for Sparcworks.
687
688 @item ada
689 Ada language support.
690
691 @item apel
692 A Portable Emacs Library.  Used by XEmacs MIME support.
693
694 @item auctex
695 Basic TeX/LaTeX support.
696
697 @item bbdb
698 The Big Brother Data Base: a rolodex-like database program.
699
700 @item build
701 Build XEmacs using custom widgets.
702
703 @item c-support
704 Basic single-file add-ons for editing C code.
705
706 @item calc
707 Emacs calculator.
708
709 @item calendar
710 Calendar and diary support.
711
712 @item cc-mode
713 C, C++ and Java language support.
714
715 @item clearcase
716 Support for the Clearcase version control system.
717
718 @item cookie
719 "Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
720 and Yow (Zippy quotes).
721
722 @item crisp
723 Crisp/Brief emulation.
724
725 @item debug
726 GUD, gdb, dbx debugging support.
727
728 @item dictionary
729 Interface to RFC2229 dictionary servers.
730
731 @item dired
732 The DIRectory EDitor is for manipulating, and running commands on
733 files in a directory.
734
735 @item docbookide
736 DocBook editing support.
737
738 @item ecrypto
739 Crypto functionality in Emacs Lisp.
740
741 @item edebug
742 A Lisp debugger.
743
744 @item ediff
745 Interface over patch.
746
747 @item edit-utils
748 Single file lisp packages for various XEmacs goodies.  Load this and
749 weed out the junk you don't want.
750
751 @item edt
752 DEC EDIT/EDT emulation.
753
754 @item efs
755 Treat files on remote systems the same as local files.
756
757 @item eieio
758 Enhanced Implementation of Emacs Interpreted Objects.
759
760 @item elib
761 Portable Emacs Lisp utilities library.
762
763 @item emerge
764 Another interface over patch.
765
766 @item eshell
767 Command shell implemented entirely in Emacs Lisp.
768
769 @item ess
770 ESS: Emacs Speaks Statistics.
771
772 @item eterm
773 Terminal emulator.
774
775 @item eudc
776 Emacs Unified Directory Client (LDAP, PH).
777
778 @item footnote
779 Footnoting in mail message editing modes.
780
781 @item forms
782 Forms editing support (obsolete, use the built-in Widget instead).
783
784 @item fortran-modes
785 Fortran language support.
786
787 @item frame-icon
788 Provide a WM icon based on major mode.
789
790 @item fsf-compat
791 GNU Emacs compatibility files.
792
793 @item games
794 Tetris, Sokoban, and Snake.
795
796 @item gnats
797 XEmacs bug reports.
798
799 @item gnus
800 The Gnus Newsreader and Mailreader.
801
802 @item haskell-mode
803 Haskell language support.
804
805 @item hm--html-menus
806 HTML editing.
807
808 @item ibuffer
809 Advanced replacement for buffer-menu.
810
811 @item idlwave
812 Editing and Shell mode for the Interactive Data Language.
813
814 @item igrep
815 Enhanced front-end for Grep.
816
817 @item ilisp
818 Front-end for interacting with Inferior Lisp (external lisps).
819
820 @item ispell
821 Spell-checking with ispell.
822
823 @item jde
824 Java language and development support.
825
826 @item liece
827 IRC (Internet Relay Chat) client for Emacs.
828
829 @item mail-lib
830 Fundamental lisp files for providing email support.
831
832 @item mailcrypt
833 Support for messaging encryption with PGP.
834
835 @item mew
836 Messaging in an Emacs World; a MIME-based email program.
837
838 @item mh-e
839 Front end support for MH.
840
841 @item mine
842 Elisp implementation of the game 'Minehunt'.
843
844 @item misc-games
845 Other amusements and diversions.
846
847 @item mmm-mode
848 Support for Multiple Major Modes within a single buffer.
849
850 @item net-utils
851 Miscellaneous Networking Utilities.  This is a single-file package and 
852 files may be deleted at will.
853
854 @item os-utils
855 Miscellaneous single-file O/S utilities, for printing, archiving,
856 compression, remote shells, etc.
857
858 @item ocaml
859 Objective Caml language support.
860
861 @item pc
862 PC style interface emulation.
863
864 @item pcl-cvs
865 CVS frontend.
866
867 @item pcomplete
868 Provides programmatic completion.
869
870 @item perl-modes
871 Perl language support.
872
873 @item prog-modes
874 Miscellaneous single-file lisp files for various programming languages.
875
876 @item ps-print
877 Print buffers to PostScript printers.
878
879 @item psgml
880 Validated HTML/SGML editing.
881
882 @item psgml-dtds
883 A collection of DTDs for psgml.  Note that this package is deprecated
884 and will be removed in the future, most likely Q2/2003.  Instead of using
885 this, you should install needed DTDs yourself.
886
887 @item python-modes
888 Python language support.
889
890 @item reftex
891 Emacs support for LaTeX cross-references, citations.
892
893 @item rmail
894 An obsolete Emacs mailer.  If you do not already use it don't start.
895
896 @item ruby-modes
897 Ruby language support.
898
899 @item sasl
900 Simple Authentication and Security Layer (SASL) library.
901
902 @item scheme
903 Front-end support for Inferior Scheme.
904
905 @item semantic
906 Semantic bovinator.
907
908 @item sgml
909 SGML/Linuxdoc-SGML editing.
910
911 @item sh-script
912 Support for editing shell scripts.
913
914 @item sieve
915 Manage Sieve email filtering scripts.
916
917 @item slider
918 User interface tool.
919
920 @item sml-mode
921 Standard ML editing support.
922
923 @item sounds-au
924 XEmacs Sun sound files.
925
926 @item sounds-wav
927 XEmacs Microsoft sound files.
928
929 @item speedbar
930 Provides a separate frame with convenient references.
931
932 @item strokes
933 Mouse enhancement utility.
934
935 @item supercite
936 An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
937
938 @item texinfo
939 XEmacs TeXinfo support.
940
941 @item text-modes
942 Various single file lisp packages for editing text files.
943
944 @item textools
945 Single-file TeX support.
946
947 @item time
948 Display time & date on the modeline.
949
950 @item tm
951 Emacs MIME support. Not needed for Gnus >= 5.8.0
952
953 @item tooltalk
954 Support for building with Tooltalk.
955
956 @item tpu
957 DEC EDIT/TPU support.
958
959 @item tramp
960 Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
961 but works with rsh/ssh and rcp/scp.
962
963 @item vc
964 Version Control for Free systems.
965
966 @item vc-cc
967 Version Control for ClearCase.  This package will shortly be
968 replaced with clearcase.el
969
970 @item vhdl
971 Support for VHDL.
972
973 @item view-process
974 A Unix process browsing tool.
975
976 @item viper
977 VI emulation support.
978
979 @item vm
980 An Emacs mailer.
981
982 @item w3
983 A Web browser.
984
985 @item xemacs-base
986 Fundamental XEmacs support.  Install this unless you wish a totally
987 naked XEmacs.
988
989 @item xemacs-devel
990 XEmacs Lisp developer support.  This package contains utilities for
991 supporting Lisp development.  It is a single-file package so it may be 
992 tailored.
993
994 @item xslide
995 XSL editing support.
996
997 @item xslt-process
998 A minor mode for (X)Emacs which allows running an XSLT processor on a
999 buffer.
1000
1001 @item zenirc
1002 ZENIRC IRC Client.
1003 @end table
1004
1005 @subsection Mule Support (mule)
1006
1007 MULti-lingual Enhancement.  Support for world scripts such as
1008 Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
1009 To use these packages your XEmacs must be compiled with Mule
1010 support.
1011
1012 @table @file
1013 @item edict
1014 Lisp Interface to EDICT, Kanji Dictionary.
1015
1016 @item egg-its
1017 Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
1018 XEmacs build.
1019
1020 @item latin-unity
1021 Unify character sets in a buffer. When characters belong to disjoint
1022 character sets, this attempts to translate the characters so
1023 that they belong to one character set. If the buffer coding system is
1024 not sufficient, this suggests different coding systems.
1025
1026 @item leim
1027 Quail.  Used for everything other than English and Japanese.
1028
1029 @item locale
1030 Used for localized menubars (French and Japanese) and localized splash
1031 screens (Japanese).
1032
1033 @item lookup
1034 Dictionary support. (This isn't an English dictionary program)
1035
1036 @item mule-base
1037 Basic Mule support.  Must be installed prior to building with Mule.
1038
1039 @item mule-ucs
1040 Extended coding systems (including Unicode) for XEmacs.
1041
1042 @item skk
1043 Another Japanese Language Input Method.  Can be used without a
1044 separate process running as a dictionary server.
1045 @end table
1046