changeset 83284:360860a0006f

Merged from miles@gnu.org--gnu-2005 (patch 45-55, 214-231) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-214 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-215 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-216 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-217 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-218 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-219 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-220 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-221 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-222 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-223 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-224 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-225 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-226 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-227 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-228 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-229 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-230 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-231 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-45 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-46 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-47 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-48 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-49 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-50 Update from CVS: texi Makefile.in CVS keyw cruft * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-51 Update from CVS: ChangeLog tweaks * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-52 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-53 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-54 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-55 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-324
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 04 Apr 2005 16:43:15 +0000
parents 45e5f0224d81 (current diff) 6b0915585495 (diff)
children 865f9b91fdbe
files admin/FOR-RELEASE lisp/ChangeLog lisp/emacs-lisp/eldoc.el lisp/files.el lisp/font-lock.el lisp/international/iso-acc.el lisp/international/mule-cmds.el lisp/progmodes/tcl.el lisp/simple.el lisp/smerge-mode.el lisp/startup.el lisp/url/url-handlers.el lisp/url/vc-dav.el lisp/vc-hooks.el lisp/vc.el lispref/ChangeLog man/ChangeLog src/alloc.c src/coding.c src/fileio.c src/keyboard.c src/lisp.h src/xdisp.c src/xterm.c
diffstat 174 files changed, 10245 insertions(+), 4737 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/admin/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,16 @@
+2005-03-30  Marcelo Toledo  <marcelo@marcelotoledo.org>
+
+	* FOR-RELEASE (Documentation): Added check the Emacs Tutorial. The
+        first line of every tutorial must begin with a sentence saying
+        "Emacs Tutorial" in the respective language.  This should be
+        followed by "See end for copying conditions", likewise in the
+        respective language.
+
+2005-03-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* FOR-RELEASE (TO BE DONE SHORTLY BEFORE RELEASE): New section.
+	Add `undo-ask-before-discard' to it.
+
 2005-03-02  Miles Bader  <miles@gnu.org>
 
 	* quick-install-emacs: Only use the mkdir --verbose option if the
--- a/admin/FOR-RELEASE	Mon Mar 28 04:24:51 2005 +0000
+++ b/admin/FOR-RELEASE	Mon Apr 04 16:43:15 2005 +0000
@@ -1,5 +1,10 @@
 Tasks needed before the next release.
 
+* TO BE DONE SHORTLY BEFORE RELEASE
+
+** `undo-ask-before-discard', currently set to t for debugging purposes
+has to be set to nil: when t, it can leak memory and cause other problems.
+
 * NEW FEATURES
 
 ** Face remapping.
@@ -18,6 +23,8 @@
 
 * FATAL ERRORS
 
+** Make unexec handle memory mapping policy of the latest versions of Linux.
+
 ** Investigate reported crashes in compact_small_strings.
 
 ** Investigate reported crashes related to using an
@@ -145,7 +152,7 @@
 man/buffers.texi    "Luc Teirlinck"  Chong Yidong
 man/building.texi   "Ted Zlatanov" <tzz@lifelogs.com>
 man/calendar.texi   joakim@verona.se  Chong Yidong
-man/cmdargs.texi    Chong Yidong
+man/cmdargs.texi    Chong Yidong     "Luc Teirlinck"
 man/commands.texi   "Luc Teirlinck"  Chong Yidong
 man/custom.texi     Chong Yidong
 man/dired.texi      Chong Yidong     joakim@verona.se
@@ -211,7 +218,7 @@
 lispref/functions.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/hash.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/help.texi	 "Luc Teirlinck"   Chong Yidong
-lispref/hooks.texi
+lispref/hooks.texi	 Lute Kamstra
 lispref/internals.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/intro.texi	 "Luc Teirlinck"
 lispref/keymaps.texi	 "Luc Teirlinck"   Chong Yidong
@@ -240,6 +247,42 @@
 lispref/variables.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/windows.texi     "Luc Teirlinck"   Chong Yidong
 
+** Check the Emacs Tutorial.
+
+The first line of every tutorial must begin with a sentence saying
+"Emacs Tutorial" in the respective language.  This should be followed
+by "See end for copying conditions", likewise in the respective
+language.
+
+After each file name, on the same line or the following line, come the
+names of the people who have checked it.
+
+
+SECTION                  READERS
+----------------------------------
+etc/TUTORIAL             rms
+etc/TUTORIAL.bg          Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+etc/TUTORIAL.cn
+etc/TUTORIAL.cs
+etc/TUTORIAL.de
+etc/TUTORIAL.es          Marcelo Toledo
+etc/TUTORIAL.fr
+etc/TUTORIAL.it
+etc/TUTORIAL.ja
+etc/TUTORIAL.ko
+etc/TUTORIAL.nl		 Lute Kamstra
+etc/TUTORIAL.pl
+etc/TUTORIAL.pt_BR       Marcelo Toledo
+etc/TUTORIAL.ro
+etc/TUTORIAL.ru
+etc/TUTORIAL.sk
+etc/TUTORIAL.sl
+etc/TUTORIAL.sv          Mats Lidell <matsl@contactor.se>
+etc/TUTORIAL.th
+etc/TUTORIAL.zh
+
+
+
 
 Local variables:
 mode: outline
--- a/etc/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,48 @@
+2005-04-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* TUTORIAL.ja: Update text before first period.
+	Reported by Kenichi Handa.
+
+2005-04-02  Richard M. Stallman  <rms@gnu.org>
+
+	* TUTORIAL.ja, TUTORIAL.cn, TUTORIAL.ru, TUTORIAL.zh: Remove the
+	old intro line that apparently was a longer version of "Emacs
+	tutorial".
+
+	* TUTORIAL.es: Clean up line breaks.
+
+2005-04-01  Marcelo Toledo  <marcelo@marcelotoledo.org>
+
+        * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
+        * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko,
+        * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru,
+        * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title
+        line.
+
+        * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in
+        revision 1.59, "Emacs" is not transliterated to cyrillic anymore;
+        Minor fixes; by Ognyan Kulev <ogi@fmi.uni-sofia.bg>.
+
+        * TUTORIAL.sv: Sync some other changes with the TUTORIAL version
+        1.61 in CVS by Mats Lidell <matsl@contactor.se>.
+
+2005-04-01  Lute Kamstra  <lute@gnu.org>
+
+	* TUTORIAL.nl: Fix title line.
+
+2005-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* TUTORIAL: Add title line.
+	* TUTORIAL.bg, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
+	* TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja,
+	* TUTORIAL.ko, TUTORIAL.nl, TUTORIAL.pl, TUTORIAL.pt_BR,
+	* TUTORIAL.ro, TUTORIAL.ru, TUTORIAL.sk, TUTORIAL.sl
+	* TUTORIAL.sv, TUTORIAL.th, TUTORIAL.zh: Likewise.
+
+2005-03-29  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-refcard.tex, gnus-logo.eps: New files.
+
 2005-03-23  David Ponce  <david@dponce.com>
 
 	* NEWS: Mention recentf-keep.
--- a/etc/NEWS	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/NEWS	Mon Apr 04 16:43:15 2005 +0000
@@ -107,6 +107,20 @@
 
 * Changes in Emacs 22.1
 
+** Improved Thai support.  A new minor mode `thai-word-mode' (which is
+automatically activated if you select Thai as a language
+environment) changes key bindings of most word-oriented commands to
+versions which recognize Thai words.  Affected commands are
+    M-f     (forward-word)
+    M-b     (backward-word)
+    M-d     (kill-word)
+    M-DEL   (backward-kill-word)
+    M-t     (transpose-words)
+    M-q     (fill-paragraph)
+
+** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
+
+---
 ** Languange environment and various default coding systems are setup
 more correctly according to the current locale name.  If the locale
 name doesn't specify a charset, the default is what glibc defines.
@@ -254,7 +268,10 @@
 for matching the beginning and end of a symbol.  A symbol is a
 non-empty sequence of either word or symbol constituent characters, as
 specified by the syntax table.
-
+---
+*** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
+
++++
 ** Passing resources on the command line now works on MS Windows.
 You can use --xrm to pass resource settings to Emacs, overriding any
 existing values.  For example:
@@ -837,6 +854,7 @@
 the current Info node name into the kill ring.  With a zero prefix
 arg, puts the node name inside the `info' function call.
 
+---
 *** New face `info-xref-visited' distinguishes visited nodes from unvisited
 and a new option `Info-fontify-visited-nodes' to control this.
 
@@ -848,6 +866,7 @@
 If you prefer the old behavior, you can set the new user option
 `Info-hide-note-references' to nil.
 
+---
 *** Images in Info pages are supported.
 Info pages show embedded images, in Emacs frames with image support.
 Info documentation that includes images, processed with makeinfo
@@ -934,6 +953,7 @@
 +++
 ** Under X, mouse-wheel-mode is turned on by default.
 
++++
 ** The X resource useXIM can be used to turn off use of XIM, which may
 speed up Emacs with slow networking to the X server.
 
@@ -999,6 +1019,7 @@
    instead.  The updated skeleton-insert docstring explains these new
    features along with other details of skeleton construction.
 
+---
 ** MH-E changes.
 
 Upgraded to MH-E version 7.82. There have been major changes since
@@ -1232,6 +1253,7 @@
 default, all trivial operations involving whole lines are performed
 automatically.  The game uses faces for better visual feedback.
 
+---
 ** The new variable `x-select-request-type' controls how Emacs
 requests X selection.  The default value is nil, which means that
 Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
@@ -2237,17 +2259,23 @@
 ---
 ** Perl mode has a new variable `perl-indent-continued-arguments'.
 
+---
+** Fortran mode does more font-locking by default. Use level 3
+highlighting for the old default.
+
 +++
 ** Fortran mode has a new variable `fortran-directive-re'.
 Adapt this to match the format of any compiler directives you use.
 Lines that match are never indented, and are given distinctive font-locking.
 
 +++
-** F90 mode has new navigation commands `f90-end-of-block',
-`f90-beginning-of-block', `f90-next-block', `f90-previous-block'.
-
----
-** F90 mode now has support for hs-minor-mode (hideshow).
+** F90 mode and Fortran mode have new navigation commands
+`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
+`f90-previous-block', `fortran-end-of-block',
+`fortran-beginning-of-block'.
+
+---
+** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
 It cannot deal with every code format, but ought to handle a sizeable
 majority.
 
@@ -2407,6 +2435,7 @@
 handles the overlay property `display' specially, preserving it during
 temporary overlay showing in the course of an isearch operation.
 
++++
 ** New command `recode-region' decodes the region again by a specified
 coding system.
 
@@ -2414,6 +2443,17 @@
 * New modes and packages in Emacs 22.1
 
 +++
+** The new package longlines.el provides a minor mode for editing text
+files composed of long lines, based on the `use-hard-newlines'
+mechanism.  The long lines are broken up by inserting soft newlines,
+which are automatically removed when saving the file to disk or
+copying into the kill ring, clipboard, etc.  By default, Longlines
+mode inserts soft newlines automatically during editing, a behavior
+referred to as "soft word wrap" in other text editors.  This is
+similar to Refill mode, but more reliable.  To turn the word wrap
+feature off, set `longlines-auto-wrap' to nil.
+
++++
 ** The new package conf-mode.el handles thousands of configuration files, with
 varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
 var : value, var value or keyword var value) and sections ([section] or
@@ -2421,10 +2461,12 @@
 .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
 recognized.
 
++++
 ** The new package dns-mode.el add syntax highlight of DNS master files.
 The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
 to increment the SOA serial.
 
++++
 ** The new package flymake.el does on-the-fly syntax checking of program
 source files.  See the Flymake's Info manual for more details.
 
@@ -2432,9 +2474,11 @@
 of hierarchical data as an outline.  For example, the tree-widget is
 well suited to display a hierarchy of directories and files.
 
++++
 ** The wdired.el package allows you to use normal editing commands on Dired
 buffers to change filenames, permissions, etc...
 
++++
 ** The thumbs.el package allows you to preview image files as thumbnails
 and can be invoked from a Dired buffer.
 
@@ -2447,6 +2491,7 @@
 ** The new global minor mode `size-indication-mode' (off by default)
 shows the size of accessible part of the buffer on the mode line.
 
+---
 ** GDB-Script-mode is used for files like .gdbinit.
 
 ---
@@ -2502,6 +2547,7 @@
 must remove older versions of cua.el or cua-mode.el as well as the
 loading and customization of those packages from the .emacs file.
 
++++
 ** The new keypad setup package provides several common bindings for
 the numeric keypad which is available on most keyboards.  The numeric
 keypad typically has the digits 0 to 9, a decimal point, keys marked
@@ -2629,6 +2675,7 @@
 ** The new package ibuffer provides a powerful, completely
 customizable replacement for buff-menu.el.
 
++++
 ** The new package table.el implements editable, WYSIWYG, embedded
 `text tables' in Emacs buffers.  It simulates the effect of putting
 these tables in a special major mode.  The package emulates WYSIWYG
@@ -2651,17 +2698,20 @@
 ---
 ** cplus-md.el has been removed to avoid problems with Custom.
 
++++
 ** New package benchmark.el contains simple support for convenient
 timing measurements of code (including the garbage collection component).
 
 ---
 ** The new Lisp library fringe.el controls the appearance of fringes.
 
+---
 ** `cfengine-mode' is a major mode for editing GNU Cfengine
 configuration files.
 
 * Incompatible Lisp Changes in Emacs 22.1
 
++++
 ** The new interactive-specification `G' reads a file name
 much like `F', but if the input is a directory name (even defaulted),
 it returns just the directory name.
@@ -2679,6 +2729,21 @@
 
 * Lisp Changes in Emacs 22.1
 
+---
+** easy-mmode-define-global-mode has been renamed to
+define-global-minor-mode.  The old name remains as an alias.
+
++++
+** The new function `filter-buffer-substring' extracts a buffer
+substring, passes it through a set of filter functions, and returns
+the filtered substring.  It is used instead of `buffer-substring' or
+`delete-and-extract-region' when copying text into a user-accessible
+data structure, like the kill-ring, X clipboard, or a register.  The
+list of filter function is specified by the new variable
+`buffer-substring-filters'.  For example, Longlines mode uses
+`buffer-substring-filters' to remove soft newlines from the copied
+text.
+
 +++
 ** An element of buffer-undo-list can now have the form (apply FUNNAME
 . ARGS), where FUNNAME is a symbol other than t or nil.  That stands
@@ -3201,6 +3266,7 @@
 changes to mode lines, header lines, or display properties may require
 forcing an explicit window update.
 
+---
 ** New function `redirect-debugging-output' can be used to redirect
 debugging output on the stderr file handle to a file.
 
@@ -4401,6 +4467,7 @@
 display a prompt but don't use the minibuffer, now display the prompt
 using the text properties (esp. the face) of the prompt string.
 
+---
 ** New function x-send-client-message sends a client message when
 running under X.
 
@@ -4410,6 +4477,7 @@
 
 ** New packages:
 
++++
 *** The new package gdb-ui.el provides an enhanced graphical interface to
 GDB. You can interact with GDB through the GUD buffer in the usual way, but
 there are also further buffers which control the execution and describe the
@@ -4426,6 +4494,7 @@
 binary data structures, such as network packets, to and from Lisp
 data structures.
 
+---
 *** The TCL package tcl-mode.el was replaced by tcl.el.
 This was actually done in Emacs-21.1, and was not documented.
 
--- a/etc/TUTORIAL	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-You are looking at the Emacs tutorial.  See end for copying conditions.
+Emacs tutorial.  See end for copying conditions.
 Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation.
 
 Emacs commands generally involve the CONTROL key (sometimes labeled
--- a/etc/TUTORIAL.bg	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.bg	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
-Âèå ãëåäàòå âúâåäåíèåòî íà Åìàêñ.  Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà.
-Copyright (c) 1985, 1996, 1998, 2001, 2002, 2003 Free Software Foundation.
+Âúâåäåíèå â Emacs. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà.
+Copyright (c) 1985,1996,1998,2001,2002,2003,2005 Free Software Foundation.
 
-Êîìàíäèòå íà Åìàêñ íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà
+Êîìàíäèòå íà Emacs íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà
 îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè
 ALT).  Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
 ñëåäíèòå ñúêðàùåíèÿ:
@@ -15,7 +15,7 @@
 		êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>.  Íèå
 		çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC.
 
-Âàæíà áåëåæêà: â êðàÿ íà Åìàêñ ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c.
+Âàæíà áåëåæêà: â êðàÿ íà Emacs ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c.
 Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà.  Íàïðèìåð:
 <<Blank lines inserted here by startup of help-with-tutorial>>
 >> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì
@@ -93,7 +93,7 @@
 
 Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà
 îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä.  Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë
-òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Åìàêñ íå èçèñêâà òàêúâ,
+òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Emacs íå èçèñêâà òàêúâ,
 êîãàòî ïðî÷èòà ôàéëà).
 
 >> Îïèòàéòå C-b â íà÷àëîòî íà ðåä.  Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ
@@ -109,7 +109,7 @@
 
 Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò
 îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà.  Òîâà ñå íàðè÷à "ñêðîëèðàíå".  Òî
-ïîçâîëÿâà íà Åìàêñ äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà,
+ïîçâîëÿâà íà Emacs äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà,
 áåç äà ãî èçêàðâà èçâúí åêðàíà.
 
 >> Îïèòàéòå ñå äà ïðèäâèæèòå êóðñîðà ñëåä äîëíèÿ êðàé íà åêðàíà ñ C-n
@@ -192,7 +192,7 @@
 Âèå ìîæåòå ñúùî äà ñå ïðèäâèæâàòå ñ êëàâèøèòå-ñòðåëêè, àêî âàøèÿò
 òåðìèíàë èìà òàêèâà.  Íèå ïðåïîðú÷âàìå äà íàó÷èòå C-b, C-f, C-n è C-p
 ïî òðè ïðè÷èíè.  Ïúðâî, òå ðàáîòÿò íà âñè÷êè âèäîâå òåðìèíàëè.  Âòîðî,
-âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Åìàêñ, ùå
+âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Emacs, ùå
 îòêðèåòå, ÷å âúâåæäàíåòî íà òåçè Control-çíàöè å ïî-áúðçî îò
 âúâåæäàíåòî íà êëàâèøèòå ñòðåëêè, çàùîòî íå òðÿáâà äà ïðåìåñòâàòå
 ðúêàòà ñè äàëå÷ îò îáëàñòòà íà êëàâèøèòå ñ áóêâè.  Òðåòî, âåäíúæ ñëåä
@@ -200,7 +200,7 @@
 ìîæåòå ñúùî òàêà ëåñíî äà íàó÷èòå ïî-íàïðåäíàëèòå êîìàíäè çà äâèæåíèå
 íà êóðñîðà.
 
-Ïîâå÷åòî Åìàêñ êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé
+Ïîâå÷åòî Emacs êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé
 ñëóæè êàòî áðîÿ÷ íà ïîâòîðåíèÿ.  Íà÷èíúò, ïî êîéòî äàâàòå ÷èñëîâ
 áðîÿ÷, å ñ âúâåæäàíå íà C-u, ïîñëåäâàíî îò âúâåæäàíå íà öèôðèòå, è
 âñè÷êî òîâà ïðåäè âúâåæäàíå íà ñàìàòà êîìàíäà.  Àêî èìàòå êëàâèø META
@@ -232,7 +232,7 @@
 
 Àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, êàòî X11 èëè MS-Windows, áè
 òðÿáâàëî äà èìà òúíêà ïðàâîúãúëíà îáëàñò, íàðå÷åíà ïëúçãà÷ (scroll
-bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ.  Âèå ìîæåòå äà ñêðîëèðàòå
+bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs.  Âèå ìîæåòå äà ñêðîëèðàòå
 òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à.
 
 >> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò
@@ -244,10 +244,10 @@
    íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà.
 
 
-* ÊÎÃÀÒÎ ÅÌÀÊÑ Å ÁËÎÊÈÐÀË
+* ÊÎÃÀÒÎ EMACS Å ÁËÎÊÈÐÀË
 -------------------------
 
-Àêî Åìàêñ ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå
+Àêî Emacs ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå
 áåçîïàñíî, êàòî âúâåäåòå C-g.  Ìîæå äà èçïîëçâàòå C-g, çà äà ñïðåòå
 êîìàíäà, êîÿòî ñå èçïúëíÿâà òâúðäå äúëãî.
 
@@ -264,15 +264,15 @@
 * ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ
 -------------------
 
-Íÿêîè êîìàíäè íà Åìàêñ ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè
+Íÿêîè êîìàíäè íà Emacs ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè
 äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà.
 
-Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Åìàêñ èçâåæäà ñúîáùåíèå,
+Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Emacs èçâåæäà ñúîáùåíèå,
 êàçâàéêè êàêâà å áèëà êîìàíäàòà è ïèòàéêè âè äàëè èñêàòå äà ïðîäúëæèòå
 íàïðåä è äà èçïúëíèòå êîìàíäàòà.
 
-Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå êëàâèøà èíòåðâàë
-â îòãîâîð íà âúïðîñà.  Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå
+Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå <SPC> (êëàâèøà
+èíòåðâàë) â îòãîâîð íà âúïðîñà.  Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå
 çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n".
 
 >> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå
@@ -282,7 +282,7 @@
 * ÏÐÎÇÎÐÖÈ
 ----------
 
-Åìàêñ ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
+Emacs ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
 ñîáñòâåí òåêñò.  Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî
 ïðîçîðåöà.  Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò
 äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí
@@ -312,13 +312,13 @@
 ----------------------
 
 Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå.  Çíàöèòå, êîèòî
-ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Åìàêñ êàòî
+ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Emacs êàòî
 òåêñò è ñå âìúêâàò âåäíàãà.  Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â
 íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä.
 
 Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà
 <Delback>.  <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî
-îáèêíîâåíî èçïîëçâàòå èçâúí Åìàêñ, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò
+îáèêíîâåíî èçïîëçâàòå èçâúí Emacs, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò
 âàñ çíàê.  Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò
 êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè
 "Backspace".
@@ -358,24 +358,24 @@
 >> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî
    èçòðèõòå.
 
-Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Åìàêñ ìîæå äà áúäå çàäàäåí áðîÿ÷
+Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Emacs ìîæå äà áúäå çàäàäåí áðîÿ÷
 íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè.
 Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè.
 
 >> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********.
 
-Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Åìàêñ
+Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Emacs
 è ïîïðàâÿíå íà ãðåøêè.  Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå.
 Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ:
 
-	<Delback>    èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà
-	C-d   	     èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà
+	<Delback>    Èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà
+	C-d   	     Èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà
 
-	M-<Delback>  èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà
-	M-d	     èçòðèâàíå íà äóìàòà ñëåä êóðñîðà
+	M-<Delback>  Èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà
+	M-d	     Èçòðèâàíå íà äóìàòà ñëåä êóðñîðà
 
-	C-k	     èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà
-	M-k	     èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå
+	C-k	     Èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà
+	M-k	     Èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå
 
 Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d,
 ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å
@@ -385,12 +385,12 @@
 
 Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí
 íà÷èí.  Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè
-C-èíòåðâàë (êîåòî è äà å îò äâåòå).  Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà
-÷àñòòà è âúâåäåòå C-w.  Òîâà ùå èçðåæå öåëèÿ òåêñò ìåæäó òåçè äâà
-êðàÿ.
+C-<SPC> (êîåòî è äà å îò äâåòå).  (<SPC> å êëàâèøúò èíòåðâàë.)
+Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà ÷àñòòà è âúâåäåòå C-w.  Òîâà ùå èçðåæå
+öåëèÿ òåêñò ìåæäó òåçè äâà êðàÿ.
 
 >> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö.
->> Âúâåäåòå C-èíòåðâàë.  Åìàêñ òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â
+>> Âúâåäåòå C-<SPC>.  Emacs òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â
    äîëíèÿ êðàé íà åêðàíà.
 >> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà.
 >> Âúâåäåòå C-w.  Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù
@@ -420,9 +420,9 @@
 Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå".  (Ìèñëåòå çà íåãî
 êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë
 èçðÿçàí.)  Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî,
-îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â áóôåðà, äàæå è â
-ðàçëè÷åí ôàéë.  Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî ïúòè; òîâà
-ïðàâè íÿêîëêî êîïèÿ îò íåãî.
+îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â ðåäàêòèðàíèÿ òåêñò,
+äàæå è â ðàçëè÷åí ôàéë.  Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî
+ïúòè; òîâà ïðàâè íÿêîëêî êîïèÿ îò íåãî.
 
 Êîìàíäàòà çà âìúêâàíå å C-y.  Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò
 â òåêóùîòî ìÿñòî íà êóðñîðà.
@@ -501,25 +501,25 @@
 ---------
 
 Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî
-ñëîæèòå âúâ ôàéë.   ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Åìàêñ
+ñëîæèòå âúâ ôàéë.   ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Emacs
 ïðèêëþ÷è.  Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå"
 ôàéëà ïðåäè äà âúâåæäàòå òåêñò.  (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà
 ôàéëà.)
 
-Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Åìàêñ.  Â
+Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Emacs.  Â
 ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë.  Îáà÷å ïðîìåíèòå,
-êîèòî ïðàâèòå, èçïîëçâàéêè Åìàêñ, íå îñòàâàò ïîñòîÿííè, äîêàòî íå
+êîèòî ïðàâèòå, èçïîëçâàéêè Emacs, íå îñòàâàò ïîñòîÿííè, äîêàòî íå
 "çàïèøåòå" ôàéëà.  Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà
 ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà.  Äîðè êîãàòî
-çàïèñâàòå, Åìàêñ îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å
+çàïèñâàòå, Emacs îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å
 ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà.
 
 Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è
 çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-R:-- TUTORIAL.bg" èëè íåùî ïîäîáíî.
 Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè.  Òî÷íî
 ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî
-ëè÷íî êîïèå-÷åðíîâà íà Åìàêñ âúâåäåíèåòî.  Êîãàòî íàìåðèòå ôàéë â
-Åìàêñ, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî.
+ëè÷íî êîïèå-÷åðíîâà íà Emacs âúâåäåíèåòî.  Êîãàòî íàìåðèòå ôàéë â
+Emacs, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî.
 
 Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå
 èìåòî íà ôàéëà, êîéòî èñêàòå.  Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò
@@ -528,10 +528,10 @@
 
 	C-x C-f   Íàìèðàíå íà ôàéë
 
-Åìàêñ âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà.  Èìåòî íà ôàéëà, êîåòî
+Emacs âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà.  Èìåòî íà ôàéëà, êîåòî
 íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà.  Ðåäúò â äúíîòî íà åêðàíà ñå
 íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä.  Ìîæåòå äà
-èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Åìàêñ, çà äà
+èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Emacs, çà äà
 ðåäàêòèðàòå èìåòî íà ôàéëà.
 
 Êîãàòî âúâåæäàòå èìåòî íà ôàéëà (èëè êàêúâòî è äà å âõîä â
@@ -552,12 +552,12 @@
 
 	C-x C-s   Çàïàçâàíå íà ôàéëà
 
-Òîâà êîïèðà òåêñòà îò Åìàêñ âúâ ôàéëà.  Ïúðâèÿ ïúò, êîãàòî òîâà ñå
-íàïðàâè, Åìàêñ ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå
+Òîâà êîïèðà òåêñòà îò Emacs âúâ ôàéëà.  Ïúðâèÿ ïúò, êîãàòî òîâà ñå
+íàïðàâè, Emacs ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå
 ñå èçãóáè.  Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî
 íà íà÷àëíèÿ ôàéë.
 
-Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Åìàêñ èçâåæäà èìåòî íà ôàéëà, êîéòî å
+Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Emacs èçâåæäà èìåòî íà ôàéëà, êîéòî å
 áèë çàïèñàí.  Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå
 èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà.
 
@@ -565,19 +565,19 @@
    Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà.
 
 ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-x C-s ùå çàìðúçè åêðàíà è
-âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Åìàêñ.  Òîâà ïîêàçâà, ÷å åäíà
+âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Emacs.  Òîâà ïîêàçâà, ÷å åäíà
 "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðè÷àíà "óïðàâëåíèå íà ïîòîêà"
-(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Åìàêñ.  Çà äà
+(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Emacs.  Çà äà
 ðàçìðàçèòå åêðàíà, âúâåäåòå C-q.  Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî
 âêëþ÷âàíå íà ïîñòúïêîâî òúðñåíå" (Spontaneous Entry to Incremental
-Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
+Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
 "ñïîñîáíîñò".
 
 Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî
 ðåäàêòèðàòå.  Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà.  Òîâà
-å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Åìàêñ: íàìèðàòå ôàéëà, êîéòî
+å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Emacs: íàìèðàòå ôàéëà, êîéòî
 ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà
-ôàéëà.  Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Åìàêñ âñúùíîñò ùå
+ôàéëà.  Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Emacs âñúùíîñò ùå
 ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè.  Îòòàì íàòàòúê ìîæå äà
 ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë.
 
@@ -585,9 +585,9 @@
 * ÁÓÔÅÐÈ
 --------
 
-Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Åìàêñ.
+Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Emacs.
 Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x
-C-f.  Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ.
+C-f.  Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Emacs.
 
 >> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>.
    Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå
@@ -595,16 +595,16 @@
    Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå
    îáðàòíî âúâ âúâåäåíèåòî.
 
-Åìàêñ çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð".
-Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Åìàêñ.  Çà äà âèäèòå ñïèñúê íà
-áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Åìàêñ, âúâåäåòå
+Emacs çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð".
+Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Emacs.  Çà äà âèäèòå ñïèñúê íà
+áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Emacs, âúâåäåòå
 
 	C-x C-b   Ïîêàçâàíå íà áóôåðèòå
 
 >> Îïèòàéòå C-x C-b ñåãà.
 
 Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà,
-÷èåòî ñúäúðæàíèå äúðæè.  ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö,
+÷èåòî ñúäúðæàíèå äúðæè.  ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö,
 å âèíàãè ÷àñò îò íÿêàêúâ áóôåð.
 
 >> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå.
@@ -626,13 +626,13 @@
 Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî
 íà âñåêè áóôåð.
 
-ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ
+ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ
 áóôåð.  Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå.  Íàïðèìåð áóôåðúò,
 èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë.  Òîâà å áóôåðúò,
 êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b.
 Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé
 ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà
-Åìàêñ ñåñèÿòà.
+Emacs ñåñèÿòà.
 
 >> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ
    ñúîáùåíèÿòà.  Ñëåä òîâà âúâåäåòå C-x C-b TUTORIAL <Return>, çà äà
@@ -640,7 +640,7 @@
 
 Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã
 ôàéë, òîâà íÿìà äà çàïèøå ïúðâèÿ ôàéë.  Íåãîâèòå ïðîìåíè îñòàâàò âúòðå
-â Åìàêñ, â áóôåðà íà ôàéëà.  Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà
+â Emacs, â áóôåðà íà ôàéëà.  Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà
 íà âòîðèÿ ôàéë íÿìà åôåêò âúðõó áóôåðà íà ïúðâèÿ ôàéë.  Òîâà å ìíîãî
 ïîëåçíî, íî ñúùî îçíà÷àâà, ÷å ñå íóæäàåòå îò óäîáåí íà÷èí äà çàïàçèòå
 áóôåðà íà ïúðâèÿ ôàéë.  Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x
@@ -659,8 +659,8 @@
 * ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ
 -------------------------------
 
-Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Åìàêñ, îòêîëêîòî ìîãàò äà ñå ñëîæàò
-íà âñè÷êè êîíòðîëíè è ìåòà çíàöè.  Åìàêñ çàîáèêàëÿ òîâà ñ X (eXtended)
+Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Emacs, îòêîëêîòî ìîãàò äà ñå ñëîæàò
+íà âñè÷êè êîíòðîëíè è ìåòà çíàöè.  Emacs çàîáèêàëÿ òîâà ñ X (eXtended)
 êîìàíäàòà.  Òîâà ñòàâà ïî äâà íà÷èíà:
 
 	C-x	Çíàêîâî ðàçøèðÿâàíå.  Ïîñëåäâàíî îò åäèí çíàê.
@@ -668,49 +668,49 @@
 		èìå.
 
 Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå,
-êîèòî äîñåãà ñòå íàó÷èëè.  Âå÷å âèäÿõòå äâå îò òÿõ: êîìàíäèòå âúðõó
-ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà çàïàçâàíå (Save).
-Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Åìàêñ ñåñèÿòà -- òîâà å êîìàíäàòà
-C-x C-c.  (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå âñè÷êè ïðîìåíè, êîèòî
-ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè ïðîìåíåí ôàéë, ïðåäè
-äà ïðåìàõíå Åìàêñ.)
+êîèòî äîñåãà ñòå íàó÷èëè.  Âå÷å âèäÿõòå íÿêîëêî îò òÿõ: íàïðèìåð
+êîìàíäèòå âúðõó ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà
+çàïàçâàíå (Save).  Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Emacs ñåñèÿòà --
+òîâà å êîìàíäàòà C-x C-c.  (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå
+âñè÷êè ïðîìåíè, êîèòî ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè
+ïðîìåíåí ôàéë, ïðåäè äà ïðåìàõíå Emacs.)
 
-C-z å êîìàíäàòà çà èçëèçàíå îò Åìàêñ *âðåìåííî* -- òàêà ÷å äà ìîæåòå
-äà ñå âúðíåòå êúì ñúùàòà Åìàêñ ñåñèÿ ïî-êúñíî.
+C-z å êîìàíäàòà çà èçëèçàíå îò Emacs *âðåìåííî* -- òàêà ÷å äà ìîæåòå
+äà ñå âúðíåòå êúì ñúùàòà Emacs ñåñèÿ ïî-êúñíî.
 
-Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Åìàêñ,
-ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Åìàêñ.   ïîâå÷åòî îáâèâêè
-ìîæåòå äà ïðîäúëæèòå Åìàêñ ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs".
+Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Emacs,
+ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Emacs.   ïîâå÷åòî îáâèâêè
+ìîæåòå äà ïðîäúëæèòå Emacs ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs".
 
 Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà
-ïîäîáâèâêà, êîÿòî âúðâè ïîä Åìàêñ, çà äà âè äàäå øàíñ äà ñòàðòèðàòå
-äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Åìàêñ ñëåä òîâà; òîâà íå å èñòèíñêî
-"èçëèçàíå" îò Åìàêñ.   òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å
-îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Åìàêñ îò ïîäîáâèâêàòà.
+ïîäîáâèâêà, êîÿòî âúðâè ïîä Emacs, çà äà âè äàäå øàíñ äà ñòàðòèðàòå
+äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Emacs ñëåä òîâà; òîâà íå å èñòèíñêî
+"èçëèçàíå" îò Emacs.   òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å
+îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Emacs îò ïîäîáâèâêàòà.
 
 Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò
-ñèñòåìàòà.  Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Åìàêñ å
+ñèñòåìàòà.  Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Emacs å
 èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå
-ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Åìàêñ.  Ïðè
+ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Emacs.  Ïðè
 îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò
-ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Åìàêñ ñ C-z, âìåñòî äà èçëèçàòå îò
-Åìàêñ.
+ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Emacs ñ C-z, âìåñòî äà èçëèçàòå îò
+Emacs.
 
 Èìà ìíîãî êîìàíäè C-x.  Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè:
 
-	C-x C-f		Íàìèðàíå íà ôàéë.
-	C-x C-s		Çàïàçâàíå íà ôàéë.
-	C-x C-b		Ñïèñúê íà áóôåðèòå.
-	C-x C-c		Èçëèçàíå îò Åìàêñ.
-	C-x 1		Èçòðèâàíå íà âñè÷êè ïðîçîðöè îñâåí åäèí.
-	C-x u		Îòìÿíà.
+	C-x C-f		Íàìèðàíå íà ôàéë
+	C-x C-s		Çàïàçâàíå íà ôàéë
+	C-x C-b		Ñïèñúê íà áóôåðèòå
+	C-x C-c		Èçëèçàíå îò Emacs
+	C-x 1		Èçòðèâàíå íà âñè÷êè ïðîçîðöè, îñâåí åäèí
+	C-x u		Îòìÿíà
 
 Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå
 ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè.
 Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ
-äðóã.  Êîãàòî âúâåäåòå M-x, Åìàêñ âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ
+äðóã.  Êîãàòî âúâåäåòå M-x, Emacs âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ
 M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé
-"replace-string".  Ïðîñòî âúâåäåòå "repl s<TAB>" è Åìàêñ ùå çàâúðøè
+"replace-string".  Ïðîñòî âúâåäåòå "repl s<TAB>" è Emacs ùå çàâúðøè
 èìåòî.  (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà
 CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.)
 Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>.
@@ -734,11 +734,11 @@
 
 Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå
 ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è.  Çà äà âè
-ïðåäïàçè îò òàêèâà ñèòóàöèè, Åìàêñ ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî
+ïðåäïàçè îò òàêèâà ñèòóàöèè, Emacs ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî
 çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå.  Èìåòî íà àâòîìàòè÷íî
 çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å
 ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå
-"#hello.c#".  Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Åìàêñ
+"#hello.c#".  Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Emacs
 èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë.
 
 Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî
@@ -752,7 +752,7 @@
 * ÅÕÎ ÎÁËÀÑÒÒÀ
 --------------
 
-Àêî Åìàêñ âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè
+Àêî Emacs âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè
 ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò".  Åõî
 îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà.
 
@@ -763,18 +763,18 @@
 Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line).
 Òîé ïîêàçâà íåùî êàòî:
 
--R:**  TUTORIAL.bg          (Fundamental)--L670--58%----------------
+-D:**  TUTORIAL.bg       63% L749    (Fundamental)---------------------
 
-Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Åìàêñ è òåêñòà,
+Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Emacs è òåêñòà,
 êîéòî ðåäàêòèðàòå.
 
 Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå
-íàìåðèëè.  -NN%-- ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà
-îçíà÷àâà, ÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà.  Àêî
-íà÷àëîòî íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî
---00%--.  Àêî êðàÿ íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî).
-Àêî ãëåäàòå òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà
-åêðàíà, ðåäúò íà ðåæèìà ùå èçâåäå --All--.
+íàìåðèëè.  NN% ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà îçíà÷àâà,
+÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà.  Àêî íà÷àëîòî íà ôàéëà
+å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî --00%--.  Àêî êðàÿò
+íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî).  Àêî ãëåäàòå
+òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà åêðàíà, ðåäúò íà
+ðåæèìà ùå èçâåäå --All--.
 
 Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà
 òåêóùèÿ ðåä íà òî÷êàòà.
@@ -788,7 +788,7 @@
 Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà.  Òîâà å ïðèìåð çà
 "ãëàâåí ðåæèì" (major mode).
 
-Åìàêñ èìà ìíîãî ãëàâíè ðåæèìè.  Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà
+Emacs èìà ìíîãî ãëàâíè ðåæèìè.  Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà
 ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì
 Ëèñï, ðåæèì Òåêñò è äðóãè.  Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí
 ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â
@@ -807,7 +807,7 @@
 
 >> Âúâåäåòå M-x text mode<Return>.
 
-Íå ñå áåçïîêîéòå, íèêîÿ îò Åìàêñ êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà
+Íå ñå áåçïîêîéòå, íèêîÿ îò Emacs êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà
 ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí.  Íî ìîæå äà çàáåëåæèòå, ÷å M-f
 è M-b ñåãà âúçïðèåìàò àïîñòðîôèòå (') êàòî ÷àñò îò äóìèòå.  Ïðåäè
 òîâà, â îñíîâíèÿ ðåæèì (Fundamental), M-f è M-b ñå âúçïðèåìàõà êàòî
@@ -836,7 +836,7 @@
 
 Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà
 òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill
-mode).  Êîãàòî òîçè ðåæèì å âêëþ÷åí, Åìàêñ àâòîìàòè÷íî ðàçäåëÿ ðåäà
+mode).  Êîãàòî òîçè ðåæèì å âêëþ÷åí, Emacs àâòîìàòè÷íî ðàçäåëÿ ðåäà
 ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî
 å òâúðäå äúëúã.
 
@@ -856,7 +856,7 @@
 àðãóìåíò íà êîìàíäàòà.
 
 >> Âúâåäåòå C-x f ñ àðãóìåíò 20.  (C-u 2 0 C-x f).
-   Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Åìàêñ çàïúëâà ðåäîâåòå ñ ïî
+   Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Emacs çàïúëâà ðåäîâåòå ñ ïî
    íå ïîâå÷å îò 20 çíàêà.  Ïîñëå âúðíåòå îáðàòíî ãðàíèöàòà íà 70,
    èçïîëçâàéêè C-x f îòíîâî.
 
@@ -871,12 +871,12 @@
 * ÒÚÐÑÅÍÅ
 ---------
 
-Åìàêñ ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè
+Emacs ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè
 îò çíàöè èëè äóìè) èëè íàïðåä â òåêñòà, èëè íàçàä â íåãî.  Òúðñåíåòî
 íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà
 ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò.
 
-Êîìàíäàòà çà òúðñåíå íà Åìàêñ ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà
+Êîìàíäàòà çà òúðñåíå íà Emacs ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà
 ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà".  Òîâà îçíà÷àâà, ÷å
 òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå.
 
@@ -884,7 +884,7 @@
 òúðñåíå íàçàä.  ÍÎ ÏÎ×ÀÊÀÉÒÅ!  Íå ãè ïðîáâàéòå ñåãà.
 
 Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà
-êàòî ïîäñêàçêà â åõî îáëàñòòà.  Òîâà âè êàçâà, ÷å Åìàêñ å â òîâà,
+êàòî ïîäñêàçêà â åõî îáëàñòòà.  Òîâà âè êàçâà, ÷å Emacs å â òîâà,
 êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà,
 êîéòî èñêàòå äà òúðñèòå.  <Return> ïðèêëþ÷âà òúðñåíåòî.
 
@@ -896,19 +896,19 @@
 >> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà.
 >> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî.
 
-Çàáåëÿçàõòå ëè êàêâî ñòàíà?  Åìàêñ, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà
+Çàáåëÿçàõòå ëè êàêâî ñòàíà?  Emacs, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà
 äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà.  Çà äà
 îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå
-C-s.  Àêî íÿìà òàêîâà ñúâïàäåíèå, Åìàêñ áèáèïâà è âè êàçâà, ÷å
+C-s.  Àêî íÿìà òàêîâà ñúâïàäåíèå, Emacs áèáèïâà è âè êàçâà, ÷å
 òúðñåíåòî å "ïðîâàëåíî" (failing).  C-g ñúùî ïðåêðàòÿâà òúðñåíåòî.
 
 ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå
-íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Åìàêñ.  Òîâà ïîêàçâà, ÷å
+íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Emacs.  Òîâà ïîêàçâà, ÷å
 "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà"
-(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Åìàêñ.  Çà äà
+(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Emacs.  Çà äà
 ðàçìðàçèòå åêðàíà, âúâåäåòå C-q.  Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî
 âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental
-Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
+Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
 "ñïîñîáíîñò".
 
 Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå
@@ -930,9 +930,9 @@
 
 
 * ÌÍÎÆÅÑÒÂÎ ÏÐÎÇÎÐÖÈ
-----------------
+--------------------
 
-Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Åìàêñ å òàçè, ÷å ìîæå äà
+Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Emacs å òàçè, ÷å ìîæå äà
 ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå.
 
 >> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å
@@ -943,7 +943,7 @@
    îñòàâà íà ïî-ãîðíèÿ ïðîçîðåö.
 
 >> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö.  (Àêî íÿìàòå
-   èñòèíñêè êëàâèø META, âúâåäåòå ESC C-v.)
+   èñòèíñêè êëàâèø META, âúâåäåòå <ESC> C-v.)
 
 >> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå
    êóðñîðà â äîëíèÿ ïðîçîðåö.
@@ -972,10 +972,10 @@
 ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî
 ñòå âúâåëè.
 
-Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå ESC âìåñòî òîâà, ðåäúò
-èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå ESC, ïîñëåäâàí îò CONTROL-v, çàùîòî
-CONTROL-ESC v íÿìà äà ðàáîòè.  Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí
-çíàê, à íå ìîäèôèêàòîð.
+Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå <ESC> âìåñòî òîâà, ðåäúò
+èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå <ESC>, ïîñëåäâàí îò CONTROL-v,
+çàùîòî CONTROL-<ESC> v íÿìà äà ðàáîòè.  Òîâà å òàêà, çàùîòî <ESC> å
+ñîáñòâåí çíàê, à íå ìîäèôèêàòîð.
 
 >> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö.
 
@@ -1008,13 +1008,13 @@
 íà ãëàâíèÿ ðåæèì.  Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî
 (Fundamental).
 
-Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå ESC ESC
-ESC.  Òîâà å îáùà êîìàíäà çà "èçëèçàíå".  Ìîæå è äà ÿ èçïîëçâàòå çà
-ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà äà ñå ìàõíåòå
-îò ìèíèáóôåðà.
+Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå <ESC>
+<ESC> <ESC>.  Òîâà å îáùà êîìàíäà çà "èçëèçàíå".  Ìîæå è äà ÿ
+èçïîëçâàòå çà ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà
+äà ñå ìàõíåòå îò ìèíèáóôåðà.
 
->> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå ESC ESC
-   ESC, çà äà èçëåçåòå.
+>> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå <ESC> <ESC>
+   <ESC>, çà äà èçëåçåòå.
 
 Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà
 ðåäàêòèðàíå.  Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà
@@ -1025,16 +1025,16 @@
 ----------------------------------
 
  òîâà âúâåäåíèå ñå îïèòàõìå äà îñèãóðèì äîñòàòú÷íî èíôîðìàöèÿ, çà äà
-çàïî÷íåòå äà èçïîëçâàòå Åìàêñ.  Èìà òîëêîâà ìíîãî îùå â Åìàêñ, ÷å íå å
+çàïî÷íåòå äà èçïîëçâàòå Emacs.  Èìà òîëêîâà ìíîãî îùå â Emacs, ÷å íå å
 âúçìîæíî òî äà áúäå îáÿñíåíî âñè÷êîòî òóê.  Îáà÷å ìîæå äà ïîèñêàòå äà
-íàó÷èòå ïîâå÷å çà Åìàêñ, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè
-ñïîñîáíîñòè.  Åìàêñ èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Åìàêñ
+íàó÷èòå ïîâå÷å çà Emacs, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè
+ñïîñîáíîñòè.  Emacs èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Emacs
 êîìàíäèòå.  Òåçè "ïîìîùíè" êîìàíäè âñè÷êè çàïî÷âàò ñúñ çíàêà
 CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
 
 Çà äà èçïîëçâàòå âúçìîæíîñòèòå íà òàçè ïîìîù, âúâåäåòå çíàêà C-h è
 ñëåä òîâà çíàêà, êàçâàù êàêúâ âèä ïîìîù èñêàòå.  Àêî ÍÀÈÑÒÈÍÀ ñòå ñå
-èçãóáèëè, âúâåäåòå C-h ? è Åìàêñ ùå âè êàæå ñ êàêâî ìîæå äà âè
+èçãóáèëè, âúâåäåòå C-h ? è Emacs ùå âè êàæå ñ êàêâî ìîæå äà âè
 ïîìîãíå.  Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù,
 ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå.
 
@@ -1046,7 +1046,7 @@
 
 Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c.  Âúâåäåòå C-h, çíàêà c è
 êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà;
-òîãàâà Åìàêñ ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà.
+òîãàâà Emacs ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà.
 
 >> Type C-h c C-p.
 
@@ -1056,7 +1056,7 @@
 	(C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä)
 
 Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà".  Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò
-íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Åìàêñ.  Íî òúé êàòî èìåíàòà
+íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Emacs.  Íî òúé êàòî èìåíàòà
 íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå
 ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè
 ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè.
@@ -1070,7 +1070,7 @@
 >> Âúâåäåòå C-h k C-p.
 
 Òîâà èçâåæäà äîêóìåíòàöèÿòà íà ôóíêöèÿòà, êàêòî è íåéíîòî èìå, â
-îòäåëåí Åìàêñ ïðîçîðåö.  Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà
+îòäåëåí Emacs ïðîçîðåö.  Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà
 ìàõíåòå ïîìîùíèÿ òåêñò.  Íå å íóæíî äà ïðàâèòå òîâà òî÷íî ñåãà.  Ìîæå
 äà ðåäàêòèðàòå, äîêàòî ñå îáðúùàòå êúì ïîìîùíèÿ òåêñò çà ñïðàâêà, è
 ñëåä òîâà äà âúâåäåòå C-x 1.
@@ -1081,14 +1081,14 @@
 		ôóíêöèÿòà.
 
 >> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>.
-   Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Åìàêñ çíàå çà ôóíêöèÿòà,
+   Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Emacs çíàå çà ôóíêöèÿòà,
    êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p.
 
 Ïîäîáíà êîìàíäà, C-h v, èçâåæäà äîêóìåíòàöèÿòà íà ïðîìåíëèâèòå, êîèòî
-ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Åìàêñ.  Òðÿáâà äà
-âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Åìàêñ âè ïîäñêàæå òîâà.
+ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Emacs.  Òðÿáâà äà
+âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Emacs âè ïîäñêàæå òîâà.
 
-   C-h a	Êîìàíäà Àïðîïîñ.  Âúâåäåòå êëþ÷îâà äóìà è Åìàêñ ùå
+   C-h a	Êîìàíäà Àïðîïîñ.  Âúâåäåòå êëþ÷îâà äóìà è Emacs ùå
 		ïîêàæå ñïèñúê íà âñè÷êè êîìàíäè, ÷èåòî èìå ñúäúðæà
 		òàçè êëþ÷îâà äóìà.  Òåçè êîìàíäè ìîãàò âñè÷êè äà áúäàò
 		èçâèêàíè ÷ðåç META-x.  Çà íÿêîè êîìàíäè êîìàíäàòà
@@ -1111,18 +1111,18 @@
 		ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà
 		÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà
 		ñèñòåìà ïàêåòè.  Âúâåäåòå m emacs <Return>, çà äà
-		÷åòåòå ðúêîâîäñòâîòî íà Åìàêñ.  Àêî íèêîãà ïðåäè òîâà
-		íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Åìàêñ ùå âêëþ÷è
+		÷åòåòå ðúêîâîäñòâîòî íà Emacs.  Àêî íèêîãà ïðåäè òîâà
+		íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Emacs ùå âêëþ÷è
 		âúâåäåíèå âúâ âúçìîæíîñòèòå íà ðåæèìà Èíôî.  Âåäíúæ
 		ñëåä êàòî ñòå ïðåìèíàëè òîâà âúâåäåíèå, òðÿáâà äà ñå
-		êîíñóëòèðàòå ñ Åìàêñ Èíôî ðúêîâîäñòâîòî êàòî âàøà
+		êîíñóëòèðàòå ñ Emacs Èíôî ðúêîâîäñòâîòî êàòî âàøà
 		îñíîâíà äîêóìåíòàöèÿ.
 
 
 * ÎÙÅ ÂÚÇÌÎÆÍÎÑÒÈ
 -----------------
 
-Ìîæå äà íàó÷èòå ïîâå÷å çà Åìàêñ ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè
+Ìîæå äà íàó÷èòå ïîâå÷å çà Emacs ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè
 êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå
 F10 h r).  Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà
 äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî
@@ -1130,26 +1130,26 @@
 
 Äîâúðøâàíåòî å íà÷èí äà èçáÿãâàòå íåíóæíî ïèñàíå.  Íàïðèìåð, àêî
 èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b
-*M<Tab> è Åìàêñ ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà,
+*M<Tab> è Emacs ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà,
 äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè.  Äîâúðøâàíåòî
-å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà "Äîâúðøâàíå"
+å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà "Äîâúðøâàíå"
 ("Completion").
 
 Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
 âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê,
 äà ïîñåùàâàòå, ïðåèìåíóâàòå, èçòðèâàòå è èçîáùî äåéñòâàòå âúðõó
-ôàéëîâåòå.  Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà
+ôàéëîâåòå.  Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà
 "Dired".
 
-Ðúêîâîäñòâîòî íà Åìàêñ îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà
+Ðúêîâîäñòâîòî íà Emacs îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà
 ðåäàêòîðà.
 
 
 * ÇÀÊËÞ×ÅÍÈÅ
 ------------
 
-Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Åìàêñ, èçïîëçâàéòå C-x C-c.
-Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Åìàêñ
+Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Emacs, èçïîëçâàéòå C-x C-c.
+Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Emacs
 ïî-êúñíî, èçïîëçâàéòå C-z.
 
 Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè
@@ -1160,17 +1160,17 @@
 * ÊÎÏÈÐÀÍÅ
 ----------
 
-Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Åìàêñ,
-çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Åìàêñ.
+Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Emacs,
+çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Emacs.
 
-Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è ÃÍÓ Åìàêñ, å çàùèòåíà ñ àâòîðñêè
+Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è GNU Emacs, å çàùèòåíà ñ àâòîðñêè
 ïðàâà è èäâà ñ ðàçðåøåíèå äà ðàçïðîñòðàíÿâàòå êîïèÿ ïðè ñëåäíèòå
 óñëîâèÿ:
 
 This version of the tutorial, like GNU Emacs, is copyrighted, and
 comes with permission to distribute copies on certain conditions:
 
-Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation
+Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the
@@ -1183,8 +1183,8 @@
    under the above conditions, provided also that they
    carry prominent notices stating who last altered them.
 
-Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Åìàêñ ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ.
-Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà ÃÍÓ Åìàêñ íà
+Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Emacs ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ.
+Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà GNU Emacs íà
 ñâîè ïðèÿòåëè.  Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå
 ("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð!
 
--- a/etc/TUTORIAL.cn	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.cn	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-ÄúÕýÔÚÔĶÁ Emacs ¿ìËÙÖ¸ÄÏ£¨ Emacs tutorial £©¡£Çë¼ûҳβÓйظ´ÖÆÌõ¼þ¡£
+Emacs ¿ìËÙÖ¸ÄÏ.
 Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
 
 Emacs Ö¸Áîͨ³£°üº¬ÓÐ CONTROL ¼ü£¨ÓÐʱºòÒÔ CTRL »ò CTL À´±êʾ£©»òÊÇ 
--- a/etc/TUTORIAL.cs	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.cs	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,4 @@
+tutoriál k Emacsu.
 Copyright (c) 1985 Free Software Foundation, Inc;  podmínky viz na konci.
 Do èe¹tiny pøelo¾il Milan Zamazal <pdm@zamazal.org>.
 
--- a/etc/TUTORIAL.es	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.es	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,5 @@
-Usted esta viendo el tutorial de Emacs. Vea al final las condiciones
-de copiado. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software
-Foundation.
+Tutorial de Emacs. Vea al final las condiciones de copiado.
+Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
 
 Generalmente los comandos de Emacs involucran la tecla CONTROL
 (algunas veces llamada CTRL O CTL) o la tecla meta (algunas veces
--- a/etc/TUTORIAL.ja	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.ja	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-$B$"$J$?$,8=:_8+$F$$$k$N$O(B Emacs $BF~Lg%,%$%I$G$9!#%U%!%$%k:G8e$r;2>H$N$3$H!#(B
+Emacs $BF~Lg%,%$%I(B.
 Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
 
 Emacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K(B
--- a/etc/TUTORIAL.ko	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.ko	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,4 @@
+$(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B.
 $(C@z@[1G(B (c) 1985, 2001 Free Software Foundation, Inc;  $(C3!?!4B(B $(C:9;g(B $(CA60G@L(B
 $(C@V=@4O4Y(B.  $(CAv1](B $(C@P0m(B $(C@V4B(B $(C@L(B $(C1[@:(B $(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B.
 
--- a/etc/TUTORIAL.nl	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.nl	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-Je leest nu de Emacs-inleiding.  De kopieervoorwaarden staan onderaan.
+Emacs-inleiding.  De kopieervoorwaarden staan onderaan.
 Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation
 
 De meeste Emacs-commando's gebruiken de CONTROL-toets (soms CTRL of CTL
--- a/etc/TUTORIAL.pl	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.pl	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-Czytasz w³a¶nie krótki samouczek Emacsa. Copyright (c) 1985, 2001
+krótki samouczek Emacsa. Copyright (c) 1985, 2001
 Free Software Foundation, Inc. Szczegó³y na koñcu pliku.
 
 Polecenia Emacsa wymagaj± na ogó³ wci¶niêcia klawisza CONTROL (oznaczanego
--- a/etc/TUTORIAL.pt_BR	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.pt_BR	Mon Apr 04 16:43:15 2005 +0000
@@ -1,5 +1,5 @@
-Copyright (c) 2004 Free Software Foundation, Inc;  Veja no fim as
-condições.
+Tutorial do Emacs. Veja no fim as condições para cópia.
+Copyright (c) 2004, 2005 Free Software Foundation.
 
 Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezes
 nomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ou
@@ -130,8 +130,8 @@
    você pode observar a ação do M-f e M-b de varias lugares dentro e no
    meio de palavras.
 
-Observe o paralelismo entre C-f e C-b em uma mão, e M-f e M-b na
-outra. Muito freqüentemente os caracteres Meta são usados para operações
+Observe o paralelismo entre C-f e C-b por um lado, e M-f e M-b por outro
+lado. Muito freqüentemente os caracteres Meta são usados para operações
 relacionadas com as unidades definidas pela linguagem (palavras,
 sentenças, parágrafos), enquanto caracteres Control operam nas unidades
 básicas que são independente do que você está editando (caracteres,
@@ -859,7 +859,7 @@
 
 Se você estiver no meio de uma pesquisa incremental e digitar <Delete>,
 você percebera que o ultimo caractere da pesquisa será apagado e a
-pesquisa voltara para o ultimo lugar da pesquisa. Por instancia, imagine
+pesquisa voltara para o ultimo lugar da pesquisa. Por exemplo, imagine
 que você tenha digitado "c", para pesquisar a primeira ocorrência de
 "c". Agora se você digitar "u", o cursor ira mover para a primeira
 ocorrência de "cu". Agora digite <Delete>. Isso ira apagar o "u" da
--- a/etc/TUTORIAL.ro	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.ro	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,4 @@
+tutorialului de Emacs. 
 Copyright (c) 1998 Free Software Foundation  -*-coding: latin-2;-*-
 Traducere din englezã de Tudor Hulubei <tudor@gnu.org>.
 Mulþumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi ºi sugestii.
--- a/etc/TUTORIAL.ru	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.ru	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-÷Ù ÞÉÔÁÅÔÅ ÕÞÅÂÎÉË Emacs.  õÓÌÏ×ÉÑ ËÏÐÉÒÏ×ÁÎÉÑ × ËÏÎÃÅ ÆÁÊÌÁ.
+ÕÞÅÂÎÉË Emacs.
 Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc.
 
 äÌÑ ÕÐÒÁ×ÌÅÎÉÑ Emacs ÏÂÙÞÎÏ ÉÓÐÏÌØÚÕÅÔÓÑ ËÌÀÞ (ÓÏÞÅÔÁÎÉÅ ËÌÁ×ÉÛ ËÌÁ×ÉÁÔÕÒÙ
--- a/etc/TUTORIAL.sk	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.sk	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,4 @@
+tútorial k Emacsu.
 Copyright (c) 1985 Free Software Foundation, Inc; podmienky pozri na konci.
 Do èe¹tiny prelo¾il Milan Zamazal <pdm@zamazal.org>, do slovenèiny Miroslav
 Va¹ko <zemiak@zoznam.sk>.
--- a/etc/TUTORIAL.sv	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.sv	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
-Detta är den Svenska användarhandledningen till Emacs. I slutet finns
-kopieringsvillkoren. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free
-Software Foundation, Inc.
+Emacs användarhandledning. I slutet finns kopieringsvillkoren. 
+Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software
+Foundation, Inc.
 
 Emacs-kommandon innebär ofta användning av kontrolltangenten (vanligen
 märkt CTRL eller CTL) eller META-tangenten (på vissa tangentbord märkt
@@ -49,6 +49,10 @@
    Hitta markören igen och notera att det är samma text som står kring
    markören nu.
 
+Du kan också använda PageUp och PageDn tangenterna, om din terminal
+har dem, för att flytta en hel skärmbild åt gången, men du redigerar
+effektivare om du använder C-v och M-v.
+
 
 * GRUNDLÄGGANDE MARKÖRRÖRELSER
 ------------------------------
@@ -56,12 +60,10 @@
 Att flytta sig från skärmbild till skärmbild kan vara bra, men hur
 förflyttar man sig till en speciell plats på skärmen?
 
-Det finns flera sätt att göra detta på. Det vanligaste är att använda
-kommandona C-p, C-b, C-f och C-n. Vart och ett av dessa kommandon
-flyttar markören en rad eller en kolumn i en bestämd riktning på
-skärmen. Här visas dessa fyra kommandon och i vilken riktning de
-flyttar markören:
-
+Det finns flera sätt att göra detta. Du kan använda piltangenterna,
+men det är mer effektivt att ha händerna i standardläget och använda
+kommandona C-p, C-b, C-f och C-n. Dessa tecken är likvärdiga med de
+fyra piltangenterna. Så här:
 
 			 Föregående rad, C-p
                                   :
@@ -75,11 +77,10 @@
    och C-p. Använd sedan C-l för att centrera diagrammet på
    skärmbilden.
 
-Detta är säkert lite enklare att förstå om du tänker på dessa
-förkortningar: P för föregående (previous), N för nästa (next), B för
-bakåt (backward) och F för framåt (forward). Detta är de grundläggande
-kommandona för att flytta markören och du kommer säkert att använda
-dem hela tiden, så det är en stor fördel om du lär dig dem nu.
+Detta är enklare att komma ihåg om du tänker på dessa förkortningar: P
+för föregående (previous), N för nästa (next), B för bakåt (backward)
+och F för framåt (forward). Dessa är de grundläggande kommandona för
+att flytta markören och du kommer att använda dem hela tiden.
 
 >> Gör några C-n så att du kommer ned till den här raden.
 
@@ -309,17 +310,23 @@
 sätts in direkt. Skriv <Return> (retur-tangenten) för att sätta in en
 radbrytning.
 
-Du kan radera det sista tecknet du skrev genom att trycka <Delete>.
-<Delete> är en tangent på tangentbordet, som kan vara märkt "Del". I
-några fall fungerar också "backsteg" som <Delete> men inte alltid!
+Du kan radera det sista tecknet du skrev genom att trycka <Delback>. 
+<Delback> är en tangent på tangentbordet -- samma som du normalt
+använder utanför Emacs för att ta bort det senaste tecknet du skrivit. 
+Det är vanligen en stor tangent några rader ovanför retur-tangenten,
+och den är vanligtvis märkt "Delete, "Del" eller "Backspace".
 
-Generellt raderar <Delete> tecknet precis före den aktuella
+Om den stora tangenten är märkt med "Backspace" så är det den du
+använder för <Delback>. Det kan finnas en annan tangent som är märkt
+med "Delete" men det är inte <Delback>.
+
+Generellt raderar <Delback> tecknet precis före den aktuella
 markörspositionen.
 
 >>  Gör detta nu: Skriv in några tecken och ta bort dem genom att
-    använda <Delete>. Var inte rädd för att skriva i den här filen, du
-    kommer inte att kunna förändra originalet till vägledningen. Detta
-    är bara en lokal kopia.
+    använda <Delback>. Var inte rädd för att skriva i den här filen,
+    du kommer inte att kunna förändra originalet till vägledningen. 
+    Detta är bara en lokal kopia.
 
 När en rad blir för lång för att rymmas på en skärmbredd så fortsätter
 den på raden under. Ett bakstreck ("\") (eller om du kör under ett
@@ -330,7 +337,7 @@
     fortsätt att skriva lite till. Du kommer då att se hur
     fortsättningstecknet ser ut.
 
->>  Använd <Delete> för att radera texten tills raden ryms på en
+>>  Använd <Delback> för att radera texten tills raden ryms på en
     skärmbredd igen. Fortsättningstecknet kommer då att försvinna.
 
 Du kan radera radbrytning precis som andra tecken. Genom att radera
@@ -338,7 +345,7 @@
 resultatet av denna sammanslagning blir för stor för att passa inom en
 skärmbredd, så kommer den att visas med ett fortsättningstecken.
 
->> Flytta markören till början av en rad och tryck <Delete>.
+>> Flytta markören till början av en rad och tryck <Delback>.
    Detta kommer att klistra ihop raden med raden över.
 
 >> Tryck <Return> för att sätta in radbrytningen du tog bort.
@@ -353,21 +360,21 @@
 Emacs och att rätta fel. Du kan radera ord och rader också. Här är en
 översikt över kommandon för radering:
 
-        <Delete>     raderar tecknet som står precis före markören
-        C-d          raderar tecknet som står precis under markören
+        <Delback>    Raderar tecknet som står precis före markören
+        C-d          Raderar tecknet som står precis under markören
 
-        M-<Delete>   raderar ordet precis före markören
-        M-d          raderar ordet precis efter markören
+        M-<Delback>  Raderar ordet precis före markören
+        M-d          Raderar ordet precis efter markören
 
-        C-k          raderar från markören till slutet av raden
-        M-k          raderar till slutet av stycket
+        C-k          Raderar från markören till slutet av raden
+        M-k          Raderar till slutet av stycket
 
-Lägg märke till att <Delete> och C-d kontra M-<Delete> och M-d följer
-mönstret som började med C-f och M-f. (<Delete> är inte precis
+Lägg märke till att <Delback> och C-d kontra M-<Delback> och M-d
+följer mönstret som började med C-f och M-f. (<Delback> är inte precis
 ett kontrolltecken men låt oss inte bry oss om det.) C-k och M-k
 fungerar på samma sätt som C-e och M-e (nästan).
 
-Du kan också ta bort vilken del som helst av bufferten med hjälp av
+Du kan också ta bort vilken del som helst av texten med hjälp av
 följande allmänna metod. Flytta till ena änden av det område du vill
 ta bort och tryck C-@ eller C-mellanslag. Flytta till andra änden av
 området och tryck C-w. Detta tar bort all text mellan de två
@@ -401,13 +408,13 @@
 en repetition av kommandot. C-u 2 C-k raderar två rader samt de tomma
 raderna, medan C-k två gånger inte kommer att göra det.
 
-Att sätta in borttagen text kallas att "återhämta" den (yanking).
+Att sätta in borttagen text kallas att "återhämta" den (yanking). 
 (Tänk på det som att du rycker, eller drar, tillbaka någon text som
 tagits bort.) Du kan antingen hämta tillbaka borttagen text till samma
 plats som där den blev borttagen, eller så kan du sätta in den på en
-annan plats i bufferten eller till och med i en helt annan fil. Du kan
-också hämta tillbaka den flera gånger så att du får flera lika
-förekomster av den.
+annan plats i texten du redigerar eller till och med i en helt annan
+fil. Du kan också hämta tillbaka samma text flera gånger så att du får
+flera lika förekomster av den.
 
 Kommandot för att hämta tillbaka text är C-y. Kommandot hämtar
 tillbaka den sist borttagna texten och placerar den där markören är.
@@ -496,8 +503,8 @@
 
 Om du tittar nästan längst ner på skärmbilden så kommer du se en rad
 som börjar och slutar med minustecken, och som innehåller texten
-"--:-- TUTORIAL.se". Denna del av skärmbilden visar alltid namnet på
-filen du besöker. Just nu är du inne i en fil som heter "TUTORIAL.se"
+"--:-- TUTORIAL.sv". Denna del av skärmbilden visar alltid namnet på
+filen du besöker. Just nu är du inne i en fil som heter "TUTORIAL.sv"
 och som är en personlig kopia av vägledningen till Emacs. Vilken fil
 du än är inne i så kommer filnamnet stå där.
 
@@ -540,7 +547,7 @@
 systemet kraschar.
 
 >> Skriv C-x C-s för att spara en kopia av denna vägledning.
-   Detta skall leda till att "Wrote ...TUTORIAL.se" skrivs ut nederst
+   Detta skall leda till att "Wrote ...TUTORIAL.sv" skrivs ut nederst
    på skärmbilden.
 
 Observera: På vissa system leder C-x C-s till att skärmen låser
@@ -569,7 +576,7 @@
 
 >> Skapa en fil med namnet "foo" genom att trycka C-x C-f foo <Return>.
    Skriv in lite text, redigera den och spara "foo" genom att använda
-   C-x C-s. Skriv till slut C-x C-f TUTORIAL.se<Return> för att komma
+   C-x C-s. Skriv till slut C-x C-f TUTORIAL.sv <Return> för att komma
    tillbaka till den här vägledningen.
 
 Emacs sparar texten för varje fil i ett objekt kallat "buffert". När
@@ -581,13 +588,37 @@
 >> Prova C-x C-b nu.
 
 Se hur varje buffert har ett namn och att de också kan ha namnet på
-den fil som innehållet kommer från. En del buffertar är inte knutna
-till någon fil, till exempel bufferten "*Buffer List*". Det är den
-buffert som innehåller buffertlistan som skapades med C-x C-b. Vilken
-text du än ser i ett Emacs-fönster så tillhör den alltid en buffert.
+den fil som innehållet kommer från. Vilken text du än ser i ett
+Emacs-fönster så tillhör den alltid en buffert.
 
 >> Skriv C-x 1 för att bli kvitt buffertlistan.
 
+När du har flera buffertar så är bara en av dem "gällande" åt gången. 
+Det är den buffert du redigerar. Om du vill redigera en annan buffert
+så måste du byta till den. Om du vill byta till en buffert som
+motsvarar en fil kan du göra det genom att besöka den igen med C-x
+C-f. Det finns dock ett enklare sätt: använd C-x b kommandot. I det
+kommandot anger du buffertens namn.
+
+>> Skriv C-x b foo <Return> för att gå tillbaka till bufferten "foo"
+   som innehåller texten i filen "foo". Skriv sedan C-x b TUTORIAL.sv
+   <Return> för att komma tillbaka till den här handledningen.
+
+Mestadels är buffertens namn densamma som filens namn (utan
+katalogdel.) Det är dock inte alltid så. Bufferlistan du skapar med
+C-x C-b visar alltid namnen på varje buffert.
+
+All text du ser i ett Emacsfönster är alltid del av någon buffert. En
+del buffertar är inte knutna till någon fil, till exempel bufferten
+"*Buffer List*". Det är den buffert som innehåller buffertlistan som
+skapades med C-x C-b. Bufferten "*Messages*" motsvarar inte heller
+någon fil. Den innehåller de meddelanden som visas på den nedersta
+raden i Emacs sessionen.
+
+>> Skriv C-x b *Messages* <Return> för att se meddelandebufferten. 
+   Skriv sedan C-x b TUTORIAL.sv <Return> för att återgå till den här
+   handledningen.
+
 Om du ändrar texten till en fil och sedan öppnar en ny fil, så kommer
 inte den första filen sparas. Förändringen ligger kvar i
 bufferten. Skapande och redigering av den nya filen påverkar inte den
@@ -603,7 +634,7 @@
 
 >> Sätt in en rad med text och spara med C-x s
    Du skall nu få frågan om du önskar spara bufferten
-   TUTORIAL.se. Svara ja på frågan genom att trycka "y" (yes).
+   TUTORIAL.sv. Svara ja på frågan genom att trycka "y" (yes).
 
 
 * UTVIDGNING AV KOMMANDOMÄNGDEN
@@ -618,9 +649,9 @@
                 kommandonamn.
 
 Detta är kommandon som är bra att ha men används mer sällan än de
-kommandon du redan har lärt dig. Du har redan sett två av dem, C-x C-f
-för finn, och C-x C-s för spara. Ett annat exempel är kommandot för
-att avsluta Emacs som är C-x C-c. Var inte rädd för att förlora
+kommandon du redan har lärt dig. Du har redan sett några av dem, C-x
+C-f för finn, och C-x C-s för spara. Ett annat exempel är kommandot
+för att avsluta Emacs som är C-x C-c. Var inte rädd för att förlora
 förändringar du har gjort. C-x C-c erbjuder dig att spara förändringar
 innan Emacs avslutas.
 
@@ -646,12 +677,14 @@
 Det finns många C-x kommandon. Här är en lista över de du har lärt dig
 hittills:
 
-	C-x C-f		Finn fil.
-	C-x C-s		Spara fil.
-	C-x C-b		Lista buffertar.
-	C-x C-c		Avsluta Emacs.
-	C-x 1		Ta bort alla utom ett fönster.
-	C-x u		Ångra.
+	C-x C-f		Finn fil
+	C-x C-s		Spara fil
+	C-x s		Spara några buffertar
+	C-x C-b		Lista buffertar
+	C-x b		Byt buffert
+	C-x C-c		Avsluta Emacs
+	C-x 1		Ta bort alla utom ett fönster
+	C-x u		Ångra
 
 Namngivna utvidgade kommandon är kommandon som används mycket sällan
 eller bara i vissa lägen. Ett exempel på ett sådant kommando är
@@ -708,16 +741,16 @@
 Raden precis över ekoområdet kallas "lägesrad" (mode line). Den ser
 ungefär ut så här:
 
---:**  TUTORIAL          (Fundamental)--L670--58%----------------
+--:**  TUTORIAL       63% L749    (Fundamental)-----------------------
 
 Raden innehåller information om Emacs och texten du redigerar.
 
-Du vet redan vad filnamnet betyder, det är den fil du har funnit.
--NN%-- visar den aktuella positionen i texten, dvs. NN procent av
-texten befinner sig över toppen av skärmbilden. Om toppen av filen är
-i skärmbilden kommer det stå --Top-- istället för --00%-- och om
-slutet av filen är i skärmbilden kommer det stå --Bot--. Om du ser på
-en fil där hela texten passar in på en sida kommer det stå --All--.
+Du vet redan vad filnamnet betyder, det är den fil du har funnit. NN%
+visar den aktuella positionen i texten, dvs. NN procent av texten
+befinner sig över toppen av skärmbilden. Om toppen av filen är i
+skärmbilden kommer det stå "Top" istället för " 0%" och om slutet av
+filen är i skärmbilden kommer det stå "Bot". Om du ser på en fil där
+hela texten passar in på en sida kommer det stå "All".
 
 Bokstaven L följd av siffror anger positionen på ett annat
 sätt. Siffrorna visar vilken rad som markören befinner sig på.
@@ -831,7 +864,7 @@
    har du sökt efter ordet "markör" en gång.
 >> Skriv C-s en gång till för att söka efter nästa förekomst av ordet
    "markör".
->> Tryck nu på <Delete> fyra gånger och se hur markören flyttar sig
+>> Tryck nu på <Delback> fyra gånger och se hur markören flyttar sig
 >> Tryck <Return> för att avsluta sökandet.
 
 Såg du vad som hände? Under inkrementell sökning försöker Emacs att gå
@@ -847,12 +880,12 @@
 fall avsnittet "Spontaneous Entry to Incremental Search" i
 Emacs-manualen för råd om hur detta kan undvikas.
 
-Om du är inne i en inkrementell sökning och trycker <Delete> kommer du
-lägga märke till att den sista bokstaven i söksträngen blir raderad
+Om du är inne i en inkrementell sökning och trycker <Delback> kommer
+du lägga märke till att den sista bokstaven i söksträngen blir raderad
 och sökandet hoppar tillbaka till en tidigare förekomst. Om du till
 exempel skriver "m" för att söka efter den första förekomsten av "m",
 och sedan trycker "a" så kommer markören flytta sig till första
-förekomsten av "ma". Tryck nu <Delete>. Detta avlägsnar "a" från
+förekomsten av "ma". Tryck nu <Delback>. Detta avlägsnar "a" från
 söksträngen, och markören flyttar sig tillbaka till den första
 förekomsten av "m".
 
@@ -880,7 +913,7 @@
    det övre fönstret.
 
 >> Skriv C-M-v för att rulla det nedre fönstret.
-   (Om du inte har META-tangenten trycker du ESC C-v.)
+   (Om du inte har META-tangenten trycker du <ESC> C-v.)
 
 >> Skriv C-x o (o för other) för att flytta markören till det
    nedre fönstret.
@@ -910,10 +943,10 @@
 KONTROLL och META som trycks först, för bägge fungerar så att de
 "modifierar" de andra tangenterna du trycker.
 
-Om du inte har META-tangenten och använder ESC istället är
-ordningsföljden viktig. Du måste trycka ESC följt av KONTROLL-v,
-KONTROLL-ESC v fungerar inte. Det är för att ESC är ett tecken i sig
-och inte en äkta "modifierare".
+Om du inte har META-tangenten och använder <ESC> istället är
+ordningsföljden viktig. Du måste trycka <ESC> följt av KONTROLL-v,
+KONTROLL-<ESC> v fungerar inte. Det är för att <ESC> är ett tecken i
+sig och inte en äkta "modifierare".
 
 >> Skriv C-x 1 i det övre fönstret för att bli kvitt det nedre
    fönstret.
@@ -946,12 +979,12 @@
 huvudläget i lägesraden. Till exempel kan det stå [(Fundamental)]
 istället för (Fundamental).
 
-För att komma ur rekursiv redigering trycker du ESC ESC ESC. Detta är
-ett generellt brytkommando. Du kan också använda det för att bli kvitt
-extra fönster och för att komma ut ur minibufferten.
+För att komma ur rekursiv redigering trycker du <ESC> <ESC> <ESC>. 
+Detta är ett generellt brytkommando. Du kan också använda det för att
+bli kvitt extra fönster och för att komma ut ur minibufferten.
 
->> Skriv M-x för att komma in i minibufferten. Skriv så ESC ESC ESC
-   för att komma ut.
+>> Skriv M-x för att komma in i minibufferten. Skriv så <ESC> <ESC>
+   <ESC> för att komma ut.
 
 Du kan inte använda C-g för att komma ut ur rekursiv redigering.
 Detta är för att C-g används för att avbryta kommandon och argument
@@ -985,7 +1018,8 @@
 och en knappsekvens. Emacs ger då en beskrivning av kommandot.
 
 >> Skriv C-h c C-p.
-   Meddelandet skall då bli något i stil med
+
+Meddelandet skall då bli något i stil med:
 
         C-p runs the command previous-line
 
@@ -1061,6 +1095,29 @@
 ett mail och klaga!
 
 
+* MER FUNKTIONER
+----------------
+
+Du kan lära dig mer om Emacs genom att läsa dess manual, antingen i
+bokform eller on-line i Info (använd Hjälp-menyn eller skriv F10 h r). 
+Två finesser som du kan komma att gilla speciellt är komplettering
+(completion), som spar tangenttryckningar, och dired, som förenklar
+filhantering.
+
+Komplettering är ett sätt att undvika onödiga tangenttryckningar. Till
+exempel, om du vill byta till *Messages* bufferten, kan du du skriva
+C-x b *M<Tab> och Emacs kommer fylla i resten av buffertnamnet så
+långt den kan räkna ut det från det du redan skrivit. Komplettering
+finns beskrivet i Emacs-manualen i noden "Completion".
+
+Dired gör det möjligt att lista filer i en katalog (och även dess
+subkataloger), flytta runt i listan, besöka, byta namn, ta bort och
+operera på olika sätt på filerna. Dired finns beskrivet i Info i
+Emacs-manualen i noden "Dired".
+
+Manualen beskriver även många andra Emacs funktioner.
+
+
 * KOPIERING
 -----------
 
@@ -1071,7 +1128,7 @@
 This version of the tutorial, like GNU Emacs, is copyrighted, and
 comes with permission to distribute copies on certain conditions:
 
-Copyright (c) 1985, 1996 Free Software Foundation
+Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the
--- a/etc/TUTORIAL.th	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.th	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,4 @@
+0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B.
 ,TJ'G90ET1"0JT1708Tl1(B ,T>(B.,TH(B. 2528 ,Tb4B:0CT10IQ17?0CU1+M?05l1aG0Cl1?RG09l1`40*Q19(B (Free Software
 Foundation, Inc); ,T!0CX13R0HV1!IR`0'Wh1M9d"5M907i1RB:7(B.
 0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B (Emacs tutorial) ,TM0BYh1c9"3P09Ui1(B.
--- a/etc/TUTORIAL.zh	Mon Mar 28 04:24:51 2005 +0000
+++ b/etc/TUTORIAL.zh	Mon Apr 04 16:43:15 2005 +0000
@@ -1,4 +1,4 @@
-±z¥¿¦b¾\Ū Emacs §Ö³t«ü«n¡] Emacs tutorial ¡^¡C½Ð¨£­¶§À¦³Ãö½Æ»s±ø¥ó¡C
+Emacs §Ö³t«ü«n¡].
 Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
 
 Emacs «ü¥O³q±`¥]§t¦³ CONTROL Áä¡]¦³®É­Ô¥H CTRL ©Î CTL ¨Ó¼Ð¥Ü¡^©Î¬O 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/gnus-logo.eps	Mon Apr 04 16:43:15 2005 +0000
@@ -0,0 +1,1055 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: gnuslogo1.ps
+%%Creator: XV Version 3.00  Rev: 3/30/93  -  by John Bradley
+%%BoundingBox: 0 0 493 505
+%%Pages: 1
+%%DocumentFonts:
+%%EndComments
+%%EndProlog
+
+%%Page: 1 1
+
+% remember original state
+/origstate save def
+
+% build a temporary dictionary
+20 dict begin
+
+% define string to hold a scanline's worth of data
+/pix 62 string def
+
+% lower left corner
+0 0 translate
+
+% size of image (on paper, in 1/72inch coords)
+493.0 505.0 scale
+
+% dimensions of data
+493 505 1
+
+% mapping matrix
+[493 0 0 -505 0 505]
+
+{currentfile pix readhexstring pop}
+image
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff01fffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff8003ffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff0000ffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff8000007ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0000003ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe0000000ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff000000003fff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff000000000fff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0000000007ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff80000000003ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00000000001ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffe00000000000ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffc00000000000ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff8000000000007f8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0000000000003f8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0000000000003f8
+fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffe0000000000001f8
+fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc0000000000000f8
+ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc0000000000000f8
+ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff8000000000000078
+fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0000000000000038
+fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffe0000000000000038
+fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffe0000000000000038
+fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffc0000000000000018
+ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffc0000000000000018
+ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff
+fffffffffffffffffffffffffffffffffff80000000000000018
+ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff
+fffffffffffffffffffffffffffffffffff80000000000000008
+ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff
+fffffffffffffffffffffffffffffffffff00000000000000008
+fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff
+fffffffffffffffffffffffffffffffffff00000000000000008
+fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffe00000000000000008
+fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffe00000000000000008
+fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc00000000000000000
+ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff
+ffffffffffffffffffffffffffffffffffc00000000000000000
+ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffff800000000000000000
+ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffff800000000000000000
+ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffff000040000000000000
+fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff
+ffffffffffffffffffffffffffffffffff0007ffc00000000000
+fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffe001ffffc0000000000
+fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff
+fffffffffffffffffffffffffffffffffc003ffffe0000000000
+fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff
+fffffffffffffffffffffffffffffffffc007fffffc000000000
+fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff
+fffffffffffffffffffffffffffffffff800fffffff000000000
+ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff
+fffffffffffffffffffffffffffffffff801fffffff800000000
+ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff
+fffffffffffffffffffffffffffffffff003ffffffff00000000
+ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff
+fffffffffffffffffffffffffffffffff007ffffffff00000000
+ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff
+ffffffffffffffffffffffffffffffffe00fffffffff80000000
+fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff
+ffffffffffffffffffffffffffffffffe01fffffffffc0000008
+fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff
+ffffffffffffffffffffffffffffffffc03fffffffffc0000008
+fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff
+ffffffffffffffffffffffffffffffffc07ffffffffff0000000
+fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff
+ffffffffffffffffffffffffffffffff807ffffffffff0000000
+fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff
+ffffffffffffffffffffffffffffffff80fffffffffff0000008
+fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff
+ffffffffffffffffffffffffffffffff81fffffffffff8000008
+fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff
+ffffffffffffffffffffffffffffffff01fffffffffff8000008
+ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff
+ffffffffffffffffffffffffffffffff03fffffffffffc000008
+ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff
+fffffffffffffffffffffffffffffffe03fffffffffffc000008
+ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff
+fffffffffffffffffffffffffffffffe07fffffffffffe000008
+ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff
+fffffffffffffffffffffffffffffffe07fffffffffffe000008
+ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff
+fffffffffffffffffffffffffffffffe0ffffffffffffe000008
+ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff
+fffffffffffffffffffffffffffffffc0ffffffffffffe000008
+ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff
+fffffffffffffffffffffffffffffffc1fffffffffffff000008
+ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff
+fffffffffffffffffffffffffffffffc3fffffffffffff000008
+ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff
+fffffffffffffffffffffffffffffff8ffffffffffffff000008
+ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff
+fffffffffffffffffffffffffffffffcffffffffffffff000008
+fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff
+ffffffffffffffffffffffffffffe7fdffffffffffffff000008
+fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff
+ffffffffffffffffffffffffffffe7fdffffffffffffff000008
+fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff
+ffffffffffffffffffffffffffffc7ffffffffffffffff000008
+fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff
+fffffffffeffffffffffffffffff87ffffffffffffffff000008
+f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff
+fffffffffcffffffffffffffffff87ffffffffffffffff000008
+f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff
+fffffffff8ffffffffffffffffff07ffffffffffffffff000008
+f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff
+fffffffff8fffffffffffffffffe0fffffffffffffffff000008
+f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff
+fffffffff0fffffffffffffffffe0fffffffffffffffff000018
+e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff
+fffffffff0fffffffffffffffffc0fffffffffffffffff000018
+e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff
+ffffffffe0fffffffffffffffffc1fffffffffffffffff000018
+c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff
+ffffffffe0fffffffffffffffff81fffffffffffffffff000018
+c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff
+ffffffffc0fffffffffffffffff83fffffffffffffffff000018
+800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff
+ffffffff01fffffffffffffffff03fffffffffffffffff000038
+800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff
+ffffffff01fffffffffffffffff03fffffffffffffffff800038
+00000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff
+fffffffe03ffffffffffffffffe07fffffffffffffffff800038
+00000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff
+fffffffc03ffffffffffffffffe07fffffffffffffffff800038
+00000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff
+fffffff803ffffffffffffffffc07fffffffffffffffff800038
+00000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff
+fffffff007ffffffffffffffffc0ffffffffffffffffff800038
+0000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff
+fffffff007ffffffffffffffff80ffffffffffffffffff800078
+0000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff
+ffffffc00fffffffffffffffff81ffffffffffffffffff800078
+8000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff
+ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8
+8000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff
+ffffff801fffffffffffffffff03ffffffffffffffffff8000f8
+c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff
+fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8
+e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff
+fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8
+f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff
+fffff0003ffffffffffffffff80fffffffffffffffffff8000f8
+f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff
+ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8
+f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f
+ffff00007fffffffffffffffe01fffffffffffffffffff0001f8
+fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007
+fffc00007fffffffffffffffc01fffffffffffffffffff0001f8
+fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000
+ffe000007ffffbffffffffff801fffffffffffffffffff0001f8
+fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000
+00000000fffff3ffffffffff003fffffffffffffffffff0001f8
+fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000
+00000001fffff1fffffffffe003fffffffffffffffffff0003f8
+ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000
+00000001ffffe1fffffffffc007fffffffffffffffffff0003f8
+ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000
+00000003ffffe0fffffffff0007fffffffffffffffffff0003f8
+ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000
+00000003ffffc0ffffffffe0007fffffffffffffffffff0003f8
+ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000
+00000007ffffc07fffffff8000ffffffffffffffffffff0003f8
+fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000
+00000007ffff803fffffff0000fffffffffffffffffffe0007f8
+fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000
+00000007ffff801ffffffc0001fffffffffffffffffffe0007f8
+fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000
+0000000fffff000ffffff80003fffffffffffffffffffe0007f8
+fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000
+0000000fffff0007ffffe00003fffffffffffffffffffe0007f8
+ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000
+0000001ffffe0001ffff800007fffffffffffffffffffe000ff8
+ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000
+0000001ffffe0000fffc000007fffffffffffffffffffe000ff8
+ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000
+0000003ffffe0000000000000ffffffffffffffffffffe000ff8
+fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000
+0000003ffffc0000000000000ffffffffffffffffffffe000ff8
+fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000
+0000007ffff80000000000001ffffffffffffffffffffe001ff8
+fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000
+0000007ffff80000000000001ffffffffffffffffffffe001ff8
+fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000
+000000fffff80000000000003ffffffffffffffffffffc001ff8
+fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000
+000003fffff00000000000007ffffffffffffffffffffc001ff8
+fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000
+000007ffffe00000000000007ffffffffffffffffffffe003ff8
+fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000
+000007ffffe0000000000000fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000
+00001fffffc0000000000001fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000
+00001fffffc0000000000003fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000
+00003fffff80000000000003fffffffffffffffffffffc007ff8
+ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000
+00007fffff80000000000007fffffffffffffffffffffc007ff8
+ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000
+0000ffffff0000000000000ffffffffffffffffffffffc007ff8
+fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000
+0001ffffff0000000000001ffffffffffffffffffffffc007ff8
+fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000
+0003fffffe0000000000001ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000
+0007fffffe0000000000003ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000
+001ffffffc0000000000007ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000
+003ffffffc000000000000fffffffffffffffffffffff800fff8
+ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000
+00fffffff8000000000003fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000
+03fffffff8000000000003fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000
+07fffffff0000000000007fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000
+3ffffffff000000000000ffffffffffffffffffffffff003fff8
+ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f
+fffffffff000000000003ffffffffffffffffffffffff003fff8
+ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffff800000000007ffffffffffffffffffffffff003fff8
+fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffff80000000000ffffffffffffffffffffffffe003fff8
+fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffc0000000003ffffffffffffffffffffffffe007fff8
+fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffe0000000007ffffffffffffffffffffffffe007fff8
+fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffe000000000fffffffffffffffffffffffffe00ffff8
+fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff000000001fffffffffffffffffffffffffe00ffff8
+ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff
+ffffffffff800000007fffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff
+ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff
+ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff
+fffffffffff800001fffffffffffffffffffffffffffc01ffff8
+ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff
+fffffffffffe00007fffffffffffffffffffffffffffc01ffff8
+ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff
+ffffffffffff8003ffffffffffffffffffffffffffff801ffff8
+ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe01fffff8
+ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc03fffff8
+fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff803fffff8
+fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff803fffff8
+fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe01ffffff8
+ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
+ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
+ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc03ffffff8
+fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff803ffffff8
+fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff803ffffff8
+fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff807ffffff8
+fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff807ffffff8
+fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff007ffffff8
+fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00fffffff8
+fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00fffffff8
+ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe03fffffff8
+ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe03fffffff8
+ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffc07fffffff8
+ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffc07fffffff8
+fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff807fffffff8
+fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff807fffffff8
+fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ffffffff8
+fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ffffffff8
+fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe01ffffffff8
+fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
+ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
+ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
+ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
+ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff80fffffffff8
+ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff81fffffffff8
+ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff81fffffffff8
+ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff01fffffffff8
+ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff03fffffffff8
+ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe07fffffffff8
+fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc07fffffffff8
+fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc07fffffffff8
+fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
+fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
+fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff80ffffffffff8
+fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff80ffffffffff8
+fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff00ffffffffff8
+fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff01ffffffffff8
+fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff01ffffffffff8
+fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffe01ffffffffff8
+ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffe03ffffffffff8
+ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffdffffffffffffffffffe03ffffffffff8
+ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8
+ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff
+ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8
+ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff03ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff03ffffffffffffffffff01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+ffffffffffffffffff07ffffffffffffffffff01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+fffffffffffffffffe07fffffffffffffffffe01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+fffffffffffffffffc07fffffffffffffffffe03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
+fffffffffffffffffc07fffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
+fffffffffffffffff03ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
+ffffffffffffffffe01ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
+ffffffffffffffffe03ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
+ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
+ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
+ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff
+ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
+fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
+fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
+fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff
+fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff
+fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
+fffffffffffffff807ffffffffffffffffffc03ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff807ffffffffffffffffff803ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff00fffffffffffffffffff803ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff00fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffe01fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffe03fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc03fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff807fffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff807fffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00fffffffffffffffffffe00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffe01fffffffffffffffffffe01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffe03fffffffffffffffffffe01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffc03fffffffffffffffffffc01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffc07fffffffffffffffffffc01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff807fffffffffffffffffffc03fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff00ffffffffffffffffffffc03fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff00ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc03ffffffffffffffffffff807fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc03ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff807ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff807ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00fffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
+fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
+fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
+fffffffffff803ffffffffffffffffffffc00ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff
+fffffffffff807ffffffffffffffffffffc00ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff
+fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff
+fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff
+ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffff801fffffffffffffffffffff801ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffff803fffffffffffffffffffff801ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff
+ffffffffff003fffffffffffffffffffff803ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff
+fffffffffe007fffffffffffffffffffff803ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff
+fffffffffc007fffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff
+fffffffffc00ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
+fffffffff800ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
+fffffffff801ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff
+fffffffff803ffffffffffffffffffffff007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff
+fffffffff003fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff
+ffffffffe007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff
+ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff
+ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
+ffffffff800ffffffffffffffffffffffe00fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
+ffffffff000ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff
+fffffffe001ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
+fffffffc003ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
+9ffffffc003ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff
+0ffffff8003ffffffffffffffffffffffc01fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
+07fffff0007ffffffffffffffffffffffc01fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
+07ffffe000fffffffffffffffffffffffc01fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8
+03ffffc000fffffffffffffffffffffffc01fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0
+03ffff8001fffffffffffffffffffffff801fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0
+01ffff0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
+00fffe0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
+00fffe0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0
+003ffc0007fffffffffffffffffffffff003fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80
+001fe0001ffffffffffffffffffffffff003fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00
+000fc0001ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00
+000000001ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00
+000000003ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00
+000000003ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800
+000000007fffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800
+000000007fffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000
+00000003ffffffffffffffffffffffffc00ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000
+00000003ffffffffffffffffffffffffc00ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000
+00000007ffffffffffffffffffffffffc00ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000
+0000000fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000
+0000001fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000
+0000001fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000
+0000003fffffffffffffffffffffffffc01ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000
+0000007fffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000
+0000007fffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000
+000000ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000
+000001ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
+000001ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
+000003ffffffffffffffffffffffffff801ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000
+000003ffffffffffffffffffffffffff801ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000
+000007ffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000
+00000fffffffffffffffffffffffffff003ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000
+00000fffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000
+00001fffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200
+00003fffffffffffffffffffffffffff007ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700
+00007fffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80
+0000ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80
+0001ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0
+0001ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0
+0003ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0
+0007ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0
+0007ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8
+001fffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc
+007fffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe
+00ffffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff
+dfffffffffffffffffffffffffffffff0ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff
+fffffffffffffffffffffffffffffffe3ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff
+ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff
+ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+
+
+showpage
+
+% stop using temporary dictionary
+end
+
+% restore original state
+origstate restore
+
+%%Trailer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/gnus-refcard.tex	Mon Apr 04 16:43:15 2005 +0000
@@ -0,0 +1,1427 @@
+\documentclass{article}
+
+% Previously we had five input LaTeX files (booklet.tex bk-lt.tex bk-a4.tex
+% refcard.tex gnusref.tex) and two logo files (gnuslogo-refcard.eps and
+% gnuslogo-booklet.eps).
+%
+% From this LaTeX file (gnus-refcard.tex) plus a single logo (gnus-logo.eps),
+% we can generate the refcard and the booklet version.  Appropriate Makefile
+% rules were added.  This simplifies to distribute the refcard with Emacs.
+%
+% (Reiner Steib, March 2005)
+
+\usepackage{ifthen}
+\ifthenelse{\isundefined{\booklettrue}}{
+  \typeout{Creating reference card...}
+}{
+  \typeout{Creating reference booklet...}}
+
+\usepackage{supertabular}
+
+\newlength{\logowidth}  \setlength{\logowidth} {6.861in}
+\newlength{\logoheight} \setlength{\logoheight}{7.013in}
+
+\usepackage{graphicx}
+
+\usepackage{geometry}
+
+\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  % Reference Card
+  
+  \def\Guide{Card}\def\guide{card}
+  \def\logoscale{0.25}
+  
+  % Page setup for the refcard:
+  
+  % \setlength{\textwidth}{7.26in} \setlength{\textheight}{10in}
+  % \setlength{\topmargin}{-1.0in}
+  % % the same settings work for A4, although there is a bit of space at the
+  % % top and bottom of the page. 
+  % \setlength{\oddsidemargin}{-0.5in} \setlength{\evensidemargin}{-0.5in}
+
+  \ifthenelse{\isundefined{\letterpapertrue}}{
+    \geometry{a4paper,hmargin=10mm,tmargin=10mm,bmargin=35mm}
+  }{
+    \geometry{hmargin=20mm,tmargin=10mm,bmargin=12mm}
+  }
+  
+}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  % Reference Booklet
+  
+  \def\Guide{Booklet}\def\guide{booklet}
+  \def\logoscale{0.5}% FIXME: too large for 2up printing?  --rsteib
+  
+  % FIXME: Use geometry package.  --rsteib
+%   \ifthenelse{\isundefined{\letterpapertrue}}{
+%     \textwidth 4.9in \textheight 7.35in \topmargin -1.0in
+%   }{
+%     \textwidth 4.5in \textheight 7.5in \topmargin -1.0in
+%   }
+%   \oddsidemargin -0.5in \evensidemargin -0.5in
+  \ifthenelse{\isundefined{\letterpapertrue}}{
+    \geometry{a5paper,hmargin=10mm,tmargin=10mm,bmargin=4mm}
+  }{
+    % FIXME: Use geometry package.  --rsteib
+    \geometry{a5paper,hmargin=20mm,tmargin=10mm,bmargin=4mm}
+  }
+  
+  \def\sec{\section}
+  \def\subsec{\subsection}
+  \def\subsubsec{\subsubsection}
+  \def\blankpage{\vspace*{\fill}\par
+  %\centerline{(This page intentionally left blank.)}
+  \par\vspace*{\fill}\pagebreak}
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %  
+%% include file for the Gnus refcard and booklet
+
+\def\progver{5.10}\def\refver{5.10-2} % program and refcard versions
+\def\date{Mar, 2005}
+\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
+
+%%
+\newlength{\keycolwidth}
+\newenvironment{keys}[1]% #1 is the widest key
+{\nopagebreak%\noindent%
+  \settowidth{\keycolwidth}{#1}%
+  \addtolength{\keycolwidth}{\tabcolsep}%
+  \addtolength{\keycolwidth}{-\columnwidth}%
+  \begin{supertabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}%
+  {\end{supertabular}\\}
+
+%% uncomment the first definition if you do not want pagebreaks in maps
+%%\newcommand{\esamepage}{\samepage}
+\newcommand{\esamepage}{}
+
+\newcommand*{\B}[1]{{\bf#1})}    % bold l)etter
+
+\newcommand{\Title}{%
+  \begin{center}
+    {\bf\LARGE Gnus \progver\ Reference \Guide\\}
+                                %{\normalsize \Guide\ version \refver}
+  \end{center}
+  }
+
+% \newcommand*{\LogoOLD}[1]{\centerline{%
+%     \makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight
+%       {\vfill\epsfig{figure=gnuslogo-#1}}\vspace{-\baselineskip}}}}
+
+\newcommand*{\Logo}[1]{\centerline{%
+    \includegraphics[width=\logoscale\logowidth]{gnus-logo}}}
+
+\newcommand{\Copyright}{%
+  \begin{center}
+    Copyright \copyright\ 1995 Free Software Foundation, Inc.\\*
+    Copyright \copyright\ 1995 Vladimir Alexiev
+    $<$vladimir@cs.ualberta.ca$>$.\\*
+    Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\*
+    Copyright \copyright\ 2001, 2002, 2003, 2005 \author.\\*
+    Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne
+    Ingebrigtsen.\\*
+    and the Emacs Help Bindings feature (C-h b).\\*
+    Gnus logo copyright \copyright\ 1995 Luis Fernandes.\\*
+  \end{center}
+
+  Permission is granted to make and distribute copies of this reference
+  \guide{} provided the copyright notice and this permission are preserved on
+  all copies.  Please send corrections, additions and suggestions to the
+  current maintainer's email address. \Guide{} last edited on \date.
+  }
+
+\newcommand{\Notes}{%
+  \subsection*{Notes}
+  {\esamepage
+    Gnus is complex. Currently it has some 876 interactive (user-callable)
+    functions. Of these 618 are in the two major modes (Group and
+    Summary/Article). Many of these functions have more than one binding, some
+    have 3 or even 4 bindings. The total number of keybindings is 677. So in
+    order to save 40\% space, every function is listed only once on this
+    \guide, under the ``more logical'' binding. Alternative bindings are given
+    in parentheses in the beginning of the description.
+
+    Many Gnus commands are affected by the numeric prefix. Normally you enter a
+    prefix by holding the Meta key and typing a number, but in most Gnus modes
+    you don't need to use Meta since the digits are not self-inserting. The
+    prefixed behavior of commands is given in [brackets]. Often the prefix is
+    used to specify:
+
+    \quad [distance] How many objects to move the point over.
+
+    \quad [scope] How many objects to operate on (including the current one).
+
+    \quad [p/p] The ``Process/Prefix Convention'': If a prefix is given then it
+    determines how many objects to operate on. Else if there are some objects
+    marked with the process mark \#, these are operated on. Else only the
+    current object is affected.
+
+    \quad [level] A group subscribedness level. Only groups with a lower or
+    equal level will be affected by the operation. If no prefix is given,
+    `gnus-group-default-list-level' is used.  If
+    `gnus-group-use-permanent-levels', then a prefix to the `g' and `l'
+    commands will also set the default level.
+
+    \quad [score] An article score. If no prefix is given,
+    `gnus-summary-default-score' is used. \\*[\baselineskip]
+                                % some keys
+    Gnus startup-commands:\\*
+    \begin{keys}{M-x gnus-unplugged}
+      M-x gnus           & start Gnus. \\
+      M-x gnus-no-server & start Gnus without connecting to server
+      (i.e. to read mail). \\
+    \end{keys}
+    Additionally, there are the two commands \texttt{gnus-plugged} and
+    \texttt{gnus-unplugged}, which are only used if you want to download
+    news and/or read previously downloaded news offline (see C-c C-i g Gnus
+    Unplugged RET). Note: \texttt{gnus-no-server} ignores the stuff in
+    \texttt{gnus-agent-directory}, and thus does not allow you to use Gnus
+    Unplugged.
+                                %
+    \begin{keys}{C-c C-i}
+      C-c C-i & Go to the Gnus online {\bf info}.\\
+      C-c C-b & Send a Gnus {\bf bug} report.\\
+    \end{keys}
+    }}
+
+\newcommand{\GroupLevels}{%
+  The table below assumes that you use the default Gnus levels.
+  Fill your user-specific levels in the blank cells.\\[1\baselineskip]
+  \begin{tabular}{|c|l|l|}
+    \hline
+    Level & Groups & Status \\
+    \hline
+    1 & draft/mail groups   &              \\
+    2 & mail groups         &              \\
+    3 &                     & subscribed   \\
+    4 &                     &              \\
+    5 & default list level  &              \\
+    \hline
+    6 &                     & unsubscribed \\
+    7 &                     &              \\
+    \hline
+    8 &                     & zombies      \\
+    \hline
+    9 &                     & killed       \\
+    \hline
+  \end{tabular}}
+
+\newcommand{\MarkCharacters}{%
+  {\esamepage If a command directly sets a mark, it is shown in parentheses.\\*
+    \newlength{\markcolwidth}
+    \settowidth{\markcolwidth}{` '}% widest character
+    \addtolength{\markcolwidth}{4\tabcolsep}
+    \addtolength{\markcolwidth}{-\columnwidth}
+    \newlength{\markdblcolwidth}
+    \setlength{\markdblcolwidth}{\columnwidth}
+    \addtolength{\markdblcolwidth}{-2\tabcolsep}
+    \begin{tabular}{|c|p{-\markcolwidth}|}
+      \hline
+      \multicolumn{2}{|p{\markdblcolwidth}|}{{\bf ``Read'' Marks.}
+        All these marks appear in the first column of the summary line, and so
+        are mutually exclusive.}\\ 
+      \hline
+      ` ' & (M-u, M SPC, M c) Not read.\\
+      !   & (!, M !, M t) Ticked (interesting).\\
+      ?   & (?, M ?) Dormant (only followups are interesting).\\
+      E   & (E, M e, M x) {\bf Expirable}. Only has effect in mail groups.\\
+      G   & (C, B DEL) Canceled article (or deleted in mailgroups).\\
+      \$  & (M-d, M s x, S x).  Marked as spam.\\
+      \hline\hline
+      \multicolumn{2}{|p{\markdblcolwidth}|}
+      {The marks below mean that the article
+        is read (killed, uninteresting), and have more or less the same effect.
+        Some commands however explicitly differentiate between them (e.g.\ M
+        M-C-r, adaptive scoring).}\\
+      \hline
+      r   & (d, M d, M r) Deleted (marked as {\bf read}).\\
+      C   & (M C; M C-c; M H; c, Z c; Z n; Z C) Killed by {\bf catch-up}.\\
+      F   & SOUPed article. See the manual.\\
+      O   & {\bf Old} (read in a previous session).\\
+      K   & (k, M k; C-k, M K) {\bf Killed}.\\
+      M   & Article marked as read by duplicate suppression.\\
+      Q   & Article is part of a sparse thread (see ``Threading''
+      in the manual).\\
+      R   & {\bf Read} (viewed in actuality).\\
+      X   & Killed by a kill file.\\
+      Y   & Killed due to low score.\\
+      \hline\multicolumn{2}{c}{\vspace{1ex}}\\\hline
+      \multicolumn{2}{|p{\markdblcolwidth}|}
+      {{\bf Marks not affecting visibility}}\\
+      \hline
+      \#  & (\#, M \#, M P p) Processable (will be affected by the next operation).
+      [2]\\
+      A   & {\bf Answered} (followed-up or replied). [2]\\
+      F   & Forwarded. [2]\\
+      $\ast$  & Cached. [2]\\
+      S   & Saved. [2]\\
+      N   & Recently arrived. [2]\\
+      .   & Unseen. [2]\\
+      +   & Over default score. [3]\\
+      $-$ & Under default score. [3]\\
+      $=$ & Has children (thread underneath it). Add `\%e' to
+      `gnus-summary-line-format'. [3]\\
+      \hline
+    \end{tabular}
+    }}
+
+\newcommand{\GroupModeGeneral}{%
+  \begin{keys}{C-c M-C-x}
+    RET     & (=) Enter this group. [Prefix: how many (read) articles to fetch.
+    Positive: newest articles, negative: oldest ones; non-numerical:
+    view all articles, not just unread]\\
+    M-RET   & Enter group quickly.\\
+    M-SPC   & Same as RET but does not expunge and hide dormants.\\
+    M-C-RET & Enter group without any processing, changes will not be permanent.\\
+    SPC     & Select this group and display the first (unread) article. [Same
+    prefix as above.]\\
+    ?       & Give a very short help message.\\
+    $<$     & Go to the beginning of the Group buffer.\\
+    $>$     & Go to the end of the Group buffer.\\
+    ,       & Jump to the lowest-level group with unread articles.\\
+    .       & Jump to the first group with unread articles.\\
+    \^{}      & Enter the Server buffer mode.\\
+    a       & Post an {\bf article} to a group
+              [Prefix: use group under point to find posting-style].\\
+    b       & Find {\bf bogus} groups and delete them.\\
+    c       & Mark all unticked articles in this group as read ({\bf catch-up}).
+    [p/p]\\ 
+    g       & Check the server for new articles ({\bf get}). [level]\\
+    M-g     & Check the server for new articles in this group ({\bf get}). [p/p]\\
+    j       & {\bf Jump} to a group.\\
+    m       & {\bf Mail} a message to someone
+              [Prefix: use group under point to find posting-style].\\
+    n       & Go to the {\bf next} group with unread articles. [distance]\\
+    M-n     & Go to the {\bf next} group on the same or lower level.
+    [distance]\\ 
+    p       & (DEL) Go to the {\bf previous} group with unread articles.
+    [distance]\\ 
+    M-p     & Go to the {\bf previous} group on the same or lower level. [distance]\\ 
+    q       & {\bf Quit} Gnus.\\
+    r       & Re-read the init file ({\bf reset}).\\
+    s       & {\bf Save} the `.newsrc.eld' file (and `.newsrc' if
+    `gnus-save-newsrc-file').\\ 
+    z       & Suspend (kill all buffers of) Gnus.\\
+    B       & {\bf Browse} a foreign server.\\
+    C       & Mark all articles in this group as read ({\bf Catch-up}). [p/p]\\
+    F       & {\bf Find} new groups and process them.\\
+    N       & Go to the {\bf next} group. [distance]\\
+    P       & Go to the {\bf previous} group. [distance]\\
+    Q       & {\bf Quit} Gnus without saving any startup (.newsrc) files.\\
+    R       & {\bf Restart} Gnus.\\
+    Z       & Clear the dribble buffer.\\
+    M-c     & Clear data from group (marks and list of read articles). \\
+    C-c C-s & {\bf Sort} the groups by name, number of unread articles, or level
+    (depending on `gnus-group-sort-function').\\
+    C-c C-x & Run all expirable articles in this group through the {\bf expiry} 
+    process.\\
+    C-c M-C-x & Run all articles in all groups through the {\bf expiry} process.\\
+    C-c M-g & Activate all {\bf groups}.\\
+    C-c C-i & Gnus online-manual ({\bf info}).\\
+    C-x C-t & {\bf Transpose} two groups.\\
+    H f     & Fetch this group's {\bf FAQ} (using ange-ftp).\\
+    H c     & Display this group's {\bf charter}. [Prefix: query for group]\\
+    H C     & Display this group's {\bf control message} (using
+    ange-ftp). [Prefix: query for group]\\
+    H v     & (V) Display the Gnus {\bf version} number.\\
+    H d     & (C-c C-d) Show the {\bf description} of this group
+    [Prefix: re-read from server].\\ 
+    M-d     & {\bf Describe} all groups. [Prefix: re-read from server]\\
+    D g     & Regenerate a Sieve script from group parameters.\\
+    D u     & Regenerate Sieve script and {\bf upload} to server.\\
+  \end{keys}
+  }
+
+\newcommand{\ListGroups}{%
+  {\esamepage
+    \begin{keys}{A M}
+      A d     & (C-c C-M-a) List all groups whose names or {\bf descriptions} match a regexp.\\ 
+      A k     & (C-c C-l) List all {\bf killed} groups.
+      [Prefix: look at active-file from server]\\
+      A l     & List all groups on a specific level.
+      [Prefix: also list groups with no unread articles]\\
+      A a     & (C-c C-a) List all groups whose names match a regexp
+      ({\bf apropos}).\\ 
+      A A     & List the server's active-file.\\
+      A M     & List groups that {\bf match} a regexp.\\
+      A m     & List groups that {\bf match} a regexp and have unread articles. 
+      [level]\\ 
+      A s     & (l) List all {\bf subscribed} groups with unread articles.
+      [level; 5 and lower is the default]\\
+      A u     & (L) List all groups (including read and {\bf unsubscribed}).
+      [level; 7 and lower is the default]\\
+      A z     & List all {\bf zombie} groups.\\
+      A c     & List all groups with cached articles. [level]\\
+      A ?     & List all groups with dormant articles. [level]\\
+    \end{keys}
+  }
+  
+  \newcommand{\CreateEditGroups}{%
+    {\esamepage
+      The select methods are indicated in parentheses.\\*
+      \begin{keys}{G DEL}
+        G a     & Make the Gnus list {\bf archive} group. (nndir over ange-ftp)\\
+        G c     & {\bf Customize} this group's parameters.\\
+        G d     & Make a {\bf directory} group (every file must be a posting and files
+        must have numeric names). (nndir)\\
+        G D     & Enter a {\bf directory} as a (temporary) group.
+        (nneething without recording articles read)\\
+        G e     & (M-e) {\bf Edit} this group's select method.\\
+        G E     & {\bf Edit} this group's info (select method, articles read, etc).\\
+        G f     & Make a group based on a {\bf file}. (nndoc)\\
+        G h     & Make the Gnus {\bf help} (documentation) group. (nndoc)\\
+        G k     & Make a {\bf kiboze} group. (nnkiboze)\\
+        G m     & {\bf Make} a new group.\\
+        G p     & Edit this group's {\bf parameters}.\\
+        G r     & Rename this group (does not work with read-only groups!).\\
+        G u     & Create one of the groups mentioned in gnus-{\bf useful}-groups.\\
+        G v     & Add this group to a {\bf virtual} group. [p/p]\\
+        G V     & Make a new empty {\bf virtual} group. (nnvirtual)\\
+        G w     & Create ephemeral group based on web-search. [Prefix: make solid group
+        instead]\\
+        G R     & Make an {\bf RSS} group.\\
+        G DEL   & {\bf Delete} group [Prefix: delete all articles as well].\\
+        G x     & Expunge all deleted articles in an nnimap mailbox.\\
+        G l     & Edit ACL (Access Control {\bf List}) for an nnimap mailbox.\\
+      \end{keys}
+      You can also create mail-groups and read your mail with Gnus (very useful
+      if you are subscribed to mailing lists), using one of the methods
+      nnmbox, nnbabyl, nnml, nnmh, or nnfolder. Read about it in the online info
+      (C-c C-i g Reading Mail RET).
+      }}
+
+                                % TODO:
+  \newcommand{\SoupCommands}{%
+    \begin{keys}{G s w}
+      G s b   & gnus-group-brew-soup: not documented.\\
+      G s p   & gnus-soup-pack-packet: not documented.\\
+      G s r   & nnsoup-pack-replies: not documented.\\
+      G s s   & gnus-soup-send-replies: not documented.\\
+      G s w   & gnus-soup-save-areas: not documented.\\
+    \end{keys}}
+
+  \newcommand{\MarkGroups}{%
+    \begin{keys}{M m}
+      M m     & (\#) Set the process {\bf mark} on this group. [scope]\\
+      M r     & Mark all groups matching regular expression.\\
+      M u     & (M-\#) Remove the process mark from this group ({\bf unmark}).
+      [scope]\\ 
+      M U     & Remove the process mark from all groups (\textbf{umark all}).\\
+      M w     & Mark all groups in the current region. [prefix: unmark]\\
+      M b     & Mark all groups in the {\bf buffer}. [prefix: unmark]\\
+    \end{keys}}
+
+  \newcommand{\GroupTopicsGeneral}{%
+    {\esamepage
+      Topics are ``categories'' for groups. Press t in the group-buffer to
+      toggle gnus-topic-mode (C-c C-i g Group Topics RET).\\*
+      \begin{keys}{C-c C-x}
+        T n     & Prompt for topic {\bf name} and create it.\\
+        T m     & {\bf Move} the current group to some other topic [p/p].\\
+        T j     & {\bf Jump} to a topic.\\
+        T c     & {\bf Copy} the current group to some other topic [p/p].\\
+        T D     & Remove (not delete) the current group [p/p].\\
+        T M     & {\bf Move} all groups matching a regexp to a topic.\\
+        T C     & {\bf Copy} all groups matching a regexp to a topic.\\
+        T H     & Toggle {\bf hiding} of empty topics.\\
+        T r     & {\bf Rename} a topic.\\
+        T DEL   & Delete an empty topic.\\
+        T \#    & Mark all groups in the current topic with the process-mark.\\
+        T M-\#  & Remove the process-mark from all groups in the current topic.\\
+        T TAB   & (TAB) Indent current topic [Prefix: unindent].\\ 
+        M-TAB   & Unindent the current topic.\\
+        RET     & (SPC) Either unfold topic or enter group [level].\\
+        T s     & {\bf Show} the current topic. [Prefix: show permanently]\\
+        T h     & {\bf Hide} the current topic. [Prefix: hide permanently]\\
+        C-c C-x & Expire all articles in current group or topic.\\
+        C-k     & {\bf Kill} a group or topic.\\
+        C-y     & {\bf Yank} a group or topic.\\
+        A T     & List active-file using {\bf topics}.\\
+        G p     & Edit topic-{\bf parameters}.\\
+        T M-n   & Go to {\bf next} topic. [distance]\\
+        T M-p   & Go to {\bf previous} topic. [distance]\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\TopicSorting}{%
+    {\esamepage
+      \begin{keys}{T S m}
+        T S a  & Sort {\bf alphabetically}.\\
+        T S u  & Sort by number of {\bf unread} articles.\\
+        T S l  & Sort by group {\bf level}.\\
+        T S v  & Sort by group score ({\bf value}).\\
+        T S r  & Sort by group {\bf rank}.\\
+        T S m  & Sort by {\bf method}.\\
+        T S e  & Sort by {\bf server} name.\\
+        T S s  & Sort according to `gnus-group-sort-function'.\\
+      \end{keys}
+      With a prefix these commands will sort in reverse order.
+      }
+    }
+
+  \newcommand{\SubscribeKillYankGroups}{%
+    {\esamepage
+      \begin{keys}{S C-k}
+        S k     & (C-k) {\bf Kill} this group.\\
+        S l     & Set the {\bf level} of this group. [p/p]\\
+        S s     & (U) Prompt for a group and toggle its {\bf subscription}.\\
+        S t     & (u) {\bf Toggle} subscription to this group. [p/p]\\
+        S w     & (C-w) Kill all groups in the region.\\
+        S y     & (C-y) {\bf Yank} the last killed group.\\
+        S z     & Kill all {\bf zombie} groups.\\
+        S C-k   & Kill all groups on a certain level.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\SummaryModeGeneral}{%
+    {\esamepage
+      \begin{keys}{M-RET}
+        SPC     & (A SPC, A n) Select an article, scroll it one page, move to the
+        next one.\\ 
+        DEL     & (A DEL, A p, b) Scroll this article one page back. [distance]\\
+        RET     & (A RET) Scroll this article one line forward. [distance]\\
+        M-RET   & (A M-RET) Scroll this article one line backward. [distance]\\
+        =       & Expand the Summary window (fullsize).
+        [Prefix: shrink to display article window]\\
+                                %
+        \&      & Execute a command on all articles whose header matches a regexp.
+        [Prefix: move backwards]\\
+        M-\&    & Execute a command on all articles having the process mark.\\
+                                %
+        M-n     & (G M-n) Go to the {\bf next} summary line of an unread article.
+        [distance]\\ 
+        M-p     & (G M-p) Go to the {\bf previous} summary line of an unread article. 
+        [distance]\\ 
+        M-s     & {\bf Search} through all subsequent articles for a regexp.\\
+        M-r     & Search through all previous articles for a regexp.\\
+                                %
+        A P     & {\bf Postscript}-print current buffer.\\
+                                %
+        M-k     & Edit this group's {\bf kill} file.\\
+        M-K     & Edit the general {\bf kill} file.\\
+                                %
+        C-t     & Toggle {\bf truncation} of summary lines.\\
+        Y g     & Regenerate the summary-buffer.\\
+        Y c     & Insert all cached articles into the summary-buffer.\\
+                                %
+        M-C-e   & {\bf Edit} the group-parameters.\\
+        M-C-a   & Customize the group-parameters.\\
+                                %
+                                % article handling
+                                %
+        A $<$   & ($<$, A b) Scroll to the beginning of this article.\\
+        A $>$   & ($>$, A e) Scroll to the end of this article.\\
+        A s     & (s) Perform an i{\bf search} in the article buffer.\\
+                                %
+        A D     & (C-d) Un{\bf digestify} this article into a separate group.
+        [Prefix: force digest]\\
+        M-C-d   & Like C-d, but open several documents in nndoc-groups, wrapped
+        in an nnvirtual group [p/p]\\
+                                %
+        A g     & (g) (Re)fetch this article ({\bf get}). [Prefix: get raw version]\\ 
+        A r     & (\^{}, A \^{}) Fetch the parent(s) of this article.
+        [Prefix: if positive fetch \textit{n} ancestors;
+        negative: fetch only the \textit{n}th ancestor]\\
+        A t     & {\bf Translate} this article.\\
+        A R     & Fetch all articles mentioned in the {\bf References}-header.\\
+        A T     & Fetch full \textbf{thread} in which the current article appears.\\
+        M-\^{}  & Fetch the article with a given Message-ID.\\
+        S y     & {\bf Yank} the current article into an existing message-buffer.
+        [p/p]\\
+        A M     & Setup group parameters for {\bf mailing} lists from
+        headers. [Prefix: replace old settings]\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\MIMESummary}{%
+    {\esamepage
+      For the commands operating on one MIME part (a subset of gnus-article-*), a
+      prefix selects which part to operate on. If the point is placed over a
+      MIME button in the article buffer, use the corresponding bindings for the
+      article buffer instead.
+      
+      \begin{keys}{W M w}
+        K v      & (b, W M b) {\bf View} the MIME-part.\\
+        K o      & {\bf Save} the MIME part.\\
+        K c      & {\bf Copy} the MIME part.\\
+        K e      & View the MIME part {\bf externally}.\\
+        K i      & View the MIME part {\bf internally}.\\
+        K $\mid$ & Pipe the MIME part to an external command.\\
+        K b      & Make all the MIME parts have buttons in front of them.\\
+        K m      & Try to repair {\bf multipart-headers}.\\
+        K C      & View the MIME part using a different {\bf charset}.\\
+        X m      & Save all parts matching a MIME type to a directory. [p/p]\\
+        M-t      & Toggle the buttonized display of the article buffer.\\
+        W M w    & Decode RFC2047-encoded words in the article headers.\\
+        W M c    & Decode encoded article bodies. [Prefix: prompt for charset]\\
+        W M v    & View all MIME parts in the current article.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\SortSummary}{%
+    {\esamepage
+      \begin{keys}{C-c C-s C-a}
+        C-c C-s C-a & Sort the summary-buffer by {\bf author}.\\
+        % C-c C-s C-t & Sort the summary-buffer by {\bf recipient}.\\ % No Gnus
+        C-c C-s C-d & Sort the summary-buffer by {\bf date}.\\
+        C-c C-s C-i & Sort the summary-buffer by article score.\\
+        C-c C-s C-l & Sort the summary-buffer by amount of {\bf lines}.\\
+        C-c C-s C-c & Sort the summary-buffer by length.\\
+        C-c C-s C-n & Sort the summary-buffer by article {\bf number}.\\
+        C-c C-s C-s & Sort the summary-buffer by {\bf subject}.\\
+        C-c C-s C-r & Sort the summary-buffer {\bf randomly}.\\
+        C-c C-s C-o & Sort the summary-buffer using the default method.\\
+      \end{keys}
+      With a prefix these functions sort in reverse order.
+      }
+    }
+
+  \newcommand{\MailGroups}{% formerly \Bsubmap
+    {\esamepage
+      These commands (except `B c') are only valid in a mail group.\\*
+      \begin{keys}{B M-C-e}
+        B DEL   & (B backspace, B delete) {\bf Delete} the mail article from disk (!).
+        [p/p]\\
+        B B     & Crosspost this article to another group.\\
+        B c     & {\bf Copy} this article from any group to a mail group. [p/p]\\
+        B e     & {\bf Expire} all expirable articles in this group. [p/p]\\
+        B i     & {\bf Import} a random file into this group.\\
+        B I     & Create an empty article in this group.\\
+        B m     & {\bf Move} the article from one mail group to another. [p/p]\\
+        B p     & Query whether the article was {\bf posted} as well.\\
+        B q     & {\bf Query} where the article will end up after fancy splitting\\
+        B r     & {\bf Respool} this mail article. [p/p]\\
+        B t     & {\bf Trace} the fancy splitting patterns applied to this article.\\
+        B w     & (e) Edit this article.\\
+        B M-C-e & {\bf Expunge} (delete from disk) all expirable articles in this group
+        (!). [p/p]\\ 
+        K E     & {\bf Encrypt} article body. [p/p]\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\DraftGroup}{% formerly \Dsubmap
+    {\esamepage
+      The ``drafts''-group contains messages that have been saved but not sent
+      and rejected articles. \\*
+      \begin{keys}{B DEL}
+        D e      & \textbf{edit} message.\\
+        D s      & \textbf{Send} message. [p/p]\\
+        D S      & \textbf{Send} all messages.\\
+        D t      & \textbf{Toggle} sending (mark as unsendable).\\
+        B DEL    & \textbf{Delete} message (like in mailgroup).\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\SelectArticles}{% formerly \Gsubmap
+    {\esamepage
+      These commands select the target article. They do not understand the prefix.\\*
+      \begin{keys}{G C-n}
+        h       & Enter article-buffer.\\
+        G b     & (,) Go to the {\bf best} article (the one with highest score).\\
+        G f     & (.) Go to the {\bf first} unread article.\\
+        G n     & (n) Go to the {\bf next} unread article.\\
+        G p     & (p) Go to the {\bf previous} unread article.\\
+                                %
+        G N     & (N) Go to {\bf the} next article.\\
+        G P     & (P) Go to the {\bf previous} article.\\
+                                %
+        G C-n   & (M-C-n) Go to the {\bf next} article with the same subject.\\
+        G C-p   & (M-C-p) Go to the {\bf previous} article with the same subject.\\
+                                %
+        G l     & (l) Go to the previously read article ({\bf last-read-article}).\\
+        G o     & Pop an article off the summary history and go to it.\\
+                                %
+        G g     & Search an article via subject.\\
+        G j     & (j) Search an article via Message-Id or subject.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\ArticleModeGeneral}{%
+    {\esamepage
+      The normal navigation keys work in Article mode. Some additional keys are:\\
+      \begin{keys}{C-c RET}
+        C-c \^{} & Get the article with the Message-ID near point.\\
+        C-c RET & Send reply to address near point.\\
+        h       & Go to the \textbf{header}-line of the article in the
+        summary-buffer.\\
+        s       & Go to \textbf{summary}-buffer.\\
+        RET     & (middle mouse button) Activate the button at point to follow
+        an URL or Message-ID.\\
+        TAB     & Move the point to the next button.\\
+        M-TAB   & Move point to previous button.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\WashArticle}{% formerly \Wsubmap
+    {\esamepage
+      \begin{keys}{W W H}
+        W 6     & Translate a base64 article.\\
+        W a     & Strip certain {\bf headers} from body.\\
+        W b     & Make Message-IDs and URLs in the article mouse-clickable
+        {\bf buttons}.\\  
+        W c     & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\
+        W d     & Treat {\bf dumbquotes}.\\
+        W e     & Treat {\bf emphasized} text.\\
+        W h     & Treat {\bf HTML}.\\
+        W l     & (w) Remove page breaks ({\bf\^{}L}) from the article.\\
+        W m     & {\bf Morse} decode article.\\
+        W o     & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\
+        W p     & Verify X-{\bf PGP}-Sig header.\\
+        W q     & Treat {\bf quoted}-printable in the article.\\
+        W r     & (C-c C-r) Do a Caesar {\bf rotate} (rot13) on the article.\\
+        W s     & Verify (and decrypt) a {\bf signed} message.\\
+        W t     & (t) {\bf Toggle} display of all headers.\\
+        W u     & {\bf Unsplit} broken URLs.\\
+        W v     & (v) Toggle permanent {\bf verbose} displaying of all headers.\\
+        W w     & Do word {\bf wrap} in the article.\\
+        W B     & Add clickable {\bf buttons} to the article headers.\\
+        W C     & {\bf Capitalize} first word in each sentence.\\
+        W Q     & Fill long lines.\\
+        W Z     & Translate a HZ-encoded article.\\
+                                %
+        W G u   & {\bf Unfold} folded header lines.\\
+        W G f   & {\bf Fold} all header lines.\\
+        W G n   & Unfold {\bf Newsgroups:} and Follow-Up-To:.\\
+                                %
+        W Y c   & Repair broken {\bf citations}.\\
+        W Y a   & Repair broken {\bf attribution} lines.\\
+        W Y u   & {\bf Unwrap} broken citation lines.\\
+        W Y f   & Do a {\bf full} deuglification (W Y c, W Y a, W Y u).\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\BlankAndWhitespace}{% 
+    {\esamepage
+      \begin{keys}{W E w}
+        W E l   & Strip blank {\bf lines} from the beginning of the article.\\
+        W E m   & Replace blank lines with empty lines and remove {\bf multiple}
+        blank lines.\\
+        W E t   & Remove {\bf trailing} blank lines.\\
+        W E a   & Strip blank lines at the beginning and the end
+        (W E l, W E m and W E t).\\
+        W E A   & Strip {\bf all} blank lines.\\
+        W E s   & Strip leading blank lines from the article body.\\
+        W E e   & Strip trailing blank lines from the article body.\\
+        W E w   & Remove leading {\bf whitespace} from all headers.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\Picons}{% 
+    {\esamepage
+      \begin{keys}{W D D}
+        W D s   & (W g) Display {\bf smilies}.\\
+        W D x   & (W f) Look for and display any X-{\bf Face} headers.\\
+        W D d   & Display any Face headers.\\
+        W D n   & Toggle picons in {\bf Newsgroups} and Followup-To.\\
+        W D m   & Toggle picons in {\bf mail} headers (To and Cc).\\
+        W D f   & Toggle picons in {\bf From}.\\
+        W D D   & Remove all images from the article buffer.\\
+      \end{keys}
+      }
+    }
+
+  \newcommand{\TimeAndDate}{% 
+    {\esamepage
+      \begin{keys}{W T u}
+        W T u   & (W T z) Display the article timestamp in GMT ({\bf UT, ZULU}).\\
+        W T i   & Display the article timestamp in {\bf ISO} 8601.\\
+        W T l   & Display the article timestamp in the {\bf local} timezone.\\
+        W T s   & Display according to `gnus-article-time-format'.\\
+        W T e   & Display the time {\bf elapsed} since it was sent.\\
+        W T o   & Display the {\bf original} timestamp.\\
+        W T p   & Display the date in format that's {\bf
+          pronounceable} in English.\\        
+      \end{keys}
+      }
+    }
+
+  \newcommand{\HideHighlightArticle}{%
+    {\esamepage
+      \begin{keys}{W W C-c}
+        W W a   & Hide {\bf all} unwanted parts. Calls W W h, W W s, W W C-c.\\
+        W W h   & Hide article {\bf headers}.\\
+        W W b   & Hide {\bf boring} headers.\\
+        W W s   & Hide {\bf signature}.\\
+        W W l   & Hide {\bf list} identifiers in subject-header.\\
+        W W P   & Hide {\bf PEM} (privacy enhanced messages).\\
+        W W B   & Hide banner specified by group parameter.\\
+        W W c   & Hide {\bf citation}.\\
+        W W C-c & Hide {\bf citation} using a more intelligent algorithm.\\
+        W W C   & Hide cited text in articles that aren't roots.\\
+        W H a   & Highlight {\bf all} parts. Calls W b, W H c, W H h, W H s.\\
+        W H c   & Highlight article {\bf citations}.\\
+        W H h   & Highlight article {\bf headers}.\\
+        W H s   & Highlight article {\bf signature}.\\
+      \end{keys}
+      For all hiding-commands: A positive prefix always hides, and a negative
+      prefix will show what was previously hidden.
+      }}
+
+  \newcommand{\MIMEArticleMode}{%
+    {\esamepage
+      \begin{keys}{RET}
+        RET     & (BUTTON-2) Toggle display of the MIME object.\\
+        v       & Prompt for a method and then view object using this method.\\
+        o       & Prompt for a filename and save the MIME object.\\
+        C-o     & Prompt for a filename to save the MIME object to and remove it.\\
+        d       & {\bf Delete} the MIME object.\\
+        c       & {\bf Copy} the MIME object to a new buffer and display this buffer.\\
+        i       & Display the MIME object in this buffer.\\
+        C       & Copy the MIME object to a new buffer and display this buffer using {\bf Charset} \\
+        E       & View internally. \\
+        e       & View {\bf externally}. \\
+        t       & View the MIME object as a different {\bf type}.\\
+        p       & {\bf Print} the MIME object.\\
+        $\mid$  & Pipe the MIME object to a process.\\
+        .       & Take action on the MIME object.\\
+      \end{keys}
+      }
+    }
+
+  %% end of article mode for reading ..........................................
+
+  \newcommand{\MarkArticlesGeneral}{% formerly \Msubmap
+    {\esamepage
+      \begin{keys}{M M-C-r}
+        d       & (M d, M r) Mark this article as read and move to the next one.
+        [scope]\\ 
+        D       & Mark this article as read and move to the previous one. [scope]\\
+        !       & (u, M !, M t) Tick this article (mark it as interesting) and move
+        to the next one. [scope]\\
+        U       & Tick this article and move to the previous one. [scope]\\ 
+        M ?     & (?) Mark this article as dormant (only followups are
+        interesting). [scope]\\ 
+        M D     & Show all {\bf dormant} articles (normally they are hidden unless they
+        have any followups).\\
+        M M-D   & Hide all {\bf dormant} articles.\\
+        C-w     & Mark all articles between point and mark as read.\\
+        M-u     & (M SPC, M c) Clear all marks from this article and move to the next
+        one. [scope]\\ 
+        M-U     & Clear all marks from this article and move to the previous one.
+        [scope]\\
+                                %
+        M e     & (E, M x) Mark this article as {\bf expirable}. [scope]\\
+                                %
+        M k     & (k) {\bf Kill} all articles with the same subject then select the
+        next unread one.\\ 
+        M K     & (C-k) {\bf Kill} all articles with the same subject as this one.\\
+                                %
+        M C     & {\bf Catch-up} the articles that are not ticked and not dormant.\\
+        M C-c   & {\bf Catch-up} all articles in this group.\\
+        M H     & {\bf Catch-up} (mark read) this group to point (to-{\bf here}).\\
+                                %
+        M b     & Set a {\bf bookmark} in this article.\\
+        M B     & Remove the {\bf bookmark} from this article.\\
+                                %
+        M M-r   & (x) Expunge all {\bf read} articles from this group.\\
+        M M-C-r & Expunge all articles having a given mark.\\
+        M S     & (C-c M-C-s) {\bf Show} all expunged articles.\\
+        M M C-h & Displays some more keys doing ticking slightly differently.\\
+      \end{keys}
+      The variable `gnus-summary-goto-unread' controls what happens after a mark
+      has been set (C-x C-i g Setting Marks RET)
+      }}
+
+  \newcommand{\MarkByScore}{%
+    \begin{keys}{M V m}
+      M V c   & {\bf Clear} all marks from all high-scored articles. [score]\\
+      M V k   & {\bf Kill} all low-scored articles. [score]\\
+      M V m   & Mark all high-scored articles with a given {\bf mark}. [score]\\
+      M V u   & Mark all high-scored articles as interesting (tick them). [score]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\ProcessMark}{%
+  {\esamepage 
+    These commands set and remove the process mark (\#). You only need to use
+    it if the set of articles you want to operate on is non-contiguous. Else
+    use a numeric prefix.\\*
+    \begin{keys}{M P R}
+      M P p   & (\#, M \#) Mark this article.\\
+      M P u   & (M-\#, M M-\#) \textbf{unmark} this article.\\
+      M P b   & Mark all articles in {\bf buffer}.\\
+      M P r   & Mark all articles in the {\bf region}.\\
+      M P g   & Unmark all articles in the region.\\
+      M P R   & Mark all articles matching a {\bf regexp}.\\
+      M P G   & Unmark all articles matching a regexp.\\
+      M P t   & Mark all articles in this (sub){\bf thread}.\\
+      M P T   & Unmark all articles in this (sub){\bf thread}.\\
+      M P s   & Mark all articles in the current {\bf series}.\\
+      M P S   & Mark all {\bf series} that already contain a marked article.\\
+      M P a   & Mark {\bf all} articles (in series order).\\
+      M P U   & \textbf{unmark} all articles.\\
+      M P i   & {\bf Invert} the list of process-marked articles.\\
+      M P k   & Push the current process-mark set onto stack and unmark
+      all articles.\\
+      M P y   & Pop process-mark set from stack and restore it.\\
+      M P w   & Push process-mark set on the stack.\\
+      M P v   & Mark all articles with score over the default score. [Prefix: score]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\Limiting}{%
+  {\esamepage
+    \begin{keys}{/M}
+      //   & (/s) Limit the summary-buffer to articles matching {\bf subject}.\\
+      /a   & Limit the summary-buffer to articles matching {\bf author}.\\
+      /x   & Limit depending on ``extra'' headers.\\
+      /u   & (x) Limit to {\bf unread} articles.
+      [Prefix: also exclude ticked and dormant articles]\\
+      /.   & Limit to unseen articles.\\
+      /m   & Limit to articles marked with specified {\bf mark}.\\
+      /t   & Ask for a number and exclude articles younger than that many days.
+      [Prefix: exclude older articles]\\
+      /n   & Limit to current article. [p/p]\\
+      /w   & Pop the previous limit off the stack and restore it.
+      [Prefix: pop all limits]\\
+      /v   & Limit to score. [score]\\
+      /E   & (M S) Include all expunged articles in the limit.\\
+      /D   & Include all dormant articles in the limit.\\
+      /*   & Limit to cached articles.\\
+      Y C  & Include all cached articles in the limit.\\
+      /d   & Exclude all dormant articles from the limit.\\
+      /M   & Exclude all marked articles.\\
+      /T   & Include all articles from the current thread in the limit.\\
+      /c   & Exclude all dormant articles that have no children from the limit.\\
+      /C   & Mark all excluded unread articles as read.
+      [Prefix: also mark ticked and dormant articles]\\
+      /o   & Insert all {\bf old} articles. [Prefix: how many]\\
+      /N   & Insert all {\bf new} articles.\\
+      /p   & Limit to articles {\bf predicated} in the `display' group parameter.\\
+      % /r   & Limit to {\bf replied} articles. [Prefix: unreplied]\\ % No Gnus
+    \end{keys}
+    }
+  }
+
+\newcommand{\OutputArticles}{% formerly \Osubmap
+  {\esamepage
+    \begin{keys}{O m}
+      O o     & (o, C-o) Save this article using the default article saver. [p/p]\\
+      O b     & Save this article's {\bf body} in plain file format [p/p]\\
+      O f     & Save this article in plain {\bf file} format. [p/p]\\
+      O F     & like O f, but overwrite file's contents. [p/p]\\
+      O h     & Save this article in {\bf mh} folder format. [p/p]\\
+      O m     & Save this article in {\bf mail} format. [p/p]\\
+      O r     & Save this article in {\bf rmail} format. [p/p]\\
+      O v     & Save this article in {\bf vm} format. [p/p]\\
+      O p     & ($\mid$) {\bf Pipe} this article to a shell command. [p/p]\\
+      O P     & \textbf{Print} this article using Muttprint. [p/p]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\PostReplyetc}{% formerly \Ssubmap
+  {\esamepage
+    These commands put you in a separate news or mail buffer. See the section
+    about composing messages for more information.\\*
+                                %After
+                                %editing the article, send it by pressing C-c C-c.  If you are in a
+                                %foreign group and want to post the article using the foreign server, give
+                                %a prefix to C-c C-c.\\* 
+    \begin{keys}{S O m}
+      S p     & (a) {\bf Post} an article to this group.\\
+      S f     & (f) Post a {\bf followup} to this article.\\
+      S F     & (F) Post a {\bf followup} and include the original. [p/p]\\
+      S o p   & Forward this article as a {\bf post} to a newsgroup.\\
+      S M-c   & Send a complaint about excessive crossposting to the author of this
+      article. [p/p]\\
+                                %
+      S m     & (m) Send a {\bf mail} to some other person.\\
+      S r     & (r) Mail a {\bf reply} to the author of this article.\\
+      S R     & (R) Mail a {\bf reply} and include the original. [p/p]\\
+      S B r   & Like S r but ignore the Reply-To: header.\\
+      S B R   & Like S R but ignore the Reply-To: header.\\
+      S w     & Mail a {\bf wide} reply to this article.\\
+      S W     & Mail a {\bf wide} reply to this article and include
+      the original.\\
+      S v     & Mail a {\bf very} wide reply to this article.\\
+      S V     & Mail a {\bf very} wide reply to this article and include the original.\\
+      S o m   & (C-c C-f) Forward this article by {\bf mail} to a person.\\
+      S D b   & Resend {\bf bounced} mail.\\
+      S D r   & {\bf Resend} mail to a different person.\\
+      S D e   & {\bf Edit} and resend.\\
+                                %
+      S n     & Post a followup via {\bf news} even if you got the message
+      through mail.\\
+      S N     & Post a followup via {\bf news} and include the original mail.
+      [p/p]\\
+                                %
+      S c     & (C) {\bf Cancel} this article (only works if it is
+      your own). [p/p]\\
+      S s     & {\bf Supersede} this article with a new one (only for own
+      articles).\\
+                                %
+      S O m   & Digest these series and forward by {\bf mail}. [p/p]\\
+      S O p   & Digest these series and forward as a {\bf post} to a newsgroup.
+      [p/p]\\ 
+                                %
+      S u     & {\bf Uuencode} a file and post it as a series.\\
+    \end{keys}
+    If you want to cancel or supersede an article you just posted (before it
+    has appeared on the server), go to the *post-news* buffer, change
+    `Message-ID' to `Cancel' or `Supersedes' and send it again with C-c C-c.
+    }}
+
+\newcommand{\Threading}{% formerly \Tsubmap
+  {\esamepage
+    \begin{keys}{T M-\#}
+      T \#    & Mark this thread with the process mark.\\
+      T M-\#  & Remove process-marks from this thread.\\
+                                %
+      T t     & Re-{\bf thread} the current article's thread.\\
+      T \^{}  & Make the current article child of the marked (or previous) article.\\
+                                % movement
+      T n     & (M-C-f, M-down) Go to the {\bf next} thread. [distance]\\
+      T p     & (M-C-b, M-up) Go to the {\bf previous} thread. [distance]\\
+      T d     & {\bf Descend} this thread. [distance]\\
+      T u     & Ascend this thread ({\bf up}-thread). [distance]\\
+      T o     & Go to the top of this thread.\\
+                                %
+      T s     & {\bf Show} the thread hidden under this article.\\
+      T h     & {\bf Hide} this (sub)thread.\\
+                                %
+      T i     & {\bf Increase} the score of this thread.\\
+      T l     & (M-C-l) {\bf Lower} the score of this thread.\\
+                                %
+      T k     & (M-C-k) {\bf Kill} the current (sub)thread. [Negative prefix:
+      tick it, positive prefix: unmark it.]\\
+                                %
+      T H     & {\bf Hide} all threads.\\
+      T S     & {\bf Show} all hidden threads.\\
+      T T     & (M-C-t) {\bf Toggle} threading.\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\Scoring}{% formerly \Vsubmap
+  {\esamepage
+    Read about Adaptive Scoring in the online info.\\*
+    \begin{keys}{\bf A p m l}
+      V a     & {\bf Add} a new score entry, specifying all elements.\\
+      V c     & Specify a new score file as {\bf current}.\\
+      V e     & {\bf Edit} the current score alist.\\
+      V f     & Edit a score {\bf file} and make it the current one.\\
+      V m     & {\bf Mark} all articles below a given score as read.\\
+      V s     & Set the {\bf score} of this article.\\
+      V t     & Display all score rules applied to this article ({\bf track}).\\
+      W w     & List {\bf words} used in scoring.\\
+      V x     & {\bf Expunge} all low-scored articles. [score]\\
+      V C     & {\bf Customize} the current score file through a user-friendly
+      interface.\\
+      V F     & {\bf Flush} the cache of score files.\\
+      V R     & {\bf Re-score} the summary buffer.\\
+      V S     & Display the {\bf score} of this article.\\
+      \bf A p m l& Make a scoring entry based on this article.\\
+    \end{keys}
+    The four letters stand for:\\*
+    \quad \B{A}ction: I)ncrease, L)ower;\\*
+    \quad \B{p}art: a)uthor (from), s)ubject, x)refs (cross-posting), d)ate, l)ines,
+    message-i)d, t)references (parent), f)ollowup, b)ody, h)ead (all headers);\\*
+    \quad \B{m}atch type:\\*
+    \qquad string: s)ubstring, e)xact, r)egexp, f)uzzy,\\*
+    \qquad date: b)efore, a)t, n)this,\\*
+    \qquad number: $<$, =, $>$;\\*
+    \quad \B{l}ifetime: t)emporary, p)ermanent, i)mmediate.
+
+    If you type the second letter in uppercase, the remaining two are assumed
+    to be s)ubstring and t)emporary. 
+    If you type the third letter in uppercase, the last one is assumed to be 
+    t)emporary.
+
+    \quad Extra keys for manual editing of a score file:\\*
+    \begin{keys}{C-c C-c}
+      C-c C-c & Finish editing the score file.\\
+      C-c C-d & Insert the current {\bf date} as number of days.\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\ExtractSeries}{% formerly \Xsubmap
+  {\esamepage
+    Gnus recognizes if the current article is part of a series (multipart
+    posting whose parts are identified by numbers in their subjects, e.g.{}
+    1/10\dots10/10) and processes the series accordingly. You can mark and
+    process more than one series at a time. If the posting contains any
+    archives, they are expanded and gathered in a new group.\\*
+    \begin{keys}{X p}
+      X b     & Un-{\bf binhex} these series. [p/p]\\
+      X o     & Simply {\bf output} these series (no decoding). [p/p]\\ 
+      X p     & Unpack these {\bf postscript} series. [p/p]\\
+      X s     & Un-{\bf shar} these series. [p/p]\\
+      X u     & {\bf Uudecode} these series. [p/p]\\
+    \end{keys}
+
+    Each one of these commands has four variants:\\*
+    \begin{keys}{X v \bf Z}
+      X   \bf z & Decode these series. [p/p]\\
+      X   \bf Z & Decode and save these series. [p/p]\\
+      X v \bf z & Decode and view these series. [p/p]\\
+      X v \bf Z & Decode, save and view these series. [p/p]\\
+    \end{keys}
+    where {\bf z} or {\bf Z} identifies the decoding method (b, o, p, s, u).
+
+    An alternative binding for the most-often used of these commands is\\*
+    \begin{keys}{C-c C-v C-v}
+      C-c C-v C-v & (X v u) Uudecode and view these series. [p/p]\\
+    \end{keys}
+    }}
+
+\newcommand{\ExitSummary}{% formerly \Zsubmap
+  {\esamepage
+    \begin{keys}{Z G}
+      Z Z     & (q, Z Q) Exit this group.\\
+      Z E     & (Q) {\bf Exit} without updating the group information.\\
+                                %
+      Z c     & (c) Mark all unticked articles as read ({\bf catch-up}) and exit.\\
+      Z C     & Mark all articles as read ({\bf catch-up}) and exit.\\
+                                %
+      Z n     & Mark all articles as read and go to the {\bf next} group.\\
+      Z N     & Exit and go to {\bf the} next group.\\
+      Z P     & Exit and go to the {\bf previous} group.\\
+                                %
+      Z G     & (M-g) Check for new articles in this group ({\bf get}).\\
+      Z R     & (C-x C-s) Exit this group, and then enter it again ({\bf reenter}).
+      [Prefix: select all articles, read and unread.]\\
+      Z s     & Update and save the dribble buffer. [Prefix: save .newsrc* as well]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\MsgCompositionGeneral}{%
+  Press C-c ? in the composition-buffer to get this information.\\*
+  {\esamepage
+    \begin{keys}{C-c C-m}
+                                % sending
+      C-c C-c & Send message and exit. [Prefix: send via foreign server]\\
+      C-c C-s & Send message. [Prefix: send via foreign server]\\
+      C-c C-d & Don't send message (save as \textbf{draft}).\\
+      C-c C-k & \textbf{Kill} message-buffer.\\
+      C-c C-m & {\bf Mail} reply to the address near point.
+      [Prefix: include the original]\\
+                                % modify headers/body
+      C-c C-o & Sort headers.\\
+      C-c C-e & \textbf{Elide} region.\\
+      C-c C-v & Kill everything outside region.\\
+      C-c C-r & Do a \textbf{Rot-13} on the body.\\
+      C-c C-w & Insert signature (from `message-signature-file').\\
+      C-c C-z & Kill everything up to signature.\\
+      C-c C-y & \textbf{Yank} original message.\\
+      C-c C-q & Fill the yanked message.\\
+      C-c M-C-y & \textbf{Yank} a buffer and quote it.\\
+      M-RET   & Insert four newlines and format quoted text. [Prefix:
+      justify as well]\\
+      C-c M-r & \textbf{Rename} message buffer. [Prefix: ask for new name]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\MsgCompositionMovementArticle}{%
+  The following functions create the header-field if necessary.\\*
+  {\esamepage
+    \begin{keys}{C-c C-f C-u}
+      C-c TAB & Move to \textbf{signature}.\\
+      C-c C-b & Move to \textbf{body}.\\
+      C-c C-f C-t & (C-c C-t) Move to \textbf{To:}.\\
+      C-c C-f C-c & Move to \textbf{Cc:}.\\
+      C-c C-f C-b & Move to \textbf{Bcc:}.\\
+      C-c C-f C-w & Move to \textbf{Fcc:}.\\
+      C-c C-f C-s & Move to \textbf{Subject:}.\\
+      C-c C-f C-r & Move to \textbf{Reply-To:}.\\
+      C-c C-f C-f & Move to \textbf{Followup-To:}.\\
+      C-c C-f C-n & (C-c C-n) Move to \textbf{Newsgroups:}.\\
+      C-c C-f C-u & Move to \textbf{Summary:}.\\
+      C-c C-f C-k & Move to \textbf{Keywords:}.\\
+      C-c C-f C-d & Move to \textbf{Distribution:}.\\
+      C-c C-f C-m & Move to \textbf{Mail-Followup-To:}.\\
+      C-c C-f C-o & Move to \textbf{From:}.\\
+      C-c C-f C-a & Insert a reasonable \textbf{Mail-Followup-To:} for
+      an unsubscribed list. [Prefix: include addresses in \textbf{Cc:}]\\
+      C-c C-f TAB & (C-c C-u) Move to \textbf{Importance:}.\\
+      C-c M-n     & Insert \textbf{Disposition-Notification-To:}
+      (request receipt).\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\MsgCompositionMML}{%
+  {\esamepage
+    \begin{keys}{C-c C-m P}
+      C-c C-m f   & (C-c C-a) Attach \textbf{file}.\\
+      C-c C-m b   & Attach contents of \textbf{buffer}.\\
+      C-c C-m e   & Attach \textbf{external} file (ftp..).\\
+      C-c C-m P   & Create MIME-\textbf{preview} (new
+      buffer). [Prefix: show raw MIME preview]\\
+      C-c C-m v   & \textbf{Validate} article.\\
+      C-c C-m p   & Insert \textbf{part}.\\
+      C-c C-m m   & Insert \textbf{multi}-part.\\
+      C-c C-m q   & \textbf{Quote} region.\\
+      C-c C-m c s & Encrypt message using \textbf{S/MIME}.\\
+      C-c C-m c o & Encrypt message using PGP.\\
+      C-c C-m c p & Encrypt message using \textbf{PGP/MIME}.\\
+      C-c C-m s s & Sign message using \textbf{S/MIME}.\\
+      C-c C-m s o & Sign message using PGP.\\
+      C-c C-m s p & Sign message using \textbf{PGP/MIME}.\\
+      C-c C-m C-n & Remove security related MML tags from message.\\
+                                % TODO: narrow headers (C-c C-m n) ?
+    \end{keys}
+    }
+  }
+
+%% TODO:
+\newcommand{\ServerMode}{%
+  {\esamepage
+    To enter this mode, press \^{} while in Group mode.\\*
+    \begin{keys}{SPC}
+      SPC     & (RET) Browse this server.\\
+      a       & {\bf Add} a new server.\\
+      c       & {\bf Copy} this server.\\
+      e       & {\bf Edit} a server.\\
+      k       & {\bf Kill} this server. [scope]\\
+      l       & {\bf List} all servers.\\
+      q       & Return to the group buffer ({\bf quit}).\\
+      s       & Request that the server scan its sources for new articles.\\
+      g       & Request that the server regenerate its data.\\
+      y       & {\bf Yank} the previously killed server.\\
+      O       & Try to {\bf open} a connection to this server.\\
+      C       & {\bf Close} connection to this server.\\
+      D       & Mark this server as unreachable ({\bf deny}).\\
+      M-o     & {\bf Open} the connection to all servers.\\
+      M-c     & {\bf Close} the connection to all servers.\\
+      R       & Make all denied servers into closed servers.\\
+      L       & Set server status to offline.\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\BrowseServer}{%
+  {\esamepage
+    To enter this mode, press `B' while in Group mode.\\*
+    \begin{keys}{RET}
+      RET     & Enter the current group.\\
+      SPC     & Enter the current group and display the first article.\\
+      ?       & Give a very short help message.\\
+      n       & Go to the {\bf next} group. [distance]\\
+      p       & Go to the {\bf previous} group. [distance]\\
+      q       & (l) {\bf Quit} browse mode.\\
+      u       & Subscribe to the current group. [scope]\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\GroupUnplugged}{%
+  {\esamepage
+    \begin{keys}{J S}
+      J j & Toggle plugged-state.\\
+      J s & Fetch articles from all groups for offline-reading.\\
+      J u & Fetch all eligible articles from this group.\\
+      J S & \textbf{Send} all sendable messages in the drafts group.\\
+                                %
+      J c & Enter \textbf{category} buffer.\\
+      J a & \textbf{Add} this group to an Agent category [p/p].\\
+      J r & \textbf{Remove} this group from its Agent category [p/p].\\
+      J Y & Synchronize flags changed while unplugged with remote server.\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\SummaryUnplugged}{%
+  {\esamepage
+    \begin{keys}{J M-\#}
+      J \#   & \textbf{Mark} the article for downloading.\\
+      J M-\# & \textbf{Unmark} the article for downloading.\\
+      @      & \textbf{Toggle} whether to download the article.\\
+      J c    & Mark all undownloaded articles as read (\textbf{catch-up}).\\
+      J u    & Download all downloadable articles from group.\\
+    \end{keys}
+    }
+  }
+
+\newcommand{\ServerUnplugged}{%
+  {\esamepage
+    \begin{keys}{J a}
+      J a & \textbf{Add} the current server to the list of servers covered
+      by the agent.\\
+      J r & \textbf{Remove} the current server from the list of servers covered
+      by the agent.\\
+    \end{keys}
+    }
+  }
+
+% end   {gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %  
+
+
+% o some things might not be updated: scoring and server modes, maybe more
+% o Gnus Unplugged category-buffer commands need to be written
+
+\begin{document}
+
+\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
+\def\date{Jan 10th, 2004}
+\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
+
+\ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \raggedbottom\raggedright
+  \twocolumn
+  % use \tiny to shrink it to 4 pages (needs a high-resolution printer though)
+  % \tiny
+  \scriptsize
+  \pagestyle{plain}
+  \Title
+  \par
+  \Logo{refcard}
+}{
+  \setcounter{page}{0}
+  \thispagestyle{empty}
+  \vspace*{\fill}
+  \Title
+  \vspace{0.4in}
+  \Logo{booklet}
+  \vspace*{\fill}
+  \pagebreak
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% TODO: how does this work ?
+%\tableofcontents
+
+\Notes
+%
+
+\section*{Group-Mode}
+\GroupModeGeneral
+    \subsection*{Group Subscribedness-Levels}
+    \GroupLevels
+    \subsection*{List Groups}
+    \ListGroups
+    \subsection*{Create/Edit Foreign Groups}
+    \CreateEditGroups
+    \subsection*{Unsubscribe, Kill and Yank Groups}
+    \SubscribeKillYankGroups
+    \subsection*{Mark Groups}
+    \MarkGroups
+    \subsection*{Group-Unplugged}
+    \GroupUnplugged
+% topics in group-mode
+    \subsection*{Group Topics}
+    \GroupTopicsGeneral
+    \subsubsection*{Topic Sorting}
+    \TopicSorting
+
+% \ifthenelse{\isundefined{\booklettrue}}{}{\pagebreak}
+
+% summary-mode
+\section*{Summary Mode}
+\SummaryModeGeneral
+    \subsection*{Select Articles}
+    \SelectArticles
+%
+    \subsection*{Threading}
+    \Threading
+%
+    \subsection*{Limiting}
+    \Limiting
+    \subsection*{Sort the Summary-Buffer}
+    \SortSummary
+    \subsection*{Score (Value) Commands}
+    \Scoring
+    
+\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \subsection*{Output Articles}
+  \OutputArticles
+  \subsection*{Extract Series (Uudecode etc)}
+  \ExtractSeries
+}{}%ifcard% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    \subsection*{MIME operations from the Summary-Buffer}
+    \MIMESummary
+    
+\ifthenelse{\isundefined{\booklettrue}}{}{% ifbooklet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \subsection*{Extract Series (Uudecode etc)}
+  \ExtractSeries
+  \subsection*{Output Articles}
+  \OutputArticles
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+    \subsection*{Post, Followup, Reply, Forward, Cancel}
+    \PostReplyetc
+    
+\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}% newpage ifcard
+
+      \subsection*{Message Composition}
+
+    \MsgCompositionGeneral
+        \subsubsection*{Jumping in message-buffer}
+        \MsgCompositionMovementArticle
+        \subsubsection*{Attachments/MML}
+        \MsgCompositionMML
+% marking articles
+    \subsection*{Mark Articles}
+    \MarkArticlesGeneral
+        \subsubsection*{Mark Based on Score}
+        \MarkByScore
+        \subsubsection*{The Process Mark}
+        \ProcessMark
+        \subsubsection*{Mark Indication-Characters}
+        \MarkCharacters
+%
+\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}%
+
+    \subsection*{Summary-Unplugged}
+    \SummaryUnplugged
+    \subsection*{Mail-Group Commands}
+    \MailGroups
+    \subsection*{Draft-Group Commands}
+    \DraftGroup
+% exiting
+    \subsection*{Exit the Summary-Buffer}
+    \ExitSummary
+%
+%
+\section*{Article Mode (reading)}
+\ArticleModeGeneral
+    \subsection*{Wash the Article-Buffer}
+    \WashArticle
+    \subsubsection*{Blank Lines and Whitespace}
+    \BlankAndWhitespace
+    \subsubsection*{Picons, X-faces, Smileys}
+    \Picons
+    \subsubsection*{Time and Date}
+    \TimeAndDate
+    \subsection*{Hide/Highlight Parts of the Article}
+    \HideHighlightArticle
+    \subsection*{MIME operations from the Article-Buffer (reading)}
+    \MIMEArticleMode
+%
+%
+\section*{Server Mode}
+\ServerMode
+    \subsection*{Unplugged-Server}
+    \ServerUnplugged
+%
+%
+\section*{Browse Server Mode}
+\BrowseServer
+
+%\pagebreak
+\vspace*{\fill}
+\Copyright
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
+
+% arch-tag: be438b0e-6832-4afb-8c56-5f84743e5cd1
--- a/lisp/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,482 @@
+2005-04-04  Lute Kamstra  <lute@gnu.org>
+
+	* autorevert.el (auto-revert-mode): Specify :group.
+	* battery.el (display-battery-mode): Specify :group.
+	* diff-mode.el (diff-minor-mode): Specify :group.
+	* font-core.el (font-lock-mode): Specify :group.
+	* hl-line.el (hl-line-mode): Specify :group.
+	* iimage.el (iimage): New customization group.
+	(iimage-mode): Specify :group.
+	* longlines.el (longlines-mode): Specify :group.
+	* master.el: Don't require easy-mmode.
+	(master): New customization group.
+	(master-mode): Specify :group.
+	* msb.el (msb-mode): Specify :group.
+	* reveal.el (reveal-mode): Specify :group.
+	* simple.el (next-error-follow-minor-mode): Specify :group.
+	* smerge-mode.el (smerge-mode): Specify :group.
+	* emacs-lisp/eldoc.el (eldoc-mode): Specify :group.
+	* emulation/cua-base.el (cua-mode): Specify :group.
+	* international/encoded-kb.el (encoded-kbd-mode): Specify :group.
+	* language/thai-util.el (thai-auto-composition-mode)
+	(thai-word-mode): Specify :group.
+	* mail/supercite.el (sc-minor-mode): Specify :group.
+	* progmodes/cwarn.el (cwarn-mode): Specify :group.
+	* progmodes/flymake.el (flymake-mode): Specify :group.
+	* progmodes/glasses.el (glasses-mode): Specify :group.
+	* progmodes/hideif.el (hide-ifdef-mode): Specify :group.
+	* textmodes/enriched.el (enriched-mode): Specify :group.
+	* textmodes/refill.el (refill-mode): Specify :group.
+
+	* add-log.el (change-log-font-lock-keywords): Names in
+	parenthesized lists can contain spaces.
+
+2005-04-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* startup.el (fancy-splash-text): Shorten default text of
+	"Emacs Tutorial" line.  Also, if the current language env
+	indicates an available tutorial file other than TUTORIAL,
+	extract its title and append it to the line in parentheses.
+	(fancy-splash-insert): If arg is a thunk, funcall it.
+
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+	* calc.el (calc-language-alist): Add tags to customization type.
+
+2005-04-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* xt-mouse.el (xterm-mouse-mode): Add explicit Custom group, mouse.
+	Doc fix.
+
+2005-04-03  Marcelo Toledo  <marcelo@marcelotoledo.org>
+
+        * add-log.el (change-log-font-lock-keywords): The manual
+        describing a Change Log entry, says: (...) "Aside from these
+        header lines, every line in the change log starts with a space or
+        a tab.". The font-lock was not highlighting lines started with
+        spaces, added support for it.
+
+2005-04-03  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-url): Use format to generate the url.
+	(bibtex-generate-url-list): Update docstring accordingly. Put the
+	complex example in the docstring.
+	(bibtex-font-lock-url): Use pop.
+
+2005-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/tcl.el (tcl-set-font-lock-keywords): Use new \_< ops.
+
+	* pcvs.el (cvs-checkout): Prompt for cvsroot as well.
+
+2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* filesets.el (filesets-set-default): Doc fix.
+
+2005-04-03  Lute Kamstra  <lute@gnu.org>
+
+	* generic.el (define-generic-mode): Add argument to specify
+	keywords for defcustom.
+	(default-generic-mode): Specify :group.
+
+	* generic-x.el: Specify :group for all generic modes.
+
+	* desktop.el (desktop-no-desktop-file-hook)
+	(desktop-after-read-hook): Fix docstring.
+
+2005-04-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* simple.el (visible-mode): Use explicit :group keyword.
+	This changes the group of `visible-mode-hook' from paren-blinking
+	to editing-basics.
+
+2005-04-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>  (tiny change)
+
+	* mail/rmail.el (rmail-parse-url): Bugfix. Parse traditional
+	mailbox specifications as well as URLs.
+	(rmail-insert-inbox-text): Remove unused conditional branches.
+
+2005-04-01  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command)
+	(calc-gnuplot-print-command): Move definitions to calc.el.
+
+	* calc/calc-embed.el (calc-embedded-announce-formula)
+	(calc-embedded-open-formula, calc-embedded-close-formula)
+	(calc-embedded-open-word, calc-embedded-close-word)
+	(calc-embedded-open-plain, calc-embedded-close-plain)
+	(calc-embedded-open-new-formula, calc-embedded-close-new-formula)
+	(calc-embedded-open-mode, calc-embedded-close-mode):
+	Move definitions to calc.el.
+
+	* calc/calc.el (calc-settings-file, calc-language-alist):
+	Make customizable.
+	(calc-embedded-announce-formula, calc-embedded-open-formula)
+	(calc-embedded-close-formula, calc-embedded-open-word)
+	(calc-embedded-close-word, calc-embedded-open-plain)
+	(calc-embedded-close-plain, calc-embedded-open-new-formula)
+	(calc-embedded-close-new-formula, calc-embedded-open-mode)
+	(calc-embedded-close-mode, calc-gnuplot-name)
+	(calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here
+	from other files and make customizable.
+
+2005-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check):
+	Use buffer-live-p.
+	(cvs-mode-run): Don't call cvs-update-header here.
+	(cvs-run-process): Call cvs-update-header.
+	Use process properties for cvs-postprocess and cvs-buffer so that
+	the sentinel can behave better if the temp buffer is killed.
+	Use a pipe rather than a tty, to better handle unexpected prompts.
+	(cvs-sentinel): Rewrite.  Call cvs-update-header.
+
+2005-04-01  Andre Spiegel  <spiegel@gnu.org>
+
+	* vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when
+	we go via Tramp or Ange-FTP.  Suggested by Kai Grossjohann.
+
+2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* generic.el (define-generic-mode): Add indentation rule.
+
+2005-03-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.el (mode-require-final-newline): Make Custom correctly
+	report a nil value and allow to set it to nil via Custom.
+	Doc fix.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+	* international/characters.el: Enable the correct case setting for
+	dotless-i and dotted-I.
+
+2005-04-01  Kim F. Storm  <storm@cua.dk>
+
+	* ido.el (ido-file-internal): Fall back to non-ido command if
+	initial directory is on slow ftp (or tramp) host.
+
+2005-03-31  Richard M. Stallman  <rms@gnu.org>
+
+	* emacs-lisp/autoload.el (make-autoload):
+	Handle define-global-minor-mode.
+
+	* emacs-lisp/easy-mmode.el (define-global-minor-mode):
+	Rename from easy-mmode-define-global-mode.
+	(easy-mmode-define-global-mode): Alias for define-global-minor-mode.
+
+	* progmodes/scheme.el (scheme-mode-syntax-table):
+	Update syntax of | and # for two-character comment syntax.
+
+2005-03-31  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode)
+	(define-minor-mode): Call custom-current-group at load-time.
+
+	* generic.el (define-generic-mode): Add debug declaration.
+	Add defcustom for the mode hook.
+	(generic-mode-internal): Use run-mode-hooks.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+	* mouse.el (mouse-1-click-follows-link): Increase to 450 ms.
+	(mouse-fixup-help-message): New defun called by show_help_echo
+	to fixup mouse-2 prefix in help messages when applicable.
+
+	* tooltip.el (tooltip-show-help-function): Don't fixup message here.
+
+2005-03-31  Kenichi Handa  <handa@m17n.org>
+
+	* language/thai-word.el (thai-find-word-ends): Pay attention to
+	the case that we reach the end of buffer.
+
+	* textmodes/fill.el (fill-text-properties-at): New function.
+	(fill-newline): Use fill-text-properties-at instead of
+	text-properties-at.
+
+2005-03-31  Karl Berry  <karl@freefriends.org>
+
+	* textmodes/tex-mode.el (tex-compile): shell-quote-argument,
+	not comint-quote-filename.
+
+2005-03-31  Olive Lin  <olive.lin@versateladsl.be> (tiny change)
+
+	* textmodes/tex-mode.el (tex-start-tex) shell-quote-argument,
+	not comint-quote-filename.
+
+2005-03-31  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* help-fns.el (help-with-tutorial): Revert last change.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+	* emulation/cua-base.el (cua-scroll-down): Add CUA property.
+
+2005-03-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* calendar/cal-china.el: Update reference to "Calendrical
+	Calculations" book; there's a new edition.
+	* calendar/cal-coptic.el: Likewise.
+	* calendar/cal-french.el: Likewise.
+	* calendar/cal-hebrew.el: Likewise.
+	* calendar/cal-islam.el: Likewise.
+	* calendar/cal-iso.el: Likewise.
+	* calendar/cal-julian.el: Likewise.
+	* calendar/cal-mayan.el: Likewise.
+	* calendar/cal-persia.el: Likewise.
+	* calendar/calendar.el: Likewise.
+	* calendar/holidays.el: Likewise.
+	* calendar/lunar.el: Likewise.
+	* calendar/solar.el: Likewise.
+
+	* calendar/calendar.el (calendar-day-abbrev-array): Remove trailing
+	white space from doc string.
+
+2005-03-30  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-help.el (calc-full-help): Remove email address.
+
+2005-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* help-fns.el (help-with-tutorial): Delete title line.
+
+2005-03-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar/cal-x.el (calendar-one-frame-setup)
+	(calendar-only-one-frame-setup, calendar-two-frame-setup): Use t
+	rather than 'symbol for set-window-dedicated-p.
+
+	* calendar/appt.el (appt-buffer-name): Make it a constant.
+	(appt-add): Doc fix.
+
+	* filesets.el (filesets-menu-path, filesets-menu-before)
+	(filesets-menu-in-menu): Doc fix.  Now valid in GNU Emacs.
+	(filesets-menu-cache-file): Use directory ~/.emacs.d.
+	(filesets-add-submenu): Delete and use add-submenu instead.
+
+2005-03-30  Carsten Dominik  <dominik@science.uva.nl>
+
+	* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
+	(org-agenda-convert-date, org-agenda-goto-calendar): New commands.
+	(org-diary-default-entry): New function.
+	(org-get-entries-from-diary): Better parsing of diary entries.
+	(org-agenda-check-no-diary): New function.
+	("diary-lib"): Advice to function `add-to-diary-list', to allow
+	linking to diary entries.
+	(org-agenda-execute-calendar-command): New function.
+	(org-agenda): Improve visible section in window.
+	Use `org-fit-agenda-window'.
+	(org-fit-agenda-window): New option.
+	(org-move-subtree-down): Better handling of empty lines
+	at end of subtree.
+	(org-cycle): Numeric prefix is interpreted now as show-subtree N
+	levels up.
+	(org-fontify-done-headline): New option.
+	(org-headline-done-face): New face.
+	(org-set-font-lock-defaults): Use `org-headline-done-face'.
+	(org-table-copy-down): Rename from `org-table-copy-from-above'.
+	When current field is non-empty, it is copied to next row.
+	(org-table-copy-from-above): Fix bug which made it
+	impossible to copy fields containing only a single non-white character.
+
+2005-03-30  Kim F. Storm  <storm@cua.dk>
+
+	* kmacro.el (kmacro-end-macro): Isearch may store this command
+	into the macro -- so ignore it when executing keyboard macro.
+
+2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+	* tooltip.el (tooltip-gud-display): Use gud-overlay-arrow-position.
+
+2005-03-29  Kenichi Handa  <handa@m17n.org>
+
+	* language/thai.el ("Thai"): Set setup-function and exit-function
+	for Thai language environment.
+
+	* language/thai-util.el: Require thai-word.
+	(thai-word-mode-map): New variable.
+	(thai-word-mode): New minor mode.
+	(setup-thai-language-environment-internal): New function.
+	(exit-thai-language-environment-internal): New function.
+
+	* language/thai-word.el (thai-word-table): Declare it by defvar,
+	use dolist to initialize it.
+	(thai-kill-word, thai-backward-kill-word, thai-transpose-words)
+	(thai-fill-find-break-point): New functions.
+
+2005-03-29  Richard M. Stallman  <rms@gnu.org>
+
+	* simple.el (idle-update-delay): Move definition up.
+	(set-mark): Doc fix.
+
+2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+	* longlines.el: New file.
+
+	* simple.el (buffer-substring-filters): New variable.
+	(filter-buffer-substring): New function.
+	(kill-region, copy-region-as-kill): Use it.
+
+	* register.el (copy-to-register, append-to-register)
+	(prepend-to-register): Use filter-buffer-substring.
+
+2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gud.el (gdb): (Re)-initialise gud-filter-pending-text.
+	(gud-filter-pending-text): Move in front of gdb.
+	(gud-overlay-arrow-position): New variable.
+	(gud-sentinel, gud-display-line): Use it in place of
+	overlay-arrow-position.
+
+2005-03-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* progmodes/fortran.el (fortran-if-indent): Doc fix.
+	(fortran-font-lock-keywords-2): Add "where", "elsewhere".
+	(fortran-font-lock-keywords-4): New variable.
+	(fortran-blocks-re, fortran-end-block-re)
+	(fortran-start-block-re): New constants, for hideshow.
+	(hs-special-modes-alist): Add a Fortran entry.
+	(fortran-mode-map): Bind fortran-end-of-block,
+	fortran-beginning-of-block to \M-\C-n, \M-\C-p.
+	(fortran-mode): Doc fix. Add fortran-font-lock-keywords-4.
+	(fortran-looking-at-if-then, fortran-end-of-block)
+	(fortran-beginning-of-block): New functions, for hideshow.
+
+	* progmodes/f90.el (f90-end-block-re, f90-start-block-re): Doc
+	fix. Tweak regexp.
+	(f90-beginning-of-block): Push mark first.
+
+2005-03-29  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc.el: Update copyright date.
+	(calc-version): Increase to 2.1.
+	(calc-version-date): Remove.
+
+	* calc/calc-help.el: Update copyright date.
+	(calc-full-help): Remove reference to calc-version-date.
+	Update copyright date.
+
+2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* vc.el (vc-do-command): Use a pipe for async processes, so password
+	prompts don't show up at places where the user can't reply.
+
+2005-03-29  Olive Lin  <olive.lin@versateladsl.be> (tiny change)
+
+	* textmodes/tex-mode.el (tex-send-command): shell-quote-argument
+	on the file name we pass to the inferior shell.
+
+2005-03-29  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+
+	* progmodes/which-func.el (which-function): Be robust in the face of an
+	imenu--make-index-alist failure.
+
+2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* reveal.el (reveal-mode-map): Don't override C-a and C-e.
+
+	* progmodes/python.el (python-preoutput-filter): Fix last change.
+
+2005-03-29  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/debug.el (debug-on-entry): Handle autoloaded
+	functions and compiled macros.
+	(debug-convert-byte-code): Handle macros too.
+	(debug-on-entry-1): Don't signal an error when trying to clear a
+	function that is not set to debug on entry.
+
+2005-03-29  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-lang.el: Add functions to math-function-table
+	properties of tex and math.
+
+2005-03-29  Kenichi Handa  <handa@m17n.org>
+
+	* ps-mule.el (ps-mule-plot-string): Translate characters by
+	ps-print-translation-table.
+	(ps-mule-begin-job): Call find-charset-region/string with
+	ps-print-translation-table.
+	(ps-mule-printable-p): Return t if CHARSET is ascii or latin-iso8859-1.
+
+	* ps-print.el (ps-print-translation-table): New variable.
+	(ps-plot-region): Translate characters by ps-print-translation-table.
+
+2005-03-29  Juri Linkov  <juri@jurta.org>
+
+	* simple.el (next-error-highlight-timer): New variable.
+
+	* progmodes/compile.el (compilation-goto-locus):
+	Use `next-error-highlight-timer' instead of `sit-for'.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* mail/supercite.el (sc-mail-field): Use assoc-string.
+	(sc-get-address): Simplify regexps.
+
+	* files.el (minibuffer-with-setup-hook): New macro.
+	(find-file-read-args): Use it to avoid let-binding
+	minibuffer-with-setup-hook (which breaks turning on/off
+	file-name-shadow-mode while in the prompt).
+
+	* complete.el (PC-read-include-file-name-internal): Use test-completion.
+
+2005-03-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* font-lock.el: Bind `font-lock-fontify-block' to M-o M-o.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* window.el (window-buffer-height): Use count-screen-lines.
+
+	* progmodes/python.el (python-preoutput-leftover): New var.
+	(python-preoutput-filter): Use it.
+	(python-send-receive): Loop until all the result has been received.
+
+2005-03-28  Juri Linkov  <juri@jurta.org>
+
+	* dired.el (dired-mode-map): Add ellipsis to "Compare directories".
+
+	* menu-bar.el (menu-bar-file-menu): Remove ellipsis from
+	"Recover Crashed Session".
+	(menu-bar-search-menu): Add ellipsis to "Search tagged files".
+	(menu-bar-replace-menu): Add ellipsis to "Replace in tagged files".
+	(menu-bar-goto-menu): Add ellipsis to "Set Tags File Name".
+	(menu-bar-goto-menu): Add ellipsis to "Tags Apropos".
+	(menu-bar-options-menu): Add ellipsis to "Set Font/Fontset".
+	(menu-bar-manuals-menu): Add ellipsis to "Find Command in Manual".
+	(menu-bar-manuals-menu): Add ellipsis to "Find Key in Manual".
+	(menu-bar-help-menu): Remove ellipsis from "Find Emacs Packages".
+
+	* ediff-hook.el (menu-bar-ediff-misc-menu, ediff-misc-menu):
+	Remove ellipsis from "Ediff Manual", "Customize Ediff", "List
+	Ediff Sessions", "Toggle use of separate control buffer frame",
+	"Use separate frame for Ediff control buffer".
+
+	* bookmark.el (menu-bar-bookmark-map): Add ellipsis to "Jump to
+	Bookmark", "Set Bookmark", "Insert Contents", "Insert Location",
+	"Rename Bookmark", "Delete Bookmark".
+
+	* info.el (Info-mode-menu): Remove ellipsis from "Index".
+	Add ellipsis to "Lookup a String", "Lookup a string in all indices".
+	Add `:active Info-index-alternatives' to "Next Matching Item".
+
+	* wdired.el (wdired-change-to-wdired-mode):
+	Mention `wdired-abort-changes' key in the initial message.
+
+	* international/mule.el (auto-coding-alist): Associate non-ascii
+	image filename extensions with `no-conversion'.
+
+2005-03-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* international/iso-acc.el:
+	* obsolete/iso-acc.el: Move iso-acc to the obsolete subdir.
+
+2005-03-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* textmodes/sgml-mode.el (html-mode): Doc update.
+
+	* autorevert.el (auto-revert-check-vc-info): Minor doc fix.
+
 2005-03-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* term.el (term-move-columns): Fix face after extending a line.
@@ -345,8 +824,7 @@
 
 2005-03-21  Lute Kamstra  <lute@gnu.org>
 
-	* generic.el: Fix commentary section.  Don't require cl for
-	compilation.
+	* generic.el: Fix commentary section.  Don't require cl for compilation.
 	(generic-mode-list): Add autoload cookie.
 	(generic-use-find-file-hook, generic-lines-to-scan)
 	(generic-find-file-regexp, generic-ignore-files-regexp)
@@ -396,20 +874,27 @@
 
 	* tramp-smb.el (all): Remove debug construct for
 	`with-parsed-tramp-file-name'.
-	(tramp-smb-prompt): Prompt can contain spaces inside directory
-	names.
+	(tramp-smb-prompt): Prompt can contain spaces inside directory names.
 	(tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file):
 	No error message if DIRECTORY or FILENAME doesn't exist.
 	(tramp-smb-open-connection): Check existence of
 	`tramp-smb-program'.
 
+2005-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/perl-mode.el (perl-font-lock-syntactic-face-function):
+	Properly handle the case where the `m' or `s' command's argument is not
+	yet terminated.
+	(perl-indent-new-calculate): New function.
+	(perl-indent-line): Use it.
+
 2005-03-20  Miles Bader  <miles@gnu.org>
 
 	* progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces
 	in text-mode too.  Change to new face names.
-	(breakpoint-enabled): Renamed from `breakpoint-enabled-bitmap-face'.
+	(breakpoint-enabled): Rename from `breakpoint-enabled-bitmap-face'.
 	Add `:weight bold' attribute.
-	(breakpoint-disabled): Renamed from `breakpoint-disabled-bitmap-face'.
+	(breakpoint-disabled): Rename from `breakpoint-disabled-bitmap-face'.
 
 2005-03-19  Juri Linkov  <juri@jurta.org>
 
@@ -426,8 +911,7 @@
 
 2005-03-19  Yoichi NAKAYAMA  <yoichi@geiin.org>  (tiny changes)
 
-	* finder.el (finder-current-item): Throw an error on an empty
-	line.
+	* finder.el (finder-current-item): Throw an error on an empty line.
 
 	* man.el (Man-follow-manual-reference): If current-word returns
 	nil, use "".
@@ -466,8 +950,8 @@
 
 2005-03-19  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-	* ps-print.el (ps-generate-string-list, ps-generate-header-line): Use
-	functionp instead of symbolp and fboundp.  Reported by Drkm
+	* ps-print.el (ps-generate-string-list, ps-generate-header-line):
+	Use functionp instead of symbolp and fboundp.  Reported by Drkm
 	<darkman_spam@yahoo.fr>.
 	(ps-print-version): New version 6.6.6.
 
@@ -2290,7 +2774,7 @@
 	* simple.el (eval-expression-print-format): Avoid warning
 	about edebug-active.
 
-2005-01-15  "James R. Van Zandt"  <jrvz@comcast.net>  (Tiny change)
+2005-01-15  James R. Van Zandt  <jrvz@comcast.net>  (Tiny change)
 
 	* progmodes/sh-script.el: Code copied from make-mode.el
 	with small changes,
@@ -7012,8 +7496,7 @@
 
 2004-09-21  Kenichi Handa  <handa@m17n.org>
 
-	* descr-text.el (describe-char): Checking of quail activation
-	fixed.
+	* descr-text.el (describe-char): Checking of quail activation fixed.
 
 2004-09-21  Jay Belanger  <belanger@truman.edu>
 
--- a/lisp/add-log.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/add-log.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; add-log.el --- change log maintenance commands for Emacs
 
-;; Copyright (C) 1985, 86, 88, 93, 94, 97, 98, 2000, 03, 2004
-;;           Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1988, 1993, 1994, 1997, 1998, 2000, 2003,
+;;   2004, 2005 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: tools
@@ -225,20 +225,20 @@
       (2 'change-log-email-face)))
     ;;
     ;; File names.
-    ("^\t\\* \\([^ ,:([\n]+\\)"
+    ("^\\(?: +\\|\t\\)\\* \\([^ ,:([\n]+\\)"
      (1 'change-log-file-face)
      ;; Possibly further names in a list:
      ("\\=, \\([^ ,:([\n]+\\)" nil nil (1 'change-log-file-face))
      ;; Possibly a parenthesized list of names:
-     ("\\= (\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
+     ("\\= (\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
       nil nil (1 'change-log-list-face))
-     ("\\=, *\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
+     ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
       nil nil (1 'change-log-list-face)))
     ;;
     ;; Function or variable names.
-    ("^\t(\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
+    ("^\t(\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
      (1 'change-log-list-face)
-     ("\\=, *\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil
+     ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil
       (1 'change-log-list-face)))
     ;;
     ;; Conditionals.
--- a/lisp/autorevert.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/autorevert.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; autorevert.el --- revert buffers when files on disk change
 
-;; Copyright (C) 1997, 1998, 1999, 2001, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 1999, 2001, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Anders Lindgren <andersl@andersl.com>
 ;; Keywords: convenience
@@ -246,7 +246,7 @@
 control info every `auto-revert-interval' seconds.  Nevertheless,
 it should not cause excessive CPU usage on a reasonably fast
 machine, if it does not apply to too many version controlled
-buffers.  CPU usage depends on the version control system"
+buffers.  CPU usage depends on the version control system."
   :group 'auto-revert
   :type 'boolean
   :version "22.1")
@@ -290,7 +290,7 @@
 Use `global-auto-revert-mode' to automatically revert all buffers.
 Use `auto-revert-tail-mode' if you know that the file will only grow
 without being changed in the part that is already in the buffer."
-  nil auto-revert-mode-text nil
+  :group 'auto-revert :lighter auto-revert-mode-text
   (if auto-revert-mode
       (if (not (memq (current-buffer) auto-revert-buffer-list))
 	  (push (current-buffer) auto-revert-buffer-list))
--- a/lisp/battery.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/battery.el	Mon Apr 04 16:43:15 2005 +0000
@@ -114,7 +114,7 @@
 `battery-mode-line-format' and `battery-status-function'.
 The mode line will be updated automatically every `battery-update-interval'
 seconds."
-  :global t
+  :global t :group 'battery
   (setq battery-mode-line-string "")
   (or global-mode-string (setq global-mode-string '("")))
   (and battery-update-timer (cancel-timer battery-update-timer))
--- a/lisp/bookmark.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/bookmark.el	Mon Apr 04 16:43:15 2005 +0000
@@ -2111,12 +2111,12 @@
     (define-key map [write]	'("Save Bookmarks As..." . bookmark-write))
     (define-key map [save]	'("Save Bookmarks" . bookmark-save))
     (define-key map [edit]	'("Edit Bookmark List" . bookmark-bmenu-list))
-    (define-key map [delete]	'("Delete Bookmark" . bookmark-delete))
-    (define-key map [rename]	'("Rename Bookmark" . bookmark-rename))
-    (define-key map [locate]	'("Insert Location" . bookmark-locate))
-    (define-key map [insert]	'("Insert Contents" . bookmark-insert))
-    (define-key map [set]	'("Set Bookmark" . bookmark-set))
-    (define-key map [jump]	'("Jump to Bookmark" . bookmark-jump))
+    (define-key map [delete]	'("Delete Bookmark..." . bookmark-delete))
+    (define-key map [rename]	'("Rename Bookmark..." . bookmark-rename))
+    (define-key map [locate]	'("Insert Location..." . bookmark-locate))
+    (define-key map [insert]	'("Insert Contents..." . bookmark-insert))
+    (define-key map [set]	'("Set Bookmark..." . bookmark-set))
+    (define-key map [jump]	'("Jump to Bookmark..." . bookmark-jump))
     map))
 
 ;;;###autoload
--- a/lisp/calc/calc-embed.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calc/calc-embed.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; calc-embed.el --- embed Calc in a buffer
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
 ;; Maintainer: Jay Belanger <belanger@truman.edu>
@@ -48,48 +48,18 @@
 (defvar calc-embedded-some-active nil)
 (make-variable-buffer-local 'calc-embedded-some-active)
 
-(defvar calc-embedded-open-formula "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
-  "*A regular expression for the opening delimiter of a formula used by
-calc-embedded.")
-
-(defvar calc-embedded-close-formula "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n"
-  "*A regular expression for the closing delimiter of a formula used by
-calc-embedded.")
-
-(defvar calc-embedded-open-word "^\\|[^-+0-9.eE]"
-  "*A regular expression for the opening delimiter of a formula used by
-calc-embedded-word.")
-
-(defvar calc-embedded-close-word "$\\|[^-+0-9.eE]"
-  "*A regular expression for the closing delimiter of a formula used by
-calc-embedded-word.")
-
-(defvar calc-embedded-open-plain "%%% "
-  "*A string which is the opening delimiter for a \"plain\" formula.
-If calc-show-plain mode is enabled, this is inserted at the front of
-each formula.")
-
-(defvar calc-embedded-close-plain " %%%\n"
-  "*A string which is the closing delimiter for a \"plain\" formula.
-See calc-embedded-open-plain.")
-
-(defvar calc-embedded-open-new-formula "\n\n"
-  "*A string which is inserted at front of formula by calc-embedded-new-formula.")
-
-(defvar calc-embedded-close-new-formula "\n\n"
-  "*A string which is inserted at end of formula by calc-embedded-new-formula.")
-
-(defvar calc-embedded-announce-formula "%Embed\n\\(% .*\n\\)*"
-  "*A regular expression which is sure to be followed by a calc-embedded formula." )
-
-(defvar calc-embedded-open-mode "% "
-  "*A string which should precede calc-embedded mode annotations.
-This is not required to be present for user-written mode annotations.")
-
-(defvar calc-embedded-close-mode "\n"
-  "*A string which should follow calc-embedded mode annotations.
-This is not required to be present for user-written mode annotations.")
-
+;; The following variables are customizable and defined in calc.el.
+(defvar calc-embedded-announce-formula)
+(defvar calc-embedded-open-formula)
+(defvar calc-embedded-close-formula)
+(defvar calc-embedded-open-word)
+(defvar calc-embedded-close-word)
+(defvar calc-embedded-open-plain)
+(defvar calc-embedded-close-plain)
+(defvar calc-embedded-open-new-formula)
+(defvar calc-embedded-close-new-formula)
+(defvar calc-embedded-open-mode)
+(defvar calc-embedded-close-mode)
 
 (defconst calc-embedded-mode-vars '(("precision" . calc-internal-prec)
 				    ("word-size" . calc-word-size)
--- a/lisp/calc/calc-graph.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calc/calc-graph.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; calc-graph.el --- graph output functions for Calc
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
 ;; Maintainer: Jay Belanger <belanger@truman.edu>
@@ -33,14 +33,10 @@
 
 ;;; Graphics
 
-(defvar calc-gnuplot-name "gnuplot"
-  "*Name of GNUPLOT program, for calc-graph features.")
-
-(defvar calc-gnuplot-plot-command nil
-  "*Name of command for displaying GNUPLOT output; %s = file name to print.")
-
-(defvar calc-gnuplot-print-command "lp %s"
-  "*Name of command for printing GNUPLOT output; %s = file name to print.")
+;; The following three variables are customizable and defined in calc.el.
+(defvar calc-gnuplot-name)
+(defvar calc-gnuplot-plot-command)
+(defvar calc-gnuplot-print-command)
 
 (defvar calc-gnuplot-tempfile "calc")
 
--- a/lisp/calc/calc-help.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calc/calc-help.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; calc-help.el --- help display functions for Calc,
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2004
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2004, 2005
 ;;           Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
@@ -409,10 +409,10 @@
 (defun calc-full-help ()
   (interactive)
   (with-output-to-temp-buffer "*Help*"
-    (princ (format "GNU Emacs Calculator version %s of %s.\n"
-		   calc-version calc-version-date))
-    (princ "  By Dave Gillespie, daveg@synaptics.com.\n")
-    (princ "  Copyright (C) 1990, 1993 Free Software Foundation, Inc.\n\n")
+    (princ (format "GNU Emacs Calculator version %s.\n"
+		   calc-version))
+    (princ "  By Dave Gillespie.\n")
+    (princ "  Copyright (C) 2005 Free Software Foundation, Inc.\n\n")
     (princ "Type `h s' for a more detailed summary.\n")
     (princ "Or type `h i' to read the full Calc manual on-line.\n\n")
     (princ "Basic keys:\n")
--- a/lisp/calc/calc-lang.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calc/calc-lang.el	Mon Apr 04 16:43:15 2005 +0000
@@ -388,6 +388,9 @@
      ( \\arg	   . calcFunc-arg )
      ( \\cos	   . calcFunc-cos )
      ( \\cosh	   . calcFunc-cosh )
+     ( \\cot	   . calcFunc-cot )
+     ( \\coth	   . calcFunc-coth )
+     ( \\csc	   . calcFunc-csc )
      ( \\det	   . calcFunc-det )
      ( \\exp	   . calcFunc-exp )
      ( \\gcd	   . calcFunc-gcd )
@@ -395,10 +398,11 @@
      ( \\log	   . calcFunc-log10 )
      ( \\max	   . calcFunc-max )
      ( \\min	   . calcFunc-min )
-     ( \\tan	   . calcFunc-tan )
+     ( \\sec	   . calcFunc-sec )
      ( \\sin	   . calcFunc-sin )
      ( \\sinh	   . calcFunc-sinh )
      ( \\sqrt	   . calcFunc-sqrt )
+     ( \\tan	   . calcFunc-tan )
      ( \\tanh	   . calcFunc-tanh )
      ( \\phi	   . calcFunc-totient )
      ( \\mu	   . calcFunc-moebius )))
@@ -686,6 +690,10 @@
      ( Conjugate   . calcFunc-conj )
      ( Cos	   . calcFunc-cos )
      ( Cosh	   . calcFunc-cosh )
+     ( Cot	   . calcFunc-cot )
+     ( Coth	   . calcFunc-coth )
+     ( Csc	   . calcFunc-csc )
+     ( Csch	   . calcFunc-csch )
      ( D	   . calcFunc-deriv )
      ( Dt	   . calcFunc-tderiv )
      ( Det	   . calcFunc-det )
@@ -708,6 +716,8 @@
      ( Random	   . calcFunc-random )
      ( Round	   . calcFunc-round )
      ( Re	   . calcFunc-re )
+     ( Sec	   . calcFunc-sec )
+     ( Sech	   . calcFunc-sech )
      ( Sign	   . calcFunc-sign )
      ( Sin	   . calcFunc-sin )
      ( Sinh	   . calcFunc-sinh )
--- a/lisp/calc/calc.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calc/calc.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,7 @@
 ;;; calc.el --- the GNU Emacs calculator
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005 
+;;           Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
 ;; Maintainer: Jay Belanger <belanger@truman.edu>
@@ -205,9 +206,122 @@
 
 (require 'calc-macs)
 
+(defgroup calc nil
+  "GNU Calc"
+  :prefix "calc-"
+  :tag    "Calc")
+
 ;;;###autoload
-(defvar calc-settings-file (convert-standard-filename "~/.calc.el")
-  "*File in which to record permanent settings.")
+(defcustom calc-settings-file 
+  (convert-standard-filename "~/.calc.el")
+  "*File in which to record permanent settings."
+  :group 'calc
+  :type '(file))
+
+(defcustom calc-language-alist
+  '((latex-mode . latex)
+    (tex-mode   . tex)
+    (plain-tex-mode . tex)
+    (context-mode . tex)
+    (nroff-mode . eqn)
+    (pascal-mode . pascal)
+    (c-mode . c)
+    (c++-mode . c)
+    (fortran-mode . fortran)
+    (f90-mode . fortran))
+  "*Alist of major modes with appropriate Calc languages."
+  :group 'calc
+  :type '(alist :key-type (symbol :tag "Major mode") 
+                :value-type (symbol :tag "Calc language")))
+
+(defcustom calc-embedded-announce-formula 
+  "%Embed\n\\(% .*\n\\)*"
+  "*A regular expression which is sure to be followed by a calc-embedded formula."
+  :group 'calc
+  :type '(regexp))
+
+(defcustom calc-embedded-open-formula 
+  "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
+  "*A regular expression for the opening delimiter of a formula used by calc-embedded."
+  :group 'calc
+  :type '(regexp))
+
+(defcustom calc-embedded-close-formula 
+  "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n"
+  "*A regular expression for the closing delimiter of a formula used by calc-embedded."
+  :group 'calc
+  :type '(regexp))
+
+(defcustom calc-embedded-open-word 
+  "^\\|[^-+0-9.eE]"
+  "*A regular expression for the opening delimiter of a formula used by calc-embedded-word."
+  :group 'calc
+  :type '(regexp))
+
+(defcustom calc-embedded-close-word 
+  "$\\|[^-+0-9.eE]"
+  "*A regular expression for the closing delimiter of a formula used by calc-embedded-word."
+  :group 'calc
+  :type '(regexp))
+
+(defcustom calc-embedded-open-plain 
+  "%%% "
+  "*A string which is the opening delimiter for a \"plain\" formula.
+If calc-show-plain mode is enabled, this is inserted at the front of
+each formula."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-embedded-close-plain 
+  " %%%\n"
+  "*A string which is the closing delimiter for a \"plain\" formula.
+See calc-embedded-open-plain."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-embedded-open-new-formula 
+  "\n\n"
+  "*A string which is inserted at front of formula by calc-embedded-new-formula."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-embedded-close-new-formula 
+  "\n\n"
+  "*A string which is inserted at end of formula by calc-embedded-new-formula."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-embedded-open-mode 
+  "% "
+  "*A string which should precede calc-embedded mode annotations.
+This is not required to be present for user-written mode annotations."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-embedded-close-mode 
+  "\n"
+  "*A string which should follow calc-embedded mode annotations.
+This is not required to be present for user-written mode annotations."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-gnuplot-name 
+  "gnuplot"
+  "*Name of GNUPLOT program, for calc-graph features."
+  :group 'calc
+  :type '(string))
+
+(defcustom calc-gnuplot-plot-command 
+  nil
+  "*Name of command for displaying GNUPLOT output; %s = file name to print."
+  :group 'calc
+  :type '(choice (string) (sexp)))
+
+(defcustom calc-gnuplot-print-command 
+  "lp %s"
+  "*Name of command for printing GNUPLOT output; %s = file name to print."
+  :group 'calc
+  :type '(choice (string) (sexp)))
 
 (defvar calc-bug-address "belanger@truman.edu"
   "Address of the author of Calc, for use by `report-calc-bug'.")
@@ -656,8 +770,7 @@
 (put 'math-underflow 'error-conditions '(error math-underflow calc-error))
 (put 'math-underflow 'error-message "Floating-point underflow occurred")
 
-(defconst calc-version "2.02g")
-(defconst calc-version-date "Mon Nov 19 2001")
+(defconst calc-version "2.1")
 (defvar calc-trail-pointer nil)		; "Current" entry in trail buffer.
 (defvar calc-trail-overlay nil)		; Value of overlay-arrow-string.
 (defvar calc-undo-list nil)		; List of previous operations for undo.
--- a/lisp/calendar/appt.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/appt.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,9 +1,9 @@
 ;;; appt.el --- appointment notification functions
 
-;; Copyright (C) 1989, 1990, 1994, 1998, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1990, 1994, 1998, 2004  Free Software Foundation, Inc.
 
 ;; Author: Neil Mager <neilm@juliet.ll.mit.edu>
-;; Maintainer: FSF
+;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
 ;; Keywords: calendar
 
 ;; This file is part of GNU Emacs.
@@ -181,7 +181,7 @@
 
 ;;; Internal variables below this point.
 
-(defvar appt-buffer-name " *appt-buf*"
+(defconst appt-buffer-name " *appt-buf*"
   "Name of the appointments buffer.")
 
 (defvar appt-time-msg-list nil
@@ -486,9 +486,8 @@
 
 ;;;###autoload
 (defun appt-add (new-appt-time new-appt-msg)
-  "Add an appointment for the day at NEW-APPT-TIME and issue message NEW-APPT-MSG.
+  "Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG.
 The time should be in either 24 hour format or am/pm format."
-
   (interactive "sTime (hh:mm[am/pm]): \nsMessage: ")
   (unless (string-match "[0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?"
 		    new-appt-time)
--- a/lisp/calendar/cal-china.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-china.el	Mon Apr 04 16:43:15 2005 +0000
@@ -38,8 +38,8 @@
 ;; The date of Chinese New Year is correct from 1644-2051.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-coptic.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-coptic.el	Mon Apr 04 16:43:15 2005 +0000
@@ -29,8 +29,8 @@
 ;; diary.el that deal with the Coptic and Ethiopic calendars.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-french.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-french.el	Mon Apr 04 16:43:15 2005 +0000
@@ -29,8 +29,8 @@
 ;; diary.el that deal with the French Revolutionary calendar.
 
 ;; Technical details of the French Revolutionary calendar can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997), and in
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001), and in
 ;; ``Calendrical Calculations, Part II: Three Historical Calendars'' by
 ;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and
 ;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404.
--- a/lisp/calendar/cal-hebrew.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-hebrew.el	Mon Apr 04 16:43:15 2005 +0000
@@ -30,8 +30,8 @@
 ;; diary.el that deal with the Hebrew calendar.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-islam.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-islam.el	Mon Apr 04 16:43:15 2005 +0000
@@ -29,8 +29,8 @@
 ;; diary.el that deal with the Islamic calendar.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-iso.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-iso.el	Mon Apr 04 16:43:15 2005 +0000
@@ -30,8 +30,8 @@
 ;; diary.el that deal with the ISO calendar.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-julian.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-julian.el	Mon Apr 04 16:43:15 2005 +0000
@@ -29,8 +29,8 @@
 ;; diary.el that deal with the Julian calendar.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-mayan.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-mayan.el	Mon Apr 04 16:43:15 2005 +0000
@@ -44,8 +44,8 @@
 ;; Comments, improvements, and bug reports should be sent to Reingold.
 
 ;; Technical details of the Mayan calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997), and in
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001), and in
 ;; ``Calendrical Calculations, Part II: Three Historical Calendars''
 ;; by E. M. Reingold,  N. Dershowitz, and S. M. Clamen,
 ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993),
--- a/lisp/calendar/cal-persia.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-persia.el	Mon Apr 04 16:43:15 2005 +0000
@@ -29,8 +29,8 @@
 ;; diary.el that deal with the Persian calendar.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/cal-x.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/cal-x.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,9 +1,10 @@
 ;;; cal-x.el --- calendar windows in dedicated frames in X
 
-;; Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 2005  Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.sunysb.edu>
 ;;      Edward M. Reingold <reingold@cs.uiuc.edu>
+;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
 ;; Keywords: calendar
 ;; Human-Keywords: calendar, dedicated frames, X Window System
 
@@ -88,7 +89,7 @@
                                      (frame-parameters calendar-frame))))
               (iconify-or-deiconify-frame))
           (calendar-basic-setup arg)
-          (set-window-dedicated-p (selected-window) 'calendar)
+          (set-window-dedicated-p (selected-window) t)
           (set-window-dedicated-p
            (display-buffer
             (if (not (memq 'fancy-diary-display diary-display-hook))
@@ -96,7 +97,7 @@
               (if (not (bufferp (get-buffer fancy-diary-buffer)))
                   (make-fancy-diary-buffer))
               fancy-diary-buffer))
-           'diary))))))
+           t))))))
 
 (defun calendar-only-one-frame-setup (&optional arg)
   "Start calendar and display it in a dedicated frame.
@@ -117,7 +118,7 @@
                                      (frame-parameters calendar-frame))))
               (iconify-or-deiconify-frame))
           (calendar-basic-setup arg)
-          (set-window-dedicated-p (selected-window) 'calendar))))))
+          (set-window-dedicated-p (selected-window) t))))))
 
 (defun calendar-two-frame-setup (&optional arg)
   "Start calendar and diary in separate, dedicated frames.
@@ -139,7 +140,7 @@
                                   (frame-parameters calendar-frame))))
             (iconify-or-deiconify-frame))
         (display-buffer calendar-buffer)
-        (set-window-dedicated-p (selected-window) 'calendar)
+        (set-window-dedicated-p (selected-window) t)
         (setq diary-frame (make-frame diary-frame-parameters))
         (run-hooks 'calendar-after-frame-setup-hooks)
         (select-frame diary-frame)
@@ -154,7 +155,7 @@
             (if (not (bufferp (get-buffer fancy-diary-buffer)))
                 (make-fancy-diary-buffer))
             fancy-diary-buffer))
-         'diary)))))
+         t)))))
 
 ;; Formerly (get-file-buffer diary-file) was added to the list here,
 ;; but that isn't clean, and the value could even be nil.
--- a/lisp/calendar/calendar.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/calendar.el	Mon Apr 04 16:43:15 2005 +0000
@@ -75,13 +75,13 @@
 ;;       solar.el                      Sunrise/sunset, equinoxes/solstices
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; An earlier version of the technical details appeared in
 ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
 ;; Software--Practice and Experience, Volume 20, Number 9 (September, 1990),
-;; pages 899-928.  ``Calendrical Calculations, Part II: Three Historical
+;; pages 899-928, and in ``Calendrical Calculations, Part II: Three Historical
 ;; Calendars'' by E. M. Reingold,  N. Dershowitz, and S. M. Clamen,
 ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993),
 ;; pages 383-404.
@@ -2763,7 +2763,7 @@
 instead of the full names in the diary file.  Do not include a
 trailing `.' in the strings specified in this variable, though
 you may use such in the diary file.  If any element of this array
-is nil, then the abbreviation will be constructed as the first 
+is nil, then the abbreviation will be constructed as the first
 `calendar-abbrev-length' characters of the corresponding full name.")
 
 (defvar calendar-month-name-array
--- a/lisp/calendar/holidays.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/holidays.el	Mon Apr 04 16:43:15 2005 +0000
@@ -30,8 +30,8 @@
 ;; in calendar.el.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; An earlier version of the technical details appeared in
 ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
--- a/lisp/calendar/lunar.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/lunar.el	Mon Apr 04 16:43:15 2005 +0000
@@ -38,8 +38,8 @@
 ;; person rewrite the code for the lunar calculations in this file!
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/solar.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/solar.el	Mon Apr 04 16:43:15 2005 +0000
@@ -48,8 +48,8 @@
 ;;       1951--2050.  For other years the times will be within +/- 1 minute.
 
 ;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold,
-;; Cambridge University Press (1997).
+;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
+;; and Nachum Dershowitz, Cambridge University Press (2001).
 
 ;; Comments, corrections, and improvements should be sent to
 ;;  Edward M. Reingold               Department of Computer Science
--- a/lisp/calendar/time-date.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/calendar/time-date.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,5 +1,5 @@
-;;; time-date.el --- date and time handling functions
-;; Copyright (C) 1998, 1999, 2000, 2004, 2005 Free Software Foundation, Inc.
+;;; time-date.el --- Date and time handling functions
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;	Masanobu Umeda <umerin@mse.kyutech.ac.jp>
--- a/lisp/complete.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/complete.el	Mon Apr 04 16:43:15 2005 +0000
@@ -937,12 +937,11 @@
 	 ((not completion-table) nil)
 	 ((eq action nil) (try-completion str2 completion-table nil))
 	 ((eq action t) (all-completions str2 completion-table nil))
-	 ((eq action 'lambda)
-	  (eq (try-completion str2 completion-table nil) t))))
+	 ((eq action 'lambda) (test-completion str2 completion-table nil))))
     (funcall PC-old-read-file-name-internal string dir action)))
 
 
 (provide 'complete)
 
-;;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458
+;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458
 ;;; complete.el ends here
--- a/lisp/desktop.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/desktop.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; desktop.el --- save partial status of Emacs when killed
 
-;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001
+;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2005
 ;;   Free Software Foundation, Inc.
 
 ;; Author: Morten Welinder <terra@diku.dk>
@@ -158,14 +158,14 @@
 
 (defcustom desktop-no-desktop-file-hook nil
   "Normal hook run when `desktop-read' can't find a desktop file.
-May e.g. be used to show a dired buffer."
+May be used to show a dired buffer."
   :type 'hook
   :group 'desktop
   :version "22.1")
 
 (defcustom desktop-after-read-hook nil
   "Normal hook run after a successful `desktop-read'.
-May e.g. be used to show a buffer list."
+May be used to show a buffer list."
   :type 'hook
   :group 'desktop
   :version "22.1")
--- a/lisp/diff-mode.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/diff-mode.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; diff-mode.el --- a mode for viewing/editing context diffs
 
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
-;;           Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+;;   Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: convenience patch diff
@@ -263,7 +263,7 @@
 	(save-excursion
 	  (while (re-search-backward re start t)
 	    (replace-match "" t t)))))))
-	
+
 
 (defvar diff-font-lock-keywords
   `(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified
@@ -484,7 +484,7 @@
   (let ((fs (diff-hunk-file-names old)))
     (unless fs (error "No file name to look for"))
     (push (cons fs name) diff-remembered-files-alist)))
-  
+
 (defun diff-hunk-file-names (&optional old)
   "Give the list of file names textually mentioned for the current hunk."
   (save-excursion
@@ -952,7 +952,7 @@
 (define-minor-mode diff-minor-mode
   "Minor mode for viewing/editing context diffs.
 \\{diff-minor-mode-map}"
-  nil " Diff" nil
+  :group 'diff-mode :lighter " Diff"
   ;; FIXME: setup font-lock
   ;; setup change hooks
   (if (not diff-update-on-the-fly)
--- a/lisp/dired.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/dired.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1252,7 +1252,7 @@
       '("--"))
 
     (define-key map [menu-bar immediate compare-directories]
-      '(menu-item "Compare directories" dired-compare-directories
+      '(menu-item "Compare directories..." dired-compare-directories
 		  :help "Mark files with different attributes in two dired buffers"))
     (define-key map [menu-bar immediate backup-diff]
       '(menu-item "Compare with Backup" dired-backup-diff
--- a/lisp/ediff-hook.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/ediff-hook.el	Mon Apr 04 16:43:15 2005 +0000
@@ -131,10 +131,10 @@
        ))
    (defvar ediff-misc-menu
      '("Ediff Miscellanea"
-       ["Ediff Manual..." ediff-documentation t]
-       ["Customize Ediff..." ediff-customize t]
-       ["List Ediff Sessions..." ediff-show-registry t]
-       ["Use separate frame for Ediff control buffer..."
+       ["Ediff Manual" ediff-documentation t]
+       ["Customize Ediff" ediff-customize t]
+       ["List Ediff Sessions" ediff-show-registry t]
+       ["Use separate frame for Ediff control buffer"
 	ediff-toggle-multiframe
 	:style toggle
 	:selected (if (and (featurep 'ediff-util)
@@ -242,14 +242,14 @@
 
        ;; define ediff miscellanea
        (define-key menu-bar-ediff-misc-menu [emultiframe]
-	 '("Toggle use of separate control buffer frame..."
+	 '("Toggle use of separate control buffer frame"
 	   . ediff-toggle-multiframe))
        (define-key menu-bar-ediff-misc-menu [eregistry]
-	 '("List Ediff Sessions..." . ediff-show-registry))
+	 '("List Ediff Sessions" . ediff-show-registry))
        (define-key menu-bar-ediff-misc-menu [ediff-cust]
-	 '("Customize Ediff..." . ediff-customize))
+	 '("Customize Ediff" . ediff-customize))
        (define-key menu-bar-ediff-misc-menu [ediff-doc]
-	 '("Ediff Manual..." . ediff-documentation))
+	 '("Ediff Manual" . ediff-documentation))
        )
 
       ) ; emacs case
--- a/lisp/emacs-lisp/autoload.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/emacs-lisp/autoload.el	Mon Apr 04 16:43:15 2005 +0000
@@ -72,7 +72,7 @@
   (let ((car (car-safe form)) expand)
     (cond
      ;; For complex cases, try again on the macro-expansion.
-     ((and (memq car '(easy-mmode-define-global-mode
+     ((and (memq car '(easy-mmode-define-global-mode define-global-minor-mode
 		       easy-mmode-define-minor-mode define-minor-mode))
 	   (setq expand (let ((load-file-name file)) (macroexpand form)))
 	   (eq (car expand) 'progn)
--- a/lisp/emacs-lisp/debug.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/emacs-lisp/debug.el	Mon Apr 04 16:43:15 2005 +0000
@@ -632,24 +632,31 @@
 Use \\[cancel-debug-on-entry] to cancel the effect of this command.
 Redefining FUNCTION also cancels it."
   (interactive "aDebug on entry (to function): ")
-  ;; Handle a function that has been aliased to some other function.
-  (if (and (subrp (symbol-function function))
-	   (eq (cdr (subr-arity (symbol-function function))) 'unevalled))
-      (error "Function %s is a special form" function))
-  (if (or (symbolp (symbol-function function))
+  (when (and (subrp (symbol-function function)) 
+	     (eq (cdr (subr-arity (symbol-function function))) 'unevalled))
+    (error "Function %s is a special form" function))
+  (if (or (symbolp (symbol-function function)) 
 	  (subrp (symbol-function function)))
-      ;; Create a wrapper in which we can then add the necessary debug call.
+      ;; The function is built-in or aliased to another function.
+      ;; Create a wrapper in which we can add the debug call.
       (fset function `(lambda (&rest debug-on-entry-args)
 			,(interactive-form (symbol-function function))
-			(apply ',(symbol-function function)
-			       debug-on-entry-args))))
-  (or (consp (symbol-function function))
-      (debug-convert-byte-code function))
-  (or (consp (symbol-function function))
-      (error "Definition of %s is not a list" function))
+			(apply ',(symbol-function function) 
+			       debug-on-entry-args)))
+    (when (eq (car-safe (symbol-function function)) 'autoload)
+      ;; The function is autoloaded.  Load its real definition.
+      (load (cadr (symbol-function function)) nil noninteractive nil t))
+    (when (or (not (consp (symbol-function function)))
+	      (and (eq (car (symbol-function function)) 'macro)
+		   (not (consp (cdr (symbol-function function))))))
+      ;; The function is byte-compiled.  Create a wrapper in which
+      ;; we can add the debug call.
+      (debug-convert-byte-code function)))
+  (unless (consp (symbol-function function))
+    (error "Definition of %s is not a list" function))
   (fset function (debug-on-entry-1 function t))
-  (or (memq function debug-function-list)
-      (push function debug-function-list))
+  (unless (memq function debug-function-list)
+    (push function debug-function-list))
   function)
 
 ;;;###autoload
@@ -664,45 +671,52 @@
 	   (if name (intern name)))))
   (if (and function (not (string= function "")))
       (progn
-	(let ((f (debug-on-entry-1 function nil)))
+	(let ((defn (debug-on-entry-1 function nil)))
 	  (condition-case nil
-	      (if (and (equal (nth 1 f) '(&rest debug-on-entry-args))
-		       (eq (car (nth 3 f)) 'apply))
-		  ;; `f' is a wrapper introduced in debug-on-entry.
-		  ;; Get rid of it since we don't need it any more.
-		  (setq f (nth 1 (nth 1 (nth 3 f)))))
+	      (when (and (equal (nth 1 defn) '(&rest debug-on-entry-args))
+			 (eq (car (nth 3 defn)) 'apply))
+		;; `defn' is a wrapper introduced in debug-on-entry.
+		;; Get rid of it since we don't need it any more.
+		(setq defn (nth 1 (nth 1 (nth 3 defn)))))
 	    (error nil))
-	  (fset function f))
+	  (fset function defn))
 	(setq debug-function-list (delq function debug-function-list))
 	function)
     (message "Cancelling debug-on-entry for all functions")
     (mapcar 'cancel-debug-on-entry debug-function-list)))
 
 (defun debug-convert-byte-code (function)
-  (let ((defn (symbol-function function)))
-    (if (not (consp defn))
-	;; Assume a compiled code object.
-	(let* ((contents (append defn nil))
-	       (body
-		(list (list 'byte-code (nth 1 contents)
-			    (nth 2 contents) (nth 3 contents)))))
-	  (if (nthcdr 5 contents)
-	      (setq body (cons (list 'interactive (nth 5 contents)) body)))
-	  (if (nth 4 contents)
-	      ;; Use `documentation' here, to get the actual string,
-	      ;; in case the compiled function has a reference
-	      ;; to the .elc file.
-	      (setq body (cons (documentation function) body)))
-	  (fset function (cons 'lambda (cons (car contents) body)))))))
+  (let* ((defn (symbol-function function))
+	 (macro (eq (car-safe defn) 'macro)))
+    (when macro (setq defn (cdr defn)))
+    (unless (consp defn)
+      ;; Assume a compiled code object.
+      (let* ((contents (append defn nil))
+	     (body
+	      (list (list 'byte-code (nth 1 contents)
+			  (nth 2 contents) (nth 3 contents)))))
+	(if (nthcdr 5 contents)
+	    (setq body (cons (list 'interactive (nth 5 contents)) body)))
+	(if (nth 4 contents)
+	    ;; Use `documentation' here, to get the actual string,
+	    ;; in case the compiled function has a reference
+	    ;; to the .elc file.
+	    (setq body (cons (documentation function) body)))
+	(setq defn (cons 'lambda (cons (car contents) body))))
+      (when macro (setq defn (cons 'macro defn)))
+      (fset function defn))))
 
 (defun debug-on-entry-1 (function flag)
   (let* ((defn (symbol-function function))
 	 (tail defn))
-    (if (subrp tail)
-	(error "%s is a built-in function" function)
-      (if (eq (car tail) 'macro) (setq tail (cdr tail)))
-      (if (eq (car tail) 'lambda) (setq tail (cdr tail))
-	(error "%s not user-defined Lisp function" function))
+    (when (eq (car-safe tail) 'macro) 
+      (setq tail (cdr tail)))
+    (if (not (eq (car-safe tail) 'lambda))
+	;; Only signal an error when we try to set debug-on-entry.
+	;; When we try to clear debug-on-entry, we are now done.
+	(when flag
+	  (error "%s is not a user-defined Lisp function" function))
+      (setq tail (cdr tail))
       ;; Skip the docstring.
       (when (and (stringp (cadr tail)) (cddr tail))
 	(setq tail (cdr tail)))
@@ -713,8 +727,8 @@
 	;; Add/remove debug statement as needed.
 	(if flag
 	    (setcdr tail (cons '(implement-debug-on-entry) (cdr tail)))
-	  (setcdr tail (cddr tail))))
-      defn)))
+	  (setcdr tail (cddr tail)))))
+    defn))
 
 (defun debugger-list-functions ()
   "Display a list of all the functions now set to debug on entry."
--- a/lisp/emacs-lisp/easy-mmode.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/emacs-lisp/easy-mmode.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,7 @@
 ;;; easy-mmode.el --- easy definition for major and minor modes
 
-;; Copyright (C) 1997,2000,01,02,03,2004  Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005
+;;   Free Software Foundation, Inc.
 
 ;; Author: Georges Brun-Cottan <Georges.Brun-Cottan@inria.fr>
 ;; Maintainer: Stefan Monnier <monnier@gnu.org>
@@ -152,8 +153,8 @@
     (unless group
       ;; We might as well provide a best-guess default group.
       (setq group
-	    `(:group ',(or (custom-current-group)
-			   (intern (replace-regexp-in-string
+	    `(:group (or (custom-current-group)
+			 ',(intern (replace-regexp-in-string
 				    "-mode\\'" "" mode-name))))))
 
     `(progn
@@ -253,8 +254,9 @@
 ;;;
 
 ;;;###autoload
-(defmacro easy-mmode-define-global-mode (global-mode mode turn-on
-						     &rest keys)
+(defalias 'easy-mmode-define-global-mode 'define-global-minor-mode)
+;;;###autoload
+(defmacro define-global-minor-mode (global-mode mode turn-on &rest keys)
   "Make GLOBAL-MODE out of the buffer-local minor MODE.
 TURN-ON is a function that will be called with no args in every buffer
   and that should try to turn MODE on if applicable for that buffer.
@@ -278,8 +280,8 @@
     (unless group
       ;; We might as well provide a best-guess default group.
       (setq group
-	    `(:group ',(or (custom-current-group)
-			   (intern (replace-regexp-in-string
+	    `(:group (or (custom-current-group)
+			 ',(intern (replace-regexp-in-string
 				    "-mode\\'" "" (symbol-name mode)))))))
 
     `(progn
--- a/lisp/emacs-lisp/eldoc.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/emacs-lisp/eldoc.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,7 @@
 ;;; eldoc.el --- show function arglist or variable docstring in echo area
 
-;; Copyright (C) 1996, 97, 98, 99, 2000, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003, 2005
+;;   Free Software Foundation, Inc.
 
 ;; Author: Noah Friedman <friedman@splode.com>
 ;; Maintainer: friedman@splode.com
@@ -150,7 +151,7 @@
 instead.
 
 With prefix ARG, turn ElDoc mode on if and only if ARG is positive."
-  nil eldoc-minor-mode-string nil
+  :group 'eldoc :lighter eldoc-minor-mode-string
   (setq eldoc-last-message nil)
   (if eldoc-mode
       (progn
--- a/lisp/emulation/cua-base.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/emulation/cua-base.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1016,7 +1016,7 @@
 	(scroll-down arg)
       (beginning-of-buffer (goto-char (point-min)))))))
 
-(put 'cua-scroll-up 'CUA 'move)
+(put 'cua-scroll-down 'CUA 'move)
 
 ;;; Cursor indications
 
@@ -1307,6 +1307,7 @@
 the active selection.  C-z, C-x, C-c, and C-v will undo, cut, copy, and
 paste (in addition to the normal emacs bindings)."
   :global t
+  :group 'cua
   :set-after '(cua-enable-modeline-indications cua-use-hyper-key)
   :require 'cua-base
   :link '(emacs-commentary-link "cua-base.el")
--- a/lisp/files.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/files.el	Mon Apr 04 16:43:15 2005 +0000
@@ -291,7 +291,7 @@
   :group 'editing-basics)
 
 (defcustom mode-require-final-newline t
-  "*Whether to add a newline at the end of the file, in certain major modes.
+  "*Whether to add a newline at end of file, in certain major modes.
 Those modes set `require-final-newline' to this value when you enable them.
 They do so because they are used for files that are supposed
 to end in newlines, and the question is how to arrange that.
@@ -299,10 +299,16 @@
 A value of t means do this only when the file is about to be saved.
 A value of `visit' means do this right after the file is visited.
 A value of `visit-save' means do it at both of those times.
-Any other non-nil value means ask user whether to add a newline, when saving."
+Any other non-nil value means ask user whether to add a newline, when saving.
+nil means don't add newlines.
+
+You will have to be careful if you set this to nil: you will have
+to remember to manually add a final newline whenever you finish a
+file that really needs one."
   :type '(choice (const :tag "When visiting" visit)
 		 (const :tag "When saving" t)
 		 (const :tag "When visiting or saving" visit-save)
+		 (const :tag "Never" nil)
 		 (other :tag "Ask" ask))
   :group 'editing-basics
   :version "22.1")
@@ -928,20 +934,31 @@
 (defvar find-file-default nil
   "Used within `find-file-read-args'.")
 
+(defmacro minibuffer-with-setup-hook (fun &rest body)
+  "Add FUN to `minibuffer-setup-hook' while executing BODY.
+BODY should use the minibuffer at most once.
+Recursive uses of the minibuffer will not be affected."
+  (declare (indent 1) (debug t))
+  (let ((hook (make-symbol "setup-hook")))
+    `(let ((,hook
+	    (lambda ()
+	      ;; Clear out this hook so it does not interfere
+	      ;; with any recursive minibuffer usage.
+	      (remove-hook 'minibuffer-setup-hook ,hook)
+	      (,fun))))
+       (unwind-protect
+	   (progn
+	     (add-hook 'minibuffer-setup-hook ,hook)
+	     ,@body)
+	 (remove-hook 'minibuffer-setup-hook ,hook)))))
+
 (defun find-file-read-args (prompt mustmatch)
   (list (let ((find-file-default
 	       (and buffer-file-name
-		    (abbreviate-file-name buffer-file-name)))
-	      (munge-default-fun
-	       (lambda ()
-		 (setq minibuffer-default find-file-default)
-		 ;; Clear out this hook so it does not interfere
-		 ;; with any recursive minibuffer usage.
-		 (pop minibuffer-setup-hook)))
-	      (minibuffer-setup-hook
-	       minibuffer-setup-hook))
-	  (add-hook 'minibuffer-setup-hook munge-default-fun)
-	  (read-file-name prompt nil default-directory mustmatch))
+		    (abbreviate-file-name buffer-file-name))))
+	  (minibuffer-with-setup-hook
+	      (lambda () (setq minibuffer-default find-file-default))
+	    (read-file-name prompt nil default-directory mustmatch)))
 	t))
 
 (defun find-file (filename &optional wildcards)
--- a/lisp/filesets.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/filesets.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; filesets.el --- handle group of files
 
-;; Copyright (C) 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2005  Free Software Foundation, Inc.
 
 ;; Author: Thomas Link <t.link@gmx.at>
 ;; Maintainer: FSF
@@ -250,8 +250,15 @@
 ;  (customize-set-variable var val))
 ;  (filesets-build-menu))
 
+;; It seems this is a workaround for the XEmacs issue described in the
+;; doc-string of filesets-menu-ensure-use-cached. Under Emacs this is
+;; essentially just `set-default'.
 (defun filesets-set-default (sym val &optional init-flag)
-  "Set-default wrapper function used in conjunction with `defcustom'."
+  "Set-default wrapper function used in conjunction with `defcustom'.
+If SYM is in the list `filesets-ignore-next-set-default', delete
+it from that list, and return nil.  Otherwise, set the value of
+SYM to VAL and return t.  If INIT-FLAG is non-nil, set with
+`custom-initialize-set', otherwise with `set-default'."
   (let ((ignore-flag (member sym filesets-ignore-next-set-default)))
     (if ignore-flag
 	(setq filesets-ignore-next-set-default
@@ -304,31 +311,26 @@
   :type 'sexp
   :group 'filesets)
 
-(if filesets-running-xemacs
-    (progn
-      (defcustom filesets-menu-path nil
-	"*The menu under which the filesets menu should be inserted.
-XEmacs specific; see `add-submenu' for documentation."
-	:set (function filesets-set-default)
-	:type 'sexp
-	:group 'filesets)
+(defcustom filesets-menu-path nil
+  "*The menu under which the filesets menu should be inserted.
+See `add-submenu' for documentation."
+  :set (function filesets-set-default)
+  :type 'sexp
+  :group 'filesets)
 
-      (defcustom filesets-menu-before "File"
-	"*The name of a menu before which this menu should be added.
-XEmacs specific; see `add-submenu' for documentation."
-	:set (function filesets-set-default)
-	:type 'sexp
-	:group 'filesets)
+(defcustom filesets-menu-before "File"
+  "*The name of a menu before which this menu should be added.
+See `add-submenu' for documentation."
+  :set (function filesets-set-default)
+  :type 'sexp
+  :group 'filesets)
 
-      (defcustom filesets-menu-in-menu nil
-	"*Use that instead of `current-menubar' as the menu to change.
-XEmacs specific; see `add-submenu' for documentation."
-	:set (function filesets-set-default)
-	:type 'sexp
-	:group 'filesets))
-  (defvar filesets-menu-path nil)
-  (defvar filesets-menu-before nil)
-  (defvar filesets-menu-in-menu nil))
+(defcustom filesets-menu-in-menu nil
+  "*Use that instead of `current-menubar' as the menu to change.
+See `add-submenu' for documentation."
+  :set (function filesets-set-default)
+  :type 'sexp
+  :group 'filesets)
 
 (defcustom filesets-menu-shortcuts-flag t
   "*Non-nil means to prepend menus with hopefully unique shortcuts."
@@ -351,7 +353,7 @@
 (defcustom filesets-menu-cache-file
   (if filesets-running-xemacs
       "~/.xemacs/filesets-cache.el"
-      "~/.filesets-cache.el")
+      "~/.emacs.d/filesets-cache.el")
   "*File to be used for saving the filesets menu between sessions.
 Set this to \"\", to disable caching of menus.
 Don't forget to check out `filesets-menu-ensure-use-cached'."
@@ -1070,9 +1072,7 @@
 ;;; Emacs compatibility
 (eval-and-compile
   (if filesets-running-xemacs
-      (progn
-	(fset 'filesets-error 'error)
-	(fset 'filesets-add-submenu 'add-submenu))
+      (fset 'filesets-error 'error)
 
     (require 'easymenu)
 
@@ -1080,12 +1080,6 @@
       "`error' wrapper."
       (error (mapconcat 'identity args " ")))
 
-    ;; This should work for 21.1 Emacs
-    (defun filesets-add-submenu (menu-path submenu &optional
-					   before in-menu)
-      "`easy-menu-define' wrapper."
-      (easy-menu-define
-	filesets-submenu global-map "Filesets menu" submenu))
     ))
 
 (defun filesets-filter-dir-names (lst &optional negative)
@@ -2339,7 +2333,7 @@
       (filesets-menu-cache-file-save-maybe)))
   (let ((cb (current-buffer)))
     (when (not (member cb filesets-updated-buffers))
-      (filesets-add-submenu
+      (add-submenu
        filesets-menu-path
        `(,filesets-menu-name
 	 ("# Filesets"
--- a/lisp/font-core.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/font-core.el	Mon Apr 04 16:43:15 2005 +0000
@@ -148,7 +148,7 @@
 The above is the default behavior of `font-lock-mode'; you may specify
 your own function which is called when `font-lock-mode' is toggled via
 `font-lock-function'. "
-  nil nil nil
+  :group 'font-lock
   ;; Don't turn on Font Lock mode if we don't have a display (we're running a
   ;; batch job) or if the buffer is invisible (the name starts with a space).
   (when (or noninteractive (eq (aref (buffer-name) 0) ?\ ))
--- a/lisp/font-lock.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/font-lock.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1097,7 +1097,7 @@
 	  ((error quit) (message "Fontifying block...%s" error-data)))))))
 
 (if (boundp 'facemenu-keymap)
-    (define-key facemenu-keymap "\M-g" 'font-lock-fontify-block))
+    (define-key facemenu-keymap "\M-o" 'font-lock-fontify-block))
 
 ;;; End of Fontification functions.
 
--- a/lisp/generic-x.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/generic-x.el	Mon Apr 04 16:43:15 2005 +0000
@@ -170,7 +170,8 @@
 	    '((nil "^\\([-A-Za-z0-9_]+\\)" 1)
 	      ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1)
 	      ("*Locations*"   "^\\s-*<Location\\s-*\\([^>]+\\)>" 1))))))
-  "Generic mode for Apache or HTTPD configuration files."))
+  "Generic mode for Apache or HTTPD configuration files."
+  :group 'generic-x))
 
 (when (memq 'apache-log-generic-mode generic-extras-enable-list)
 
@@ -183,7 +184,8 @@
      (2 font-lock-variable-name-face)))
   '("access_log\\'")
   nil
-  "Mode for Apache log files"))
+  "Mode for Apache log files"
+  :group 'generic-x))
 
 ;;; Samba
 (when (memq 'samba-generic-mode generic-extras-enable-list)
@@ -197,7 +199,8 @@
      (2 font-lock-type-face)))
   '("smb\\.conf\\'")
   '(generic-bracket-support)
-  "Generic mode for Samba configuration files."))
+  "Generic mode for Samba configuration files."
+  :group 'generic-x))
 
 ;;; Fvwm
 ;; This is pretty basic. Also, modes for other window managers could
@@ -222,7 +225,8 @@
   nil
   '("\\.fvwmrc\\'" "\\.fvwm2rc\\'")
   nil
-  "Generic mode for FVWM configuration files."))
+  "Generic mode for FVWM configuration files."
+  :group 'generic-x))
 
 ;;; X Resource
 ;; I'm pretty sure I've seen an actual mode to do this, but I don't
@@ -235,7 +239,8 @@
   '(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face))
   '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'")
   nil
-  "Generic mode for X Resource configuration files."))
+  "Generic mode for X Resource configuration files."
+  :group 'generic-x))
 
 ;;; Hosts
 (when (memq 'hosts-generic-mode generic-extras-enable-list)
@@ -246,7 +251,8 @@
   '(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face))
   '("[hH][oO][sS][tT][sS]\\'")
   nil
-  "Generic mode for HOSTS files."))
+  "Generic mode for HOSTS files."
+  :group 'generic-x))
 
 ;;; Windows INF files
 (when (memq 'inf-generic-mode generic-extras-enable-list)
@@ -257,7 +263,8 @@
   '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face))
   '("\\.[iI][nN][fF]\\'")
   '(generic-bracket-support)
-  "Generic mode for MS-Windows INF files."))
+  "Generic mode for MS-Windows INF files."
+  :group 'generic-x))
 
 ;;; Windows INI files
 ;; Should define escape character as well!
@@ -277,7 +284,8 @@
       (setq imenu-generic-expression
 	    '((nil "^\\[\\(.*\\)\\]" 1)
 	      ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1))))))
-  "Generic mode for MS-Windows INI files."))
+  "Generic mode for MS-Windows INI files."
+  :group 'generic-x))
 
 ;;; Windows REG files
 ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax!
@@ -294,7 +302,8 @@
     (lambda ()
       (setq imenu-generic-expression
 	    '((nil "^\\s-*\\(.*\\)\\s-*=" 1))))))
-  "Generic mode for MS-Windows Registry files."))
+  "Generic mode for MS-Windows Registry files."
+  :group 'generic-x))
 
 ;;; DOS/Windows BAT files
 (when (memq 'bat-generic-mode generic-extras-enable-list)
@@ -368,7 +377,8 @@
     "\\`[cC][oO][nN][fF][iI][gG]\\."
     "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.")
   '(generic-bat-mode-setup-function)
-  "Generic mode for MS-Windows BAT files.")
+  "Generic mode for MS-Windows BAT files."
+  :group 'generic-x)
 
 (defvar bat-generic-mode-syntax-table nil
   "Syntax table in use in bat-generic-mode buffers.")
@@ -446,7 +456,8 @@
     (lambda ()
       (setq imenu-generic-expression
 	    '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))))
-  "Mode for Mailagent rules files."))
+  "Mode for Mailagent rules files."
+  :group 'generic-x))
 
 ;; Solaris/Sys V prototype files
 (when (memq 'prototype-generic-mode generic-extras-enable-list)
@@ -469,7 +480,8 @@
      (2 font-lock-variable-name-face)))
   '("prototype\\'")
   nil
-  "Mode for Sys V prototype files."))
+  "Mode for Sys V prototype files."
+  :group 'generic-x))
 
 ;; Solaris/Sys V pkginfo files
 (when (memq 'pkginfo-generic-mode generic-extras-enable-list)
@@ -482,7 +494,8 @@
      (2 font-lock-variable-name-face)))
   '("pkginfo\\'")
   nil
-  "Mode for Sys V pkginfo files."))
+  "Mode for Sys V pkginfo files."
+  :group 'generic-x))
 
 ;; Javascript mode
 ;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU]
@@ -559,7 +572,8 @@
       (setq imenu-generic-expression
 	    '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)
 	      ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1))))))
-  "Mode for JavaScript files.")
+  "Mode for JavaScript files."
+  :group 'generic-x)
 
 ;; VRML files
 (define-generic-mode vrml-generic-mode
@@ -610,7 +624,8 @@
 	      ("*Definitions*"
 	       "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
 	       1))))))
-  "Generic Mode for VRML files.")
+  "Generic Mode for VRML files."
+  :group 'generic-x)
 
 ;; Java Manifests
 (define-generic-mode java-manifest-generic-mode
@@ -629,7 +644,8 @@
      (2 font-lock-constant-face)))
   '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'")
   nil
-  "Mode for Java Manifest files")
+  "Mode for Java Manifest files"
+  :group 'generic-x)
 
 ;; Java properties files
 (define-generic-mode java-properties-generic-mode
@@ -659,7 +675,8 @@
     (lambda ()
       (setq imenu-generic-expression
 	    '((nil "^\\([^#! \t\n\r=:]+\\)" 1))))))
-  "Mode for Java properties files.")
+  "Mode for Java properties files."
+  :group 'generic-x)
 
 ;; C shell alias definitions
 (when (memq 'alias-generic-mode generic-extras-enable-list)
@@ -677,7 +694,8 @@
     (lambda ()
       (setq imenu-generic-expression
 	    '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
-  "Mode for C Shell alias files."))
+  "Mode for C Shell alias files."
+  :group 'generic-x))
 
 ;;; Windows RC files
 ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
@@ -769,7 +787,8 @@
        (2 font-lock-variable-name-face nil t))))
     '("\\.[rR][cC]$")
     nil
-    "Generic mode for MS-Windows Resource files."))
+    "Generic mode for MS-Windows Resource files."
+    :group 'generic-x))
 
 ;; InstallShield RUL files
 ;; Contributed by  Alfred.Correira@Pervasive.Com
@@ -1389,7 +1408,8 @@
       font-lock-variable-name-face "[^_]" "[^_]"))) ; is this face the best choice?
   '("\\.[rR][uU][lL]$")
   '(generic-rul-mode-setup-function)
-  "Generic mode for InstallShield RUL files.")
+  "Generic mode for InstallShield RUL files."
+  :group 'generic-x)
 
 (define-skeleton rul-if
   "Insert an if statement."
@@ -1437,7 +1457,8 @@
      (2 font-lock-variable-name-face)))
   '("\\.mailrc\\'")
   nil
-  "Mode for mailrc files.")
+  "Mode for mailrc files."
+  :group 'generic-x)
 
 ;; Inetd.conf
 (when (memq 'inetd-conf-generic-mode generic-extras-enable-list)
@@ -1457,7 +1478,8 @@
    (function
     (lambda ()
       (setq imenu-generic-expression
-	    '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
+	    '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))
+  :group 'generic-x))
 
 ;; Services
 (when (memq 'etc-services-generic-mode generic-extras-enable-list)
@@ -1475,7 +1497,8 @@
    (function
     (lambda ()
       (setq imenu-generic-expression
-	    '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
+	    '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))
+  :group 'generic-x))
 
 ;; Password and Group files
 (when (memq 'etc-passwd-generic-mode generic-extras-enable-list)
@@ -1517,7 +1540,8 @@
    (function
     (lambda ()
       (setq imenu-generic-expression
-	    '((nil "^\\([-A-Za-z0-9_]+\\):" 1))))))))
+	    '((nil "^\\([-A-Za-z0-9_]+\\):" 1))))))
+  :group 'generic-x))
 
 ;; Fstab
 (when (memq 'etc-fstab-generic-mode generic-extras-enable-list)
@@ -1567,7 +1591,8 @@
    (function
     (lambda ()
       (setq imenu-generic-expression
-	    '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1))))))))
+	    '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1))))))
+  :group 'generic-x))
 
 ;; From Jacques Duthen <jacques.duthen@sncf.fr>
 (eval-when-compile
@@ -1609,7 +1634,8 @@
   nil ;; no auto-mode-alist
   ;; '(show-tabs-generic-mode-hook-fun)
   nil
-  "Generic mode to show tabs and trailing spaces")
+  "Generic mode to show tabs and trailing spaces"
+  :group 'generic-x)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; DNS modes
@@ -1630,7 +1656,8 @@
   ;; List of additional automode-alist expressions
   '("/etc/named.boot\\'")
   ;; List of set up functions to call
-  nil)
+  nil
+  :group 'generic-x)
 
 (define-generic-mode named-database-generic-mode
   ;; List of comment characters
@@ -1643,7 +1670,8 @@
   ;; List of additional automode-alist expressions
   nil
   ;; List of set up functions to call
-  nil)
+  nil
+  :group 'generic-x)
 
 (defvar named-database-time-string "%Y%m%d%H"
   "Timestring for named serial numbers.")
@@ -1663,7 +1691,8 @@
   ;; List of additional automode-alist expressions
   '("/etc/resolv[e]?.conf\\'")
   ;; List of set up functions to call
-  nil)
+  nil
+  :group 'generic-x)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Modes for spice and common electrical engineering circuit netlist formats
@@ -1705,7 +1734,8 @@
    (function
     (lambda()
       (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
-  "Generic mode for SPICE circuit netlist files.")
+  "Generic mode for SPICE circuit netlist files."
+  :group 'generic-x)
 
 (define-generic-mode ibis-generic-mode
   '(?|)
@@ -1714,7 +1744,8 @@
     ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face))
   '("\\.[iI][bB][sS]\\'")
   '(generic-bracket-support)
-  "Generic mode for IBIS circuit netlist files.")
+  "Generic mode for IBIS circuit netlist files."
+  :group 'generic-x)
 
 (define-generic-mode astap-generic-mode
   nil
@@ -1749,7 +1780,8 @@
    (function
     (lambda()
       (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
-  "Generic mode for ASTAP circuit netlist files.")
+  "Generic mode for ASTAP circuit netlist files."
+  :group 'generic-x)
 
 (define-generic-mode etc-modules-conf-generic-mode
   ;; List of comment characters
@@ -1791,7 +1823,8 @@
   ;; List of additional automode-alist expressions
   '("/etc/modules.conf" "/etc/conf.modules")
   ;; List of set up functions to call
-  nil)
+  nil
+  :group 'generic-x)
 
 (provide 'generic-x)
 
--- a/lisp/generic.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/generic.el	Mon Apr 04 16:43:15 2005 +0000
@@ -185,7 +185,8 @@
 ;;;###autoload
 (defmacro define-generic-mode (mode comment-list keyword-list
 				    font-lock-list auto-mode-list
-				    function-list &optional docstring)
+				    function-list &optional docstring
+				    &rest custom-keyword-args)
   "Create a new generic mode MODE.
 
 MODE is the name of the command for the generic mode; it need not
@@ -216,59 +217,90 @@
 FUNCTION-LIST is a list of functions to call to do some
 additional setup.
 
+The optional CUSTOM-KEYWORD-ARGS are pairs of keywords and
+values.  They will be passed to the generated `defcustom' form of
+the mode hook variable MODE-hook.  You can specify keyword
+arguments without specifying a docstring.
+
 See the file generic-x.el for some examples of `define-generic-mode'."
-  (let* ((name-unquoted (if (eq (car-safe mode) 'quote) ; Backward compatibility.
-			    (eval mode)
-			  mode))
-	 (name-string (symbol-name name-unquoted))
+  (declare (debug (sexp def-form def-form def-form form def-form
+			&optional stringp))
+	   (indent 1))
+
+  ;; Backward compatibility.
+  (when (eq (car-safe mode) 'quote)
+    (setq mode (eval mode)))
+
+  (when (and docstring (not (stringp docstring)))
+    ;; DOCSTRING is not a string so we assume that it's actually the
+    ;; first keyword of CUSTOM-KEYWORD-ARGS.
+    (push docstring custom-keyword-args)
+    (setq docstring nil))
+
+  (let* ((mode-name (symbol-name mode))
 	 (pretty-name (capitalize (replace-regexp-in-string
-				   "-mode\\'" "" name-string))))
+				   "-mode\\'" "" mode-name)))
+	 (mode-hook (intern (concat mode-name "-hook"))))
+
+    (unless (plist-get custom-keyword-args :group)
+      (setq custom-keyword-args
+	    (plist-put custom-keyword-args 
+		       :group `(or (custom-current-group)
+				   ',(intern (replace-regexp-in-string
+					      "-mode\\'" "" mode-name))))))
 
     `(progn
        ;; Add a new entry.
-       (add-to-list 'generic-mode-list ,name-string)
+       (add-to-list 'generic-mode-list ,mode-name)
 
        ;; Add it to auto-mode-alist
        (dolist (re ,auto-mode-list)
-	 (add-to-list 'auto-mode-alist (cons re ',name-unquoted)))
+	 (add-to-list 'auto-mode-alist (cons re ',mode)))
 
-       (defun ,name-unquoted ()
+       (defcustom ,mode-hook nil
+	 ,(concat "Hook run when entering " pretty-name " mode.")
+	 :type 'hook
+	 ,@custom-keyword-args)
+
+       (defun ,mode ()
 	 ,(or docstring
 	      (concat pretty-name " mode.\n"
 		      "This a generic mode defined with `define-generic-mode'."))
 	 (interactive)
-	 (generic-mode-internal ',name-unquoted ,comment-list ,keyword-list
+	 (generic-mode-internal ',mode ,comment-list ,keyword-list
 				,font-lock-list ,function-list)))))
 
 ;;;###autoload
-(defun generic-mode-internal (mode comments keywords font-lock-list funs)
+(defun generic-mode-internal (mode comment-list keyword-list
+				   font-lock-list function-list)
   "Go into the generic mode MODE."
-  (let* ((modename (symbol-name mode))
-	 (generic-mode-hooks (intern (concat modename "-hook")))
+  (let* ((mode-name (symbol-name mode))
 	 (pretty-name (capitalize (replace-regexp-in-string
-				   "-mode\\'" "" modename))))
+				   "-mode\\'" "" mode-name)))
+	 (mode-hook (intern (concat mode-name "-hook"))))
 
     (kill-all-local-variables)
 
     (setq major-mode mode
 	  mode-name pretty-name)
 
-    (generic-mode-set-comments comments)
+    (generic-mode-set-comments comment-list)
 
     ;; Font-lock functionality.
     ;; Font-lock-defaults is always set even if there are no keywords
     ;; or font-lock expressions, so comments can be highlighted.
     (setq generic-font-lock-keywords
 	  (append
-	   (when keywords
-	     (list (generic-make-keywords-list keywords font-lock-keyword-face)))
+	   (when keyword-list
+	     (list (generic-make-keywords-list keyword-list
+					       font-lock-keyword-face)))
 	   font-lock-list))
     (setq font-lock-defaults '(generic-font-lock-keywords nil))
 
     ;; Call a list of functions
-    (mapcar 'funcall funs)
+    (mapcar 'funcall function-list)
 
-    (run-hooks generic-mode-hooks)))
+    (run-mode-hooks mode-hook)))
 
 ;;;###autoload
 (defun generic-mode (mode)
@@ -359,7 +391,7 @@
         imenu-case-fold-search t))
 
 ;; This generic mode is always defined
-(define-generic-mode default-generic-mode (list ?#) nil nil nil nil)
+(define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 'generic)
 
 ;; A more general solution would allow us to enter generic-mode for
 ;; *any* comment character, but would require us to synthesize a new
@@ -392,7 +424,7 @@
 
 (defun generic-mode-ini-file-find-file-hook ()
   "Hook function to enter Default-Generic mode automatically for INI files.
-Done if the first few lines of a file in Fundamental mode look like an 
+Done if the first few lines of a file in Fundamental mode look like an
 INI file.  This hook is NOT installed by default."
   (and (eq major-mode 'fundamental-mode)
        (save-excursion
--- a/lisp/gnus/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,99 @@
+2005-04-03  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-sum.el (gnus-summary-make-menu-bar): Fix an
+	"unrecognised menu descriptor" error.
+
+2005-03-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* message.el (message-resend): Bind rfc2047-encode-encoded-words.
+
+	* mm-util.el (mm-replace-in-string): New function.
+	(mm-xemacs-find-mime-charset-1): Ignore errors while loading
+	latin-unity, which cannot be used with XEmacs 21.1.
+
+	* rfc2047.el (rfc2047-encode-function-alist): Rename from
+	rfc2047-encoding-function-alist in order to avoid conflicting with
+	the old version.
+	(rfc2047-encode-message-header): Remove useless goto-char.
+	(rfc2047-encodable-p): Don't move point.
+	(rfc2047-syntax-table): Treat `(' and `)' as is.
+	(rfc2047-encode-region): Concatenate words containing non-ASCII
+	characters in structured fields; don't encode space-delimited
+	ASCII words even in unstructured fields; don't break words at
+	char-category boundaries; encode encoded words in structured
+	fields; treat text within parentheses as special; show the
+	original text when error has occurred; move point to the end of
+	the region after encoding, suggested by IRIE Tetsuya
+	<irie@t.email.ne.jp>; treat backslash-quoted characters as
+	non-special; check carefully whether to encode special characters;
+	fix some kind of misconfigured headers; signal a real error if
+	debug-on-quit or debug-on-error is non-nil; don't infloop,
+	suggested by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>; assume
+	the close parenthesis may be included in the encoded word; encode
+	bogus delimiters.
+	(rfc2047-encode-string): Use mm-with-multibyte-buffer.
+	(rfc2047-encode-max-chars): New variable.
+	(rfc2047-encode-1): New function.
+	(rfc2047-encode): Use it; encode text so that it occupies the
+	maximum width within 76-column; work correctly on Q encoding for
+	iso-2022-* charsets; fold the line before encoding; don't append a
+	space if the encoded word includes close parenthesis.
+	(rfc2047-fold-region): Use existing whitespace for LWSP; make it
+	sure not to break a line just after the header name.
+	(rfc2047-b-encode-region): Remove.
+	(rfc2047-b-encode-string): New function.
+	(rfc2047-q-encode-region): Remove.
+	(rfc2047-q-encode-string): New function.
+	(rfc2047-encode-parameter): New function.
+	(rfc2047-encoded-word-regexp): Don't use shy group.
+	(rfc2047-decode-region): Follow rfc2047-encoded-word-regexp change.
+	(rfc2047-parse-and-decode): Ditto.
+	(rfc2047-decode): Treat the ascii coding-system as raw-text by
+	default.
+
+2005-03-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+	* rfc2047.el (rfc2047-encode-encoded-words): New variable.
+	(rfc2047-field-value): Strip props.
+	(rfc2047-encode-message-header): Disabled header folding -- not
+	all headers can be folded, and this should be done by the message
+	composition mode.  Probably.  I think.
+	(rfc2047-encodable-p): Say that =? needs encoding.
+	(rfc2047-encode-region): Encode =? strings.
+
+2005-03-25  Jesper Harder  <harder@ifa.au.dk>
+
+	* rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231
+	language tags; remove unnecessary '+'.  Reported by Stefan Wiens
+	<s.wi@gmx.net>.
+	(rfc2047-decode-string): Don't cons a string unnecessarily.
+	(rfc2047-parse-and-decode, rfc2047-decode): Use a character for
+	the encoding to avoid consing a string.
+	(rfc2047-decode): Use mm-subst-char-in-string instead of
+	mm-replace-chars-in-string.
+
+2005-03-25  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* rfc2047.el (rfc2047-encode): Use uppercase letters to specify
+	encodings of MIME-encoded words, in order to improve
+	interoperability with several broken MUAs.
+
+2005-03-21  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-srvr.el (gnus-browse-select-group): Add NUMBER argument and
+	pass it to `gnus-browse-read-group'.
+	(gnus-browse-read-group): Add NUMBER argument and pass it to
+	`gnus-group-read-ephemeral-group'.
+
+	* gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER
+	argument and pass it to `gnus-group-read-group'.
+
+2005-03-19  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* mm-util.el (mm-xemacs-find-mime-charset): Only call
+	mm-xemacs-find-mime-charset-1 if we have the mule feature
+	available at runtime.
+
 2005-03-25  Werner Lemberg  <wl@gnu.org>
 
 	* nnmaildir.el: Replace `illegal' with `invalid'.
@@ -618,7 +714,7 @@
 	unless plugged.  Disable the agent so that an open failure causes
 	an error.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Reiner Steib  <Reiner.Steib@gmx.de>
+2004-10-18  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* gnus-agent.el (gnus-agent-fetched-hook): Add :version.
 	(gnus-agent-go-online): Change :version.
@@ -660,21 +756,21 @@
 	(gnus-convert-mark-converter-prompt)
 	(gnus-convert-converter-needs-prompt): Fix use of property list.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Katsumi Yamaoka  <yamaoka@jpl.org>
+2004-10-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-agent.el (gnus-agent-restore-gcc): Use ^ and regexp-quote.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen  <larsi@gnus.org>
+2004-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* gnus-start.el (gnus-get-unread-articles-in-group): Don't do
 	stuff for non-living groups.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen  <larsi@gnus.org>
+2004-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* gnus-agent.el (gnus-agent-synchronize-flags): Default to nil.
 	(gnus-agent-regenerate-group): Using nil messages aren't valid.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen  <larsi@gnus.org>
+2004-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* gnus-agent.el (gnus-agent-read-agentview):
 	Inline gnus-uncompress-range.
@@ -691,7 +787,7 @@
 	message-send-mail-function.  The change makes the agent real-time
 	responsive to user changes to message-send-mail-function.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Reiner Steib  <Reiner.Steib@gmx.de>
+2004-10-18  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* gnus-start.el (gnus-get-unread-articles): Fix last commit.
 
@@ -732,12 +828,12 @@
 
 	* gnus-util.el (gnus-rename-file): New function.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Katsumi Yamaoka  <yamaoka@jpl.org>
+2004-10-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-agent.el (gnus-agent-regenerate-group): Activate the group
 	when the group's active is not available.
 
-2004-10-18  Kevin Greiner  <kevin.greiner@compsol.cc> for Katsumi Yamaoka  <yamaoka@jpl.org>
+2004-10-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-agent.el (gnus-agent-read-agentview): Add a missing arg to
 	error.
--- a/lisp/gnus/gnus-group.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/gnus-group.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1984,7 +1984,8 @@
 (defun gnus-group-read-ephemeral-group (group method &optional activate
 					      quit-config request-only
 					      select-articles
-					      parameters)
+					      parameters
+					      number)
   "Read GROUP from METHOD as an ephemeral group.
 If ACTIVATE, request the group first.
 If QUIT-CONFIG, use that window configuration when exiting from the
@@ -1992,6 +1993,7 @@
 If REQUEST-ONLY, don't actually read the group; just request it.
 If SELECT-ARTICLES, only select those articles.
 If PARAMETERS, use those as the group parameters.
+If NUMBER, fetch this number of articles.
 
 Return the name of the group if selection was successful."
   (interactive
@@ -2039,7 +2041,7 @@
 	  (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup)
 		      (gnus-fetch-old-headers
 		       gnus-fetch-old-ephemeral-headers))
-		  (gnus-group-read-group t t group select-articles))
+		  (gnus-group-read-group (or number t) t group select-articles))
 	    group)
 	;;(error nil)
 	(quit
--- a/lisp/gnus/gnus-srvr.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/gnus-srvr.el	Mon Apr 04 16:43:15 2005 +0000
@@ -851,23 +851,26 @@
   (setq buffer-read-only t)
   (gnus-run-hooks 'gnus-browse-mode-hook))
 
-(defun gnus-browse-read-group (&optional no-article)
-  "Enter the group at the current line."
-  (interactive)
+(defun gnus-browse-read-group (&optional no-article number)
+  "Enter the group at the current line.
+If NUMBER, fetch this number of articles."
+  (interactive "P")
   (let ((group (gnus-browse-group-name)))
     (if (or (not (gnus-get-info group))
 	    (gnus-ephemeral-group-p group))
 	(unless (gnus-group-read-ephemeral-group
 		 group gnus-browse-current-method nil
-		 (cons (current-buffer) 'browse))
+		 (cons (current-buffer) 'browse)
+		 nil nil nil number)
 	  (error "Couldn't enter %s" group))
       (unless (gnus-group-read-group nil no-article group)
 	(error "Couldn't enter %s" group)))))
 
-(defun gnus-browse-select-group ()
-  "Select the current group."
-  (interactive)
-  (gnus-browse-read-group 'no))
+(defun gnus-browse-select-group (&optional number)
+  "Select the current group.
+If NUMBER, fetch this number of articles."
+  (interactive "P")
+  (gnus-browse-read-group 'no number))
 
 (defun gnus-browse-next-group (n)
   "Go to the next group."
--- a/lisp/gnus/gnus-sum.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Mon Apr 04 16:43:15 2005 +0000
@@ -2250,7 +2250,7 @@
 	       ,@(if (featurep 'xemacs) '(t)
 		   '(:help "Generate and print a PostScript image"))])
 	     ("Copy, move,... (Backend)"
-	      ,@(if (featurep 'xemacs) '(t)
+	      ,@(if (featurep 'xemacs) nil
 		  '(:help "Copying, moving, expiring articles..."))
 	      ["Respool article..." gnus-summary-respool-article t]
 	      ["Move article..." gnus-summary-move-article
--- a/lisp/gnus/message.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/message.el	Mon Apr 04 16:43:15 2005 +0000
@@ -6364,7 +6364,8 @@
 	(replace-match "X-From-Line: "))
       ;; Send it.
       (let ((message-inhibit-body-encoding t)
-	    message-required-mail-headers)
+	    message-required-mail-headers
+	    rfc2047-encode-encoded-words)
 	(message-send-mail))
       (kill-buffer (current-buffer)))
     (message "Resending message to %s...done" address)))
--- a/lisp/gnus/mm-util.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/mm-util.el	Mon Apr 04 16:43:15 2005 +0000
@@ -86,6 +86,32 @@
      (multibyte-char-to-unibyte . identity))))
 
 (eval-and-compile
+  (cond
+   ((fboundp 'replace-in-string)
+    (defalias 'mm-replace-in-string 'replace-in-string))
+   ((fboundp 'replace-regexp-in-string)
+    (defun mm-replace-in-string (string regexp newtext &optional literal)
+      "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally.  Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
+      (replace-regexp-in-string regexp newtext string nil literal)))
+   (t
+    (defun mm-replace-in-string (string regexp newtext &optional literal)
+      "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally.  Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
+      (let ((start 0) tail)
+	(while (string-match regexp string start)
+	  (setq tail (- (length string) (match-end 0)))
+	  (setq string (replace-match newtext nil literal string))
+	  (setq start (- (length string) tail))))
+      string))))
+
+(eval-and-compile
   (defalias 'mm-char-or-char-int-p
     (cond
      ((fboundp 'char-or-char-int-p) 'char-or-char-int-p)
@@ -606,7 +632,7 @@
 
     ;; Load the Latin Unity library, if available.
     (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity"))
-      (require 'latin-unity))
+      (ignore-errors (require 'latin-unity)))
 
     ;; Now, can we use it?
     (if (featurep 'latin-unity)
@@ -651,7 +677,7 @@
 
 (defmacro mm-xemacs-find-mime-charset (begin end)
   (when (featurep 'xemacs)
-    `(mm-xemacs-find-mime-charset-1 ,begin ,end)))
+    `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end))))
 
 (defun mm-find-mime-charset-region (b e &optional hack-charsets)
   "Return the MIME charsets needed to encode the region between B and E.
--- a/lisp/gnus/rfc2047.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/gnus/rfc2047.el	Mon Apr 04 16:43:15 2005 +0000
@@ -119,12 +119,15 @@
 Valid encodings are nil, `Q' and `B'.  These indicate binary (no) encoding,
 quoted-printable and base64 respectively.")
 
-(defvar rfc2047-encoding-function-alist
-  '((Q . rfc2047-q-encode-region)
-    (B . rfc2047-b-encode-region)
-    (nil . ignore))
+(defvar rfc2047-encode-function-alist
+  '((Q . rfc2047-q-encode-string)
+    (B . rfc2047-b-encode-string)
+    (nil . identity))
   "Alist of RFC2047 encodings to encoding functions.")
 
+(defvar rfc2047-encode-encoded-words t
+  "Whether encoded words should be encoded again.")
+
 ;;;
 ;;; Functions for encoding RFC2047 messages
 ;;;
@@ -166,7 +169,7 @@
     (save-restriction
       (rfc2047-narrow-to-field)
       (re-search-forward ":[ \t\n]*" nil t)
-      (buffer-substring (point) (point-max)))))
+      (buffer-substring-no-properties (point) (point-max)))))
 
 (defvar rfc2047-encoding-type 'address-mime
   "The type of encoding done by `rfc2047-encode-region'.
@@ -186,24 +189,25 @@
 	  (rfc2047-narrow-to-field)
 	  (if (not (rfc2047-encodable-p))
 	      (prog1
-		(if (and (eq (mm-body-7-or-8) '8bit)
-			 (mm-multibyte-p)
-			 (mm-coding-system-p
-			  (car message-posting-charset)))
-		    ;; 8 bit must be decoded.
-		    (mm-encode-coding-region
-		     (point-min) (point-max)
-		     (mm-charset-to-coding-system
-		      (car message-posting-charset))))
+		  (if (and (eq (mm-body-7-or-8) '8bit)
+			   (mm-multibyte-p)
+			   (mm-coding-system-p
+			    (car message-posting-charset)))
+		      ;; 8 bit must be decoded.
+		      (mm-encode-coding-region
+		       (point-min) (point-max)
+		       (mm-charset-to-coding-system
+			(car message-posting-charset))))
 		;; No encoding necessary, but folding is nice
-		(rfc2047-fold-region
-		 (save-excursion
-		   (goto-char (point-min))
-		   (skip-chars-forward "^:")
-		   (when (looking-at ": ")
-		     (forward-char 2))
-		   (point))
-		 (point-max)))
+		(when nil
+		  (rfc2047-fold-region
+		   (save-excursion
+		     (goto-char (point-min))
+		     (skip-chars-forward "^:")
+		     (when (looking-at ": ")
+		       (forward-char 2))
+		     (point))
+		   (point-max))))
 	    ;; We found something that may perhaps be encoded.
 	    (setq method nil
 		  alist rfc2047-header-encoding-alist)
@@ -213,7 +217,6 @@
 			(eq (car elem) t))
 		(setq alist nil
 		      method (cdr elem))))
-	    (goto-char (point-min))
 	    (re-search-forward "^[^:]+: *" nil t)
 	    (cond
 	     ((eq method 'address-mime)
@@ -267,8 +270,13 @@
   (require 'message)			; for message-posting-charset
   (let ((charsets
 	 (mm-find-mime-charset-region (point-min) (point-max))))
-    (and charsets
-	 (not (equal charsets (list (car message-posting-charset)))))))
+    (goto-char (point-min))
+    (or (and rfc2047-encode-encoded-words
+	     (prog1
+		 (search-forward "=?" nil t)
+	       (goto-char (point-min))))
+	(and charsets
+	     (not (equal charsets (list (car message-posting-charset))))))))
 
 ;; Use this syntax table when parsing into regions that may need
 ;; encoding.  Double quotes are string delimiters, backslash is
@@ -292,8 +300,8 @@
 			      table))))
     (modify-syntax-entry ?\\ "\\" table)
     (modify-syntax-entry ?\" "\"" table)
-    (modify-syntax-entry ?\( "." table)
-    (modify-syntax-entry ?\) "." table)
+    (modify-syntax-entry ?\( "(" table)
+    (modify-syntax-entry ?\) ")" table)
     (modify-syntax-entry ?\< "." table)
     (modify-syntax-entry ?\> "." table)
     (modify-syntax-entry ?\[ "." table)
@@ -310,183 +318,341 @@
 Dynamically bind `rfc2047-encoding-type' to change that."
   (save-restriction
     (narrow-to-region b e)
-    (if (eq 'mime rfc2047-encoding-type)
-	;; Simple case.  Treat as single word after any initial ASCII
-	;; part and before any tailing ASCII part.  The leading ASCII
-	;; is relevant for instance in Subject headers with `Re:' for
-	;; interoperability with non-MIME clients, and we might as
-	;; well avoid the tail too.
-	(progn
+    (let ((encodable-regexp (if rfc2047-encode-encoded-words
+				"[^\000-\177]+\\|=\\?"
+			      "[^\000-\177]+"))
+	  start				; start of current token
+	  end begin csyntax
+	  ;; Whether there's an encoded word before the current token,
+	  ;; either immediately or separated by space.
+	  last-encoded
+	  (orig-text (buffer-substring-no-properties b e)))
+      (if (eq 'mime rfc2047-encoding-type)
+	  ;; Simple case.  Continuous words in which all those contain
+	  ;; non-ASCII characters are encoded collectively.  Encoding
+	  ;; ASCII words, including `Re:' used in Subject headers, is
+	  ;; avoided for interoperability with non-MIME clients and
+	  ;; for making it easy to find keywords.
+	  (progn
+	    (goto-char (point-min))
+	    (while (progn (skip-chars-forward " \t\n")
+			  (not (eobp)))
+	      (setq start (point))
+	      (while (and (looking-at "[ \t\n]*\\([^ \t\n]+\\)")
+			  (progn
+			    (setq end (match-end 0))
+			    (re-search-forward encodable-regexp end t)))
+		(goto-char end))
+	      (if (> (point) start)
+		  (rfc2047-encode start (point))
+		(goto-char end))))
+	;; `address-mime' case -- take care of quoted words, comments.
+	(with-syntax-table rfc2047-syntax-table
 	  (goto-char (point-min))
-	  ;; Does it need encoding?
-	  (skip-chars-forward "\000-\177")
-	  (unless (eobp)
-	    (skip-chars-backward "^ \n") ; beginning of space-delimited word
-	    (rfc2047-encode (point) (progn
-				      (goto-char e)
-				      (skip-chars-backward "\000-\177")
-				      (skip-chars-forward "^ \n")
-				      ;; end of space-delimited word
-				      (point)))))
-      ;; `address-mime' case -- take care of quoted words, comments.
-      (with-syntax-table rfc2047-syntax-table
-	(let ((start)			; start of current token
-	      end			; end of current token
-	      ;; Whether there's an encoded word before the current
-	      ;; token, either immediately or separated by space.
-	      last-encoded)
-	  (goto-char (point-min))
-	  (condition-case nil		; in case of unbalanced quotes
+	  (condition-case err		; in case of unbalanced quotes
 	      ;; Look for rfc2822-style: sequences of atoms, quoted
 	      ;; strings, specials, whitespace.  (Specials mustn't be
 	      ;; encoded.)
 	      (while (not (eobp))
+		;; Skip whitespace.
+		(skip-chars-forward " \t\n")
 		(setq start (point))
-		;; Skip whitespace.
-		(unless (= 0 (skip-chars-forward " \t\n"))
-		  (setq start (point)))
 		(cond
 		 ((not (char-after)))	; eob
 		 ;; else token start
-		 ((eq ?\" (char-syntax (char-after)))
+		 ((eq ?\" (setq csyntax (char-syntax (char-after))))
 		  ;; Quoted word.
 		  (forward-sexp)
 		  (setq end (point))
 		  ;; Does it need encoding?
 		  (goto-char start)
-		  (skip-chars-forward "\000-\177" end)
-		  (if (= end (point))
-		      (setq last-encoded  nil)
-		    ;; It needs encoding.  Strip the quotes first,
-		    ;; since encoded words can't occur in quotes.
-		    (goto-char end)
-		    (delete-backward-char 1)
-		    (goto-char start)
-		    (delete-char 1)
-		    (when last-encoded
-		      ;; There was a preceding quoted word.  We need
-		      ;; to include any separating whitespace in this
-		      ;; word to avoid it getting lost.
-		      (skip-chars-backward " \t")
-		      ;; A space is needed between the encoded words.
-		      (insert ? )
-		      (setq start (point)
-			    end (1+ end)))
-		    ;; Adjust the end position for the deleted quotes.
-		    (rfc2047-encode start (- end 2))
-		    (setq last-encoded t))) ; record that it was encoded
-		 ((eq ?. (char-syntax (char-after)))
+		  (if (re-search-forward encodable-regexp end 'move)
+		      ;; It needs encoding.  Strip the quotes first,
+		      ;; since encoded words can't occur in quotes.
+		      (progn
+			(goto-char end)
+			(delete-backward-char 1)
+			(goto-char start)
+			(delete-char 1)
+			(when last-encoded
+			  ;; There was a preceding quoted word.  We need
+			  ;; to include any separating whitespace in this
+			  ;; word to avoid it getting lost.
+			  (skip-chars-backward " \t")
+			  ;; A space is needed between the encoded words.
+			  (insert ? )
+			  (setq start (point)
+				end (1+ end)))
+			;; Adjust the end position for the deleted quotes.
+			(rfc2047-encode start (- end 2))
+			(setq last-encoded t)) ; record that it was encoded
+		    (setq last-encoded  nil)))
+		 ((eq ?. csyntax)
 		  ;; Skip other delimiters, but record that they've
 		  ;; potentially separated quoted words.
 		  (forward-char)
 		  (setq last-encoded nil))
+		 ((eq ?\) csyntax)
+		  (error "Unbalanced parentheses"))
+		 ((eq ?\( csyntax)
+		  ;; Look for the end of parentheses.
+		  (forward-list)
+		  ;; Encode text as an unstructured field.
+		  (let ((rfc2047-encoding-type 'mime))
+		    (rfc2047-encode-region (1+ start) (1- (point))))
+		  (skip-chars-forward ")"))
 		 (t		    ; normal token/whitespace sequence
 		  ;; Find the end.
-		  (forward-word 1)
-		  (skip-chars-backward " \t")
+		  ;; Skip one ASCII word, or encode continuous words
+		  ;; in which all those contain non-ASCII characters.
+		  (setq end nil)
+		  (while (not (or end (eobp)))
+		    (when (looking-at "[\000-\177]+")
+		      (setq begin (point)
+			    end (match-end 0))
+		      (when (progn
+			      (while (and (or (re-search-forward
+					       "[ \t\n]\\|\\Sw" end 'move)
+					      (setq end nil))
+					  (eq ?\\ (char-syntax (char-before))))
+				;; Skip backslash-quoted characters.
+				(forward-char))
+			      end)
+			(setq end (match-beginning 0))
+			(if rfc2047-encode-encoded-words
+			    (progn
+			      (goto-char begin)
+			      (when (search-forward "=?" end 'move)
+				(goto-char (match-beginning 0))
+				(setq end nil)))
+			  (goto-char end))))
+		    ;; Where the value nil of `end' means there may be
+		    ;; text to have to be encoded following the point.
+		    ;; Otherwise, the point reached to the end of ASCII
+		    ;; words separated by whitespace or a special char.
+		    (unless end
+		      (when (looking-at encodable-regexp)
+			(goto-char (setq begin (match-end 0)))
+			(while (and (looking-at "[ \t\n]+\\([^ \t\n]+\\)")
+				    (setq end (match-end 0))
+				    (progn
+				      (while (re-search-forward
+					      encodable-regexp end t))
+				      (< begin (point)))
+				    (goto-char begin)
+				    (or (not (re-search-forward "\\Sw" end t))
+					(progn
+					  (goto-char (match-beginning 0))
+					  nil)))
+			  (goto-char end))
+			(when (looking-at "[^ \t\n]+")
+			  (setq end (match-end 0))
+			  (if (re-search-forward "\\Sw+" end t)
+			      ;; There are special characters better
+			      ;; to be encoded so that MTAs may parse
+			      ;; them safely.
+			      (cond ((= end (point)))
+				    ((looking-at (concat "\\sw*\\("
+							 encodable-regexp
+							 "\\)"))
+				     (setq end nil))
+				    (t
+				     (goto-char (1- (match-end 0)))
+				     (unless (= (point) (match-beginning 0))
+				       ;; Separate encodable text and
+				       ;; delimiter.
+				       (insert " "))))
+			    (goto-char end)
+			    (skip-chars-forward " \t\n")
+			    (if (and (looking-at "[^ \t\n]+")
+				     (string-match encodable-regexp
+						   (match-string 0)))
+				(setq end nil)
+			      (goto-char end)))))))
+		  (skip-chars-backward " \t\n")
 		  (setq end (point))
-		  ;; Deal with encoding and leading space as for
-		  ;; quoted words.
 		  (goto-char start)
-		  (skip-chars-forward "\000-\177" end)
-		  (if (= end (point))
-		      (setq last-encoded  nil)
-		    (when last-encoded
-		      (goto-char start)
-		      (skip-chars-backward " \t")
-		      (insert ? )
-		      (setq start (point)
-			    end (1+ end)))
-		    (rfc2047-encode start end)
-		    (setq last-encoded t)))))
+		  (if (re-search-forward encodable-regexp end 'move)
+		      (progn
+			(unless (memq (char-before start) '(nil ?\t ? ))
+			  (if (progn
+				(goto-char start)
+				(skip-chars-backward "^ \t\n")
+				(and (looking-at "\\Sw+")
+				     (= (match-end 0) start)))
+			      ;; Also encode bogus delimiters.
+			      (setq start (point))
+			    ;; Separate encodable text and delimiter.
+			    (goto-char start)
+			    (insert " ")
+			    (setq start (1+ start)
+				  end (1+ end))))
+			(rfc2047-encode start end)
+			(setq last-encoded t))
+		    (setq last-encoded nil)))))
 	    (error
-	     (error "Invalid data for rfc2047 encoding: %s"
-		    (buffer-substring b e)))))))
-    (rfc2047-fold-region b (point))))
+	     (if (or debug-on-quit debug-on-error)
+		 (signal (car err) (cdr err))
+	       (error "Invalid data for rfc2047 encoding: %s"
+		      (mm-replace-in-string orig-text "[ \t\n]+" " "))))))))
+    (rfc2047-fold-region b (point))
+    (goto-char (point-max))))
 
 (defun rfc2047-encode-string (string)
   "Encode words in STRING.
 By default, the string is treated as containing addresses (see
 `rfc2047-encoding-type')."
-  (with-temp-buffer
+  (mm-with-multibyte-buffer
     (insert string)
     (rfc2047-encode-region (point-min) (point-max))
     (buffer-string)))
 
+(defvar rfc2047-encode-max-chars 76
+  "Maximum characters of each header line that contain encoded-words.
+If it is nil, encoded-words will not be folded.  Too small value may
+cause an error.  Don't change this for no particular reason.")
+
+(defun rfc2047-encode-1 (column string cs encoder start crest tail
+				&optional eword)
+  "Subroutine used by `rfc2047-encode'."
+  (cond ((string-equal string "")
+	 (or eword ""))
+	((not rfc2047-encode-max-chars)
+	 (concat start
+		 (funcall encoder (if cs
+				      (mm-encode-coding-string string cs)
+				    string))
+		 "?="))
+	((>= column rfc2047-encode-max-chars)
+	 (when eword
+	   (cond ((string-match "\n[ \t]+\\'" eword)
+		  ;; Reomove a superfluous empty line.
+		  (setq eword (substring eword 0 (match-beginning 0))))
+		 ((string-match "(+\\'" eword)
+		  ;; Break the line before the open parenthesis.
+		  (setq crest (concat crest (match-string 0 eword))
+			eword (substring eword 0 (match-beginning 0))))))
+	 (rfc2047-encode-1 (length crest) string cs encoder start " " tail
+			   (concat eword "\n" crest)))
+	(t
+	 (let ((index 0)
+	       (limit (1- (length string)))
+	       (prev "")
+	       next len)
+	   (while (and prev
+		       (<= index limit))
+	     (setq next (concat start
+				(funcall encoder
+					 (if cs
+					     (mm-encode-coding-string
+					      (substring string 0 (1+ index))
+					      cs)
+					   (substring string 0 (1+ index))))
+				"?=")
+		   len (+ column (length next)))
+	     (if (> len rfc2047-encode-max-chars)
+		 (setq next prev
+		       prev nil)
+	       (if (or (< index limit)
+		       (<= (+ len (or (string-match "\n" tail)
+				      (length tail)))
+			   rfc2047-encode-max-chars))
+		   (setq prev next
+			 index (1+ index))
+		 (if (string-match "\\`)+" tail)
+		     ;; Break the line after the close parenthesis.
+		     (setq tail (concat (substring tail 0 (match-end 0))
+					"\n "
+					(substring tail (match-end 0)))
+			   prev next
+			   index (1+ index))
+		   (setq next prev
+			 prev nil)))))
+	   (if (> index limit)
+	       (concat eword next tail)
+	     (if (= 0 index)
+		 (if (and eword
+			  (string-match "(+\\'" eword))
+		     (setq crest (concat crest (match-string 0 eword))
+			   eword (substring eword 0 (match-beginning 0)))
+		   (setq eword (concat eword next)))
+	       (setq crest " "
+		     eword (concat eword next)))
+	     (when (string-match "\n[ \t]+\\'" eword)
+	       ;; Reomove a superfluous empty line.
+	       (setq eword (substring eword 0 (match-beginning 0))))
+	     (rfc2047-encode-1 (length crest) (substring string index)
+			       cs encoder start " " tail
+			       (concat eword "\n" crest)))))))
+
 (defun rfc2047-encode (b e)
   "Encode the word(s) in the region B to E.
-By default, the region is treated as containing addresses (see
-`rfc2047-encoding-type')."
-  (let* ((mime-charset (mm-find-mime-charset-region b e))
-	 (cs (if (> (length mime-charset) 1)
-		 ;; Fixme: Instead of this, try to break region into
-		 ;; parts that can be encoded separately.
-		 (error "Can't rfc2047-encode `%s'"
-			(buffer-substring b e))
-	       (setq mime-charset (car mime-charset))
-	       (mm-charset-to-coding-system mime-charset)))
-	 ;; Fixme: Better, calculate the number of non-ASCII
-	 ;; characters, at least for 8-bit charsets.
-	 (encoding (or (cdr (assq mime-charset
+Point moves to the end of the region."
+  (let ((mime-charset (or (mm-find-mime-charset-region b e) (list 'us-ascii)))
+	cs encoding tail crest eword)
+    (cond ((> (length mime-charset) 1)
+	   (error "Can't rfc2047-encode `%s'"
+		  (buffer-substring-no-properties b e)))
+	  ((= (length mime-charset) 1)
+	   (setq mime-charset (car mime-charset)
+		 cs (mm-charset-to-coding-system mime-charset))
+	   (unless (and (mm-multibyte-p)
+			(mm-coding-system-p cs))
+	     (setq cs nil))
+	   (save-restriction
+	     (narrow-to-region b e)
+	     (setq encoding
+		   (or (cdr (assq mime-charset
 				  rfc2047-charset-encoding-alist))
 		       ;; For the charsets that don't have a preferred
 		       ;; encoding, choose the one that's shorter.
-		       (save-restriction
-			 (narrow-to-region b e)
-			 (if (eq (rfc2047-qp-or-base64) 'base64)
-			     'B
-			   'Q))))
-	 (start (concat
-		 "=?" (downcase (symbol-name mime-charset)) "?"
-		 (downcase (symbol-name encoding)) "?"))
-	 (factor (case mime-charset
-		   ((iso-8859-5 iso-8859-7 iso-8859-8 koi8-r) 1)
-		   ((big5 gb2312 euc-kr) 2)
-		   (utf-8 4)
-		   (t 8)))
-	 (pre (- b (save-restriction
-		     (widen)
-		     (rfc2047-point-at-bol))))
-	 ;; encoded-words must not be longer than 75 characters,
-	 ;; including charset, encoding etc.  This leaves us with
-	 ;; 75 - (length start) - 2 - 2 characters.  The last 2 is for
-	 ;; possible base64 padding.  In the worst case (iso-2022-*)
-	 ;; each character expands to 8 bytes which is expanded by a
-	 ;; factor of 4/3 by base64 encoding.
-	 (length (floor (- 75 (length start) 4) (* factor (/ 4.0 3.0))))
-	 ;; Limit line length to 76 characters.
-	 (length1 (max 1 (floor (- 76 (length start) 4 pre)
-				(* factor (/ 4.0 3.0)))))
-	 (first t))
-    (if mime-charset
-	(save-restriction
-	  (narrow-to-region b e)
-	  (when (eq encoding 'B)
-	    ;; break into lines before encoding
-	    (goto-char (point-min))
-	    (while (not (eobp))
-	      (if first
-		  (progn
-		    (goto-char (min (point-max) (+ length1 (point))))
-		    (setq first nil))
-		(goto-char (min (point-max) (+ length (point)))))
-	      (unless (eobp)
-		(insert ?\n)))
-	    (setq first t))
-	  (if (and (mm-multibyte-p)
-		   (mm-coding-system-p cs))
-	      (mm-encode-coding-region (point-min) (point-max) cs))
-	  (funcall (cdr (assq encoding rfc2047-encoding-function-alist))
-		   (point-min) (point-max))
-	  (goto-char (point-min))
-	  (while (not (eobp))
-	    (unless first
-	      (insert ? ))
-	    (setq first nil)
-	    (insert start)
-	    (end-of-line)
-	    (insert "?=")
-	    (forward-line 1))))))
+		       (if (eq (rfc2047-qp-or-base64) 'base64)
+			   'B
+			 'Q)))
+	     (widen)
+	     (goto-char e)
+	     (skip-chars-forward "^ \t\n")
+	     ;; `tail' may contain a close parenthesis.
+	     (setq tail (buffer-substring-no-properties e (point)))
+	     (goto-char b)
+	     (setq b (point-marker)
+		   e (set-marker (make-marker) e))
+	     (rfc2047-fold-region (rfc2047-point-at-bol) b)
+	     (goto-char b)
+	     (skip-chars-backward "^ \t\n")
+	     (unless (= 0 (skip-chars-backward " \t"))
+	       ;; `crest' may contain whitespace and an open parenthesis.
+	       (setq crest (buffer-substring-no-properties (point) b)))
+	     (setq eword (rfc2047-encode-1
+			  (- b (rfc2047-point-at-bol))
+			  (mm-replace-in-string
+			   (buffer-substring-no-properties b e)
+			   "\n\\([ \t]?\\)" "\\1")
+			  cs
+			  (or (cdr (assq encoding
+					 rfc2047-encode-function-alist))
+			      'identity)
+			  (concat "=?" (downcase (symbol-name mime-charset))
+				  "?" (upcase (symbol-name encoding)) "?")
+			  (or crest " ")
+			  tail))
+	     (delete-region (if (eq (aref eword 0) ?\n)
+				(if (bolp)
+				    ;; The line was folded before encoding.
+				    (1- (point))
+				  (point))
+			      (goto-char b))
+			    (+ e (length tail)))
+	     ;; `eword' contains `crest' and `tail'.
+	     (insert eword)
+	     (set-marker b nil)
+	     (set-marker e nil)
+	     (unless (or (/= 0 (length tail))
+			 (eobp)
+			 (looking-at "[ \t\n)]"))
+	       (insert " "))))
+	  (t
+	   (goto-char e)))))
 
 (defun rfc2047-fold-field ()
   "Fold the current header field."
@@ -512,6 +678,7 @@
 	  (goto-char (or break qword-break))
 	  (setq break nil
 		qword-break nil)
+	  (skip-chars-backward " \t")
 	  (if (looking-at "[ \t]")
 	      (insert ?\n)
 	    (insert "\n "))
@@ -533,10 +700,8 @@
 	  (forward-char 1))
 	 ((memq (char-after) '(?  ?\t))
 	  (skip-chars-forward " \t")
-	  (if first
-	      ;; Don't break just after the header name.
-	      (setq first nil)
-	    (setq break (1- (point)))))
+	  (unless first ;; Don't break just after the header name.
+	    (setq break (point))))
 	 ((not break)
 	  (if (not (looking-at "=\\?[^=]"))
 	      (if (eq (char-after) ?=)
@@ -547,15 +712,17 @@
 	      (setq qword-break (point)))
 	    (skip-chars-forward "^ \t\n\r")))
 	 (t
-	  (skip-chars-forward "^ \t\n\r"))))
+	  (skip-chars-forward "^ \t\n\r")))
+	(setq first nil))
       (when (and (or break qword-break)
 		 (> (- (point) bol) 76))
 	(goto-char (or break qword-break))
 	(setq break nil
 	      qword-break nil)
-	  (if (looking-at "[ \t]")
-	      (insert ?\n)
-	    (insert "\n "))
+	(if (or (> 0 (skip-chars-backward " \t"))
+		(looking-at "[ \t]"))
+	    (insert ?\n)
+	  (insert "\n "))
 	(setq bol (1- (point)))
 	;; Don't break before the first non-LWSP characters.
 	(skip-chars-forward " \t")
@@ -590,48 +757,48 @@
 	(setq eol (rfc2047-point-at-eol))
 	(forward-line 1)))))
 
-(defun rfc2047-b-encode-region (b e)
-  "Base64-encode the header contained in region B to E."
-  (save-restriction
-    (narrow-to-region (goto-char b) e)
-    (while (not (eobp))
-      (base64-encode-region (point) (progn (end-of-line) (point)) t)
-      (if (and (bolp) (eolp))
-	  (delete-backward-char 1))
-      (forward-line))))
+(defun rfc2047-b-encode-string (string)
+  "Base64-encode the header contained in STRING."
+  (base64-encode-string string t))
 
-(defun rfc2047-q-encode-region (b e)
-  "Quoted-printable-encode the header in region B to E."
-  (save-excursion
-    (save-restriction
-      (narrow-to-region (goto-char b) e)
-      (let ((bol (save-restriction
-		   (widen)
-		   (rfc2047-point-at-bol))))
-	(quoted-printable-encode-region
-	 b e nil
-	 ;; = (\075), _ (\137), ? (\077) are used in the encoded word.
-	 ;; Avoid using 8bit characters.
-	 ;; This list excludes `especials' (see the RFC2047 syntax),
-	 ;; meaning that some characters in non-structured fields will
-	 ;; get encoded when they con't need to be.  The following is
-	 ;; what it used to be.
-;;;  	 ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?"
-;;;  	 "\010\012\014\040-\074\076\100-\136\140-\177")
-	 "-\b\n\f !#-'*+0-9A-Z\\^`-~\d")
-	(subst-char-in-region (point-min) (point-max) ?  ?_)
-	;; The size of QP encapsulation is about 20, so set limit to
-	;; 56=76-20.
-	(unless (< (- (point-max) (point-min)) 56)
-	  ;; Don't break if it could fit in one line.
-	  ;; Let rfc2047-encode-region break it later.
-	  (goto-char (1+ (point-min)))
-	  (while (and (not (bobp)) (not (eobp)))
-	    (goto-char (min (point-max) (+ 56 bol)))
-	    (search-backward "=" (- (point) 2) t)
-	    (unless (or (bobp) (eobp))
-	      (insert ?\n)
-	      (setq bol (point)))))))))
+(defun rfc2047-q-encode-string (string)
+  "Quoted-printable-encode the header in STRING."
+  (mm-with-unibyte-buffer
+    (insert string)
+    (quoted-printable-encode-region
+     (point-min) (point-max) nil
+     ;; = (\075), _ (\137), ? (\077) are used in the encoded word.
+     ;; Avoid using 8bit characters.
+     ;; This list excludes `especials' (see the RFC2047 syntax),
+     ;; meaning that some characters in non-structured fields will
+     ;; get encoded when they con't need to be.  The following is
+     ;; what it used to be.
+     ;;;  ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?"
+     ;;;  "\010\012\014\040-\074\076\100-\136\140-\177")
+     "-\b\n\f !#-'*+0-9A-Z\\^`-~\d")
+    (subst-char-in-region (point-min) (point-max) ?  ?_)
+    (buffer-string)))
+
+(defun rfc2047-encode-parameter (param value)
+  "Return and PARAM=VALUE string encoded in the RFC2047-like style.
+This is a replacement for the `rfc2231-encode-string' function.
+
+When attaching files as MIME parts, we should use the RFC2231 encoding
+to specify the file names containing non-ASCII characters.  However,
+many mail softwares don't support it in practice and recipients won't
+be able to extract files with correct names.  Instead, the RFC2047-like
+encoding is acceptable generally.  This function provides the very
+RFC2047-like encoding, resigning to such a regrettable trend.  To use
+it, put the following line in your ~/.gnus.el file:
+
+\(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
+"
+  (let* ((rfc2047-encoding-type 'mime)
+	 (rfc2047-encode-max-chars nil)
+	 (string (rfc2047-encode-string value)))
+    (if (string-match (concat "[" ietf-drums-tspecials "]") string)
+	(format "%s=%S" param string)
+      (concat param "=" string))))
 
 ;;;
 ;;; Functions for decoding RFC2047 messages
@@ -639,8 +806,8 @@
 
 (eval-and-compile
   (defconst rfc2047-encoded-word-regexp
-    "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\
-\\?\\([!->@-~ +]*\\)\\?="))
+    "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(\\*[^?]+\\)?\
+\\?\\(B\\|Q\\)\\?\\([!->@-~ ]*\\)\\?="))
 
 (defvar rfc2047-quote-decoded-words-containing-tspecials nil
   "If non-nil, quote decoded words containing special characters.")
@@ -671,7 +838,7 @@
 			  "\\(\n?[ \t]\\)+"
 			  "\\(" rfc2047-encoded-word-regexp "\\)"))
 		nil t)
-	  (delete-region (goto-char (match-end 1)) (match-beginning 6)))
+	  (delete-region (goto-char (match-end 1)) (match-beginning 7)))
 	;; Decode the encoded words.
 	(setq b (goto-char (point-min)))
 	(while (re-search-forward rfc2047-encoded-word-regexp nil t)
@@ -774,7 +941,20 @@
 	       mail-parse-charset
 	       (not (eq mail-parse-charset 'us-ascii))
 	       (not (eq mail-parse-charset 'gnus-decoded)))
-	  (mm-decode-coding-string string mail-parse-charset)
+	  ;; `decode-coding-string' in Emacs offers a third optional
+	  ;; arg NOCOPY to avoid consing a new string if the decoding
+	  ;; is "trivial".  Unfortunately it currently doesn't
+	  ;; consider anything else than a `nil' coding system
+	  ;; trivial.
+	  ;; `rfc2047-decode-string' is called multiple times for each
+	  ;; article during summary buffer generation, and we really
+	  ;; want to avoid unnecessary consing.  So we bypass
+	  ;; `decode-coding-string' if the string is purely ASCII.
+	  (if (and (fboundp 'detect-coding-string)
+		   ;; string is purely ASCII
+		   (eq (detect-coding-string string t) 'undecided))
+	      string
+	    (mm-decode-coding-string string mail-parse-charset))
 	(mm-string-as-multibyte string)))))
 
 (defun rfc2047-parse-and-decode (word)
@@ -787,8 +967,8 @@
      (condition-case nil
 	 (rfc2047-decode
 	  (match-string 1 word)
-	  (upcase (match-string 2 word))
-	  (match-string 3 word))
+	  (string-to-char (match-string 3 word))
+	  (match-string 4 word))
        (error word))
      word)))				; un-decodable
 
@@ -809,7 +989,7 @@
 
 (defun rfc2047-decode (charset encoding string)
   "Decode STRING from the given MIME CHARSET in the given ENCODING.
-Valid ENCODINGs are \"B\" and \"Q\".
+Valid ENCODINGs are the characters \"B\" and \"Q\".
 If your Emacs implementation can't decode CHARSET, return nil."
   (if (stringp charset)
       (setq charset (intern (downcase charset))))
@@ -824,18 +1004,17 @@
 	     (memq 'gnus-unknown mail-parse-ignored-charsets))
 	(setq cs (mm-charset-to-coding-system mail-parse-charset)))
     (when cs
-      (when (and (eq cs 'ascii)
-		 mail-parse-charset)
-	(setq cs mail-parse-charset))
+      (when (eq cs 'ascii)
+	(setq cs (or mail-parse-charset 'raw-text)))
       (mm-decode-coding-string
        (cond
-	((equal "B" encoding)
+	((char-equal ?B encoding)
 	 (base64-decode-string
 	  (rfc2047-pad-base64 string)))
-	((equal "Q" encoding)
+	((char-equal ?Q encoding)
 	 (quoted-printable-decode-string
-	  (mm-replace-chars-in-string string ?_ ? )))
-	(t (error "Invalid encoding: %s" encoding)))
+	  (mm-subst-char-in-string ?_ ? string t)))
+	(t (error "Invalid encoding: %c" encoding)))
        cs))))
 
 (provide 'rfc2047)
--- a/lisp/hl-line.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/hl-line.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; hl-line.el --- highlight the current line
 
-;; Copyright (C) 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000, 2001, 2003, 2005 Free Software Foundation, Inc.
 
 ;; Author:  Dave Love <fx@gnu.org>
 ;; Maintainer: FSF
@@ -113,7 +113,7 @@
 line about point in the selected window only.  In this case, it
 uses the function `hl-line-unhighlight' on `pre-command-hook' in
 addition to `hl-line-highlight' on `post-command-hook'."
-  nil nil nil
+  :group 'hl-line
   (if hl-line-mode
       (progn
         ;; In case `kill-all-local-variables' is called.
--- a/lisp/ido.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/ido.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1935,19 +1935,21 @@
   ;; Internal function for ido-find-file and friends
   (unless item
     (setq item 'file))
-  (let* ((ido-current-directory (ido-expand-directory default))
-	 (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory))
-	 (ido-directory-too-big (and (not ido-directory-nonreadable)
-				     (ido-directory-too-big-p ido-current-directory)))
-	 (ido-context-switch-command switch-cmd)
-	 filename)
-
-    (cond
-     ((or (not ido-mode) (ido-is-slow-ftp-host))
-      (setq filename t
-	    ido-exit 'fallback))
-
-     ((and (eq item 'file)
+  (let ((ido-current-directory (ido-expand-directory default))
+	(ido-context-switch-command switch-cmd)
+        ido-directory-nonreadable ido-directory-too-big
+	filename)
+
+    (if (or (not ido-mode) (ido-is-slow-ftp-host))
+	(setq filename t
+	      ido-exit 'fallback)
+      (setq ido-directory-nonreadable
+	    (ido-nonreadable-directory-p ido-current-directory)
+	    ido-directory-too-big
+	    (and (not ido-directory-nonreadable)
+		 (ido-directory-too-big-p ido-current-directory))))
+
+    (when (and (eq item 'file)
 	   (or ido-use-url-at-point ido-use-filename-at-point))
       (let (fn d)
 	(require 'ffap)
@@ -1966,7 +1968,7 @@
 	       (setq d (file-name-directory fn))
 	       (file-directory-p d))
 	  (setq ido-current-directory d)
-	  (setq initial (file-name-nondirectory fn)))))))
+	  (setq initial (file-name-nondirectory fn))))))
 
     (let (ido-saved-vc-hb
 	  (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
--- a/lisp/iimage.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/iimage.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; iimage.el --- Inline image minor mode.
 
-;; Copyright (C) 2004 Free Software Foundation
+;; Copyright (C) 2004, 2005 Free Software Foundation
 
 ;; Author: KOSEKI Yoshinori <kose@meadowy.org>
 ;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org>
@@ -51,6 +51,11 @@
 (eval-when-compile
   (require 'image-file))
 
+(defgroup iimage nil
+  "Support for inline images."
+  :version "22.1"
+  :group 'image)
+
 (defconst iimage-version "1.1")
 (defvar iimage-mode nil)
 (defvar iimage-mode-map nil)
@@ -137,7 +142,7 @@
 ;;;###autoload
 (define-minor-mode iimage-mode
   "Toggle inline image minor mode."
-  nil " iImg" iimage-mode-map
+  :group 'iimage :lighter " iImg" :keymap iimage-mode-map
   (run-hooks 'iimage-mode-hook)
   (iimage-mode-buffer iimage-mode))
 
--- a/lisp/info.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/info.el	Mon Apr 04 16:43:15 2005 +0000
@@ -3026,12 +3026,12 @@
     :help "Go to menu of visited nodes"]
    ["Table of Contents" Info-toc
     :help "Go to table of contents"]
-   ("Index..."
-    ["Lookup a String" Info-index
+   ("Index"
+    ["Lookup a String..." Info-index
      :help "Look for a string in the index items"]
-    ["Next Matching Item" Info-index-next
+    ["Next Matching Item" Info-index-next :active Info-index-alternatives
      :help "Look for another occurrence of previous item"]
-    ["Lookup a string in all indices" info-apropos
+    ["Lookup a string in all indices..." info-apropos
      :help "Look for a string in the indices of all manuals"])
    ["Edit" Info-edit :help "Edit contents of this node"
     :active Info-enable-edit]
--- a/lisp/international/characters.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/international/characters.el	Mon Apr 04 16:43:15 2005 +0000
@@ -884,8 +884,8 @@
 	 (set-case-syntax-pair
 	  (decode-char 'ucs (1- c)) (decode-char 'ucs c) tbl))
     (setq c (1+ c)))
-  ;;(set-downcase-syntax  ?$,1 P(B ?i tbl)
-  ;;(set-upcase-syntax    ?I ?$,1 Q(B tbl)
+  (set-downcase-syntax  ?$,1 P(B ?i tbl)
+  (set-upcase-syntax    ?I ?$,1 Q(B tbl)
   (set-case-syntax-pair ?$,1 R(B ?$,1 S(B tbl)
   (set-case-syntax-pair ?$,1 T(B ?$,1 U(B tbl)
   (set-case-syntax-pair ?$,1 V(B ?$,1 W(B tbl)
--- a/lisp/international/encoded-kb.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/international/encoded-kb.el	Mon Apr 04 16:43:15 2005 +0000
@@ -269,7 +269,7 @@
 In Encoded-kbd mode, a text sent from keyboard is accepted
 as a multilingual text encoded in a coding system set by
 \\[set-keyboard-coding-system]."
-  :global t
+  :global t :group 'keyboard :group 'mule
 
   (if encoded-kbd-mode
       ;; We are turning on Encoded-kbd mode.
--- a/lisp/international/iso-acc.el	Mon Mar 28 04:24:51 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,491 +0,0 @@
-;;; iso-acc.el --- minor mode providing electric accent keys
-
-;; Copyright (C) 1993, 1994, 1996, 2001 Free Software Foundation, Inc.
-
-;; Author: Johan Vromans
-;; Maintainer: FSF
-;; Keywords: i18n
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; Function `iso-accents-mode' activates a minor mode in which
-;; typewriter "dead keys" are emulated.  The purpose of this emulation
-;; is to provide a simple means for inserting accented characters
-;; according to the ISO-8859-1...3 character sets.
-;;
-;; In `iso-accents-mode', pseudo accent characters are used to
-;; introduce accented keys.  The pseudo-accent characters are:
-;;
-;;   '  (minute)    -> actue accent
-;;   `  (backtick)  -> grave accent
-;;   "  (second)    -> diaeresis
-;;   ^  (caret)     -> circumflex
-;;   ~  (tilde)     -> tilde over the character
-;;   /  (slash)     -> slash through the character.
-;;                     Also:  /A is A-with-ring and /E is AE ligature.
-;; These two are enabled only if you set iso-accents-enable
-;; to include them:
-;;   .  (period)    -> dot over the character (some languages only)
-;;   ,  (cedilla)   -> cedilla under the character (some languages only)
-;;
-;; The action taken depends on the key that follows the pseudo accent.
-;; In general:
-;;
-;;   pseudo-accent + appropriate letter -> accented letter
-;;   pseudo-accent + space -> pseudo-accent (except comma and period)
-;;   pseudo-accent + pseudo-accent -> accent (if available)
-;;   pseudo-accent + other -> pseudo-accent + other
-;;
-;; If the pseudo-accent is followed by anything else than a
-;; self-insert-command, the dead-key code is terminated, the
-;; pseudo-accent inserted 'as is' and the bell is rung to signal this.
-;;
-;; Function `iso-accents-mode' can be used to enable the iso accents
-;; minor mode, or disable it.
-
-;; If you want only some of these characters to serve as accents,
-;; add a language to `iso-languages' which specifies the accent characters
-;; that you want, then select the language with `iso-accents-customize'.
-
-;;; Code:
-
-(provide 'iso-acc)
-
-(defgroup iso-acc nil
-  "Minor mode providing electric accent keys."
-  :prefix "iso-accents-"
-  :group 'i18n)
-
-(defcustom iso-accents-insert-offset nonascii-insert-offset
-  "*Offset added by ISO Accents mode to character codes 0200 and above."
-  :type 'integer
-  :group 'iso-acc)
-
-(defvar iso-languages
-  '(("catalan"
-     ;; Note this includes some extra characters used in Spanish,
-     ;; on the idea that someone who uses Catalan is likely to use Spanish
-     ;; as well.
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
-	 (?\  . ?'))
-     (?` (?A . ?\300) (?E . ?\310) (?O . ?\322)
-	 (?a . ?\340) (?e . ?\350) (?o . ?\362)
-	 (?\  . ?`))
-     (?\" (?I . ?\317) (?U . ?\334) (?i . ?\357) (?u . ?\374)
-	  (?\  . ?\"))
-     (?~ (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
-	 (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
-	 (?\  . ?\~)))
-
-    ("esperanto"
-     (?^ (?H . ?\246) (?J . ?\254) (?h . ?\266) (?j . ?\274) (?C . ?\306)
-	 (?G . ?\330) (?S . ?\336) (?c . ?\346) (?g . ?\370) (?s . ?\376)
-	 (?^ . ?^) (?\  . ?^))
-     (?~ (?U . ?\335) (?u . ?\375) (?\  . ?~)))
-
-    ("french"
-     (?' (?E . ?\311) (?C . ?\307) (?e . ?\351) (?c . ?\347)
-	 (?\  . ?'))
-     (?` (?A . ?\300) (?E . ?\310) (?U . ?\331)
-         (?a . ?\340) (?e . ?\350) (?u . ?\371)
-	 (?\  . ?`))
-     (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
-	 (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
-	 (?\  . ?^))
-     (?\" (?E . ?\313) (?I . ?\317)
-          (?e . ?\353) (?i . ?\357)
-	  (?\  . ?\"))
-     (?~ (?< . ?\253) (?> . ?\273) (?C . ?\307) (?c . ?\347)
-	 (?\  . ?~))
-     (?, (?C . ?\307) (?c . ?\347) (?\  . ?\,)))
-
-    ("german"
-     (?\" (?A . ?\304) (?O . ?\326) (?U . ?\334)
-	  (?a . ?\344) (?o . ?\366) (?u . ?\374) (?s . ?\337) (?\  . ?\")))
-
-    ("irish"
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
-	 (?\  . ?')))
-
-    ("portuguese"
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?C . ?\307) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
-	 (?u . ?\372) (?c . ?\347)
-	 (?\  . ?'))
-     (?` (?A . ?\300) (?a . ?\340)
-	 (?\  . ?`))
-     (?^ (?A . ?\302) (?E . ?\312) (?O . ?\324)
-	 (?a . ?\342) (?e . ?\352) (?o . ?\364)
-	 (?\  . ?^))
-     (?\" (?U . ?\334) (?u . ?\374)
-	  (?\  . ?\"))
-     (?~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365)
-         (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
-	 (?\  . ?~))
-     (?, (?c . ?\347) (?C . ?\307) (?, . ?,)))
-
-    ("spanish"
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
-	 (?\  . ?'))
-     (?\" (?U . ?\334) (?u . ?\374) (?\  . ?\"))
-     (?\~ (?N . ?\321) (?n . ?\361) (?> . ?\273) (?< . ?\253) (?! . ?\241)
-          (?? . ?\277) (?\  . ?\~)))
-
-    ("latin-1"
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
-	 (?u . ?\372) (?y . ?\375) (?' . ?\264)
-	 (?\  . ?'))
-     (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
-	 (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
-	 (?` . ?`) (?\  . ?`))
-     (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
-	 (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
-	 (?^ . ?^) (?\  . ?^))
-     (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
-	  (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?s . ?\337)
-	  (?u . ?\374) (?y . ?\377)
-	  (?\" . ?\250) (?\  . ?\"))
-     (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
-	 (?T . ?\336) (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361)
-	 (?o . ?\365) (?t . ?\376)
-	 (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
-	 (?\~ . ?\270) (?\  . ?~))
-     (?/ (?A . ?\305) (?E . ?\306) (?O . ?\330) (?a . ?\345) (?e . ?\346)
-	 (?o . ?\370)
-	 (?/ . ?\260) (?\  . ?/)))
-
-    ("latin-2" latin-iso8859-2
-     (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315)
-	 (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246)
-	 (?U . ?\332) (?Y . ?\335) (?Z . ?\254)
-	 (?a . ?\341) (?c . ?\346) (?d . ?\360) (?e . ?\351) (?i . ?\355)
-	 (?l . ?\345) (?n . ?\361) (?o . ?\363) (?r . ?\340) (?s . ?\266)
-	 (?u . ?\372) (?y . ?\375) (?z . ?\274)
-	 (?' . ?\264) (?\  . ?'))
-     (?` (?A . ?\241) (?C . ?\307) (?E . ?\312) (?L . ?\243) (?S . ?\252)
-	 (?T . ?\336) (?Z . ?\257)
-	 (?a . ?\261) (?l . ?\263) (?c . ?\347) (?e . ?\352) (?s . ?\272)
-	 (?t . ?\376) (?z . ?\277)
-	 (?` . ?\252)
-	 (?. . ?\377) (?\  . ?`))
-     (?^ (?A . ?\302) (?I . ?\316) (?O . ?\324)
-	 (?a . ?\342) (?i . ?\356) (?o . ?\364)
-	 (?^ . ?^)			; no special code?
-	 (?\  . ?^))
-     (?\" (?A . ?\304) (?E . ?\313) (?O . ?\326) (?U . ?\334)
-	  (?a . ?\344) (?e . ?\353) (?o . ?\366) (?s . ?\337) (?u . ?\374)
-	  (?\" . ?\250)
-	  (?\  . ?\"))
-     (?~ (?A . ?\303) (?C . ?\310) (?D . ?\317) (?L . ?\245) (?N . ?\322)
-	 (?O . ?\325) (?R . ?\330) (?S . ?\251) (?T . ?\253) (?U . ?\333)
-	 (?Z . ?\256)
-	 (?a . ?\343) (?c . ?\350) (?d . ?\357) (?l . ?\265) (?n . ?\362)
-	 (?o . ?\365) (?r . ?\370) (?s . ?\271) (?t . ?\273) (?u . ?\373)
-	 (?z . ?\276)
-	 (?v . ?\242)			; v accent
-	 (?\~ . ?\242)			; v accent
-	 (?\. . ?\270)			; cedilla accent
-	 (?\  . ?~)))
-
-    ("latin-3" latin-iso8859-3
-     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
-	 (?' . ?\264) (?\  . ?'))
-     (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
-	 (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
-	 (?` . ?`) (?\  . ?`))
-     (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) (?H . ?\246)
-	 (?I . ?\316) (?J . ?\254) (?O . ?\324) (?S . ?\336) (?U . ?\333)
-	 (?a . ?\342) (?c . ?\346) (?e . ?\352) (?g . ?\370) (?h . ?\266)
-	 (?i . ?\356) (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373)
-	 (?^ . ?^) (?\  . ?^))
-     (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
-	  (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374)
-	  (?s . ?\337)
-	  (?\" . ?\250) (?\  . ?\"))
-     (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
-	 (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361) (?o . ?\365)
-	 (?$ . ?\245) (?S . ?\252) (?s . ?\272) (?G . ?\253) (?g . ?\273)
-	 (?U . ?\335) (?u . ?\375) (?` . ?\242)
-	 (?~ . ?\270) (?\  . ?~))
-     (?/ (?C . ?\305) (?G . ?\325) (?H . ?\241) (?I . ?\251) (?Z . ?\257)
-	 (?c . ?\345) (?g . ?\365) (?h . ?\261) (?i . ?\271) (?z . ?\277)
-	 (?r . ?\256)
-	 (?. . ?\377) (?# . ?\243) (?$ . ?\244)
-	 (?/ . ?\260) (?\  . ?/))
-     (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257)
- 	 (?c . ?\345) (?g . ?\365) (?z . ?\277))))
-  "List of language-specific customizations for the ISO Accents mode.
-
-Each element of the list is of the form
-
-    (LANGUAGE [CHARSET]
-     (PSEUDO-ACCENT MAPPINGS)
-     (PSEUDO-ACCENT MAPPINGS)
-     ...)
-
-LANGUAGE is a string naming the language.
-CHARSET (which may be omitted) is the symbol name
- of the character set used in this language.
- If CHARSET is omitted, latin-iso8859-1 is the default.
-PSEUDO-ACCENT is a char specifying an accent key.
-MAPPINGS are cons cells of the form (CHAR . ISO-CHAR).
-
-The net effect is that the key sequence PSEUDO-ACCENT CHAR is mapped
-to ISO-CHAR on input.")
-
-(defvar iso-language nil
-  "Language for which ISO Accents mode is currently customized.
-Change it with the `iso-accents-customize' function.")
-
-(defvar iso-accents-list nil
-  "Association list for ISO accent combinations, for the chosen language.")
-
-(defcustom iso-accents-mode nil
-  "*Non-nil enables ISO Accents mode.
-Setting this variable makes it local to the current buffer.
-See the function `iso-accents-mode'."
-  :type 'boolean
-  :group 'iso-acc)
-(make-variable-buffer-local 'iso-accents-mode)
-
-(defcustom iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/)
-  "*List of accent keys that become prefixes in ISO Accents mode.
-The default is (?' ?` ?^ ?\" ?~ ?/), which contains all the supported
-accent keys.  If you set this variable to a list in which some of those
-characters are missing, the missing ones do not act as accents.
-
-Note that if you specify a language with `iso-accents-customize',
-that can also turn off certain prefixes (whichever ones are not needed in
-the language you choose)."
-  :type '(repeat character)
-  :group 'iso-acc)
-
-(defun iso-accents-accent-key (prompt)
-  "Modify the following character by adding an accent to it."
-  ;; Pick up the accent character.
-  (if (and iso-accents-mode
-	   (memq last-input-char iso-accents-enable))
-      (iso-accents-compose prompt)
-    (vector last-input-char)))
-
-
-;; The iso-accents-compose function is called deep inside Emacs' read
-;; key sequence machinery, so the call to read-event below actually
-;; recurses into that machinery.  Doing that does not cause any
-;; problem on its own, but read-event will have marked the window's
-;; display matrix to be accurate -- which is broken by the subsequent
-;; call to delete-region.  Therefore, we must call force-window-update
-;; after delete-region to explicitly clear the accurate state of the
-;; window's display matrix.
-
-(defun iso-accents-compose (prompt)
-  (let* ((first-char last-input-char)
-	 (list (assq first-char iso-accents-list))
-	 ;; Wait for the second key and look up the combination.
-	 (second-char (if (or prompt
-			      (not (eq (key-binding "a")
-				       'self-insert-command))
-			      ;; Not at start of a key sequence.
-			      (> (length (this-single-command-keys)) 1)
-			      ;; Called from anything but the command loop.
-			      this-command)
-			  (progn
-			    (message "%s%c"
-				     (or prompt "Compose with ")
-				     first-char)
-			    (read-event))
-			(insert first-char)
-			(prog1 (read-event)
-			  (delete-region (1- (point)) (point))
-			  ;; Display is no longer up-to-date.
-			  (force-window-update (selected-window)))))
-	 (entry (cdr (assq second-char list))))
-    (if entry
-	;; Found it: return the mapped char
-	(vector
-	 (if (and enable-multibyte-characters
-		  (>= entry ?\200))
-	     (+ iso-accents-insert-offset entry)
-	   entry))
-      ;; Otherwise, advance and schedule the second key for execution.
-      (push second-char unread-command-events)
-      (vector first-char))))
-
-;; It is a matter of taste if you want the minor mode indicated
-;; in the mode line...
-;; If so, uncomment the next four lines.
-;; (or (assq 'iso-accents-mode minor-mode-alist)
-;;     (setq minor-mode-alist
-;; 	  (append minor-mode-alist
-;; 		  '((iso-accents-mode " ISO-Acc")))))
-
-;;;###autoload
-(defun iso-accents-mode (&optional arg)
-  "Toggle ISO Accents mode, in which accents modify the following letter.
-This permits easy insertion of accented characters according to ISO-8859-1.
-When Iso-accents mode is enabled, accent character keys
-\(`, ', \", ^, / and ~) do not self-insert; instead, they modify the following
-letter key so that it inserts an ISO accented letter.
-
-You can customize ISO Accents mode to a particular language
-with the command `iso-accents-customize'.
-
-Special combinations: ~c gives a c with cedilla,
-~d gives an Icelandic eth (d with dash).
-~t gives an Icelandic thorn.
-\"s gives German sharp s.
-/a gives a with ring.
-/e gives an a-e ligature.
-~< and ~> give guillemots.
-~! gives an inverted exclamation mark.
-~? gives an inverted question mark.
-
-With an argument, a positive argument enables ISO Accents mode,
-and a negative argument disables it."
-
-  (interactive "P")
-
-  (if (if arg
-	  ;; Negative arg means switch it off.
-	  (<= (prefix-numeric-value arg) 0)
-	;; No arg means toggle.
-	iso-accents-mode)
-      (setq iso-accents-mode nil)
-
-    ;; Enable electric accents.
-    (setq iso-accents-mode t)))
-
-(defun iso-accents-customize (language)
-  "Customize the ISO accents machinery for a particular language.
-It selects the customization based on the specifications in the
-`iso-languages' variable."
-  (interactive (list (completing-read "Language: " iso-languages nil t)))
-  (let ((table (cdr (assoc language iso-languages)))
-	all-accents tail)
-    (if (not table)
-	(error "Unknown language `%s'" language)
-      (setq iso-accents-insert-offset (- (make-char (if (symbolp (car table))
-							(car table)
-						      'latin-iso8859-1))
-					 128))
-      (if (symbolp (car table))
-	  (setq table (cdr table)))
-      (setq iso-language language
-	    iso-accents-list table)
-      (if key-translation-map
-	  (substitute-key-definition
-	   'iso-accents-accent-key nil key-translation-map)
-	(setq key-translation-map (make-sparse-keymap)))
-      ;; Set up translations for all the characters that are used as
-      ;; accent prefixes in this language.
-      (setq tail iso-accents-list)
-      (while tail
-	(define-key key-translation-map (vector (car (car tail)))
-	  'iso-accents-accent-key)
-	(setq tail (cdr tail))))))
-
-(defun iso-accentuate (start end)
-  "Convert two-character sequences in region into accented characters.
-Noninteractively, this operates on text from START to END.
-This uses the same conversion that ISO Accents mode uses for type-in."
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region start end)
-      (goto-char start)
-      (forward-char 1)
-      (let (entry)
-	(while (< (point) end)
-	  (if (and (memq (preceding-char) iso-accents-enable)
-		   (setq entry (cdr (assq (following-char) (assq (preceding-char) iso-accents-list)))))
-	      (progn
-		(forward-char -1)
-		(delete-char 2)
-		(insert entry)
-		(setq end (1- end)))
-	    (forward-char 1)))))))
-
-(defun iso-accent-rassoc-unit (value alist)
-  (let (elt acc)
-    (while (and alist (not elt))
-      (setq acc (car (car alist))
-	    elt (car (rassq value (cdr (car alist))))
-	    alist (cdr alist)))
-    (if elt
-	(cons acc elt))))
-
-(defun iso-unaccentuate (start end)
-  "Convert accented characters in the region into two-character sequences.
-Noninteractively, this operates on text from START to END.
-This uses the opposite of the conversion done by ISO Accents mode for type-in."
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region start end)
-      (goto-char start)
-      (let (entry)
-	(while (< (point) end)
-	  (if (and (> (following-char) 127)
-		   (setq entry (iso-accent-rassoc-unit (following-char)
-						       iso-accents-list)))
-	      (progn
-		(delete-char 1)
-		(insert (car entry) (cdr entry))
-		(setq end (1+ end)))
-	    (forward-char 1)))))))
-
-(defun iso-deaccentuate (start end)
-  "Convert accented characters in the region into unaccented characters.
-Noninteractively, this operates on text from START to END."
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region start end)
-      (goto-char start)
-      (let (entry)
-	(while (< (point) end)
-	  (if (and (> (following-char) 127)
-		   (setq entry (iso-accent-rassoc-unit (following-char)
-						       iso-accents-list)))
-	      (progn
-		(delete-char 1)
-		(insert (cdr entry)))
-	    (forward-char 1)))))))
-
-;; Set up the default settings.
-(iso-accents-customize "latin-1")
-
-;; Use Iso-Accents mode in the minibuffer
-;; if it was in use in the previous buffer.
-(defun iso-acc-minibuf-setup ()
-  (setq iso-accents-mode
-	(save-excursion
-	  (set-buffer (window-buffer minibuffer-scroll-window))
-	  iso-accents-mode)))
-
-(add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup)
-
-;;; arch-tag: 149ff409-7c3e-4574-9b5d-ac038939c0a6
-;;; iso-acc.el ends here
--- a/lisp/international/mule-cmds.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/international/mule-cmds.el	Mon Apr 04 16:43:15 2005 +0000
@@ -384,6 +384,7 @@
 	;; CODING-SYSTEM is no-conversion or undecided.
 	(error "Can't prefer the coding system `%s'" coding-system))
     (set coding-category (or base coding-system))
+    ;; Changing the binding of a coding category requires this call.
     (update-coding-systems-internal)
     (or (eq coding-category (car coding-category-list))
 	;; We must change the order.
@@ -1691,6 +1692,7 @@
      coding-category-ccl
      coding-category-binary))
 
+  ;; Changing the binding of a coding category requires this call.
   (update-coding-systems-internal)
 
   (set-default-coding-systems nil)
@@ -1904,6 +1906,7 @@
 	  (while priority
 	    (set (car categories) (car priority))
 	    (setq priority (cdr priority) categories (cdr categories)))
+	  ;; Changing the binding of a coding category requires this call.
 	  (update-coding-systems-internal)))))
 
 (defsubst princ-list (&rest args)
--- a/lisp/international/mule-util.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/international/mule-util.el	Mon Apr 04 16:43:15 2005 +0000
@@ -327,6 +327,7 @@
 	 (mapc (function (lambda (x) (set (car x) (cdr x))))
 	       prio-list)
 	 (set-coding-priority (mapcar #'car prio-list))
+	 ;; Changing the binding of a coding category requires this call.
 	 (update-coding-systems-internal)
 	 (detect-coding-region ,from ,to))
      ;; We must restore the internal database.
--- a/lisp/international/mule.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/international/mule.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1546,6 +1546,7 @@
     ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|tar\\|tgz\\)\\'" . no-conversion)
     ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
+    ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
     ("/#[^/]+#\\'" . emacs-mule))
   "Alist of filename patterns vs corresponding coding systems.
 Each element looks like (REGEXP . CODING-SYSTEM).
--- a/lisp/kmacro.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/kmacro.el	Mon Apr 04 16:43:15 2005 +0000
@@ -614,10 +614,13 @@
 counting the definition just completed as the first repetition.
 An argument of zero means repeat until error."
   (interactive "P")
-  (end-kbd-macro arg #'kmacro-loop-setup-function)
-  (when (and last-kbd-macro (= (length last-kbd-macro) 0))
-    (message "Ignore empty macro")
-    (kmacro-pop-ring)))
+   ;; Isearch may push the kmacro-end-macro key sequence onto the macro.
+   ;; Just ignore it when executing the macro.
+  (unless executing-kbd-macro
+    (end-kbd-macro arg #'kmacro-loop-setup-function)
+    (when (and last-kbd-macro (= (length last-kbd-macro) 0))
+      (message "Ignore empty macro")
+      (kmacro-pop-ring))))
 
 
 ;;;###autoload
--- a/lisp/language/thai-util.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/language/thai-util.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,10 +1,9 @@
 ;;; thai-util.el --- utilities for Thai -*- coding: iso-2022-7bit; -*-
 
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
-;; Copyright (C) 2005
+;; Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2005
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
 ;;   Registration Number H14PRO021
+;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
 
 ;; Keywords: mule, multilingual, thai
 
@@ -279,7 +278,7 @@
 
 (defun thai-compose-syllable (beg end &optional category-set string)
   (or category-set
-      (setq category-set 
+      (setq category-set
 	    (char-category-set (if string (aref string beg) (char-after beg)))))
   (if (aref category-set ?c)
       ;; Starting with a consonant.  We do relative composition.
@@ -288,9 +287,9 @@
 	(compose-region beg end))
     ;; Vowel tone sequence.
     (if string
-	(compose-string string beg end (list (aref string beg) '(Bc . Bc) 
+	(compose-string string beg end (list (aref string beg) '(Bc . Bc)
 					     (aref string (1+ beg))))
-      (compose-region beg end (list (char-after beg) '(Bc . Bc) 
+      (compose-region beg end (list (char-after beg) '(Bc . Bc)
 				    (char-after (1+ beg))))))
   (- end beg))
 
@@ -348,7 +347,7 @@
       (if string
 	  (if (eq (string-match thai-composition-pattern string from) from)
 	      (thai-compose-syllable from (match-end 0) nil string))
-	(if (save-excursion 
+	(if (save-excursion
 	      (goto-char from)
 	      (and (looking-at thai-composition-pattern)
 		   (setq to (match-end 0))))
@@ -376,12 +375,48 @@
 ;;;###autoload
 (define-minor-mode thai-auto-composition-mode
   "Minor mode for automatically correct Thai character composition."
-  nil nil nil
+  :group 'mule
   (cond ((null thai-auto-composition-mode)
 	 (remove-hook 'after-change-functions 'thai-auto-composition))
 	(t
 	 (add-hook 'after-change-functions 'thai-auto-composition))))
 
+;; Thai-word-mode requires functions in the feature `thai-word'.
+(require 'thai-word)
+
+(defvar thai-word-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap forward-word] 'thai-forward-word)
+    (define-key map [remap backward-word] 'thai-backward-word)
+    (define-key map [remap kill-word] 'thai-kill-word)
+    (define-key map [remap backward-kill-word] 'thai-backward-kill-word)
+    (define-key map [remap transpose-words] 'thai-transpose-words)
+    map)
+  "Keymap for `thai-word-mode'.")
+
+(define-minor-mode thai-word-mode
+  "Minor mode to make word-oriented commands aware of Thai words.
+The commands affected are \\[forward-word], \\[backward-word], \\[kill-word], \\[backward-kill-word], \\[transpose-words], and \\[fill-paragraph]."
+  :global t :group 'mule
+  (cond (thai-word-mode
+	 ;; This enables linebreak between Thai characters.
+	 (modify-category-entry (make-char 'thai-tis620) ?|)
+	 ;; This enables linebreak at a Thai word boundary.
+	 (put-charset-property 'thai-tis620 'fill-find-break-point-function
+			       'thai-fill-find-break-point))
+	(t
+	 (modify-category-entry (make-char 'thai-tis620) ?| nil t)
+	 (put-charset-property 'thai-tis620 'fill-find-break-point-function
+			       nil))))
+
+;; Function to call on entering the Thai language environment.
+(defun setup-thai-language-environment-internal ()
+  (thai-word-mode 1))
+
+;; Function to call on exiting the Thai language environment.
+(defun exit-thai-language-environment-internal ()
+  (thai-word-mode -1))
+
 ;;
 (provide 'thai-util)
 
--- a/lisp/language/thai-word.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/language/thai-word.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,8 @@
 ;;; thai-word.el -- find Thai word boundaries
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004
-;; Electrotechnical Laboratory, JAPAN.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H14PRO021
 
 ;; Author: Kenichi HANDA <handa@etl.go.jp>
 
@@ -72,13 +73,10 @@
 ;; which means that you can easily index the list character by
 ;; character.
 
-(defconst thai-word-table nil)
-
-
-;; Set up `thai-word-table'.
-
-(let
-    ((l
+(defvar thai-word-table
+  (let ((table (list 'thai-words)))
+    (dolist (elt
+      ;;; The following is indented as this to minimize this file size.
       '("¡¡"
 	"¡¡Å"
 	"¡¡Ø¸Àѳ±ì"
@@ -10732,11 +10730,10 @@
 	"äÎâ¡ÃÁÔàµÍÃì"
 	"äÎâ´Ã¤ÒÃìºÍ¹"
 	"äÎâÅ"
-	)))
-  (setq thai-word-table (list 'thai-words))
-  (while l
-    (set-nested-alist (car l) 1 thai-word-table)
-    (setq l (cdr l))))
+	))
+      (set-nested-alist elt 1 table))
+    table)
+  "Nested alist of Thai words.") 
 
 
 (defun thai-update-word-table (file &optional append)
@@ -10783,7 +10780,7 @@
       ;; character by character.
       (while this
 	(setq pos (1+ pos)
-	      char (char-after pos)
+	      char (or (char-after pos) 0)
 	      category-set (char-category-set char))
 	;; If the current sequence is recorded in `thai-word-table'
 	;; (i.e. (car THIS) is 1) and the following Thai character is
@@ -11042,6 +11039,33 @@
   (thai-forward-word (- count)))
 
 
+(defun thai-kill-word (arg)
+  "Like kill-word but pay attention to Thai word boundaries.
+With argument, do this that many times."
+  (interactive "p")
+  (kill-region (point) (progn (thai-forward-word arg) (point))))
+
+
+(defun thai-backward-kill-word (arg)
+  "Like backward-kill-word but pay attention to Thai word boundaries."
+  (interactive "p")
+  (thai-kill-word (- arg)))
+
+
+(defun thai-transpose-words (arg)
+  "Like transpose-words but pay attention to Thai word boundaries."
+  (interactive "*p")
+  (transpose-subr 'thai-forward-word arg))
+
+(defun thai-fill-find-break-point (linebeg)
+  "Go to a line breaking position near point considering Thai word boundaries."
+  (let ((pos (point)))
+    (thai-forward-word -1)
+    (when (<= (point) linebeg)
+      (goto-char pos)
+      (thai-forward-word 1))
+    (kinsoku linebeg)))
+
 (provide 'thai-word)
 
 
--- a/lisp/language/thai.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/language/thai.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,10 +1,9 @@
 ;;; thai.el --- support for Thai -*- coding: iso-2022-7bit; no-byte-compile: t -*-
 
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
-;; Copyright (C) 2005
+;; Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2005
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
 ;;   Registration Number H14PRO021
+;; Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 ;; Keywords: multilingual, Thai
 
@@ -53,6 +52,8 @@
 	  (input-method . "thai-kesmanee")
 	  (unibyte-display . thai-tis620)
 	  (features thai-util)
+	  (setup-function . setup-thai-language-environment-internal)
+	  (exit-function . exit-thai-language-environment-internal)
 	  (sample-text
 	   . (thai-compose-string
 	      (copy-sequence "Thai (,T@RIRd7B(B)		,TJ0GQ1J04U1$0CQ1:(B, ,TJ0GQ1J04U10$h1P(B")))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/longlines.el	Mon Apr 04 16:43:15 2005 +0000
@@ -0,0 +1,393 @@
+;;; longlines.el --- automatically wrap long lines
+
+;; Copyright (C) 2000, 2001, 2004, 2005 by Free Software Foundation, Inc.
+
+;; Authors:    Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+;;             Alex Schroeder <alex@gnu.org>
+;;             Chong Yidong <cyd@stupidchicken.com>
+;; Maintainer: Chong Yidong <cyd@stupidchicken.com>
+;; Keywords: convenience
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Some text editors save text files with long lines, and they
+;; automatically break these lines at whitespace, without actually
+;; inserting any newline characters.  When doing `M-q' in Emacs, you
+;; are inserting newline characters.  Longlines mode provides a file
+;; format which wraps the long lines when reading a file and unwraps
+;; the lines when saving the file.  It can also wrap and unwrap
+;; automatically as editing takes place.
+
+;; Special thanks to Rod Smith for many useful bug reports.
+
+;;; Code:
+
+(require 'easy-mmode)
+
+(defgroup longlines nil
+  "Automatic wrapping of long lines when loading files."
+  :group 'fill)
+
+(defcustom longlines-auto-wrap t
+  "*Non-nil means long lines are automatically wrapped after each command.
+Otherwise, you can perform filling using `fill-paragraph' or
+`auto-fill-mode'.  In any case, the soft newlines will be removed
+when the file is saved to disk."
+  :group 'longlines
+  :type 'boolean)
+
+(defcustom longlines-wrap-follows-window-size nil
+  "*Non-nil means wrapping and filling happen at the edge of the window.
+Otherwise, `fill-column' is used, regardless of the window size.  This
+does not work well when the buffer is displayed in multiple windows
+with differing widths."
+  :group 'longlines
+  :type 'boolean)
+
+(defcustom longlines-show-hard-newlines nil
+  "*Non-nil means each hard newline is marked with a symbol.
+You can also enable the display temporarily, using the command
+`longlines-show-hard-newlines'"
+  :group 'longlines
+  :type 'boolean)
+
+(defcustom longlines-show-effect (propertize "|\n" 'face 'escape-glyph)
+  "*A string to display when showing hard newlines.
+This is used when `longlines-show-hard-newlines' is on."
+  :group 'longlines
+  :type 'string)
+
+;; Internal variables
+
+(defvar longlines-wrap-beg nil)
+(defvar longlines-wrap-end nil)
+(defvar longlines-wrap-point nil)
+(defvar longlines-showing nil)
+
+(make-variable-buffer-local 'longlines-wrap-beg)
+(make-variable-buffer-local 'longlines-wrap-end)
+(make-variable-buffer-local 'longlines-wrap-point)
+(make-variable-buffer-local 'longlines-showing)
+
+;; Mode
+
+;;;###autoload
+(define-minor-mode longlines-mode
+  "Toggle Long Lines mode.
+In Long Lines mode, long lines are wrapped if they extend beyond
+`fill-column'.  The soft newlines used for line wrapping will not
+show up when the text is yanked or saved to disk.
+
+If `longlines-auto-wrap' is non-nil, lines are automatically
+wrapped whenever the buffer is changed.  You can always call
+`fill-paragraph' to fill individual paragraphs.
+
+If `longlines-show-hard-newlines' is non-nil, hard newlines will
+be marked by a symbol."
+  :group 'longlines :lighter " ll"
+  (if longlines-mode
+      ;; Turn on longlines mode
+      (progn
+        (use-hard-newlines 1 'never)
+        (set (make-local-variable 'require-final-newline) nil)
+        (add-to-list 'buffer-file-format 'longlines)
+        (add-hook 'change-major-mode-hook 'longlines-mode-off nil t)
+        (make-local-variable 'buffer-substring-filters)
+        (add-to-list 'buffer-substring-filters 'longlines-encode-string)
+        (when longlines-wrap-follows-window-size
+          (set (make-local-variable 'fill-column)
+               (- (window-width) window-min-width))
+          (add-hook 'window-configuration-change-hook
+                    'longlines-window-change-function nil t))
+        (let ((buffer-undo-list t)
+              (mod (buffer-modified-p)))
+          ;; Turning off undo is OK since (spaces + newlines) is
+          ;; conserved, except for a corner case in
+          ;; longlines-wrap-lines that we'll never encounter from here
+          (longlines-decode-region (point-min) (point-max))
+          (longlines-wrap-region (point-min) (point-max))
+          (set-buffer-modified-p mod))
+        (when (and longlines-show-hard-newlines
+                   (not longlines-showing))
+          (longlines-show-hard-newlines))
+        (when longlines-auto-wrap
+          (auto-fill-mode 0)
+          (add-hook 'after-change-functions
+                    'longlines-after-change-function nil t)
+          (add-hook 'post-command-hook
+                    'longlines-post-command-function nil t)))
+    ;; Turn off longlines mode
+    (setq buffer-file-format (delete 'longlines buffer-file-format))
+    (if longlines-showing
+        (longlines-unshow-hard-newlines))
+    (let ((buffer-undo-list t))
+      (longlines-encode-region (point-min) (point-max)))
+    (remove-hook 'change-major-mode-hook 'longlines-mode-off t)
+    (remove-hook 'before-kill-functions 'longlines-encode-region t)
+    (remove-hook 'after-change-functions 'longlines-after-change-function t)
+    (remove-hook 'post-command-hook 'longlines-post-command-function t)
+    (remove-hook 'window-configuration-change-hook
+                 'longlines-window-change-function t)
+    (kill-local-variable 'fill-column)))
+
+(defun longlines-mode-off ()
+  "Turn off longlines mode.
+This function exists to be called by `change-major-mode-hook' when the
+major mode changes."
+  (longlines-mode 0))
+
+;; Showing the effect of hard newlines in the buffer
+
+(defface longlines-visible-face
+  '((t (:background "red")))
+  "Face used to make hard newlines visible in `longlines-mode'.")
+
+(defun longlines-show-hard-newlines (&optional arg)
+  "Make hard newlines visible by adding a face.
+With optional argument ARG, make the hard newlines invisible again."
+  (interactive "P")
+  (let ((buffer-undo-list t)
+        (mod (buffer-modified-p)))
+    (if arg
+        (longlines-unshow-hard-newlines)
+      (setq longlines-showing t)
+      (longlines-show-region (point-min) (point-max)))
+    (set-buffer-modified-p mod)))
+
+(defun longlines-show-region (beg end)
+  "Make hard newlines between BEG and END visible."
+  (let* ((pmin (min beg end))
+         (pmax (max beg end))
+         (pos (text-property-any pmin pmax 'hard t)))
+    (while pos
+      (put-text-property pos (1+ pos) 'display
+                         (copy-sequence longlines-show-effect))
+      (setq pos (text-property-any (1+ pos) pmax 'hard t)))))
+
+(defun longlines-unshow-hard-newlines ()
+  "Make hard newlines invisible again."
+  (interactive)
+  (setq longlines-showing nil)
+  (let ((pos (text-property-any (point-min) (point-max) 'hard t)))
+    (while pos
+      (remove-text-properties pos (1+ pos) '(display))
+      (setq pos (text-property-any (1+ pos) (point-max) 'hard t)))))
+
+;; Wrapping the paragraphs.
+
+(defun longlines-wrap-region (beg end)
+  "Wrap each successive line, starting with the line before BEG.
+Stop when we reach lines after END that don't need wrapping, or the
+end of the buffer."
+  (setq longlines-wrap-point (point))
+  (goto-char beg)
+  (forward-line -1)
+  ;; Two successful longlines-wrap-line's in a row mean successive
+  ;; lines don't need wrapping.
+  (while (null (and (longlines-wrap-line)
+                    (or (eobp)
+                        (and (>= (point) end)
+                             (longlines-wrap-line))))))
+  (goto-char longlines-wrap-point))
+
+(defun longlines-wrap-line ()
+  "If the current line needs to be wrapped, wrap it and return nil.
+If wrapping is performed, point remains on the line.  If the line does
+not need to be wrapped, move point to the next line and return t."
+  (if (longlines-set-breakpoint)
+      (progn (backward-char 1)
+             (delete-char 1)
+             (insert-char ?\n 1)
+             nil)
+    (if (longlines-merge-lines-p)
+        (progn (end-of-line)
+               (delete-char 1)
+     ;; After certain commands (e.g. kill-line), there may be two
+     ;; successive soft newlines in the buffer.  In this case, we
+     ;; replace these two newlines by a single space.  Unfortunately,
+     ;; this breaks the conservation of (spaces + newlines), so we
+     ;; have to fiddle with longlines-wrap-point.
+               (if (or (bolp) (eolp))
+                   (if (> longlines-wrap-point (point))
+                       (setq longlines-wrap-point
+                             (1- longlines-wrap-point)))
+                 (insert-char ?  1))
+               nil)
+      (forward-line 1)
+      t)))
+
+(defun longlines-set-breakpoint ()
+  "Place point where we should break the current line, and return t.
+If the line should not be broken, return nil; point remains on the
+line."
+  (move-to-column fill-column)
+  (if (and (re-search-forward "[^ ]" (line-end-position) 1)
+           (> (current-column) fill-column))
+      ;; This line is too long.  Can we break it?
+      (or (longlines-find-break-backward)
+          (progn (move-to-column fill-column)
+                 (longlines-find-break-forward)))))
+
+(defun longlines-find-break-backward ()
+  "Move point backward to the first available breakpoint and return t.
+If no breakpoint is found, return nil."
+  (and (search-backward " " (line-beginning-position) 1)
+       (save-excursion
+         (skip-chars-backward " " (line-beginning-position))
+         (null (bolp)))
+       (progn (forward-char 1)
+              (if (and fill-nobreak-predicate
+                       (run-hook-with-args-until-success
+                        'fill-nobreak-predicate))
+                  (progn (skip-chars-backward " " (line-beginning-position))
+                         (longlines-find-break-backward))
+                t))))
+
+(defun longlines-find-break-forward ()
+  "Move point forward to the first available breakpoint and return t.
+If no break point is found, return nil."
+  (and (search-forward " " (line-end-position) 1)
+       (progn (skip-chars-forward " " (line-end-position))
+              (null (eolp)))
+       (if (and fill-nobreak-predicate
+                (run-hook-with-args-until-success
+                 'fill-nobreak-predicate))
+           (longlines-find-break-forward)
+         t)))
+
+(defun longlines-merge-lines-p ()
+  "Return t if part of the next line can fit onto the current line.
+Otherwise, return nil.  Text cannot be moved across hard newlines."
+  (save-excursion
+    (end-of-line)
+    (and (null (eobp))
+         (null (get-text-property (point) 'hard))
+         (let ((space (- fill-column (current-column))))
+           (forward-line 1)
+           (if (eq (char-after) ? )
+               t ; We can always merge some spaces
+             (<= (if (search-forward " " (line-end-position) 1)
+                     (current-column)
+                   (1+ (current-column)))
+                 space))))))
+
+(defun longlines-decode-region (beg end)
+  "Turn all newlines between BEG and END into hard newlines."
+  (save-excursion
+    (goto-char (min beg end))
+    (while (search-forward "\n" (max beg end) t)
+      (set-hard-newline-properties
+       (match-beginning 0) (match-end 0)))))
+
+(defun longlines-encode-region (beg end &optional buffer)
+  "Replace each soft newline between BEG and END with exactly one space.
+Hard newlines are left intact.  The optional argument BUFFER exists for
+compatibility with `format-alist', and is ignored."
+  (save-excursion
+    (let ((mod (buffer-modified-p)))
+      (goto-char (min beg end))
+      (while (search-forward "\n" (max (max beg end)) t)
+        (unless (get-text-property (match-beginning 0) 'hard)
+          (replace-match " ")))
+      (set-buffer-modified-p mod)
+      end)))
+
+(defun longlines-encode-string (string)
+  "Return a copy of STRING with each soft newline replaced by a space.
+Hard newlines are left intact."
+  (let* ((str (copy-sequence string))
+         (pos (string-match "\n" str)))
+    (while pos
+      (if (null (get-text-property pos 'hard str))
+          (aset str pos ? ))
+      (setq pos (string-match "\n" str (1+ pos))))
+    str))
+
+;; Auto wrap
+
+(defun longlines-auto-wrap (&optional arg)
+  "Turn on automatic line wrapping, and wrap the entire buffer.
+With optional argument ARG, turn off line wrapping."
+  (interactive "P")
+  (remove-hook 'after-change-functions 'longlines-after-change-function t)
+  (remove-hook 'post-command-hook 'longlines-post-command-function t)
+  (if arg
+      (progn (setq longlines-auto-wrap nil)
+             (message "Auto wrap disabled."))
+    (setq longlines-auto-wrap t)
+    (add-hook 'after-change-functions
+              'longlines-after-change-function nil t)
+    (add-hook 'post-command-hook
+              'longlines-post-command-function nil t)
+    (let ((mod (buffer-modified-p)))
+      (longlines-wrap-region (point-min) (point-max))
+      (set-buffer-modified-p mod))
+    (message "Auto wrap enabled.")))
+
+(defun longlines-after-change-function (beg end len)
+  "Update `longlines-wrap-beg' and `longlines-wrap-end'.
+This is called by `after-change-functions' to keep track of the region
+that has changed."
+  (unless undo-in-progress
+    (setq longlines-wrap-beg
+          (if longlines-wrap-beg (min longlines-wrap-beg beg) beg))
+    (setq longlines-wrap-end
+          (if longlines-wrap-end (max longlines-wrap-end end) end))))
+
+(defun longlines-post-command-function ()
+  "Perform line wrapping on the parts of the buffer that have changed.
+This is called by `post-command-hook' after each command."
+  (when longlines-wrap-beg
+    (cond ((or (eq this-command 'yank)
+               (eq this-command 'yank-pop))
+           (longlines-decode-region (point) (mark t))
+           (if longlines-showing
+               (longlines-show-region (point) (mark t))))
+          ((and (eq this-command 'newline) longlines-showing)
+           (save-excursion
+             (if (search-backward "\n" nil t)
+                 (longlines-show-region
+                  (match-beginning 0) (match-end 0))))))
+    (unless (or (eq this-command 'fill-paragraph)
+                (eq this-command 'fill-region))
+      (longlines-wrap-region longlines-wrap-beg longlines-wrap-end))
+    (setq longlines-wrap-beg nil)
+    (setq longlines-wrap-end nil)))
+
+(defun longlines-window-change-function ()
+  "Re-wrap the buffer if the window width has changed.
+This is called by `window-size-change-functions'."
+  (when (/= fill-column (- (window-width) window-min-width))
+    (setq fill-column (- (window-width) window-min-width))
+    (let ((mod (buffer-modified-p)))
+      (longlines-wrap-region (point-min) (point-max))
+      (set-buffer-modified-p mod))))
+
+;; Loading and saving
+
+(add-to-list
+ 'format-alist
+ (list 'longlines "Automatically wrap long lines." nil
+       'longlines-decode-region 'longlines-encode-region t nil))
+
+(provide 'longlines)
+
+;; arch-tag: 3489d225-5506-47b9-8659-d8807b77c624
+;;; longlines.el ends here
--- a/lisp/mail/rmail.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/mail/rmail.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1622,13 +1622,15 @@
 supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD
 is non-nil if the user has supplied the password interactively.
 "
-  (if (string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
+  (cond
+   ((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
       (let (got-password supplied-password
 	    (proto (match-string 1 file))
 	    (user  (match-string 3 file))
 	    (pass  (match-string 5 file))
 	    (host  (substring file (or (match-end 2)
 				       (+ 3 (match-end 1))))))
+	
 	(if (not pass)
 	    (when rmail-remote-password-required
 	      (setq got-password (not (rmail-have-password)))
@@ -1645,8 +1647,22 @@
 	  (list file
 		(or (string-equal proto "pop") (string-equal proto "imap"))
 		supplied-password
-		got-password)))
-    (list file nil nil nil)))
+		got-password))))
+   
+   ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file)
+    (let (got-password supplied-password
+          (proto "pop")
+	  (user  (match-string 1 file))
+	  (host  (match-string 3 file)))
+      
+      (when rmail-remote-password-required
+	(setq got-password (not (rmail-have-password)))
+	(setq supplied-password (rmail-get-remote-password nil)))
+
+      (list file "pop" supplied-password got-password)))
+   
+   (t
+    (list file nil nil nil))))
 
 (defun rmail-insert-inbox-text (files renamep)
   ;; Detect a locked file now, so that we avoid moving mail
@@ -1686,15 +1702,7 @@
 		     (expand-file-name buffer-file-name))))
       ;; Always use movemail to rename the file,
       ;; since there can be mailboxes in various directories.
-      (setq movemail t)
-;;;      ;; If getting from mail spool directory,
-;;;      ;; use movemail to move rather than just renaming,
-;;;      ;; so as to interlock with the mailer.
-;;;      (setq movemail (string= file
-;;;			      (file-truename
-;;;			       (concat rmail-spool-directory
-;;;				       (file-name-nondirectory file)))))
-      (if (and movemail (not popmail))
+      (if (not popmail)
 	  (progn
 	    ;; On some systems, /usr/spool/mail/foo is a directory
 	    ;; and the actual inbox is /usr/spool/mail/foo/foo.
@@ -1716,23 +1724,6 @@
 	    ((or (file-exists-p tofile) (and (not popmail)
 					     (not (file-exists-p file))))
 	     nil)
-	    ((and (not movemail) (not popmail))
-	     ;; Try copying.  If that fails (perhaps no space) and
-	     ;; we're allowed to blow away the inbox, rename instead.
-	     (if rmail-preserve-inbox
-		 (copy-file file tofile nil)
-	       (condition-case nil
-		   (copy-file file tofile nil)
-		 (error
-		  ;; Third arg is t so we can replace existing file TOFILE.
-		  (rename-file file tofile t))))
-	     ;; Make the real inbox file empty.
-	     ;; Leaving it deleted could cause lossage
-	     ;; because mailers often won't create the file.
-	     (if (not rmail-preserve-inbox)
-		 (condition-case ()
-		     (write-region (point) (point) file)
-		   (file-error nil))))
 	    (t
 	     (with-temp-buffer
 	       (let ((errors (current-buffer)))
--- a/lisp/mail/supercite.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/mail/supercite.el	Mon Apr 04 16:43:15 2005 +0000
@@ -838,7 +838,7 @@
   "Return the mail header field value associated with FIELD.
 If there was no mail header with FIELD as its key, return the value of
 `sc-mumble'.  FIELD is case insensitive."
-  (or (cdr (assoc (downcase field) sc-mail-info)) sc-mumble))
+  (or (cdr (assoc-string field sc-mail-info 'case-fold)) sc-mumble))
 
 (defun sc-mail-field-query (arg)
   "View the value of a mail field.
@@ -916,8 +916,8 @@
   "Get the full email address path from FROM.
 AUTHOR is the author's name (which is removed from the address)."
   (let ((eos (length from)))
-    (if (string-match (concat "\\(^\\|^\"\\)" author
-			      "\\(\\s +\\|\"\\s +\\)") from 0)
+    (if (string-match (concat "\\`\"?" (regexp-quote author)
+			      "\"?\\s +") from 0)
 	(let ((address (substring from (match-end 0) eos)))
 	  (if (and (= (aref address 0) ?<)
 		   (= (aref address (1- (length address))) ?>))
@@ -1866,10 +1866,11 @@
 
 (define-minor-mode sc-minor-mode
   "Supercite minor mode."
-  nil (" SC" (sc-auto-fill-region-p
-	      (":f" (sc-fixup-whitespace-p "w"))
-	      (sc-fixup-whitespace-p ":w")))
-  `((,sc-mode-map-prefix . ,sc-mode-map)))
+  :group 'supercite
+  :lighter (" SC" (sc-auto-fill-region-p
+		   (":f" (sc-fixup-whitespace-p "w"))
+		   (sc-fixup-whitespace-p ":w")))
+  :keymap `((,sc-mode-map-prefix . ,sc-mode-map)))
 
 ;;;###autoload
 (defun sc-cite-original ()
@@ -2054,5 +2055,5 @@
 (provide 'supercite)
 (run-hooks 'sc-load-hook)
 
-;;; arch-tag: a5d5bfa6-3bd5-4414-8c65-0afc83e45cd3
+;; arch-tag: a5d5bfa6-3bd5-4414-8c65-0afc83e45cd3
 ;;; supercite.el ends here
--- a/lisp/master.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/master.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; master.el --- make a buffer the master over another buffer
 
-;; Copyright (C) 1999, 2000, 2001  Alexander Schroeder
+;; Copyright (C) 1999, 2000, 2001, 2005  Alexander Schroeder
 
 ;; Author: Alex Schroeder <alex@gnu.org>
 ;; Maintainer: Alex Schroeder <alex@gnu.org>
@@ -55,7 +55,10 @@
 
 ;;; Code:
 
-(require 'easy-mmode)
+(defgroup master nil
+  "Support for master/slave relationships between buffers."
+  :version "22.1"
+  :group 'convenience)
 
 ;; Variables that don't need initialization.
 
@@ -83,16 +86,13 @@
 The slave buffer is stored in the buffer-local variable `master-of'.
 You can set this variable using `master-set-slave'.  You can show
 yourself the value of `master-of' by calling `master-show-slave'."
- ;; The initial value.
- nil
- ;; The indicator for the mode line.
- nil
- ;; The minor mode bindings.
- '(("\C-c\C-n" . master-says-scroll-up)
-   ("\C-c\C-p" . master-says-scroll-down)
-   ("\C-c<" . master-says-beginning-of-buffer)
-   ("\C-c>" . master-says-end-of-buffer)
-   ("\C-c\C-l" . master-says-recenter)))
+  :group 'master
+  :keymap
+  '(("\C-c\C-n" . master-says-scroll-up)
+    ("\C-c\C-p" . master-says-scroll-down)
+    ("\C-c<" . master-says-beginning-of-buffer)
+    ("\C-c>" . master-says-end-of-buffer)
+    ("\C-c\C-l" . master-says-recenter)))
 
 ;; Initialize Master mode by setting a slave buffer.
 
--- a/lisp/menu-bar.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/menu-bar.el	Mon Apr 04 16:43:15 2005 +0000
@@ -136,7 +136,7 @@
   '(menu-item "--"))
 
 (define-key menu-bar-file-menu [recover-session]
-  '(menu-item "Recover Crashed Session..." recover-session
+  '(menu-item "Recover Crashed Session" recover-session
 	      :enable (and auto-save-list-file-prefix
 			   (file-directory-p
                             (file-name-directory auto-save-list-file-prefix))
@@ -298,7 +298,7 @@
   '(menu-item "Continue Tags Search" tags-loop-continue
 	      :help "Continue last tags search operation"))
 (define-key menu-bar-search-menu [tags-srch]
-  '(menu-item "Search tagged files" tags-search
+  '(menu-item "Search tagged files..." tags-search
 	      :help "Search for a regexp in all tagged files"))
 (define-key menu-bar-search-menu [separator-tag-search]
   '(menu-item "--"))
@@ -342,7 +342,7 @@
   '(menu-item "Continue Replace" tags-loop-continue
 	      :help "Continue last tags replace operation"))
 (define-key menu-bar-replace-menu [tags-repl]
-  '(menu-item "Replace in tagged files" tags-query-replace
+  '(menu-item "Replace in tagged files..." tags-query-replace
 	      :help "Interactively replace a regexp in all tagged files"))
 (define-key menu-bar-replace-menu [separator-replace-tags]
   '(menu-item "--"))
@@ -377,14 +377,14 @@
 (defvar menu-bar-goto-menu (make-sparse-keymap "Go To"))
 
 (define-key menu-bar-goto-menu [set-tags-name]
-  '(menu-item "Set Tags File Name" visit-tags-table
+  '(menu-item "Set Tags File Name..." visit-tags-table
 	      :help "Tell Tags commands which tag table file to use"))
 
 (define-key menu-bar-goto-menu [separator-tag-file]
   '(menu-item "--"))
 
 (define-key menu-bar-goto-menu [apropos-tags]
-  '(menu-item "Tags Apropos" tags-apropos
+  '(menu-item "Tags Apropos..." tags-apropos
 	      :help "Find function/variables whose names match regexp"))
 (define-key menu-bar-goto-menu [next-tag-otherw]
   '(menu-item "Next Tag in Other Window"
@@ -673,7 +673,7 @@
   '("--"))
 
 (define-key menu-bar-options-menu [mouse-set-font]
-  '(menu-item "Set Font/Fontset" mouse-set-font
+  '(menu-item "Set Font/Fontset..." mouse-set-font
 	       :visible (display-multi-font-p)
 	       :help "Select a font from list of known fonts/fontsets"))
 
@@ -1332,10 +1332,10 @@
 (define-key menu-bar-manuals-menu [sep3]
   '("--"))
 (define-key menu-bar-manuals-menu [command]
-  '(menu-item "Find Command in Manual" Info-goto-emacs-command-node
+  '(menu-item "Find Command in Manual..." Info-goto-emacs-command-node
 	      :help "Display manual section that describes a command"))
 (define-key menu-bar-manuals-menu [key]
-  '(menu-item "Find Key in Manual" Info-goto-emacs-key-command-node
+  '(menu-item "Find Key in Manual..." Info-goto-emacs-key-command-node
 	      :help "Display manual section that describes a key"))
 
 (define-key menu-bar-help-menu [eliza]
@@ -1369,7 +1369,7 @@
 (define-key menu-bar-help-menu [sep2]
   '("--"))
 (define-key menu-bar-help-menu [finder-by-keyword]
-  '(menu-item "Find Emacs Packages..." finder-by-keyword
+  '(menu-item "Find Emacs Packages" finder-by-keyword
 	      :help "Find packages and features by keyword"))
 (define-key menu-bar-help-menu [manuals]
   (list 'menu-item "More Manuals" menu-bar-manuals-menu
--- a/lisp/mouse.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/mouse.el	Mon Apr 04 16:43:15 2005 +0000
@@ -49,7 +49,7 @@
   :version "22.1"
   :group 'mouse)
 
-(defcustom mouse-1-click-follows-link 350
+(defcustom mouse-1-click-follows-link 450
   "Non-nil means that clicking Mouse-1 on a link follows the link.
 
 With the default setting, an ordinary Mouse-1 click on a link
@@ -837,6 +837,29 @@
 	    (funcall action pos))
 	   (t action)))))))
 
+(defun mouse-fixup-help-message (msg)
+  "Fix help message MSG for `mouse-1-click-follows-link'."
+  (let (mp pos)
+    (if (and mouse-1-click-follows-link
+	     (stringp msg)
+	     (save-match-data
+	       (string-match "^mouse-2" msg))
+	     (setq mp (mouse-pixel-position))
+	     (consp (setq pos (cdr mp)))
+	     (car pos) (>= (car pos) 0)
+	     (cdr pos) (>= (cdr pos) 0)
+	     (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
+	     (windowp (posn-window pos)))
+	(with-current-buffer (window-buffer (posn-window pos))
+	  (if (mouse-on-link-p pos)
+	      (setq msg (concat
+		    (cond
+		     ((eq mouse-1-click-follows-link 'double) "double-")
+		     ((and (integerp mouse-1-click-follows-link)
+			   (< mouse-1-click-follows-link 0)) "Long ")
+		     (t ""))
+		    "mouse-1" (substring msg 7)))))))
+  msg)
 
 (defun mouse-drag-region-1 (start-event)
   (mouse-minibuffer-check start-event)
@@ -886,6 +909,7 @@
       (track-mouse
 	(while (progn
 		 (setq event (read-event))
+		 (setq mve (cons event (and (boundp 'mve) mve)))
 		 (or (mouse-movement-p event)
 		     (memq (car-safe event) '(switch-frame select-window))))
 	  (if (memq (car-safe event) '(switch-frame select-window))
@@ -997,7 +1021,7 @@
 			     (= (window-start start-window)
 				start-window-start)))
 		(if (and on-link
-			 (not end-point)
+			 (or (not end-point) (= end-point start-point))
 			 (consp event)
 			 (or remap-double-click
 			     (and
--- a/lisp/msb.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/msb.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; msb.el --- customizable buffer-selection with multiple menus
 
-;; Copyright (C) 1993, 94, 95, 97, 98, 99, 2000, 2001, 2003
-;;  Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2003,
+;;   2005 Free Software Foundation, Inc.
 
 ;; Author: Lars Lindberg <lars.lindberg@home.se>
 ;; Maintainer: FSF
@@ -1141,7 +1141,7 @@
 With arg, turn Msb mode on if and only if arg is positive.
 This mode overrides the binding(s) of `mouse-buffer-menu' to provide a
 different buffer menu using the function `msb'."
-  :global t
+  :global t :group 'msb
   (if msb-mode
       (progn
 	(add-hook 'menu-bar-update-hook 'msb-menu-bar-update-buffers)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/obsolete/iso-acc.el	Mon Apr 04 16:43:15 2005 +0000
@@ -0,0 +1,492 @@
+;;; iso-acc.el --- minor mode providing electric accent keys
+
+;; Copyright (C) 1993, 1994, 1996, 2001, 2002, 2005
+;;           Free Software Foundation, Inc.
+
+;; Author: Johan Vromans
+;; Maintainer: FSF
+;; Keywords: i18n
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Function `iso-accents-mode' activates a minor mode in which
+;; typewriter "dead keys" are emulated.  The purpose of this emulation
+;; is to provide a simple means for inserting accented characters
+;; according to the ISO-8859-1...3 character sets.
+;;
+;; In `iso-accents-mode', pseudo accent characters are used to
+;; introduce accented keys.  The pseudo-accent characters are:
+;;
+;;   '  (minute)    -> actue accent
+;;   `  (backtick)  -> grave accent
+;;   "  (second)    -> diaeresis
+;;   ^  (caret)     -> circumflex
+;;   ~  (tilde)     -> tilde over the character
+;;   /  (slash)     -> slash through the character.
+;;                     Also:  /A is A-with-ring and /E is AE ligature.
+;; These two are enabled only if you set iso-accents-enable
+;; to include them:
+;;   .  (period)    -> dot over the character (some languages only)
+;;   ,  (cedilla)   -> cedilla under the character (some languages only)
+;;
+;; The action taken depends on the key that follows the pseudo accent.
+;; In general:
+;;
+;;   pseudo-accent + appropriate letter -> accented letter
+;;   pseudo-accent + space -> pseudo-accent (except comma and period)
+;;   pseudo-accent + pseudo-accent -> accent (if available)
+;;   pseudo-accent + other -> pseudo-accent + other
+;;
+;; If the pseudo-accent is followed by anything else than a
+;; self-insert-command, the dead-key code is terminated, the
+;; pseudo-accent inserted 'as is' and the bell is rung to signal this.
+;;
+;; Function `iso-accents-mode' can be used to enable the iso accents
+;; minor mode, or disable it.
+
+;; If you want only some of these characters to serve as accents,
+;; add a language to `iso-languages' which specifies the accent characters
+;; that you want, then select the language with `iso-accents-customize'.
+
+;;; Code:
+
+(provide 'iso-acc)
+
+(defgroup iso-acc nil
+  "Minor mode providing electric accent keys."
+  :prefix "iso-accents-"
+  :group 'i18n)
+
+(defcustom iso-accents-insert-offset nonascii-insert-offset
+  "*Offset added by ISO Accents mode to character codes 0200 and above."
+  :type 'integer
+  :group 'iso-acc)
+
+(defvar iso-languages
+  '(("catalan"
+     ;; Note this includes some extra characters used in Spanish,
+     ;; on the idea that someone who uses Catalan is likely to use Spanish
+     ;; as well.
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
+	 (?\  . ?'))
+     (?` (?A . ?\300) (?E . ?\310) (?O . ?\322)
+	 (?a . ?\340) (?e . ?\350) (?o . ?\362)
+	 (?\  . ?`))
+     (?\" (?I . ?\317) (?U . ?\334) (?i . ?\357) (?u . ?\374)
+	  (?\  . ?\"))
+     (?~ (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
+	 (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
+	 (?\  . ?\~)))
+
+    ("esperanto"
+     (?^ (?H . ?\246) (?J . ?\254) (?h . ?\266) (?j . ?\274) (?C . ?\306)
+	 (?G . ?\330) (?S . ?\336) (?c . ?\346) (?g . ?\370) (?s . ?\376)
+	 (?^ . ?^) (?\  . ?^))
+     (?~ (?U . ?\335) (?u . ?\375) (?\  . ?~)))
+
+    ("french"
+     (?' (?E . ?\311) (?C . ?\307) (?e . ?\351) (?c . ?\347)
+	 (?\  . ?'))
+     (?` (?A . ?\300) (?E . ?\310) (?U . ?\331)
+         (?a . ?\340) (?e . ?\350) (?u . ?\371)
+	 (?\  . ?`))
+     (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
+	 (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
+	 (?\  . ?^))
+     (?\" (?E . ?\313) (?I . ?\317)
+          (?e . ?\353) (?i . ?\357)
+	  (?\  . ?\"))
+     (?~ (?< . ?\253) (?> . ?\273) (?C . ?\307) (?c . ?\347)
+	 (?\  . ?~))
+     (?, (?C . ?\307) (?c . ?\347) (?\  . ?\,)))
+
+    ("german"
+     (?\" (?A . ?\304) (?O . ?\326) (?U . ?\334)
+	  (?a . ?\344) (?o . ?\366) (?u . ?\374) (?s . ?\337) (?\  . ?\")))
+
+    ("irish"
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
+	 (?\  . ?')))
+
+    ("portuguese"
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?C . ?\307) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
+	 (?u . ?\372) (?c . ?\347)
+	 (?\  . ?'))
+     (?` (?A . ?\300) (?a . ?\340)
+	 (?\  . ?`))
+     (?^ (?A . ?\302) (?E . ?\312) (?O . ?\324)
+	 (?a . ?\342) (?e . ?\352) (?o . ?\364)
+	 (?\  . ?^))
+     (?\" (?U . ?\334) (?u . ?\374)
+	  (?\  . ?\"))
+     (?~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365)
+         (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
+	 (?\  . ?~))
+     (?, (?c . ?\347) (?C . ?\307) (?, . ?,)))
+
+    ("spanish"
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
+	 (?\  . ?'))
+     (?\" (?U . ?\334) (?u . ?\374) (?\  . ?\"))
+     (?\~ (?N . ?\321) (?n . ?\361) (?> . ?\273) (?< . ?\253) (?! . ?\241)
+          (?? . ?\277) (?\  . ?\~)))
+
+    ("latin-1"
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
+	 (?u . ?\372) (?y . ?\375) (?' . ?\264)
+	 (?\  . ?'))
+     (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
+	 (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
+	 (?` . ?`) (?\  . ?`))
+     (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
+	 (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
+	 (?^ . ?^) (?\  . ?^))
+     (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
+	  (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?s . ?\337)
+	  (?u . ?\374) (?y . ?\377)
+	  (?\" . ?\250) (?\  . ?\"))
+     (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
+	 (?T . ?\336) (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361)
+	 (?o . ?\365) (?t . ?\376)
+	 (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
+	 (?\~ . ?\270) (?\  . ?~))
+     (?/ (?A . ?\305) (?E . ?\306) (?O . ?\330) (?a . ?\345) (?e . ?\346)
+	 (?o . ?\370)
+	 (?/ . ?\260) (?\  . ?/)))
+
+    ("latin-2" latin-iso8859-2
+     (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315)
+	 (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246)
+	 (?U . ?\332) (?Y . ?\335) (?Z . ?\254)
+	 (?a . ?\341) (?c . ?\346) (?d . ?\360) (?e . ?\351) (?i . ?\355)
+	 (?l . ?\345) (?n . ?\361) (?o . ?\363) (?r . ?\340) (?s . ?\266)
+	 (?u . ?\372) (?y . ?\375) (?z . ?\274)
+	 (?' . ?\264) (?\  . ?'))
+     (?` (?A . ?\241) (?C . ?\307) (?E . ?\312) (?L . ?\243) (?S . ?\252)
+	 (?T . ?\336) (?Z . ?\257)
+	 (?a . ?\261) (?l . ?\263) (?c . ?\347) (?e . ?\352) (?s . ?\272)
+	 (?t . ?\376) (?z . ?\277)
+	 (?` . ?\252)
+	 (?. . ?\377) (?\  . ?`))
+     (?^ (?A . ?\302) (?I . ?\316) (?O . ?\324)
+	 (?a . ?\342) (?i . ?\356) (?o . ?\364)
+	 (?^ . ?^)			; no special code?
+	 (?\  . ?^))
+     (?\" (?A . ?\304) (?E . ?\313) (?O . ?\326) (?U . ?\334)
+	  (?a . ?\344) (?e . ?\353) (?o . ?\366) (?s . ?\337) (?u . ?\374)
+	  (?\" . ?\250)
+	  (?\  . ?\"))
+     (?~ (?A . ?\303) (?C . ?\310) (?D . ?\317) (?L . ?\245) (?N . ?\322)
+	 (?O . ?\325) (?R . ?\330) (?S . ?\251) (?T . ?\253) (?U . ?\333)
+	 (?Z . ?\256)
+	 (?a . ?\343) (?c . ?\350) (?d . ?\357) (?l . ?\265) (?n . ?\362)
+	 (?o . ?\365) (?r . ?\370) (?s . ?\271) (?t . ?\273) (?u . ?\373)
+	 (?z . ?\276)
+	 (?v . ?\242)			; v accent
+	 (?\~ . ?\242)			; v accent
+	 (?\. . ?\270)			; cedilla accent
+	 (?\  . ?~)))
+
+    ("latin-3" latin-iso8859-3
+     (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
+	 (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
+	 (?' . ?\264) (?\  . ?'))
+     (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
+	 (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
+	 (?` . ?`) (?\  . ?`))
+     (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) (?H . ?\246)
+	 (?I . ?\316) (?J . ?\254) (?O . ?\324) (?S . ?\336) (?U . ?\333)
+	 (?a . ?\342) (?c . ?\346) (?e . ?\352) (?g . ?\370) (?h . ?\266)
+	 (?i . ?\356) (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373)
+	 (?^ . ?^) (?\  . ?^))
+     (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
+	  (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374)
+	  (?s . ?\337)
+	  (?\" . ?\250) (?\  . ?\"))
+     (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
+	 (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361) (?o . ?\365)
+	 (?$ . ?\245) (?S . ?\252) (?s . ?\272) (?G . ?\253) (?g . ?\273)
+	 (?U . ?\335) (?u . ?\375) (?` . ?\242)
+	 (?~ . ?\270) (?\  . ?~))
+     (?/ (?C . ?\305) (?G . ?\325) (?H . ?\241) (?I . ?\251) (?Z . ?\257)
+	 (?c . ?\345) (?g . ?\365) (?h . ?\261) (?i . ?\271) (?z . ?\277)
+	 (?r . ?\256)
+	 (?. . ?\377) (?# . ?\243) (?$ . ?\244)
+	 (?/ . ?\260) (?\  . ?/))
+     (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257)
+ 	 (?c . ?\345) (?g . ?\365) (?z . ?\277))))
+  "List of language-specific customizations for the ISO Accents mode.
+
+Each element of the list is of the form
+
+    (LANGUAGE [CHARSET]
+     (PSEUDO-ACCENT MAPPINGS)
+     (PSEUDO-ACCENT MAPPINGS)
+     ...)
+
+LANGUAGE is a string naming the language.
+CHARSET (which may be omitted) is the symbol name
+ of the character set used in this language.
+ If CHARSET is omitted, latin-iso8859-1 is the default.
+PSEUDO-ACCENT is a char specifying an accent key.
+MAPPINGS are cons cells of the form (CHAR . ISO-CHAR).
+
+The net effect is that the key sequence PSEUDO-ACCENT CHAR is mapped
+to ISO-CHAR on input.")
+
+(defvar iso-language nil
+  "Language for which ISO Accents mode is currently customized.
+Change it with the `iso-accents-customize' function.")
+
+(defvar iso-accents-list nil
+  "Association list for ISO accent combinations, for the chosen language.")
+
+(defcustom iso-accents-mode nil
+  "*Non-nil enables ISO Accents mode.
+Setting this variable makes it local to the current buffer.
+See the function `iso-accents-mode'."
+  :type 'boolean
+  :group 'iso-acc)
+(make-variable-buffer-local 'iso-accents-mode)
+
+(defcustom iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/)
+  "*List of accent keys that become prefixes in ISO Accents mode.
+The default is (?' ?` ?^ ?\" ?~ ?/), which contains all the supported
+accent keys.  If you set this variable to a list in which some of those
+characters are missing, the missing ones do not act as accents.
+
+Note that if you specify a language with `iso-accents-customize',
+that can also turn off certain prefixes (whichever ones are not needed in
+the language you choose)."
+  :type '(repeat character)
+  :group 'iso-acc)
+
+(defun iso-accents-accent-key (prompt)
+  "Modify the following character by adding an accent to it."
+  ;; Pick up the accent character.
+  (if (and iso-accents-mode
+	   (memq last-input-char iso-accents-enable))
+      (iso-accents-compose prompt)
+    (vector last-input-char)))
+
+
+;; The iso-accents-compose function is called deep inside Emacs' read
+;; key sequence machinery, so the call to read-event below actually
+;; recurses into that machinery.  Doing that does not cause any
+;; problem on its own, but read-event will have marked the window's
+;; display matrix to be accurate -- which is broken by the subsequent
+;; call to delete-region.  Therefore, we must call force-window-update
+;; after delete-region to explicitly clear the accurate state of the
+;; window's display matrix.
+
+(defun iso-accents-compose (prompt)
+  (let* ((first-char last-input-char)
+	 (list (assq first-char iso-accents-list))
+	 ;; Wait for the second key and look up the combination.
+	 (second-char (if (or prompt
+			      (not (eq (key-binding "a")
+				       'self-insert-command))
+			      ;; Not at start of a key sequence.
+			      (> (length (this-single-command-keys)) 1)
+			      ;; Called from anything but the command loop.
+			      this-command)
+			  (progn
+			    (message "%s%c"
+				     (or prompt "Compose with ")
+				     first-char)
+			    (read-event))
+			(insert first-char)
+			(prog1 (read-event)
+			  (delete-region (1- (point)) (point))
+			  ;; Display is no longer up-to-date.
+			  (force-window-update (selected-window)))))
+	 (entry (cdr (assq second-char list))))
+    (if entry
+	;; Found it: return the mapped char
+	(vector
+	 (if (and enable-multibyte-characters
+		  (>= entry ?\200))
+	     (+ iso-accents-insert-offset entry)
+	   entry))
+      ;; Otherwise, advance and schedule the second key for execution.
+      (push second-char unread-command-events)
+      (vector first-char))))
+
+;; It is a matter of taste if you want the minor mode indicated
+;; in the mode line...
+;; If so, uncomment the next four lines.
+;; (or (assq 'iso-accents-mode minor-mode-alist)
+;;     (setq minor-mode-alist
+;; 	  (append minor-mode-alist
+;; 		  '((iso-accents-mode " ISO-Acc")))))
+
+;;;###autoload
+(defun iso-accents-mode (&optional arg)
+  "Toggle ISO Accents mode, in which accents modify the following letter.
+This permits easy insertion of accented characters according to ISO-8859-1.
+When Iso-accents mode is enabled, accent character keys
+\(`, ', \", ^, / and ~) do not self-insert; instead, they modify the following
+letter key so that it inserts an ISO accented letter.
+
+You can customize ISO Accents mode to a particular language
+with the command `iso-accents-customize'.
+
+Special combinations: ~c gives a c with cedilla,
+~d gives an Icelandic eth (d with dash).
+~t gives an Icelandic thorn.
+\"s gives German sharp s.
+/a gives a with ring.
+/e gives an a-e ligature.
+~< and ~> give guillemots.
+~! gives an inverted exclamation mark.
+~? gives an inverted question mark.
+
+With an argument, a positive argument enables ISO Accents mode,
+and a negative argument disables it."
+
+  (interactive "P")
+
+  (if (if arg
+	  ;; Negative arg means switch it off.
+	  (<= (prefix-numeric-value arg) 0)
+	;; No arg means toggle.
+	iso-accents-mode)
+      (setq iso-accents-mode nil)
+
+    ;; Enable electric accents.
+    (setq iso-accents-mode t)))
+
+(defun iso-accents-customize (language)
+  "Customize the ISO accents machinery for a particular language.
+It selects the customization based on the specifications in the
+`iso-languages' variable."
+  (interactive (list (completing-read "Language: " iso-languages nil t)))
+  (let ((table (cdr (assoc language iso-languages)))
+	all-accents tail)
+    (if (not table)
+	(error "Unknown language `%s'" language)
+      (setq iso-accents-insert-offset (- (make-char (if (symbolp (car table))
+							(car table)
+						      'latin-iso8859-1))
+					 128))
+      (if (symbolp (car table))
+	  (setq table (cdr table)))
+      (setq iso-language language
+	    iso-accents-list table)
+      (if key-translation-map
+	  (substitute-key-definition
+	   'iso-accents-accent-key nil key-translation-map)
+	(setq key-translation-map (make-sparse-keymap)))
+      ;; Set up translations for all the characters that are used as
+      ;; accent prefixes in this language.
+      (setq tail iso-accents-list)
+      (while tail
+	(define-key key-translation-map (vector (car (car tail)))
+	  'iso-accents-accent-key)
+	(setq tail (cdr tail))))))
+
+(defun iso-accentuate (start end)
+  "Convert two-character sequences in region into accented characters.
+Noninteractively, this operates on text from START to END.
+This uses the same conversion that ISO Accents mode uses for type-in."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char start)
+      (forward-char 1)
+      (let (entry)
+	(while (< (point) end)
+	  (if (and (memq (preceding-char) iso-accents-enable)
+		   (setq entry (cdr (assq (following-char) (assq (preceding-char) iso-accents-list)))))
+	      (progn
+		(forward-char -1)
+		(delete-char 2)
+		(insert entry)
+		(setq end (1- end)))
+	    (forward-char 1)))))))
+
+(defun iso-accent-rassoc-unit (value alist)
+  (let (elt acc)
+    (while (and alist (not elt))
+      (setq acc (car (car alist))
+	    elt (car (rassq value (cdr (car alist))))
+	    alist (cdr alist)))
+    (if elt
+	(cons acc elt))))
+
+(defun iso-unaccentuate (start end)
+  "Convert accented characters in the region into two-character sequences.
+Noninteractively, this operates on text from START to END.
+This uses the opposite of the conversion done by ISO Accents mode for type-in."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char start)
+      (let (entry)
+	(while (< (point) end)
+	  (if (and (> (following-char) 127)
+		   (setq entry (iso-accent-rassoc-unit (following-char)
+						       iso-accents-list)))
+	      (progn
+		(delete-char 1)
+		(insert (car entry) (cdr entry))
+		(setq end (1+ end)))
+	    (forward-char 1)))))))
+
+(defun iso-deaccentuate (start end)
+  "Convert accented characters in the region into unaccented characters.
+Noninteractively, this operates on text from START to END."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char start)
+      (let (entry)
+	(while (< (point) end)
+	  (if (and (> (following-char) 127)
+		   (setq entry (iso-accent-rassoc-unit (following-char)
+						       iso-accents-list)))
+	      (progn
+		(delete-char 1)
+		(insert (cdr entry)))
+	    (forward-char 1)))))))
+
+;; Set up the default settings.
+(iso-accents-customize "latin-1")
+
+;; Use Iso-Accents mode in the minibuffer
+;; if it was in use in the previous buffer.
+(defun iso-acc-minibuf-setup ()
+  (setq iso-accents-mode
+	(save-excursion
+	  (set-buffer (window-buffer minibuffer-scroll-window))
+	  iso-accents-mode)))
+
+(add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup)
+
+;; arch-tag: 149ff409-7c3e-4574-9b5d-ac038939c0a6
+;;; iso-acc.el ends here
--- a/lisp/pcvs.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/pcvs.el	Mon Apr 04 16:43:15 2005 +0000
@@ -358,7 +358,7 @@
 	 (dir default-directory)
 	 (buf (cond
 	       (name (cvs-get-buffer-create name))
-	       ((and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer))
+	       ((and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer))
 		cvs-temp-buffer)
 	       (t
 		(set (make-local-variable 'cvs-temp-buffer)
@@ -528,39 +528,49 @@
 	     (files (nth 1 dir+files+rest))
 	     (rest (nth 2 dir+files+rest)))
 
-	;; setup the (current) process buffer
-	(set (make-local-variable 'cvs-postprocess)
-	     (if (null rest)
-		 ;; this is the last invocation
-		 postprocess
-	       ;; else, we have to register ourselves to be rerun on the rest
-	       `(cvs-run-process ',args ',rest ',postprocess ',single-dir)))
 	(add-hook 'kill-buffer-hook
 		  (lambda ()
 		    (let ((proc (get-buffer-process (current-buffer))))
 		      (when (processp proc)
 			(set-process-filter proc nil)
-			(set-process-sentinel proc nil)
-			(delete-process proc))))
+			;; Abort postprocessing but leave the sentinel so it
+			;; will update the list of running procs.
+			(process-put proc 'cvs-postprocess nil)
+			(interrupt-process proc))))
 		  nil t)
 
 	;; create the new process and setup the procbuffer correspondingly
-	(let* ((args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
+	(let* ((msg (cvs-header-msg args fis))
+	       (args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
 			     (if cvs-cvsroot (list "-d" cvs-cvsroot))
 			     args
 			     files))
 	       ;; If process-connection-type is nil and the repository
 	       ;; is accessed via SSH, a bad interaction between libc,
 	       ;; CVS and SSH can lead to garbled output.
-	       ;; It might be a glibc-specific problem (but it also happens
+	       ;; It might be a glibc-specific problem (but it can also happens
 	       ;; under Mac OS X, it seems).
-	       ;; Until the problem is cleared, we'll use a pty rather than
-	       ;; a pipe.
-	       ;; (process-connection-type nil) ; Use a pipe, not a pty.
+	       ;; It seems that using a pty can help circumvent the problem,
+	       ;; but at the cost of screwing up when the process thinks it
+	       ;; can ask for user input (such as password or host-key
+	       ;; confirmation).  A better workaround is to set CVS_RSH to
+	       ;; an appropriate script, or to use a later version of CVS.
+	       (process-connection-type nil) ; Use a pipe, not a pty.
 	       (process
 		;; the process will be run in the selected dir
 		(let ((default-directory (cvs-expand-dir-name dir)))
 		  (apply 'start-process "cvs" procbuf cvs-program args))))
+	  ;; setup the process.
+	  (process-put process 'cvs-buffer cvs-buffer)
+	  (with-current-buffer cvs-buffer (cvs-update-header msg 'add))
+	  (process-put process 'cvs-header msg)
+	  (process-put
+	   process 'cvs-postprocess
+	   (if (null rest)
+	       ;; this is the last invocation
+	       postprocess
+	     ;; else, we have to register ourselves to be rerun on the rest
+	     `(cvs-run-process ',args ',rest ',postprocess ',single-dir)))
 	  (set-process-sentinel process 'cvs-sentinel)
 	  (set-process-filter process 'cvs-update-filter)
 	  (set-marker (process-mark process) (point-max))
@@ -636,33 +646,35 @@
 This is responsible for parsing the output from the cvs update when
 it is finished."
   (when (memq (process-status proc) '(signal exit))
-    (if (null (buffer-name (process-buffer proc)))
-	;;(set-process-buffer proc nil)
-	(error "cvs' process buffer was killed")
-      (let* ((obuf (current-buffer))
-	     (procbuffer (process-buffer proc)))
-	(set-buffer (with-current-buffer procbuffer cvs-buffer))
-	(setq cvs-mode-line-process (symbol-name (process-status proc)))
-	(force-mode-line-update)
-	(set-buffer procbuffer)
-	(let ((cvs-postproc cvs-postprocess))
-	  ;; Since the buffer and mode line will show that the
-	  ;; process is dead, we can delete it now.  Otherwise it
-	  ;; will stay around until M-x list-processes.
-	  (delete-process proc)
-	  (setq cvs-postprocess nil)
-	  ;; do the postprocessing like parsing and such
-	  (save-excursion (eval cvs-postproc))
-	  ;; check whether something is left
-	  (unless cvs-postprocess
-	    ;; IIRC, we enable undo again once the process is finished
-	    ;; for cases where the output was inserted in *vc-diff* or
-	    ;; in a file-like buffer.  -stef
-	    (buffer-enable-undo)
-	    (with-current-buffer cvs-buffer
-	      (message "CVS process has completed in %s" (buffer-name)))))
-	;; This might not even be necessary
-	(set-buffer obuf)))))
+    (let ((cvs-postproc (process-get proc 'cvs-postprocess))
+	  (cvs-buf (process-get proc 'cvs-buffer)))
+      ;; Since the buffer and mode line will show that the
+      ;; process is dead, we can delete it now.  Otherwise it
+      ;; will stay around until M-x list-processes.
+      (process-put proc 'postprocess nil)
+      (delete-process proc)
+      ;; Don't do anything if the main buffer doesn't exist any more.
+      (when (buffer-live-p cvs-buf)
+	(with-current-buffer cvs-buf
+	  (cvs-update-header (process-get proc 'cvs-header) nil)
+	  (setq cvs-mode-line-process (symbol-name (process-status proc)))
+	  (force-mode-line-update)
+	  (when cvs-postproc
+	    (if (null (buffer-live-p (process-buffer proc)))
+		;;(set-process-buffer proc nil)
+		(error "cvs' process buffer was killed")
+	      (with-current-buffer (process-buffer proc)
+		;; do the postprocessing like parsing and such
+		(save-excursion (eval cvs-postproc))
+		;; check whether something is left
+		(unless (get-buffer-process (current-buffer))
+		  ;; IIRC, we enable undo again once the process is finished
+		  ;; for cases where the output was inserted in *vc-diff* or
+		  ;; in a file-like buffer.  --Stef
+		  (buffer-enable-undo)
+		  (with-current-buffer cvs-buffer
+		    (message "CVS process has completed in %s"
+			     (buffer-name))))))))))))
 
 (defun cvs-parse-process (dcd &optional subdir old-fis)
   "Parse the output of a cvs process.
@@ -770,7 +782,7 @@
 (defun-cvs-mode cvs-mode-kill-process ()
   "Kill the temporary buffer and associated process."
   (interactive)
-  (when (and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer))
+  (when (and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer))
     (let ((proc (get-buffer-process cvs-temp-buffer)))
       (when proc (delete-process proc)))))
 
@@ -906,23 +918,28 @@
 ;;;;
 
 ;;;###autoload
-(defun cvs-checkout (modules dir flags)
+(defun cvs-checkout (modules dir flags &optional root)
   "Run a 'cvs checkout MODULES' in DIR.
 Feed the output to a *cvs* buffer, display it in the current window,
 and run `cvs-mode' on it.
 
 With a prefix argument, prompt for cvs FLAGS to use."
   (interactive
-   (list (cvs-string->strings (read-string "Module(s): " (cvs-get-module)))
-	 (read-directory-name "CVS Checkout Directory: "
-			 nil default-directory nil)
-	 (cvs-add-branch-prefix
-	  (cvs-flags-query 'cvs-checkout-flags "cvs checkout flags"))))
+   (let ((root (cvs-get-cvsroot)))
+     (if (or (null root) current-prefix-arg)
+	 (setq root (read-string "CVS Root: ")))
+     (list (cvs-string->strings (read-string "Module(s): " (cvs-get-module)))
+	   (read-directory-name "CVS Checkout Directory: "
+				nil default-directory nil)
+	   (cvs-add-branch-prefix
+	    (cvs-flags-query 'cvs-checkout-flags "cvs checkout flags"))
+	   root)))
   (when (eq flags t)
     (setf flags (cvs-flags-query 'cvs-checkout-flags nil 'noquery)))
-  (cvs-cmd-do "checkout" (or dir default-directory)
-	      (append flags modules) nil 'new
-	      :noexist t))
+  (let ((cvs-cvsroot root))
+    (cvs-cmd-do "checkout" (or dir default-directory)
+		(append flags modules) nil 'new
+		:noexist t)))
 
 (defun-cvs-mode (cvs-mode-checkout . NOARGS) (dir)
   "Run cvs checkout against the current branch.
@@ -1133,7 +1150,7 @@
 	     (eq (ewoc-buffer cvs-cookies) buf)
 	     (setq check 'cvs-temp-buffer)
 	     (or (null cvs-temp-buffer)
-		 (null (buffer-name cvs-temp-buffer))
+		 (null (buffer-live-p cvs-temp-buffer))
 		 (and (eq (with-current-buffer cvs-temp-buffer cvs-buffer) buf)
 		      (equal (with-current-buffer cvs-temp-buffer
 			       default-directory)
@@ -1822,11 +1839,6 @@
 		;; absence of `cvs update' output has a specific meaning.
 		(or fis (list (cvs-create-fileinfo 'DIRCHANGE "" "." ""))))))
 	(push `(cvs-parse-process ',dont-change-disc nil ',old-fis) postproc)))
-    (let ((msg (cvs-header-msg args fis)))
-      (cvs-update-header msg 'add)
-      (push `(with-current-buffer cvs-buffer
-	       (cvs-update-header ',msg nil))
-	    postproc))
     (setq postproc (if (cdr postproc) (cons 'progn postproc) (car postproc)))
     (with-current-buffer buf
       (let ((inhibit-read-only t)) (erase-buffer))
--- a/lisp/progmodes/compile.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/compile.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1613,6 +1613,8 @@
     (compilation-set-window-height w)
 
     (when highlight-regexp
+      (if (timerp next-error-highlight-timer)
+	  (cancel-timer next-error-highlight-timer))
       (unless compilation-highlight-overlay
 	(setq compilation-highlight-overlay
 	      (make-overlay (point-min) (point-min)))
@@ -1632,8 +1634,11 @@
 	      (move-overlay compilation-highlight-overlay
 			    (point) end (current-buffer)))
 	    (if (numberp next-error-highlight)
-		(sit-for next-error-highlight))
-	    (if (not (eq next-error-highlight t))
+		(setq next-error-highlight-timer
+		      (run-at-time next-error-highlight nil 'delete-overlay
+				   compilation-highlight-overlay)))
+	    (if (not (or (eq next-error-highlight t)
+			 (numberp next-error-highlight)))
 		(delete-overlay compilation-highlight-overlay))))))
     (when (and (eq next-error-highlight 'fringe-arrow))
       (set (make-local-variable 'overlay-arrow-position)
--- a/lisp/progmodes/cwarn.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/cwarn.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; cwarn.el --- highlight suspicious C and C++ constructions
 
-;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
 
 ;; Author: Anders Lindgren <andersl@andersl.com>
 ;; Keywords: c, languages, faces
@@ -193,7 +193,7 @@
 C++ modes are included.
 
 With ARG, turn CWarn mode on if and only if arg is positive."
-  nil cwarn-mode-text nil
+  :group 'cwarn :lighter cwarn-mode-text
   (cwarn-font-lock-keywords cwarn-mode)
   (if font-lock-mode (font-lock-fontify-buffer)))
 
--- a/lisp/progmodes/f90.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/f90.el	Mon Apr 04 16:43:15 2005 +0000
@@ -597,41 +597,32 @@
 
 ;; Hideshow support.
 (defconst f90-end-block-re
-  (concat "^[ \t0-9]*\\<end\\>[ \t]*"
+  (concat "^[ \t0-9]*\\<end[ \t]*"
           (regexp-opt '("do" "if" "forall" "function" "interface"
-                        "module" "program" "select"  "subroutine"
+                        "module" "program" "select" "subroutine"
                         "type" "where" ) t)
           "[ \t]*\\sw*")
-  "Regexp matching the end of a \"block\" of F90 code.
+  "Regexp matching the end of an F90 \"block\", from the line start.
 Used in the F90 entry in `hs-special-modes-alist'.")
 
 ;; Ignore the fact that FUNCTION, SUBROUTINE, WHERE, FORALL have a
-;; following "(".  DO, CASE, IF can have labels; IF must be
-;; accompanied by THEN.
-;; A big problem is that many of these statements can be broken over
-;; lines, even with embedded comments. We only try to handle this for
-;; IF ... THEN statements, assuming and hoping it will be less common
-;; for other constructs. We match up to one new-line, provided ")
-;; THEN" appears on one line. Matching on just ") THEN" is no good,
-;; since that includes ELSE branches.
-;; For a fully accurate solution, hideshow would probably have to be
-;; modified to allow functions as well as regexps to be used to
-;; specify block start and end positions.
+;; following "(".  DO, CASE, IF can have labels.
 (defconst f90-start-block-re
   (concat
    "^[ \t0-9]*"                         ; statement number
    "\\(\\("
    "\\(\\sw+[ \t]*:[ \t]*\\)?"          ; structure label
-   "\\(do\\|select[ \t]*case\\|if[ \t]*(.*\n?.*)[ \t]*then\\|"
+   "\\(do\\|select[ \t]*case\\|"
+   ;; See comments in fortran-start-block-re for the problems of IF.
+   "if[ \t]*(\\(.*\\|"
+   ".*\n\\([^if]*\\([^i].\\|.[^f]\\|.\\>\\)\\)\\)\\<then\\|"
    ;; Distinguish WHERE block from isolated WHERE.
    "\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)\\)\\)"
    "\\|"
    "program\\|interface\\|module\\|type\\|function\\|subroutine"
-   ;; ") THEN" at line end. Problem - also does ELSE.
-;;;   "\\|.*)[ \t]*then[ \t]*\\($\\|!\\)"
    "\\)"
    "[ \t]*")
-  "Regexp matching the start of a \"block\" of F90 code.
+  "Regexp matching the start of an F90 \"block\", from the line start.
 A simple regexp cannot do this in fully correct fashion, so this
 tries to strike a compromise between complexity and flexibility.
 Used in the F90 entry in `hs-special-modes-alist'.")
@@ -1305,12 +1296,12 @@
 Does not check the outermost block, because it may be incomplete.
 Interactively, pushes mark before moving point."
   (interactive "p")
+  (if (interactive-p) (push-mark (point) t))
   (and num (< num 0) (f90-end-of-block (- num)))
   (let ((case-fold-search t)
         (count (or num 1))
         end-list end-this end-type end-label
         start-this start-type start-label)
-    (if (interactive-p) (push-mark (point) t))
     (beginning-of-line)                 ; probably want this
     (while (and (> count 0) (re-search-backward f90-blocks-re nil 'move))
       (beginning-of-line)
--- a/lisp/progmodes/flymake.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/flymake.el	Mon Apr 04 16:43:15 2005 +0000
@@ -964,7 +964,7 @@
 	(if (consp file)	(setq file (car file)))
 	(if (consp line)	(setq line (car line)))
 	(if (consp col)	(setq col (car col)))
-	
+
 	(when (not (functionp line))
 	  (setq converted-list (cons (list regexp file line col) converted-list)))))
     converted-list))
@@ -1508,7 +1508,7 @@
   "Minor mode to do on-the-fly syntax checking.
 When called interactively, toggles the minor mode.
 With arg, turn Flymake mode on if and only if arg is positive."
-  :lighter flymake-mode-line
+  :group 'flymake :lighter flymake-mode-line
   (if flymake-mode
       (if (flymake-can-syntax-check-file (buffer-file-name))
 	  (flymake-mode-on)
--- a/lisp/progmodes/fortran.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/fortran.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; fortran.el --- Fortran mode for GNU Emacs
 
-;; Copyright (c) 1986, 93, 94, 95, 97, 98, 99, 2000, 01, 03, 04
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
+;;               2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Michael D. Prange <prange@erl.mit.edu>
 ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
@@ -95,7 +95,7 @@
   :group 'fortran-indent)
 
 (defcustom fortran-if-indent 3
-  "*Extra indentation applied to IF blocks."
+  "*Extra indentation applied to IF, SELECT CASE and WHERE blocks."
   :type  'integer
   :group 'fortran-indent)
 
@@ -321,7 +321,8 @@
                             "while" "inquire" "stop" "return"
                             "include" "open" "close" "read"
                             "write" "format" "print" "select" "case"
-                            "cycle" "exit" "rewind" "backspace")
+                            "cycle" "exit" "rewind" "backspace"
+                            "where" "elsewhere")
                           'paren) "\\>")
            ;; Builtin operators.
            (concat "\\." (regexp-opt
@@ -370,6 +371,29 @@
                 fortran-font-lock-keywords-2)))
   "Gaudy level highlighting for Fortran mode.")
 
+(defvar fortran-font-lock-keywords-4
+  (append fortran-font-lock-keywords-3
+          (list (list
+                 (concat "\\<"
+                         (regexp-opt
+                          '("int" "ifix" "idint" "real" "float" "sngl"
+                            "dble" "cmplx" "ichar" "char" "aint" "dint"
+                            "anint" "dnint" "nint" "idnint" "iabs" "abs"
+                            "dabs" "cabs" "mod" "amod" "dmod" "isign"
+                            "sign" "dsign" "idim" "dim" "ddim" "dprod"
+                            "max" "max0" "amax1" "dmax1" "amax0" "max1"
+                            "min0" "amin1" "dmin1" "amin0" "min1" "len"
+                            "index" "lge" "lgt" "lle" "llt" "aimag"
+                            "conjg" "sqrt" "dsqrt" "csqrt" "exp" "dexp"
+                            "cexp" "log" "alog" "dlog" "clog" "log10"
+                            "alog10" "dlog10" "sin" "dsin" "csin" "cos"
+                            "dcos" "ccos" "tan" "dtan" "asin" "dasin"
+                            "acos" "dacos" "atan" "datan" "atan2" "datan2"
+                            "sinh" "dsinh" "cosh" "dcosh" "tanh" "dtanh")
+                          'paren) "[ \t]*(") '(1 font-lock-builtin-face))))
+  "Maximum highlighting for Fortran mode.
+Consists of level 3 plus all other intrinsics not already highlighted.")
+
 ;; Comments are real pain in Fortran because there is no way to
 ;; represent the standard comment syntax in an Emacs syntax table.
 ;; (We can do so for F90-style).  Therefore an unmatched quote in a
@@ -409,6 +433,64 @@
   "Value for `imenu-generic-expression' in Fortran mode.")
 
 
+;; Hideshow support.
+(defconst fortran-blocks-re
+  (concat "block[ \t]*data\\|select[ \t]*case\\|"
+          (regexp-opt '("do" "if" "interface" "function" "map" "program"
+                        "structure" "subroutine" "union" "where")))
+  "Regexp potentially indicating the start or end of a Fortran \"block\".
+Omits naked END statements, and DO-loops closed by anything other
+than ENDDO.")
+
+(defconst fortran-end-block-re
+  ;; Do-loops terminated by things other than ENDDO cannot be handled
+  ;; with a regexp. This omission does not seem to matter to hideshow...
+  (concat "^[ \t0-9]*\\<end[ \t]*\\("
+          fortran-blocks-re
+          ;; Naked END statement.
+          "\\|!\\|$\\)")
+  "Regexp matching the end of a Fortran \"block\", from the line start.
+Note that only ENDDO is handled for the end of a DO-loop.  Used
+in the Fortran entry in `hs-special-modes-alist'.")
+
+(defconst fortran-start-block-re
+  (concat
+   "^[ \t0-9]*\\("                      ; statement number
+   ;; Structure label for DO, IF, SELECT, WHERE.
+   "\\(\\(\\sw+[ \t]*:[ \t]*\\)?"
+   ;; IF blocks are a nuisance:
+   ;; IF ( ... ) foo   is not a block, but a single statement.
+   ;; IF ( ... ) THEN  can be split over multiple lines.
+   ;; [So can, eg, a DO WHILE (... ), but that is less common, I hope.]
+   ;; The regexp below allows for it to be split over at most 2 lines.
+   ;; That leads to the problem of not matching two consecutive IF
+   ;; statements as one, eg:
+   ;; IF ( ... ) foo
+   ;; IF ( ... ) THEN
+   ;; It simply is not possible to do this in a 100% correct fashion
+   ;; using a regexp - see the functions fortran-end-if,
+   ;; fortran-beginning-if for the hoops we have to go through.
+   ;; An alternative is to match on THEN at a line end, eg:
+   ;;   ".*)[ \t]*then[ \t]*\\($\\|!\\)"
+   ;; This would also match ELSE branches, though. This does not seem
+   ;; right to me, because then one has neighbouring blocks that are
+   ;; not nested in each other.
+   "\\(if[ \t]*(\\(.*\\|"
+   ".*\n\\([^if]*\\([^i].\\|.[^f]\\|.\\>\\)\\)\\)\\<then\\|"
+   "do\\|select[ \t]*case\\|where\\)\\)\\|"
+   (regexp-opt '("interface" "function" "map" "program"
+                 "structure" "subroutine" "union"))
+   "\\|block[ \t]*data\\)[ \t]*")
+  "Regexp matching the start of a Fortran \"block\", from the line start.
+A simple regexp cannot do this in fully correct fashion, so this
+tries to strike a compromise between complexity and flexibility.
+Used in the Fortran entry in `hs-special-modes-alist'.")
+
+(add-to-list 'hs-special-modes-alist
+	     `(fortran-mode ,fortran-start-block-re ,fortran-end-block-re
+                            "^[cC*!]" fortran-end-of-block nil))
+
+
 (defvar fortran-mode-syntax-table
   (let ((table (make-syntax-table)))
     ;; We might like `;' to be punctuation (g77 multi-statement
@@ -422,7 +504,8 @@
     (modify-syntax-entry ?/  "."  table)
     (modify-syntax-entry ?\' "\"" table)
     (modify-syntax-entry ?\" "\"" table)
-    ;; Consistent with GNU Fortran -- see the manual.
+    ;; Consistent with GNU Fortran's default -- see the manual.
+    ;; The F77 standard imposes no rule on this issue.
     (modify-syntax-entry ?\\ "\\" table)
     ;; This might be better as punctuation, as for C, but this way you
     ;; can treat floating-point numbers as symbols.
@@ -446,6 +529,8 @@
     (define-key map "\C-c;"    'fortran-comment-region)
     (define-key map "\M-;"     'fortran-indent-comment)
     (define-key map "\M-\n"    'fortran-split-line)
+    (define-key map "\M-\C-n"  'fortran-end-of-block)
+    (define-key map "\M-\C-p"  'fortran-beginning-of-block)
     (define-key map "\M-\C-q"  'fortran-indent-subprogram)
     (define-key map "\C-c\C-w" 'fortran-window-create-momentarily)
     (define-key map "\C-c\C-r" 'fortran-column-ruler)
@@ -606,7 +691,7 @@
 
 Variables controlling indentation style and extra features:
 
-`comment-start'
+`fortran-comment-line-start'
   To use comments starting with `!', set this to the string \"!\".
 `fortran-do-indent'
   Extra indentation within DO blocks (default 3).
@@ -696,7 +781,8 @@
        '((fortran-font-lock-keywords
           fortran-font-lock-keywords-1
           fortran-font-lock-keywords-2
-          fortran-font-lock-keywords-3)
+          fortran-font-lock-keywords-3
+          fortran-font-lock-keywords-4)
          nil t ((?/ . "$/") ("_$" . "w"))
          fortran-beginning-of-subprogram))
   (set (make-local-variable 'font-lock-syntactic-keywords)
@@ -1059,6 +1145,84 @@
     (if (not not-last-statement)
  	'last-statement)))
 
+(defun fortran-looking-at-if-then ()
+  "Return non-nil if at the start of a line with an IF ... THEN statement."
+  ;; cf f90-looking-at-if-then.
+  (let ((p (point))
+        (i (fortran-beginning-if)))
+    (if i
+        (save-excursion
+          (goto-char i)
+          (beginning-of-line)
+          (= (point) p)))))
+
+;; Used in hs-special-modes-alist.
+(defun fortran-end-of-block (&optional num)
+  "Move point forward to the end of the current code block.
+With optional argument NUM, go forward that many balanced blocks.
+If NUM is negative, go backward to the start of a block.  Does
+not check for consistency of block types.  Interactively, pushes
+mark before moving point."
+  (interactive "p")
+  (if (interactive-p) (push-mark (point) t))
+  (and num (< num 0) (fortran-beginning-of-block (- num)))
+  (let ((case-fold-search t)
+        (count (or num 1)))
+    (end-of-line)
+    (while (and (> count 0)
+                (re-search-forward
+                 (concat "\\(" fortran-blocks-re
+                         (if fortran-check-all-num-for-matching-do
+                             "\\|^[ \t]*[0-9]+" "")
+                         "\\|continue\\|end\\)\\>")
+                 nil 'move))
+      (beginning-of-line)
+      (if (if (looking-at (concat "^[0-9 \t]*" fortran-if-start-re))
+              (fortran-looking-at-if-then)
+            (looking-at fortran-start-block-re))
+          (setq count (1+ count))
+        (if (or (looking-at fortran-end-block-re)
+                (and (or (looking-at "^[0-9 \t]*continue")
+                         (and fortran-check-all-num-for-matching-do
+                              (looking-at "[ \t]*[0-9]+")))
+                     (fortran-check-for-matching-do)))
+            (setq count (1- count))))
+      (end-of-line))
+    (if (> count 0) (error "Missing block end"))))
+
+(defun fortran-beginning-of-block (&optional num)
+  "Move point backwards to the start of the current code block.
+With optional argument NUM, go backward that many balanced
+blocks.  If NUM is negative, go forward to the end of a block.
+Does not check for consistency of block types.  Interactively,
+pushes mark before moving point."
+  (interactive "p")
+  (if (interactive-p) (push-mark (point) t))
+  (and num (< num 0) (fortran-end-of-block (- num)))
+  (let ((case-fold-search t)
+        (count (or num 1)))
+    (beginning-of-line)
+    (while (and (> count 0)
+                (re-search-backward
+                 (concat "\\(" fortran-blocks-re
+                         (if fortran-check-all-num-for-matching-do
+                             "\\|^[ \t]*[0-9]+" "")
+                         "\\|continue\\|end\\)\\>")
+                 nil 'move))
+      (beginning-of-line)
+      (if (if (looking-at (concat "^[0-9 \t]*" fortran-if-start-re))
+              (fortran-looking-at-if-then)
+            (looking-at fortran-start-block-re))
+          (setq count (1- count))
+        (if (or (looking-at fortran-end-block-re)
+                (and (or (looking-at "^[0-9 \t]*continue")
+                         (and fortran-check-all-num-for-matching-do
+                              (looking-at "[ \t]*[0-9]+")))
+                     (fortran-check-for-matching-do)))
+            (setq count (1+ count)))))
+    ;; Includes an un-named main program block.
+    (if (> count 0) (error "Missing block start"))))
+
 
 (defun fortran-blink-match (regex keyword find-begin)
   "From a line matching REGEX, blink matching KEYWORD statement line.
@@ -1679,8 +1843,9 @@
                             (1+ (point)))))
                   (if (re-search-forward "\\S\"\\s\"\\S\"" eol t)
                       (backward-char 2))
-                  ;; If the current string is longer than 72 - 6 chars,
-                  ;; break it at the fill column (else infinite loop).
+                  ;; If the current string is longer than (fill-column
+                  ;; - 6) chars, break it at the fill column (else
+                  ;; infinite loop).
                   (if (> (- (point) start)
                          (- fill-column 6 fortran-continuation-indent))
                       fcpoint
--- a/lisp/progmodes/glasses.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/glasses.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; glasses.el --- make cantReadThis readable
 
-;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
 
 ;; Author: Milan Zamazal <pdm@zamazal.org>
 ;; Maintainer: Milan Zamazal <pdm@zamazal.org>
@@ -251,7 +251,7 @@
   "Minor mode for making identifiers likeThis readable.
 When this mode is active, it tries to add virtual separators (like underscores)
 at places they belong to."
-  nil " o^o" nil
+  :group 'glasses :lighter " o^o"
   (save-excursion
     (save-restriction
       (widen)
--- a/lisp/progmodes/gud.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/gud.el	Mon Apr 04 16:43:15 2005 +0000
@@ -531,6 +531,9 @@
 
 (defvar gdb-first-prompt t)
 
+(defvar gud-filter-pending-text nil
+  "Non-nil means this is text that has been saved for later in `gud-filter'.")
+
 ;;;###autoload
 (defun gdb (command-line)
   "Run gdb on program FILE in buffer *gud-FILE*.
@@ -562,6 +565,7 @@
   (setq comint-prompt-regexp "^(.*gdb[+]?) *")
   (setq paragraph-start comint-prompt-regexp)
   (setq gdb-first-prompt t)
+  (setq gud-filter-pending-text nil)
   (run-hooks 'gdb-mode-hook))
 
 ;; One of the nice features of GDB is its impressive support for
@@ -2445,9 +2449,6 @@
   "Non-nil means don't process anything from the debugger right now.
 It is saved for when this flag is not set.")
 
-(defvar gud-filter-pending-text nil
-  "Non-nil means this is text that has been saved for later in `gud-filter'.")
-
 ;; These functions are responsible for inserting output from your debugger
 ;; into the buffer.  The hard work is done by the method that is
 ;; the value of gud-marker-filter.
@@ -2516,19 +2517,22 @@
 	      (gud-filter proc ""))))))
 
 (defvar gud-minor-mode-type nil)
+(defvar gud-overlay-arrow-position nil)
+(put 'gud-overlay-arrow-position 'overlay-arrow-string "=>")
+(add-to-list 'overlay-arrow-variable-list 'gud-overlay-arrow-position)
 
 (defun gud-sentinel (proc msg)
   (cond ((null (buffer-name (process-buffer proc)))
 	 ;; buffer killed
 	 ;; Stop displaying an arrow in a source file.
-	 (setq overlay-arrow-position nil)
+	 (setq gud-overlay-arrow-position nil)
 	 (set-process-buffer proc nil)
 	 (if (memq gud-minor-mode-type '(gdbmi gdba))
 	     (gdb-reset)
 	   (gud-reset)))
 	((memq (process-status proc) '(signal exit))
 	 ;; Stop displaying an arrow in a source file.
-	 (setq overlay-arrow-position nil)
+	 (setq gud-overlay-arrow-position nil)
 	 (with-current-buffer gud-comint-buffer
 	   (if (memq gud-minor-mode-type '(gdbmi gdba))
 	       (gdb-reset)
@@ -2611,13 +2615,13 @@
 	      (goto-line line)
 	      (setq pos (point))
 	      (setq overlay-arrow-string "=>")
-	      (or overlay-arrow-position
-		  (setq overlay-arrow-position (make-marker)))
-	      (set-marker overlay-arrow-position (point) (current-buffer)))
+	      (or gud-overlay-arrow-position
+		  (setq gud-overlay-arrow-position (make-marker)))
+	      (set-marker gud-overlay-arrow-position (point) (current-buffer)))
 	    (cond ((or (< pos (point-min)) (> pos (point-max)))
 		   (widen)
 		   (goto-char pos))))
-	  (if window (set-window-point window overlay-arrow-position))))))
+	  (if window (set-window-point window gud-overlay-arrow-position))))))
 
 ;; The gud-call function must do the right thing whether its invoking
 ;; keystroke is from the GUD buffer itself (via major-mode binding)
--- a/lisp/progmodes/hideif.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/hideif.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; hideif.el --- hides selected code within ifdef
 
-;; Copyright (C) 1988,1994,2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 2001, 2002, 2005 Free Software Foundation, Inc.
 
 ;; Author: Daniel LaLiberte <liberte@holonexus.org>
 ;; Maintainer: FSF
@@ -197,7 +197,7 @@
 	After `show-ifdefs', read-only status is restored to previous value.
 
 \\{hide-ifdef-mode-map}"
-  nil " Ifdef" nil
+  :group 'hide-ifdef :lighter " Ifdef"
   (if hide-ifdef-mode
       (progn
 	;; inherit global values
--- a/lisp/progmodes/python.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/python.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1098,28 +1098,40 @@
 (defvar python-preoutput-continuation nil
   "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.")
 
+(defvar python-preoutput-leftover nil)
+
 ;; Using this stops us getting lines in the buffer like
 ;; >>> ... ... >>>
 ;; Also look for (and delete) an `_emacs_ok' string and call
 ;; `python-preoutput-continuation' if we get it.
 (defun python-preoutput-filter (s)
   "`comint-preoutput-filter-functions' function: ignore prompts not at bol."
+  (when python-preoutput-leftover
+    (setq s (concat python-preoutput-leftover s))
+    (setq python-preoutput-leftover nil))
   (cond ((and (string-match (rx (and string-start (repeat 3 (any ".>"))
-				     " " string-end))
-			    s)
-	      (/= (let ((inhibit-field-text-motion t))
-		    (line-beginning-position))
-		  (point)))
+                                     " " string-end))
+                            s)
+              (/= (let ((inhibit-field-text-motion t))
+                    (line-beginning-position))
+                  (point)))
+         "")
+        ((string= s "_emacs_ok\n")
+         (when python-preoutput-continuation
+           (funcall python-preoutput-continuation)
+           (setq python-preoutput-continuation nil))
+         "")
+        ((string-match "_emacs_out \\(.*\\)\n" s)
+         (setq python-preoutput-result (match-string 1 s))
+         "")
+	((string-match ".*\n" s)
+	 s)
+	((or (eq t (compare-strings s nil nil "_emacs_ok\n" nil (length s)))
+	     (let ((end (min (length "_emacs_out ") (length s))))
+	       (eq t (compare-strings s nil end "_emacs_out " nil end))))
+	 (setq python-preoutput-leftover s)
 	 "")
-	((string= s "_emacs_ok\n")
-	 (when python-preoutput-continuation
-	   (funcall python-preoutput-continuation)
-	   (setq python-preoutput-continuation nil))
-	 "")
-	((string-match "_emacs_out \\(.*\\)\n" s)
-	 (setq python-preoutput-result (match-string 1 s))
-	 "")
-	(t s)))
+        (t s)))
 
 ;;;###autoload
 (defun run-python (&optional cmd noshow)
@@ -1359,7 +1371,9 @@
   (let ((proc (python-proc)))
     (python-send-string string)
     (setq python-preoutput-result nil)
-    (accept-process-output proc 5)
+    (while (progn
+	     (accept-process-output proc 5)
+	     python-preoutput-leftover))
     python-preoutput-result))
 
 ;; Fixme: try to make it work with point in the arglist.  Also, is
--- a/lisp/progmodes/scheme.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/scheme.el	Mon Apr 04 16:43:15 2005 +0000
@@ -90,7 +90,7 @@
     (modify-syntax-entry ?\] ")[  " st)
     (modify-syntax-entry ?{ "(}  " st)
     (modify-syntax-entry ?} "){  " st)
-    (modify-syntax-entry ?\| "  23" st)
+    (modify-syntax-entry ?\| "\" 23b" st)
 
     ;; Other atom delimiters
     (modify-syntax-entry ?\( "()  " st)
@@ -103,7 +103,7 @@
     ;; Special characters
     (modify-syntax-entry ?, "'   " st)
     (modify-syntax-entry ?@ "'   " st)
-    (modify-syntax-entry ?# "'  14" st)
+    (modify-syntax-entry ?# "' 14bn" st)
     (modify-syntax-entry ?\\ "\\   " st)
     st))
 
--- a/lisp/progmodes/tcl.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/tcl.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,7 @@
 ;;; tcl.el --- Tcl code editing commands for Emacs
 
-;; Copyright (C) 1994,98,1999,2000,01,02,2003,2004  Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+;;           Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Author: Tom Tromey <tromey@redhat.com>
@@ -469,10 +470,7 @@
 	 ;; Keywords.  Only recognized if surrounded by whitespace.
 	 ;; FIXME consider using "not word or symbol", not
 	 ;; "whitespace".
-	 (cons (concat "\\(\\s-\\|^\\)"
-		       ;; FIXME Use regexp-quote?
-		       (regexp-opt tcl-keyword-list t)
-		       "\\(\\s-\\|$\\)")
+	 (cons (concat "\\_<" (regexp-opt tcl-keyword-list t) "\\_>")
 	       2))))
 
 (if tcl-proc-regexp
@@ -1507,5 +1505,5 @@
 
 (provide 'tcl)
 
-;;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
+;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
 ;;; tcl.el ends here
--- a/lisp/progmodes/which-func.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/progmodes/which-func.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,7 @@
 ;;; which-func.el --- print current function in mode line
 
-;; Copyright (C) 1994, 1997, 1998, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1997, 1998, 2001, 2003, 2005
+;;           Free Software Foundation, Inc.
 
 ;; Author:   Alex Rezinsky <alexr@msil.sps.mot.com>
 ;;           (doesn't seem to be responsive any more)
@@ -251,7 +252,7 @@
     (when (and (null name)
 	       (boundp 'imenu--index-alist) (null imenu--index-alist)
 	       (null which-function-imenu-failed))
-      (imenu--make-index-alist)
+      (imenu--make-index-alist t)
       (unless imenu--index-alist
 	(make-local-variable 'which-function-imenu-failed)
 	(setq which-function-imenu-failed t)))
@@ -291,5 +292,5 @@
 
 (provide 'which-func)
 
-;;; arch-tag: fa8a55c7-bfe3-4ffc-95ab-01bf21796827
+;; arch-tag: fa8a55c7-bfe3-4ffc-95ab-01bf21796827
 ;;; which-func.el ends here
--- a/lisp/ps-mule.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/ps-mule.el	Mon Apr 04 16:43:15 2005 +0000
@@ -511,7 +511,10 @@
 
 (defsubst ps-mule-printable-p (charset)
   "Non-nil if characters in CHARSET is printable."
-  (ps-mule-get-font-spec charset 'normal))
+  ;; ASCII and Latin-1 are always printable.
+  (or (eq charset 'ascii)
+      (eq charset 'latin-iso8859-1)
+      (ps-mule-get-font-spec charset 'normal)))
 
 (defconst ps-mule-external-libraries
   '((builtin nil nil
@@ -824,7 +827,9 @@
 
 Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of
 the sequence."
-  (setq ps-mule-current-charset (charset-after from))
+  (let ((ch (char-after from)))
+    (setq ps-mule-current-charset
+	  (char-charset (or (aref ps-print-translation-table ch) ch))))
   (let* ((wrappoint (ps-mule-find-wrappoint
 		     from to (ps-avg-char-width 'ps-font-for-text)))
 	 (to (car wrappoint))
@@ -832,6 +837,10 @@
 			      (ps-font-alist 'ps-font-for-text))))
 	 (font-spec (ps-mule-get-font-spec ps-mule-current-charset font-type))
 	 (string (buffer-substring-no-properties from to)))
+    (dotimes (i (length string))
+      (let ((ch (aref ps-print-translation-table (aref string i))))
+	(if ch
+	    (aset string i ch))))
     (cond
      ((= from to)
       ;; We can't print any more characters in the current line.
@@ -1393,6 +1402,7 @@
 (defun ps-mule-show-warning (charsets from to header-footer-list)
   (let ((table (make-category-table))
 	(buf (current-buffer))
+	(max-unprintable-chars 15)
 	char-pos-list)
     (define-category ?u "Unprintable charset" table)
     (dolist (cs charsets)
@@ -1400,19 +1410,22 @@
     (with-category-table table
       (save-excursion
 	(goto-char from)
-	(while (and (< (length char-pos-list) 20)
+	(while (and (<= (length char-pos-list) max-unprintable-chars)
 		    (re-search-forward "\\cu" to t))
-	  (push (cons (preceding-char) (1- (point))) char-pos-list))
-	(setq char-pos-list (nreverse char-pos-list))))
+	  (push (cons (preceding-char) (1- (point))) char-pos-list))))
     (with-output-to-temp-buffer "*Warning*"
       (with-current-buffer standard-output
 	(when char-pos-list
 	  (let ((func #'(lambda (buf pos)
 			  (when (buffer-live-p buf)
 			    (pop-to-buffer buf)
-			    (goto-char pos)))))
+			    (goto-char pos))))
+		(more nil))
+	    (if (>= (length char-pos-list) max-unprintable-chars)
+		(setq char-pos-list (cdr char-pos-list)
+		      more t))
 	    (insert "These characters in the buffer can't be printed:\n")
-	    (dolist (elt char-pos-list)
+	    (dolist (elt (nreverse char-pos-list))
 	      (insert " ")
 	      (insert-text-button (string (car elt))
 				  :type 'help-xref
@@ -1421,8 +1434,10 @@
 				  'help-function func
 				  'help-args (list buf (cdr elt)))
 	      (insert ","))
-	    ;; Delete the last comma.
-	    (delete-char -1)
+	    (if more
+		(insert " and more...")
+	      ;; Delete the last comma.
+	      (delete-char -1))
 	    (insert "\nClick them to jump to the buffer position,\n"
 		    (substitute-command-keys "\
 or \\[universal-argument] \\[what-cursor-position] will give information about them.\n"))))
@@ -1469,13 +1484,15 @@
 	 (setq ps-mule-charset-list
 	       (delq 'ascii (delq 'eight-bit-control
 				  (delq 'eight-bit-graphic 
-					(find-charset-region from to))))
+					(find-charset-region
+					 from to ps-print-translation-table))))
 	       ps-mule-header-charsets
 	       (delq 'ascii (delq 'eight-bit-control
 				  (delq 'eight-bit-graphic 
 					(find-charset-string
 					 (mapconcat
-					  'identity header-footer-list ""))))))
+					  'identity header-footer-list "")
+					 ps-print-translation-table)))))
 	 (dolist (cs ps-mule-charset-list)
 	   (or (ps-mule-printable-p cs)
 	       (push cs unprintable-charsets)))
--- a/lisp/ps-print.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/ps-print.el	Mon Apr 04 16:43:15 2005 +0000
@@ -6150,6 +6150,19 @@
 
 (defvar ps-current-effect 0)
 
+(defvar ps-print-translation-table
+  (let ((tbl (make-char-table 'translation-table nil)))
+    (if (and (boundp 'ucs-mule-8859-to-mule-unicode)
+	   (char-table-p ucs-mule-8859-to-mule-unicode))
+	(map-char-table
+	 #'(lambda (k v) 
+	     (if (and v (eq (char-charset v) 'latin-iso8859-1) (/= k v))
+		 (aset tbl k v)))
+	 ucs-mule-8859-to-mule-unicode))
+    tbl)
+  "Translation table for PostScript printing.
+The default value is a table that translates non-Latin-1 Latin characters
+to the equivalent Latin-1 characters.")
 
 (defun ps-plot-region (from to font &optional fg-color bg-color effects)
   (or (equal font ps-current-font)
@@ -6240,11 +6253,17 @@
 	      (ps-plot 'ps-mule-plot-composition match-point (point) bg-color))
 
 	     ((> match 255)		; a multi-byte character
+	      (setq match (or (aref ps-print-translation-table match) match))
 	      (let* ((charset (char-charset match))
 		     (composition (ps-e-find-composition match-point to))
 		     (stop (if (nth 2 composition) (car composition) to)))
 		(or (eq charset 'composition)
-		    (while (and (< (point) stop) (eq (charset-after) charset))
+		    (while (and (< (point) stop)
+				(let ((ch (following-char)))
+				  (setq ch
+					(or (aref ps-print-translation-table ch)
+					    ch))
+				  (eq (char-charset ch) charset)))
 		      (forward-char 1)))
 		(ps-plot 'ps-mule-plot-string match-point (point) bg-color)))
 					; characters from ^@ to ^_ and
--- a/lisp/register.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/register.el	Mon Apr 04 16:43:15 2005 +0000
@@ -277,7 +277,7 @@
 Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
 START and END are buffer positions indicating what to copy."
   (interactive "cCopy to register: \nr\nP")
-  (set-register register (buffer-substring start end))
+  (set-register register (filter-buffer-substring start end))
   (if delete-flag (delete-region start end)))
 
 (defun append-to-register (register start end &optional delete-flag)
@@ -289,7 +289,7 @@
   (or (stringp (get-register register))
       (error "Register does not contain text"))
   (set-register register (concat (get-register register)
-			    (buffer-substring start end)))
+			    (filter-buffer-substring start end)))
   (if delete-flag (delete-region start end)))
 
 (defun prepend-to-register (register start end &optional delete-flag)
@@ -300,7 +300,7 @@
   (interactive "cPrepend to register: \nr\nP")
   (or (stringp (get-register register))
       (error "Register does not contain text"))
-  (set-register register (concat (buffer-substring start end)
+  (set-register register (concat (filter-buffer-substring start end)
 			    (get-register register)))
   (if delete-flag (delete-region start end)))
 
--- a/lisp/reveal.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/reveal.el	Mon Apr 04 16:43:15 2005 +0000
@@ -163,8 +163,8 @@
   (let ((map (make-sparse-keymap)))
     ;; Override the default move-beginning-of-line and move-end-of-line
     ;; which skips valuable invisible text.
-    (define-key map [?\C-a] 'beginning-of-line)
-    (define-key map [?\C-e] 'end-of-line)
+    (define-key map [remap move-beginning-of-line] 'beginning-of-line)
+    (define-key map [remap move-end-of-line] 'end-of-line)
     map))
 
 ;;;###autoload
@@ -175,6 +175,7 @@
 Interactively, with no prefix argument, toggle the mode.
 With universal prefix ARG (or if ARG is nil) turn mode on.
 With zero or negative ARG turn mode off."
+  :group 'reveal
   :lighter (global-reveal-mode nil " Reveal")
   :keymap reveal-mode-map
   (if reveal-mode
--- a/lisp/simple.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/simple.el	Mon Apr 04 16:43:15 2005 +0000
@@ -35,6 +35,13 @@
   (autoload 'widget-convert "wid-edit")
   (autoload 'shell-mode "shell"))
 
+(defcustom idle-update-delay 0.5
+  "*Idle time delay before updating various things on the screen.
+Various Emacs features that update auxiliary information when point moves
+wait this many seconds after Emacs becomes idle before doing an update."
+  :type 'number
+  :group 'display
+  :version "22.1")
 
 (defgroup killing nil
   "Killing and yanking commands."
@@ -105,6 +112,8 @@
   :group 'next-error
   :version "22.1")
 
+(defvar next-error-highlight-timer nil)
+
 (defvar next-error-last-buffer nil
   "The most recent next-error buffer.
 A buffer becomes most recent when its compilation, grep, or
@@ -293,7 +302,7 @@
 When turned on, cursor motion in the compilation, grep, occur or diff
 buffer causes automatic display of the corresponding source code
 location."
-  nil " Fol" nil
+  :group 'next-error :init-value " Fol"
   (if (not next-error-follow-minor-mode)
       (remove-hook 'post-command-hook 'next-error-follow-mode-post-command-hook t)
     (add-hook 'post-command-hook 'next-error-follow-mode-post-command-hook nil t)
@@ -2216,6 +2225,42 @@
   (reset-this-command-lengths)
   (restore-overriding-map))
 
+(defvar buffer-substring-filters nil
+  "List of filter functions for `filter-buffer-substring'.
+Each function must accept a single argument, a string, and return
+a string.  The buffer substring is passed to the first function
+in the list, and the return value of each function is passed to
+the next.  The return value of the last function is used as the
+return value of `filter-buffer-substring'.
+
+If this variable is nil, no filtering is performed.")
+
+(defun filter-buffer-substring (beg end &optional delete)
+  "Return the buffer substring between BEG and END, after filtering.
+The buffer substring is passed through each of the filter
+functions in `buffer-substring-filters', and the value from the
+last filter function is returned.  If `buffer-substring-filters'
+is nil, the buffer substring is returned unaltered.
+
+If DELETE is non-nil, the text between BEG and END is deleted
+from the buffer.
+
+Point is temporarily set to BEG before caling
+`buffer-substring-filters', in case the functions need to know
+where the text came from.
+
+This function should be used instead of `buffer-substring' or
+`delete-and-extract-region' when you want to allow filtering to
+take place.  For example, major or minor modes can use
+`buffer-substring-filters' to extract characters that are special
+to a buffer, and should not be copied into other buffers."
+  (save-excursion
+    (goto-char beg)
+    (let ((string (if delete (delete-and-extract-region beg end)
+                    (buffer-substring beg end))))
+      (dolist (filter buffer-substring-filters string)
+        (setq string (funcall filter string))))))
+
 ;;;; Window system cut and paste hooks.
 
 (defvar interprogram-cut-function nil
@@ -2396,7 +2441,7 @@
 text.  See `insert-for-yank'."
   (interactive "r")
   (condition-case nil
-      (let ((string (delete-and-extract-region beg end)))
+      (let ((string (filter-buffer-substring beg end t)))
 	(when string			;STRING is nil if BEG = END
 	  ;; Add that string to the kill ring, one way or another.
 	  (if (eq last-command 'kill-region)
@@ -2432,8 +2477,8 @@
 system cut and paste."
   (interactive "r")
   (if (eq last-command 'kill-region)
-      (kill-append (buffer-substring beg end) (< end beg))
-    (kill-new (buffer-substring beg end)))
+      (kill-append (filter-buffer-substring beg end) (< end beg))
+    (kill-new (filter-buffer-substring beg end)))
   (if transient-mark-mode
       (setq deactivate-mark t))
   nil)
@@ -2958,7 +3003,7 @@
 mark position to be lost.
 
 Normally, when a new mark is set, the old one should go on the stack.
-This is why most applications should use push-mark, not set-mark.
+This is why most applications should use `push-mark', not `set-mark'.
 
 Novice Emacs Lisp programmers often try to use the mark for the wrong
 purposes.  The mark saves a location for the user's convenience.
@@ -5186,14 +5231,6 @@
       (message "Delete key deletes %s"
 	       (if normal-erase-is-backspace "forward" "backward"))))
 
-(defcustom idle-update-delay 0.5
-  "*Idle time delay before updating various things on the screen.
-Various Emacs features that update auxiliary information when point moves
-wait this many seconds after Emacs becomes idle before doing an update."
-  :type 'number
-  :group 'display
-  :version "22.1")
-
 (defvar vis-mode-saved-buffer-invisibility-spec nil
   "Saved value of `buffer-invisibility-spec' when Visible mode is on.")
 
@@ -5205,6 +5242,7 @@
 Disabling Visible mode turns off that effect.  Visible mode
 works by saving the value of `buffer-invisibility-spec' and setting it to nil."
   :lighter " Vis"
+  :group 'editing-basics
   (when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec)
     (setq buffer-invisibility-spec vis-mode-saved-buffer-invisibility-spec)
     (kill-local-variable 'vis-mode-saved-buffer-invisibility-spec))
--- a/lisp/smerge-mode.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/smerge-mode.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts
 
-;; Copyright (C) 1999, 2000, 01, 03, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: revision-control merge diff3 cvs conflict
@@ -667,7 +667,7 @@
 (define-minor-mode smerge-mode
   "Minor mode to simplify editing output from the diff3 program.
 \\{smerge-mode-map}"
-  nil " SMerge" nil
+  :group 'smerge :lighter " SMerge"
   (when (and (boundp 'font-lock-mode) font-lock-mode)
     (set (make-local-variable 'font-lock-multiline) t)
     (save-excursion
--- a/lisp/startup.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/startup.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1008,8 +1008,27 @@
 using the mouse.\n\n"
 	   :face (variable-pitch :weight bold)
 	   "Important Help menu items:\n"
-	   :face variable-pitch "\
-Emacs Tutorial\tLearn-by-doing tutorial for using Emacs efficiently
+	   :face variable-pitch
+           (lambda ()
+             (let* ((en "TUTORIAL")
+                    (tut (or (get-language-info current-language-environment
+                                                'tutorial)
+                             en))
+                    (title (with-temp-buffer
+                             (insert-file-contents
+                              (expand-file-name tut data-directory)
+                              nil 0 256)
+                             (search-forward ".")
+                             (buffer-substring (point-min) (1- (point))))))
+               ;; If there is a specific tutorial for the current language
+               ;; environment and it is not English, append its title.
+               (concat
+                "Emacs Tutorial\tLearn how to use Emacs efficiently"
+                (if (string= en tut)
+                    ""
+                  (concat " (" title ")"))
+                "\n")))
+           :face variable-pitch "\
 Emacs FAQ\tFrequently asked questions and answers
 Read the Emacs Manual\tView the Emacs manual using Info
 \(Non)Warranty\tGNU Emacs comes with "
@@ -1073,14 +1092,18 @@
 
 (defun fancy-splash-insert (&rest args)
   "Insert text into the current buffer, with faces.
-Arguments from ARGS should be either strings or pairs `:face FACE',
+Arguments from ARGS should be either strings, functions called
+with no args that return a string, or pairs `:face FACE',
 where FACE is a valid face specification, as it can be used with
 `put-text-properties'."
   (let ((current-face nil))
     (while args
       (if (eq (car args) :face)
 	  (setq args (cdr args) current-face (car args))
-	(insert (propertize (car args)
+	(insert (propertize (let ((it (car args)))
+                              (if (functionp it)
+                                  (funcall it)
+                                it))
 			    'face current-face
 			    'help-echo fancy-splash-help-echo)))
       (setq args (cdr args)))))
--- a/lisp/textmodes/bibtex.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/bibtex.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; bibtex.el --- BibTeX mode for GNU Emacs
 
-;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004
+;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004, 2005
 ;;           Free Software Foundation, Inc.
 
 ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de>
@@ -784,41 +784,56 @@
                  (function :tag "Personalized function")))
 
 (defcustom bibtex-generate-url-list
-  '((("url" . ".*:.*"))
-    ;; Example of a complex setup.
-    (("journal" . "\\<\\(PR[ABCDEL]?\\|RMP\\)\\>")
-     "http://link.aps.org/abstract/"
-     ("journal" ".*" downcase)
-     "/v"
-     ("volume" ".*" 0)
-     "/p"
-     ("pages" "\\`\\([0-9]+\\)" 1)))
+  '((("url" . ".*:.*")))
   "List of schemes for generating the URL of a BibTeX entry.
 These schemes are used by `bibtex-url'.
 
-Each scheme is of the form ((FIELD . REGEXP) STEP...).
+Each scheme should have one of these forms:
+
+  ((FIELD . REGEXP))
+  ((FIELD . REGEXP) STEP...)
+  ((FIELD . REGEXP) STRING STEP...)
 
 FIELD is a field name as returned by `bibtex-parse-entry'.
-REGEXP is matched against the text of FIELD.  If the match succeeds, then
-this scheme is used.  If no STEPs are specified the matched text is used
-as the URL, otherwise the URL is built by concatenating the STEPs.
-
-A STEP can be a string or a list (FIELD REGEXP REPLACE) in which case
-the text of FIELD is matched against REGEXP, and is replaced with REPLACE.
-REPLACE can be a string, or a number (which selects the corresponding submatch)
-or a function called with the field's text as argument and with the
-`match-data' properly set.
-
-Case is always ignored.  Always remove the field delimiters."
+REGEXP is matched against the text of FIELD.  If the match succeeds,
+then this scheme is used.  If no STRING and STEPs are specified
+the matched text is used as the URL, otherwise the URL is built
+by evaluating STEPs.  If no STRING is specified the STEPs must result
+in strings which are concatenated.  Otherwise the resulting objects
+are passed through `format' using STRING as format control string.
+
+A STEP is a list (FIELD REGEXP REPLACE).  The text of FIELD
+is matched against REGEXP, and is replaced with REPLACE.
+REPLACE can be a string, or a number (which selects the corresponding
+submatch), or a function called with the field's text as argument
+and with the `match-data' properly set.
+
+Case is always ignored.  Always remove the field delimiters.
+
+The following is a complex example, see http://link.aps.org/linkfaq.html.
+
+   (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\")
+     \"http://link.aps.org/abstract/%s/v%s/p%s\"
+     (\"journal\" \".*\" downcase)
+     (\"volume\" \".*\" 0)
+     (\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))"
   :group 'bibtex
   :type '(repeat
-          (list :tag "Scheme"
+          (cons :tag "Scheme"
                 (cons :tag "Matcher" :extra-offset 4
                       (string :tag "BibTeX field")
 		      (regexp :tag "Regexp"))
-                (repeat :tag "Steps to generate URL" :inline t
-                        (choice
-                         (string :tag "Literal text")
+                (choice
+                 (const :tag "Take match as is" nil)
+                 (cons :tag "Formatted"
+                  (string :tag "Format control string")
+                  (repeat :tag "Steps to generate URL"
+                          (list (string :tag "BibTeX field")
+                                (regexp :tag "Regexp")
+                                (choice (string :tag "Replacement")
+                                        (integer :tag "Sub-match")
+                                        (function :tag "Filter")))))
+                 (repeat :tag "Concatenated"
                          (list (string :tag "BibTeX field")
 			       (regexp :tag "Regexp")
                                (choice (string :tag "Replacement")
@@ -2662,11 +2677,10 @@
       (let ((lst bibtex-generate-url-list) url)
         (goto-char start)
 	(while (and (not found)
-		    (setq url (caar lst)))
+		    (setq url (car (pop lst))))
 	  (setq found (and (bibtex-string= field (car url))
                            (re-search-forward (cdr url) end t)
-                           (>= (match-beginning 0) pnt))
-                lst (cdr lst))))
+                           (>= (match-beginning 0) pnt)))))
       (goto-char end))
     (if found (bibtex-button (match-beginning 0) (match-end 0)
                              'bibtex-url (match-beginning 0)))
@@ -4283,39 +4297,36 @@
           ;; Always ignore case,
           (case-fold-search t)
           (lst bibtex-generate-url-list)
-          field url scheme)
+          field url scheme obj fmt)
       (while (setq scheme (pop lst))
         (when (and (setq field (cdr (assoc-string (caar scheme)
 						  fields-alist t)))
                    ;; Always remove field delimiters
                    (progn (setq field (bibtex-remove-delimiters-string field))
                           (string-match (cdar scheme) field)))
-          (setq lst nil)
-	  (if (null (cdr scheme))
-	      (setq url (match-string 0 field)))
-          (dolist (step (cdr scheme))
-            (cond ((stringp step)
-                   (setq url (concat url step)))
-                  ((setq field (cdr (assoc-string (car step) fields-alist t)))
-                   ;; Always remove field delimiters
-                   (setq field (bibtex-remove-delimiters-string field))
-                   (if (string-match (nth 1 step) field)
-                       (setq field (cond
-                                    ((functionp (nth 2 step))
-                                     (funcall (nth 2 step) field))
-                                    ((numberp (nth 2 step))
-                                     (match-string (nth 2 step) field))
-                                    (t
-                                     (replace-match (nth 2 step) t nil field))))
-                     ;; If the scheme is set up correctly,
-                     ;; we should never reach this point
-                     (error "Match failed: %s" field))
-                   (setq url (concat url field)))
-                  ;; If the scheme is set up correctly,
-                  ;; we should never reach this point
-                  (t (error "Step failed: %s" step))))
-          (message "%s" url)
-          (browse-url url)))
+          (setq lst nil
+                scheme (cdr scheme)
+                url (if (null scheme) (match-string 0 field)
+                      (if (stringp (car scheme))
+                          (setq fmt (pop scheme)))
+                      (dolist (step scheme)
+                        ;; Always remove field delimiters
+                        (setq field (bibtex-remove-delimiters-string
+                                     (cdr (assoc-string (car step) fields-alist t))))
+                        (if (string-match (nth 1 step) field)
+                            (setq field (cond ((functionp (nth 2 step))
+                                               (funcall (nth 2 step) field))
+                                              ((numberp (nth 2 step))
+                                               (match-string (nth 2 step) field))
+                                              (t
+                                               (replace-match (nth 2 step) t nil field))))
+                          ;; If the scheme is set up correctly,
+                          ;; we should never reach this point
+                          (error "Match failed: %s" field))
+                        (push field obj))
+                      (if fmt (apply 'format fmt (nreverse obj))
+                        (apply 'concat (nreverse obj)))))
+          (browse-url (message "%s" url))))
       (unless url (message "No URL known.")))))
 
 
--- a/lisp/textmodes/enriched.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/enriched.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; enriched.el --- read and save files in text/enriched format
 
-;; Copyright (c) 1994, 1995, 1996, 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (c) 1994, 1995, 1996, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Boris Goldowsky <boris@gnu.org>
 ;; Keywords: wp, faces
@@ -183,7 +183,7 @@
 Commands:
 
 \\{enriched-mode-map}"
-  nil " Enriched" nil
+  :group 'enriched :lighter " Enriched"
   (cond ((null enriched-mode)
 	 ;; Turn mode off
 	 (setq buffer-file-format (delq 'text/enriched buffer-file-format))
--- a/lisp/textmodes/fill.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/fill.el	Mon Apr 04 16:43:15 2005 +0000
@@ -539,6 +539,17 @@
 	    ;; Make sure we take SOMETHING after the fill prefix if any.
 	    (fill-find-break-point linebeg)))))
 
+;; Like text-properties-at but don't include `composition' property.
+(defun fill-text-properties-at (pos)
+  (let ((l (text-properties-at pos))
+	prop-list)
+    (while l
+      (unless (eq (car l) 'composition)
+	(setq prop-list
+	      (cons (car l) (cons (cadr l) prop-list))))
+      (setq l (cddr l)))
+    prop-list))
+
 (defun fill-newline ()
   ;; Replace whitespace here with one newline, then
   ;; indent to left margin.
@@ -546,7 +557,7 @@
   (insert ?\n)
   ;; Give newline the properties of the space(s) it replaces
   (set-text-properties (1- (point)) (point)
-		       (text-properties-at (point)))
+		       (fill-text-properties-at (point)))
   (and (looking-at "\\( [ \t]*\\)\\(\\c|\\)?")
        (or (aref (char-category-set (or (char-before (1- (point))) ?\000)) ?|)
 	   (match-end 2))
--- a/lisp/textmodes/org.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/org.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,14 +1,14 @@
 ;; org.el --- Outline-based notes management and organizer 
 ;; Carstens outline-mode for keeping track of everything.
-;; Copyright (c) 2003, 2004, 2005 Free Software Foundation
-
+;; Copyright (c) 2004, 2005 Free Software Foundation
+;;
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 3.04
-
+;; Version: 3.05
+;;
 ;; This file is part of GNU Emacs.
-
+;;
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; the Free Software Foundation; either version 2, or (at your option)
@@ -75,10 +75,18 @@
 ;; -------------
 ;; The documentation of Org-mode can be found in the TeXInfo file.
 ;; This distribution also contains a PDF version of it.  At the homepage
-;; of Org-mode, you can find and read online the same text as HTML.
+;; of Org-mode, you can read online the same text online as HTML.
 ;;
 ;; Changes:
 ;; -------
+;; Version 3.05
+;;    - Agenda entries from the diary are linked to the diary file, so
+;;      adding and editing diary entries can be done directly from the agenda.
+;;    - Many calendar/diary commands available directly from agenda.
+;;    - Field copying in tables with S-RET does increment.
+;;    - C-c C-x C-v extracts the visible part of the buffer for printing.
+;;    - Moving subtrees up and down preserves the whitespace at the tree end.
+;;
 ;; Version 3.04
 ;;    - Table editor optimized to need fewer realignments, and to keep
 ;;      table shape when typing in fields.
@@ -213,7 +221,7 @@
 
 ;;; Customization variables
 
-(defvar org-version "3.04"
+(defvar org-version "3.05"
   "The version number of the file org.el.")
 (defun org-version ()
   (interactive)
@@ -241,7 +249,13 @@
   :group 'org)
 
 (defcustom org-startup-folded t
-  "Non-nil means, entering Org-mode will switch to OVERVIEW."
+  "Non-nil means, entering Org-mode will switch to OVERVIEW.
+This can also be configured on a per-file basis by adding one of
+the following lines anywhere in the buffer:
+
+   #+STARTUP: fold
+   #+STARTUP: nofold
+"
   :group 'org-startup
   :type 'boolean)
 
@@ -255,7 +269,13 @@
 (defcustom org-startup-with-deadline-check nil
   "Non-nil means, entering Org-mode will run the deadline check.
 This means, if you start editing an org file, you will get an
-immediate reminder of any due deadlines."
+immediate reminder of any due deadlines.
+This can also be configured on a per-file basis by adding one of
+the following lines anywhere in the buffer:
+
+   #+STARTUP: dlcheck
+   #+STARTUP: nodlcheck
+"
   :group 'org-startup
   :type 'boolean)
 
@@ -534,6 +554,11 @@
   :group 'org-agenda
   :type 'boolean)
 
+(defcustom org-fit-agenda-window t
+  "Non-nil means, change windo size of agenda to fit content."
+  :group 'org-agenda
+  :type 'boolean)
+
 (defcustom org-agenda-show-all-dates t
   "Non-nil means, `org-agenda' shows every day in the selected range.
 When nil, only the days which actually have entries are shown."
@@ -892,7 +917,7 @@
 very good at guessing when a re-align will be necessary, but you can always
 force one with `C-c C-c'.
 
-I you would like to use the optimized version in Org-mode, but the un-optimized
+If you would like to use the optimized version in Org-mode, but the un-optimized
 version in OrgTbl-mode, see the variable `orgtbl-optimized'.
 
 This variable can be used to turn on and off the table editor during a session,
@@ -971,6 +996,11 @@
   :group 'org-table
   :type 'boolean)
 
+(defcustom org-table-copy-increment t
+  "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
+  :group 'org-table
+  :type 'boolean)
+
 (defcustom org-table-tab-recognizes-table.el t
   "Non-nil means, TAB will automatically notice a table.el table.
 When it sees such a table, it moves point into it and - if necessary -
@@ -1260,7 +1290,7 @@
   "Face used for level 7 headlines."
   :group 'org-faces)
 
-(defface org-level-8-face ;;font-lock-string-face
+(defface org-level-8-face ;; font-lock-string-face
   '((((type tty) (class color)) (:foreground "green"))
     (((class color) (background light)) (:foreground "RosyBrown"))
     (((class color) (background dark)) (:foreground "LightSalmon"))
@@ -1276,8 +1306,24 @@
   "Face for deadlines and TODO keyords."
   :group 'org-faces)
 
-;; Inheritance does not work for xemacs, unfortunately.
-;; We just copy the definitions and waste some space....
+(defcustom org-fontify-done-headline nil
+  "Non-nil means, change the face of a headline if it is marked DONE.
+Normally, only the TODO/DONE keyword indicates the state of a headline.
+When this is non-nil, the headline after the keyword is set to the
+`org-headline-done-face' as an additional indication."
+  :group 'org-faces
+  :type 'boolean)
+
+(defface org-headline-done-face ;; font-lock-string-face
+  '((((type tty) (class color)) (:foreground "green"))
+    (((class color) (background light)) (:foreground "RosyBrown"))
+    (((class color) (background dark)) (:foreground "LightSalmon"))
+    (t (:italic t)))
+  "Face used to indicate that a headline is DONE.  See also the variable
+`org-fontify-done-headline'."
+  :group 'org-faces)
+
+;; Inheritance does not yet work for xemacs. So we just copy...
 
 (defface org-deadline-announce-face
   '((((type tty) (class color)) (:foreground "blue" :weight bold))
@@ -1341,11 +1387,11 @@
     ))
 (defvar org-n-levels (length org-level-faces))
 
-
 ;; Tell the compiler about dynamically scoped variables,
 ;; and variables from other packages
 (eval-when-compile
   (defvar zmacs-regions)
+  (defvar original-date)
   (defvar org-transient-mark-mode)
   (defvar org-old-auto-fill-inhibit-regexp)
   (defvar orgtbl-mode-menu)
@@ -1521,8 +1567,11 @@
           (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
                 '(1 'org-warning-face t))
           '("^#.*" (0 'font-lock-comment-face t))
-          (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>")
-                '(1 'org-done-face t))
+          (if org-fontify-done-headline
+              (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
+                    '(1 'org-done-face t) '(2 'org-headline-done-face t))
+            (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>")
+                  '(1 'org-done-face t)))
           '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
             (1 'org-table-face t))
           '("^[ \t]*\\(:.*\\)" (1 'org-table-face t)))))
@@ -1563,7 +1612,7 @@
 (defvar org-cycle-global-status nil)
 (defvar org-cycle-subtree-status nil)
 (defun org-cycle (&optional arg)
-  "Visibility cycling for org-mode.
+  "Visibility cycling for Org-mode.
 
 - When this function is called with a prefix argument, rotate the entire
   buffer through 3 states (global cycling)
@@ -1579,6 +1628,9 @@
                zoom in further.
   3. SUBTREE:  Show the entire subtree, including body text.
 
+- When there is a numeric prefix, go ARG levels up and do a `show-subtree',
+  keeping cursor position.
+
 - When point is not at the beginning of a headline, execute
   `indent-relative', like TAB normally does.  See the option
   `org-cycle-emulate-tab' for details.
@@ -1587,8 +1639,9 @@
   no headline in line 1, this function will act as if called with prefix arg."
   (interactive "P")
 
-  (if (and (bobp) (not (looking-at outline-regexp)))
-      ; special case:  use global cycling
+  (if (or (and (bobp) (not (looking-at outline-regexp)))
+          (equal arg '(4)))
+      ;; special case:  use global cycling
       (setq arg t))
 
   (cond
@@ -1600,7 +1653,7 @@
           (org-table-justify-field-maybe)
           (org-table-next-field))))
 
-   (arg ;; Global cycling
+   ((eq arg t) ;; Global cycling
 
     (cond
      ((and (eq last-command this-command)
@@ -1621,18 +1674,27 @@
 	    (if (bobp) (throw 'exit nil))))
 	(message "CONTENTS...done"))
       (setq org-cycle-global-status 'contents))
+
      ((and (eq last-command this-command)
 	   (eq org-cycle-global-status 'contents))
       ;; We just showed the table of contents - now show everything
       (show-all)
       (message "SHOW ALL")
       (setq org-cycle-global-status 'all))
+
      (t
       ;; Default action: go to overview
       (hide-sublevels 1)
       (message "OVERVIEW")
       (setq org-cycle-global-status 'overview))))
 
+   ((integerp arg)
+    ;; Show-subtree, ARG levels up from here.
+    (save-excursion
+      (org-back-to-heading)
+      (outline-up-heading arg)
+      (show-subtree)))
+
    ((save-excursion (beginning-of-line 1) (looking-at outline-regexp))
     ;; At a heading: rotate between three different views
     (org-back-to-heading)
@@ -1970,7 +2032,7 @@
       (save-excursion (outline-end-of-heading)
 		      (setq folded (org-invisible-p)))
       (outline-end-of-subtree))
-    (if (equal (char-after) ?\n) (forward-char 1))
+    (outline-next-heading)
     (setq end (point))
     ;; Find insertion point, with error handling
     (goto-char beg)
@@ -1982,7 +2044,10 @@
     (if (> arg 0)
 	;; Moving forward - still need to move over subtree
 	(progn (outline-end-of-subtree)
-	       (if (equal (char-after) ?\n) (forward-char 1))))
+               (outline-next-heading)
+               (if (not (or (looking-at (concat "^" outline-regexp))
+                            (bolp)))
+                   (newline))))
     (move-marker ins-point (point))
     (setq txt (buffer-substring beg end))
     (delete-region beg end)
@@ -1993,7 +2058,7 @@
 
 (defvar org-subtree-clip ""
   "Clipboard for cut and paste of subtrees.
-This is actually only a cpoy of the kill, because we use the normal kill
+This is actually only a copy of the kill, because we use the normal kill
 ring.  We need it to check if the kill was created by `org-copy-subtree'.")
 
 (defvar org-subtree-clip-folded nil
@@ -2906,6 +2971,14 @@
 (define-key org-agenda-mode-map "p" 'org-agenda-priority)
 (define-key org-agenda-mode-map "," 'org-agenda-priority)
 (define-key org-agenda-mode-map "i" 'org-agenda-diary-entry)
+(define-key org-agenda-mode-map "c" 'org-agenda-goto-calendar)
+(define-key org-agenda-mode-map "C" 'org-agenda-convert-date)
+(define-key org-agenda-mode-map "m" 'org-agenda-phases-of-moon)
+(define-key org-agenda-mode-map "M" 'org-agenda-phases-of-moon)
+(define-key org-agenda-mode-map "s" 'org-agenda-sunrise-sunset)
+(define-key org-agenda-mode-map "S" 'org-agenda-sunrise-sunset)
+(define-key org-agenda-mode-map "h" 'org-agenda-holidays)
+(define-key org-agenda-mode-map "H" 'org-agenda-holidays)
 (define-key org-agenda-mode-map "+" 'org-agenda-priority-up)
 (define-key org-agenda-mode-map "-" 'org-agenda-priority-down)
 (define-key org-agenda-mode-map [(right)] 'org-agenda-later)
@@ -2951,6 +3024,12 @@
      :style toggle :selected org-agenda-include-diary :active t]
     "--"
     ["New Diary Entry" org-agenda-diary-entry t]
+    ("Calendar commands"
+     ["Goto calendar" org-agenda-goto-calendar t]
+     ["Phases of the Moon" org-agenda-phases-of-moon t]
+     ["Sunrise/Sunset" org-agenda-sunrise-sunset t]
+     ["Holidays" org-agenda-holidays t]
+     ["Convert" org-agenda-convert-date t])
     "--"
     ["Quit" org-agenda-quit t]
     ["Exit and Release Buffers" org-agenda-exit t]
@@ -3110,7 +3189,7 @@
                          (d (- nt n1)))
                     (- sd (+ (if (< d 0) 7 0) d)))))
          (day-numbers (list start))
-         s e rtn rtnall file date d start-pos)
+         s e rtn rtnall file date d start-pos end-pos)
     (setq org-agenda-redo-command 
           (list 'org-agenda include-all start-day ndays))
     ;; Make the list of days
@@ -3146,7 +3225,9 @@
             s (point))
       (if (or (= d today)
               (and (not start-pos) (= d sd)))
-          (setq start-pos (point)))
+          (setq start-pos (point))
+        (if (and start-pos (not end-pos))
+            (setq end-pos (point))))
       (setq files org-agenda-files
             rtnall nil)
       (while (setq file (pop files))
@@ -3173,6 +3254,17 @@
             (put-text-property s (1- (point)) 'day d))))            
     (goto-char (point-min))
     (setq buffer-read-only t)
+    (if org-fit-agenda-window
+        (fit-window-to-buffer nil (/ (* (frame-height) 3) 4)
+                              (/ (frame-height) 2)))
+    (unless (and (pos-visible-in-window-p (point-min))
+                 (pos-visible-in-window-p (point-max)))
+      (goto-char (1- (point-max)))
+      (recenter -1)
+      (if (not (pos-visible-in-window-p (or start-pos 1)))
+          (progn
+            (goto-char (or start-pos 1))
+            (recenter 1))))
     (goto-char (or start-pos 1))
     (if (not org-select-agenda-window) (select-window win))
     (message "")))
@@ -3285,10 +3377,10 @@
   "Set the mode name to indicate all the small mode seetings."
   (setq mode-name
         (concat "Org-Agenda"
-                (if (equal org-agenda-ndays 1) " Day" "")
-                (if (equal org-agenda-ndays 7) " Week" "")
-                (if org-agenda-follow-mode " Follow" "")
-                (if org-agenda-include-diary " Diary" "")))
+                (if (equal org-agenda-ndays 1) " Day"    "")
+                (if (equal org-agenda-ndays 7) " Week"   "")
+                (if org-agenda-follow-mode     " Follow" "")
+                (if org-agenda-include-diary   " Diary"  "")))
   (force-mode-line-update))
 
 (defun org-agenda-post-command-hook ()
@@ -3299,26 +3391,33 @@
 (defun org-get-entries-from-diary (date)
   "Get the (emacs calendar) diary entries for DATE."
   (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*")
-         (diary-display-hook '(sort-diary-entries fancy-diary-display))
+         (diary-display-hook '(fancy-diary-display))
+         (list-diary-entries-hook 
+          (cons 'org-diary-default-entry list-diary-entries-hook))
          entries
-         (disable-org-agenda t))
+         (disable-org-diary t))
     (save-excursion
       (save-window-excursion
         (list-diary-entries date 1)))
     (if (not (get-buffer fancy-diary-buffer))
         (setq entries nil)
       (save-excursion
-        (set-buffer fancy-diary-buffer)
+        (switch-to-buffer fancy-diary-buffer)
         (setq buffer-read-only nil)
         (if (= (point-max) 1)
             ;; No entries
             (setq entries nil)
-          ;; Omit the date
-          (beginning-of-line 3)
-          (delete-region (point-min) (point))
+          ;; Omit the date and other unnecessary stuff
+          (org-agenda-cleanup-fancy-diary)
+          ;; Add prefix to each line and extend the text properties
+          (goto-char (point-min))
           (while (and (re-search-forward "^" nil t) (not (eobp)))
-            (replace-match "  Diary:     "))
-          (setq entries (buffer-substring (point-min) (- (point-max) 1))))
+            (replace-match "  Diary:     ")
+            (add-text-properties (point-at-bol) (point)
+                                 (text-properties-at (point))))
+          (if (= (point-max) 1)
+              (setq entries nil)
+            (setq entries (buffer-substring (point-min) (- (point-max) 1)))))
         (set-buffer-modified-p nil)
         (kill-buffer fancy-diary-buffer)))
     (when entries
@@ -3337,6 +3436,49 @@
                x)
              entries)))))
 
+(defun org-agenda-cleanup-fancy-diary ()
+  "Remove unwanted stuff in buffer created by fancy-diary-display.
+This gets rid of the date, the underline under the date, and
+the dummy entry installed by org-mode to ensure non-empty diary for each
+date."
+  (goto-char (point-min))
+  (if (looking-at ".*?:[ \t]*")
+      (progn
+        (replace-match "")
+        (re-search-forward "\n=+$" nil t)
+        (replace-match "")
+        (while (re-search-backward "^ +" nil t) (replace-match "")))
+    (re-search-forward "\n=+$" nil t)
+    (delete-region (point-min) (min (point-max) (1+ (match-end 0)))))
+  (if (re-search-forward "^Org-mode dummy\n?" nil t)
+      (replace-match "")))
+
+;; Advise the add-to-diary-list function to allow org to jump to
+;; diary entires. Wrapped into eval-after-load to avoid loading
+;; advice unnecessarily
+(eval-after-load "diary-lib"
+  '(defadvice add-to-diary-list (before org-mark-diary-entry activate)
+     "Make the position visible."
+     (if (and (boundp 'disable-org-diary)  ;; called from org-agenda
+              (stringp string)
+              (buffer-file-name))
+         (add-text-properties
+          0 (length string)
+          (list 'mouse-face 'highlight
+                'keymap org-agenda-keymap
+                'help-echo 
+                (format
+                 "mouse-2 or RET jump to diary file %s"
+                 (abbreviate-file-name (buffer-file-name)))
+                'org-agenda-diary-link t
+                'org-marker (org-agenda-new-marker (point-at-bol)))
+          string))))
+
+(defun org-diary-default-entry ()
+  "Add a dummy entry to the diary.
+Needed to avoid empty dates which mess up holiday display."
+  (add-to-diary-list original-date "Org-mode dummy" ""))
+
 (defun org-add-file (&optional file)
   "Add current file to the list of files in variable `org-agenda-files'.
 These are the files which are being checked for agenda entries.
@@ -3468,7 +3610,7 @@
          file rtn results)
     ;; If this is called during org-agenda, don't return any entries to
     ;; the calendar.  Org Agenda will list these entries itself.
-    (if (boundp 'disable-org-agenda) (setq files nil))
+    (if (boundp 'disable-org-diary) (setq files nil))
     (while (setq file (pop files))
       (setq rtn (apply 'org-agenda-get-day-entries file date args))
       (setq results (append results rtn)))
@@ -3864,7 +4006,6 @@
   (let* ((pri (get-text-property (point-at-bol) 'priority)))
     (message "Priority is %d" (if pri pri -1000))))
 
-
 (defun org-agenda-goto ()
   "Go to the Org-mode file which contains the item at point."
   (interactive)
@@ -3875,10 +4016,11 @@
     (switch-to-buffer-other-window buffer)
     (widen)
     (goto-char pos)
-    (org-show-hidden-entry)
-    (save-excursion
-      (and (outline-next-heading)
-           (org-flag-heading nil)))))  ; show the next heading
+    (when (eq major-mode 'org-mode)
+      (org-show-hidden-entry)
+      (save-excursion
+        (and (outline-next-heading)
+             (org-flag-heading nil))))))  ; show the next heading
 
 (defun org-agenda-switch-to ()
   "Go to the Org-mode file which contains the item at point."
@@ -3891,10 +4033,11 @@
     (delete-other-windows)
     (widen)
     (goto-char pos)
-    (org-show-hidden-entry)
-    (save-excursion
-      (and (outline-next-heading)
-           (org-flag-heading nil)))))  ; show the next heading
+    (when (eq major-mode 'org-mode)
+      (org-show-hidden-entry)
+      (save-excursion
+        (and (outline-next-heading)
+             (org-flag-heading nil))))))  ; show the next heading
 
 (defun org-agenda-goto-mouse (ev)
   "Go to the Org-mode file which contains the deadline at the mouse click."
@@ -3923,12 +4066,18 @@
   (mouse-set-point ev)
   (org-agenda-show))
 
+(defun org-agenda-check-no-diary ()
+  "Check if the entry is a diary link and abort if yes."
+  (if (get-text-property (point) 'org-agenda-diary-link)
+      (org-agenda-error)))
+
 (defun org-agenda-error ()
   (error "Command not allowed in this line."))
 
 (defun org-agenda-todo ()
   "Cycle TODO state of line at point, also in Org-mode file."
   (interactive)
+  (org-agenda-check-no-diary)
   (let* ((props (text-properties-at (point)))
          (col (current-column))
          (marker (or (get-text-property (point) 'org-marker)
@@ -3971,6 +4120,7 @@
 (defun org-agenda-priority (&optional force-direction)
   "Set the priority of line at point, also in Org-mode file."
   (interactive)
+  (org-agenda-check-no-diary)
   (let* ((props (text-properties-at (point)))
          (col (current-column))
          (marker (or (get-text-property (point) 'org-marker)
@@ -4003,6 +4153,7 @@
 (defun org-agenda-date-later (arg &optional what)
   "Change the date of this item to one day later."
   (interactive "p")
+  (org-agenda-check-no-diary)
   (let* ((marker (or (get-text-property (point) 'org-marker)
                      (org-agenda-error)))
          (buffer (marker-buffer marker))
@@ -4022,8 +4173,9 @@
   (org-agenda-date-later (- arg) what))
 
 (defun org-agenda-date-today (arg)
-  "Change the date of this item to one day later."
+  "Change the date of this item to today."
   (interactive "p")
+  (org-agenda-check-no-diary)
   (let* ((marker (or (get-text-property (point) 'org-marker)
                      (org-agenda-error)))
          (buffer (marker-buffer marker))
@@ -4084,7 +4236,91 @@
                      (get-text-property point 'day))))
             (call-interactively cmd))
         (fset 'calendar-cursor-to-date oldf)))))
-  
+
+
+(defun org-agenda-execute-calendar-command (cmd)
+  "Execute a calendar command from the agenda, with the date associated to
+the cursor position."
+  (require 'diary-lib)
+  (unless (get-text-property (point) 'day)
+    (error "Don't know which date to use for calendar command"))
+  (let* ((oldf (symbol-function 'calendar-cursor-to-date))
+         (point (point))
+         (mark (or (mark t) (point)))
+         (date (calendar-gregorian-from-absolute
+                (get-text-property point 'day)))
+         (displayed-day (extract-calendar-day date))
+         (displayed-month (extract-calendar-month date))
+         (displayed-year (extract-calendar-year date)))
+      (unwind-protect
+          (progn
+            (fset 'calendar-cursor-to-date
+                  (lambda (&optional error)
+                    (calendar-gregorian-from-absolute 
+                     (get-text-property point 'day))))
+            (call-interactively cmd))
+        (fset 'calendar-cursor-to-date oldf))))
+
+(defun org-agenda-phases-of-moon ()
+  "Display the phases of the moon for 3 month around cursor date."
+  (interactive)
+  (org-agenda-execute-calendar-command 'calendar-phases-of-moon))
+
+(defun org-agenda-holidays ()
+  "Display the holidays for 3 month around cursor date."
+  (interactive)
+  (org-agenda-execute-calendar-command 'list-calendar-holidays))
+
+(defun org-agenda-sunrise-sunset (arg)
+  "Display sunrise and sunset for the cursor date.
+Latitude and longitude can be specified with the variables
+`calendar-latitude' and `calendar-longitude'.  When called with prefix
+argument, location will be prompted for."
+  (interactive "P")
+  (let ((calendar-longitude (if arg nil calendar-longitude))
+        (calendar-latitude  (if arg nil calendar-latitude))
+        (calendar-location-name nil))
+    (org-agenda-execute-calendar-command 'calendar-sunrise-sunset)))
+
+(defun org-agenda-goto-calendar ()
+  "Open the Emacs calendar with the date at the cursor."
+  (interactive)
+  (let* ((day (or (get-text-property (point) 'day)
+                  (error "Don't know which date to open in calendar")))
+         (date (calendar-gregorian-from-absolute day)))
+    (calendar)
+    (calendar-goto-date date)))
+
+(defun org-agenda-convert-date ()
+  (interactive)
+  (let ((day (get-text-property (point) 'day))
+        date s)
+    (unless day
+      (error "Don't know which date to convert"))
+    (setq date (calendar-gregorian-from-absolute day))
+    (require 'cal-julian)
+    (require 'cal-hebrew)
+    (require 'cal-islam)
+    (require 'cal-french)
+    (require 'cal-mayan)
+    (require 'cal-coptic)
+    (require 'cal-persia)
+    (require 'cal-china)
+    (setq s (concat 
+             "Gregorian:  " (calendar-date-string date) "\n"
+             "Julian:     " (calendar-julian-date-string date) "\n"
+             "Astronomic: " (calendar-astro-date-string date) " (at noon UTC)\n"
+             "Hebrew:     " (calendar-hebrew-date-string date) "\n"
+             "Islamic:    " (calendar-islamic-date-string date) "\n"
+             "French:     " (calendar-french-date-string date) "\n"
+             "Maya:       " (calendar-mayan-date-string date) "\n"
+             "Coptic:     " (calendar-coptic-date-string date) "\n"
+             "Persian:    " (calendar-persian-date-string date) "\n"
+             "Chineese:   " (calendar-chinese-date-string date) "\n"))
+    (with-output-to-temp-buffer "*Dates*"
+      (princ s))
+    (fit-window-to-buffer (get-buffer-window "*Dates*"))))
+
 ;;; Link Stuff
 
 (defun org-find-file-at-mouse (ev)
@@ -5087,14 +5323,23 @@
       (skip-chars-backward "^|\n\r")
       (if (looking-at " ") (forward-char 1)))))
 
-(defun org-table-copy-from-above (n)
-  "Copy into the current column the nearest non-empty field from above.
-With prefix argument N, take the Nth non-empty field."
+(defun org-table-copy-down (n)
+  "Copy a field down in the current column.
+If the field at the cursor is empty, copy into it the content of the nearest
+non-empty field above.  With argument N, use the Nth non-empty field.
+If the current fields is not empty, it is copied down to the next row, and
+the cursor is moved with it.  Therefore, repeating this command causes the
+column to be filled row-by-row.  
+If the variable `org-table-copy-increment' is non-nil and the field is an
+integer, it will be incremented while copying."
   (interactive "p")
-  (let ((colpos (org-table-current-column))
-        (beg (org-table-begin))
-        txt)
+  (let* ((colpos (org-table-current-column))
+         (field (org-table-get-field))
+         (non-empty (string-match "[^ \t]" field))
+         (beg (org-table-begin))
+         txt)
     (org-table-check-inside-data-field)
+    (if non-empty (progn (org-table-next-row) (org-table-blank-field)))
     (if (save-excursion
           (setq txt
                 (catch 'exit
@@ -5103,10 +5348,13 @@
                                                     beg t))
                     (org-table-goto-column colpos t)
                     (if (and (looking-at
-                              "|[ \t]*\\([^| \t][^|]*[^| \t]\\)[ \t]*|")
+                              "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|")
                              (= (setq n (1- n)) 0))
                         (throw 'exit (match-string 1)))))))
         (progn
+          (if (and org-table-copy-increment
+                   (string-match "^[0-9]+$" txt))
+              (setq txt (format "%d" (+ (string-to-int txt) 1))))
           (insert txt)
           (org-table-align))
       (error "No non-empty field found"))))
@@ -6039,7 +6287,7 @@
          ([(shift tab)]        org-table-previous-field)
          ("\C-c\C-c"           org-table-align)
          ([(return)]           org-table-next-row)
-         ([(shift return)]     org-table-copy-from-above)
+         ([(shift return)]     org-table-copy-down)
          ([(meta return)]      org-table-wrap-region)
          ("\C-c\C-q"           org-table-wrap-region)
          ("\C-c?"              org-table-current-column)
@@ -6157,7 +6405,7 @@
     "--"
     ["Blank field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"]
     ["Copy field from above"
-     org-table-copy-from-above :active (org-at-table-p) :keys "S-RET"]
+     org-table-copy-down :active (org-at-table-p) :keys "S-RET"]
     "--"
     ("Column"
      ["Move column left" org-metaleft :active (org-at-table-p) :keys "M-<left>"]
@@ -6678,7 +6926,57 @@
       (setq char (nth (- umax level) (reverse org-ascii-underline)))
       (if org-export-with-section-numbers
           (setq title (concat (org-section-number level) " " title)))
-      (insert title "\n" (make-string (length title) char) "\n"))))
+      (insert title "\n" (make-string (string-width title) char) "\n"))))
+
+(defun org-export-copy-visible (&optional arg)
+  "Copy the visible part of the buffer to another buffer, for printing.
+Also removes the first line of the buffer it is specifies a mode,
+and all options lines."
+  (interactive "P")
+  (let* ((filename (concat (file-name-sans-extension (buffer-file-name))
+                           ".txt"))
+         (buffer (find-file-noselect filename))
+         (ore (concat 
+               (org-make-options-regexp
+                '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" "STARTUP"
+                  "TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"))
+               (if org-noutline-p "\\(\n\\|$\\)" "")))
+         s e)
+    (save-excursion
+      (set-buffer buffer)
+      (erase-buffer)
+      (text-mode))
+    (save-excursion
+      (setq s (goto-char (point-min)))
+      (while (not (= (point) (point-max)))
+        (goto-char (org-find-invisible))
+        (append-to-buffer buffer s (point))
+        (setq s (goto-char (org-find-visible)))))
+    (switch-to-buffer-other-window buffer)
+    (newline)
+    (goto-char (point-min))
+    (if (looking-at ".*-\\*- mode:.*\n")
+        (replace-match ""))
+    (while (re-search-forward ore nil t)
+      (replace-match ""))
+    (goto-char (point-min))))
+
+(defun org-find-visible ()
+  (if (featurep 'noutline)
+      (let ((s (point)))
+        (while (and (not (= (point-max) (setq s (next-overlay-change s))))
+                    (get-char-property s 'invisible)))
+        s)
+    (skip-chars-forward "^\n")
+    (point)))
+(defun org-find-invisible ()
+  (if (featurep 'noutline)
+      (let ((s (point)))
+        (while (and (not (= (point-max) (setq s (next-overlay-change s))))
+                    (not (get-char-property s 'invisible))))
+        s)
+    (skip-chars-forward "^\r")
+    (point)))
 
 ;; HTML
 
@@ -7423,7 +7721,7 @@
 (define-key org-mode-map [(shift tab)]    'org-shifttab)
 (define-key org-mode-map "\C-c\C-c"       'org-ctrl-c-ctrl-c)
 (define-key org-mode-map [(return)]       'org-return)
-(define-key org-mode-map [(shift return)] 'org-table-copy-from-above)
+(define-key org-mode-map [(shift return)] 'org-table-copy-down)
 (define-key org-mode-map [(meta return)]  'org-meta-return)
 (define-key org-mode-map [(control up)]   'org-move-line-up)
 (define-key org-mode-map [(control down)] 'org-move-line-down)
@@ -7436,6 +7734,10 @@
 (define-key org-mode-map "\C-c\C-q"       'org-table-wrap-region)
 (define-key org-mode-map "\C-c\C-xa"      'org-export-as-ascii)
 (define-key org-mode-map "\C-c\C-x\C-a"   'org-export-as-ascii)
+(define-key org-mode-map "\C-c\C-xv"      'org-export-copy-visible)
+(define-key org-mode-map "\C-c\C-x\C-v"   'org-export-copy-visible)
+(define-key org-mode-map "\C-c\C-xo"      'org-export-as-opml)
+(define-key org-mode-map "\C-c\C-x\C-o"   'org-export-as-opml)
 (define-key org-mode-map "\C-c\C-xt"      'org-insert-export-options-template)
 (define-key org-mode-map "\C-c:"          'org-toggle-fixed-width-section)
 (define-key org-mode-map "\C-c\C-xh"      'org-export-as-html)
@@ -7444,7 +7746,7 @@
 
 ;; FIXME:  Do we really need to save match data in these commands?
 ;; I would like to remove it in order to minimize impact.
-;; Self-insert already does not preserve it.  How much resources does this take???
+;; Self-insert already does not preserve it. How much resources used by this???
 
 (defsubst org-table-p ()
   (if (and (eq major-mode 'org-mode) font-lock-mode)
@@ -7469,28 +7771,7 @@
 
 ;; FIXME:
 ;; The following two functions might still be optimized to trigger
-;; re-alignment less frequently.  Right now they raise the flag each time
-;; (through before-change-functions).  Here is how this could be minimized:
-;; Basically, check if the non-white field width before deletion is
-;; equal to the column width.  If yes, the delete should trigger a
-;; re-align.  I have not implemented this so far because it is not so
-;; easy, requires grabbing the field etc.  So it may finally have some
-;; impact on typing performance which we don't want.
-
-;; The defsubst is only a draft, untested...
-
-;; Maybe it is not so important to get rid of realigns - maybe the most
-;; important aspect is to keep the table look noce as long as possible,
-;; which is already achieved...
-
-;(defsubst org-check-delete-triggers-realign ()
-;  (let ((pos (point)))
-;    (skip-chars-backward "^|\n")
-;    (and (looking-at " *\\(.*?\\) *|")
-;         (= (nth (1- (org-table-current-column))
-;                 org-table-last-column-widths)
-;            (- (match-end 1) (match-beginning 1)))
-;         (setq org-table-may-need-update t))))
+;; re-alignment less frequently.
 
 (defun org-delete-backward-char (N)
   "Like `delete-backward-char', insert whitespace at field end in tables.
@@ -7769,7 +8050,7 @@
      ["Next row" org-return (org-at-table-p)]
      "--"
      ["Blank field" org-table-blank-field (org-at-table-p)]
-     ["Copy field from above" org-table-copy-from-above (org-at-table-p)]
+     ["Copy field from above" org-table-copy-down (org-at-table-p)]
      "--"
      ("Column"
       ["Move column left" org-metaleft (org-at-table-p)]
@@ -7807,8 +8088,10 @@
     "--"
     ("Export"
      ["ASCII" org-export-as-ascii t]
+     ["Extract visible text" org-export-copy-visible t]
      ["HTML"  org-export-as-html t]
      ["HTML, and open" org-export-as-html-and-open t]
+     ["OPML" org-export-as-opml nil]
      "--"
      ["Option template" org-insert-export-options-template t]
      ["Toggle fixed width" org-toggle-fixed-width-section t])
@@ -8098,3 +8381,5 @@
 
 ;;; org.el ends here
 
+
+
--- a/lisp/textmodes/refill.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/refill.el	Mon Apr 04 16:43:15 2005 +0000
@@ -221,7 +221,9 @@
 When Refill mode is on, the current paragraph will be formatted when
 changes are made within it.  Self-inserting characters only cause
 refilling if they would cause auto-filling."
-  nil " Refill" '(("\177" . backward-delete-char-untabify))
+  :group 'refill
+  :lighter " Refill"
+  :keymap '(("\177" . backward-delete-char-untabify))
   ;; Remove old state if necessary
   (when refill-ignorable-overlay
     (delete-overlay refill-ignorable-overlay)
--- a/lisp/textmodes/sgml-mode.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/sgml-mode.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1804,7 +1804,7 @@
 
 <p>Paragraphs only need an opening tag.  Line breaks and multiple spaces are
 ignored unless the text is <pre>preformatted.</pre>  Text can be marked as
-<b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal  M-g  or
+<b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal M-o or
 Edit/Text Properties/Face commands.
 
 Pages can have <a name=\"SOMENAME\">named points</a> and can link other points
--- a/lisp/textmodes/tex-mode.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/textmodes/tex-mode.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1562,8 +1562,9 @@
 	    (concat
 	     (if file
 		 (if star (concat (substring cmd 0 star)
-				  file (substring cmd (1+ star)))
-		   (concat cmd " " file))
+				  (shell-quote-argument file)
+				  (substring cmd (1+ star)))
+		   (concat cmd " " (shell-quote-argument file)))
 	       cmd)
 	     (if background "&" ""))))
       ;; Switch to buffer before checking for subproc output in it.
@@ -1886,8 +1887,8 @@
 	    (prog1 (file-name-directory (expand-file-name file))
 	      (setq file (file-name-nondirectory file))))
 	  (root (file-name-sans-extension file))
-	  (fspec (list (cons ?r (comint-quote-filename root))
-		       (cons ?f (comint-quote-filename file))))
+	  (fspec (list (cons ?r (shell-quote-argument root))
+		       (cons ?f (shell-quote-argument file))))
 	  (default (tex-compile-default fspec)))
      (list default-directory
 	   (completing-read
@@ -1908,14 +1909,14 @@
          (compile-command
           (if star
 	      (concat (substring command 0 star)
-		      (comint-quote-filename file)
+		      (shell-quote-argument file)
 		      (substring command (1+ star)))
             (concat command " "
 		    tex-start-options
 		    (if (< 0 (length tex-start-commands))
 			(concat
 			 (shell-quote-argument tex-start-commands) " "))
-		    (comint-quote-filename file)))))
+		    (shell-quote-argument file)))))
     (tex-send-tex-command compile-command dir)))
 
 (defun tex-send-tex-command (cmd &optional dir)
--- a/lisp/tooltip.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/tooltip.el	Mon Apr 04 16:43:15 2005 +0000
@@ -130,7 +130,7 @@
 
 (defcustom tooltip-gud-display
   '((eq (tooltip-event-buffer tooltip-gud-event)
-	(marker-buffer overlay-arrow-position)))
+	(marker-buffer gud-overlay-arrow-position)))
   "List of forms determining where GUD tooltips are displayed.
 
 Forms in the list are combined with AND.  The default is to display
@@ -469,27 +469,7 @@
 (defun tooltip-show-help-function (msg)
   "Function installed as `show-help-function'.
 MSG is either a help string to display, or nil to cancel the display."
-  (let ((previous-help tooltip-help-message)
-	mp pos)
-    (if (and mouse-1-click-follows-link
-	     (stringp msg)
-	     (save-match-data
-	       (string-match "^mouse-2" msg))
-	     (setq mp (mouse-pixel-position))
-	     (consp (setq pos (cdr mp)))
-	     (car pos) (>= (car pos) 0)
-	     (cdr pos) (>= (cdr pos) 0)
-	     (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
-	     (windowp (posn-window pos)))
-	(with-current-buffer (window-buffer (posn-window pos))
-	  (if (mouse-on-link-p pos)
-	      (setq msg (concat
-		    (cond
-		     ((eq mouse-1-click-follows-link 'double) "double-")
-		     ((and (integerp mouse-1-click-follows-link)
-			   (< mouse-1-click-follows-link 0)) "Long ")
-		     (t ""))
-		    "mouse-1" (substring msg 7))))))
+  (let ((previous-help tooltip-help-message))
     (setq tooltip-help-message msg)
     (cond ((null msg)
 	   ;; Cancel display.  This also cancels a delayed tip, if
--- a/lisp/url/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/url/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,7 @@
+2005-04-04  Lute Kamstra  <lute@gnu.org>
+
+	* url-handlers.el (url-handler-mode): Specify :group.
+
 2005-02-26  James Cloos  <cloos@jhcloos.com>  (tiny change)
 
 	* url-history.el (url-have-visited-url): Don't barf if
--- a/lisp/url/url-handlers.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/url/url-handlers.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; url-handlers.el --- file-name-handler stuff for URL loading
 
-;; Copyright (c) 1996, 1997, 1998, 1999, 2004  Free Software Foundation, Inc.
+;; Copyright (c) 1996, 1997, 1998, 1999, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Keywords: comm, data, processes, hypermedia
 
@@ -106,7 +106,7 @@
 ;;;###autoload
 (define-minor-mode url-handler-mode
   "Use URL to handle URL-like file names."
-  :global t
+  :global t :group 'url
   (if (not (boundp 'file-name-handler-alist))
       ;; Can't be turned ON anyway.
       (setq url-handler-mode nil)
--- a/lisp/url/vc-dav.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/url/vc-dav.el	Mon Apr 04 16:43:15 2005 +0000
@@ -21,6 +21,11 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+
+;;; Commentary:
+
+;;; Code:
+
 (require 'url)
 (require 'url-dav)
 
@@ -175,4 +180,5 @@
 
 (provide 'vc-dav)
 
-;;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e
+;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e
+;;; vc-dav.el ends here
--- a/lisp/vc-hooks.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/vc-hooks.el	Mon Apr 04 16:43:15 2005 +0000
@@ -481,7 +481,9 @@
   "Return non-nil if FILE has not changed since the last checkout."
   (let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
         (lastmod (nth 5 (file-attributes file))))
-    (if checkout-time
+    (if (and checkout-time
+             ;; Tramp and Ange-FTP return this when they don't know the time.
+             (not (equal lastmod '(0 0))))
         (equal checkout-time lastmod)
       (let ((unchanged (vc-call workfile-unchanged-p file)))
         (vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0))
--- a/lisp/vc.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/vc.el	Mon Apr 04 16:43:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; vc.el --- drive a version-control system from within Emacs
 
 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;;   2000, 2001, 2003, 2004  Free Software Foundation, Inc.
+;;   2000, 2001, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author:     FSF (see below for full credits)
 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
@@ -962,8 +962,10 @@
 	    ;; start-process does not support remote execution
 	    (setq okstatus nil))
 	(if (eq okstatus 'async)
-	    (let ((proc (apply 'start-process command (current-buffer) command
-			       squeezed)))
+	    (let ((proc
+		   (let ((process-connection-type nil))
+		     (apply 'start-process command (current-buffer) command
+			    squeezed))))
               (unless (active-minibuffer-window)
                 (message "Running %s in the background..." command))
 	      ;;(set-process-sentinel proc (lambda (p msg) (delete-process p)))
--- a/lisp/wdired.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/wdired.el	Mon Apr 04 16:43:15 2005 +0000
@@ -330,7 +330,8 @@
   (set-buffer-modified-p nil)
   (setq buffer-undo-list nil)
   (run-hooks 'wdired-mode-hook)
-  (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished")))
+  (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished \
+or \\[wdired-abort-changes] to abort changes")))
 
 
 ;; Protect the buffer so only the filenames can be changed, and put
--- a/lisp/window.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/window.el	Mon Apr 04 16:43:15 2005 +0000
@@ -397,20 +397,13 @@
 
 (defun window-buffer-height (window)
   "Return the height (in screen lines) of the buffer that WINDOW is displaying."
-  (save-excursion
-    (set-buffer (window-buffer window))
-    (goto-char (point-min))
-    (let ((ignore-final-newline
-           ;; If buffer ends with a newline, ignore it when counting height
-           ;; unless point is after it.
-           (and (not (eobp)) (eq ?\n (char-after (1- (point-max)))))))
-      (+ 1 (nth 2 (compute-motion (point-min)
-                                  '(0 . 0)
-                                  (- (point-max) (if ignore-final-newline 1 0))
-                                  (cons 0 100000000)
-                                  nil
-                                  nil
-                                  window))))))
+  (with-current-buffer (window-buffer window)
+    (max 1
+	 (count-screen-lines (point-min) (point-max)
+			     ;; If buffer ends with a newline, ignore it when
+			     ;; counting height unless point is after it.
+			     (eobp)
+			     window))))
 
 (defun count-screen-lines (&optional beg end count-final-newline window)
   "Return the number of screen lines in the region.
--- a/lisp/xt-mouse.el	Mon Mar 28 04:24:51 2005 +0000
+++ b/lisp/xt-mouse.el	Mon Apr 04 16:43:15 2005 +0000
@@ -155,8 +155,11 @@
   "Toggle XTerm mouse mode.
 With prefix arg, turn XTerm mouse mode on iff arg is positive.
 
-Turn it on to use emacs mouse commands, and off to use xterm mouse commands."
-  nil " Mouse" nil :global t
+Turn it on to use Emacs mouse commands, and off to use xterm mouse commands.
+This works in terminal emulators compatible with xterm.  Only single clicks
+are supported.  When turned on, the normal xterm mouse functionality is still
+available by holding down the SHIFT key while pressing the mouse button."
+  nil " Mouse" nil :global t :group 'mouse
   (if xterm-mouse-mode
       ;; Turn it on
       (unless window-system
--- a/lispref/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,40 @@
+2005-04-03  Lute Kamstra  <lute@gnu.org>
+
+	* hooks.texi (Standard Hooks): Add some hooks.  Add cross
+	references and/or descriptions.  Delete major mode hooks; mention
+	them as a category instead.  Rename or delete obsolete hooks.
+
+2005-04-02  Richard M. Stallman  <rms@gnu.org>
+
+	* nonascii.texi (Coding System Basics): Another wording cleanup.
+
+2005-04-01  Richard M. Stallman  <rms@gnu.org>
+
+	* nonascii.texi (Coding System Basics): Clarify previous change.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+	* nonascii.texi (Coding System Basics): Describe about rondtrip
+	identity of coding systems.
+
+2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+	* text.texi (Buffer Contents): Add filter-buffer-substring and
+	buffer-substring-filters.
+
+2005-03-26  Chong Yidong  <cyd@stupidchicken.com>
+
+	* anti.texi (Antinews): Mention `G' interactive code.
+
+	* tips.texi (Compilation Tips): Mention benchmark.el.
+
+2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* modes.texi (Other Font Lock Variables): `font-lock-fontify-block'
+	is now bound to M-o M-o.
+
+	* keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o.
+
 2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
 	* calendar.texi: Delete file (and move contents to emacs-xtra.texi
--- a/lispref/anti.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/anti.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -238,6 +238,10 @@
 @code{test-completion} is no longer available.
 
 @item
+The @samp{G} interactive code character is no longer supported.
+Use @samp{F} instead.
+
+@item
 Arbitrary Lisp functions can no longer be recorded into
 @code{buffer-undo-list}.  As a consequence, @code{yank-undo-function}
 is obsolete, and has been removed.
--- a/lispref/hooks.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/hooks.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2004 Free Software Foundation, Inc.
+@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2004, 2005 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/hooks
 @node Standard Hooks, Index, Standard Keymaps, Top
@@ -16,6 +16,11 @@
 to put a new function on such a hook is to call @code{add-hook}.
 @xref{Hooks}, for more information about using hooks.
 
+Every major mode defines a mode hook named
+@samp{@var{modename}-mode-hook}.  The major mode command runs this
+normal hook with @code{run-mode-hooks} as the very last thing it does.
+@xref{Mode Hooks}.  Mode hooks are omitted in the list below.
+
 The variables whose names end in @samp{-hooks} or @samp{-functions} are
 usually @dfn{abnormal hooks}; their values are lists of functions, but
 these functions are called in a special way (they are passed arguments,
@@ -28,118 +33,229 @@
 names ending in @samp{-hook} even though they were not normal hooks;
 however, we have renamed all of those.)
 
-@c !!! need  xref  to where each hook is documented or else document it
-@c by specifying what is expected, and when it is called relative to
-@c mode initialization.
+@c We need to xref to where each hook is documented or else document
+@c it here.
 
 @table @code
 @item activate-mark-hook
+@xref{The Mark}.
+
 @item after-change-functions
+@xref{Change Hooks}.
+
 @item after-change-major-mode-hook
+@xref{Mode Hooks}.
+
 @item after-init-hook
+@xref{Init File}.
+
 @item after-insert-file-functions
+@xref{Saving Properties}.
+
 @item after-make-frame-functions
+@xref{Creating Frames}.
+
 @item after-revert-hook
+@xref{Reverting}.
+
 @item after-save-hook
-@item apropos-mode-hook
+@xref{Saving Buffers}.
+
 @item auto-fill-function
+@xref{Auto Filling}.
+
 @item auto-save-hook
+@xref{Auto-Saving}.
+
 @item before-change-functions
+@xref{Change Hooks}.
+
 @item before-init-hook
+@xref{Init File}.
+
 @item before-make-frame-hook
+@xref{Creating Frames}.
+
 @item before-revert-hook
+@xref{Reverting}.
+
 @item before-save-hook
+@xref{Saving Buffers}.
+
 @item blink-paren-function
+@xref{Blinking}.
+
 @item buffer-access-fontify-functions
-@item c-mode-hook
+@xref{Lazy Properties}.
+
 @item calendar-load-hook
+@inforef{Calendar Customizing,, emacs-xtra}.
+
 @item change-major-mode-hook
-@item command-history-hook
+@xref{Creating Buffer-Local}.
+
 @item command-line-functions
+@xref{Command-Line Arguments}.
+
 @item comment-indent-function
+@xref{Options for Comments,, Options Controlling Comments, emacs, the
+GNU Emacs Manual}.
+
 @item custom-define-hook
+Hook called after defining each customize option.
+
 @item deactivate-mark-hook
+@xref{The Mark}.
+
 @item desktop-after-read-hook
+Normal hook run after a successful @code{desktop-read}.  May be used
+to show a buffer list.  @xref{Saving Emacs Sessions,, Saving Emacs
+Sessions, emacs, the GNU Emacs Manual}.
+
 @item desktop-no-desktop-file-hook
+Normal hook run when @code{desktop-read} can't find a desktop file.
+May be used to show a dired buffer.  @xref{Saving Emacs Sessions,,
+Saving Emacs Sessions, emacs, the GNU Emacs Manual}.
+
 @item desktop-save-hook
+Normal hook run before the desktop is saved in a desktop file.  This
+is useful for truncating history lists, for example.  @xref{Saving
+Emacs Sessions,, Saving Emacs Sessions, emacs, the GNU Emacs Manual}.
+
 @item diary-display-hook
+@inforef{Fancy Diary Display,, emacs-xtra}.
+
 @item diary-hook
-@item dired-mode-hook
+List of functions called after the display of the diary.  Can be used
+for appointment notification.
+
 @item disabled-command-function
+@xref{Disabling Commands}.
+
 @item echo-area-clear-hook
-@item edit-picture-hook
-@item electric-buffer-menu-mode-hook
-@item electric-command-history-hook
-@item electric-help-mode-hook
-@item emacs-lisp-mode-hook
+@xref{The Echo Area}.
+
+@item emacs-startup-hook
+@xref{Init File}.
+
 @item find-file-hook
+@xref{Visiting Functions}.
+
 @item find-file-not-found-functions
+@xref{Visiting Functions}.
+
 @item first-change-hook
-@item fortran-comment-hook
-@item fortran-mode-hook
-@item indent-mim-hook
+@xref{Change Hooks}.
+
 @item initial-calendar-window-hook
+@inforef{Calendar Customizing,, emacs-xtra}.
+
 @item kbd-macro-termination-hook
+@xref{Keyboard Macros}.
+
 @item kill-buffer-hook
+@xref{Killing Buffers}.
+
 @item kill-buffer-query-functions
+@xref{Killing Buffers}.
+
 @item kill-emacs-hook
+@xref{Killing Emacs}.
+
 @item kill-emacs-query-functions
-@item LaTeX-mode-hook
-@item ledit-mode-hook
+@xref{Killing Emacs}.
+
 @item lisp-indent-function
-@item lisp-interaction-mode-hook
-@item lisp-mode-hook
+
 @item list-diary-entries-hook
-@item mail-mode-hook
+@inforef{Fancy Diary Display,, emacs-xtra}.
+
 @item mail-setup-hook
+@xref{Mail Mode Misc,, Mail Mode Miscellany, emacs, the GNU Emacs
+Manual}.
+
 @item mark-diary-entries-hook
-@item medit-mode-hook
+@inforef{Fancy Diary Display,, emacs-xtra}.
+
 @item menu-bar-update-hook
+@xref{Menu Bar}.
+
 @item minibuffer-setup-hook
+@xref{Minibuffer Misc}.
+
 @item minibuffer-exit-hook
+@xref{Minibuffer Misc}.
+
 @item mouse-position-function
-@item news-mode-hook
-@item news-reply-mode-hook
-@item news-setup-hook
+@xref{Mouse Position}.
+
 @item nongregorian-diary-listing-hook
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
+
 @item nongregorian-diary-marking-hook
-@item nroff-mode-hook
-@item outline-mode-hook
-@item plain-TeX-mode-hook
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
+
 @item post-command-hook
+@xref{Command Overview}.
+
 @item pre-abbrev-expand-hook
+@xref{Abbrev Expansion}.
+
 @item pre-command-hook
+@xref{Command Overview}.
+
 @item print-diary-entries-hook
-@item prolog-mode-hook
-@item protect-innocence-hook
+@inforef{Diary Customizing,, emacs-xtra}.
+
 @item redisplay-end-trigger-functions
-@item rmail-edit-mode-hook
-@item rmail-mode-hook
-@item rmail-summary-mode-hook
-@item scheme-indent-hook
-@item scheme-mode-hook
-@item scribe-mode-hook
-@item shell-mode-hook
-@item shell-set-directory-error-hook
+@xref{Window Hooks}.
+
+@item scheme-indent-function
+
 @item suspend-hook
+@xref{Suspending Emacs}.
+
 @item suspend-resume-hook
+@xref{Suspending Emacs}.
+
+@item temp-buffer-setup-hook
+@xref{Temporary Displays}.
+
 @item temp-buffer-show-function
+@xref{Temporary Displays}.
+
+@item temp-buffer-show-hook
+@xref{Temporary Displays}.
+
 @item term-setup-hook
-@item terminal-mode-hook
-@item terminal-mode-break-hook
-@item TeX-mode-hook
-@item text-mode-hook
+@xref{Terminal-Specific}.
+
 @item today-visible-calendar-hook
+@inforef{Calendar Customizing,, emacs-xtra}.
+
 @item today-invisible-calendar-hook
-@item vi-mode-hook
-@item view-hook
+@inforef{Calendar Customizing,, emacs-xtra}.
+
 @item window-configuration-change-hook
+@xref{Window Hooks}.
+
 @item window-scroll-functions
+@xref{Window Hooks}.
+
 @item window-setup-hook
+@xref{Window Systems}.
+
 @item window-size-change-functions
+@xref{Window Hooks}.
+
 @item write-contents-functions
+@xref{Saving Buffers}.
+
 @item write-file-functions
+@xref{Saving Buffers}.
+
 @item write-region-annotate-functions
+@xref{Saving Properties}.
 @end table
 
 @ignore
--- a/lispref/keymaps.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/keymaps.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -456,16 +456,16 @@
 key.
 
 @item
-@cindex @kbd{M-g}
+@cindex @kbd{M-o}
 @vindex facemenu-keymap
-@code{facemenu-keymap} is the global keymap used for the @kbd{M-g}
+@code{facemenu-keymap} is the global keymap used for the @kbd{M-o}
 prefix key.
 
 @c Emacs 19 feature
 @item
-The other Emacs prefix keys are @kbd{C-x @@}, @kbd{C-x a i}, @kbd{C-x
-@key{ESC}} and @kbd{@key{ESC} @key{ESC}}.  They use keymaps that have no
-special names.
+The other Emacs prefix keys are @kbd{M-g}, @kbd{C-x @@}, @kbd{C-x a i},
+@kbd{C-x @key{ESC}} and @kbd{@key{ESC} @key{ESC}}.  They use keymaps
+that have no special names.
 @end itemize
 
   The keymap binding of a prefix key is used for looking up the event
--- a/lispref/modes.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/modes.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -2349,7 +2349,7 @@
 @defvar font-lock-mark-block-function
 If this variable is non-@code{nil}, it should be a function that is
 called with no arguments, to choose an enclosing range of text for
-refontification for the command @kbd{M-g M-g}
+refontification for the command @kbd{M-o M-o}
 (@code{font-lock-fontify-block}).
 
 The function should report its choice by placing the region around it.
--- a/lispref/nonascii.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/nonascii.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -628,6 +628,27 @@
 conversion, but some of them leave the choice unspecified---to be chosen
 heuristically for each file, based on the data.
 
+  In general, a coding system doesn't guarantee roundtrip identity:
+decoding a byte sequence using coding system, then encoding the
+resulting text in the same coding system, can produce a different byte
+sequence.  However, the following coding systems do guarantee that the
+byte sequence will be the same as what you originally decoded:
+
+@quotation
+chinese-big5 chinese-iso-8bit cyrillic-iso-8bit emacs-mule
+greek-iso-8bit hebrew-iso-8bit iso-latin-1 iso-latin-2 iso-latin-3
+iso-latin-4 iso-latin-5 iso-latin-8 iso-latin-9 iso-safe
+japanese-iso-8bit japanese-shift-jis korean-iso-8bit raw-text
+@end quotation
+
+  Encoding buffer text and then decoding the result can also fail to
+reproduce the original text.  For instance, if you encode Latin-2
+characters with @code{utf-8} and decode the result using the same
+coding system, you'll get Unicode characters (of charset
+@code{mule-unicode-0100-24ff}).  If you encode Unicode characters with
+@code{iso-latin-2} and decode the result with the same coding system,
+you'll get Latin-2 characters.
+
 @cindex end of line conversion
   @dfn{End of line conversion} handles three different conventions used
 on various systems for representing end of line in files.  The Unix
--- a/lispref/text.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/text.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -207,6 +207,41 @@
 properties, just the characters themselves.  @xref{Text Properties}.
 @end defun
 
+@defun filter-buffer-substring start end &optional delete
+This function passes the buffer text between @var{start} and @var{end}
+through the filter functions specified by the variable
+@code{buffer-substring-filters}, and returns the value from the last
+filter function.  If @code{buffer-substring-filters} is @code{nil},
+the value is the unaltered text from the buffer, what
+@code{buffer-substring} would return.
+
+If @var{delete} is non-@code{nil}, this function deletes the text
+between @var{start} and @var{end} after copying it, like
+@code{delete-and-extract-region}.
+
+Lisp code should use this function instead of @code{buffer-substring}
+or @code{delete-and-extract-region} when copying into user-accessible
+data structures such as the kill-ring, X clipboard, and registers.
+Major and minor modes can add functions to
+@code{buffer-substring-filters} to alter such text as it is copied out
+of the buffer.
+@end defun
+
+@defvar buffer-substring-filters
+This variable should be a list of functions that accept a single
+argument, a string, and return a string.
+@code{filter-buffer-substring} passes the buffer substring to the
+first function in this list, and the return value of each function is
+passed to the next function.  The return value of the last function is
+used as the return value of @code{filter-buffer-substring}.
+
+As a special convention, point is set to the start of the buffer text
+being operated on (i.e., the @var{start} argument for
+@code{filter-buffer-substring}) before these functions are called.
+
+If this variable is @code{nil}, no filtering is performed.
+@end defvar
+
 @defun buffer-string
 This function returns the contents of the entire accessible portion of
 the current buffer as a string.  It is equivalent to
--- a/lispref/tips.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/lispref/tips.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -452,6 +452,13 @@
 @file{elp.el} for instructions.
 
 @item
+@cindex @file{benchmark.el}
+@cindex benchmarking
+Check the speed of individual Emacs Lisp forms using the
+@file{benchmark} library.  See the functions @code{benchmark-run} and
+@code{benchmark-run-compiled} in @file{benchmark.el}.
+
+@item
 Use iteration rather than recursion whenever possible.
 Function calls are slow in Emacs Lisp even when a compiled function
 is calling another compiled function.
--- a/lwlib/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/lwlib/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,16 @@
+2005-04-01  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	Reenable support for I18N to Lucid menus.
+	
+	* xlwmenuP.h (_XlwMenu_part): Add fontSet resource.
+
+	* xlwmenu.c (string_width):
+	(MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Ditto.
+	(display_menu_item, make_drawing_gcs, XlwMenuInitialize)
+	(XlwMenuSetValues):  Use font if fontSet is NULL, use only
+	font for !HAVE_X_I18N.
+	(xlwMenuResources): Add fontSet resource.
+
 2005-03-22  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* xlwmenuP.h: Temporary #undef HAVE_X_I18N until FontSet for UTF-8
--- a/lwlib/xlwmenu.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/lwlib/xlwmenu.c	Mon Apr 04 16:43:15 2005 +0000
@@ -131,20 +131,16 @@
 
 /* FIXME: F10 should enter the menu, the first one in the menu-bar.  */
 
-/* FIXME: HAVE_X_I18N does not work yet. */
-#undef HAVE_X_I18N
-
 #define offset(field) XtOffset(XlwMenuWidget, field)
 static XtResource
 xlwMenuResources[] =
 {
 #ifdef HAVE_X_I18N
-  {XtNfont,  XtCFont, XtRFontSet, sizeof(XFontSet),
-     offset(menu.font), XtRString, "XtDefaultFontSet"},
-#else
+  {XtNfontSet,  XtCFontSet, XtRFontSet, sizeof(XFontSet),
+     offset(menu.fontSet), XtRFontSet, NULL},
+#endif
   {XtNfont,  XtCFont, XtRFontStruct, sizeof(XFontStruct *),
      offset(menu.font), XtRString, "XtDefaultFont"},
-#endif
   {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
      offset(menu.foreground), XtRString, "XtDefaultForeground"},
   {XtNdisabledForeground, XtCDisabledForeground, XtRPixel, sizeof(Pixel),
@@ -361,24 +357,31 @@
      XlwMenuWidget mw;
      char *s;
 {
+  XCharStruct xcs;
+  int drop;
 #ifdef HAVE_X_I18N
   XRectangle ink, logical;
-  XmbTextExtents (mw->menu.font, s, strlen (s), &ink, &logical);
-  return logical.width;
-#else
-  XCharStruct xcs;
-  int drop;
+  if (mw->menu.fontSet)
+    {
+      XmbTextExtents (mw->menu.fontSet, s, strlen (s), &ink, &logical);
+      return logical.width;
+    }
+#endif
 
   XTextExtents (mw->menu.font, s, strlen (s), &drop, &drop, &drop, &xcs);
   return xcs.width;
-#endif
+
 }
 
 #ifdef HAVE_X_I18N
 #define MENU_FONT_HEIGHT(mw) \
-  ((mw)->menu.font_extents->max_logical_extent.height)
+  ((mw)->menu.fontSet != NULL \
+   ? (mw)->menu.font_extents->max_logical_extent.height   \
+   : (mw)->menu.font->ascent + (mw)->menu.font->descent)
 #define MENU_FONT_ASCENT(mw) \
-  (- (mw)->menu.font_extents->max_logical_extent.y)
+  ((mw)->menu.fontSet != NULL \
+   ? - (mw)->menu.font_extents->max_logical_extent.y \
+   : (mw)->menu.font->ascent)
 #else
 #define MENU_FONT_HEIGHT(mw) \
   ((mw)->menu.font->ascent + (mw)->menu.font->descent)
@@ -1053,10 +1056,14 @@
 
 
 #ifdef HAVE_X_I18N
-          XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font,
-#else
+          if (mw->menu.fontSet)
+            XmbDrawString (XtDisplay (mw), ws->window, mw->menu.fontSet,
+                           text_gc, x_offset,
+                           y + v_spacing + shadow + font_ascent,
+                           display_string, strlen (display_string));
+          else
+#endif
           XDrawString (XtDisplay (mw), ws->window,
-#endif
 		       text_gc, x_offset,
 		       y + v_spacing + shadow + font_ascent,
 		       display_string, strlen (display_string));
@@ -1083,10 +1090,16 @@
 	      else if (val->key)
 		{
 #ifdef HAVE_X_I18N
-		  XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font,
-#else
+                  if (mw->menu.fontSet)
+                    XmbDrawString (XtDisplay (mw), ws->window,
+                                   mw->menu.fontSet,
+                                   text_gc,
+                                   x + label_width + mw->menu.arrow_spacing,
+                                   y + v_spacing + shadow + font_ascent,
+                                   val->key, strlen (val->key));
+                  else
+#endif
 		  XDrawString (XtDisplay (mw), ws->window,
-#endif
 			       text_gc,
 			       x + label_width + mw->menu.arrow_spacing,
 			       y + v_spacing + shadow + font_ascent,
@@ -1493,34 +1506,25 @@
 {
   XGCValues xgcv;
   float scale;
+  XtGCMask mask = GCForeground | GCBackground;
 
-#ifndef HAVE_X_I18N
+#ifdef HAVE_X_I18N
+  if (!mw->menu.fontSet)
+    {
+      xgcv.font = mw->menu.font->fid;
+      mask |= GCFont;
+    }
+#else
   xgcv.font = mw->menu.font->fid;
+  mask |= GCFont;
 #endif
   xgcv.foreground = mw->menu.foreground;
   xgcv.background = mw->core.background_pixel;
-  mw->menu.foreground_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-				    GCFont |
-#endif
-				    GCForeground | GCBackground,
-				    &xgcv);
+  mw->menu.foreground_gc = XtGetGC ((Widget)mw, mask, &xgcv);
 
-#ifndef HAVE_X_I18N
-  xgcv.font = mw->menu.font->fid;
-#endif
   xgcv.foreground = mw->menu.button_foreground;
-  xgcv.background = mw->core.background_pixel;
-  mw->menu.button_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-				GCFont |
-#endif
-				GCForeground | GCBackground,
-				&xgcv);
+  mw->menu.button_gc = XtGetGC ((Widget)mw, mask, &xgcv);
 
-#ifndef HAVE_X_I18N
-  xgcv.font = mw->menu.font->fid;
-#endif
   xgcv.background = mw->core.background_pixel;
 
 #define BRIGHTNESS(color) (((color) & 0xff) + (((color) >> 8) & 0xff) + (((color) >> 16) & 0xff))
@@ -1545,49 +1549,26 @@
       xgcv.foreground = mw->menu.foreground;
       xgcv.fill_style = FillStippled;
       xgcv.stipple = mw->menu.gray_pixmap;
-      mw->menu.disabled_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-				      GCFont |
-#endif
-				      GCForeground | GCBackground
+      mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask
 				      | GCFillStyle | GCStipple, &xgcv);
     }
   else
     {
       /* Many colors available, use disabled pixel.  */
       xgcv.foreground = mw->menu.disabled_foreground;
-      mw->menu.disabled_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-				      GCFont |
-#endif
-				      GCForeground | GCBackground, &xgcv);
+      mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask, &xgcv);
     }
 
-#ifndef HAVE_X_I18N
-  xgcv.font = mw->menu.font->fid;
-#endif
   xgcv.foreground = mw->menu.button_foreground;
   xgcv.background = mw->core.background_pixel;
   xgcv.fill_style = FillStippled;
   xgcv.stipple = mw->menu.gray_pixmap;
-  mw->menu.inactive_button_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-					 GCFont |
-#endif
-					 GCForeground | GCBackground
+  mw->menu.inactive_button_gc = XtGetGC ((Widget)mw, mask
 					 | GCFillStyle | GCStipple, &xgcv);
 
-#ifndef HAVE_X_I18N
-  xgcv.font = mw->menu.font->fid;
-#endif
   xgcv.foreground = mw->core.background_pixel;
   xgcv.background = mw->menu.foreground;
-  mw->menu.background_gc = XtGetGC ((Widget)mw,
-#ifndef HAVE_X_I18N
-				    GCFont |
-#endif
-				    GCForeground | GCBackground,
-				    &xgcv);
+  mw->menu.background_gc = XtGetGC ((Widget)mw, mask, &xgcv);
 }
 
 static void
@@ -1793,14 +1774,14 @@
 				   gray_bitmap_width, gray_bitmap_height,
 				   (unsigned long)1, (unsigned long)0, 1);
 
-#ifndef HAVE_X_I18N
   /* I don't understand why this ends up 0 sometimes,
      but it does.  This kludge works around it.
      Can anyone find a real fix?   -- rms.  */
   if (mw->menu.font == 0)
     mw->menu.font = xlwmenu_default_font;
-#else
-  mw->menu.font_extents = XExtentsOfFontSet (mw->menu.font);
+#ifdef HAVE_X_I18N
+  if (mw->menu.fontSet)
+    mw->menu.font_extents = XExtentsOfFontSet (mw->menu.fontSet);
 #endif
       
   make_drawing_gcs (mw);
@@ -1969,7 +1950,10 @@
 
   if (newmw->core.background_pixel != oldmw->core.background_pixel
       || newmw->menu.foreground != oldmw->menu.foreground
-#ifndef HAVE_X_I18N
+#ifdef HAVE_X_I18N
+      || newmw->menu.fontSet != oldmw->menu.fontSet
+      || (newmw->menu.fontSet == NULL && newmw->menu.font != oldmw->menu.font)
+#else
       || newmw->menu.font != oldmw->menu.font
 #endif
       )
@@ -1999,10 +1983,10 @@
     }
 
 #ifdef HAVE_X_I18N
-  if (newmw->menu.font != oldmw->menu.font)
+  if (newmw->menu.fontSet != oldmw->menu.fontSet && newmw->menu.fontSet != NULL)
     {
       redisplay = True;
-      newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.font);
+      newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.fontSet);
     }
 #endif
 
--- a/lwlib/xlwmenuP.h	Mon Mar 28 04:24:51 2005 +0000
+++ b/lwlib/xlwmenuP.h	Mon Apr 04 16:43:15 2005 +0000
@@ -24,9 +24,6 @@
 #include "xlwmenu.h"
 #include <X11/CoreP.h>
 
-/* FIXME: HAVE_X_I18N does not work yet. */
-#undef HAVE_X_I18N
-
 /* Elements in the stack arrays. */
 typedef struct _window_state
 {
@@ -47,11 +44,10 @@
 {
   /* slots set by the resources */
 #ifdef HAVE_X_I18N
-  XFontSet	font;
+  XFontSet	fontSet;
   XFontSetExtents *font_extents;
-#else
+#endif
   XFontStruct*	font;
-#endif
   Pixel		foreground;
   Pixel		disabled_foreground;
   Pixel		button_foreground;
--- a/man/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,3 +1,138 @@
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+	* calc.texi: Change Calc version number.
+	(Customizable variables): Fix description of calc-language-alist.
+	(Copying): Put in version 2 of GPL.
+
+2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar.texi (Diary): Mention shell utility `calendar'.
+
+2005-04-01  Jay Belanger  <belanger@truman.edu>
+
+	* calc.texi (Troubleshooting Commands): Remove comment about
+	installation.
+	(Installation): Remove section.
+	(Customizable Variables): New section.
+	(Basic Embedded Mode, Customizing Embedded Mode, Graphics)
+	(Graphical Devices): Add references to Customizable Variables.
+
+2005-04-01  Lute Kamstra  <lute@gnu.org>
+
+	* maintaining.texi (Change Log): add-change-log-entry uses
+	add-log-mailing-address.
+
+2005-03-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.texi (Reverting): Move `auto-revert-check-vc-info' to
+	`VC Mode Line' and put in an xref to that node.
+	(VC Mode Line): Move `auto-revert-check-vc-info' here and clarify
+	its description.
+
+2005-03-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* calendar.texi (Calendar Systems): Say that the Persian calendar
+	implemented here is the arithmetical one championed by Birashk.
+
+2005-03-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* programs.texi (Fortran Motion): Fix previous change.
+
+2005-03-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* emacs-mime.texi (Display Customization): Markup fixes.
+	(rfc2047): Update.
+
+2005-03-23  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-faq.texi: Replaced with auto-generated version.
+
+2005-03-29  Richard M. Stallman  <rms@gnu.org>
+
+	* mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info.
+
+2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+	* text.texi (Refill): Refer to Long Lines Mode.
+	(Longlines): New node.
+	(Auto Fill): Don't index "word wrap" here.
+	(Filling): Add Longlines to menu.
+
+2005-03-29  Richard M. Stallman  <rms@gnu.org>
+
+	* xresources.texi: Minor fixes.
+
+	* misc.texi (Emacs Server): Fix Texinfo usage.
+
+	* emacs.texi (Top): Don't use a real section heading for
+	"Detailed Node Listing".  Fake it instead.
+
+	* basic.texi (Position Info): Minor cleanup.
+
+	* mule.texi (Input Methods): Minor cleanup.
+
+2005-03-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* programs.texi (ForIndent Vars): `fortran-if-indent' does other
+	constructs as well.
+	(Fortran Motion): Add fortran-end-of-block,
+	fortran-beginning-of-block.
+
+2005-03-29  Kenichi Handa  <handa@m17n.org>
+
+	* mule.texi (Input Methods): Refer to the command C-u C-x =.
+
+	* basic.texi (Position Info): Update the description about the
+	command C-u C-x =.
+
+2005-03-28  Richard M. Stallman  <rms@gnu.org>
+
+	* emacs.texi (Top): Use @section for the detailed node listing.
+
+	* calendar.texi: Minor fixes to previous change.
+
+	* programs.texi (Fortran): Small fixes to previous changes.
+
+	* emacs.texi (Top): Update list of subnodes of Dired.
+	Likewise for building.texi.
+
+	* files.texi (File Conveniences): Delete Auto Image File mode.
+
+2005-03-28  Chong Yidong  <cyd@stupidchicken.com>
+
+	* building.texi (Flymake): New node.
+
+	* custom.texi (Function Keys): Document kp- event types and
+	keypad-setup package.
+
+	* dired.texi (Wdired): New node.
+
+	* files.texi (File Conveniences): Reorder entries.
+	Explain how to turn on Auto-image-file mode.
+	Document Thumbs mode.
+
+	* mule.texi (Specify Coding): Document recode-region and
+	recode-file-name.
+
+	* programs.texi (Program Modes): Add Conf mode and DNS mode.
+
+2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* commands.texi (Keys): M-o is now a prefix key.
+
+2005-03-27  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* programs.texi: Reformat and update copyright years.
+	(Fortran): Update section.
+
+2005-03-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.texi: Several small changes in addition to:
+	(Visiting): Change xref for Dialog Boxes to ref.
+	(Version Headers): Replace references to obsolete var
+	`vc-header-alist' with `vc-BACKEND-header'.
+	(Customizing VC): Update value of `vc-handled-backends'.
+
 2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
 	* emacs-xtra.texi (Advanced Calendar/Diary Usage): New section;
@@ -49,7 +184,7 @@
 	* files.texi (Visiting): Fix cross-references introduced with the
 	last change.
 
-	* xresources.texi (GTK resources): Fix last change. 
+	* xresources.texi (GTK resources): Fix last change.
 
 2005-03-26  Jay Belanger  <belanger@truman.edu>
 
--- a/man/basic.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/basic.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -677,36 +677,57 @@
 @cindex character set of character at point
 @cindex font of character at point
 @cindex text properties at point
-  @w{@kbd{C-u C-x =}} displays additional information about a
-character, including the character set name and the codes that
-identify the character within that character set; @acronym{ASCII} characters are
-identified as belonging to the @code{ascii} character set.  It also
-shows the character's syntax, categories, and encodings both
-internally in the buffer and externally if you save the file.  It also
-shows the character's text properties (@pxref{Text Properties,,,
+  @w{@kbd{C-u C-x =}} displays these additional information about a
+character.
+
+@itemize @bullet
+@item
+The character set name, and the codes that identify the character
+within that character set; @acronym{ASCII} characters are identified
+as belonging to the @code{ascii} character set.
+
+@item
+The character's syntax and categories.
+
+@item
+The character's encodings, both internally in the buffer, and externally
+if you were to save the file.
+
+@item
+What to type to input the character in the current input method
+(if it supports the character).
+
+@item
+If you are running Emacs on a window system, the font name and glyph
+code for the character.  If you are running Emacs on a terminal, the
+code(s) sent to the terminal.
+
+@item
+The character's text properties (@pxref{Text Properties,,,
 elisp, the Emacs Lisp Reference Manual}), and any overlays containing it
 (@pxref{Overlays,,, elisp, the same manual}).
+@end itemize
 
   Here's an example showing the Latin-1 character A with grave accent,
-in a buffer whose coding system is @code{iso-2022-7bit}, whose
+in a buffer whose coding system is @code{iso-latin-1}, whose
 terminal coding system is @code{iso-latin-1} (so the terminal actually
 displays the character as @samp{@`A}), and which has font-lock-mode
 (@pxref{Font Lock}) enabled:
 
 @smallexample
-    character: @`A (04300, 2240, 0x8c0)
-      charset: latin-iso8859-1
-	       (Right-Hand Part of Latin Alphabet 1@dots{}
-   code point: 64
-       syntax: w 	which means: word
-     category: l:Latin
-  buffer code: 0x81 0xC0
-    file code: ESC 2C 41 40 (encoded by coding system iso-2022-7bit)
-terminal code: C0
+  character: @`A (04300, 2240, 0x8c0, U+00C0)
+    charset: latin-iso8859-1
+             (Right-Hand Part of Latin Alphabet 1@dots{}
+ code point: 64
+     syntax: w 	which means: word
+   category: l:Latin
+   to input: type "`A"
+buffer code: 0x81 0xC0
+  file code: ESC 2C 41 40 (encoded by coding system iso-2022-7bit)
+    display: terminal code 0xC0
 
-Text properties
-  font-lock-face: font-lock-variable-name-face
-  fontified: t
+There are text properties here:
+  fontified            t
 @end smallexample
 
 @node Arguments
--- a/man/building.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/building.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -18,6 +18,7 @@
 * Compilation Shell::   Customizing your shell properly
                           for use in the compilation buffer.
 * Grep Searching::      Searching with grep.
+* Flymake::             Finding syntax errors on the fly.
 * Debuggers::	        Running symbolic debuggers for non-Lisp programs.
 * Executing Lisp::      Various modes for editing Lisp programs,
                           with different facilities for running
@@ -337,6 +338,31 @@
 @code{grep}, so as to search every file in a directory tree.  See also
 the @code{find-grep-dired} command, in @ref{Dired and Find}.
 
+@node Flymake
+@section Finding Syntax Errors On The Fly
+@cindex checking syntax
+
+  Flymake mode is a minor mode that performs on-the-fly syntax
+checking for many programming and markup languages, including C, C++,
+Perl, HTML, and @TeX{}/La@TeX{}.  It is somewhat analogous to Flyspell
+mode, which performs spell checking for ordinary human languages in a
+similar fashion (@pxref{Spelling}).  As you edit a file, Flymake mode
+runs an appropriate syntax checking tool in the background, using a
+temporary copy of the buffer.  It then parses the error and warning
+messages, and highlights the erroneous lines in the buffer.  The
+syntax checking tool used depends on the language; for example, for
+C/C++ files this is usually the C compiler.  Flymake can also use
+build tools such as @code{make} for checking complicated projects.
+
+  To activate Flymake mode, type @kbd{M-x flymake-mode}.  You can move
+to the errors spotted by Flymake mode with @kbd{M-x
+flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}.  To
+display any error messages associated with the current line, use
+@kbd{M-x flymake-display-err-menu-for-current-line}.
+
+  For more details about using Flymake, see @ref{Top, Flymake,
+Flymake, flymake, The Flymake Manual}.
+
 @node Debuggers
 @section Running Debuggers Under Emacs
 @cindex debuggers
--- a/man/calc.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/calc.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -3,7 +3,7 @@
 @c smallbook
 @setfilename ../info/calc
 @c [title]
-@settitle GNU Emacs Calc 2.02g Manual
+@settitle GNU Emacs Calc 2.1 Manual
 @setchapternewpage odd
 @comment %**end of header (This is for running Texinfo on a region.)
 
@@ -108,7 +108,7 @@
 @sp 6
 @center @titlefont{Calc Manual}
 @sp 4
-@center GNU Emacs Calc Version 2.02g
+@center GNU Emacs Calc Version 2.1
 @c [volume]
 @sp 1
 @center March 2005
@@ -165,7 +165,7 @@
 * Embedded Mode::         Working with formulas embedded in a file.
 * Programming::           Calc as a programmable calculator.
 
-* Installation::          Installing Calc as a part of GNU Emacs.
+* Customizable Variables:: Customizable Variables.
 * Reporting Bugs::        How to report bugs and make suggestions.
 
 * Summary::               Summary of Calc commands and functions.
@@ -180,11 +180,13 @@
 
 @node Copying, Getting Started, Top, Top
 @unnumbered GNU GENERAL PUBLIC LICENSE
-@center Version 1, February 1989
+@center Version 2, June 1991
+
+@c This file is intended to be included in another file.
 
 @display
-Copyright @copyright{} 1989 Free Software Foundation, Inc.
-675 Mass Ave, Cambridge, MA 02139, USA
+Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
@@ -192,30 +194,33 @@
 
 @unnumberedsec Preamble
 
-  The license agreements of most software companies try to keep users
-at the mercy of those companies.  By contrast, our General Public
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
 License is intended to guarantee your freedom to share and change free
-software---to make sure the software is free for all its users.  The
-General Public License applies to the Free Software Foundation's
-software and to any other program whose authors commit to using it.
-You can use it for your programs, too.
+software---to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
 
   When we speak of free software, we are referring to freedom, not
-price.  Specifically, the General Public License is designed to make
-sure that you have the freedom to give away or sell copies of free
-software, that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free
-programs; and that you know you can do these things.
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
 
   To protect your rights, we need to make restrictions that forbid
 anyone to deny you these rights or to ask you to surrender the rights.
 These restrictions translate to certain responsibilities for you if you
 distribute copies of the software, or if you modify it.
 
-  For example, if you distribute copies of a such a program, whether
+  For example, if you distribute copies of such a program, whether
 gratis or for a fee, you must give the recipients all the rights that
 you have.  You must make sure that they, too, receive or can get the
-source code.  And you must tell them their rights.
+source code.  And you must show them these terms so they know their
+rights.
 
   We protect your rights with two steps: (1) copyright the software, and
 (2) offer you this license which gives you legal permission to copy,
@@ -228,128 +233,216 @@
 that any problems introduced by others will not reflect on the original
 authors' reputations.
 
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
   The precise terms and conditions for copying, distribution and
 modification follow.
 
 @iftex
-@unnumberedsec TERMS AND CONDITIONS
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 @end iftex
 @ifinfo
-@center TERMS AND CONDITIONS
-@end ifinfo
-
-@enumerate
-@item
-This License Agreement applies to any program or other work which
-contains a notice placed by the copyright holder saying it may be
-distributed under the terms of this General Public License.  The
-``Program'', below, refers to any such program or work, and a ``work based
-on the Program'' means either the Program or any work containing the
-Program or a portion of it, either verbatim or with modifications.  Each
-licensee is addressed as ``you''.
-
-@item
-You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this
-General Public License and to the absence of any warranty; and give any
-other recipients of the Program a copy of this General Public License
-along with the Program.  You may charge a fee for the physical act of
-transferring a copy.
-
-@item
-You may modify your copy or copies of the Program or any portion of
-it, and copy and distribute such modifications under the terms of Paragraph
-1 above, provided that you also do the following:
-
-@itemize @bullet
-@item
-cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change; and
-
-@item
-cause the whole of any work that you distribute or publish, that
-in whole or in part contains the Program or any part thereof, either
-with or without modifications, to be licensed at no charge to all
-third parties under the terms of this General Public License (except
-that you may choose to grant warranty protection to some or all
-third parties, at your option).
-
-@item
-If the modified program normally reads commands interactively when
-run, you must cause it, when started running for such interactive use
-in the simplest and most usual way, to print or display an
-announcement including an appropriate copyright notice and a notice
-that there is no warranty (or else, saying that you provide a
-warranty) and that users may redistribute the program under these
-conditions, and telling the user how to view a copy of this General
-Public License.
-
-@item
-You may charge a fee for the physical act of transferring a
-copy, and you may at your option offer warranty protection in
-exchange for a fee.
-@end itemize
-
-Mere aggregation of another independent work with the Program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other work under the scope of these terms.
-
-@item
-You may copy and distribute the Program (or a portion or derivative of
-it, under Paragraph 2) in object code or executable form under the terms of
-Paragraphs 1 and 2 above provided that you also do one of the following:
-
-@itemize @bullet
-@item
-accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of
-Paragraphs 1 and 2 above; or,
-
-@item
-accompany it with a written offer, valid for at least three
-years, to give any third party free (except for a nominal charge
-for the cost of distribution) a complete machine-readable copy of the
-corresponding source code, to be distributed under the terms of
-Paragraphs 1 and 2 above; or,
-
-@item
-accompany it with the information you received as to where the
-corresponding source code may be obtained.  (This alternative is
+@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end ifinfo
+
+@enumerate 0
+@item
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The ``Program'', below,
+refers to any such program or work, and a ``work based on the Program''
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term ``modification''.)  Each licensee is addressed as ``you''.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+@item
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+@item
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+@item
+If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+@end enumerate
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+@enumerate a
+@item
+Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+@item
+Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+@item
+Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
 allowed only for noncommercial distribution and only if you
-received the program in object code or executable form alone.)
-@end itemize
-
-Source code for a work means the preferred form of the work for making
-modifications to it.  For an executable file, complete source code means
-all the source code for all modules it contains; but, as a special
-exception, it need not include source code for modules which are standard
-libraries that accompany the operating system on which the executable
-file runs, or for standard header files or definitions files that
-accompany that operating system.
-
-@item
-You may not copy, modify, sublicense, distribute or transfer the
-Program except as expressly provided under this General Public License.
-Any attempt otherwise to copy, modify, sublicense, distribute or transfer
-the Program is void, and will automatically terminate your rights to use
-the Program under this License.  However, parties who have received
-copies, or rights to use copies, from you under this General Public
-License will not have their licenses terminated so long as such parties
-remain in full compliance.
-
-@item
-By copying, distributing or modifying the Program (or any work based
-on the Program) you indicate your acceptance of this license to do so,
-and all its terms and conditions.
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+@end enumerate
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+@item
+You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
 
 @item
 Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these
-terms and conditions.  You may not impose any further restrictions on the
-recipients' exercise of the rights granted herein.
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+@item
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+@item
+If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
 
 @item
 The Free Software Foundation may publish revised and/or new versions
@@ -358,11 +451,11 @@
 address new problems or concerns.
 
 Each version is given a distinguishing version number.  If the Program
-specifies a version number of the license which applies to it and ``any
+specifies a version number of this License which applies to it and ``any
 later version'', you have the option of following the terms and conditions
 either of that version or of any later version published by the Free
 Software Foundation.  If the Program does not specify a version number of
-the license, you may choose any version ever published by the Free Software
+this License, you may choose any version ever published by the Free Software
 Foundation.
 
 @item
@@ -393,17 +486,91 @@
 REPAIR OR CORRECTION.
 
 @item
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
-ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
-LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
-SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
-WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
 @end enumerate
 
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+@end ifinfo
+
+@page
+@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{yyyy}  @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+@smallexample
+Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than @samp{show w} and
+@samp{show c}; they could even be mouse-clicks or menu items---whatever
+suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here is a sample; alter the names:
+
+@example
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+@var{signature of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
+@end example
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
 @node Getting Started, Tutorial, Copying, Top
 @chapter Getting Started
 @noindent
@@ -10613,11 +10780,6 @@
 loaded right away.  This will cause Emacs to take up a lot more
 memory than it would otherwise, but it's guaranteed to fix the problem.
 
-If you seem to run into this problem no matter what you do, or if
-even the @kbd{M-# L} command crashes, Calc may have been improperly
-installed.  @xref{Installation}, for details of the installation
-process.
-
 @node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands
 @subsection Recursion Depth
 
@@ -12306,7 +12468,7 @@
 use in the future for commands like @kbd{m m}.  The default settings
 file name is @file{~/.calc.el}.  You can see the current file name by
 giving a blank response to the @kbd{m F} prompt.  See also the
-discussion of the @code{calc-settings-file} variable; @pxref{Installation}.
+discussion of the @code{calc-settings-file} variable; @pxref{Customizable Variables}.
 
 If the file name you give is your user init file (typically
 @file{~/.emacs}), @kbd{m F} will not automatically load the new file.  This
@@ -29109,7 +29271,7 @@
 @vindex calc-gnuplot-print-command
 @vindex calc-gnuplot-print-device
 @vindex calc-gnuplot-print-output
-If you are installing Calc you may wish to configure the default and
+You may wish to configure the default and
 printer devices and output files for the whole system.  The relevant
 Lisp variables are @code{calc-gnuplot-default-device} and @code{-output},
 and @code{calc-gnuplot-print-device} and @code{-output}.  The output
@@ -29122,7 +29284,8 @@
 @code{nil} if no command is necessary, or strings which can include
 @samp{%s} to signify the name of the file to be displayed or printed.
 Or, these variables may contain Lisp expressions which are evaluated
-to display or print the output.
+to display or print the output.  These variables are customizable
+(@pxref{Customizable Variables}).
 
 @kindex g x
 @pindex calc-graph-display
@@ -29910,7 +30073,8 @@
 @code{plain-tex-mode} and @code{context-mode}, C language for
 @code{c-mode} and @code{c++-mode}, FORTRAN language for
 @code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode},
-and eqn for @code{nroff-mode}.  These can be overridden with Calc's mode
+and eqn for @code{nroff-mode} (@pxref{Customizable Variables}).  
+These can be overridden with Calc's mode
 changing commands (@pxref{Mode Settings in Embedded Mode}).  If no
 suitable language is available, Calc will continue with its current language.
 
@@ -30612,10 +30776,10 @@
 
 @noindent
 You can modify Embedded mode's behavior by setting various Lisp
-variables described here.  Use @kbd{M-x set-variable} or
-@kbd{M-x edit-options} to adjust a variable on the fly, or
-put a suitable @code{setq} statement in your Calc init file (or 
-@file{~/.emacs}) to set a variable permanently.  (Another possibility would
+variables described here.  These variables are customizable 
+(@pxref{Customizable Variables}), or you can use @kbd{M-x set-variable}
+or @kbd{M-x edit-options} to adjust a variable on the fly.
+(Another possibility would
 be to use a file-local variable annotation at the end of the
 file; @pxref{File Variables, , Local Variables in Files, emacs, the
 Emacs manual}.)
@@ -30760,7 +30924,7 @@
 good idea still to end with a newline so that mode annotations
 will appear on lines by themselves.
 
-@node Programming, Installation, Embedded Mode, Top
+@node Programming, Customizable Variables, Embedded Mode, Top
 @chapter Programming
 
 @noindent
@@ -34610,70 +34774,204 @@
 list and also call @code{make-local-variable} itself.
 @end defvar
 
-@node Installation, Reporting Bugs, Programming, Top
-@appendix Installation
-
-@noindent
-As of Calc 2.02g, Calc is integrated with GNU Emacs, and thus requires
-no separate installation of its Lisp files and this manual.
-
-@appendixsec The GNUPLOT Program
-
-@noindent
-Calc's graphing commands use the GNUPLOT program.  If you have GNUPLOT
-but you must type some command other than @file{gnuplot} to get it,
-you should add a command to set the Lisp variable @code{calc-gnuplot-name}
-to the appropriate file name.  You may also need to change the variables
-@code{calc-gnuplot-plot-command} and @code{calc-gnuplot-print-command} in
-order to get correct displays and hardcopies, respectively, of your
-plots.
-
-@ifinfo
-@example
-
-@end example
-@end ifinfo
-
-@appendixsec Settings File
-
-@noindent
+@node Customizable Variables, Reporting Bugs, Programming, Top
+@appendix Customizable Variables
+
+GNU Calc is controlled by many variables, most of which can be reset
+from within Calc.  Some variables are less involved with actual
+calculation, and can be set outside of Calc using Emacs's
+customization facilities.  These variables are listed below.
+Typing @kbd{M-x customize-variable RET @var{variable-name} RET}
+will bring up a buffer in which the variable's value can be redefined.
+Typing @kbd{M-x customize-group RET calc RET} will bring up a buffer which
+contains all of Calc's customizable variables.  (These variables can
+also be reset by putting the appropriate lines in your .emacs file;
+@xref{Init File, ,Init File, emacs, The GNU Emacs Manual}.)
+
+Some of the customizable variables are regular expressions.  A regular
+expression is basically a pattern that Calc can search for.
+See @ref{Regexp Search,, Regular Expression Search, emacs, The GNU Emacs Manual}
+to see how regular expressions work.
+
+@table @code
+
+@item calc-settings-file
+
 @vindex calc-settings-file
-Another variable you might want to set is @code{calc-settings-file},
-which holds the file name in which commands like @kbd{m m} and @kbd{Z P}
-store ``permanent'' definitions.  The default value for this variable
-is @code{"~/.calc.el"}.  If @code{calc-settings-file} is not your user
-init file (typically @file{~/.emacs}) and if the variable
-@code{calc-loaded-settings-file} is @code{nil}, then Calc will
-automatically load your settings file (if it exists) the first time
-Calc is invoked.
-
-@ifinfo
-@example
-
-@end example
-@end ifinfo
-@appendixsec Testing the Installation
-
-@noindent
-To test your installation of Calc, start a new Emacs and type @kbd{M-# c}
-to make sure the autoloads and key bindings work.  Type @kbd{M-# i}
-to make sure Calc can find its Info documentation.  Press @kbd{q} to
-exit the Info system and @kbd{M-# c} to re-enter the Calculator.
-Type @kbd{20 S} to compute the sine of 20 degrees; this will test the
-autoloading of the extensions modules.  The result should be
-0.342020143326.  Finally, press @kbd{M-# c} again to make sure the
-Calculator can exit.
-
-You may also wish to test the GNUPLOT interface; to plot a sine wave,
-type @kbd{' [0 ..@: 360], sin(x) @key{RET} g f}.  Type @kbd{g q} when you
-are done viewing the plot.
-
-Calc is now ready to use.  If you wish to go through the Calc Tutorial,
-press @kbd{M-# t} to begin.
-@example
-
-@end example
-@node Reporting Bugs, Summary, Installation, Top
+The variable @code{calc-settings-file} holds the file name in
+which commands like @kbd{m m} and @kbd{Z P} store ``permanent''
+definitions.  
+If @code{calc-settings-file} is not your user init file (typically
+@file{~/.emacs}) and if the variable @code{calc-loaded-settings-file} is
+@code{nil}, then Calc will automatically load your settings file (if it
+exists) the first time Calc is invoked.
+
+The default value for this variable is @code{"~/.calc.el"}.
+
+@item calc-gnuplot-name
+
+See @ref{Graphics}.@*
+The variable @code{calc-gnuplot-name} should be the name of the
+GNUPLOT program (a string).  If you have GNUPLOT installed on your
+system but Calc is unable to find it, you may need to set this
+variable.  (@pxref{Customizable Variables})
+You may also need to set some Lisp variables to show Calc how to run
+GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} .  The default value
+of @code{calc-gnuplot-name} is @code{"gnuplot"}.
+
+@item  calc-gnuplot-plot-command
+@itemx calc-gnuplot-print-command
+
+See @ref{Devices, ,Graphical Devices}.@*
+The variables @code{calc-gnuplot-plot-command} and
+@code{calc-gnuplot-print-command} represent system commands to
+display and print the output of GNUPLOT, respectively.  These may be
+@code{nil} if no command is necessary, or strings which can include
+@samp{%s} to signify the name of the file to be displayed or printed.
+Or, these variables may contain Lisp expressions which are evaluated
+to display or print the output.
+
+The default value of @code{calc-gnuplot-plot-command} is @code{nil},
+and the default value of @code{calc-gnuplot-print-command} is
+@code{"lp %s"}.
+
+@item calc-language-alist
+
+See @ref{Basic Embedded Mode}.@*
+The variable @code{calc-language-alist} controls the languages that
+Calc will associate with major modes.  When Calc embedded mode is
+enabled, it will try to use the current major mode to
+determine what language should be used.  (This can be overridden using
+Calc's mode changing commands, @xref{Mode Settings in Embedded Mode}.)
+The variable @code{calc-language-alist} consists of a list of pairs of
+the form  @code{(@var{MAJOR-MODE} . @var{LANGUAGE})}; for example, 
+@code{(latex-mode . latex)} is one such pair.  If Calc embedded is
+activated in a buffer whose major mode is @var{MAJOR-MODE}, it will set itself
+to use the language @var{LANGUAGE}.
+
+The default value of @code{calc-language-alist} is
+@example
+   ((latex-mode . latex)
+    (tex-mode   . tex)
+    (plain-tex-mode . tex)
+    (context-mode . tex)
+    (nroff-mode . eqn)
+    (pascal-mode . pascal)
+    (c-mode . c)
+    (c++-mode . c)
+    (fortran-mode . fortran)
+    (f90-mode . fortran))
+@end example
+
+@item calc-embedded-announce-formula
+
+See @ref{Customizing Embedded Mode}.@*
+The variable @code{calc-embedded-announce-formula} helps determine
+what formulas @kbd{M-# a} will activate in a buffer.  It is a
+regular expression, and when activating embedded formulas with
+@kbd{M-# a}, it will tell Calc that what follows is a formula to be
+activated.  (Calc also uses other patterns to find formulas, such as
+@samp{=>} and @samp{:=}.)  
+
+The default pattern is @code{"%Embed\n\\(% .*\n\\)*"}, which checks
+for @samp{%Embed} followed by any number of lines beginning with
+@samp{%} and a space.
+
+@item  calc-embedded-open-formula
+@itemx calc-embedded-close-formula
+
+See @ref{Customizing Embedded Mode}.@*
+The variables @code{calc-embedded-open-formula} and
+@code{calc-embedded-open-formula} control the region that Calc will
+activate as a formula when Embedded mode is entered with @kbd{M-# e}.
+They are regular expressions; 
+Calc normally scans backward and forward in the buffer for the
+nearest text matching these regular expressions to be the ``formula
+delimiters''.
+
+The simplest delimiters are blank lines.  Other delimiters that
+Embedded mode understands by default are:
+@enumerate
+@item
+The @TeX{} and La@TeX{} math delimiters @samp{$ $}, @samp{$$ $$},
+@samp{\[ \]}, and @samp{\( \)};
+@item
+Lines beginning with @samp{\begin} and @samp{\end} (except matrix delimiters);
+@item
+Lines beginning with @samp{@@} (Texinfo delimiters).
+@item
+Lines beginning with @samp{.EQ} and @samp{.EN} (@dfn{eqn} delimiters);
+@item
+Lines containing a single @samp{%} or @samp{.\"} symbol and nothing else.
+@end enumerate
+
+@item  calc-embedded-open-word
+@itemx calc-embedded-close-word
+
+See @ref{Customizing Embedded Mode}.@*
+The variables @code{calc-embedded-open-word} and
+@code{calc-embedded-close-word} control the region that Calc will
+activate when Embedded mode is entered with @kbd{M-# w}.  They are
+regular expressions.
+
+The default values of @code{calc-embedded-open-word} and
+@code{calc-embedded-close-word} are @code{"^\\|[^-+0-9.eE]"} and 
+@code{"$\\|[^-+0-9.eE]"} respectively.
+
+@item  calc-embedded-open-plain
+@itemx calc-embedded-close-plain
+
+See @ref{Customizing Embedded Mode}.@*
+The variables @code{calc-embedded-open-plain} and
+@code{calc-embedded-open-plain} are used to delimit ``plain''
+formulas.  Note that these are actual strings, not regular
+expressions, because Calc must be able to write these string into a
+buffer as well as to recognize them.
+
+The default string for @code{calc-embedded-open-plain} is 
+@code{"%%% "}, note the trailing space.  The default string for 
+@code{calc-embedded-close-plain} is @code{" %%%\n"}, without
+the trailing newline here, the first line of a Big mode formula
+that followed might be shifted over with respect to the other lines.
+
+@item  calc-embedded-open-new-formula
+@itemx calc-embedded-close-new-formula
+
+See @ref{Customizing Embedded Mode}.@*
+The variables @code{calc-embedded-open-new-formula} and
+@code{calc-embedded-close-new-formula} are strings which are
+inserted before and after a new formula when you type @kbd{M-# f}.
+
+The default value of @code{calc-embedded-open-new-formula} is
+@code{"\n\n"}.  If this string begins with a newline character and the
+@kbd{M-# f} is typed at the beginning of a line, @kbd{M-# f} will skip
+this first newline to avoid introducing unnecessary blank lines in the
+file.  The default value of @code{calc-embedded-close-new-formula} is
+also @code{"\n\n"}.  The final newline is omitted by @w{@kbd{M-# f}}
+if typed at the end of a line.  (It follows that if @kbd{M-# f} is
+typed on a blank line, both a leading opening newline and a trailing
+closing newline are omitted.)
+
+@item  calc-embedded-open-mode
+@itemx calc-embedded-close-mode
+
+See @ref{Customizing Embedded Mode}.@*
+The variables @code{calc-embedded-open-mode} and
+@code{calc-embedded-close-mode} are strings which Calc will place before
+and after any mode annotations that it inserts.  Calc never scans for
+these strings; Calc always looks for the annotation itself, so it is not
+necessary to add them to user-written annotations.
+
+The default value of @code{calc-embedded-open-mode} is @code{"% "}
+and the default value of @code{calc-embedded-close-mode} is
+@code{"\n"}.  
+If you change the value of @code{calc-embedded-close-mode}, it is a good
+idea still to end with a newline so that mode annotations will appear on
+lines by themselves.
+
+@end table
+
+@node Reporting Bugs, Summary, Customizable Variables, Top
 @appendix Reporting Bugs
 
 @noindent
--- a/man/calendar.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/calendar.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -433,7 +433,7 @@
 from the menu that appears.  Either way, this displays the holidays for
 that date, in the echo area if they fit there, otherwise in a separate
 window.  If the variable @code{view-calendar-holidays-initially} is
-non-@code{nil}, holidays are displayed when the calendar is created.
+non-@code{nil}, creating the calendar displays holidays in this way.
 
 @kindex x @r{(Calendar mode)}
 @findex mark-calendar-holidays
@@ -449,9 +449,8 @@
 subsequently become visible by scrolling.  To turn marking off and erase
 the current marks, type @kbd{u}, which also erases any diary marks
 (@pxref{Diary}).  If the variable @code{mark-holidays-in-calendar} is
-non-@code{nil}, holidays are marked in the calendar when it is created
-(or recomputed).
-
+non-@code{nil}, creating or updating the calendar marks holidays
+automatically.
 
 @kindex a @r{(Calendar mode)}
 @findex list-calendar-holidays
@@ -692,6 +691,12 @@
 days, the next five have 30 days, and the last has 29 in ordinary years
 and 30 in leap years.  Leap years occur in a complicated pattern every
 four or five years.
+The calendar implemented here is the arithmetical Persian calendar
+championed by Birashk, based on a 2,820-year cycle.  It differs from
+the astronomical Persian calendar, which is based on astronomical
+events.  As of this writing the first future discrepancy is projected
+to occur on March 20, 2025.  It is currently not clear what the
+official calendar of Iran will be that far into the future.
 
 @cindex Chinese calendar
   The Chinese calendar is a complicated system of lunar months arranged
@@ -937,7 +942,8 @@
 
   The name of the diary file is specified by the variable
 @code{diary-file}; @file{~/diary} is the default.  A sample diary file
-is:
+is (note that the file format is essentially the same as that used by
+the external shell utility @samp{calendar}):
 
 @example
 12/22/1988  Twentieth wedding anniversary!!
@@ -1005,13 +1011,14 @@
 that fall on that date.  If you specify a numeric argument with @kbd{d},
 it shows all the diary entries for that many successive days.  Thus,
 @kbd{2 d} displays all the entries for the selected date and for the
-following day.  If the variable @code{view-diary-entries-initially} is
-non-@code{nil}, the diary entries for the current date are displayed
-when the calendar is created (provided the current date is visible).
+following day.
 
   Another way to display the diary entries for a date is to click
 @kbd{Mouse-2} on the date, and then choose @kbd{Diary entries} from
-the menu that appears.
+the menu that appears.  If the variable
+@code{view-diary-entries-initially} is non-@code{nil}, creating the
+calendar also lists diary entries for the current date (provided the
+current date is visible).
 
 @kindex m @r{(Calendar mode)}
 @findex mark-diary-entries
@@ -1023,10 +1030,10 @@
 diary-entry-marker, emacs-xtra}.  The command applies both to the
 currently visible months and to other months that subsequently become
 visible by scrolling.  To turn marking off and erase the current marks,
-type @kbd{u}, which also turns off holiday marks (@pxref{Holidays}).  If
-the variable @code{mark-diary-entries-in-calendar} is non-@code{nil},
-diary dates are marked in the calendar when it is created (or
-recomputed).
+type @kbd{u}, which also turns off holiday marks (@pxref{Holidays}).
+If the variable @code{mark-diary-entries-in-calendar} is
+non-@code{nil}, creating or updating the calendar marks diary dates
+automatically.
 
 @kindex s @r{(Calendar mode)}
 @findex show-all-diary-entries
@@ -1034,14 +1041,12 @@
 the @kbd{s} command.
 
   Display of selected diary entries uses the selective display feature
-to hide entries that don't apply.
-
-  The diary buffer as you see it is an illusion, so simply printing the
-buffer does not print what you see on your screen.  There is a special
-command to print hard copy of the diary buffer @emph{as it appears};
-this command is @kbd{M-x print-diary-entries}.  It sends the data
-directly to the printer.  You can customize it like @code{lpr-region}
-(@pxref{Hardcopy}).
+to hide entries that don't apply.  The diary buffer as you see it is
+an illusion, so simply printing the buffer does not print what you see
+on your screen.  There is a special command to print hard copy of the
+diary buffer @emph{as it appears}; this command is @kbd{M-x
+print-diary-entries}.  It sends the data directly to the printer.  You
+can customize it like @code{lpr-region} (@pxref{Hardcopy}).
 
 @findex diary
   The command @kbd{M-x diary} displays the diary entries for the current
--- a/man/cmdargs.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/cmdargs.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1196,8 +1196,9 @@
 @opindex -hb
 @itemx --horizontal-scroll-bars
 @opindex --horizontal-scroll-bars
-@cindex horizontal scroll bars, command-line argument
-Enable horizontal scroll bars.
+@c @cindex horizontal scroll bars, command-line argument
+Enable horizontal scroll bars.  Since horizontal scroll bars
+are not yet implemented, this actually does nothing.
 
 @item -vb
 @opindex -vb
--- a/man/commands.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/commands.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -169,8 +169,8 @@
 
   All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
 @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
-n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x
-6}, @key{ESC}, and @kbd{M-g}.  (@key{F1} and @key{F2} are aliases for
+n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6},
+@key{ESC}, @kbd{M-o} and @kbd{M-g}.  (@key{F1} and @key{F2} are aliases for
 @kbd{C-h} and @kbd{C-x 6}.)  But this list is not cast in concrete; it
 is just a matter of Emacs's standard key bindings.  If you customize
 Emacs, you can make new prefix keys, or eliminate these.  @xref{Key
--- a/man/custom.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/custom.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1636,6 +1636,27 @@
 (global-set-key [H-M-right] 'forward-word)
 @end example
 
+@cindex keypad
+  Many keyboards have a ``numeric keypad'' on the right hand side.
+The numeric keys in the keypad double up as cursor motion keys,
+toggled by a key labelled @samp{Num Lock}.  By default, Emacs
+translates these keys to the corresponding keys in the main keyboard
+(@pxref{Keyboard Translations}).  For example, when @samp{Num Lock} is
+on, the key labelled @samp{8} on the numeric keypad produces
+@code{kp-8}, which is translated to @kbd{8}; when @samp{Num Lock} is
+off, the same key produces @code{kp-up}, which is translated to
+@key{UP}.  If you rebind a key such as @kbd{8} or @key{UP}, it affects
+the equivalent keypad key too.  However, if you rebind a @samp{kp-}
+key directly, that won't affect its non-keypad equivalent.
+
+  Emacs provides a convenient method for binding the numeric keypad
+keys, using the variables @code{keypad-setup},
+@code{keypad-numlock-setup}, @code{keypad-shifted-setup}, and
+@code{keypad-numlock-shifted-setup}.  These can be found in the
+@samp{keyboard} customization group (@pxref{Easy Customization}).  You
+can rebind the keys to perform other tasks, such as issuing numeric
+prefix arguments.
+
 @node Named ASCII Chars
 @subsection Named @acronym{ASCII} Control Characters
 
--- a/man/dired.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/dired.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -39,6 +39,7 @@
 * Hiding Subdirectories::     Making subdirectories visible or invisible.
 * Updating: Dired Updating.   Discarding lines for files of no interest.
 * Find: Dired and Find.	      Using `find' to choose the files for Dired.
+* Wdired::                    Operating on files by editing the Dired buffer.
 * Misc: Misc Dired Features.  Various other features.
 @end menu
 
@@ -1103,6 +1104,39 @@
 Reverting the buffer with @kbd{g} deletes all inserted subdirectories,
 and erases all flags and marks.
 
+@node Wdired
+@section Editing the Dired Buffer
+
+@cindex wdired mode
+@findex wdired-change-to-wdired-mode
+  Wdired is a special mode that allows you to perform file operations
+by editing the Dired buffer directly (the ``W'' in ``Wdired'' stands
+for ``writable''.)  To enter Wdired mode, type @kbd{M-x
+wdired-change-to-wdired-mode} while in a Dired buffer.  Alternatively,
+use @samp{Edit File Names} in the @samp{Immediate} menu bar menu.
+
+@findex wdired-finish-edit
+  While in Wdired mode, you can rename files by editing the file names
+displayed in the Dired buffer.  All the ordinary Emacs editing
+commands, including rectangle operations and @code{query-replace}, are
+available for this.  Once you are done editing, type @kbd{C-c C-c}
+(@code{wdired-finish-edit}).  This applies your changes and switches
+back to ordinary Dired mode.
+
+  Apart from simply renaming files, you can move a file to another
+directory by typing in the new file name (either absolute or
+relative).  To mark a file for deletion, delete the entire filename.
+To change the target of a symbolic link, just edit the target name
+displayed next to the link name.
+
+  The rest of the text in the buffer, such as the file sizes and
+modification dates, is marked read-only, so you can't edit it.
+However, if you set @code{wdired-allow-to-change-permissions} to
+@code{t}, the file permission bits can also be edited.  For example,
+you can change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file
+world-writable.  These changes also take effect when you type @kbd{C-c
+C-c}.
+
 @node Misc Dired Features
 @section Other Dired Features
 
--- a/man/emacs-mime.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/emacs-mime.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -387,15 +387,15 @@
 
 @item mm-enable-external
 @vindex mm-enable-external
-Indicate whether external MIME handlers should be used.
+Indicate whether external @acronym{MIME} handlers should be used.
 
-If @code{t}, all defined external MIME handlers are used.  If
+If @code{t}, all defined external @acronym{MIME} handlers are used.  If
 @code{nil}, files are saved to disk (@code{mailcap-save-binary-file}).
 If it is the symbol @code{ask}, you are prompted before the external
 @acronym{MIME} handler is invoked.
 
 When you launch an attachment through mailcap (@pxref{mailcap}) an
-attempt is made to use a safe viewer with the safest options--this isn't
+attempt is made to use a safe viewer with the safest options---this isn't
 the case if you save it to disk and launch it in a different way
 (command line or double-clicking).  Anyhow, if you want to be sure not
 to launch any external programs, set this variable to @code{nil} or
@@ -1327,8 +1327,8 @@
 Quoted-Printable-like encoding) and @code{B} (base64).  This alist
 specifies which charset should use which encoding.
 
-@item rfc2047-encoding-function-alist
-@vindex rfc2047-encoding-function-alist
+@item rfc2047-encode-function-alist
+@vindex rfc2047-encode-function-alist
 This is an alist of encoding / function pairs.  The encodings are
 @code{Q}, @code{B} and @code{nil}.
 
@@ -1336,6 +1336,11 @@
 @vindex rfc2047-encoded-word-regexp
 When decoding words, this library looks for matches to this regexp.
 
+@item rfc2047-encode-encoded-words
+@vindex rfc2047-encode-encoded-words
+The boolean variable specifies whether encoded words
+(e.g. @samp{=?hello?=}) should be encoded again.
+
 @end table
 
 Those were the variables, and these are this functions:
@@ -1366,6 +1371,24 @@
 @findex rfc2047-decode-string
 Decode a string and return the results.
 
+@item rfc2047-encode-parameter
+@findex rfc2047-encode-parameter
+Encode a parameter in the RFC2047-like style.  This is a replacement for
+the @code{rfc2231-encode-string} function.  @xref{rfc2231}.
+
+When attaching files as @acronym{MIME} parts, we should use the RFC2231
+encoding to specify the file names containing non-@acronym{ASCII}
+characters.  However, many mail softwares don't support it in practice
+and recipients won't be able to extract files with correct names.
+Instead, the RFC2047-like encoding is acceptable generally.  This
+function provides the very RFC2047-like encoding, resigning to such a
+regrettable trend.  To use it, put the following line in your
+@file{~/.gnus.el} file:
+
+@lisp
+(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
+@end lisp
+
 @end table
 
 
--- a/man/emacs.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/emacs.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -224,11 +224,13 @@
 * Contributing::        How to contribute improvements to Emacs.
 * Service::	        How to get help for your own Emacs needs.
 
+
+Detailed Node Listing
+---------------------
+
 Here are some other nodes which are really inferiors of the ones
 already listed, mentioned here so you can get to them in one step:
 
- --- The Detailed Node Listing ---
-
 The Organization of the Screen
 
 * Point::	        The place in the text where editing commands operate.
@@ -563,6 +565,8 @@
 * Compilation Mode::    The mode for visiting compiler errors.
 * Compilation Shell::   Customizing your shell properly
                           for use in the compilation buffer.
+* Grep Searching::      Searching with grep.
+* Flymake::             Finding syntax errors on the fly.
 * Debuggers::		Running symbolic debuggers for non-Lisp programs.
 * Executing Lisp::	Various modes for editing Lisp programs,
 			  with different facilities for running
@@ -676,6 +680,9 @@
 * Hiding Subdirectories::    Making subdirectories visible or invisible.
 * Dired Updating::           Discarding lines for files of no interest.
 * Dired and Find::	     Using `find' to choose the files for Dired.
+* Dired and Find::           Using `find' to choose the files for Dired.
+* Wdired::                   Operating on files by editing the Dired buffer.
+* Misc Dired Features::      Various other features.
 
 The Calendar and the Diary
 
--- a/man/files.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/files.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -238,7 +238,7 @@
 of prompting for the file name in the minibuffer.  On Unix and
 GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and
 Motif toolkits; on MS-Windows, the GUI version does that by default.
-For information on how to customize this, see @xref{Dialog Boxes}.
+For information on how to customize this, see @ref{Dialog Boxes}.
 
   Secondly, Emacs supports the ``drag and drop'' protocol on the X
 window system.  Dropping a file into an ordinary Emacs window visits
@@ -940,14 +940,8 @@
 for a changed file.  Since checking a remote file is too slow, these
 modes do not check or revert remote files.
 
-@vindex auto-revert-check-vc-info
-  Whenever Auto Revert mode reverts the buffer, it updates the version
-control information, such as the version control number displayed in
-the mode line.  However, this information may not be properly updated
-if the version control state changes outside of Emacs---for example,
-if a new version is checked in from outside the current Emacs session.
-If you set @code{auto-revert-check-vc-info} to @code{t}, Auto Revert
-mode will update the version control status information periodically.
+@xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
+visit files under version control.
 
 @node Auto Save
 @section Auto-Saving: Protection Against Disasters
@@ -1272,6 +1266,10 @@
 SCCS only if for some reason you cannot use RCS, or one of the
 higher-level systems such as CVS or GNU Arch.
 
+In the following, we discuss mainly RCS, SCCS and CVS.  Nearly
+everything said about CVS applies to Gnu Arch, Subversion and Meta-CVS
+as well.
+
 @node VC Concepts
 @subsubsection Concepts of Version Control
 
@@ -1371,6 +1369,18 @@
 that it is modified.  If the file is locked by some other user (for
 instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
 
+@vindex auto-revert-check-vc-info
+  When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is
+under version control, it updates the version control information in
+the mode line.  However, Auto Revert mode may not properly update this
+information if the version control status changes without changes to
+the work file, from outside the current Emacs session.  If you set
+@code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates
+the version control status information every
+@code{auto-revert-interval} seconds, even if the work file itself is
+unchanged.  The resulting CPU usage depends on the version control
+system, but is usually not excessive.
+
 @node Basic VC Editing
 @subsection Basic Editing under Version Control
 
@@ -1472,9 +1482,9 @@
 since you began editing it, and when this happens, his changes will be
 effectively removed when you check in your version (though they will
 remain in the master file, so they will not be entirely lost).  You must
-therefore verify the current version is unchanged, before you check in your
-changes.  We hope to eliminate this risk and provide automatic merging
-with RCS in a future Emacs version.
+therefore verify that the current version is unchanged, before you
+check in your changes.  We hope to eliminate this risk and provide
+automatic merging with RCS in a future Emacs version.
 
   In addition, locking is possible with RCS even in this mode, although
 it is not required; @kbd{C-x v v} with an unmodified file locks the
@@ -1698,13 +1708,10 @@
 that appears first in @code{vc-handled-backends} (@pxref{Customizing VC}).
 On the other hand, if there are no files already registered,
 Emacs uses the first system from @code{vc-handled-backends} that could
-register the file---for example, you cannot register a file under CVS if
-its directory is not already part of a CVS tree.
-
-  With the default value of @code{vc-handled-backends}, this means
-that Emacs uses RCS if there are any files under RCS control, CVS if
-there are any files under CVS, SCCS if any files are under SCCS, or
-RCS as the ultimate default.
+register the file (for example, you cannot register a file under CVS if
+its directory is not already part of a CVS tree); with the default
+value of @code{vc-handled-backends}, this means that Emacs uses RCS in
+this situation.
 
   If locking is in use, @kbd{C-x v i} leaves the file unlocked and
 read-only.  Type @kbd{C-x v v} if you wish to start editing it.  After
@@ -1892,7 +1899,8 @@
 If it operates on more than one file, it handles each file according to
 its current state; thus, it might lock one file, but check in another
 file.  This could be confusing; it is up to you to avoid confusing
-behavior by marking a set of files that are in a similar state.
+behavior by marking a set of files that are in a similar state.  If no
+files are marked, @kbd{v v} operates on the file in the current line.
 
   If any files call for check-in, @kbd{v v} reads a single log entry,
 then uses it for all the files being checked in.  This is convenient for
@@ -1920,8 +1928,7 @@
 features.  Each such independent line of development is called a
 @dfn{branch}.  VC allows you to create branches, switch between
 different branches, and merge changes from one branch to another.
-Please note, however, that branches are only supported for RCS at the
-moment.
+Please note, however, that branches are not supported for SCCS.
 
   A file's main line of development is usually called the @dfn{trunk}.
 The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc.  At
@@ -2264,7 +2271,8 @@
 correspond to those of CVS.  Technically, this is not a problem, but
 it can become difficult to keep track of what is in the CVS repository
 and what is not.  So we suggest that you return from time to time to
-CVS-only operation, using @kbd{C-u C-x v v cvs @key{RET}}.
+CVS-only operation, by committing your local changes back to the
+repository using @kbd{C-u C-x v v cvs @key{RET}}.
 
 @node Snapshots
 @subsection Snapshots
@@ -2552,13 +2560,11 @@
 Insert headers in a file for use with your version-control system.
 @end table
 
-@vindex vc-header-alist
+@vindex vc-@var{backend}-header
   The default header string is @samp{@w{$}Id$} for RCS and
 @samp{@w{%}W%} for SCCS.  You can specify other headers to insert by
-setting the variable @code{vc-header-alist}.  Its value is a list of
-elements of the form @code{(@var{program} . @var{string})} where
-@var{program} is @code{RCS} or @code{SCCS} and @var{string} is the
-string to use.
+setting the variables @code{vc-@var{backend}-header} where
+@var{backend} is @code{rcs} or @code{sccs}.
 
   Instead of a single string, you can specify a list of strings; then
 each string in the list is inserted as a separate header on a line of
@@ -2586,8 +2592,8 @@
 @var{regexp} matches the buffer name, @var{format} is inserted as part
 of the header.  A header line is inserted for each element that matches
 the buffer name, and for each string specified by
-@code{vc-header-alist}.  The header line is made by processing the
-string from @code{vc-header-alist} with the format taken from the
+@code{vc-@var{backend}-header}.  The header line is made by processing the
+string from @code{vc-@var{backend}-header} with the format taken from the
 element.  The default value for @code{vc-static-header-alist} is as follows:
 
 @example
@@ -2624,10 +2630,10 @@
 @vindex vc-handled-backends
 The variable @code{vc-handled-backends} determines which version
 control systems VC should handle.  The default value is @code{(RCS CVS
-SCCS)}, so it contains all three version systems that are currently
-supported.  If you want VC to ignore one or more of these systems,
-exclude its name from the list.  To disable VC entirely, set this
-variable to @code{nil}.
+SVN SCCS Arch MCVS)}, so it contains all six version systems that are
+currently supported.  If you want VC to ignore one or more of these
+systems, exclude its name from the list.  To disable VC entirely, set
+this variable to @code{nil}.
 
 The order of systems in the list is significant: when you visit a file
 registered in more than one system (@pxref{Local Version Control}),
@@ -2780,8 +2786,9 @@
 @key{RET}}, @pxref{Merging}).
 
 @vindex vc-cvs-global-switches
-  The variable @code{vc-cvs-global-switches} should be a string
-specifying switches to pass to CVS for all CVS operations.
+  The variable @code{vc-cvs-global-switches}, if non-@code{nil},
+should be a string specifying switches to pass to CVS for all CVS
+operations.
 
   When @code{vc-cvs-stay-local} is @code{t}, VC also makes local
 version backups, so that simple diff and revert operations are
@@ -2900,7 +2907,7 @@
   With a numeric argument, @code{compare-windows} ignores changes in
 whitespace.  If the variable @code{compare-ignore-case} is
 non-@code{nil}, the comparison ignores differences in case as well.
-If the variable @code{compare-ignore-whitespace} is non-nil,
+If the variable @code{compare-ignore-whitespace} is non-@code{nil},
 @code{compare-windows} normally ignores changes in whitespace, and a
 prefix argument turns that off.
 
@@ -3298,6 +3305,10 @@
 @node File Conveniences
 @section Convenience Features for Finding Files
 
+  In this section, we introduce some convenient facilities for finding
+recently-opened files, reading file names from a buffer, and viewing
+image files.
+
 @findex recentf-mode
 @vindex recentf-mode
 @findex recentf-save-list
@@ -3308,25 +3319,22 @@
 @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list}
 edits it.
 
-@findex auto-image-file-mode
-@findex mode, auto-image-file
-@cindex images, visiting
-@cindex visiting image files
-@vindex image-file-name-regexps
-@vindex image-file-name-extensions
-  When Auto-image-file minor mode is enabled, visiting an image file
-displays it as an image, not as text.  Likewise, inserting an image
-file into a buffer inserts it as an image.  This works only when Emacs
-can display the relevant image type.  The variables
-@code{image-file-name-extensions} or @code{image-file-name-regexps}
-control which file names are recognized as containing images.
-
   The @kbd{M-x ffap} command generalizes @code{find-file} with more
 powerful heuristic defaults (@pxref{FFAP}), often based on the text at
 point.  Partial Completion mode offers other features extending
 @code{find-file}, which can be used with @code{ffap}.
 @xref{Completion Options}.
 
+@findex thumbs-mode
+@findex mode, thumbs
+  Thumbs mode is a major mode for viewing directories containing many
+image files.  To use it, type @kbd{M-x thumbs} and specify the
+directory to view.  The images in that directory will be displayed in
+a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a
+thumbnail to view the full-size image.  Thumbs mode requires the
+@file{convert} program, which is part of the ImageMagick software
+package.
+
 @ignore
    arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250
 @end ignore
--- a/man/gnus-faq.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/gnus-faq.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1,210 +1,203 @@
-@c Insert  "\input texinfo" at 1st line before texing this file alone.
-@c -*-texinfo-*-
-@c Copyright (C) 1995, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
+@c \input texinfo @c -*-texinfo-*-
+@c Uncomment 1st line before texing this file alone.
+@c %**start of header
+@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+@c
+@c Do not modify this file, it was generated from gnus-faq.xml, available from
+@c <URL:http://my.gnus.org/FAQ/>.
+@c
 @setfilename gnus-faq.info
-
-@c Frequently Asked Questions, FAQ - Introduction, Emacs for Heathens, Top
+@settitle Frequently Asked Questions
+@c %**end of header
+@c
 
 @node Frequently Asked Questions
-@comment  node-name,  next,  previous,  up
-
-@c @chapter Frequently Asked Questions
 @section Frequently Asked Questions
-@cindex FAQ
-@cindex Frequently Asked Questions
-
-@c - Uncomment @chapter, comment @section
-@c - run (texinfo-every-node-update)
-@c - revert it.
 
 @menu
-* FAQ - Introduction::                    About Gnus and this FAQ.
-* FAQ 1 - Installation::                  Installation of Gnus.
-* FAQ 2 - Startup / Group buffer::        Start up questions and the first
-                                          buffer Gnus shows you.
-* FAQ 3 - Getting messages::              Making Gnus read your mail and news.
-* FAQ 4 - Reading messages::              How to efficiently read messages.
-* FAQ 5 - Composing messages::            Composing mails or Usenet postings.
-* FAQ 6 - Old messages::                  Importing, archiving, searching
-                                          and deleting messages.
-* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline.
-* FAQ 8 - Getting help::                  When this FAQ isn't enough.
-* FAQ 9 - Tuning Gnus::                   How to make Gnus faster.
-* FAQ - Glossary::                        Terms used in the FAQ explained.
+* FAQ - Changes::                           
+* FAQ - Introduction::                       About Gnus and this FAQ.
+* FAQ 1 - Installation FAQ::                 Installation of Gnus.
+* FAQ 2 - Startup / Group buffer::           Start up questions and the
+                                             first buffer Gnus shows you.
+* FAQ 3 - Getting Messages::                 Making Gnus read your mail
+                                             and news.
+* FAQ 4 - Reading messages::                 How to efficiently read
+                                             messages.
+* FAQ 5 - Composing messages::               Composing mails or Usenet
+                                             postings.
+* FAQ 6 - Old messages::                     Importing, archiving,
+                                             searching and deleting messages.
+* FAQ 7 - Gnus in a dial-up environment::    Reading mail and news while
+                                             offline.
+* FAQ 8 - Getting help::                     When this FAQ isn't enough.
+* FAQ 9 - Tuning Gnus::                      How to make Gnus faster.
+* FAQ - Glossary::                           Terms used in the FAQ
+                                             explained.
 @end menu
 
-
 @subheading Abstract
 
- This is the new Gnus Frequently Asked Questions list.  If you have a
-Web browser, the official hypertext version is at
-@uref{http://my.gnus.org/FAQ/}, the Docbook source is available from
-@uref{http://sourceforge.net/projects/gnus/}.
- 
-
- Please submit features and suggestions to the 
- @email{faq-discuss@@my.gnus.org,FAQ discussion list}.
- The list is protected against junk mail with
- @uref{http://smarden.org/qconfirm/index.html,qconfirm, qconfirm}. As
- a subscriber, your submissions will automatically pass. You can
- also subscribe to the list by sending a blank email to
- @email{faq-discuss-subscribe@@my.gnus.org}
- and
- @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse
- the archive, browse the archive}. 
- 
-@node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions
-@comment  node-name,  next,  previous,  up
-@heading Introduction
+This is the new Gnus Frequently Asked Questions list.
+If you have a Web browser, the official hypertext version is at
+@uref{http://my.gnus.org/FAQ/},
+the Docbook source is available from
+@uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}.
+
+Please submit features and suggestions to the 
+@email{faq-discuss@@my.gnus.org, FAQ discussion list}.
+The list is protected against junk mail with
+@uref{http://smarden.org/qconfirm/index.html, qconfirm}. As
+a subscriber, your submissions will automatically pass.  You can
+also subscribe to the list by sending a blank email to
+@email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org}
+and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse
+the archive}.
+
+@node FAQ - Changes
+@subheading Changes
+
+
+
+@itemize @bullet
+
+@item
+Updated FAQ to reflect release of Gnus 5.10 and start of
+No Gnus development.
+@end itemize
+
+@node FAQ - Introduction
+@subheading Introduction
 
 This is the Gnus Frequently Asked Questions list.
 
 Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
- as a part of Emacs. It's been around in some form for almost a decade
- now, and has been distributed as a standard part of Emacs for much of
- that time. Gnus 5 is the latest (and greatest) incarnation. The
- original version was called GNUS, and was written by Masanobu UMEDA.
- When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
- decided to rewrite Gnus.
-
- Its biggest strength is the fact that it is extremely
- customizable. It is somewhat intimidating at first glance, but
- most of the complexity can be ignored until you're ready to take
- advantage of it. If you receive a reasonable volume of e-mail
- (you're on various mailing lists), or you would like to read
- high-volume mailing lists but cannot keep up with them, or read
- high volume newsgroups or are just bored, then Gnus is what you
- want.
-
- This FAQ was maintained by Justin Sheehy until March 2002. He
- would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
- job with this FAQ before him. We would like to do the same - thanks,
- Justin!
- 
-
- If you have a Web browser, the official hypertext version is at:@*
- @uref{http://my.gnus.org/FAQ/}.
- This version is much nicer than the unofficial hypertext
- versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
- State, and other FAQ archives. See the resources question below
- if you want information on obtaining it in another format.
- 
-
- The information contained here was compiled with the assistance
- of the Gnus development mailing list, and any errors or
- misprints are the my.gnus.org team's fault, sorry.
-
-
-@ifnottex
-@node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions
-@end ifnottex
-@subsection Installation
+as a part of Emacs. It's been around in some form for almost a decade
+now, and has been distributed as a standard part of Emacs for much of
+that time. Gnus 5 is the latest (and greatest) incarnation. The
+original version was called GNUS, and was written by Masanobu UMEDA.
+When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
+decided to rewrite Gnus.
+
+Its biggest strength is the fact that it is extremely
+customizable. It is somewhat intimidating at first glance, but
+most of the complexity can be ignored until you're ready to take
+advantage of it. If you receive a reasonable volume of e-mail
+(you're on various mailing lists), or you would like to read
+high-volume mailing lists but cannot keep up with them, or read
+high volume newsgroups or are just bored, then Gnus is what you
+want.
+
+This FAQ was maintained by Justin Sheehy until March 2002. He
+would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
+job with this FAQ before him. We would like to do the same - thanks,
+Justin!
+
+If you have a Web browser, the official hypertext version is at:
+@uref{http://my.gnus.org/FAQ/}.
+This version is much nicer than the unofficial hypertext
+versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
+State, and other FAQ archives. See the resources question below
+if you want information on obtaining it in another format.
+
+The information contained here was compiled with the assistance
+of the Gnus development mailing list, and any errors or
+misprints are the my.gnus.org team's fault, sorry.
+
+@node FAQ 1 - Installation FAQ
+@subsection Installation FAQ
 
 @menu
-* [1.1]::   What is the latest version of Gnus?
-* [1.2]::   What's new in 5.10?
-* [1.3]::   Where and how to get Gnus?
-* [1.4]::   What to do with the tarball now? 
-* [1.5]::   Which version of Emacs do I need?
-* [1.6]::   How do I run Gnus on both Emacs and XEmacs?
+* [1.1]::    What is the latest version of Gnus?
+* [1.2]::    What's new in 5.10?
+* [1.3]::    Where and how to get Gnus?
+* [1.4]::    What to do with the tarball now?
+* [1.5]::    I sometimes read references to No Gnus and Oort Gnus, what
+             are those?
+* [1.6]::    Which version of Emacs do I need?
+* [1.7]::    How do I run Gnus on both Emacs and XEmacs?
 @end menu
 
-
-@ifnottex
-@node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.1: 
+@node [1.1]
+@subsubheading Question 1.1
 
 What is the latest version of Gnus?
 
-Answer: 
-
- Jingle please: Gnus 5.10 is released, get it while it's
- hot! As well as the step in version number is rather
- small, Gnus 5.10 has tons of new features which you
- shouldn't miss, however if you are cautious, you might
- prefer to stay with 5.8.8 respectively 5.9 (they are
- basically the same) until some bugfix releases are out.
- 
-@ifnottex
-@node [1.2], [1.3], [1.1], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.2: 
+@subsubheading Answer
+
+Jingle please: Gnus 5.10 is released, get it while it's
+hot! As well as the step in version number is rather
+small, Gnus 5.10 has tons of new features which you
+shouldn't miss. The current release (5.10.6) should be at
+least as stable as the latest release of the 5.8 series.
+
+@node [1.2]
+@subsubheading Question 1.2
 
 What's new in 5.10?
 
-Answer: 
-
- First of all, you should have a look into the file
- GNUS-NEWS in the toplevel directory of the Gnus tarball,
- there the most important changes are listed. Here's a
- short list of the changes I find especially
- important/interesting:
- 
-
- 
-
-@itemize @bullet{}
+@subsubheading Answer
+
+First of all, you should have a look into the file
+GNUS-NEWS in the toplevel directory of the Gnus tarball,
+there the most important changes are listed. Here's a
+short list of the changes I find especially
+important/interesting:
+
+@itemize @bullet
+
+@item
+Major rewrite of the Gnus agent, Gnus agent is now
+active by default.
+
+@item
+Many new article washing functions for dealing with
+ugly formatted articles.
+
+@item
+Anti Spam features.
+
+@item
+Message-utils now included in Gnus.
 
 @item
- Major rewrite of the Gnus agent, Gnus agent is now
- active by default.
- 
-@item
- Many new article washing functions for dealing with
- ugly formatted articles.
- 
-@item
- Anti Spam features.
- 
-@item
- message-utils now included in Gnus.
- 
-@item
- New format specifiers for summary lines, e.g. %B for
- a complex trn-style thread tree.
- 
+New format specifiers for summary lines, e.g. %B for
+a complex trn-style thread tree.
 @end itemize
- 
-@ifnottex
-@node [1.3], [1.4], [1.2], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.3: 
+
+@node [1.3]
+@subsubheading Question 1.3
 
 Where and how to get Gnus?
 
-Answer: 
-
- The latest released version of Gnus isn't included in
- Emacs 21 and until now it also isn't available through the
- package system of XEmacs 21.4, therefor you should get the
- Gnus tarball from
- @uref{http://www.gnus.org/dist/gnus.tar.gz}
- or via anonymous FTP from 
- @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
- 
-@ifnottex
-@node [1.4], [1.5], [1.3], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.4: 
-
- What to do with the tarball now?
- 
-
-Answer: 
-
- Untar it via @samp{tar xvzf gnus.tar.gz} and do the common 
- @samp{./configure; make; make install} circle.
- (under MS-Windows either get the Cygwin environment from
- @uref{http://www.cygwin.com}
- which allows you to do what's described above or unpack the
- tarball with some packer (e.g. Winace from
- @uref{http://www.winace.com})
- and use the batch-file make.bat included in the tarball to install
- Gnus. If you don't want to (or aren't allowed to) install Gnus
- system-wide, you can install it in your home directory and add the
- following lines to your ~/.xemacs/init.el or ~/.emacs:
- 
+@subsubheading Answer
+
+The latest released version of Gnus isn't included in
+Emacs 21, therefor you should get the Gnus tarball from
+@uref{http://www.gnus.org/dist/gnus.tar.gz}
+or via anonymous FTP from 
+@uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
+If you use XEmacs instead of Emacs you can use XEmacs'
+package system instead.
+
+@node [1.4]
+@subsubheading Question 1.4
+
+What to do with the tarball now?
+
+@subsubheading Answer
+
+Untar it via @samp{tar xvzf gnus.tar.gz} and do the common 
+@samp{./configure; make; make install} circle.
+(under MS-Windows either get the Cygwin environment from
+@uref{http://www.cygwin.com}
+which allows you to do what's described above or unpack the
+tarball with some packer (e.g. Winace from
+@uref{http://www.winace.com})
+and use the batch-file make.bat included in the tarball to install
+Gnus.) If you don't want to (or aren't allowed to) install Gnus
+system-wide, you can install it in your home directory and add the
+following lines to your ~/.xemacs/init.el or ~/.emacs:
 
 @example
 (add-to-list 'load-path "/path/to/gnus/lisp")
@@ -212,436 +205,395 @@
     (add-to-list 'Info-directory-list "/path/to/gnus/texi/")
   (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))
 @end example
-
 @noindent
- Make sure that you don't have any Gnus related stuff
- before this line, on MS Windows use something like
- "C:/path/to/lisp" (yes, "/").
- 
-@ifnottex
-@node [1.5], [1.6], [1.4], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.5: 
+
+Make sure that you don't have any Gnus related stuff
+before this line, on MS Windows use something like
+"C:/path/to/lisp" (yes, "/").
+
+@node [1.5]
+@subsubheading Question 1.5
+
+I sometimes read references to No Gnus and Oort Gnus,
+what are those?
+
+@subsubheading Answer
+
+Oort Gnus was the name of the development version of
+Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is
+the name of the current development version which will
+once become Gnus 5.12 or Gnus 6. (If you're wondering why
+not 5.11, the odd version numbers are normally used for
+the Gnus versions bundled with Emacs)
+
+@node [1.6]
+@subsubheading Question 1.6
 
 Which version of Emacs do I need?
 
-Answer: 
-
- Gnus 5.10 requires an Emacs version that is greater
- than or equal to Emacs 20.7 or XEmacs 21.1.
- 
-@ifnottex
-@node [1.6],  , [1.5], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.6: 
+@subsubheading Answer
+
+Gnus 5.10 requires an Emacs version that is greater
+than or equal to Emacs 20.7 or XEmacs 21.1. The
+development versions of Gnus (aka No Gnus) require Emacs
+21 or XEmacs 21.4.
+
+@node [1.7]
+@subsubheading Question 1.7
 
 How do I run Gnus on both Emacs and XEmacs?
 
-Answer: 
-
- You can't use the same copy of Gnus in both as the Lisp
- files are byte-compiled to a format which is different
- depending on which Emacs did the compilation. Get one copy
- of Gnus for Emacs and one for XEmacs.
- 
-@ifnottex
-@node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions
-@end ifnottex
+@subsubheading Answer
+
+You can't use the same copy of Gnus in both as the Lisp
+files are byte-compiled to a format which is different
+depending on which Emacs did the compilation. Get one copy
+of Gnus for Emacs and one for XEmacs.
+
+@node FAQ 2 - Startup / Group buffer
 @subsection Startup / Group buffer
 
 @menu
-* [2.1]::   Every time I start Gnus I get a message
-            "Gnus auto-save file exists. Do you want to read it?", 
-            what does this mean and how to prevent it? 
-* [2.2]::   Gnus doesn't remember which groups I'm subscribed to, what's this? 
-* [2.3]::   How to change the format of the lines in Group buffer? 
-* [2.4]::   My group buffer becomes a bit crowded, is there a way to sort my
-            groups into categories so I can easier browse through them?
-* [2.5]::   How to manually sort the groups in Group buffer? How to sort the
-            groups in a topic? 
+* [2.1]::    Every time I start Gnus I get a message "Gnus auto-save
+             file exists. Do you want to read it?", what does this mean and
+             how to prevent it?
+* [2.2]::    Gnus doesn't remember which groups I'm subscribed to,
+             what's this?
+* [2.3]::    How to change the format of the lines in Group buffer?
+* [2.4]::    My group buffer becomes a bit crowded, is there a way to
+             sort my groups into categories so I can easier browse through
+             them?
+* [2.5]::    How to manually sort the groups in Group buffer? How to
+             sort the groups in a topic?
 @end menu
 
-@ifnottex
-@node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.1: 
-
- Every time I start Gnus I get a message "Gnus auto-save
- file exists. Do you want to read it?", what does this mean
- and how to prevent it?
- 
-
-Answer: 
-
- This message means that the last time you used Gnus, it
- wasn't properly exited and therefor couldn't write its
- informations to disk (e.g. which messages you read), you
- are now asked if you want to restore those informations
- from the auto-save file.
- 
-
- To prevent this message make sure you exit Gnus
- via @samp{q} in group buffer instead of
- just killing Emacs.
- 
-@ifnottex
-@node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question: 2.2 
-
- Gnus doesn't remember which groups I'm subscribed to,
- what's this?
- 
-
-Answer: 
-
- You get the message described in the q/a pair above while
- starting Gnus, right? It's an other symptom for the same
- problem, so read the answer above.
- 
-@ifnottex
-@node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.3: 
-
- How to change the format of the lines in Group buffer?
- 
-
-Answer: 
-
- You've got to tweak the value of the variable
- gnus-group-line-format. See the manual node "Group Line
- Specification" for information on how to do this. An
- example for this (guess from whose .gnus :-)):
- 
+@node [2.1]
+@subsubheading Question 2.1
+
+Every time I start Gnus I get a message "Gnus auto-save
+file exists. Do you want to read it?", what does this mean
+and how to prevent it?
+
+@subsubheading Answer
+
+This message means that the last time you used Gnus, it
+wasn't properly exited and therefor couldn't write its
+informations to disk (e.g. which messages you read), you
+are now asked if you want to restore those informations
+from the auto-save file.
+
+To prevent this message make sure you exit Gnus
+via @samp{q} in group buffer instead of
+just killing Emacs.
+
+@node [2.2]
+@subsubheading Question 2.2
+
+Gnus doesn't remember which groups I'm subscribed to,
+what's this?
+
+@subsubheading Answer
+
+You get the message described in the q/a pair above while
+starting Gnus, right? It's an other symptom for the same
+problem, so read the answer above.
+
+@node [2.3]
+@subsubheading Question 2.3
+
+How to change the format of the lines in Group buffer?
+
+@subsubheading Answer
+
+You've got to tweak the value of the variable
+gnus-group-line-format. See the manual node "Group Line
+Specification" for information on how to do this. An
+example for this (guess from whose .gnus :-)):
 
 @example
-
 (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n")
-            
 @end example
- 
-@ifnottex
-@node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.4: 
-
- My group buffer becomes a bit crowded, is there a way to
- sort my groups into categories so I can easier browse
- through them?
- 
-
-Answer: 
-
- Gnus offers the topic mode, it allows you to sort your
- groups in, well, topics, e.g. all groups dealing with
- Linux under the topic linux, all dealing with music under
- the topic music and all dealing with scottish music under
- the topic scottish which is a subtopic of music.
- 
-
- To enter topic mode, just hit t while in Group buffer. Now
- you can use @samp{T n} to create a topic
- at point and @samp{T m} to move a group to
- a specific topic. For more commands see the manual or the
- menu. You might want to include the %P specifier at the
- beginning of your gnus-group-line-format variable to have
- the groups nicely indented.
- 
-@ifnottex
-@node [2.5],  , [2.4], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.5: 
-
- How to manually sort the groups in Group buffer? How to
- sort the groups in a topic?
- 
-
-Answer: 
-
- Move point over the group you want to move and
- hit @samp{C-k}, now move point to the
- place where you want the group to be and
- hit @samp{C-y}.
- 
-@ifnottex
-@node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions
-@end ifnottex
-@subsection Getting messages
+@noindent
+
+@node [2.4]
+@subsubheading Question 2.4
+
+My group buffer becomes a bit crowded, is there a way to
+sort my groups into categories so I can easier browse
+through them?
+
+@subsubheading Answer
+
+Gnus offers the topic mode, it allows you to sort your
+groups in, well, topics, e.g. all groups dealing with
+Linux under the topic linux, all dealing with music under
+the topic music and all dealing with scottish music under
+the topic scottish which is a subtopic of music.
+
+To enter topic mode, just hit t while in Group buffer. Now
+you can use @samp{T n} to create a topic
+at point and @samp{T m} to move a group to
+a specific topic. For more commands see the manual or the
+menu. You might want to include the %P specifier at the
+beginning of your gnus-group-line-format variable to have
+the groups nicely indented.
+
+@node [2.5]
+@subsubheading Question 2.5
+
+How to manually sort the groups in Group buffer? How to
+sort the groups in a topic?
+
+@subsubheading Answer
+
+Move point over the group you want to move and
+hit @samp{C-k}, now move point to the
+place where you want the group to be and
+hit @samp{C-y}.
+
+@node FAQ 3 - Getting Messages
+@subsection Getting Messages
 
 @menu
-* [3.1]::   I just installed Gnus, started it via M-x gnus but it only says
-            "nntp (news) open error", what to do? 
-* [3.2]::   I'm working under Windows and have no idea what ~/.gnus means. 
-* [3.3]::   My news server requires authentication, how to store user name
-            and password on disk? 
-* [3.4]::   Gnus seems to start up OK, but I can't find out how to
-            subscribe to a group. 
-* [3.5]::   Gnus doesn't show all groups / Gnus says I'm not allowed to
-            post on this server as well as I am, what's that?
-* [3.6]::   I want Gnus to fetch news from several servers, is this possible? 
-* [3.7]::   And how about local spool files? 
-* [3.8]::   OK, reading news works now, but I want to be able to read my mail
-            with Gnus, too. How to do it? 
-* [3.9]::   And what about IMAP? 
-* [3.10]::  At the office we use one of those MS Exchange servers,
-            can I use Gnus to read my mail from it? 
-* [3.11]::  Can I tell Gnus not to delete the mails on the server
-            it retrieves via POP3? 
+* [3.1]::     I just installed Gnus, started it via  @samp{M-x gnus} 
+              but it only says "nntp (news) open error", what to do?
+* [3.2]::     I'm working under Windows and have no idea what ~/.gnus.el
+              means.
+* [3.3]::     My news server requires authentication, how to store user
+              name and password on disk?
+* [3.4]::     Gnus seems to start up OK, but I can't find out how to
+              subscribe to a group.
+* [3.5]::     Gnus doesn't show all groups / Gnus says I'm not allowed
+              to post on this server as well as I am, what's that?
+* [3.6]::     I want Gnus to fetch news from several servers, is this
+              possible?
+* [3.7]::     And how about local spool files?
+* [3.8]::     OK, reading news works now, but I want to be able to read
+              my mail with Gnus, too. How to do it?
+* [3.9]::     And what about IMAP?
+* [3.10]::    At the office we use one of those MS Exchange servers, can
+              I use Gnus to read my mail from it?
+* [3.11]::    Can I tell Gnus not to delete the mails on the server it
+              retrieves via POP3?
 @end menu
 
-@ifnottex
-@node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.1: 
-
- I just installed Gnus, started it via 
- @samp{M-x gnus} 
- but it only says "nntp (news) open error", what to do?
- 
-
-Answer: 
-
- You've got to tell Gnus where to fetch the news from. Read
- the documentation for information on how to do this. As a
- first start, put those lines in ~/.gnus:
- 
+@node [3.1]
+@subsubheading Question 3.1
+
+I just installed Gnus, started it via 
+@samp{M-x gnus} 
+but it only says "nntp (news) open error", what to do?
+
+@subsubheading Answer
+
+You've got to tell Gnus where to fetch the news from. Read
+the documentation for information on how to do this. As a
+first start, put those lines in ~/.gnus.el:
 
 @example
 (setq gnus-select-method '(nntp "news.yourprovider.net"))
 (setq user-mail-address "you@@yourprovider.net")
 (setq user-full-name "Your Name")
 @end example
- 
-@ifnottex
-@node [3.2], [3.3], [3.1], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.2: 
-
- I'm working under Windows and have no idea what ~/.gnus means.
- 
-
-Answer: 
-
- The ~/ means the home directory where Gnus and Emacs look for the
-configuration files. However, you don't really need to know what this
-means, it suffices that Emacs knows what it means :-) You can type
-@samp{C-x C-f ~/.gnus RET } (yes, with the forward slash, even on
-Windows), and Emacs will open the right file for you. (It will most
-likely be new, and thus empty.)  However, I'd discourage you from
-doing so, since the directory Emacs chooses will most certainly not be
-what you want, so let's do it the correct way.  The first thing you've
-got to do is to create a suitable directory (no blanks in directory
-name please) e.g. @file{c:\myhome}. Then you must set the environment
-variable HOME to this directory. To do this under Win9x or Me include
-the line
- 
+@noindent
+
+@node [3.2]
+@subsubheading Question 3.2
+
+I'm working under Windows and have no idea what ~/.gnus.el means.
+
+@subsubheading Answer
+
+The ~/ means the home directory where Gnus and Emacs look
+for the configuration files.  However, you don't really
+need to know what this means, it suffices that Emacs knows
+what it means :-) You can type 
+@samp{C-x C-f ~/.gnus.el RET } 
+(yes, with the forward slash, even on Windows), and
+Emacs will open the right file for you.  (It will most
+likely be new, and thus empty.)
+However, I'd discourage you from doing so, since the
+directory Emacs chooses will most certainly not be what
+you want, so let's do it the correct way. 
+The first thing you've got to do is to
+create a suitable directory (no blanks in directory name
+please) e.g. c:\myhome. Then you must set the environment
+variable HOME to this directory.  To do this under Win9x
+or Me include the line
 
 @example
-
 SET HOME=C:\myhome
-            
 @end example
-
 @noindent
- in your autoexec.bat and reboot. Under NT, 2000 and XP,
- hit Winkey+Pause/Break to enter system options (if it
- doesn't work, go to Control Panel -> System). There you'll
- find the possibility to set environment variables, create
- a new one with name HOME and value @file{c:\myhome}, a reboot is
- not necessary.
- 
-
- Now to create ~/.gnus, say
- @samp{C-x C-f ~/.gnus RET C-x C-s}.
- in Emacs. 
- 
-@ifnottex
-@node [3.3], [3.4], [3.2], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.3: 
-
- My news server requires authentication, how to store
- user name and password on disk?
- 
-
-Answer: 
-
- Create a file ~/.authinfo which includes for each server a line like this
- 
+
+in your autoexec.bat and reboot.  Under NT, 2000 and XP,
+hit Winkey+Pause/Break to enter system options (if it
+doesn't work, go to Control Panel -> System). There you'll
+find the possibility to set environment variables, create
+a new one with name HOME and value C:\myhome, a reboot is
+not necessary.
+
+Now to create ~/.gnus.el, say
+@samp{C-x C-f ~/.gnus.el RET C-x C-s}.
+in Emacs.
+
+@node [3.3]
+@subsubheading Question 3.3
+
+My news server requires authentication, how to store
+user name and password on disk?
+
+@subsubheading Answer
+
+Create a file ~/.authinfo which includes for each server a line like this
 
 @example
 machine news.yourprovider.net login YourUserName password YourPassword
 @end example
-
 @noindent
 .
- Make sure that the file isn't readable to others if you
- work on a OS which is capable of doing so. (Under Unix
- say 
-
+Make sure that the file isn't readable to others if you
+work on a OS which is capable of doing so.  (Under Unix
+say 
 @example
 chmod 600 ~/.authinfo
 @end example
-
 @noindent
- in a shell.)
- 
-@ifnottex
-@node [3.4], [3.5], [3.3], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.4: 
-
- Gnus seems to start up OK, but I can't find out how to
- subscribe to a group.
- 
-
-Answer: 
-
- If you know the name of the group say @samp{U
- name.of.group RET} in group buffer (use the
- tab-completion Luke). Otherwise hit ^ in group buffer,
- this brings you to the server buffer. Now place point (the
- cursor) over the server which carries the group you want,
- hit @samp{RET}, move point to the group
- you want to subscribe to and say @samp{u}
- to subscribe to it.
- 
-@ifnottex
-@node [3.5], [3.6], [3.4], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.5: 
-
- Gnus doesn't show all groups / Gnus says I'm not allowed to
- post on this server as well as I am, what's that?
- 
-
-Answer: 
-
- Some providers allow restricted anonymous access and full
- access only after authorization. To make Gnus send authinfo
- to those servers append 
- 
+
+in a shell.)
+
+@node [3.4]
+@subsubheading Question 3.4
+
+Gnus seems to start up OK, but I can't find out how to
+subscribe to a group.
+
+@subsubheading Answer
+
+If you know the name of the group say @samp{U
+name.of.group RET} in group buffer (use the
+tab-completion Luke). Otherwise hit ^ in group buffer,
+this brings you to the server buffer. Now place point (the
+cursor) over the server which carries the group you want,
+hit @samp{RET}, move point to the group
+you want to subscribe to and say @samp{u}
+to subscribe to it.
+
+@node [3.5]
+@subsubheading Question 3.5
+
+Gnus doesn't show all groups / Gnus says I'm not allowed to
+post on this server as well as I am, what's that?
+
+@subsubheading Answer
+
+Some providers allow restricted anonymous access and full
+access only after authorization. To make Gnus send authinfo
+to those servers append 
 
 @example
 force yes
 @end example
- 
-
 @noindent
- to the line for those servers in ~/.authinfo.
  
-@ifnottex
-@node [3.6], [3.7], [3.5], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.6: 
-
- I want Gnus to fetch news from several servers, is this possible?
- 
-
-Answer: 
-
- Of course. You can specify more sources for articles in the
- variable gnus-secondary-select-methods. Add something like
- this in ~/.gnus:
- 
+to the line for those servers in ~/.authinfo.
+
+@node [3.6]
+@subsubheading Question 3.6
+
+I want Gnus to fetch news from several servers, is this possible?
+
+@subsubheading Answer
+
+Of course. You can specify more sources for articles in the
+variable gnus-secondary-select-methods. Add something like
+this in ~/.gnus.el:
 
 @example
-(add-to-list 'gnus-secondary-select-methods 
+(add-to-list 'gnus-secondary-select-methods
              '(nntp "news.yourSecondProvider.net"))
-(add-to-list 'gnus-secondary-select-methods 
-             '(nntp "news.yourThirdProvider.net"))          
+(add-to-list 'gnus-secondary-select-methods
+             '(nntp "news.yourThirdProvider.net"))
 @end example
- 
-@ifnottex
-@node [3.7], [3.8], [3.6], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.7: 
-
- And how about local spool files?
- 
-
-Answer: 
-
- No problem, this is just one more select method called
- nnspool, so you want this:
- 
+@noindent
+
+@node [3.7]
+@subsubheading Question 3.7
+
+And how about local spool files?
+
+@subsubheading Answer
+
+No problem, this is just one more select method called
+nnspool, so you want this:
 
 @example
 (add-to-list 'gnus-secondary-select-methods '(nnspool ""))
 @end example
-
 @noindent
- Or this if you don't want an NNTP Server as primary news source:
- 
+
+Or this if you don't want an NNTP Server as primary news source:
 
 @example
 (setq gnus-select-method '(nnspool ""))
 @end example
-
 @noindent
- Gnus will look for the spool file in /usr/spool/news, if you
- want something different, change the line above to something like this:
- 
+
+Gnus will look for the spool file in /usr/spool/news, if you
+want something different, change the line above to something like this:
 
 @example
 (add-to-list 'gnus-secondary-select-methods
-             '(nnspool "" (nnspool-directory "/usr/local/myspoolddir")))
+             '(nnspool ""
+		       (nnspool-directory "/usr/local/myspoolddir")))
 @end example
-
 @noindent
- This sets the spool directory for this server only.
- You might have to specify more stuff like the program used
- to post articles, see the Gnus manual on how to do this.
- 
-@ifnottex
-@node [3.8], [3.9], [3.7], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.8: 
-
- OK, reading news works now, but I want to be able to read my mail
- with Gnus, too. How to do it?
- 
-
-Answer: 
-
- That's a bit harder since there are many possible sources
- for mail, many possible ways for storing mail and many
- different ways for sending mail. The most common cases are
- these: 1: You want to read your mail from a pop3 server and
- send them directly to a SMTP Server 2: Some program like
- fetchmail retrieves your mail and stores it on disk from
- where Gnus shall read it. Outgoing mail is sent by
- Sendmail, Postfix or some other MTA. Sometimes, you even
- need a combination of the above cases.
- 
-
- However, the first thing to do is to tell Gnus in which way
- it should store the mail, in Gnus terminology which back end
- to use. Gnus supports many different back ends, the most
- commonly used one is nnml. It stores every mail in one file
- and is therefor quite fast. However you might prefer a one
- file per group approach if your file system has problems with
- many small files, the nnfolder back end is then probably the
- choice for you. To use nnml add the following to ~/.gnus:
- 
+
+This sets the spool directory for this server only.
+You might have to specify more stuff like the program used
+to post articles, see the Gnus manual on how to do this.
+
+@node [3.8]
+@subsubheading Question 3.8
+
+OK, reading news works now, but I want to be able to read my mail
+with Gnus, too. How to do it?
+
+@subsubheading Answer
+
+That's a bit harder since there are many possible sources
+for mail, many possible ways for storing mail and many
+different ways for sending mail. The most common cases are
+these: 1: You want to read your mail from a pop3 server and
+send them directly to a SMTP Server 2: Some program like
+fetchmail retrieves your mail and stores it on disk from
+where Gnus shall read it. Outgoing mail is sent by
+Sendmail, Postfix or some other MTA. Sometimes, you even
+need a combination of the above cases.
+
+However, the first thing to do is to tell Gnus in which way
+it should store the mail, in Gnus terminology which back end
+to use. Gnus supports many different back ends, the most
+commonly used one is nnml. It stores every mail in one file
+and is therefor quite fast. However you might prefer a one
+file per group approach if your file system has problems with
+many small files, the nnfolder back end is then probably the
+choice for you.  To use nnml add the following to ~/.gnus.el:
 
 @example
 (add-to-list 'gnus-secondary-select-methods '(nnml ""))
 @end example
-
 @noindent
- As you might have guessed, if you want nnfolder, it's
- 
+
+As you might have guessed, if you want nnfolder, it's
 
 @example
 (add-to-list 'gnus-secondary-select-methods '(nnfolder ""))
 @end example
- 
-
- Now we need to tell Gnus, where to get it's mail from. If
- it's a POP3 server, then you need something like this:
- 
+@noindent
+
+Now we need to tell Gnus, where to get it's mail from. If
+it's a POP3 server, then you need something like this:
 
 @example
 (eval-after-load "mail-source"
@@ -649,75 +601,68 @@
                                     :user "yourUserName"
                                     :password "yourPassword")))
 @end example
-
 @noindent
- Make sure ~/.gnus isn't readable to others if you store
- your password there. If you want to read your mail from a
- traditional spool file on your local machine, it's
- 
+
+Make sure ~/.gnus.el isn't readable to others if you store
+your password there. If you want to read your mail from a
+traditional spool file on your local machine, it's
 
 @example
 (eval-after-load "mail-source"
-  '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")))
+  '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))
 @end example
-
 @noindent
- If it's a Maildir, with one file per message as used by
- postfix, Qmail and (optionally) fetchmail it's
- 
+
+If it's a Maildir, with one file per message as used by
+postfix, Qmail and (optionally) fetchmail it's
 
 @example
 (eval-after-load "mail-source"
   '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
                                         :subdirs ("cur" "new")))
 @end example
-
 @noindent
- And finally if you want to read your mail from several files
- in one directory, for example because procmail already split your
- mail, it's
- 
+
+And finally if you want to read your mail from several files
+in one directory, for example because procmail already split your
+mail, it's
 
 @example
 (eval-after-load "mail-source"
-  '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/"
-                                          :suffix ".prcml"))
+  '(add-to-list 'mail-sources
+		'(directory :path "/path/to/procmail-dir/"
+			    :suffix ".prcml")))
 @end example
-
 @noindent
- Where :suffix ".prcml" tells Gnus only to use files with the
- suffix .prcml.
- 
-
- OK, now you only need to tell Gnus how to send mail. If you
- want to send mail via sendmail (or whichever MTA is playing
- the role of sendmail on your system), you don't need to do
- anything. However, if you want to send your mail to an
- SMTP Server you need the following in your ~/.gnus
- 
+
+Where :suffix ".prcml" tells Gnus only to use files with the
+suffix .prcml.
+
+OK, now you only need to tell Gnus how to send mail. If you
+want to send mail via sendmail (or whichever MTA is playing
+the role of sendmail on your system), you don't need to do
+anything. However, if you want to send your mail to an
+SMTP Server you need the following in your ~/.gnus.el
 
 @example
 (setq send-mail-function 'smtpmail-send-it)
 (setq message-send-mail-function 'smtpmail-send-it)
 (setq smtpmail-default-smtp-server "smtp.yourProvider.net")
 @end example
- 
-@ifnottex
-@node [3.9], [3.10], [3.8], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.9: 
-
- And what about IMAP?
- 
-
-Answer: 
-
- There are two ways of using IMAP with Gnus. The first one is
- to use IMAP like POP3, that means Gnus fetches the mail from
- the IMAP server and stores it on disk. If you want to do
- this (you don't really want to do this) add the following to
- ~/.gnus
- 
+@noindent
+
+@node [3.9]
+@subsubheading Question 3.9
+
+And what about IMAP?
+
+@subsubheading Answer
+
+There are two ways of using IMAP with Gnus. The first one is
+to use IMAP like POP3, that means Gnus fetches the mail from
+the IMAP server and stores it on disk. If you want to do
+this (you don't really want to do this) add the following to
+~/.gnus.el
 
 @example
 (add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
@@ -728,249 +673,215 @@
                                   :mailbox "INBOX"
                                   :fetchflag "\\Seen"))
 @end example
-
 @noindent
- You might have to tweak the values for stream and/or
- authentification, see the Gnus manual node "Mail Source
- Specifiers" for possible values.
- 
-
- If you want to use IMAP the way it's intended, you've got to
- follow a different approach. You've got to add the nnimap
- back end to your select method and give the information
- about the server there.
- 
+
+You might have to tweak the values for stream and/or
+authentification, see the Gnus manual node "Mail Source
+Specifiers" for possible values.
+
+If you want to use IMAP the way it's intended, you've got to
+follow a different approach.  You've got to add the nnimap
+back end to your select method and give the information
+about the server there.
 
 @example
-(add-to-list 
- 'gnus-secondary-select-methods
- '(nnimap "Give the baby a name"
-          (nnimap-address "imap.yourProvider.net")
-          (nnimap-port 143)
-          (nnimap-list-pattern "archive.*")))
+(add-to-list 'gnus-secondary-select-methods
+	     '(nnimap "Give the baby a name"
+		      (nnimap-address "imap.yourProvider.net")
+		      (nnimap-port 143)
+		      (nnimap-list-pattern "archive.*")))
 @end example
-
 @noindent
- Again, you might have to specify how to authenticate to the
- server if Gnus can't guess the correct way, see the Manual
- Node "IMAP" for detailed information.
- 
-@ifnottex
-@node [3.10], [3.11], [3.9], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.10: 
-
- At the office we use one of those MS Exchange servers, can I use
- Gnus to read my mail from it?
- 
-
-Answer: 
-
- Offer your administrator a pair of new running shoes for
- activating IMAP on the server and follow the instructions
- above.
- 
-@ifnottex
-@node [3.11],  , [3.10], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.11: 
-
- Can I tell Gnus not to delete the mails on the server it
- retrieves via POP3?
- 
-
-Answer: 
-
- First of all, that's not the way POP3 is intended to work,
- if you have the possibility, you should use the IMAP
- Protocol if you want your messages to stay on the
- server. Nevertheless there might be situations where you
- need the feature, but sadly Gnus itself has no predefined
- functionality to do so.
- 
-
- However this is Gnus county so there are possibilities to
- achieve what you want. The easiest way is to get an external
- program which retrieves copies of the mail and stores them
- on disk, so Gnus can read it from there. On Unix systems you
- could use e.g. fetchmail for this, on MS Windows you can use
- Hamster, an excellent local news and mail server.
- 
-
- The other solution would be, to replace the method Gnus
- uses to get mail from POP3 servers by one which is capable
- of leaving the mail on the server. If you use XEmacs, get
- the package mail-lib, it includes an enhanced pop3.el,
- look in the file, there's documentation on how to tell
- Gnus to use it and not to delete the retrieved mail. For
- GNU Emacs look for the file epop3.el which can do the same
- (If you know the home of this file, please send me an
- e-mail). You can also tell Gnus to use an external program
- (e.g. fetchmail) to fetch your mail, see the info node
- "Mail Source Specifiers" in the Gnus manual on how to do
- it.
- 
-
-@ifnottex
-@node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions
-@end ifnottex
+
+Again, you might have to specify how to authenticate to the
+server if Gnus can't guess the correct way, see the Manual
+Node "IMAP" for detailed information.
+
+@node [3.10]
+@subsubheading Question 3.10
+
+At the office we use one of those MS Exchange servers, can I use
+Gnus to read my mail from it?
+
+@subsubheading Answer
+
+Offer your administrator a pair of new running shoes for
+activating IMAP on the server and follow the instructions
+above.
+
+@node [3.11]
+@subsubheading Question 3.11
+
+Can I tell Gnus not to delete the mails on the server it
+retrieves via POP3?
+
+@subsubheading Answer
+
+First of all, that's not the way POP3 is intended to work,
+if you have the possibility, you should use the IMAP
+Protocol if you want your messages to stay on the
+server. Nevertheless there might be situations where you
+need the feature, but sadly Gnus itself has no predefined
+functionality to do so.
+
+However this is Gnus county so there are possibilities to
+achieve what you want. The easiest way is to get an external
+program which retrieves copies of the mail and stores them
+on disk, so Gnus can read it from there. On Unix systems you
+could use e.g. fetchmail for this, on MS Windows you can use
+Hamster, an excellent local news and mail server.
+
+The other solution would be, to replace the method Gnus
+uses to get mail from POP3 servers by one which is capable
+of leaving the mail on the server. If you use XEmacs, get
+the package mail-lib, it includes an enhanced pop3.el,
+look in the file, there's documentation on how to tell
+Gnus to use it and not to delete the retrieved mail. For
+GNU Emacs look for the file epop3.el which can do the same
+(If you know the home of this file, please send me an
+e-mail). You can also tell Gnus to use an external program
+(e.g. fetchmail) to fetch your mail, see the info node
+"Mail Source Specifiers" in the Gnus manual on how to do
+it.
+
+@node FAQ 4 - Reading messages
 @subsection Reading messages
 
 @menu
-* [4.1]::   When I enter a group, all read messages are gone.
-            How to view them again? 
-* [4.2]::   How to tell Gnus to show an important message every time
-            I enter a group, even when it's read? 
-* [4.3]::   How to view the headers of a message? 
-* [4.4]::   How to view the raw unformatted message? 
-* [4.5]::   How can I change the headers Gnus displays by default at the
-            top of the article buffer? 
-* [4.6]::   I'd like Gnus NOT to render HTML-mails but show me the
-            text part if it's available. How to do it? 
-* [4.7]::   Can I use some other browser than w3 to render my HTML-mails? 
-* [4.8]::   Is there anything I can do to make poorly formatted mails
-            more readable? 
-* [4.9]::   Is there a way to automatically ignore posts by specific authors
-            or with specific words in the subject? And can I highlight more
-            interesting ones in some way? 
-* [4.10]::  How can I disable threading in some (e.g. mail-) groups, or set
-            other variables specific for some groups? 
-* [4.11]::  Can I highlight messages written by me and follow-ups to those? 
-* [4.12]::  The number of total messages in a group which Gnus displays in
-            group buffer is by far to high, especially in mail groups.
-            Is this a bug? 
-* [4.13]::  I don't like the layout of summary and article buffer,
-            how to change it?  Perhaps even a three pane display? 
-* [4.14]::  I don't like the way the Summary buffer looks, how to tweak it? 
-* [4.15]::  How to split incoming mails in several groups? 
+* [4.1]::     When I enter a group, all read messages are gone. How to
+              view them again?
+* [4.2]::     How to tell Gnus to show an important message every time I
+              enter a group, even when it's read?
+* [4.3]::     How to view the headers of a message?
+* [4.4]::     How to view the raw unformatted message?
+* [4.5]::     How can I change the headers Gnus displays by default at
+              the top of the article buffer?
+* [4.6]::     I'd like Gnus NOT to render HTML-mails but show me the
+              text part if it's available. How to do it?
+* [4.7]::     Can I use some other browser than w3 to render my
+              HTML-mails?
+* [4.8]::     Is there anything I can do to make poorly formatted mails
+              more readable?
+* [4.9]::     Is there a way to automatically ignore posts by specific
+              authors or with specific words in the subject? And can I highlight
+              more interesting ones in some way?
+* [4.10]::    How can I disable threading in some (e.g. mail-) groups,
+              or set other variables specific for some groups?
+* [4.11]::    Can I highlight messages written by me and follow-ups to
+              those?
+* [4.12]::    The number of total messages in a group which Gnus
+              displays in group buffer is by far to high, especially in mail
+              groups. Is this a bug?
+* [4.13]::    I don't like the layout of summary and article buffer, how
+              to change it? Perhaps even a three pane display?
+* [4.14]::    I don't like the way the Summary buffer looks, how to
+              tweak it?
+* [4.15]::    How to split incoming mails in several groups?
 @end menu
 
-@ifnottex
-@node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.1: 
-
- When I enter a group, all read messages are gone. How to view them again?
- 
-
-Answer: 
-
- If you enter the group by saying 
- @samp{RET}
- in group buffer with point over the group, only unread and ticked messages are loaded. Say
- @samp{C-u RET}
- instead to load all available messages. If you want only the e.g. 300 newest say
- @samp{C-u 300 RET}
- 
-
- Loading only unread messages can be annoying if you have threaded view enabled, say
- 
+@node [4.1]
+@subsubheading Question 4.1
+
+When I enter a group, all read messages are gone. How to view them again?
+
+@subsubheading Answer
+
+If you enter the group by saying  
+@samp{RET}
+in group buffer with point over the group, only unread and ticked messages are loaded. Say
+@samp{C-u RET}
+instead to load all available messages. If you want only the e.g. 300 newest say
+@samp{C-u 300 RET}
+
+Loading only unread messages can be annoying if you have threaded view enabled, say
 
 @example
 (setq gnus-fetch-old-headers 'some)
 @end example
- 
-
 @noindent
- in ~/.gnus to load enough old articles to prevent teared threads, replace 'some with t to load
- all articles (Warning: Both settings enlarge the amount of data which is 
- fetched when you enter a group and slow down the process of entering a group).
- 
-
- If you already use Gnus 5.10, you can say 
- @samp{/o N} 
- In summary buffer to load the last N messages, this feature is not available in 5.8.8
- 
-
- If you don't want all old messages, but the parent of the message you're just reading,
- you can say @samp{^}, if you want to retrieve the whole thread
- the message you're just reading belongs to, @samp{A T} is your friend.
- 
-@ifnottex
-@node [4.2], [4.3], [4.1], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.2: 
-
- How to tell Gnus to show an important message every time I
- enter a group, even when it's read?
- 
-
-Answer: 
-
- You can tick important messages. To do this hit
- @samp{u} while point is in summary buffer
- over the message. When you want to remove the mark, hit
- either @samp{d} (this deletes the tick
- mark and set's unread mark) or @samp{M c}
- (which deletes all marks for the message).
- 
-@ifnottex
-@node [4.3], [4.4], [4.2], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.3: 
-
- How to view the headers of a message?
- 
-
-Answer: 
-
- Say @samp{t} 
- to show all headers, one more
- @samp{t} 
- hides them again.
  
-@ifnottex
-@node [4.4], [4.5], [4.3], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.4: 
-
- How to view the raw unformatted message?
- 
-
-Answer: 
-
- Say 
- @samp{C-u g} 
- to show the raw message
- @samp{g} 
- returns to normal view.
- 
-@ifnottex
-@node [4.5], [4.6], [4.4], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.5: 
-
- How can I change the headers Gnus displays by default at
- the top of the article buffer?
- 
-
-Answer: 
-
- The variable gnus-visible-headers controls which headers
- are shown, its value is a regular expression, header lines
- which match it are shown. So if you want author, subject,
- date, and if the header exists, Followup-To and MUA / NUA
- say this in ~/.gnus:
- 
+in ~/.gnus.el to load enough old articles to prevent teared threads, replace 'some with t to load
+all articles (Warning: Both settings enlarge the amount of data which is 
+fetched when you enter a group and slow down the process of entering a group).
+
+If you already use Gnus 5.10, you can say 
+@samp{/o N} 
+In summary buffer to load the last N messages, this feature is not available in 5.8.8
+
+If you don't want all old messages, but the parent of the message you're just reading,
+you can say @samp{^}, if you want to retrieve the whole thread
+the message you're just reading belongs to, @samp{A T} is your friend.
+
+@node [4.2]
+@subsubheading Question 4.2
+
+How to tell Gnus to show an important message every time I
+enter a group, even when it's read?
+
+@subsubheading Answer
+
+You can tick important messages. To do this hit
+@samp{u} while point is in summary buffer
+over the message. When you want to remove the mark, hit
+either @samp{d} (this deletes the tick
+mark and set's unread mark) or @samp{M c}
+(which deletes all marks for the message).
+
+@node [4.3]
+@subsubheading Question 4.3
+
+How to view the headers of a message?
+
+@subsubheading Answer
+
+Say @samp{t} 
+to show all headers, one more
+@samp{t} 
+hides them again.
+
+@node [4.4]
+@subsubheading Question 4.4
+
+How to view the raw unformatted message?
+
+@subsubheading Answer
+
+Say 
+@samp{C-u g} 
+to show the raw message
+@samp{g} 
+returns to normal view.
+
+@node [4.5]
+@subsubheading Question 4.5
+
+How can I change the headers Gnus displays by default at
+the top of the article buffer?
+
+@subsubheading Answer
+
+The variable gnus-visible-headers controls which headers
+are shown, its value is a regular expression, header lines
+which match it are shown. So if you want author, subject,
+date, and if the header exists, Followup-To and MUA / NUA
+say this in ~/.gnus.el:
+
 @example
-(setq gnus-visible-headers 
-      "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\
-\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")
+(setq gnus-visible-headers
+      '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To"
+	"^User-Agent" "^X-Newsreader" "^X-Mailer"))
 @end example
- 
-@ifnottex
-@node [4.6], [4.7], [4.5], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.6: 
-
- I'd like Gnus NOT to render HTML-mails but show me the
- text part if it's available. How to do it?
- 
-
-Answer: 
-
- Say
- 
+@noindent
+
+@node [4.6]
+@subsubheading Question 4.6
+
+I'd like Gnus NOT to render HTML-mails but show me the
+text part if it's available. How to do it?
+
+@subsubheading Answer
+
+Say
 
 @example
 (eval-after-load "mm-decode"
@@ -978,240 +889,206 @@
       (add-to-list 'mm-discouraged-alternatives "text/html")
       (add-to-list 'mm-discouraged-alternatives "text/richtext")))
 @end example
-
 @noindent
- in ~/.gnus. If you don't want HTML rendered, even if there's no text alternative add
- 
+
+in ~/.gnus.el. If you don't want HTML rendered, even if there's no text alternative add
 
 @example
 (setq mm-automatic-display (remove "text/html" mm-automatic-display))
 @end example
-
 @noindent
- too.
- 
-@ifnottex
-@node [4.7], [4.8], [4.6], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.7: 
-
- Can I use some other browser than w3 to render my HTML-mails?
- 
-
-Answer: 
-
- Only if you use Gnus 5.10 or younger. In this case you've got the
- choice between w3, w3m, links, lynx and html2text, which
- one is used can be specified in the variable
- mm-text-html-renderer, so if you want links to render your
- mail say
- 
+
+too.
+
+@node [4.7]
+@subsubheading Question 4.7
+
+Can I use some other browser than w3 to render my HTML-mails?
+
+@subsubheading Answer
+
+Only if you use Gnus 5.10 or younger. In this case you've got the
+choice between w3, w3m, links, lynx and html2text, which
+one is used can be specified in the variable
+mm-text-html-renderer, so if you want links to render your
+mail say
 
 @example
 (setq mm-text-html-renderer 'links)
 @end example
- 
-@ifnottex
-@node [4.8], [4.9], [4.7], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.8: 
-
- Is there anything I can do to make poorly formatted mails
- more readable?
- 
-
-Answer: 
-
- Gnus offers you several functions to "wash" incoming mail,
- you can find them if you browse through the menu, item Article->Washing. The most
- interesting ones are probably "Wrap long lines" (
- @samp{W w}
- ), "Decode ROT13" (
- @samp{W r}
- ) and "Outlook Deuglify" which repairs the dumb quoting used
- by many users of Microsoft products (
- @samp{W Y f} gives you full deuglify.
- See @samp{W Y C-h} or
- have a look at the menus for other deuglifications).
- Outlook deuglify is only available since Gnus 5.10.
- 
-@ifnottex
-@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.9: 
-
- Is there a way to automatically ignore posts by specific
- authors or with specific words in the subject? And can I
- highlight more interesting ones in some way?
- 
-
-Answer: 
-
- You want Scoring. Scoring means, that you define rules
- which assign each message an integer value. Depending on
- the value the message is highlighted in summary buffer (if
- it's high, say +2000) or automatically marked read (if the
- value is low, say -800) or some other action happens.
- 
-
- There are basically three ways of setting up rules which assign
- the scoring-value to messages. The first and easiest way is to set
- up rules based on the article you are just reading. Say you're
- reading a message by a guy who always writes nonsense and you want
- to ignore his messages in the future. Hit
- @samp{L}, to set up a rule which lowers the score.
- Now Gnus asks you which the criteria for lowering the Score shall
- be. Hit @samp{?} twice to see all possibilities,
- we want @samp{a} which means the author (the from
- header). Now Gnus wants to know which kind of matching we want.
- Hit either @samp{e} for an exact match or
- @samp{s} for substring-match and delete afterwards
- everything but the name to score down all authors with the given
- name no matter which email address is used. Now you need to tell
- Gnus when to apply the rule and how long it should last, hit e.g.
- @samp{p} to apply the rule now and let it last
- forever. If you want to raise the score instead of lowering it say
- @samp{I} instead of @samp{L}.
- 
-
- You can also set up rules by hand. To do this say @samp{V
- f} in summary buffer. Then you are asked for the name
- of the score file, it's name.of.group.SCORE for rules valid in
- only one group or all.Score for rules valid in all groups. See the
- Gnus manual for the exact syntax, basically it's one big list
- whose elements are lists again. the first element of those lists
- is the header to score on, then one more list with what to match,
- which score to assign, when to expire the rule and how to do the
- matching. If you find me very interesting, you could e.g. add the
- following to your all.Score:
- 
+@noindent
+
+@node [4.8]
+@subsubheading Question 4.8
+
+Is there anything I can do to make poorly formatted mails
+more readable?
+
+@subsubheading Answer
+
+Gnus offers you several functions to "wash" incoming mail, you can
+find them if you browse through the menu, item
+Article->Washing. The most interesting ones are probably "Wrap
+long lines" (@samp{W w}), "Decode ROT13"
+(@samp{W r}) and "Outlook Deuglify" which repairs
+the dumb quoting used by many users of Microsoft products
+(@samp{W Y f} gives you full deuglify.
+See @samp{W Y C-h} or have a look at the menus for
+other deuglifications).  Outlook deuglify is only available since
+Gnus 5.10.
+
+@node [4.9]
+@subsubheading Question 4.9
+
+Is there a way to automatically ignore posts by specific
+authors or with specific words in the subject? And can I
+highlight more interesting ones in some way?
+
+@subsubheading Answer
+
+You want Scoring. Scoring means, that you define rules
+which assign each message an integer value. Depending on
+the value the message is highlighted in summary buffer (if
+it's high, say +2000) or automatically marked read (if the
+value is low, say -800) or some other action happens.
+
+There are basically three ways of setting up rules which assign
+the scoring-value to messages. The first and easiest way is to set
+up rules based on the article you are just reading. Say you're
+reading a message by a guy who always writes nonsense and you want
+to ignore his messages in the future. Hit
+@samp{L}, to set up a rule which lowers the score.
+Now Gnus asks you which the criteria for lowering the Score shall
+be. Hit @samp{?} twice to see all possibilities,
+we want @samp{a} which means the author (the from
+header). Now Gnus wants to know which kind of matching we want.
+Hit either @samp{e} for an exact match or
+@samp{s} for substring-match and delete afterwards
+everything but the name to score down all authors with the given
+name no matter which email address is used. Now you need to tell
+Gnus when to apply the rule and how long it should last, hit e.g.
+@samp{p} to apply the rule now and let it last
+forever. If you want to raise the score instead of lowering it say
+@samp{I} instead of @samp{L}.
+
+You can also set up rules by hand. To do this say @samp{V
+f} in summary buffer. Then you are asked for the name
+of the score file, it's name.of.group.SCORE for rules valid in
+only one group or all.Score for rules valid in all groups. See the
+Gnus manual for the exact syntax, basically it's one big list
+whose elements are lists again. the first element of those lists
+is the header to score on, then one more list with what to match,
+which score to assign, when to expire the rule and how to do the
+matching. If you find me very interesting, you could e.g. add the
+following to your all.Score:
 
 @example
 (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
  ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))
 @end example
-
 @noindent
- This would add 999 to the score of messages written by me
- and 500 to the score of messages which are a (possibly
- indirect) answer to a message written by me. Of course
- nobody with a sane mind would do this :-)
- 
-
- The third alternative is adaptive scoring. This means Gnus
- watches you and tries to find out what you find
- interesting and what annoying and sets up rules
- which reflect this. Adaptive scoring can be a huge help
- when reading high traffic groups. If you want to activate
- adaptive scoring say
- 
+
+This would add 999 to the score of messages written by me
+and 500 to the score of messages which are a (possibly
+indirect) answer to a message written by me. Of course
+nobody with a sane mind would do this :-)
+
+The third alternative is adaptive scoring. This means Gnus
+watches you and tries to find out what you find
+interesting and what annoying and sets up rules
+which reflect this. Adaptive scoring can be a huge help
+when reading high traffic groups. If you want to activate
+adaptive scoring say
 
 @example
 (setq gnus-use-adaptive-scoring t)
 @end example
-
 @noindent
- in ~/.gnus.
- 
-@ifnottex
-@node [4.10], [4.11], [4.9], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.10: 
-
- How can I disable threading in some (e.g. mail-) groups, or
- set other variables specific for some groups?
- 
-
-Answer: 
-
- While in group buffer move point over the group and hit
- @samp{G c}, this opens a buffer where you
- can set options for the group. At the bottom of the buffer
- you'll find an item that allows you to set variables
- locally for the group. To disable threading enter
- gnus-show-threads as name of variable and nil as
- value. Hit button done at the top of the buffer when
- you're ready.
- 
-@ifnottex
-@node [4.11], [4.12], [4.10], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.11: 
-
- Can I highlight messages written by me and follow-ups to
- those?
- 
-
-Answer: 
-
- Stop those "Can I ..." questions, the answer is always yes
- in Gnus Country :-). It's a three step process: First we
- make faces (specifications of how summary-line shall look
- like) for those postings, then we'll give them some
- special score and finally we'll tell Gnus to use the new
- faces. You can find detailed instructions on how to do it on
- @uref{http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view,my.gnus.org}
- 
-@ifnottex
-@node [4.12], [4.13], [4.11], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.12: 
-
- The number of total messages in a group which Gnus
- displays in group buffer is by far to high, especially in
- mail groups. Is this a bug?
- 
-
-Answer: 
-
- No, that's a matter of design of Gnus, fixing this would
- mean reimplementation of major parts of Gnus'
- back ends. Gnus thinks "highest-article-number -
- lowest-article-number = total-number-of-articles". This
- works OK for Usenet groups, but if you delete and move
- many messages in mail groups, this fails. To cure the
- symptom, enter the group via @samp{C-u RET} 
- (this makes Gnus get all messages), then
- hit @samp{M P b} to mark all messages and
- then say @samp{B m name.of.group} to move
- all messages to the group they have been in before, they
- get new message numbers in this process and the count is
- right again (until you delete and move your mail to other
- groups again).
- 
-@ifnottex
-@node [4.13], [4.14], [4.12], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.13: 
-
- I don't like the layout of summary and article buffer, how
- to change it? Perhaps even a three pane display?
- 
-
-Answer: 
-
- You can control the windows configuration by calling the
- function gnus-add-configuration. The syntax is a bit
- complicated but explained very well in the manual node
- "Window Layout". Some popular examples:
- 
-
- Instead 25% summary 75% article buffer 35% summary and 65%
- article (the 1.0 for article means "take the remaining
- space"):
- 
+
+in ~/.gnus.el.
+
+@node [4.10]
+@subsubheading Question 4.10
+
+How can I disable threading in some (e.g. mail-) groups, or
+set other variables specific for some groups?
+
+@subsubheading Answer
+
+While in group buffer move point over the group and hit
+@samp{G c}, this opens a buffer where you
+can set options for the group. At the bottom of the buffer
+you'll find an item that allows you to set variables
+locally for the group. To disable threading enter
+gnus-show-threads as name of variable and nil as
+value. Hit button done at the top of the buffer when
+you're ready.
+
+@node [4.11]
+@subsubheading Question 4.11
+
+Can I highlight messages written by me and follow-ups to
+those?
+
+@subsubheading Answer
+
+Stop those "Can I ..." questions, the answer is always yes
+in Gnus Country :-). It's a three step process: First we
+make faces (specifications of how summary-line shall look
+like) for those postings, then we'll give them some
+special score and finally we'll tell Gnus to use the new
+faces. You can find detailed instructions on how to do it on
+@uref{http://my.gnus.org/node/view/224, my.gnus.org}
+
+@node [4.12]
+@subsubheading Question 4.12
+
+The number of total messages in a group which Gnus
+displays in group buffer is by far to high, especially in
+mail groups. Is this a bug?
+
+@subsubheading Answer
+
+No, that's a matter of design of Gnus, fixing this would
+mean reimplementation of major parts of Gnus'
+back ends. Gnus thinks "highest-article-number -
+lowest-article-number = total-number-of-articles". This
+works OK for Usenet groups, but if you delete and move
+many messages in mail groups, this fails. To cure the
+symptom, enter the group via @samp{C-u RET} 
+(this makes Gnus get all messages), then
+hit @samp{M P b} to mark all messages and
+then say @samp{B m name.of.group} to move
+all messages to the group they have been in before, they
+get new message numbers in this process and the count is
+right again (until you delete and move your mail to other
+groups again).
+
+@node [4.13]
+@subsubheading Question 4.13
+
+I don't like the layout of summary and article buffer, how
+to change it? Perhaps even a three pane display?
+
+@subsubheading Answer
+
+You can control the windows configuration by calling the
+function gnus-add-configuration. The syntax is a bit
+complicated but explained very well in the manual node
+"Window Layout". Some popular examples:
+
+Instead 25% summary 75% article buffer 35% summary and 65%
+article (the 1.0 for article means "take the remaining
+space"):
 
 @example
-(gnus-add-configuration 
- '(article (vertical 1.0
-                     (summary .35 point)
-                     (article 1.0))))
+(gnus-add-configuration
+ '(article (vertical 1.0 (summary .35 point) (article 1.0))))
 @end example
- 
-
- A three pane layout, Group buffer on the left, summary
- buffer top-right, article buffer bottom-right:
- 
+@noindent
+
+A three pane layout, Group buffer on the left, summary
+buffer top-right, article buffer bottom-right:
 
 @example
 (gnus-add-configuration
@@ -1228,46 +1105,40 @@
 	       (vertical 25
 			 (group 1.0))
 	       (vertical 1.0
-			 (summary 1.0 point)))))	      
+			 (summary 1.0 point)))))
 @end example
- 
-@ifnottex
-@node [4.14], [4.15], [4.13], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.14: 
-
- I don't like the way the Summary buffer looks, how to tweak it?
- 
-
-Answer: 
-
- You've got to play around with the variable
- gnus-summary-line-format. It's value is a string of
- symbols which stand for things like author, date, subject
- etc. A list of the available specifiers can be found in the
- manual node "Summary Buffer Lines" and the often forgotten
- node "Formatting Variables" and it's sub-nodes. There
- you'll find useful things like positioning the cursor and
- tabulators which allow you a summary in table form, but
- sadly hard tabulators are broken in 5.8.8.
- 
-
- Since 5.10, Gnus offers you some very nice new specifiers,
- e.g. %B which draws a thread-tree and %&user-date which
- gives you a date where the details are dependent of the
- articles age. Here's an example which uses both:
- 
+@noindent
+
+@node [4.14]
+@subsubheading Question 4.14
+
+I don't like the way the Summary buffer looks, how to tweak it?
+
+@subsubheading Answer
+
+You've got to play around with the variable
+gnus-summary-line-format. It's value is a string of
+symbols which stand for things like author, date, subject
+etc. A list of the available specifiers can be found in the
+manual node "Summary Buffer Lines" and the often forgotten
+node "Formatting Variables" and it's sub-nodes. There
+you'll find useful things like positioning the cursor and
+tabulators which allow you a summary in table form, but
+sadly hard tabulators are broken in 5.8.8.
+
+Since 5.10, Gnus offers you some very nice new specifiers,
+e.g. %B which draws a thread-tree and %&user-date which
+gives you a date where the details are dependent of the
+articles age. Here's an example which uses both:
 
 @example
-(setq gnus-summary-line-format 
-      ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
+(setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
 @end example
-
 @noindent
- resulting in:
- 
-
-@smallexample
+
+resulting in:
+
+@example
 :O     Re: [Richard Stallman] rfc2047.el          |  13 |Lars Magne Ingebrigt |Sat 23:06
 :O     Re: Revival of the ding-patches list       |  13 |Lars Magne Ingebrigt |Sat 23:12
 :R  >  Re: Find correct list of articles for a gro|  25 |Lars Magne Ingebrigt |Sat 23:16
@@ -1280,54 +1151,48 @@
 :R  >  Re: Gnus still doesn't count messages prope|  23 |Lars Magne Ingebrigt |Sat 23:57
 :O  \->  ...                                      |  18 |Kai Grossjohann      | 0:35
 :O    \->  ...                                    |  13 |Lars Magne Ingebrigt | 0:56
-@end smallexample
- 
-@ifnottex
-@node [4.15],  , [4.14], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.15: 
-
- How to split incoming mails in several groups?
- 
-
-Answer: 
-
- Gnus offers two possibilities for splitting mail, the easy
- nnmail-split-methods and the more powerful Fancy Mail
- Splitting. I'll only talk about the first one, refer to
- the manual, node "Fancy Mail Splitting" for the latter.
- 
-
- The value of nnmail-split-methods is a list, each element
- is a list which stands for a splitting rule. Each rule has
- the form "group where matching articles should go to",
- "regular expression which has to be matched", the first
- rule which matches wins. The last rule must always be a
- general rule (regular expression .*) which denotes where
- articles should go which don't match any other rule. If
- the folder doesn't exist yet, it will be created as soon
- as an article lands there. By default the mail will be
- send to all groups whose rules match. If you 
- don't want that (you probably don't want), say
- 
+@end example
+@noindent
+
+@node [4.15]
+@subsubheading Question 4.15
+
+How to split incoming mails in several groups?
+
+@subsubheading Answer
+
+Gnus offers two possibilities for splitting mail, the easy
+nnmail-split-methods and the more powerful Fancy Mail
+Splitting. I'll only talk about the first one, refer to
+the manual, node "Fancy Mail Splitting" for the latter.
+
+The value of nnmail-split-methods is a list, each element
+is a list which stands for a splitting rule. Each rule has
+the form "group where matching articles should go to",
+"regular expression which has to be matched", the first
+rule which matches wins. The last rule must always be a
+general rule (regular expression .*) which denotes where
+articles should go which don't match any other rule. If
+the folder doesn't exist yet, it will be created as soon
+as an article lands there.  By default the mail will be
+send to all groups whose rules match. If you 
+don't want that (you probably don't want), say
 
 @example
 (setq nnmail-crosspost nil)
 @end example
-
 @noindent
- in ~/.gnus.
- 
-
- An example might be better than thousand words, so here's
- my nnmail-split-methods. Note that I send duplicates in a
- special group and that the default group is spam, since I
- filter all mails out which are from some list I'm
- subscribed to or which are addressed directly to me
- before. Those rules kill about 80% of the Spam which
- reaches me (Email addresses are changed to prevent spammers
- from using them):
- 
+
+in ~/.gnus.el.
+
+An example might be better than thousand words, so here's
+my nnmail-split-methods. Note that I send duplicates in a
+special group and that the default group is spam, since I
+filter all mails out which are from some list I'm
+subscribed to or which are addressed directly to me
+before. Those rules kill about 80% of the Spam which
+reaches me (Email addresses are changed to prevent spammers
+from using them):
 
 @example
 (setq nnmail-split-methods
@@ -1336,133 +1201,114 @@
     ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*")
     ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*")
     ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*")
-    ("Hamster-src"
-     "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
+    ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
     ("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$")
     ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*")
-    ("EK"
-     "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
-    ("Spam"
-     "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
-    ("Spam"
-     "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
-    ("Spam"
-     "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
+    ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
+    ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
+    ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
+    ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
     ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
-    ("Spam"
-     "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
-    ("Spam"
-     "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
+    ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
+    ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
     ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$")
     ("Spam" "^Received: from link2buy.com")
     ("Spam" "^CC: .*azzrael@@t-online.bla")
     ("Spam" "^X-Mailer-Version: 1.50 BETA")
     ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*")
-    ("Inbox"
-     "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
+    ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
     ("Spam" "")))
 @end example
- 
-
-@ifnottex
-@node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions
-@end ifnottex
+@noindent
+
+@node FAQ 5 - Composing messages
 @subsection Composing messages
 
 @menu
-* [5.1]::   What are the basic commands I need to know for sending mail and
-            postings? 
-* [5.2]::   How to enable automatic word-wrap when composing messages? 
-* [5.3]::   How to set stuff like From, Organization, Reply-To, signature...? 
-* [5.4]::   Can I set things like From, Signature etc group based on the
-            group I post too? 
-* [5.5]::   Is there a spell-checker? Perhaps even on-the-fly spell-checking? 
-* [5.6]::   Can I set the dictionary based on the group I'm posting to? 
-* [5.7]::   Is there some kind of address-book, so I needn't remember all
-            those email addresses? 
-* [5.8]::   Sometimes I see little images at the top of article buffer.
-            What's that and how can I send one with my postings, too? 
-* [5.9]::   Sometimes I accidentally hit r instead of f in newsgroups.
-            Can Gnus warn me, when I'm replying by mail in newsgroups? 
-* [5.10]::  How to tell Gnus not to generate a sender header? 
-* [5.11]::  I want Gnus to locally store copies of my send mail and news,
-            how to do it? 
-* [5.12]::  People tell me my Message-IDs are not correct,
-            why aren't they and how to fix it? 
+* [5.1]::     What are the basic commands I need to know for sending
+              mail and postings?
+* [5.2]::     How to enable automatic word-wrap when composing messages?
+* [5.3]::     How to set stuff like From, Organization, Reply-To,
+              signature...?
+* [5.4]::     Can I set things like From, Signature etc group based on
+              the group I post too?
+* [5.5]::     Is there a spell-checker? Perhaps even on-the-fly
+              spell-checking?
+* [5.6]::     Can I set the dictionary based on the group I'm posting
+              to?
+* [5.7]::     Is there some kind of address-book, so I needn't remember
+              all those email addresses?
+* [5.8]::     Sometimes I see little images at the top of article
+              buffer. What's that and how can I send one with my postings, too?
+* [5.9]::     Sometimes I accidentally hit r instead of f in newsgroups.
+              Can Gnus warn me, when I'm replying by mail in newsgroups?
+* [5.10]::    How to tell Gnus not to generate a sender header?
+* [5.11]::    I want Gnus to locally store copies of my send mail and
+              news, how to do it?
+* [5.12]::    People tell me my Message-IDs are not correct, why aren't
+              they and how to fix it?
 @end menu
 
-@ifnottex
-@node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.1: 
-
- What are the basic commands I need to know for sending mail and postings?
- 
-
-Answer: 
-
- To start composing a new mail hit @samp{m}
- either in Group or Summary buffer, for a posting, it's
- either @samp{a} in Group buffer and
- filling the Newsgroups header manually
- or @samp{a} in the Summary buffer of the
- group where the posting shall be send to. Replying by mail
- is
- @samp{r} if you don't want to cite the
- author, or import the cited text manually and
- @samp{R} to cite the text of the original
- message. For a follow up to a newsgroup, it's
- @samp{f} and @samp{F}
- (analog to @samp{r} and
- @samp{R}).
- 
-
- Enter new headers above the line saying "--text follows
- this line--", enter the text below the line. When ready
- hit @samp{C-c C-c}, to send the message,
- if you want to finish it later hit @samp{C-c
- C-d} to save it in the drafts group, where you
- can start editing it again by saying @samp{D
- e}.
- 
-@ifnottex
-@node [5.2], [5.3], [5.1], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.2: 
-
- How to enable automatic word-wrap when composing messages?
- 
-
-Answer: 
-
- Say
- 
+@node [5.1]
+@subsubheading Question 5.1
+
+What are the basic commands I need to know for sending mail and postings?
+
+@subsubheading Answer
+
+To start composing a new mail hit @samp{m}
+either in Group or Summary buffer, for a posting, it's
+either @samp{a} in Group buffer and
+filling the Newsgroups header manually
+or @samp{a} in the Summary buffer of the
+group where the posting shall be send to. Replying by mail
+is
+@samp{r} if you don't want to cite the
+author, or import the cited text manually and
+@samp{R} to cite the text of the original
+message. For a follow up to a newsgroup, it's
+@samp{f} and @samp{F}
+(analogously to @samp{r} and
+@samp{R}).
+
+Enter new headers above the line saying "--text follows
+this line--", enter the text below the line. When ready
+hit @samp{C-c C-c}, to send the message,
+if you want to finish it later hit @samp{C-c
+C-d} to save it in the drafts group, where you
+can start editing it again by saying @samp{D
+e}.
+
+@node [5.2]
+@subsubheading Question 5.2
+
+How to enable automatic word-wrap when composing messages?
+
+@subsubheading Answer
+
+Say
 
 @example
 (add-hook 'message-mode-hook
-      (lambda ()
-           (setq fill-column 72)
-           (turn-on-auto-fill)))
+	  (lambda ()
+	    (setq fill-column 72)
+	    (turn-on-auto-fill)))
 @end example
-
 @noindent
- in ~/.gnus. You can reformat a paragraph by hitting
- @samp{M-q} (as usual)
- 
-@ifnottex
-@node [5.3], [5.4], [5.2], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.3: 
-
- How to set stuff like From, Organization, Reply-To, signature...?
- 
-
-Answer: 
-
- There are other ways, but you should use posting styles
- for this. (See below why).
- This example should make the syntax clear:
- 
+
+in ~/.gnus.el. You can reformat a paragraph by hitting
+@samp{M-q} (as usual)
+
+@node [5.3]
+@subsubheading Question 5.3
+
+How to set stuff like From, Organization, Reply-To, signature...?
+
+@subsubheading Answer
+
+There are other ways, but you should use posting styles
+for this. (See below why).
+This example should make the syntax clear:
 
 @example
 (setq gnus-posting-styles
@@ -1474,146 +1320,121 @@
      ("X-SampleHeader" "foobar")
      (eval (setq some-variable "Foo bar")))))
 @end example
-
 @noindent
- The ".*" means that this settings are the default ones
- (see below), valid values for the first element of the
- following lists are signature, signature-file,
- organization, address, name or body. The attribute name
- can also be a string. In that case, this will be used as
- a header name, and the value will be inserted in the
- headers of the article; if the value is `nil', the header
- name will be removed. You can also say (eval (foo bar)),
- then the function foo will be evaluated with argument bar
- and the result will be thrown away.
- 
-@ifnottex
-@node [5.4], [5.5], [5.3], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.4: 
-
- Can I set things like From, Signature etc group based on the group I post too?
- 
-
-Answer: 
-
- That's the strength of posting styles. Before, we used ".*"
- to set the default for all groups. You can use a regexp
- like "^gmane" and the following settings are only applied
- to postings you send to the gmane hierarchy, use
- ".*binaries" instead and they will be applied to postings
- send to groups containing the string binaries in their
- name etc.
- 
-
- You can instead of specifying a regexp specify a function
- which is evaluated, only if it returns true, the
- corresponding settings take effect. Two interesting
- candidates for this are message-news-p which returns t if
- the current Group is a newsgroup and the corresponding
- message-mail-p.
- 
-
- Note that all forms that match are applied, that means in
- the example below, when I post to
- gmane.mail.spam.spamassassin.general, the settings under
- ".*" are applied and the settings under message-news-p and
- those under "^gmane" and those under
- "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because
- of this put general settings at the top and specific ones
- at the bottom.
- 
+
+The ".*" means that this settings are the default ones
+(see below), valid values for the first element of the
+following lists are signature, signature-file,
+organization, address, name or body.  The attribute name
+can also be a string.  In that case, this will be used as
+a header name, and the value will be inserted in the
+headers of the article; if the value is `nil', the header
+name will be removed. You can also say (eval (foo bar)),
+then the function foo will be evaluated with argument bar
+and the result will be thrown away.
+
+@node [5.4]
+@subsubheading Question 5.4
+
+Can I set things like From, Signature etc group based on the group I post too?
+
+@subsubheading Answer
+
+That's the strength of posting styles. Before, we used ".*"
+to set the default for all groups. You can use a regexp
+like "^gmane" and the following settings are only applied
+to postings you send to the gmane hierarchy, use
+".*binaries" instead and they will be applied to postings
+send to groups containing the string binaries in their
+name etc.
+
+You can instead of specifying a regexp specify a function
+which is evaluated, only if it returns true, the
+corresponding settings take effect. Two interesting
+candidates for this are message-news-p which returns t if
+the current Group is a newsgroup and the corresponding
+message-mail-p.
+
+Note that all forms that match are applied, that means in
+the example below, when I post to
+gmane.mail.spam.spamassassin.general, the settings under
+".*" are applied and the settings under message-news-p and
+those under "^gmane" and those under
+"^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because
+of this put general settings at the top and specific ones
+at the bottom.
 
 @example
 (setq gnus-posting-styles
   '((".*"  ;;default
      (name "Frank Schmitt")
      (organization "Hamme net, kren mer och nimmi")
-     (signature-file "~/.signature"))
+     (signature-file "~/.signature")    )
     ((message-news-p)  ;;Usenet news?
      (address "mySpamTrap@@Frank-Schmitt.bla")
-     ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla"))
+     ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla")    )
     ((message-mail-p)  ;;mail?
-     (address "usedForMails@@Frank-Schmitt.bla"))
+     (address "usedForMails@@Frank-Schmitt.bla")    )
     ("^gmane" ;;this is mail, too in fact
      (address "usedForMails@@Frank-Schmitt.net")
-     ("Reply-To" nil))
+     ("Reply-To" nil)    )
     ("^gmane.mail.spam.spamassassin.general$"
      (eval (setq mail-envelope-from "Azzrael@@rz-online.de"))
-     (address "Azzrael@@rz-online.de"))))
+     (address "Azzrael@@rz-online.de")) ))
 @end example
- 
-@ifnottex
-@node [5.5], [5.6], [5.4], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.5: 
-
- Is there a spell-checker? Perhaps even on-the-fly spell-checking?
- 
-
-Answer: 
-
-You can use ispell.el to spell-check stuff in Emacs. So the first
-thing to do is to make sure that you've got either
-@itemize @bullet
-@item
-@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell}
-or 
-@item
-@uref{http://aspell.sourceforge.net/,aspell} 
-@end itemize
 @noindent
-installed and in your Path.
-
-Then you need
-@uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el,ispell.el}
-and for on-the-fly spell-checking
-@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el,flyspell.el}.
-Ispell.el is shipped with Gnus Emacs and available through the Emacs
-package system, flyspell.el is shipped with Emacs and part of XEmacs
-text-modes package which is available through the package system, so
-there should be no need to install them manually.
- 
-
- Ispell.el assumes you use ispell, if you choose aspell say
- 
+
+@node [5.5]
+@subsubheading Question 5.5
+
+Is there a spell-checker? Perhaps even on-the-fly spell-checking?
+
+@subsubheading Answer
+
+You can use ispell.el to spell-check stuff in Emacs. So the
+first thing to do is to make sure that you've got either
+@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html, ispell}
+or @uref{http://aspell.sourceforge.net/, aspell}
+installed and in your Path. Then you need 
+@uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el}
+and for on-the-fly spell-checking 
+@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
+Ispell.el is shipped with Emacs and available through the XEmacs package system, 
+flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is 
+available through the package system, so there should be no need to install them 
+manually.
+
+Ispell.el assumes you use ispell, if you choose aspell say
 
 @example
 (setq ispell-program-name "aspell")
 @end example
+@noindent
  
-
-@noindent
- in your Emacs configuration file.
- 
-
- If you want your outgoing messages to be spell-checked, say
- 
+in your Emacs configuration file.
+
+If you want your outgoing messages to be spell-checked, say
 
 @example
 (add-hook 'message-send-hook 'ispell-message)
 @end example
-
 @noindent
- In your ~/.gnus, if you prefer on-the-fly spell-checking say
- 
+
+In your ~/.gnus.el, if you prefer on-the-fly spell-checking say
 
 @example
 (add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))
 @end example
- 
-@ifnottex
-@node [5.6], [5.7], [5.5], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.6: 
-
- Can I set the dictionary based on the group I'm posting to?
- 
-
-Answer: 
-
- Yes, say something like
- 
+@noindent
+
+@node [5.6]
+@subsubheading Question 5.6
+
+Can I set the dictionary based on the group I'm posting to?
+
+@subsubheading Answer
+
+Yes, say something like
 
 @example
 (add-hook 'gnus-select-group-hook
@@ -1625,55 +1446,47 @@
              (t
               (ispell-change-dictionary "english")))))
 @end example
- 
-
 @noindent
- in ~/.gnus. Change "^de\\." and "deutsch8" to something
- that suits your needs.
  
-@ifnottex
-@node [5.7], [5.8], [5.6], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.7:
-
- Is there some kind of address-book, so I needn't remember
- all those email addresses?
- 
-
-Answer: 
-
- There's an very basic solution for this, mail aliases.
- You can store your mail addresses in a ~/.mailrc file using a simple
- alias syntax:
- 
+in ~/.gnus.el. Change "^de\\." and "deutsch8" to something
+that suits your needs.
+
+@node [5.7]
+@subsubheading Question 5.7
+
+Is there some kind of address-book, so I needn't remember
+all those email addresses?
+
+@subsubheading Answer
+
+There's an very basic solution for this, mail aliases.
+You can store your mail addresses in a ~/.mailrc file using a simple
+alias syntax:
 
 @example
 alias al	"Al <al@@english-heritage.bla>"
 @end example
-
 @noindent
- Then typing your alias (followed by a space or punctuation
- character) on a To: or Cc: line in the message buffer will
- cause Gnus to insert the full address for you. See the
- node "Mail Aliases" in Message (not Gnus) manual for
- details.
- 
-
- However, what you really want is the Insidious Big Brother 
- Database bbdb. Get it through the XEmacs package system or from
- @uref{http://bbdb.sourceforge.net/,bbdb's homepage}.
- Now place the following in ~/.gnus, to activate bbdb for Gnus:
- 
+
+Then typing your alias (followed by a space or punctuation
+character) on a To: or Cc: line in the message buffer will
+cause Gnus to insert the full address for you. See the
+node "Mail Aliases" in Message (not Gnus) manual for
+details.
+
+However, what you really want is the Insidious Big Brother 
+Database bbdb. Get it through the XEmacs package system or from
+@uref{http://bbdb.sourceforge.net/, bbdb's homepage}.
+Now place the following in ~/.gnus.el, to activate bbdb for Gnus:
 
 @example
 (require 'bbdb)
 (bbdb-initialize 'gnus 'message)
 @end example
-
 @noindent
- Now you probably want some general bbdb configuration,
- place them in ~/.emacs:
- 
+
+Now you probably want some general bbdb configuration,
+place them in ~/.emacs:
 
 @example
 (require 'bbdb)
@@ -1689,56 +1502,50 @@
 ;;No popup-buffers
 (setq bbdb-use-pop-up nil)
 @end example
-
 @noindent
- Now you should be ready to go. Say @samp{M-x bbdb RET
- RET} to open a bbdb buffer showing all
- entries. Say @samp{c} to create a new
- entry, @samp{b} to search your BBDB and
- @samp{C-o} to add a new field to an
- entry. If you want to add a sender to the BBDB you can
- also just hit `:' on the posting in the summary buffer and
- you are done. When you now compose a new mail,
- hit @samp{TAB} to cycle through know
- recipients.
- 
-@ifnottex
-@node [5.8], [5.9], [5.7], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.8: 
-
- Sometimes I see little images at the top of article
- buffer. What's that and how can I send one with my
- postings, too?
- 
-
-Answer: 
-
- Those images are called X-Faces. They are 48*48 pixel b/w
- pictures, encoded in a header line. If you want to include
- one in your posts, you've got to convert some image to a
- X-Face. So fire up some image manipulation program (say
- Gimp), open the image you want to include, cut out the
- relevant part, reduce color depth to 1 bit, resize to
- 48*48 and save as bitmap. Now you should get the compface
- package from 
- @uref{ftp://ftp.cs.indiana.edu:/pub/faces/,this site}.
- and create the actual X-face by saying
- 
+
+Now you should be ready to go. Say @samp{M-x bbdb RET
+RET} to open a bbdb buffer showing all
+entries. Say @samp{c} to create a new
+entry, @samp{b} to search your BBDB and
+@samp{C-o} to add a new field to an
+entry. If you want to add a sender to the BBDB you can
+also just hit `:' on the posting in the summary buffer and
+you are done. When you now compose a new mail,
+hit @samp{TAB} to cycle through know
+recipients.
+
+@node [5.8]
+@subsubheading Question 5.8
+
+Sometimes I see little images at the top of article
+buffer. What's that and how can I send one with my
+postings, too?
+
+@subsubheading Answer
+
+Those images are called X-Faces. They are 48*48 pixel b/w
+pictures, encoded in a header line. If you want to include
+one in your posts, you've got to convert some image to a
+X-Face. So fire up some image manipulation program (say
+Gimp), open the image you want to include, cut out the
+relevant part, reduce color depth to 1 bit, resize to
+48*48 and save as bitmap. Now you should get the compface
+package from 
+@uref{ftp://ftp.cs.indiana.edu:/pub/faces/, this site}.
+and create the actual X-face by saying
 
 @example
-cat file.xbm | xbm2ikon |compface > file.face
-cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted
+cat file.xbm | xbm2ikon | compface > file.face
+cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted
 @end example
-
 @noindent
-If you can't use compface, there's an online X-face converter at@*
-@uref{http://www.dairiki.org/xface/}.  If you use MS Windows, you
-could also use the WinFace program from
+
+If you can't use compface, there's an online X-face converter at 
+@uref{http://www.dairiki.org/xface/}.
+If you use MS Windows, you could also use the WinFace program from
 @uref{http://www.xs4all.nl/~walterln/winface/}.
-
-Now you only have to tell Gnus to include the X-face in your postings
-by saying
+Now you only have to tell Gnus to include the X-face in your postings by saying
 
 @example
 (setq message-default-headers
@@ -1747,33 +1554,28 @@
           (insert-file-contents "~/.xemacs/xface")
           (buffer-string)))
 @end example
-
 @noindent
- in ~/.gnus.
- 
-@ifnottex
-@node [5.9], [5.10], [5.8], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.9: 
-
- Sometimes I accidentally hit r instead of f in
- newsgroups. Can Gnus warn me, when I'm replying by mail in
- newsgroups?
- 
-
-Answer: 
-
- Put this in ~/.gnus:
- 
+
+in ~/.gnus.el.
+
+@node [5.9]
+@subsubheading Question 5.9
+
+Sometimes I accidentally hit r instead of f in
+newsgroups. Can Gnus warn me, when I'm replying by mail in
+newsgroups?
+
+@subsubheading Answer
+
+Put this in ~/.gnus.el:
 
 @example
 (setq gnus-confirm-mail-reply-to-news t)
 @end example
-
 @noindent
- if you already use Gnus 5.10, if you still use 5.8.8 or
- 5.9 try this instead:
- 
+
+if you already use Gnus 5.10, if you still use 5.8.8 or
+5.9 try this instead:
 
 @example
 (eval-after-load "gnus-msg"
@@ -1785,44 +1587,37 @@
                  (y-or-n-p "Really reply by mail to article author? "))
          ad-do-it))))
 @end example
- 
-@ifnottex
-@node [5.10], [5.11], [5.9], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.10: 
-
- How to tell Gnus not to generate a sender header?
- 
-
-Answer: 
-
- Since 5.10 Gnus doesn't generate a sender header by
- default. For older Gnus' try this in ~/.gnus:
- 
+@noindent
+
+@node [5.10]
+@subsubheading Question 5.10
+
+How to tell Gnus not to generate a sender header?
+
+@subsubheading Answer
+
+Since 5.10 Gnus doesn't generate a sender header by
+default. For older Gnus' try this in ~/.gnus.el:
 
 @example
 (eval-after-load "message"
       '(add-to-list 'message-syntax-checks '(sender . disabled)))
 @end example
- 
- 
-@ifnottex
-@node [5.11], [5.12], [5.10], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.11: 
-
- I want gnus to locally store copies of my send mail and
- news, how to do it?
- 
-
-Answer: 
-
- You must set the variable gnus-message-archive-group to do
- this. You can set it to a string giving the name of the
- group where the copies shall go or like in the example
- below use a function which is evaluated and which returns
- the group to use.
- 
+@noindent
+
+@node [5.11]
+@subsubheading Question 5.11
+
+I want Gnus to locally store copies of my send mail and
+news, how to do it?
+
+@subsubheading Answer
+
+You must set the variable gnus-message-archive-group to do
+this. You can set it to a string giving the name of the
+group where the copies shall go or like in the example
+below use a function which is evaluated and which returns
+the group to use.
 
 @example
 (setq gnus-message-archive-group
@@ -1830,31 +1625,31 @@
 	      "nnml:Send-News"
 	    "nnml:Send-Mail")))
 @end example
- 
- 
-@ifnottex
-@node [5.12],  , [5.11], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.12: 
-
- People tell me my Message-IDs are not correct, why
- aren't they and how to fix it?
- 
-
-Answer: 
-
- The message-ID is an unique identifier for messages you
- send. To make it unique, Gnus need to know which machine
- name to put after the "@@". If the name of the machine
- where Gnus is running isn't suitable (it probably isn't
- at most private machines) you can tell Gnus what to use
- by saying
+@noindent
+
+@node [5.12]
+@subsubheading Question 5.12
+
+People tell me my Message-IDs are not correct, why
+aren't they and how to fix it?
+
+@subsubheading Answer
+
+The message-ID is an unique identifier for messages you
+send. To make it unique, Gnus need to know which machine
+name to put after the "@@". If the name of the machine
+where Gnus is running isn't suitable (it probably isn't
+at most private machines) you can tell Gnus what to use
+by saying:
+
 @example
 (setq message-user-fqdn "yourmachine.yourdomain.tld")
 @end example
 @noindent
- in ~/.gnus.  If you use Gnus 5.9 or ealier, you can use this
-instead (works for newer versions a well):
+
+in ~/.gnus.el.  If you use Gnus 5.9 or ealier, you can use this
+instead (works for newer versions a well): 
+
 @example
 (eval-after-load "message"
   '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this!
@@ -1865,110 +1660,97 @@
          "Return user's fully qualified domain name."
          fqdn))))
 @end example
-
- If you have no idea what to insert for
- "yourmachine.yourdomain.tld", you've got several
- choices. You can either ask your provider if he allows
- you to use something like
- yourUserName.userfqdn.provider.net, or you can use
- somethingUnique.yourdomain.tld if you own the domain
- yourdomain.tld, or you can register at a service which
- gives private users a FQDN for free, e.g. 
- @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
- (Sorry but this website is in German, if you know of an
- English one offering the same, drop me a note).
- 
-
- Finally you can tell Gnus not to generate a Message-ID
- for News at all (and letting the server do the job) by saying
- 
+@noindent
+
+If you have no idea what to insert for
+"yourmachine.yourdomain.tld", you've got several
+choices. You can either ask your provider if he allows
+you to use something like
+yourUserName.userfqdn.provider.net, or you can use
+somethingUnique.yourdomain.tld if you own the domain
+yourdomain.tld, or you can register at a service which
+gives private users a FQDN for free, e.g.  
+@uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
+(Sorry but this website is in German, if you know of an
+English one offering the same, drop me a note).
+
+Finally you can tell Gnus not to generate a Message-ID
+for News at all (and letting the server do the job) by saying
 
 @example
 (setq message-required-news-headers
   (remove' Message-ID message-required-news-headers))
 @end example
-
 @noindent
- you can also tell Gnus not to generate Message-IDs for mail by saying
- 
+
+you can also tell Gnus not to generate Message-IDs for mail by saying
 
 @example
 (setq message-required-mail-headers
   (remove' Message-ID message-required-mail-headers))
 @end example
-
 @noindent
- , however some mail servers don't generate proper
- Message-IDs, too, so test if your Mail Server behaves
- correctly by sending yourself a Mail and looking at the Message-ID.
- 
-
-@ifnottex
-@node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions
-@end ifnottex
+
+, however some mail servers don't generate proper
+Message-IDs, too, so test if your Mail Server behaves
+correctly by sending yourself a Mail and looking at the Message-ID.
+
+@node FAQ 6 - Old messages
 @subsection Old messages
 
 @menu
-* [6.1]::   How to import my old mail into Gnus? 
-* [6.2]::   How to archive interesting messages? 
-* [6.3]::   How to search for a specific message? 
-* [6.4]::   How to get rid of old unwanted mail? 
-* [6.5]::   I want that all read messages are expired (at least in some
-            groups). How to do it? 
-* [6.6]::   I don't want expiration to delete my mails but to move them
-            to another group. 
+* [6.1]::    How to import my old mail into Gnus?
+* [6.2]::    How to archive interesting messages?
+* [6.3]::    How to search for a specific message?
+* [6.4]::    How to get rid of old unwanted mail?
+* [6.5]::    I want that all read messages are expired (at least in some
+             groups). How to do it?
+* [6.6]::    I don't want expiration to delete my mails but to move them
+             to another group.
 @end menu
 
-@ifnottex
-@node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.1: 
-
- How to import my old mail into Gnus?
- 
-
-Answer: 
-
- The easiest way is to tell your old mail program to
- export the messages in mbox format. Most Unix mailers
- are able to do this, if you come from the MS Windows
- world, you may find tools at
- @uref{http://mbx2mbox.sourceforge.net/}.
- 
-
- Now you've got to import this mbox file into Gnus. To do
- this, create a nndoc group based on the mbox file by
- saying @samp{G f /path/file.mbox RET} in
- Group buffer. You now have read-only access to your
- mail. If you want to import the messages to your normal
- Gnus mail groups hierarchy, enter the nndoc group you've
- just created by saying @samp{C-u RET}
- (thus making sure all messages are retrieved), mark all
- messages by saying @samp{M P b} and
- either copy them to the desired group by saying
- @samp{B c name.of.group RET} or send them
- through nnmail-split-methods (respool them) by saying
- @samp{B r}.
- 
-@ifnottex
-@node [6.2], [6.3], [6.1], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.2: 
-
- How to archive interesting messages?
- 
-
-Answer: 
-
- If you stumble across an interesting message, say in
- gnu.emacs.gnus and want to archive it there are several
- solutions. The first and easiest is to save it to a file
- by saying @samp{O f}. However, wouldn't
- it be much more convenient to have more direct access to
- the archived message from Gnus? If you say yes, put this
- snippet by Frank Haun <pille3003@@fhaun.de> in
- ~/.gnus:
- 
+@node [6.1]
+@subsubheading Question 6.1
+
+How to import my old mail into Gnus?
+
+@subsubheading Answer
+
+The easiest way is to tell your old mail program to
+export the messages in mbox format. Most Unix mailers
+are able to do this, if you come from the MS Windows
+world, you may find tools at
+@uref{http://mbx2mbox.sourceforge.net/}.
+
+Now you've got to import this mbox file into Gnus. To do
+this, create a nndoc group based on the mbox file by
+saying @samp{G f /path/file.mbox RET} in
+Group buffer. You now have read-only access to your
+mail. If you want to import the messages to your normal
+Gnus mail groups hierarchy, enter the nndoc group you've
+just created by saying @samp{C-u RET}
+(thus making sure all messages are retrieved), mark all
+messages by saying @samp{M P b} and
+either copy them to the desired group by saying
+@samp{B c name.of.group RET} or send them
+through nnmail-split-methods (respool them) by saying
+@samp{B r}.
+
+@node [6.2]
+@subsubheading Question 6.2
+
+How to archive interesting messages?
+
+@subsubheading Answer
+
+If you stumble across an interesting message, say in
+gnu.emacs.gnus and want to archive it there are several
+solutions. The first and easiest is to save it to a file
+by saying @samp{O f}. However, wouldn't
+it be much more convenient to have more direct access to
+the archived message from Gnus? If you say yes, put this
+snippet by Frank Haun <pille3003@@fhaun.de> in
+~/.gnus.el:
 
 @example
 (defun my-archive-article (&optional n)
@@ -1987,624 +1769,531 @@
             (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))
     (gnus-summary-copy-article n archive-name)))
 @end example
-
 @noindent
- You can now say @samp{M-x
- my-archive-article} in summary buffer to
- archive the article under the cursor in a nnml
- group. (Change nnml to your preferred back end)
- 
-
- Of course you can also make sure the cache is enabled by saying
- 
+
+You can now say @samp{M-x
+my-archive-article} in summary buffer to
+archive the article under the cursor in a nnml
+group. (Change nnml to your preferred back end)
+
+Of course you can also make sure the cache is enabled by saying
 
 @example
 (setq gnus-use-cache t)
 @end example
-
 @noindent
- then you only have to set either the tick or the dormant
- mark for articles you want to keep, setting the read
- mark will remove them from cache.
- 
-@ifnottex
-@node [6.3], [6.4], [6.2], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.3: 
-
- How to search for a specific message?
- 
-
-Answer: 
-
- There are several ways for this, too. For a posting from
- a Usenet group the easiest solution is probably to ask
- @uref{http://groups.google.com,groups.google.com},
- if you found the posting there, tell Google to display
- the raw message, look for the message-id, and say
- @samp{M-^ the@@message.id RET} in a
- summary buffer.
- Since Gnus 5.10 there's also a Gnus interface for
- groups.google.com which you can call with
- @samp{G W}) in group buffer.
- 
-
- Another idea which works for both mail and news groups
- is to enter the group where the message you are
- searching is and use the standard Emacs search
- @samp{C-s}, it's smart enough to look at
- articles in collapsed threads, too. If you want to
- search bodies, too try @samp{M-s}
- instead. Further on there are the
- gnus-summary-limit-to-foo functions, which can help you,
- too.
- 
-
- Of course you can also use grep to search through your
- local mail, but this is both slow for big archives and
- inconvenient since you are not displaying the found mail
- in Gnus. Here comes nnir into action. Nnir is a front end
- to search engines like swish-e or swish++ and
- others. You index your mail with one of those search
- engines and with the help of nnir you can search trough
- the indexed mail and generate a temporary group with all
- messages which met your search criteria. If this sound
- cool to you get nnir.el from the contrib directory of the Gnus
- distribution or
- @uref{http://quimby.gnus.org/cgi-bin/cvsweb.cgi/~checkout~/gnus/contrib/nnir.el?rev=HEAD&content-type=text/plain}
- Instructions on how to use it are at the top of the file.
- 
-@ifnottex
-@node [6.4], [6.5], [6.3], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.4: 
-
- How to get rid of old unwanted mail?
- 
-
-Answer: 
-
- You can of course just mark the mail you don't need
- anymore by saying @samp{#} with point
- over the mail and then say @samp{B DEL}
- to get rid of them forever. You could also instead of
- actually deleting them, send them to a junk-group by
- saying @samp{B m nnml:trash-bin} which
- you clear from time to time, but both are not the intended
- way in Gnus.
- 
-
- In Gnus, we let mail expire like news expires on a news
- server. That means you tell Gnus the message is
- expirable (you tell Gnus "I don't need this mail
- anymore") by saying @samp{E} with point
- over the mail in summary buffer. Now when you leave the
- group, Gnus looks at all messages which you marked as
- expirable before and if they are old enough (default is
- older than a week) they are deleted. 
- 
-@ifnottex
-@node [6.5], [6.6], [6.4], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.5: 
-
- I want that all read messages are expired (at least in
- some groups). How to do it?
- 
-
-Answer: 
-
- If you want all read messages to be expired (e.g. in
- mailing lists where there's an online archive), you've
- got two choices: auto-expire and
- total-expire. Auto-expire means, that every article
- which has no marks set and is selected for reading is
- marked as expirable, Gnus hits @samp{E}
- for you every time you read a message. Total-expire
- follows a slightly different approach, here all article
- where the read mark is set are expirable.
- 
-
- To activate auto-expire, include auto-expire in the
- Group parameters for the group. (Hit @samp{G
- c} in summary buffer with point over the
- group to change group parameters). For total-expire add
- total-expire to the group-parameters.
- 
-
- Which method you choose is merely a matter of taste:
- Auto-expire is faster, but it doesn't play together with
- Adaptive Scoring, so if you want to use this feature,
- you should use total-expire.
- 
-
- If you want a message to be excluded from expiration in
- a group where total or auto expire is active, set either
- tick (hit @samp{u}) or dormant mark (hit
- @samp{u}), when you use auto-expire, you
- can also set the read mark (hit
- @samp{d}).
- 
-@ifnottex
-@node [6.6],  , [6.5], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.6: 
-
- I don't want expiration to delete my mails but to move them
- to another group.
- 
-
-Answer: 
-
- Say something like this in ~/.gnus:
- 
+
+then you only have to set either the tick or the dormant
+mark for articles you want to keep, setting the read
+mark will remove them from cache.
+
+@node [6.3]
+@subsubheading Question 6.3
+
+How to search for a specific message?
+
+@subsubheading Answer
+
+There are several ways for this, too. For a posting from
+a Usenet group the easiest solution is probably to ask
+@uref{http://groups.google.com, groups.google.com},
+if you found the posting there, tell Google to display
+the raw message, look for the message-id, and say
+@samp{M-^ the@@message.id RET} in a
+summary buffer.
+Since Gnus 5.10 there's also a Gnus interface for
+groups.google.com which you can call with
+@samp{G W}) in group buffer.
+
+Another idea which works for both mail and news groups
+is to enter the group where the message you are
+searching is and use the standard Emacs search
+@samp{C-s}, it's smart enough to look at
+articles in collapsed threads, too. If you want to
+search bodies, too try @samp{M-s}
+instead. Further on there are the
+gnus-summary-limit-to-foo functions, which can help you,
+too.
+
+Of course you can also use grep to search through your
+local mail, but this is both slow for big archives and
+inconvenient since you are not displaying the found mail
+in Gnus. Here comes nnir into action. Nnir is a front end
+to search engines like swish-e or swish++ and
+others. You index your mail with one of those search
+engines and with the help of nnir you can search trough
+the indexed mail and generate a temporary group with all
+messages which met your search criteria. If this sound
+cool to you get nnir.el from
+@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/}
+or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}.
+Instructions on how to use it are at the top of the file.
+
+@node [6.4]
+@subsubheading Question 6.4
+
+How to get rid of old unwanted mail?
+
+@subsubheading Answer
+
+You can of course just mark the mail you don't need
+anymore by saying @samp{#} with point
+over the mail and then say @samp{B DEL}
+to get rid of them forever. You could also instead of
+actually deleting them, send them to a junk-group by
+saying @samp{B m nnml:trash-bin} which
+you clear from time to time, but both are not the intended
+way in Gnus.
+
+In Gnus, we let mail expire like news expires on a news
+server. That means you tell Gnus the message is
+expirable (you tell Gnus "I don't need this mail
+anymore") by saying @samp{E} with point
+over the mail in summary buffer. Now when you leave the
+group, Gnus looks at all messages which you marked as
+expirable before and if they are old enough (default is
+older than a week) they are deleted.
+
+@node [6.5]
+@subsubheading Question 6.5
+
+I want that all read messages are expired (at least in
+some groups). How to do it?
+
+@subsubheading Answer
+
+If you want all read messages to be expired (e.g. in
+mailing lists where there's an online archive), you've
+got two choices: auto-expire and
+total-expire. Auto-expire means, that every article
+which has no marks set and is selected for reading is
+marked as expirable, Gnus hits @samp{E}
+for you every time you read a message. Total-expire
+follows a slightly different approach, here all article
+where the read mark is set are expirable.
+
+To activate auto-expire, include auto-expire in the
+Group parameters for the group. (Hit @samp{G
+c} in summary buffer with point over the
+group to change group parameters). For total-expire add
+total-expire to the group-parameters.
+
+Which method you choose is merely a matter of taste:
+Auto-expire is faster, but it doesn't play together with
+Adaptive Scoring, so if you want to use this feature,
+you should use total-expire.
+
+If you want a message to be excluded from expiration in
+a group where total or auto expire is active, set either
+tick (hit @samp{u}) or dormant mark (hit
+@samp{u}), when you use auto-expire, you
+can also set the read mark (hit
+@samp{d}).
+
+@node [6.6]
+@subsubheading Question 6.6
+
+I don't want expiration to delete my mails but to move them
+to another group.
+
+@subsubheading Answer
+
+Say something like this in ~/.gnus.el:
 
 @example
 (setq nnmail-expiry-target "nnml:expired")
 @end example
-
 @noindent
- (If you want to change the value of nnmail-expiry-target
- on a per group basis see the question "How can I disable
- threading in some (e.g. mail-) groups, or set other
- variables specific for some groups?")
- 
-
-@ifnottex
-@node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions
-@end ifnottex
+
+(If you want to change the value of nnmail-expiry-target
+on a per group basis see the question "How can I disable
+threading in some (e.g. mail-) groups, or set other
+variables specific for some groups?")
+
+@node FAQ 7 - Gnus in a dial-up environment
 @subsection Gnus in a dial-up environment
 
 @menu
-* [7.1]::   I don't have a permanent connection to the net, how can I
-            minimize the time I've got to be connected? 
-* [7.2]::   So what was this thing about the Agent? 
-* [7.3]::   I want to store article bodies on disk, too. How to do it? 
-* [7.4]::   How to tell Gnus not to try to send mails / postings while
-            I'm offline? 
+* [7.1]::    I don't have a permanent connection to the net, how can I
+             minimize the time I've got to be connected?
+* [7.2]::    So what was this thing about the Agent?
+* [7.3]::    I want to store article bodies on disk, too. How to do it?
+* [7.4]::    How to tell Gnus not to try to send mails / postings while
+             I'm offline?
 @end menu
 
-
-@ifnottex
-@node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.1: 
-
- I don't have a permanent connection to the net, how can
- I minimize the time I've got to be connected?
- 
-
-Answer: 
-
- You've got basically two options: Either you use the
- Gnus Agent (see below) for this, or you can install
- programs which fetch your news and mail to your local
- disk and Gnus reads the stuff from your local
- machine.
- 
-
- If you want to follow the second approach, you need a
- program which fetches news and offers them to Gnus, a
- program which does the same for mail and a program which
- receives the mail you write from Gnus and sends them
- when you're online.
- 
-
-Let's talk about Unix systems first: For the news part, the easiest
-solution is a small nntp server like
-@uref{http://www.leafnode.org/,Leafnode} or
-@uref{http://infa.abo.fi/~patrik/sn/,sn}, of course you can also
-install a full featured news server like
-@uref{http://www.isc.org/products/INN/,inn}.
-
-Then you want to fetch your Mail, popular choices are
-@itemize @bullet
-@item
-@uref{http://www.catb.org/~esr/fetchmail/,fetchmail} and
-@item
-@uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}.
-@end itemize
-You should tell those to write the mail to your disk and Gnus to read
-it from there. Last but not least the mail sending part: This can be
-done with every MTA like @uref{http://www.sendmail.org/,sendmail},
-@uref{http://www.qmail.org/,postfix}, @uref{http://www.exim.org/,exim}
-or @uref{http://www.qmail.org/,qmail}.
- 
-
- On windows boxes I'd vote for 
- @uref{http://www.tglsoft.de/,Hamster}, 
- it's a small freeware, open-source program which fetches
- your mail and news from remote servers and offers them
- to Gnus (or any other mail and/or news reader) via nntp
- respectively POP3 or IMAP. It also includes a smtp
- server for receiving mails from Gnus.
- 
-@ifnottex
-@node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.2: 
-
- So what was this thing about the Agent?
- 
-
-Answer: 
-
- The Gnus agent is part of Gnus, it allows you to fetch
- mail and news and store them on disk for reading them
- later when you're offline. It kind of mimics offline
- newsreaders like e.g. Forte Agent. If you want to use
- the Agent place the following in ~/.gnus if you are
- still using 5.8.8 or 5.9 (it's the default since 5.10):
- 
+@node [7.1]
+@subsubheading Question 7.1
+
+I don't have a permanent connection to the net, how can
+I minimize the time I've got to be connected?
+
+@subsubheading Answer
+
+You've got basically two options: Either you use the
+Gnus Agent (see below) for this, or you can install
+programs which fetch your news and mail to your local
+disk and Gnus reads the stuff from your local
+machine.
+
+If you want to follow the second approach, you need a
+program which fetches news and offers them to Gnus, a
+program which does the same for mail and a program which
+receives the mail you write from Gnus and sends them
+when you're online.
+
+Let's talk about Unix systems first: For the news part,
+the easiest solution is a small nntp server like 
+@uref{http://www.leafnode.org/, Leafnode} or
+@uref{http://infa.abo.fi/~patrik/sn/, sn},
+of course you can also install a full featured news
+server like 
+@uref{http://www.isc.org/products/INN/, inn}. 
+Then you want to fetch your Mail, popular choices
+are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail}
+and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}.
+You should tell those to write the mail to your disk and
+Gnus to read it from there. Last but not least the mail
+sending part: This can be done with every MTA like
+@uref{http://www.sendmail.org/, sendmail},
+@uref{http://www.qmail.org/, postfix},
+@uref{http://www.exim.org/, exim} or
+@uref{http://www.qmail.org/, qmail}.
+
+On windows boxes I'd vote for 
+@uref{http://www.tglsoft.de/, Hamster}, 
+it's a small freeware, open-source program which fetches
+your mail and news from remote servers and offers them
+to Gnus (or any other mail and/or news reader) via nntp
+respectively POP3 or IMAP. It also includes a smtp
+server for receiving mails from Gnus.
+
+@node [7.2]
+@subsubheading Question 7.2
+
+So what was this thing about the Agent?
+
+@subsubheading Answer
+
+The Gnus agent is part of Gnus, it allows you to fetch
+mail and news and store them on disk for reading them
+later when you're offline. It kind of mimics offline
+newsreaders like e.g. Forte Agent. If you want to use
+the Agent place the following in ~/.gnus.el if you are
+still using 5.8.8 or 5.9 (it's the default since 5.10):
 
 @example
 (setq gnus-agent t)
 @end example
- 
-
- Now you've got to select the servers whose groups can be
- stored locally. To do this, open the server buffer
- (that is press @samp{^} while in the
- group buffer). Now select a server by moving point to
- the line naming that server. Finally, agentize the
- server by typing @samp{J a}. If you
- make a mistake, or change your mind, you can undo this
- action by typing @samp{J r}. When
- you're done, type 'q' to return to the group buffer.
- Now the next time you enter a group on a agentized
- server, the headers will be stored on disk and read from
- there the next time you enter the group.
- 
-@ifnottex
-@node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.3: 
-
- I want to store article bodies on disk, too. How to do it?
- 
-
-Answer: 
-
- You can tell the agent to automatically fetch the bodies
- of articles which fulfill certain predicates, this is
- done in a special buffer which can be reached by
- saying @samp{J c} in group
- buffer. Please refer to the documentation for
- information which predicates are possible and how
- exactly to do it. 
- 
-
- Further on you can tell the agent manually which
- articles to store on disk. There are two ways to do
- this: Number one: In the summary buffer, process mark a
- set of articles that shall be stored in the agent by
- saying @samp{#} with point over the
- article and then type @samp{J s}. The
- other possibility is to set, again in the summary
- buffer, downloadable (%) marks for the articles you
- want by typing @samp{@@} with point over
- the article and then typing @samp{J u}.
- What's the difference? Well, process marks are erased as
- soon as you exit the summary buffer while downloadable
- marks are permanent. You can actually set downloadable
- marks in several groups then use fetch session ('J s' in
- the GROUP buffer) to fetch all of those articles. The
- only downside is that fetch session also fetches all of
- the headers for every selected group on an agentized
- server. Depending on the volume of headers, the initial
- fetch session could take hours.
- 
-@ifnottex
-@node [7.4],  , [7.3], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.4: 
-
- How to tell Gnus not to try to send mails / postings
- while I'm offline?
- 
-
-Answer: 
-
- All you've got to do is to tell Gnus when you are online
- (plugged) and when you are offline (unplugged), the rest
- works automatically. You can toggle plugged/unplugged
- state by saying @samp{J j} in group
- buffer. To start Gnus unplugged say @samp{M-x
- gnus-unplugged} instead of
- @samp{M-x gnus}. Note that for this to
- work, the agent must be active.
- 
-
-@ifnottex
-@node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions
-@end ifnottex
+@noindent
+
+Now you've got to select the servers whose groups can be
+stored locally.  To do this, open the server buffer
+(that is press @samp{^} while in the
+group buffer).  Now select a server by moving point to
+the line naming that server.  Finally, agentize the
+server by typing @samp{J a}.  If you
+make a mistake, or change your mind, you can undo this
+action by typing @samp{J r}.  When
+you're done, type 'q' to return to the group buffer.
+Now the next time you enter a group on a agentized
+server, the headers will be stored on disk and read from
+there the next time you enter the group.
+
+@node [7.3]
+@subsubheading Question 7.3
+
+I want to store article bodies on disk, too. How to do it?
+
+@subsubheading Answer
+
+You can tell the agent to automatically fetch the bodies
+of articles which fulfill certain predicates, this is
+done in a special buffer which can be reached by
+saying @samp{J c} in group
+buffer. Please refer to the documentation for
+information which predicates are possible and how
+exactly to do it.
+
+Further on you can tell the agent manually which
+articles to store on disk. There are two ways to do
+this: Number one: In the summary buffer, process mark a
+set of articles that shall be stored in the agent by
+saying @samp{#} with point over the
+article and then type @samp{J s}. The
+other possibility is to set, again in the summary
+buffer, downloadable (%) marks for the articles you
+want by typing @samp{@@} with point over
+the article and then typing @samp{J u}.
+What's the difference? Well, process marks are erased as
+soon as you exit the summary buffer while downloadable
+marks are permanent.  You can actually set downloadable
+marks in several groups then use fetch session ('J s' in
+the GROUP buffer) to fetch all of those articles.  The
+only downside is that fetch session also fetches all of
+the headers for every selected group on an agentized
+server.  Depending on the volume of headers, the initial
+fetch session could take hours.
+
+@node [7.4]
+@subsubheading Question 7.4
+
+How to tell Gnus not to try to send mails / postings
+while I'm offline?
+
+@subsubheading Answer
+
+All you've got to do is to tell Gnus when you are online
+(plugged) and when you are offline (unplugged), the rest
+works automatically. You can toggle plugged/unplugged
+state by saying @samp{J j} in group
+buffer. To start Gnus unplugged say @samp{M-x
+gnus-unplugged} instead of
+@samp{M-x gnus}. Note that for this to
+work, the agent must be active.
+
+@node FAQ 8 - Getting help
 @subsection Getting help
 
 @menu
-* [8.1]::   How to find information and help inside Emacs? 
-* [8.2]::   I can't find anything in the Gnus manual about X
-            (e.g. attachments, PGP, MIME...), is it not documented? 
-* [8.3]::   Which websites should I know? 
-* [8.4]::   Which mailing lists and newsgroups are there? 
-* [8.5]::   Where to report bugs? 
-* [8.6]::   I need real-time help, where to find it? 
+* [8.1]::    How to find information and help inside Emacs?
+* [8.2]::    I can't find anything in the Gnus manual about X (e.g.
+             attachments, PGP, MIME...), is it not documented?
+* [8.3]::    Which websites should I know?
+* [8.4]::    Which mailing lists and newsgroups are there?
+* [8.5]::    Where to report bugs?
+* [8.6]::    I need real-time help, where to find it?
 @end menu
 
-@ifnottex
-@node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.1: 
-
- How to find information and help inside Emacs?
- 
-
-Answer: 
-
- The first stop should be the Gnus manual (Say
- @samp{C-h i d m Gnus RET} to start the
- Gnus manual, then walk through the menus or do a
- full-text search with @samp{s}). Then
- there are the general Emacs help commands starting with
- C-h, type @samp{C-h ? ?} to get a list
- of all available help commands and their meaning. Finally
- @samp{M-x apropos-command} lets you
- search through all available functions and @samp{M-x
- apropos} searches the bound variables.
- 
-@ifnottex
-@node [8.2], [8.3], [8.1], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.2: 
-
- I can't find anything in the Gnus manual about X
- (e.g. attachments, PGP, MIME...), is it not documented?
- 
-
-Answer: 
-
- There's not only the Gnus manual but also the manuals
- for message, emacs-mime, sieve and pgg. Those packages
- are distributed with Gnus and used by Gnus but aren't
- really part of core Gnus, so they are documented in
- different info files, you should have a look in those
- manuals, too.
- 
-@ifnottex
-@node [8.3], [8.4], [8.2], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.3: 
-
- Which websites should I know?
- 
-
-Answer: 
-
- The two most important ones are the
- @uref{http://www.gnus.org,official Gnus website}.
- and it's sister site 
- @uref{http://my.gnus.org,my.gnus.org (MGO)},
- hosting an archive of lisp snippets, howtos, a (not
- really finished) tutorial and this FAQ.
- 
-
- Tell me about other sites which are interesting.
- 
-@ifnottex
-@node [8.4], [8.5], [8.3], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.4: 
-
- Which mailing lists and newsgroups are there?
- 
-
-Answer: 
-
- There's the newsgroup gnu.emacs.gnus (pull it from
- e.g. news.gnus.org) which deals with general questions
- and the ding mailing list (ding@@gnus.org) dealing with
- development of Gnus. You can read the ding list via
- NNTP, too under the name gnus.ding from news.gnus.org.
- 
-
- If you want to stay in the big8,
- news.software.newssreaders is also read by some Gnus
- users (but chances for qualified help are much better in
- the above groups) and if you speak German, there's
- de.comm.software.gnus.
- 
-@ifnottex
-@node [8.5], [8.6], [8.4], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.5: 
-
- Where to report bugs?
- 
-
-Answer: 
-
-Say @samp{M-x gnus-bug}, this will start a message to the
-@email{bugs@@gnus.org,gnus bug mailing list} including information
-about your environment which make it easier to help you.
- 
-@ifnottex
-@node [8.6],  , [8.5], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.6: 
-
- I need real-time help, where to find it?
- 
-
-Answer: 
-
- Point your IRC client to irc.my.gnus.org channel
- #mygnus. Don't be afraid if people there speak German,
- they are willing and capable of switching to
- English when people from outside Germany enter.
- 
-
-@ifnottex
-@node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions
-@end ifnottex
+@node [8.1]
+@subsubheading Question 8.1
+
+How to find information and help inside Emacs?
+
+@subsubheading Answer
+
+The first stop should be the Gnus manual (Say
+@samp{C-h i d m Gnus RET} to start the
+Gnus manual, then walk through the menus or do a
+full-text search with @samp{s}). Then
+there are the general Emacs help commands starting with
+C-h, type @samp{C-h ? ?} to get a list
+of all available help commands and their meaning. Finally
+@samp{M-x apropos-command} lets you
+search through all available functions and @samp{M-x
+apropos} searches the bound variables.
+
+@node [8.2]
+@subsubheading Question 8.2
+
+I can't find anything in the Gnus manual about X
+(e.g. attachments, PGP, MIME...), is it not documented?
+
+@subsubheading Answer
+
+There's not only the Gnus manual but also the manuals
+for message, emacs-mime, sieve and pgg. Those packages
+are distributed with Gnus and used by Gnus but aren't
+really part of core Gnus, so they are documented in
+different info files, you should have a look in those
+manuals, too.
+
+@node [8.3]
+@subsubheading Question 8.3
+
+Which websites should I know?
+
+@subsubheading Answer
+
+The two most important ones are the
+@uref{http://www.gnus.org, official Gnus website}.
+and it's sister site 
+@uref{http://my.gnus.org, my.gnus.org (MGO)},
+hosting an archive of lisp snippets, howtos, a (not
+really finished) tutorial and this FAQ.
+
+Tell me about other sites which are interesting.
+
+@node [8.4]
+@subsubheading Question 8.4
+
+Which mailing lists and newsgroups are there?
+
+@subsubheading Answer
+
+There's the newsgroup gnu.emacs.gnus (pull it from
+e.g. news.gnus.org) which deals with general questions and the
+ding mailing list (ding@@gnus.org) dealing with development of
+Gnus. You can read the ding list via NNTP, too under the name
+gmane.emacs.gnus.general from news.gmane.org.
+
+If you want to stay in the big8,
+news.software.newssreaders is also read by some Gnus
+users (but chances for qualified help are much better in
+the above groups) and if you speak German, there's
+de.comm.software.gnus.
+
+@node [8.5]
+@subsubheading Question 8.5
+
+Where to report bugs?
+
+@subsubheading Answer
+
+Say @samp{M-x gnus-bug}, this will start
+a message to the 
+@email{bugs@@gnus.org, gnus bug mailing list}
+including information about your environment which make
+it easier to help you.
+
+@node [8.6]
+@subsubheading Question 8.6
+
+I need real-time help, where to find it?
+
+@subsubheading Answer
+
+Point your IRC client to irc.my.gnus.org channel
+#mygnus. Don't be afraid if people there speak German,
+they are willing and capable of switching to
+English when people from outside Germany enter.
+
+@node FAQ 9 - Tuning Gnus
 @subsection Tuning Gnus
 
 @menu
-* [9.1]::   Starting Gnus is really slow, how to speed it up? 
-* [9.2]::   How to speed up the process of entering a group? 
-* [9.3]::   Sending mail becomes slower and slower, what's up? 
+* [9.1]::    Starting Gnus is really slow, how to speed it up?
+* [9.2]::    How to speed up the process of entering a group?
+* [9.3]::    Sending mail becomes slower and slower, what's up?
 @end menu
 
-@ifnottex
-@node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.1: 
-
- Starting Gnus is really slow, how to speed it up?
- 
-
-Answer: 
-
- The reason for this could be the way Gnus reads it's
- active file, see the node "The Active File" in the Gnus
- manual for things you might try to speed the process up.
- An other idea would be to byte compile your ~/.gnus (say
- @samp{M-x byte-compile-file RET ~/.gnus
- RET} to do it). Finally, if you have require
- statements in your .gnus, you could replace them with
- eval-after-load, which loads the stuff not at startup
- time, but when it's needed. Say you've got this in your
- ~/.gnus:
- 
+@node [9.1]
+@subsubheading Question 9.1
+
+Starting Gnus is really slow, how to speed it up?
+
+@subsubheading Answer
+
+The reason for this could be the way Gnus reads it's
+active file, see the node "The Active File" in the Gnus
+manual for things you might try to speed the process up.
+An other idea would be to byte compile your ~/.gnus.el (say
+@samp{M-x byte-compile-file RET ~/.gnus.el
+RET} to do it). Finally, if you have require
+statements in your .gnus, you could replace them with
+eval-after-load, which loads the stuff not at startup
+time, but when it's needed. Say you've got this in your
+~/.gnus.el:
 
 @example
 (require 'message)
 (add-to-list 'message-syntax-checks '(sender . disabled))
 @end example
-
 @noindent
- then as soon as you start Gnus, message.el is loaded. If
- you replace it with
- 
+
+then as soon as you start Gnus, message.el is loaded. If
+you replace it with
 
 @example
 (eval-after-load "message"
       '(add-to-list 'message-syntax-checks '(sender . disabled)))
 @end example
-
 @noindent
- it's loaded when it's needed.
- 
-@ifnottex
-@node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.2: 
-
- How to speed up the process of entering a group?
- 
-
-Answer: 
-
- A speed killer is setting the variable
- gnus-fetch-old-headers to anything different from nil,
- so don't do this if speed is an issue. To speed up
- building of summary say
- 
+
+it's loaded when it's needed.
+
+@node [9.2]
+@subsubheading Question 9.2
+
+How to speed up the process of entering a group?
+
+@subsubheading Answer
+
+A speed killer is setting the variable
+gnus-fetch-old-headers to anything different from nil,
+so don't do this if speed is an issue. To speed up
+building of summary say
 
 @example
 (gnus-compile)
 @end example
-
 @noindent
- at the bottom of your ~/.gnus, this will make gnus
- byte-compile things like
- gnus-summary-line-format. 
- then you could increase the value of gc-cons-threshold
- by saying something like
- 
+
+at the bottom of your ~/.gnus.el, this will make gnus
+byte-compile things like
+gnus-summary-line-format. 
+then you could increase the value of gc-cons-threshold
+by saying something like
 
 @example
 (setq gc-cons-threshold 3500000)
 @end example
-
 @noindent
- in ~/.emacs. If you don't care about width of CJK
- characters or use Gnus 5.10 or younger together with a
- recent GNU Emacs, you should say
- 
+
+in ~/.emacs. If you don't care about width of CJK
+characters or use Gnus 5.10 or younger together with a
+recent GNU Emacs, you should say
 
 @example
-(setq gnus-use-correct-string-widths nil) 
+(setq gnus-use-correct-string-widths nil)
 @end example
- 
-
 @noindent
- in ~/.gnus (thanks to Jesper harder for the last
- two suggestions). Finally if you are still using 5.8.8
- or 5.9 and experience speed problems with summary
- buffer generation, you definitely should update to
- 5.10 since there quite some work on improving it has
- been done.
  
-@ifnottex
-@node [9.3],  , [9.2], FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.3: 
-
- Sending mail becomes slower and slower, what's up?
- 
-
-Answer: 
-
- The reason could be that you told Gnus to archive the
- messages you wrote by setting
- gnus-message-archive-group. Try to use a nnml group
- instead of an archive group, this should bring you back
- to normal speed.
- 
-
-@ifnottex
-@node FAQ - Glossary,  , FAQ 9 - Tuning Gnus, Frequently Asked Questions
-@end ifnottex
+in ~/.gnus.el (thanks to Jesper harder for the last
+two suggestions). Finally if you are still using 5.8.8
+or 5.9 and experience speed problems with summary
+buffer generation, you definitely should update to
+5.10 since there quite some work on improving it has
+been done.
+
+@node [9.3]
+@subsubheading Question 9.3
+
+Sending mail becomes slower and slower, what's up?
+
+@subsubheading Answer
+
+The reason could be that you told Gnus to archive the
+messages you wrote by setting
+gnus-message-archive-group. Try to use a nnml group
+instead of an archive group, this should bring you back
+to normal speed.
+
+@node FAQ - Glossary
 @subsection Glossary
 
 @table @dfn
 
-@item ~/.gnus
- When the term ~/.gnus is used it just means your Gnus
- configuration file. You might as well call it ~/.gnus.el or
- specify another name.
- 
+@item ~/.gnus.el
+When the term ~/.gnus.el is used it just means your Gnus
+configuration file. You might as well call it ~/.gnus or
+specify another name.
 
 @item Back End
- In Gnus terminology a back end is a virtual server, a layer
- between core Gnus and the real NNTP-, POP3-, IMAP- or
- whatever-server which offers Gnus a standardized interface
- to functions like "get message", "get Headers" etc.
- 
+In Gnus terminology a back end is a virtual server, a layer
+between core Gnus and the real NNTP-, POP3-, IMAP- or
+whatever-server which offers Gnus a standardized interface
+to functions like "get message", "get Headers" etc.
 
 @item Emacs
- When the term Emacs is used in this FAQ, it means either GNU
- Emacs or XEmacs.
- 
+When the term Emacs is used in this FAQ, it means either GNU
+Emacs or XEmacs.
 
 @item Message
- In this FAQ message means a either a mail or a posting to a
- Usenet Newsgroup or to some other fancy back end, no matter
- of which kind it is.
- 
+In this FAQ message means a either a mail or a posting to a
+Usenet Newsgroup or to some other fancy back end, no matter
+of which kind it is.
 
 @item MUA
- MUA is an acronym for Mail User Agent, it's the program you
- use to read and write e-mails.
- 
+MUA is an acronym for Mail User Agent, it's the program you
+use to read and write e-mails.
 
 @item NUA
- NUA is an acronym for News User Agent, it's the program you
- use to read and write Usenet news.
- 
+NUA is an acronym for News User Agent, it's the program you
+use to read and write Usenet news.
+
 @end table
 
-@c @bye
-
 @ignore
-   arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
+arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
 @end ignore
--- a/man/maintaining.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/maintaining.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1,5 +1,6 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
+@c   2001, 2005 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Maintaining, Abbrevs, Building, Top
 @chapter Maintaining Programs
@@ -8,8 +9,8 @@
 @cindex program editing
 
   This chapter describes Emacs features for maintaining programs.  The
-version control features (@pxref{Version Control}) are also
-particularly useful for this purpose.
+version control features (@pxref{Version Control}) are also particularly
+useful for this purpose.
 
 @menu
 * Change Log::	        Maintaining a change history for your program.
@@ -51,13 +52,13 @@
 @noindent
 Of course, you should substitute the proper years and copyright holder.
 
-  A change log entry starts with a header line that contains the
-current date, your name, and your email address (taken from the
-variable @code{user-mail-address}).  Aside from these header lines,
-every line in the change log starts with a space or a tab.  The bulk
-of the entry consists of @dfn{items}, each of which starts with a line
-starting with whitespace and a star.  Here are two entries, both dated
-in May 1993, each with two items:
+  A change log entry starts with a header line that contains the current
+date, your name, and your email address (taken from the variable
+@code{add-log-mailing-address}).  Aside from these header lines, every
+line in the change log starts with a space or a tab.  The bulk of the
+entry consists of @dfn{items}, each of which starts with a line starting
+with whitespace and a star.  Here are two entries, both dated in May
+1993, each with two items:
 
 @iftex
 @medbreak
--- a/man/message.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/message.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -8,7 +8,7 @@
 @copying
 This file documents Message, the Emacs message composition mode.
 
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 
 Free Software Foundation, Inc.
 
 @quotation
--- a/man/misc.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/misc.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1250,10 +1250,10 @@
 @vindex server-name
   You can run multiple Emacs servers on the same machine by giving
 each one a unique ``server name'', using the variable
-@code{server-name}.  For example, @kbd{M-x set-variable RET
-server-name RET foo RET} sets the server name to @samp{foo}.  The
-@code{emacsclient} program can visit a server by name using the
-@samp{-s} option.  @xref{Invoking emacsclient}.
+@code{server-name}.  For example, @kbd{M-x set-variable @key{RET}
+server-name @key{RET} foo @key{RET}} sets the server name to
+@samp{foo}.  The @code{emacsclient} program can visit a server by name
+using the @samp{-s} option.  @xref{Invoking emacsclient}.
 
   While @code{mail} or another application is waiting for
 @code{emacsclient} to finish, @code{emacsclient} does not read terminal
--- a/man/mule.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/mule.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -428,6 +428,9 @@
 because it stops waiting for more characters to combine, and starts
 searching for what you have already entered.
 
+  To find out how to input the character after point using the current
+input method, type @kbd{C-u C-x =}.  @xref{Position Info}.
+
 @vindex input-method-verbose-flag
 @vindex input-method-highlight-flag
   The variables @code{input-method-highlight-flag} and
@@ -928,6 +931,9 @@
 @item C-x @key{RET} X @var{coding} @key{RET}
 Use coding system @var{coding} for transferring @emph{one}
 selection---the next one---to or from the window system.
+
+@item M-x recode-region
+Convert the region from a previous coding system to a new one.
 @end table
 
 @kindex C-x RET f
@@ -1056,6 +1062,12 @@
   The default for translation of process input and output depends on the
 current language environment.
 
+@findex recode-region
+  If a piece of text has already been inserted into a buffer using the
+wrong coding system, you can decode it again using @kbd{M-x
+recode-region}.  This prompts you for the old coding system and the
+desired coding system, and acts on the text in the region.
+
 @vindex file-name-coding-system
 @cindex file names with non-@acronym{ASCII} characters
 @findex set-file-name-coding-system
@@ -1084,6 +1096,12 @@
 name, or it may get an error.  If such a problem happens, use @kbd{C-x
 C-w} to specify a new file name for that buffer.
 
+@findex recode-file-name
+  If a mistake occurs when encoding a file name, use the command
+command @kbd{M-x recode-file-name} to change the file name's coding
+system.  This prompts for an existing file name, its old coding
+system, and the coding system to which you wish to convert.
+
 @vindex locale-coding-system
 @cindex decoding non-@acronym{ASCII} keyboard input on X
   The variable @code{locale-coding-system} specifies a coding system
@@ -1358,6 +1376,27 @@
 Meta to be converted to @kbd{ESC} and still be able type 8-bit
 characters present directly on the keyboard or using @kbd{Compose} or
 @kbd{AltGr} keys.  @xref{User Input}.
+
+@kindex C-x 8
+@cindex @code{iso-transl} library
+@cindex compose character
+@cindex dead character
+@item
+For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose
+character'' prefix for entry of non-@acronym{ASCII} Latin-1 printing
+characters.  @kbd{C-x 8} is good for insertion (in the minibuffer as
+well as other buffers), for searching, and in any other context where
+a key sequence is allowed.
+
+@kbd{C-x 8} works by loading the @code{iso-transl} library.  Once that
+library is loaded, the @key{ALT} modifier key, if the keyboard has
+one, serves the same purpose as @kbd{C-x 8}: use @key{ALT} together
+with an accent character to modify the following letter.  In addition,
+if the keyboard has keys for the Latin-1 ``dead accent characters,''
+they too are defined to compose with the following character, once
+@code{iso-transl} is loaded.
+
+Use @kbd{C-x 8 C-h} to list all the available @kbd{C-x 8} translations.
 @end itemize
 
 @node Charsets
--- a/man/org.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/org.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -3,8 +3,8 @@
 @setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 3.04
-@set DATE December 2004
+@set VERSION 3.05
+@set DATE April 2005
 
 @dircategory Emacs
 @direntry
@@ -34,7 +34,7 @@
 @copying
 This manual is for Org-mode (version @value{VERSION}).
 
-Copyright @copyright{} 2004 Free Software Foundation
+Copyright @copyright{} 2004, 2005 Free Software Foundation
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -184,7 +184,8 @@
 large files well structured.  Visibility cycling and structure editing
 help to work with the tree.  Tables are easily created with a built-in
 table editor.  Org-mode supports ToDo items, deadlines, time stamps,
-and scheduling.  It dynamically compiles entries into an agenda.
+and scheduling.  It dynamically compiles entries into an agenda that
+utilizes and smoothly integrates much of the Emacs calendar and diary.
 Plain text URL-like links connect to websites, emails, usenet
 messages, BBDB entries, and any files related to the projects.  For
 printing and sharing of notes, an Org-mode file can be exported as a
@@ -203,15 +204,14 @@
 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
 @end example
 
-The Org-mode table editor can be used integrated into any major mode
-by activating the minor Ortbl-mode.
+The Org-mode table editor can be integrated into any major mode by
+activating the minor Orgtbl-mode.
 
 There is a website for Org-mode which provides links to the newest
 version of Org-mode, as well as additional information, screen shots
 and example files.  This page is located at
 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
 
-
 @page
 
 @node Installation,  , Summary, Introduction
@@ -352,6 +352,18 @@
 Show all.
 @end table
 
+When Emacs firsts visits a Org-mode file, the global state is set to
+OVERVIEW, i.e. only the top level headlines are visible.  This can be
+configured through the variable @code{org-startup-folded}, or on a
+per-file basis by adding one of the following lines anywhere in the
+buffer:
+
+@example
+#+STARTUP: fold
+#+STARTUP: nofold
+@end example
+
+
 @node Motion, Structure editing, Visibility cycling, Document Structure
 @section Motion
 @cindex motion, between headlines
@@ -473,6 +485,17 @@
 Other commands are using this feature as well.  For example @kbd{C-c
 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
 
+@kindex C-c C-x v
+@cindex printing sparse trees
+@cindex visible text, printing
+To print a sparse tree, you can use the Emacs command
+@code{ps-print-buffer-with-faces} which does not print invisible parts
+of the document @footnote{this does not work under XEmacs, because
+XEmacs uses selective display for outlining, not text properties}.
+Or you can use the command @kbd{C-c C-x v} to copy the visible part of
+the document to another file (extension @file{.txt}) which then can be
+printed in any desired way.
+
 @node TODO items, Tables, Document Structure, Top
 @chapter TODO items
 @cindex TODO items
@@ -611,7 +634,7 @@
 @end lisp
 
 In this case, different keywords do not indicate a sequence, but
-rather different levels.  This changes the behavior of the command
+rather different types.  This changes the behavior of the command
 @kbd{C-c C-t} slightly.  When used several times in succession, it
 will still cycle through all names.  But when when you return to the
 item after some time and execute @kbd{C-c C-t} again, it will switch
@@ -745,11 +768,6 @@
 necessary.  At the beginning or end of a line, @key{RET} still does
 NEWLINE, so it can be used to split a table.
 
-@kindex S-@key{RET}         
-@item S-@key{RET}         
-Copy from first non-empty
- field above current field.
-
 @tsubheading{Column and row editing}
 @kindex M-@key{left}
 @kindex M-@key{right}
@@ -796,7 +814,7 @@
 blank all fields in the rectangle.
 @kindex C-c C-h C-y
 @item C-c C-h C-y
-Paste a rectangluar region into a table.
+Paste a rectangular region into a table.
 The upper right corner ends up in the current field.  All involved fields
 will be overwritten.  If the rectangle does not fit into the present table,
 the table is enlarged as needed.  The process ignores horizontal separator
@@ -828,6 +846,14 @@
 the active region.  The result is displayed in the echo area and can
 be inserted with @kbd{C-y}.
 
+@kindex S-@key{RET}         
+@item S-@key{RET}         
+When current field is empty, copy from first non-empty field above.
+When not empty, copy current field down to next row and move cursor
+along with it.  Depending on the variable
+@code{org-table-copy-increment}, integer field values will be
+incremented during copy.
+
 @cindex formula, in tables
 @cindex calculations, in tables
 @kindex C-c =
@@ -1063,7 +1089,7 @@
 If not, a headline is constructed from the current date and some
 additional data.  If the variable @code{org-adapt-indentation} is
 non-nil, the entire text is also indented so that it starts in the
-same column as the headline (after the asterixes).
+same column as the headline (after the asterisks).
 
 @node Timestamps, Timeline and Agenda, Hyperlinks, Top
 @chapter Timestamps
@@ -1404,11 +1430,12 @@
 @node Agenda commands, Calendar/Diary integration, Agenda (multiple files), Timeline and Agenda
 @section Commands in the agenda buffer
 
-Entries in the agenda buffer are linked back to the org file.  You are
-not allowed to edit the agenda buffer itself, but commands are provided
-to edit the org-files ``remotely'' from the agenda buffer.  In this
-way, all information is stored only once, and you don't risk that your
-agenda and note files diverge.
+Entries in the agenda buffer are linked back to the org file or diary
+file where they originate.  You are not allowed to edit the agenda
+buffer itself, but commands are provided to show and jump to the
+original entry location, and to edit the org-files ``remotely'' from
+the agenda buffer.  In this way, all information is stored only once,
+and you don't risk that your agenda and note files diverge.
 
 Some commands can be executed with mouse clicks on agenda lines.  For
 the other commands, the cursor needs to be in the desired line.  Most
@@ -1468,7 +1495,7 @@
 Display the following @code{org-agenda-ndays} days.  For example, if
 the display covers a week, switch to the following week.  With prefix
 arg, go forward that many times @code{org-agenda-ndays} days.  Not
-available in timlines.
+available in timelines.
 
 @kindex @key{left}
 @item @key{left}
@@ -1536,6 +1563,29 @@
 entry in the diary, just like @kbd{i d} etc. would do in the calendar.
 The date is taken from the cursor position.
 
+@tsubheading{Calendar commands}
+@kindex c
+@item c
+Open the Emacs calendar and move to the date at the agenda cursor.
+
+@kindex C
+@item C
+Convert the date at cursor into many other cultural and historic
+calendars.
+
+@kindex M
+@item M
+Show the phases of the moon for three month around current date.
+
+@kindex S
+@item S
+Show sunrise and sunset times.  The location must be set with calendar
+variables, see documentation of the Emacs calendar.
+
+@kindex H
+@item H
+Show holidays for three month around the cursor date.
+
 @tsubheading{Quit and Exit}
 @kindex q
 @item q
@@ -1564,8 +1614,9 @@
 the diary.
 
 The interaction between Org-mode and diary works both ways: You can
-list entries from the diary in the Org-mode agenda, or you can display
-entries from the org agenda in the Emacs diary.
+list entries from the diary in the Org-mode agenda, from which many
+calendar and diary commands are directly accessible.  Or you can
+display entries from the org agenda in the Emacs diary.
 
 @menu
 * Diary to agenda::             Agenda incorporates the diary
@@ -1584,7 +1635,15 @@
 @end lisp
 @noindent
 
-@noindent After that, everything will happen automatically.
+@noindent After that, everything will happen automatically.  All diary
+entries including holidays, anniversaries etc will be included in the
+agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
+@key{RET} can be used from the agenda buffer to jump to the diary
+file, in order to edit existing diary entries.  Also the @kbd{i}
+command to insert new entries for the current date works in the agenda
+buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to
+display Sunrise/Sunset times, show lunar phases and to convert to
+other calendars, respectively.
 
 @node Agenda to diary,  , Diary to agenda, Calendar/Diary integration
 @subsection Including the agenda into the diary
--- a/man/programs.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/programs.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -1,5 +1,6 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
+@c               2001, 2005  Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Programs, Building, Text, Top
 @chapter Editing Programs
@@ -80,17 +81,19 @@
 @cindex Shell-script mode
 @cindex Delphi mode
 @cindex PostScript mode
+@cindex Conf mode
+@cindex DNS mode
   The existing programming language major modes include Lisp, Scheme (a
 variant of Lisp) and the Scheme-based DSSSL expression language, Ada,
 ASM, AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed
 format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s
 companion for font creation), Modula2, Objective-C, Octave, Pascal,
-Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL.  There is
-also a major mode for makefiles, called Makefile mode.  An alternative
-mode for Perl is called CPerl mode.  Modes are available for the
-scripting languages of the common GNU and Unix shells, VMS DCL, and
+Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL.  An
+alternative mode for Perl is called CPerl mode.  Modes are available for
+the scripting languages of the common GNU and Unix shells, VMS DCL, and
 MS-DOS/MS-Windows @samp{BAT} files.  There are also major modes for
-editing various sorts of configuration files.
+editing makefiles, DNS master files, and various sorts of configuration
+files.
 
 @kindex DEL @r{(programming modes)}
 @findex c-electric-backspace
@@ -1801,11 +1804,11 @@
 @cindex Fortran mode
 @cindex mode, Fortran
 
-  Fortran mode provides special motion commands for Fortran statements and
-subprograms, and indentation commands that understand Fortran conventions
-of nesting, line numbers and continuation statements.  Fortran mode has
-its own Auto Fill mode that breaks long lines into proper Fortran
-continuation lines.
+  Fortran mode provides special motion commands for Fortran statements
+and subprograms, and indentation commands that understand Fortran
+conventions of nesting, line numbers and continuation statements.
+Fortran mode has support for Auto Fill mode that breaks long lines into
+proper Fortran continuation lines.
 
   Special commands for comments are provided because Fortran comments
 are unlike those of other languages.  Built-in abbrevs optionally save
@@ -1817,18 +1820,18 @@
 @cindex Fortran77 and Fortran90
 @findex f90-mode
 @findex fortran-mode
-  Fortran mode is meant for editing Fortran77 ``fixed format'' source
-code.  For editing the modern Fortran90 ``free format'' source code,
-use F90 mode (@code{f90-mode}).  Emacs normally uses Fortran mode for
-files with extension @samp{.f}, @samp{.F} or @samp{.for}, and F90 mode
-for the extension @samp{.f90}.  GNU Fortran supports both kinds of
-format.
+  Fortran mode is meant for editing Fortran77 ``fixed format'' (and also
+``tab format'') source code.  For editing the modern Fortran90 or
+Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}).
+Emacs normally uses Fortran mode for files with extension @samp{.f},
+@samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and
+@samp{.f95}.  GNU Fortran supports both kinds of format.
 
 @menu
 * Motion: Fortran Motion.	 Moving point by statements or subprograms.
 * Indent: Fortran Indent.	 Indentation commands for Fortran.
 * Comments: Fortran Comments.	 Inserting and aligning comments.
-* Autofill: Fortran Autofill.	 Auto fill minor mode for Fortran.
+* Autofill: Fortran Autofill.	 Auto fill support for Fortran.
 * Columns: Fortran Columns.	 Measuring columns for valid Fortran.
 * Abbrev: Fortran Abbrev.	 Built-in abbrevs for Fortran keywords.
 @end menu
@@ -1837,8 +1840,9 @@
 @subsection Motion Commands
 
   In addition to the normal commands for moving by and operating on
-``defuns'' (Fortran subprograms---functions and subroutines), Fortran
-mode provides special commands to move by statements.
+``defuns'' (Fortran subprograms---functions and subroutines, as well as
+modules for F90 mode), Fortran mode provides special commands to move by
+statements and other program units.
 
 @table @kbd
 @kindex C-c C-n @r{(Fortran mode)}
@@ -1873,21 +1877,24 @@
 (@code{f90-previous-block}).  This is like @code{f90-next-block}, but
 moves backwards.
 
-@kindex C-M-n @r{(F90 mode)}
+@kindex C-M-n @r{(Fortran mode)}
+@findex fortran-end-of-block
 @findex f90-end-of-block
 @item C-M-n
-Move to the end of the current code block (@code{f90-end-of-block}).
-This is for F90 mode only.  With a numeric agument, move forward that
-number of blocks.  This command checks for consistency of block types
-and labels (if present), but it does not check the outermost block
-since that may be incomplete.  The mark is set before moving point.
+Move to the end of the current code block
+(@code{fortran-end-of-block}/@code{f90-end-of-block}).  With a numeric
+agument, move forward that number of blocks.  The mark is set before
+moving point.  The F90 mode version of this command checks for
+consistency of block types and labels (if present), but it does not
+check the outermost block since that may be incomplete.
 
-@kindex C-M-p @r{(F90 mode)}
+@kindex C-M-p @r{(Fortran mode)}
+@findex fortran-beginning-of-block
 @findex f90-beginning-of-block
 @item C-M-p
 Move to the start of the current code block
-(@code{f90-beginning-of-block}). This is like @code{f90-end-of-block},
-but moves backwards.
+(@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
+is like @code{fortran-end-of-block}, but moves backwards.
 @end table
 
 @node Fortran Indent
@@ -1896,7 +1903,7 @@
   Special commands and features are needed for indenting Fortran code in
 order to make sure various syntactic entities (line numbers, comment line
 indicators and continuation line flags) appear in the columns that are
-required for standard Fortran.
+required for standard, fixed (or tab) format Fortran.
 
 @menu
 * Commands: ForIndent Commands.  Commands for indenting and filling Fortran.
@@ -1911,7 +1918,7 @@
 
 @table @kbd
 @item C-M-j
-Break the current line and set up a continuation line
+Break the current line at point and set up a continuation line
 (@code{fortran-split-line}).
 @item M-^
 Join this line to the previous line (@code{fortran-join-line}).
@@ -1953,30 +1960,39 @@
 @cindex Fortran continuation lines
 
 @vindex fortran-continuation-string
-  Most modern Fortran compilers allow two ways of writing continuation
-lines.  If the first non-space character on a line is in column 5, then
-that line is a continuation of the previous line.  We call this
-@dfn{fixed format}.  (In GNU Emacs we always count columns from 0.)  The
-variable @code{fortran-continuation-string} specifies what character to
-put on column 5.  A line that starts with a tab character followed by
-any digit except @samp{0} is also a continuation line.  We call this
-style of continuation @dfn{tab format}.
+  Most Fortran77 compilers allow two ways of writing continuation lines.
+If the first non-space character on a line is in column 5, then that
+line is a continuation of the previous line.  We call this @dfn{fixed
+format}.  (In GNU Emacs we always count columns from 0; but note that
+the Fortran standard counts from 1.)  The variable
+@code{fortran-continuation-string} specifies what character to put in
+column 5.  A line that starts with a tab character followed by any digit
+except @samp{0} is also a continuation line.  We call this style of
+continuation @dfn{tab format}.  (Fortran90 introduced ``free format'',
+with another style of continuation lines).
 
 @vindex indent-tabs-mode @r{(Fortran mode)}
-  Fortran mode can make either style of continuation line, but you
-must specify which one you prefer.  The value of the variable
-@code{indent-tabs-mode} controls the choice: @code{nil} for fixed
-format, and non-@code{nil} for tab format.  You can tell which style
-is presently in effect by the presence or absence of the string
-@samp{Tab} in the mode line.
+@vindex fortran-analyze-depth
+@vindex fortran-tab-mode-default
+  Fortran mode can use either style of continuation line.  When you
+enter Fortran mode, it tries to deduce the proper continuation style
+automatically from the buffer contents.  It does this by scanning up to
+@code{fortran-analyze-depth} (default 100) lines from the start of the
+buffer.  The first line that begins with either a tab character or six
+spaces determines the choice.  If the scan fails (for example, if the
+buffer is new and therefore empty), the value of
+@code{fortran-tab-mode-default} (@code{nil} for fixed format, and
+non-@code{nil} for tab format) is used.  @samp{/t} in the mode line
+indicates tab format is selected.  Fortran mode sets the value of
+@code{indent-tabs-mode} accordingly (@pxref{Just Spaces}).
 
-  If the text on a line starts with the conventional Fortran
-continuation marker @samp{$}, or if it begins with any non-whitespace
-character in column 5, Fortran mode treats it as a continuation line.
-When you indent a continuation line with @key{TAB}, it converts the line
-to the current continuation style.  When you split a Fortran statement
-with @kbd{C-M-j}, the continuation marker on the newline is created
-according to the continuation style.
+  If the text on a line starts with the Fortran continuation marker
+@samp{$}, or if it begins with any non-whitespace character in column
+5, Fortran mode treats it as a continuation line.  When you indent a
+continuation line with @key{TAB}, it converts the line to the current
+continuation style.  When you split a Fortran statement with
+@kbd{C-M-j}, the continuation marker on the newline is created according
+to the continuation style.
 
   The setting of continuation style affects several other aspects of
 editing in Fortran mode.  In fixed format mode, the minimum column
@@ -1986,17 +2002,6 @@
 column number for the statement body is 8, and the whitespace before
 column 8 must always consist of one tab character.
 
-@vindex fortran-tab-mode-default
-@vindex fortran-analyze-depth
-  When you enter Fortran mode for an existing file, it tries to deduce the
-proper continuation style automatically from the file contents.  The first
-line that begins with either a tab character or six spaces determines the
-choice.  The variable @code{fortran-analyze-depth} specifies how many lines
-to consider (at the beginning of the file); if none of those lines
-indicates a style, then the variable @code{fortran-tab-mode-default}
-specifies the style.  If it is @code{nil}, that specifies fixed format, and
-non-@code{nil} specifies tab format.
-
 @node ForIndent Num
 @subsubsection Line Numbers
 
@@ -2007,9 +2012,11 @@
 @vindex fortran-line-number-indent
   Line numbers of four digits or less are normally indented one space.
 The variable @code{fortran-line-number-indent} controls this; it
-specifies the maximum indentation a line number can have.  Line numbers
-are right-justified to end in column 4 unless that would require more
-than this maximum indentation.  The default value of the variable is 1.
+specifies the maximum indentation a line number can have.  The default
+value of the variable is 1.  Fortran mode tries to prevent line number
+digits passing column 4, reducing the indentation below the specified
+maximum if necessary.  If @code{fortran-line-number-indent} has the
+value 5, line numbers are right-justified to end in column 4.
 
 @vindex fortran-electric-line-number
   Simply inserting a line number is enough to indent it according to
@@ -2062,54 +2069,59 @@
 Extra indentation within each level of @samp{do} statement (default 3).
 
 @item fortran-if-indent
-Extra indentation within each level of @samp{if} statement (default 3).
-This value is also used for extra indentation within each level of the
-Fortran 90 @samp{where} statement.
+Extra indentation within each level of @samp{if}, @samp{select case}, or
+@samp{where} statements (default 3).
 
 @item fortran-structure-indent
-Extra indentation within each level of @samp{structure}, @samp{union}, or
-@samp{map} statements (default 3).
+Extra indentation within each level of @samp{structure}, @samp{union},
+@samp{map}, or @samp{interface} statements (default 3).
 
 @item fortran-continuation-indent
 Extra indentation for bodies of continuation lines (default 5).
 
 @item fortran-check-all-num-for-matching-do
-If this is @code{nil}, indentation assumes that each @samp{do} statement
-ends on a @samp{continue} statement.  Therefore, when computing
-indentation for a statement other than @samp{continue}, it can save time
-by not checking for a @samp{do} statement ending there.  If this is
-non-@code{nil}, indenting any numbered statement must check for a
-@samp{do} that ends there.  The default is @code{nil}.
+In Fortran77, a numbered @samp{do} statement is ended by any statement
+with a matching line number.  It is common (but not compulsory) to use a
+@samp{continue} statement for this purpose.  If this variable has a
+non-@code{nil} value, indenting any numbered statement must check for a
+@samp{do} that ends there.  If you always end @samp{do} statements with
+a @samp{continue} line (or if you use the more modern @samp{enddo}),
+then you can speed up indentation by setting this variable to
+@code{nil}.  The default is @code{nil}.
 
 @item fortran-blink-matching-if
-If this is @code{t}, indenting an @samp{endif} statement moves the
-cursor momentarily to the matching @samp{if} statement to show where it
-is.  The default is @code{nil}.
+If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
+statement moves the cursor momentarily to the matching @samp{if} (or
+@samp{do}) statement to show where it is.  The default is @code{nil}.
 
 @item fortran-minimum-statement-indent-fixed
-Minimum indentation for fortran statements when using fixed format
+Minimum indentation for Fortran statements when using fixed format
 continuation line style.  Statement bodies are never indented less than
 this much.  The default is 6.
 
 @item fortran-minimum-statement-indent-tab
-Minimum indentation for fortran statements for tab format continuation line
+Minimum indentation for Fortran statements for tab format continuation line
 style.  Statement bodies are never indented less than this much.  The
 default is 8.
 @end table
 
+The variables controlling the indentation of comments are described in
+the following section.
+
 @node Fortran Comments
 @subsection Fortran Comments
 
-  The usual Emacs comment commands assume that a comment can follow a line
-of code.  In Fortran, the standard comment syntax requires an entire line
-to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
-comment commands and defines some new variables.
+  The usual Emacs comment commands assume that a comment can follow a
+line of code.  In Fortran77, the standard comment syntax requires an
+entire line to be just a comment.  Therefore, Fortran mode replaces the
+standard Emacs comment commands and defines some new variables.
 
+@vindex fortran-comment-line-start
   Fortran mode can also handle the Fortran90 comment syntax where comments
 start with @samp{!} and can follow other text.  Because only some Fortran77
 compilers accept this syntax, Fortran mode will not insert such comments
 unless you have said in advance to do so.  To do this, set the variable
-@code{comment-start} to @samp{"!"} (@pxref{Variables}).
+@code{fortran-comment-line-start} to @samp{"!"}.
 
 @table @kbd
 @item M-;
@@ -2123,6 +2135,7 @@
 into real code (@code{fortran-comment-region}).
 @end table
 
+@findex fortran-indent-comment
   @kbd{M-;} in Fortran mode is redefined as the command
 @code{fortran-indent-comment}.  Like the usual @kbd{M-;} command, this
 recognizes any kind of existing comment and aligns its text appropriately;
@@ -2178,14 +2191,6 @@
 lines are directives.  Matching lines are never indented, and receive
 distinctive font-locking.
 
-@vindex comment-line-start
-@vindex comment-line-start-skip
-  Fortran mode introduces two variables @code{comment-line-start} and
-@code{comment-line-start-skip}, which play for full-line comments the same
-roles played by @code{comment-start} and @code{comment-start-skip} for
-ordinary text-following comments.  Normally these are set properly by
-Fortran mode, so you do not need to change them.
-
   The normal Emacs comment command @kbd{C-x ;} has not been redefined.  If
 you use @samp{!} comments, this command can be used with them.  Otherwise
 it is useless in Fortran mode.
@@ -2204,34 +2209,28 @@
 clear from the context which one is meant.
 
 @node Fortran Autofill
-@subsection Fortran Auto Fill Mode
+@subsection Auto Fill in Fortran Mode
 
-  Fortran Auto Fill mode is a minor mode which automatically splits
-Fortran statements as you insert them when they become too wide.
-Splitting a statement involves making continuation lines using
-@code{fortran-continuation-string} (@pxref{ForIndent Cont}).  This
-splitting happens when you type @key{SPC}, @key{RET}, or @key{TAB}, and
-also in the Fortran indentation commands.
-
-@findex fortran-auto-fill-mode
-  @kbd{M-x fortran-auto-fill-mode} toggles Fortran Auto Fill mode,
-which is a variant of normal Auto Fill mode (@pxref{Filling}) designed
-for Fortran programs.  Fortran Auto Fill mode is a buffer-local minor
-mode (@pxref{Minor Modes}).  When Fortran Auto Fill mode is in effect,
-the word @samp{Fill} appears in the mode line inside the parentheses.
+  Fortran mode has specialized support for Auto Fill mode, which is a
+minor mode that automatically splits statements as you insert them when
+they become too wide.  Splitting a statement involves making
+continuation lines using @code{fortran-continuation-string}
+(@pxref{ForIndent Cont}).  This splitting happens when you type
+@key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation
+commands.  You activate Auto Fill in Fortran mode in the normal way
+(@pxref{Auto Fill}).
 
 @vindex fortran-break-before-delimiters
-   Fortran Auto Fill mode breaks lines at spaces or delimiters when the
-lines get longer than the desired width (the value of @code{fill-column}).
-The delimiters that Fortran Auto Fill mode may break at are @samp{,},
-@samp{'}, @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, and @samp{)}.
-The line break comes after the delimiter if the variable
-@code{fortran-break-before-delimiters} is @code{nil}.  Otherwise (and by
-default), the break comes before the delimiter.
+   Auto Fill breaks lines at spaces or delimiters when the lines get
+longer than the desired width (the value of @code{fill-column}).  The
+delimiters (besides whitespace) that Auto Fill can break at are
+@samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
+and @samp{,}.  The line break comes after the delimiter if the
+variable @code{fortran-break-before-delimiters} is @code{nil}.
+Otherwise (and by default), the break comes before the delimiter.
 
-  To enable this mode permanently, add a hook function to
-@code{fortran-mode-hook} to execute @code{(fortran-auto-fill-mode 1)}.
-@xref{Hooks}.
+  To enable Auto Fill in all Fortran buffers, add
+@code{turn-on-auto-fill} to @code{fortran-mode-hook}.  @xref{Hooks}.
 
 @node Fortran Columns
 @subsection Checking Columns in Fortran
@@ -2280,7 +2279,7 @@
 @findex fortran-window-create-momentarily
   @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
 splits the current window horizontally, making a window 72 columns
-wide, so you can see which lines that is too long.  Type a space to
+wide, so you can see any lines that are too long.  Type a space to
 restore the normal width.
 
 @kindex C-u C-c C-w @r{(Fortran mode)}
--- a/man/text.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/text.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -403,13 +403,13 @@
 * Fill Prefix::	        Filling paragraphs that are indented
                           or in a comment, etc.
 * Adaptive Fill::       How Emacs can determine the fill prefix automatically.
+* Longlines::           Editing text with very long lines.
 @end menu
 
 @node Auto Fill
 @subsection Auto Fill Mode
 @cindex Auto Fill mode
 @cindex mode, Auto Fill
-@cindex word wrap
 
   @dfn{Auto Fill} mode is a minor mode in which lines are broken
 automatically when they become too wide.  Breaking happens only when
@@ -474,16 +474,19 @@
 to typical word processor behavior.  This works by running a
 paragraph-filling command at suitable times.
 
-  When you are typing text, only characters which normally trigger
-auto filling, like the space character, will trigger refilling.  This
-is to avoid making it too slow.  Apart from self-inserting characters,
-other commands which modify the text cause refilling.
-
-  The current implementation is preliminary and probably not robust.
-We expect to improve on it.
-
   To toggle the use of Refill mode in the current buffer, type
-@kbd{M-x refill-mode}.
+@kbd{M-x refill-mode}.  When you are typing text, only characters
+which normally trigger auto filling, like the space character, will
+trigger refilling.  This is to avoid making it too slow.  Apart from
+self-inserting characters, other commands which modify the text cause
+refilling.
+
+  The current implementation is preliminary and not robust.  You can
+get better ``line wrapping'' behavior using Longlines mode.
+@xref{Longlines}.  However, Longlines mode has an important
+side-effect: the newlines that it inserts for you are not saved to
+disk, so the files that you make with Longlines mode will appear to be
+completely unfilled if you edit them without Longlines mode.
 
 @node Fill Commands
 @subsection Explicit Fill Commands
@@ -745,6 +748,56 @@
 line.  If it returns @code{nil}, that means it sees no fill prefix in
 that line.
 
+@node Longlines
+@subsection Long Lines Mode
+@cindex refilling text, word processor style
+@cindex modes, Long Lines
+@cindex word wrap
+@cindex Long Lines minor mode
+
+  Long Lines mode is a minor mode for @dfn{word wrapping}; it lets you
+edit ``unfilled'' text files, which Emacs would normally display as a
+bunch of extremely long lines.  Many text editors, such as those built
+into many web browsers, normally do word wrapping.
+
+@findex longlines-mode
+  To enable Long Lines mode, type @kbd{M-x longlines-mode}.  If the
+text is full of long lines, this will ``wrap'' them
+immediately---i.e., break up to fit in the window.  As you edit the
+text, Long Lines mode automatically re-wraps lines by inserting or
+deleting @dfn{soft newlines} as necessary (@pxref{Hard and Soft
+Newlines}.)  These soft newlines won't show up when you save the
+buffer into a file, or when you copy the text into the kill ring,
+clipboard, or a register.
+
+@findex longlines-auto-wrap
+  Word wrapping is @emph{not} the same as ordinary filling
+(@pxref{Fill Commands}).  It does not contract multiple spaces into a
+single space, recognize fill prefixes (@pxref{Fill Prefix}), or
+perform adaptive filling (@pxref{Adaptive Fill}).  The reason for this
+is that a wrapped line is still, conceptually, a single line.  Each
+soft newline is equivalent to exactly one space in that long line, and
+vice versa.  However, you can still call filling functions such as
+@kbd{M-q}, and these will work as expected, inserting soft newlines
+that won't show up on disk or when the text is copied.  You can even
+rely entirely on the normal fill commands by turning off automatic
+line wrapping, with @kbd{C-u M-x longlines-auto-wrap}.  To turn
+automatic line wrapping back on, type @kbd{M-x longlines-auto-wrap}.
+
+@findex longlines-show-hard-newlines
+  Whenever you type @kbd{RET}, you are inserting a hard newline.  If
+you want to see where all the hard newlines are, type @kbd{M-x
+longlines-show-hard-newlines}.  This will mark each hard newline with
+a special symbol.  The same command with a prefix argument turns this
+display off.
+
+  Long Lines mode does not change normal text files that are already
+filled, since the existing newlines are considered hard newlines.
+Before Long Lines can do anything, you need to transform each
+paragraph into a long line.  One way is to set @code{fill-column} to a
+large number (e.g., @kbd{C-u 9999 C-x f}), re-fill all the paragraphs,
+and then set @code{fill-column} back to its original value.
+
 @node Case
 @section Case Conversion Commands
 @cindex case conversion
--- a/man/xresources.texi	Mon Mar 28 04:24:51 2005 +0000
+++ b/man/xresources.texi	Mon Apr 04 16:43:15 2005 +0000
@@ -52,7 +52,8 @@
 and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}.
 The menu and scrollbars are native widgets on MS-Windows, so they are
 only customizable via the system-wide settings in the Display Control
-Panel.
+Panel.  You can also set resources using the @samp{-xrm} command line
+option (see below.)
 
   Programs define named resources with particular meanings.  They also
 define how to group resources into named classes.  For instance, in
@@ -668,8 +669,8 @@
 @end table
 
 @noindent
-You must soecify the class and the style in double-quotes, and put
-these commands at the top level in a @file{~/.gtkrc-2.0} file, like
+You must specify the class and the style in double-quotes, and put
+these commands at the top level in the GTK customization file, like
 this:
 
 @smallexample
@@ -782,7 +783,7 @@
 automatically applies only to Emacs, since other programs don't read
 that file.  For example, the drop down menu in the file dialog can not
 be customized by any absolute widget name, only by an absolute class
-name.  This is so because the widgets in the drop down menu do not
+name.  This is because the widgets in the drop down menu do not
 have names and the menu is not contained in the Emacs GtkWindow.  To
 have all menus in Emacs look the same, use this in
 @file{~/.emacs.d/gtkrc}:
--- a/src/ChangeLog	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/ChangeLog	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,81 @@
+2005-04-04  Kim F. Storm  <storm@cua.dk>
+
+	* alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc.
+
+	* eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry.
+	Call it again after autoload.
+
+2005-04-02  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* alloc.c (allocate_string_data): Call BLOCK_INPUT before calling
+	mallopt.
+
+	* ralloc.c (r_alloc_init): Ditto.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+	* lisp.h (Vascii_upcase_table, Vascii_canon_table,
+	Vascii_eqv_table): Extern them.
+
+	* casetab.c (set_case_table): If standard is nonzero, setup
+	Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
+
+	* search.c (looking_at_1): Use current_buffer->case_canon_table,
+	not DOWNCASE_TABLE.
+	(string_match_1): Likewise.
+	(fast_c_string_match_ignore_case): Use Vascii_canon_table, not
+	Vascii_downcase_table.
+	(fast_string_match_ignore_case): Likewise.
+	(search_buffer): Fix checking of boyer-moore usability.
+	(boyer_moore): Calculate translate_prev_byte1/2/3 in advance.  No
+	need of tranlating characters in PAT.  Fix calculation of
+	simple_translate.
+
+2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap.
+	(x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it.
+	Use XtNtopShadowPixel and XtNbottomShadowPixel.
+	(x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't
+	really work and that breaks with some versions of Xaw3d.
+
+2005-03-31  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (syms_of_coding): Fix previous change.
+
+2005-03-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* fileio.c (search_embedded_absfilename): Fix last change.
+
+2005-03-25  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (syms_of_coding): Suggest to use set-coding-category in
+	the docstring of coding-category-list.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+	* keyboard.c (Qmouse_fixup_help_message): New var.
+	(syms_of_keyboard): Intern and staticpro it.
+	(show_help_echo): Apply mouse-fixup-help-message to help string.
+
+2005-03-30  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (display_line): Allow multiple overlay arrows in window.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP.
+	(file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p.
+	(Ffile_name_absolute_p): Use it.
+	(search_embedded_absfilename): New fun, extracted from
+	Fsubstitute_in_file_name.  Use file_name_absolute_p.
+	Free the pw data after use.
+	(Fsubstitute_in_file_name): Use it.
+	After cutting a prefix, re-check file-name-handler.
+
 2005-03-26  Lennart Borgman  <lennart.borgman.073@student.lu.se>
 
-	* w32term.h (x_output): add focus_state.
+	* w32term.h (x_output): Add focus_state.
 
 	* w32term.c (x_focus_changed, w32_detect_focus_change): New functions.
 	(w32_read_socket) [WM_SETFOCUS]: Call w32_detect_focus_change.
--- a/src/alloc.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/alloc.c	Mon Apr 04 16:43:15 2005 +0000
@@ -1934,14 +1934,18 @@
          mmap'ed data typically have an address towards the top of the
          address space, which won't fit into an EMACS_INT (at least on
          32-bit systems with the current tagging scheme).  --fx  */
+      BLOCK_INPUT;
       mallopt (M_MMAP_MAX, 0);
+      UNBLOCK_INPUT;
 #endif
 
       b = (struct sblock *) lisp_malloc (size + GC_STRING_EXTRA, MEM_TYPE_NON_LISP);
 
 #ifdef DOUG_LEA_MALLOC
       /* Back to a reasonable maximum of mmap'ed areas. */
+      BLOCK_INPUT;
       mallopt (M_MMAP_MAX, MMAP_MAX_AREAS);
+      UNBLOCK_INPUT;
 #endif
 
       b->next_free = &b->first_data;
@@ -4684,6 +4688,8 @@
   if (pure_bytes_used_before_overflow)
     return Qnil;
 
+  CHECK_CONS_LIST ();
+
   /* Don't keep undo information around forever.
      Do this early on, so it is no problem if the user quits.  */
   {
@@ -4878,6 +4884,8 @@
 
   UNBLOCK_INPUT;
 
+  CHECK_CONS_LIST ();
+
   /* clear_marks (); */
   gc_in_progress = 0;
 
--- a/src/casetab.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/casetab.c	Mon Apr 04 16:43:15 2005 +0000
@@ -162,7 +162,12 @@
   XCHAR_TABLE (canon)->extras[2] = eqv;
 
   if (standard)
-    Vascii_downcase_table = table;
+    {
+      Vascii_downcase_table = table;
+      Vascii_upcase_table = up;
+      Vascii_canon_table = canon;
+      Vascii_eqv_table = eqv;
+    }
   else
     {
       current_buffer->downcase_table = table;
--- a/src/coding.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/coding.c	Mon Apr 04 16:43:15 2005 +0000
@@ -7821,7 +7821,7 @@
 one algorithm agrees with a byte sequence of source text, the coding
 system bound to the corresponding coding-category is selected.
 
-Don't modify this variable directly, but use `set-coding-category'.  */);
+Don't modify this variable directly, but use `set-coding-priority'.  */);
   {
     int i;
 
--- a/src/editfns.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/editfns.c	Mon Apr 04 16:43:15 2005 +0000
@@ -1,6 +1,6 @@
 /* Lisp functions pertaining to editing.
-   Copyright (C) 1985,86,87,89,93,94,95,96,97,98,1999,2000,01,02,03,2004
-	Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1997, 1998,
+     1999, 2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -265,10 +265,7 @@
 
 DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ",
        doc: /* Set point to POSITION, a number or marker.
-Beginning of buffer is position (point-min), end is (point-max).
-If the position is in the middle of a multibyte form,
-the actual point is set at the head of the multibyte form
-except in the case that `enable-multibyte-characters' is nil.  */)
+Beginning of buffer is position (point-min), end is (point-max).  */)
      (position)
      register Lisp_Object position;
 {
--- a/src/eval.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/eval.c	Mon Apr 04 16:43:15 2005 +0000
@@ -2742,6 +2742,8 @@
   if (debug_on_next_call)
     do_debug_on_call (Qlambda);
 
+  CHECK_CONS_LIST ();
+
  retry:
 
   fun = args[0];
@@ -2750,9 +2752,7 @@
 
   if (SUBRP (fun))
     {
-      CHECK_CONS_LIST ();
-
-      if (numargs < XSUBR (fun)->min_args
+       if (numargs < XSUBR (fun)->min_args
 	  || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs))
 	{
 	  XSETFASTINT (lisp_numargs, numargs);
@@ -2844,6 +2844,7 @@
       else if (EQ (funcar, Qautoload))
 	{
 	  do_autoload (fun, args[0]);
+	  CHECK_CONS_LIST ();
 	  goto retry;
 	}
       else
--- a/src/fileio.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/fileio.c	Mon Apr 04 16:43:15 2005 +0000
@@ -1016,7 +1016,7 @@
 DEFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
        doc: /* Convert filename NAME to absolute, and canonicalize it.
 Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative
- (does not start with slash); if DEFAULT-DIRECTORY is nil or missing,
+\(does not start with slash); if DEFAULT-DIRECTORY is nil or missing,
 the current buffer's value of default-directory is used.
 File name components that are `.' are removed, and
 so are file name components followed by `..', along with the `..' itself;
@@ -1466,7 +1466,7 @@
 	     indirectly by prepending newdir to nm if necessary, and using
 	     cwd (or the wd of newdir's drive) as the new newdir. */
 
-	  if (IS_DRIVE (newdir[0]) && newdir[1] == ':')
+	  if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1]))
 	    {
 	      drive = newdir[0];
 	      newdir += 2;
@@ -1489,7 +1489,7 @@
 	}
 
       /* Strip off drive name from prefix, if present. */
-      if (IS_DRIVE (newdir[0]) && newdir[1] == ':')
+      if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1]))
 	{
 	  drive = newdir[0];
 	  newdir += 2;
@@ -1723,7 +1723,7 @@
 DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
   "Convert FILENAME to absolute, and canonicalize it.\n\
 Second arg DEFAULT is directory to start with if FILENAME is relative\n\
- (does not start with slash); if DEFAULT is nil or missing,\n\
+\(does not start with slash); if DEFAULT is nil or missing,\n\
 the current buffer's value of default-directory is used.\n\
 Filenames containing `.' or `..' as components are simplified;\n\
 initial `~/' expands to your home directory.\n\
@@ -2042,6 +2042,75 @@
 }
 #endif
 
+/* If /~ or // appears, discard everything through first slash.  */
+static int
+file_name_absolute_p (filename)
+     const unsigned char *filename;
+{
+  return
+    (IS_DIRECTORY_SEP (*filename) || *filename == '~'
+#ifdef VMS
+     /* ??? This criterion is probably wrong for '<'.  */
+     || index (filename, ':') || index (filename, '<')
+     || (*filename == '[' && (filename[1] != '-'
+			      || (filename[2] != '.' && filename[2] != ']'))
+	 && filename[1] != '.')
+#endif /* VMS */
+#ifdef DOS_NT
+     || (IS_DRIVE (*filename) && IS_DEVICE_SEP (filename[1])
+	 && IS_DIRECTORY_SEP (filename[2]))
+#endif
+     );
+}
+
+static unsigned char *
+search_embedded_absfilename (nm, endp)
+     unsigned char *nm, *endp;
+{
+  unsigned char *p, *s;
+
+  for (p = nm + 1; p < endp; p++)
+    {
+      if ((0
+#ifdef VMS
+	   || p[-1] == ':' || p[-1] == ']' || p[-1] == '>'
+#endif /* VMS */
+	   || IS_DIRECTORY_SEP (p[-1]))
+	  && file_name_absolute_p (p)
+#if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN)
+	  /* // at start of file name is meaningful in Apollo,
+	     WindowsNT and Cygwin systems.  */
+	  && !(IS_DIRECTORY_SEP (p[0]) && p - 1 == nm)
+#endif /* not (APOLLO || WINDOWSNT || CYGWIN) */
+	      )
+	{
+	  for (s = p; *s && (!IS_DIRECTORY_SEP (*s)
+#ifdef VMS
+			      && *s != ':'
+#endif /* VMS */
+			      ); s++);
+	  if (p[0] == '~' && s > p + 1)	/* we've got "/~something/" */
+	    {
+	      unsigned char *o = alloca (s - p + 1);
+	      struct passwd *pw;
+	      bcopy (p, o, s - p);
+	      o [s - p] = 0;
+
+	      /* If we have ~user and `user' exists, discard
+		 everything up to ~.  But if `user' does not exist, leave
+		 ~user alone, it might be a literal file name.  */
+	      if ((pw = getpwnam (o + 1)))
+		return p;
+	      else
+		xfree (pw);
+	    }
+	  else
+	    return p;
+	}
+    }
+  return NULL;
+}
+
 DEFUN ("substitute-in-file-name", Fsubstitute_in_file_name,
        Ssubstitute_in_file_name, 1, 1, 0,
        doc: /* Substitute environment variables referred to in FILENAME.
@@ -2063,7 +2132,6 @@
   int total = 0;
   int substituted = 0;
   unsigned char *xnm;
-  struct passwd *pw;
   Lisp_Object handler;
 
   CHECK_STRING (filename);
@@ -2083,61 +2151,17 @@
   endp = nm + SBYTES (filename);
 
   /* If /~ or // appears, discard everything through first slash.  */
-
-  for (p = nm; p != endp; p++)
-    {
-      if ((p[0] == '~'
-#if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN)
-	   /* // at start of file name is meaningful in Apollo,
-	      WindowsNT and Cygwin systems.  */
-	   || (IS_DIRECTORY_SEP (p[0]) && p - 1 != nm)
-#else /* not (APOLLO || WINDOWSNT || CYGWIN) */
-	   || IS_DIRECTORY_SEP (p[0])
-#endif /* not (APOLLO || WINDOWSNT || CYGWIN) */
-	   )
-	  && p != nm
-	  && (0
-#ifdef VMS
-	      || p[-1] == ':' || p[-1] == ']' || p[-1] == '>'
-#endif /* VMS */
-	      || IS_DIRECTORY_SEP (p[-1])))
-	{
-	  for (s = p; *s && (!IS_DIRECTORY_SEP (*s)
-#ifdef VMS
-			      && *s != ':'
-#endif /* VMS */
-			      ); s++);
-	  if (p[0] == '~' && s > p + 1)	/* we've got "/~something/" */
-	    {
-	      o = (unsigned char *) alloca (s - p + 1);
-	      bcopy ((char *) p, o, s - p);
-	      o [s - p] = 0;
-
-	      pw = (struct passwd *) getpwnam (o + 1);
-	    }
-	  /* If we have ~/ or ~user and `user' exists, discard
-	     everything up to ~.  But if `user' does not exist, leave
-	     ~user alone, it might be a literal file name.  */
-	  if (IS_DIRECTORY_SEP (p[0]) || s == p + 1 || pw)
-	    {
-	      nm = p;
-	      substituted = 1;
-	    }
-	}
-#ifdef DOS_NT
-      /* see comment in expand-file-name about drive specifiers */
-      else if (IS_DRIVE (p[0]) && p[1] == ':'
-	       && p > nm && IS_DIRECTORY_SEP (p[-1]))
-	{
-	  nm = p;
-	  substituted = 1;
-	}
-#endif /* DOS_NT */
-    }
+  p = search_embedded_absfilename (nm, endp);
+  if (p)
+    /* Start over with the new string, so we check the file-name-handler
+       again.  Important with filenames like "/home/foo//:/hello///there"
+       which whould substitute to "/:/hello///there" rather than "/there".  */
+    return Fsubstitute_in_file_name
+      (make_specified_string (p, -1, endp - p,
+			      STRING_MULTIBYTE (filename)));
 
 #ifdef VMS
-  return make_specified_string (nm, -1, strlen (nm),
-				STRING_MULTIBYTE (filename));
+  return filename;
 #else
 
   /* See if any variables are substituted into the string
@@ -2263,22 +2287,11 @@
   *x = 0;
 
   /* If /~ or // appears, discard everything through first slash.  */
-
-  for (p = xnm; p != x; p++)
-    if ((p[0] == '~'
-#if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN)
-	 || (IS_DIRECTORY_SEP (p[0]) && p - 1 != xnm)
-#else /* not (APOLLO || WINDOWSNT || CYGWIN) */
-	 || IS_DIRECTORY_SEP (p[0])
-#endif /* not (APOLLO || WINDOWSNT || CYGWIN) */
-	 )
-	&& p != xnm && IS_DIRECTORY_SEP (p[-1]))
-      xnm = p;
-#ifdef DOS_NT
-    else if (IS_DRIVE (p[0]) && p[1] == ':'
-	     && p > xnm && IS_DIRECTORY_SEP (p[-1]))
-      xnm = p;
-#endif
+  while ((p = search_embedded_absfilename (xnm, x)))
+    /* This time we do not start over because we've already expanded envvars
+       and replaced $$ with $.  Maybe we should start over as well, but we'd
+       need to quote some $ to $$ first.  */
+    xnm = p;
 
   return make_specified_string (xnm, -1, x - xnm, STRING_MULTIBYTE (filename));
 
@@ -2961,24 +2974,8 @@
      (filename)
      Lisp_Object filename;
 {
-  const unsigned char *ptr;
-
   CHECK_STRING (filename);
-  ptr = SDATA (filename);
-  if (IS_DIRECTORY_SEP (*ptr) || *ptr == '~'
-#ifdef VMS
-/* ??? This criterion is probably wrong for '<'.  */
-      || index (ptr, ':') || index (ptr, '<')
-      || (*ptr == '[' && (ptr[1] != '-' || (ptr[2] != '.' && ptr[2] != ']'))
-	  && ptr[1] != '.')
-#endif /* VMS */
-#ifdef DOS_NT
-      || (IS_DRIVE (*ptr) && ptr[1] == ':' && IS_DIRECTORY_SEP (ptr[2]))
-#endif
-      )
-    return Qt;
-  else
-    return Qnil;
+  return file_name_absolute_p (SDATA (filename)) ? Qt : Qnil;
 }
 
 /* Return nonzero if file FILENAME exists and can be executed.  */
--- a/src/keyboard.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/keyboard.c	Mon Apr 04 16:43:15 2005 +0000
@@ -514,6 +514,10 @@
 Lisp_Object Qselect_window;
 Lisp_Object Qhelp_echo;
 
+#ifdef HAVE_MOUSE
+Lisp_Object Qmouse_fixup_help_message;
+#endif
+
 /* Symbols to denote kinds of events.  */
 Lisp_Object Qfunction_key;
 Lisp_Object Qmouse_click;
@@ -2298,6 +2302,11 @@
 	return;
     }
 
+#ifdef HAVE_MOUSE
+  if (!noninteractive && STRINGP (help))
+    help = call1 (Qmouse_fixup_help_message, help);
+#endif
+
   if (STRINGP (help) || NILP (help))
     {
       if (!NILP (Vshow_help_function))
@@ -11010,6 +11019,11 @@
   Qmenu_bar = intern ("menu-bar");
   staticpro (&Qmenu_bar);
 
+#ifdef HAVE_MOUSE
+  Qmouse_fixup_help_message = intern ("mouse-fixup-help-message");
+  staticpro (&Qmouse_fixup_help_message);
+#endif
+
   Qabove_handle = intern ("above-handle");
   staticpro (&Qabove_handle);
   Qhandle = intern ("handle");
--- a/src/lisp.h	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/lisp.h	Mon Apr 04 16:43:15 2005 +0000
@@ -1861,7 +1861,8 @@
     NATNUMP (case_temp2))					\
    ? XFASTINT (case_temp2) : case_temp1)
 
-extern Lisp_Object Vascii_downcase_table;
+extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table;
+extern Lisp_Object Vascii_canon_table, Vascii_eqv_table;
 
 /* Number of bytes of structure consed since last GC.  */
 
--- a/src/ralloc.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/ralloc.c	Mon Apr 04 16:43:15 2005 +0000
@@ -28,6 +28,7 @@
 
 #include <config.h>
 #include "lisp.h"		/* Needed for VALBITS.  */
+#include "blockinput.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -1255,7 +1256,9 @@
 #endif
 
 #ifdef DOUG_LEA_MALLOC
-    mallopt (M_TOP_PAD, 64 * 4096);
+  BLOCK_INPUT;
+  mallopt (M_TOP_PAD, 64 * 4096);
+  UNBLOCK_INPUT;
 #else
 #ifndef SYSTEM_MALLOC
   /* Give GNU malloc's morecore some hysteresis
--- a/src/search.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/search.c	Mon Apr 04 16:43:15 2005 +0000
@@ -293,7 +293,7 @@
   CHECK_STRING (string);
   bufp = compile_pattern (string, &search_regs,
 			  (!NILP (current_buffer->case_fold_search)
-			   ? DOWNCASE_TABLE : Qnil),
+			   ? current_buffer->case_canon_table : Qnil),
 			  posix,
 			  !NILP (current_buffer->enable_multibyte_characters));
 
@@ -399,7 +399,7 @@
 
   bufp = compile_pattern (regexp, &search_regs,
 			  (!NILP (current_buffer->case_fold_search)
-			   ? DOWNCASE_TABLE : Qnil),
+			   ? current_buffer->case_canon_table : Qnil),
 			  posix,
 			  STRING_MULTIBYTE (string));
   immediate_quit = 1;
@@ -499,7 +499,7 @@
   regexp = string_make_unibyte (regexp);
   re_match_object = Qt;
   bufp = compile_pattern (regexp, 0,
-			  Vascii_downcase_table, 0,
+			  Vascii_canon_table, 0,
 			  0);
   immediate_quit = 1;
   val = re_search (bufp, string, len, 0, len, 0);
@@ -516,7 +516,7 @@
   int val;
   struct re_pattern_buffer *bufp;
 
-  bufp = compile_pattern (regexp, 0, Vascii_downcase_table,
+  bufp = compile_pattern (regexp, 0, Vascii_canon_table,
 			  0, STRING_MULTIBYTE (string));
   immediate_quit = 1;
   re_match_object = string;
@@ -1175,7 +1175,9 @@
       unsigned char *patbuf;
       int multibyte = !NILP (current_buffer->enable_multibyte_characters);
       unsigned char *base_pat = SDATA (string);
-      int charset_base = -1;
+      /* Set to nozero if we find a non-ASCII char that need
+	 translation.  */
+      int charset_base = 0;
       int boyer_moore_ok = 1;
 
       /* MULTIBYTE says whether the text to be searched is multibyte.
@@ -1221,9 +1223,17 @@
       base_pat = raw_pattern;
       if (multibyte)
 	{
+	  /* Fill patbuf by translated characters in STRING while
+	     checking if we can use boyer-moore search.  If TRT is
+	     non-nil, we can use boyer-moore search only if TRT can be
+	     represented by the byte array of 256 elements.  For that,
+	     all non-ASCII case-equivalents of all case-senstive
+	     characters in STRING must belong to the same charset and
+	     row.  */
+
 	  while (--len >= 0)
 	    {
-	      unsigned char str[MAX_MULTIBYTE_LENGTH];
+	      unsigned char str_base[MAX_MULTIBYTE_LENGTH], *str;
 	      int c, translated, inverse;
 	      int in_charlen, charlen;
 
@@ -1233,50 +1243,62 @@
 	      if (RE && *base_pat == '\\')
 		{
 		  len--;
+		  raw_pattern_size--;
 		  len_byte--;
 		  base_pat++;
 		}
 
 	      c = STRING_CHAR_AND_LENGTH (base_pat, len_byte, in_charlen);
 
-	      /* Translate the character, if requested.  */
-	      TRANSLATE (translated, trt, c);
-	      /* If translation changed the byte-length, go back
-		 to the original character.  */
-	      charlen = CHAR_STRING (translated, str);
-	      if (in_charlen != charlen)
+	      if (NILP (trt))
 		{
-		  translated = c;
-		  charlen = CHAR_STRING (c, str);
+		  str = base_pat;
+		  charlen = in_charlen;
 		}
-
-	      /* If we are searching for something strange,
-		 an invalid multibyte code, don't use boyer-moore.  */
-	      if (! ASCII_BYTE_P (translated)
-		  && (charlen == 1 /* 8bit code */
-		      || charlen != in_charlen /* invalid multibyte code */
-		      ))
-		boyer_moore_ok = 0;
-
-	      TRANSLATE (inverse, inverse_trt, c);
-
-	      /* Did this char actually get translated?
-		 Would any other char get translated into it?  */
-	      if (translated != c || inverse != c)
+	      else
 		{
-		  /* Keep track of which character set row
-		     contains the characters that need translation.  */
-		  int charset_base_code = c & ~CHAR_FIELD3_MASK;
-		  int inverse_charset_base = inverse & ~CHAR_FIELD3_MASK;
-
-		  if (charset_base_code != inverse_charset_base)
-		    boyer_moore_ok = 0;
-		  else if (charset_base == -1)
-		    charset_base = charset_base_code;
-		  else if (charset_base != charset_base_code)
-		    /* If two different rows appear, needing translation,
-		       then we cannot use boyer_moore search.  */
-		    boyer_moore_ok = 0;
+		  /* Translate the character.  */
+		  TRANSLATE (translated, trt, c);
+		  charlen = CHAR_STRING (translated, str_base);
+		  str = str_base;
+
+		  /* Check if C has any other case-equivalents.  */
+		  TRANSLATE (inverse, inverse_trt, c);
+		  /* If so, check if we can use boyer-moore.  */
+		  if (c != inverse && boyer_moore_ok)
+		    {
+		      /* Check if all equivalents belong to the same
+			 charset & row.  Note that the check of C
+			 itself is done by the last iteration.  Note
+			 also that we don't have to check ASCII
+			 characters because boyer-moore search can
+			 always handle their translation.  */
+		      while (1)
+			{
+			  if (! ASCII_BYTE_P (inverse))
+			    {
+			      if (SINGLE_BYTE_CHAR_P (inverse))
+				{
+				  /* Boyer-moore search can't handle a
+				     translation of an eight-bit
+				     character.  */
+				  boyer_moore_ok = 0;
+				  break;
+				}
+			      else if (charset_base == 0)
+				charset_base = inverse & ~CHAR_FIELD3_MASK;
+			      else if ((inverse & ~CHAR_FIELD3_MASK)
+				       != charset_base)
+				{
+				  boyer_moore_ok = 0;
+				  break;
+				}
+			    }
+			  if (c == inverse)
+			    break;
+			  TRANSLATE (inverse, inverse_trt, inverse);
+			}
+		    }
 		}
 
 	      /* Store this character into the translated pattern.  */
@@ -1300,6 +1322,7 @@
 	      if (RE && *base_pat == '\\')
 		{
 		  len--;
+		  raw_pattern_size--;
 		  base_pat++;
 		}
 	      c = *base_pat++;
@@ -1533,16 +1556,18 @@
     return n;
 }
 
-/* Do Boyer-Moore search N times for the string PAT,
+/* Do Boyer-Moore search N times for the string BASE_PAT,
    whose length is LEN/LEN_BYTE,
    from buffer position POS/POS_BYTE until LIM/LIM_BYTE.
    DIRECTION says which direction we search in.
    TRT and INVERSE_TRT are translation tables.
-
-   This kind of search works if all the characters in PAT that have
-   nontrivial translation are the same aside from the last byte.  This
-   makes it possible to translate just the last byte of a character,
-   and do so after just a simple test of the context.
+   Characters in PAT are already translated by TRT.
+
+   This kind of search works if all the characters in BASE_PAT that
+   have nontrivial translation are the same aside from the last byte.
+   This makes it possible to translate just the last byte of a
+   character, and do so after just a simple test of the context.
+   CHARSET_BASE is nonzero iff there is such a non-ASCII character.
 
    If that criterion is not satisfied, do not call this function.  */
 
@@ -1569,8 +1594,13 @@
   int multibyte = ! NILP (current_buffer->enable_multibyte_characters);
 
   unsigned char simple_translate[0400];
-  int translate_prev_byte = 0;
-  int translate_anteprev_byte = 0;
+  /* These are set to the preceding bytes of a byte to be translated
+     if charset_base is nonzero.  As the maximum byte length of a
+     multibyte character is 4, we have to check at most three previous
+     bytes.  */
+  int translate_prev_byte1 = 0;
+  int translate_prev_byte2 = 0;
+  int translate_prev_byte3 = 0;
 
 #ifdef C_ALLOCA
   int BM_tab_space[0400];
@@ -1636,6 +1666,23 @@
   for (i = 0; i < 0400; i++)
     simple_translate[i] = i;
 
+  if (charset_base)
+    {
+      /* Setup translate_prev_byte1/2/3 from CHARSET_BASE.  Only a
+	 byte following them are the target of translation.  */
+      int sample_char = charset_base | 0x20;
+      unsigned char str[MAX_MULTIBYTE_LENGTH];
+      int len = CHAR_STRING (sample_char, str);
+
+      translate_prev_byte1 = str[len - 2];
+      if (len > 2)
+	{
+	  translate_prev_byte2 = str[len - 3];
+	  if (len > 3)
+	    translate_prev_byte3 = str[len - 4];
+	}
+    }
+
   i = 0;
   while (i != infinity)
     {
@@ -1645,57 +1692,37 @@
 	i = infinity;
       if (! NILP (trt))
 	{
-	  int ch;
-	  int untranslated;
-	  int this_translated = 1;
-
-	  if (multibyte
-	      /* Is *PTR the last byte of a character?  */
-	      && (pat_end - ptr == 1 || CHAR_HEAD_P (ptr[1])))
+	  /* If the byte currently looking at is a head of a character
+	     to check case-equivalents, set CH to that character.  An
+	     ASCII character and a non-ASCII character matching with
+	     CHARSET_BASE are to be checked.  */
+	  int ch = -1;
+
+	  if (ASCII_BYTE_P (*ptr) || ! multibyte)
+	    ch = *ptr;
+	  else if (charset_base && CHAR_HEAD_P (*ptr))
 	    {
-	      unsigned char *charstart = ptr;
-	      while (! CHAR_HEAD_P (*charstart))
-		charstart--;
-	      untranslated = STRING_CHAR (charstart, ptr - charstart + 1);
-	      if (charset_base == (untranslated & ~CHAR_FIELD3_MASK))
-		{
-		  TRANSLATE (ch, trt, untranslated);
-		  if (! CHAR_HEAD_P (*ptr))
-		    {
-		      translate_prev_byte = ptr[-1];
-		      if (! CHAR_HEAD_P (translate_prev_byte))
-			translate_anteprev_byte = ptr[-2];
-		    }
-		}
-	      else
-		{
-		  this_translated = 0;
-		  ch = *ptr;
-		}
+	      ch = STRING_CHAR (ptr, pat_end - ptr);
+	      if (charset_base != (ch & ~CHAR_FIELD3_MASK))
+		ch = -1;
 	    }
-	  else if (!multibyte)
-	    TRANSLATE (ch, trt, *ptr);
-	  else
-	    {
-	      ch = *ptr;
-	      this_translated = 0;
-	    }
-
-	  if (ch > 0400)
-	    j = ((unsigned char) ch) | 0200;
-	  else
-	    j = (unsigned char) ch;
-
+
+	  j = *ptr;
 	  if (i == infinity)
 	    stride_for_teases = BM_tab[j];
 
 	  BM_tab[j] = dirlen - i;
 	  /* A translation table is accompanied by its inverse -- see */
 	  /* comment following downcase_table for details */
-	  if (this_translated)
+	  if (ch >= 0)
 	    {
 	      int starting_ch = ch;
-	      int starting_j = j;
+	      int starting_j;
+
+	      if (ch > 0400)
+		starting_j = ((unsigned char) ch) | 0200;
+	      else
+		starting_j = (unsigned char) ch;
 	      while (1)
 		{
 		  TRANSLATE (ch, inverse_trt, ch);
@@ -1821,9 +1848,13 @@
 			  || ((cursor == tail_end_ptr
 			       || CHAR_HEAD_P (cursor[1]))
 			      && (CHAR_HEAD_P (cursor[0])
-				  || (translate_prev_byte == cursor[-1]
-				      && (CHAR_HEAD_P (translate_prev_byte)
-					  || translate_anteprev_byte == cursor[-2])))))
+				  /* Check if this is the last byte of
+				     a translable character.  */
+				  || (translate_prev_byte1 == cursor[-1]
+				      && (CHAR_HEAD_P (translate_prev_byte1)
+					  || (translate_prev_byte2 == cursor[-2]
+					      && (CHAR_HEAD_P (translate_prev_byte2)
+						  || (translate_prev_byte3 == cursor[-3]))))))))
 			ch = simple_translate[*cursor];
 		      else
 			ch = *cursor;
@@ -1901,9 +1932,13 @@
 		      || ((ptr == tail_end_ptr
 			   || CHAR_HEAD_P (ptr[1]))
 			  && (CHAR_HEAD_P (ptr[0])
-			      || (translate_prev_byte == ptr[-1]
-				  && (CHAR_HEAD_P (translate_prev_byte)
-				      || translate_anteprev_byte == ptr[-2])))))
+			      /* Check if this is the last byte of a
+				 translable character.  */
+			      || (translate_prev_byte1 == ptr[-1]
+				  && (CHAR_HEAD_P (translate_prev_byte1)
+				      || (translate_prev_byte2 == ptr[-2]
+					  && (CHAR_HEAD_P (translate_prev_byte2)
+					      || translate_prev_byte3 == ptr[-3])))))))
 		    ch = simple_translate[*ptr];
 		  else
 		    ch = *ptr;
--- a/src/xdisp.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/xdisp.c	Mon Apr 04 16:43:15 2005 +0000
@@ -462,7 +462,7 @@
 
 Lisp_Object Qmenu_bar_update_hook, Vmenu_bar_update_hook;
 
-/* Nonzero if overlay arrow has been displayed once in this window.  */
+/* Nonzero if an overlay arrow has been displayed in this window.  */
 
 static int overlay_arrow_seen;
 
@@ -15262,10 +15262,9 @@
      mark this glyph row as the one containing the overlay arrow.
      This is clearly a mess with variable size fonts.  It would be
      better to let it be displayed like cursors under X.  */
-  if (! overlay_arrow_seen
-      && (overlay_arrow_string
-	    = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap),
-	  !NILP (overlay_arrow_string)))
+  if ((overlay_arrow_string
+       = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap),
+       !NILP (overlay_arrow_string)))
     {
       /* Overlay arrow in window redisplay is a fringe bitmap.  */
       if (STRINGP (overlay_arrow_string))
--- a/src/xterm.c	Mon Mar 28 04:24:51 2005 +0000
+++ b/src/xterm.c	Mon Apr 04 16:43:15 2005 +0000
@@ -129,9 +129,7 @@
 #ifdef HAVE_XAW3D
 #include <X11/Xaw3d/Simple.h>
 #include <X11/Xaw3d/Scrollbar.h>
-#define ARROW_SCROLLBAR
-#define XAW_ARROW_SCROLLBARS
-#include <X11/Xaw3d/ScrollbarP.h>
+#include <X11/Xaw3d/ThreeD.h>
 #else /* !HAVE_XAW3D */
 #include <X11/Xaw/Simple.h>
 #include <X11/Xaw/Scrollbar.h>
@@ -4560,6 +4558,7 @@
       f->output_data.x->scroll_bar_bottom_shadow_pixel = pixel;
     }
 
+#ifdef XtNbeNiceToColormap
   /* Tell the toolkit about them.  */
   if (f->output_data.x->scroll_bar_top_shadow_pixel == -1
       || f->output_data.x->scroll_bar_bottom_shadow_pixel == -1)
@@ -4583,16 +4582,17 @@
       pixel = f->output_data.x->scroll_bar_top_shadow_pixel;
       if (pixel != -1)
 	{
-	  XtSetArg (av[ac], "topShadowPixel", pixel);
+	  XtSetArg (av[ac], XtNtopShadowPixel, pixel);
 	  ++ac;
 	}
       pixel = f->output_data.x->scroll_bar_bottom_shadow_pixel;
       if (pixel != -1)
 	{
-	  XtSetArg (av[ac], "bottomShadowPixel", pixel);
+	  XtSetArg (av[ac], XtNbottomShadowPixel, pixel);
 	  ++ac;
 	}
     }
+#endif
 
   widget = XtCreateWidget (scroll_bar_name, scrollbarWidgetClass,
 			   f->output_data.x->edit_widget, av, ac);
@@ -4738,30 +4738,11 @@
 	  XawScrollbarSetThumb (widget, top, shown);
 	else
 	  {
-#ifdef HAVE_XAW3D
-	    ScrollbarWidget sb = (ScrollbarWidget) widget;
-	    int scroll_mode = 0;
-
-	    /* `scroll_mode' only exists with Xaw3d + ARROW_SCROLLBAR.  */
-	    if (xaw3d_arrow_scroll)
-	      {
-		/* Xaw3d stupidly ignores resize requests while dragging
-		   so we have to make it believe it's not in dragging mode.  */
-		scroll_mode = sb->scrollbar.scroll_mode;
-		if (scroll_mode == 2)
-		  sb->scrollbar.scroll_mode = 0;
-	      }
-#endif
 	    /* Try to make the scrolling a tad smoother.  */
 	    if (!xaw3d_pick_top)
 	      shown = min (shown, old_shown);
 
 	    XawScrollbarSetThumb (widget, top, shown);
-
-#ifdef HAVE_XAW3D
-	    if (xaw3d_arrow_scroll && scroll_mode == 2)
-	      sb->scrollbar.scroll_mode = scroll_mode;
-#endif
 	  }
       }
   }