changeset 90140:02f1dbc4a199

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-35 Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 228-240) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 53-58) - Merge from emacs--cvs-trunk--0 - Update from CVS - Collapse feature addition/removal within single ChangeLog entry
author Miles Bader <miles@gnu.org>
date Sat, 09 Apr 2005 02:16:29 +0000
parents e0d294b9b23e (current diff) a2d3e29d8373 (diff)
children 87437d695ee3
files admin/FOR-RELEASE etc/ChangeLog etc/NEWS etc/TUTORIAL.cs etc/TUTORIAL.de etc/TUTORIAL.it etc/TUTORIAL.ja etc/TUTORIAL.sv etc/TUTORIAL.translators leim/ChangeLog leim/quail/sgml-input.el lisp/ChangeLog lisp/ChangeLog.5 lisp/add-log.el lisp/autorevert.el lisp/battery.el lisp/buff-menu.el lisp/calc/calc-aent.el lisp/calc/calc.el lisp/calendar/calendar.el lisp/calendar/diary-lib.el lisp/calendar/time-date.el lisp/calendar/timeclock.el lisp/comint.el lisp/cus-edit.el lisp/desktop.el lisp/diff-mode.el lisp/dired.el lisp/ediff-init.el lisp/emacs-lisp/authors.el lisp/emacs-lisp/copyright.el lisp/emacs-lisp/easy-mmode.el lisp/emacs-lisp/eldoc.el lisp/emacs-lisp/lisp.el lisp/emacs-lisp/re-builder.el lisp/emulation/cua-base.el lisp/fast-lock.el lisp/ffap.el lisp/filesets.el lisp/font-core.el lisp/font-lock.el lisp/generic-x.el lisp/generic.el lisp/gnus/ChangeLog lisp/gnus/gnus-art.el lisp/gnus/gnus-demon.el lisp/gnus/gnus-sum.el lisp/gnus/message.el lisp/gnus/nnimap.el lisp/gnus/nnultimate.el lisp/hi-lock.el lisp/hilit-chg.el lisp/hl-line.el lisp/ido.el lisp/ielm.el lisp/info.el lisp/international/encoded-kb.el lisp/language/thai-util.el lisp/lazy-lock.el lisp/mail/supercite.el lisp/master.el lisp/mh-e/ChangeLog lisp/mh-e/mh-customize.el lisp/mouse.el lisp/msb.el lisp/pcvs-info.el lisp/pcvs.el lisp/progmodes/cc-fonts.el lisp/progmodes/compile.el lisp/progmodes/cwarn.el lisp/progmodes/ebrowse.el lisp/progmodes/glasses.el lisp/progmodes/hideif.el lisp/progmodes/sh-script.el lisp/progmodes/tcl.el lisp/progmodes/vhdl-mode.el lisp/reveal.el lisp/simple.el lisp/smerge-mode.el lisp/startup.el lisp/term.el lisp/term/mac-win.el lisp/term/xterm.el lisp/textmodes/bibtex.el lisp/textmodes/enriched.el lisp/textmodes/flyspell.el lisp/textmodes/org.el lisp/textmodes/refill.el lisp/textmodes/table.el lisp/textmodes/tex-mode.el lisp/whitespace.el lisp/wid-edit.el lisp/woman.el lisp/xt-mouse.el lispref/ChangeLog lispref/hooks.texi lispref/modes.texi lispref/nonascii.texi mac/ChangeLog mac/src/Emacs.r man/ChangeLog man/calc.texi man/calendar.texi man/cmdargs.texi man/dired.texi man/frames.texi src/ChangeLog src/ChangeLog.6 src/alloc.c src/emacs.c src/eval.c src/lread.c src/mac.c src/macfns.c src/xdisp.c
diffstat 127 files changed, 4098 insertions(+), 2978 deletions(-) [+]
line wrap: on
line diff
--- a/admin/FOR-RELEASE	Sat Apr 09 01:45:41 2005 +0000
+++ b/admin/FOR-RELEASE	Sat Apr 09 02:16:29 2005 +0000
@@ -182,7 +182,7 @@
 man/rmail.texi      Chong Yidong
 man/screen.texi     "Luc Teirlinck"   Chong Yidong
 man/search.texi     "Luc Teirlinck"   Chong Yidong
-man/sending.texi    Chong Yidong
+man/sending.texi    Chong Yidong      "Luc Teirlinck"
 man/text.texi       "Luc Teirlinck"   Chong Yidong
 man/trouble.texi    Chong Yidong
 man/windows.texi    "Luc Teirlinck"   Chong Yidong
@@ -263,12 +263,12 @@
 etc/TUTORIAL             rms
 etc/TUTORIAL.bg          Ognyan Kulev <ogi@fmi.uni-sofia.bg>
 etc/TUTORIAL.cn
-etc/TUTORIAL.cs
-etc/TUTORIAL.de
+etc/TUTORIAL.cs          Pavel Janík <Pavel@Janik.cz>
+etc/TUTORIAL.de          Werner LEMBERG <wl@gnu.org>
 etc/TUTORIAL.es          Marcelo Toledo
-etc/TUTORIAL.fr
-etc/TUTORIAL.it
-etc/TUTORIAL.ja
+etc/TUTORIAL.fr          Thien-Thi Nguyen
+etc/TUTORIAL.it          Thien-Thi Nguyen
+etc/TUTORIAL.ja		 Kenichi Handa <handa@m17n.org>
 etc/TUTORIAL.ko
 etc/TUTORIAL.nl		 Lute Kamstra
 etc/TUTORIAL.pl
@@ -276,7 +276,7 @@
 etc/TUTORIAL.ro
 etc/TUTORIAL.ru
 etc/TUTORIAL.sk
-etc/TUTORIAL.sl
+etc/TUTORIAL.sl          Primoz PETERLIN <primoz.peterlin@biofiz.mf.uni-lj.si>
 etc/TUTORIAL.sv          Mats Lidell <matsl@contactor.se>
 etc/TUTORIAL.th
 etc/TUTORIAL.zh
--- a/etc/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,31 @@
+2005-04-08  Kenichi Handa  <handa@m17n.org>
+
+	* TUTORIAL.ja: Updated header, contents synchronized with
+	TUTORIAL (CVS-1.61).
+
+2005-04-06  Pavel Jan,Am(Bk  <Pavel@Janik.cz>
+
+	* TUTORIAL.cs: Updated header.
+
+2005-04-05  Werner Lemberg  <wl@gnu.org>
+
+	* TUTORIAL.de: Updated header.
+
+2005-04-05  Marcelo Toledo  <marcelo@marcelotoledo.org>
+
+        * TUTORIAL.translators: Added the field Maintainer.
+
+2005-04-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* TUTORIAL.it: Move "copying conditions at end" sentence after title.
+
+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".
@@ -9,18 +35,17 @@
 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.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>.
-        
+        Minor fixes; patch 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>.
-
+        1.61 in CVS patch by Mats Lidell <matsl@contactor.se>.
 
 2005-04-01  Lute Kamstra  <lute@gnu.org>
 
--- a/etc/NEWS	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/NEWS	Sat Apr 09 02:16:29 2005 +0000
@@ -193,6 +193,8 @@
     M-t     (transpose-words)
     M-q     (fill-paragraph)
 
+** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
+
 ** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
 
 ---
@@ -425,7 +427,7 @@
 ** Telnet now prompts you for a port number with C-u M-x telnet.
 
 +++
-** New command line option -Q.
+** New command line option -Q or --bare-bones.
 
 This is like using -q --no-site-file, but in addition it also disables
 the menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking
--- a/etc/TUTORIAL.cs	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.cs	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,5 @@
-tutoriál k Emacsu.
-Copyright (c) 1985 Free Software Foundation, Inc;  podmínky viz na konci.
+Tutoriál k Emacsu.  Podmínky viz na konci.
+Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation.
 Do čeątiny přeloľil Milan Zamazal <pdm@zamazal.org>.
 
 Máte před sebou tutoriál k Emacsu.
--- a/etc/TUTORIAL.de	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.de	Sat Apr 09 02:16:29 2005 +0000
@@ -1,4 +1,5 @@
-Einführung in Emacs.  (c) 2002, 2003 Free Software Foundation, Inc.
+Einführung in Emacs.  Siehe Dateiende für Vervielfältigungsbedingungen.
+(c) 2002, 2003, 2005 Free Software Foundation, Inc.
 
 Emacs-Befehle beinhalten im allgemeinen die CONTROL-Taste (manchmal
 auch als CTRL, CTL oder STRG beschriftet) sowie die META-Taste (auch
--- a/etc/TUTORIAL.it	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.it	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,5 @@
-Esercitazione di Emacs.  Copyright (c) 2003 Free Software Foundation, Inc.
-Condizioni d'uso alla fine del file.
+Esercitazione di Emacs.  Condizioni d'uso alla fine del file.
+Copyright (c) 2003 Free Software Foundation, Inc.
 
 I comandi di Emacs comportano generalmente l'uso del tasto CONTROL (a
 volte indicato con CTRL o CTL) o del tasto META (a volte indicato con EDIT
@@ -817,7 +817,7 @@
    testo e osserva come Emacs interrompe le righe a 20 caratteri.  Infine
    torna di nuovo a un margine di 70 caratteri con C-x f.
 
-Se si modifica il testo all'interno di un paragrafo la modalitŕ 
+Se si modifica il testo all'interno di un paragrafo la modalitŕ
 "Auto Fill" non
 lo risistema.
 Per risistemare i margini di un paragrafo
--- a/etc/TUTORIAL.ja	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.ja	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,5 @@
-Emacs $BF~Lg%,%$%I$G$9(B.
-Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
+Emacs $BF~Lg%,%$%I(B.  $BK\%U%!%$%k$NCx:n8"$K$D$$$F$O:G8e$r8fMw2<$5$$!#(B
+Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 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
 CONTROL $B$H$+(B CTRL $B$H$+(B CTL $B$H=q$$$F$"$k!K$d%a%?%-!<!J%-!<%H%C%W$K(B META
@@ -372,7 +372,7 @@
 
 $B>C5n$7$?J8>O$rI|3h$5$;$kA`:n$r:FF~!J(Byanking$B!K$H8F$S$^$9!#>C$7$?J8>O$O!"(B
 $B85$HF1$8>l=j$K$G$b85$H$O0c$&>l=j$K$G$b!"$5$i$K$OJL$N%U%!%$%k$K$b:FF~$G(B
-$B$-$^$9!#$^$?!"2?EY$b:FF~$7$FJ8>O$N%3%T!<$rJ#?t:n$k$3$H$b$G$-$^$9!#(B
+$B$-$^$9!#$^$?!"2?EY$b:FF~$9$k$3$H$GJ8>O$N%3%T!<$rJ#?t:n$k$3$H$b$G$-$^$9!#(B
 
 $B:FF~$N$?$a$N%3%^%s%I$O(B C-y $B$G$9!#$3$l$O!":G8e$K>C5n$7$?J8>O$r8=:_%+!<(B
 $B%=%k$,$"$k0LCV$K:FF~$7$^$9!#(B
@@ -592,7 +592,7 @@
 $B;H$$$^$9!#$=$l$K$O!"0J2<$N#2$D$N<oN`$,$"$j$^$9!#(B
 
      C-x     $BJ8;z$K$h$k3HD%!#B3$1$F0lJ8;z$rF~NO$7$^$9!#(B
-     ESC x   $BL>A0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#(B
+     M-x     $BL>A0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#(B
 
 $B$3$l$i$O!"0lHLE*$K$OJXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$I$OIQHK$KMQ(B
 $B$$$i$l$J$$%3%^%s%I$G$9!#(BC-x C-f $B!J%U%!%$%k$r3+$/!K$d(B C-x C-s$B!J%U%!%$%k(B
@@ -1027,7 +1027,7 @@
 $B!v$3$NK]LuHG$K$D$$$F$N<U<-(B
 ==========================
 
-$B$3$NJ8=q$O(B Emacs Ver.21 $BIUB0$N1Q8lHG$NF~Lg%,%$%I$rF|K\8l$KK]Lu$7$?$b$N(B
+$B$3$NJ8=q$O(B Emacs Ver.22 $BIUB0$N1Q8lHG$NF~Lg%,%$%I$rF|K\8l$KK]Lu$7$?$b$N(B
 $B$G$9!#$=$N:]!"(BEmacs Ver. 20 $BImB0$NF|K\8lHGF~Lg%,%$%I$r%Y!<%9$K$7$^$7$?!#(B
 Emacs Ver. 20 $BImB0$NF|K\8lHGF~Lg%,%$%I$O!"(BMule $BIUB0$NF|K\8l%,%$%I$r;2(B
 $B9M$K$7$?$b$N$G!"$=$N85$O(B SANETO Takanori $B;a$,F|K\8l(B MicroEmacs(kemacs)
@@ -1048,7 +1048,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, 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
--- a/etc/TUTORIAL.sv	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.sv	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,6 @@
-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
@@ -48,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
 ------------------------------
@@ -55,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
                                   :
@@ -74,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.
 
@@ -308,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
@@ -329,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
@@ -337,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.
@@ -352,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ĺ
@@ -400,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.
@@ -495,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.
 
@@ -539,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
@@ -568,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
@@ -580,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
@@ -602,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
@@ -617,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.
 
@@ -645,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
@@ -707,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ĺ.
@@ -830,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ĺ
@@ -846,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".
 
@@ -879,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.
@@ -909,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.
@@ -945,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
@@ -984,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
 
@@ -1060,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
 -----------
 
@@ -1070,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.translators	Sat Apr 09 01:45:41 2005 +0000
+++ b/etc/TUTORIAL.translators	Sat Apr 09 02:16:29 2005 +0000
@@ -1,28 +1,89 @@
-This file contains the list of translators of the tutorial.
+This file contains the list of translators and maintainers of the
+tutorial.
+
+* TUTORIAL.bg: 
+Author:     Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+Maintainer: Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+
+* TUTORIAL.cn: 
+Author:     Chao-Hong Liu <chliu@gnu.org>
+Maintainer: Chao-Hong Liu <chliu@gnu.org>
+
+* TUTORIAL.cs: 
+Author:     Milan Zamazal <pdm@zamazal.org>
+            Pavel JanĂ­k <Pavel@Janik.cz>
+Maintainer: Milan Zamazal <pdm@zamazal.org>
+            Pavel JanĂ­k <Pavel@Janik.cz>
+
+* TUTORIAL.de: 
+Author:     Werner Lemberg <wl@gnu.org>
+Maintainer: Werner Lemberg <wl@gnu.org>
+
+* TUTORIAL.es: 
+Author:     Rafael SepĂşlveda <drs@gnulinux.org.mx>
+Maintainer: Rafael SepĂşlveda <drs@gnulinux.org.mx>
+
+* TUTORIAL.fr: 
+Author:     Éric Jacoboni <jaco@teaser.fr>
+Maintainer: Éric Jacoboni <jaco@teaser.fr>
+
+* TUTORIAL.it: 
+Author:     Alfredo Finelli <alfredofnl@tiscali.it>
+	    Italian GNU Translation Group <tp@lists.linux.it>
+Maintainer: Alfredo Finelli <alfredofnl@tiscali.it>
+	    Italian GNU Translation Group <tp@lists.linux.it>
+
+* TUTORIAL.ja: 
+Author:     Kenichi Handa <handa@m17n.org>
+Maintainer: Kenichi Handa <handa@m17n.org>
+
+* TUTORIAL.ko: 
+Author:     Koaunghi Un <koaunghi@ling.cnu.ac.kr>
+Maintainer: Maintainer needed.
 
-TUTORIAL.bg: Ognyan Kulev <ogi@fmi.uni-sofia.bg>
-TUTORIAL.cn: Chao-Hong Liu <chliu@gnu.org>
-TUTORIAL.cs: Milan Zamazal <pdm@zamazal.org>
-             Pavel JanĂ­k <Pavel@Janik.cz>
-TUTORIAL.de: Werner Lemberg <wl@gnu.org>
-TUTORIAL.es: Rafael SepĂşlveda <drs@gnulinux.org.mx>
-TUTORIAL.fr: Éric Jacoboni <jaco@teaser.fr>
-TUTORIAL.it: Alfredo Finelli <alfredofnl@tiscali.it>
-	     Italian GNU Translation Group <tp@lists.linux.it>
-TUTORIAL.ja: Kenichi Handa <handa@m17n.org>
-TUTORIAL.ko: Koaunghi Un <koaunghi@ling.cnu.ac.kr>
-TUTORIAL.nl: Pieter Schoenmakers <tiggr@tiggr.net>
-TUTORIAL.pl: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
-             Janusz S. Bien <jsbien@mail.uw.edu.pl>
-TUTORIAL.pt_BR: Marcelo Toledo <marcelo@marcelotoledo.org>
-TUTORIAL.ro: Tudor Hulubei <tudor@gnu.org>
-TUTORIAL.ru: Alex Ott <ottalex@narod.ru>
-TUTORIAL.sk: Miroslav Vaško <vasko@debian.cz>
-             Pavel JanĂ­k <Pavel@Janik.cz>
-TUTORIAL.sl: PrimoĹľ Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
-TUTORIAL.sv: Mats Lidell <matsl@contactor.se>
-TUTORIAL.th: Virach Sornlertlamvanich <virach@nectec.or.th>
-TUTORIAL.zh: Chao-Hong Liu <chliu@gnu.org>
+* TUTORIAL.nl: 
+Author:     Pieter Schoenmakers <tiggr@tiggr.net>
+Maintainer: Pieter Schoenmakers <tiggr@tiggr.net>
+
+* TUTORIAL.pl: 
+Author:     Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
+            Janusz S. Bien <jsbien@mail.uw.edu.pl>
+Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
+            Janusz S. Bien <jsbien@mail.uw.edu.pl>
+
+* TUTORIAL.pt_BR: 
+Author:     Marcelo Toledo <marcelo@marcelotoledo.org>
+Maintainer: Marcelo Toledo <marcelo@marcelotoledo.org>
+
+* TUTORIAL.ro: 
+Author:     Tudor Hulubei <tudor@gnu.org>
+Maintainer: Maintainer needed.
+
+* TUTORIAL.ru: 
+Author:     Alex Ott <ottalex@narod.ru>
+Maintainer: Alex Ott <ottalex@narod.ru>
+
+* TUTORIAL.sk: 
+Author:     Miroslav Vaško <vasko@debian.cz>
+            Pavel JanĂ­k <Pavel@Janik.cz>
+Maintainer: Pavel JanĂ­k <Pavel@Janik.cz>
+
+* TUTORIAL.sl: 
+Author:     PrimoĹľ Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
+Maintainer: PrimoĹľ Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
+
+* TUTORIAL.sv: 
+Author:     Mats Lidell <matsl@contactor.se>
+Maintainer: Mats Lidell <matsl@contactor.se>
+
+* TUTORIAL.th: 
+Author:     Virach Sornlertlamvanich <virach@nectec.or.th>
+Maintainer: Virach Sornlertlamvanich <virach@nectec.or.th>
+
+* TUTORIAL.zh: 
+Author:     Chao-Hong Liu <chliu@gnu.org>
+Maintainer: Chao-Hong Liu <chliu@gnu.org>
+
 
 ;;; Local Variables:
 ;;; coding: utf-8
--- a/leim/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/leim/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,8 @@
+2005-04-06  Kenichi Handa  <handa@m17n.org>
+
+	* quail/sgml-input.el ("sgml"): Enable quail-completion by typing
+	TAB.
+
 2005-03-26  Kenichi Handa  <handa@m17n.org>
 
 	* quail/latin-ltx.el ("TeX"): Enable quail-completion by typing
--- a/leim/quail/sgml-input.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/leim/quail/sgml-input.el	Sat Apr 09 02:16:29 2005 +0000
@@ -40,7 +40,8 @@
 HTMLspecial and HTMLsymbol.
 
 E.g.: &aacute; -> á"
- nil t nil nil nil nil nil nil nil nil t)
+ '(("\t" . quail-completion))
+ t nil nil nil nil nil nil nil nil t)
 
 (quail-define-rules
   ("&Aacgr;" ?\Ά) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS
--- a/lisp/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,323 @@
+2005-04-09  Kenichi Handa  <handa@m17n.org>
+
+	* international/code-pages.el (iso-latin-7): Fix the map.
+
+2005-04-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* emacs-lisp/lisp.el (defun-prompt-regexp)
+	(parens-require-spaces, buffer-end, end-of-defun)
+	(insert-parentheses): Doc fixes.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* comint.el (comint-highlight-prompt): Fix face spec.
+	* hi-lock.el (hi-green): Likewise.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* cus-edit.el (custom-modified-face):
+	* comint.el (comint-highlight-input): Fix previous changes.
+	* term.el (term-handle-ansi-escape): Add a comment.
+
+2005-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* whitespace.el (whitespace-highlight-the-space): Put the same overlay
+	in the buffer and in whitespace-highlighted-space.
+	(whitespace-unhighlight-the-space): Simplify.
+	(whitespace-buffer): Simplify.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* textmodes/table.el (table-cell-face): Add special case for
+	displays supporting a high number of colors.
+	* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
+	(vhdl-font-lock-reserved-words-face)
+	(vhdl-speedbar-architecture-face)
+	(vhdl-speedbar-instantiation-face)
+	(vhdl-speedbar-architecture-selected-face)
+	(vhdl-speedbar-instantiation-selected-face): Likewise.
+	* progmodes/sh-script.el (sh-heredoc-face): Likewise.
+	* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
+	* progmodes/ebrowse.el (ebrowse-tree-mark-face)
+	(ebrowse-root-class-face, ebrowse-member-attribute-face)
+	(ebrowse-progress-face): Likewise.
+	* progmodes/compile.el (compilation-info-face): Likewise.
+	* progmodes/cc-fonts.el (c-invalid-face): Likewise.
+	* emacs-lisp/re-builder.el (reb-match-3): Likewise.
+	* calendar/calendar.el (diary-face): Likewise.
+	* woman.el (woman-italic-face, woman-bold-face)
+	(woman-unknown-face): Likewise.
+	* wid-edit.el (widget-button-pressed-face): Likewise.
+	* whitespace.el (whitespace-highlight-face): Likewise.
+	* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
+	* pcvs-info.el (cvs-marked-face): Likewise.
+	* info.el (info-xref): Likewise.
+	* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
+	* hilit-chg.el (highlight-changes-face)
+	(highlight-changes-delete-face): Likewise.
+	* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
+	(hi-red-b): Likewise.
+	* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
+	* font-lock.el (font-lock-keyword-face)
+	(font-lock-function-name-face, font-lock-warning-face): Likewise.
+	* cus-edit.el (custom-invalid-face, custom-modified-face)
+	(custom-set-face, custom-changed-face, custom-variable-tag-face)
+	(custom-group-tag-face-1, custom-group-tag-face): Likewise.
+	* comint.el (comint-highlight-prompt): Likewise.
+
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+	* font-lock.el (font-lock-keywords): Docstring fixes.
+
+2005-04-08  Kenichi Handa  <handa@m17n.org>
+
+	* ps-mule.el (ps-mule-show-warning): If the number of unprintable
+	chars are more than a limit, print " and more..." at the tail.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* emacs-lisp/authors.el (authors-aliases): Update list.
+	(authors-ignored-files): New list.
+	(authors-fixed-entries): Fix typo.
+	(authors-renamed-files-alist): Update list.
+	(authors-add): Check authors-ignored-files.
+
+2005-04-08  Carsten Dominik  <dominik@science.uva.nl>
+
+	* calendar/diary-lib.el (add-to-diary-list): MARKER argument made
+	optional, to ensure backward compatibility.
+
+2005-04-08  Stephen Eglen  <stephen@gnu.org>
+
+	* textmodes/flyspell.el (flyspell-large-region): Doc fix.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* buff-menu.el (Buffer-menu-mode-map): Map follow-link to
+	mouse-face.
+
+	* mouse.el (mouse-on-link-p): Doc fix.
+
+2005-04-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* ielm.el (ielm-prompt-read-only): Doc fix.
+
+	* comint.el (comint-prompt-read-only): Doc fix.
+
+2005-04-07  Benjamin Rutt  <brutt@bloomington.in.us>
+
+	* ffap.el (ffap-pass-wildcards-to-dired): New user option to
+	ensure dired always handles wildcards passed to ffap.
+	(find-file-at-point): Use it.
+	(ffap-dired-wildcards): Doc fix.
+
+2005-04-07  Juri Linkov  <juri@jurta.org>
+
+	* simple.el (next-error-overlay-arrow-position): New defvar.
+	Put "=>" on its property `overlay-arrow-string'.  Add it to
+	`overlay-arrow-variable-list'.
+
+	* progmodes/compile.el (compilation-setup):
+	Set `next-error-overlay-arrow-position' to nil.  Also set it to
+	nil in the local hook `kill-buffer-hook'.  Make local variable
+	`overlay-arrow-string' and set it to "=>".
+	(compilation-goto-locus): Set BOL position to
+	`next-error-overlay-arrow-position' instead of
+	`overlay-arrow-position'.
+
+	* info.el (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
+	locally instead of adding it to the global hook.
+	(Info-kill-buffer): Move up.
+
+2005-04-06  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* term/xterm.el (xterm-standard-colors): Update color values from
+	xterm-200.
+
+2005-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* textmodes/tex-mode.el (tex-font-lock-keywords-2): Add \bfseries.
+
+	* fast-lock.el:
+	* lazy-lock.el: Move them to the obsolete subdir.
+
+2005-04-06  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+
+	* wdired.el (wdired-advise-functions, wdired-add-skip-in-replace)
+	(wdired-add-replace-advice): Remove.
+	(wdired-change-to-wdired-mode): Use query-replace-skip-read-only.
+
+2005-04-06  Kim F. Storm  <storm@cua.dk>
+
+	* startup.el (command-line): Add --bare-bones alias for -Q.
+
+2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* term/mac-win.el: Use create-fontset-from-mac-roman-font to
+	create the startup fontset if a font specification ends with
+	`mac-roman'.
+
+2005-04-06  Lute Kamstra  <lute@gnu.org>
+
+	* add-log.el (change-log-font-lock-keywords): Complete 2005-04-03
+	change.
+
+	* emacs-lisp/copyright.el (copyright-update-year): Replace the
+	right subexpression.  Suggested by Jay Bingham <jay.bingham@hp.com>.
+
+2005-04-05  Lute Kamstra  <lute@gnu.org>
+
+	* generic.el (generic-mode-internal): Fix 2005-03-31 change.
+	(define-generic-mode): Ditto.  Fix debug declaration.
+
+	* generic-x.el (show-tabs-tab-face, show-tabs-space-face):
+	Put them in the generic-x group.
+
+	* calendar/timeclock.el (timeclock): Doc fix.
+
+	* generic.el (define-generic-mode): Don't use custom-current-group.
+	Document default :group value.
+	* emacs-lisp/easy-mmode.el (define-minor-mode): Ditto.
+	(define-global-minor-mode): Don't use custom-current-group.
+
+2005-04-05  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* startup.el (command-line-1): Display startup-echo-area-message
+	when fancy splash screen is in use.
+
+	* progmodes/sh-script.el (sh-builtins) <bash>: Add `caller'.
+	(sh-escaped-newline): New face.
+	(sh-font-lock-keywords) <shell>: Improve regexp for escaped
+	newline, and use sh-escaped-newline face.
+
+	* progmodes/tcl.el (tcl-escaped-newline): New face.
+	(tcl-builtin-list): New variable.
+	(tcl-set-font-lock-keywords): Add builtins, variables, and escaped
+	newlines.  Fix keywords subexpression number.
+
+2005-04-05  Carsten Dominik  <dominik@science.uva.nl>
+
+	* textmodes/org.el (org-diary-default-entry): Fix call to
+	`add-to-diary-entry'.
+
+2005-04-05  Kim F. Storm  <storm@cua.dk>
+
+	* ediff-init.el: Use (featurep 'xemacs).
+
+2005-04-05  David Ponce  <david@dponce.com>
+
+	* cus-edit.el (face): Derive from symbol widget.  Display sample
+	of the current face on the fly.
+	(widget-face-sample-face-get, widget-face-notify): New functions.
+	(widget-face-value-create): Remove.
+
+	* wid-edit.el (widget-field-end): Temporarily remove field
+	narrowing before to call `get-char-property'.
+
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-aent.el (math-read-replacement-list): Add subscripts.
+	(math-read-subscripts): New variable.
+	(math-read-preprocess-string): Process subscripts.
+
+2005-04-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* comint.el (comint-prompt-read-only): Doc fix.
+
+	* dired.el (dired-copy-filename-as-kill): Make `-' arg behave like
+	`-1'.  Doc fix.
+
+2005-04-04  Carsten Dominik  <dominik@science.uva.nl>
+
+	* textmodes/org.el (org-insert-mode-line-in-empty-file):
+	Change default value to nil.
+
+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): Doc fix.
+
 2005-04-02  Luc Teirlinck  <teirllm@auburn.edu>
 
 	* simple.el (visible-mode): Use explicit :group keyword.
@@ -110,12 +430,12 @@
 
 2005-03-31  Karl Berry  <karl@freefriends.org>
 
-	* textmodes/tex-mode.el (tex-compile): shell-quote-argument,
+	* textmodes/tex-mode.el (tex-compile): Use 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,
+	* textmodes/tex-mode.el (tex-start-tex) Use shell-quote-argument,
 	not comint-quote-filename.
 
 2005-03-31  Thien-Thi Nguyen  <ttn@gnu.org>
@@ -1526,7 +1846,7 @@
 	(debug-entry-code): New const.
 	(debug-on-entry-1): Use it.
 
-2005-02-28  Chong Yidong" <cyd@stupidchicken.com> (tiny change)
+2005-02-28  Chong Yidong  <cyd@stupidchicken.com>
 
 	* international/utf-16.el (ccl-encode-mule-utf-16le):
 	Fix BUFFER_MAGNIFICATION to 2.
@@ -2688,7 +3008,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,
@@ -7405,8 +7725,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/ChangeLog.5	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ChangeLog.5	Sat Apr 09 02:16:29 2005 +0000
@@ -1063,7 +1063,7 @@
 	* vc-hooks.el (vc-status): If vc-locking-user returns a number,
 	compare it to (user-uid).
 
-1995-05-11  James Thompson  <thompson@wg2.waii.com>
+1995-05-11  Jim Thompson  <thompson@wg2.waii.com>
 
 	* ps-print.el: Miscellaneous fixes for better compatibility with
 	XEmacs 19.12.
--- a/lisp/add-log.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/add-log.el	Sat Apr 09 02:16:29 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]+\\)"
-     (1 'change-log-file-face)
+    ("^\\( +\\|\t\\)\\* \\([^ ,:([\n]+\\)"
+     (2 '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]+)\\)"
-     (1 'change-log-list-face)
-     ("\\=, *\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil
+    ("^\\( +\\|\t\\)(\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)"
+     (2 'change-log-list-face)
+     ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil
       (1 'change-log-list-face)))
     ;;
     ;; Conditionals.
@@ -250,8 +250,8 @@
     ;; Acknowledgements.
     ;; Don't include plain "From" because that is vague;
     ;; we want to encourage people to say something more specific.
-    ("\\(^\t\\|  \\)\\(Patch\\(es\\)? by\\|Report\\(ed by\\| from\\)\\|Suggest\\(ed by\\|ion from\\)\\)"
-     2 'change-log-acknowledgement-face))
+    ("\\(^\\( +\\|\t\\)\\|  \\)\\(Patch\\(es\\)? by\\|Report\\(ed by\\| from\\)\\|Suggest\\(ed by\\|ion from\\)\\)"
+     3 'change-log-acknowledgement-face))
   "Additional expressions to highlight in Change Log mode.")
 
 (defvar change-log-mode-map
--- a/lisp/autorevert.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/autorevert.el	Sat Apr 09 02:16:29 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
@@ -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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/battery.el	Sat Apr 09 02:16:29 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/buff-menu.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/buff-menu.el	Sat Apr 09 02:16:29 2005 +0000
@@ -141,6 +141,7 @@
   (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
   (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
   (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
+  (define-key Buffer-menu-mode-map [follow-link] 'mouse-face)
 )
 
 ;; Buffer Menu mode is suitable only for specially formatted data.
--- a/lisp/calc/calc-aent.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calc/calc-aent.el	Sat Apr 09 02:16:29 2005 +0000
@@ -519,7 +519,22 @@
     ("â˝" "(")  ; (
     ("âľ" ")")  ; )
     ("âż" "n")  ; n
-    ("â±" "i")) ; i
+    ("â±" "i")  ; i
+    ;; subscripts
+    ("â‚€"  "0")  ; 0
+    ("â‚"  "1")  ; 1
+    ("â‚‚"  "2")  ; 2
+    ("â‚"  "3")  ; 3
+    ("â‚„"  "4")  ; 4
+    ("â‚…"  "5")  ; 5
+    ("₆"  "6")  ; 6
+    ("₇"  "7")  ; 7
+    ("â‚"  "8")  ; 8
+    ("₉"  "9")  ; 9
+    ("â‚Š"  "+")  ; +
+    ("â‚‹"  "-")  ; -
+    ("â‚Ť"  "(")  ; (
+    ("â‚Ž"  ")"))  ; )
   "A list whose elements (old new) indicate replacements to make
 in Calc algebraic input.")
 
@@ -527,11 +542,18 @@
   "â°ÂąÂ˛Âłâ´âµâ¶â·â¸âąâşâ»â˝âľâżâ±" ; 0123456789+-()ni
   "A string consisting of the superscripts allowed by Calc.")
 
+(defvar math-read-subscripts
+  "â‚€â‚â‚‚â‚₄₅₆₇â‚₉₊₋₍₎" ; 0123456789+-()
+  "A string consisting of the subscripts allowed by Calc.")
+
 (defun math-read-preprocess-string (str)
   "Replace some substrings of STR by Calc equivalents."
   (setq str
         (replace-regexp-in-string (concat "[" math-read-superscripts "]+")
                                   "^(\\&)" str))
+  (setq str
+        (replace-regexp-in-string (concat "[" math-read-subscripts "]+")
+                                  "_(\\&)" str))
   (let ((rep-list math-read-replacement-list))
     (while rep-list
       (setq str
--- a/lisp/calc/calc.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calc/calc.el	Sat Apr 09 02:16:29 2005 +0000
@@ -231,7 +231,8 @@
     (f90-mode . fortran))
   "*Alist of major modes with appropriate Calc languages."
   :group 'calc
-  :type '(alist :key-type symbol :value-type symbol))
+  :type '(alist :key-type (symbol :tag "Major mode") 
+                :value-type (symbol :tag "Calc language")))
 
 (defcustom calc-embedded-announce-formula 
   "%Embed\n\\(% .*\n\\)*"
--- a/lisp/calendar/calendar.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calendar/calendar.el	Sat Apr 09 02:16:29 2005 +0000
@@ -209,8 +209,12 @@
 (defvar diary-face 'diary-face
   "Face name to use for diary entries.")
 (defface diary-face
-  '((((class color) (background light))
+  '((((min-colors 88) (class color) (background light))
+     :foreground "red1")
+    (((class color) (background light))
      :foreground "red")
+    (((min-colors 88) (class color) (background dark))
+     :foreground "yellow1")
     (((class color) (background dark))
      :foreground "yellow")
     (t
--- a/lisp/calendar/diary-lib.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calendar/diary-lib.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1647,7 +1647,7 @@
       (or (diary-remind sexp (car days) marking)
           (diary-remind sexp (cdr days) marking))))))
 
-(defun add-to-diary-list (date string specifier marker &optional globcolor)
+(defun add-to-diary-list (date string specifier &optional marker globcolor)
   "Add the entry (DATE STRING SPECIFIER MARKER GLOBCOLOR) to `diary-entries-list'.
 Do nothing if DATE or STRING is nil."
   (when (and date string)
--- a/lisp/calendar/time-date.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calendar/time-date.el	Sat Apr 09 02:16:29 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/calendar/timeclock.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/calendar/timeclock.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; timeclock.el --- mode for keeping track of how much you work
 
-;; Copyright (C) 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Created: 25 Mar 1999
@@ -78,7 +78,7 @@
 ;;; Code:
 
 (defgroup timeclock nil
-  "Keeping track time of the time that gets spent."
+  "Keeping track of the time that gets spent."
   :group 'data)
 
 ;;; User Variables:
--- a/lisp/comint.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/comint.el	Sat Apr 09 02:16:29 2005 +0000
@@ -186,11 +186,11 @@
 
 \(add-hook 'comint-mode-hook
 	  (lambda ()
-	    (define-key comint-mode-map \"\C-w\" 'comint-kill-region)
+	    (define-key comint-mode-map \"\\C-w\" 'comint-kill-region)
 	    (define-key comint-mode-map [C-S-backspace]
 	      'comint-kill-whole-line)))
 
-If you sometimes use comint-mode on text-only terminals or with `emacs-nw',
+If you sometimes use comint-mode on text-only terminals or with `emacs -nw',
 you might wish to use another binding for `comint-kill-whole-line'."
   :type 'boolean
   :group 'comint
@@ -228,7 +228,8 @@
   :group 'comint)
 
 (defface comint-highlight-prompt
-  '((((background dark)) (:foreground "cyan"))
+  '((((min-colors 88) (background dark)) (:foreground "cyan1"))
+    (((background dark)) (:foreground "cyan"))
     (t (:foreground "dark blue")))
   "Face to use to highlight prompts."
   :group 'comint)
--- a/lisp/cus-edit.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/cus-edit.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1633,7 +1633,7 @@
   :group 'custom-buffer)
 
 (defface custom-invalid-face '((((class color))
-				(:foreground "yellow" :background "red"))
+				(:foreground "yellow1" :background "red1"))
 			       (t
 				(:weight bold :slant italic :underline t)))
   "Face used when the customize item is invalid."
@@ -1646,21 +1646,27 @@
   "Face used when the customize item is not defined for customization."
   :group 'custom-magic-faces)
 
-(defface custom-modified-face '((((class color))
+(defface custom-modified-face '((((min-colors 88) (class color))
+				 (:foreground "white" :background "blue1"))
+				(((class color))
 				 (:foreground "white" :background "blue"))
 				(t
 				 (:slant italic :bold)))
   "Face used when the customize item has been modified."
   :group 'custom-magic-faces)
 
-(defface custom-set-face '((((class color))
+(defface custom-set-face '((((min-colors 88) (class color))
+			    (:foreground "blue1" :background "white"))
+			   (((class color))
 			    (:foreground "blue" :background "white"))
 			   (t
 			    (:slant italic)))
   "Face used when the customize item has been set."
   :group 'custom-magic-faces)
 
-(defface custom-changed-face '((((class color))
+(defface custom-changed-face '((((min-colors 88) (class color))
+				(:foreground "white" :background "blue1"))
+			       (((class color))
 				(:foreground "white" :background "blue"))
 			       (t
 				(:slant italic)))
@@ -2148,9 +2154,12 @@
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
-     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
+     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))    
     (t (:weight bold)))
   "Face used for unpushable variable tags."
   :group 'custom-faces)
@@ -3296,65 +3305,37 @@
 (defvar widget-face-prompt-value-history nil
   "History of input to `widget-face-prompt-value'.")
 
-(define-widget 'face 'restricted-sexp
-  "A Lisp face name."
+(define-widget 'face 'symbol
+  "A Lisp face name (with sample)."
+  :format "%t: (%{sample%}) %v"
+  :tag "Face"
+  :value 'default
+  :sample-face-get 'widget-face-sample-face-get
+  :notify 'widget-face-notify
+  :match (lambda (widget value) (facep value))
   :complete-function (lambda ()
 		       (interactive)
 		       (lisp-complete-symbol 'facep))
-  :prompt-value 'widget-field-prompt-value
-  :prompt-internal 'widget-symbol-prompt-internal
   :prompt-match 'facep
   :prompt-history 'widget-face-prompt-value-history
-  :value-create 'widget-face-value-create
-  :action 'widget-field-action
-  :match-alternatives '(facep)
   :validate (lambda (widget)
 	      (unless (facep (widget-value widget))
-		(widget-put widget :error (format "Invalid face: %S"
-						  (widget-value widget)))
-		widget))
-  :value 'ignore
-  :tag "Function")
-
-
-;;; There is a bug here: the sample doesn't get redisplayed
-;;; in the new font when you specify one.  Does anyone know how to
-;;; make that work?  -- rms.
-
-(defun widget-face-value-create (widget)
-  "Create an editable face name field."
-  (let ((buttons (widget-get widget :buttons))
-	(symbol (widget-get widget :value)))
-    ;; Sample.
-    (push (widget-create-child-and-convert widget 'item
-					   :format "(%{%t%})"
-					   :sample-face symbol
-					   :tag "sample")
-	  buttons)
-    (insert " ")
-    ;; Update buttons.
-    (widget-put widget :buttons buttons))
-
-  (let ((size (widget-get widget :size))
-	(value (widget-get widget :value))
-	(from (point))
-	;; This is changed to a real overlay in `widget-setup'.  We
-	;; need the end points to behave differently until
-	;; `widget-setup' is called.
-	(overlay (cons (make-marker) (make-marker))))
-    (widget-put widget :field-overlay overlay)
-    (insert value)
-    (and size
-	 (< (length value) size)
-	 (insert-char ?\  (- size (length value))))
-    (unless (memq widget widget-field-list)
-      (setq widget-field-new (cons widget widget-field-new)))
-    (move-marker (cdr overlay) (point))
-    (set-marker-insertion-type (cdr overlay) nil)
-    (when (null size)
-      (insert ?\n))
-    (move-marker (car overlay) from)
-    (set-marker-insertion-type (car overlay) t)))
+		(widget-put widget
+			    :error (format "Invalid face: %S"
+					   (widget-value widget)))
+		widget)))
+
+(defun widget-face-sample-face-get (widget)
+  (let ((value (widget-value widget)))
+    (if (facep value)
+	value
+      'default)))
+
+(defun widget-face-notify (widget child &optional event)
+  "Update the sample, and notify the parent."
+  (overlay-put (widget-get widget :sample-overlay)
+	       'face (widget-apply widget :sample-face-get))
+  (widget-default-notify widget child event))
 
 
 ;;; The `hook' Widget.
@@ -3420,6 +3401,9 @@
   `((((class color)
       (background dark))
      (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "red1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
      (:foreground "red" :weight bold :height 1.2 :inherit variable-pitch))
@@ -3431,6 +3415,9 @@
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "blue1" :weight bold :height 1.2))
     (((class color)
       (background light))
      (:foreground "blue" :weight bold :height 1.2))
--- a/lisp/desktop.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/desktop.el	Sat Apr 09 02:16:29 2005 +0000
@@ -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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/diff-mode.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/dired.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1937,10 +1937,11 @@
   "Copy names of marked (or next ARG) files into the kill ring.
 The names are separated by a space.
 With a zero prefix arg, use the absolute file name of each marked file.
-With \\[universal-argument], use the file name sans directory of each marked file.
+With \\[universal-argument], use the file name relative to the Dired buffer's
+`default-directory'.  (This still may contain slashes if in a subdirectory.)
 
-If on a subdir headerline, use subdirname instead; prefix arg is ignored
-in this case.
+If on a subdir headerline, use absolute subdirname instead;
+prefix arg and marked files are ignored in this case.
 
 You can then feed the file name(s) to other commands with \\[yank]."
   (interactive "P")
@@ -1950,10 +1951,11 @@
                         (if arg
                             (cond ((zerop (prefix-numeric-value arg))
                                    (dired-get-marked-files))
-                                  ((integerp arg)
-                                   (dired-get-marked-files 'no-dir arg))
-                                  (t    ; else a raw arg
-                                   (dired-get-marked-files t)))
+                                  ((consp arg)
+                                   (dired-get-marked-files t))
+                                  (t
+                                   (dired-get-marked-files
+				    'no-dir (prefix-numeric-value arg))))
                           (dired-get-marked-files 'no-dir))
                         " "))))
     (if (eq last-command 'kill-region)
--- a/lisp/ediff-init.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ediff-init.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,7 @@
 ;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff
 
-;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 01, 02, 04 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+;;     2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
@@ -43,7 +44,7 @@
 ;; end pacifier
 
 ;; Is it XEmacs?
-(defconst ediff-xemacs-p (string-match "XEmacs" emacs-version))
+(defconst ediff-xemacs-p (featurep 'xemacs))
 ;; Is it Emacs?
 (defconst ediff-emacs-p (not ediff-xemacs-p))
 
@@ -53,7 +54,7 @@
 ;; compiler at hand.
 ;; Suggested by rms.
 (defmacro ediff-cond-compile-for-xemacs-or-emacs (xemacs-form emacs-form)
-  (if (string-match "XEmacs" emacs-version)
+  (if (featurep 'xemacs)
       xemacs-form emacs-form))
 
 (defvar ediff-force-faces nil
@@ -1145,9 +1146,9 @@
 
 (defface ediff-even-diff-face-B
   (if ediff-emacs-p
-      `((((class color) (min-colors 16)) 
+      `((((class color) (min-colors 16))
 	 (:foreground "White" :background "Grey"))
-	(((class color))    
+	(((class color))
 	 (:foreground "blue3" :background "Grey" :weight bold))
 	(t		     (:italic t :stipple ,stipple-pixmap)))
     `((((type tty))    (:foreground "blue3" :background "Grey" :weight bold))
--- a/lisp/emacs-lisp/authors.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/authors.el	Sat Apr 09 02:16:29 2005 +0000
@@ -41,7 +41,6 @@
 
 (defconst authors-aliases
   '(
-    ("Andrew Innes" "Andrw Innes")
     ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
      "Barry A. Warsaw, ITB" "Barry Warsaw")
     ("Bj,Av(Brn Torkelsson" "Bjorn Torkelsson")
@@ -57,7 +56,7 @@
     ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
      "Reingold Edward M")
     ("Eli Zaretskii" "eliz")
-;    ("Emilio C. Lopes" "Emilio Lopes")
+    ("Emilio C. Lopes" "Emilio Lopes")
     ("Era Eriksson" "Era@Iki.Fi")
     ("Eric M. Ludlam" "Eric Ludlam")
     ("Eric S. Raymond" "Eric Raymond")
@@ -79,8 +78,10 @@
     ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
     ("J,Ai(Br,At(Bme Marant" "J,bi(Br,bt(Bme Marant" "Jerome Marant")
     ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
+    ("John W. Eaton" "John Eaton")
     ("Jonathan I. Kamens" "Jonathan Kamens")
     ("Joseph Arceneaux" "Joe Arceneaux")
+    ("Juan Le,As(Bn Lahoz Garc,Am(Ba" "Juan-Leon Lahoz Garcia")
     ("K. Shane Hartman" "Shane Hartman")
     ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann"
      "Kai.Grossjohann@Cs.Uni-Dortmund.De"
@@ -89,14 +90,17 @@
     ("Kazushi Marukawa" "Kazushi")
     ("Ken Manheimer" "Kenneth Manheimer")
     ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
+    ("Kevin Greiner" "Kevin J. Greiner")
     ("Kim F. Storm" "Kim Storm")
     ("Kyle Jones" "Kyle E. Jones")
     ("Marcus G. Daniels" "Marcus Daniels")
     ("Mark D. Baushke" "Mark D Baushke")
     ("Martin Lorentzon" "Martin Lorentzson")
     ("Matt Swift" "Matthew Swift")
+    ("Michael R. Mauger" "Michael Mauger")
     ("Michael D. Ernst" "Michael Ernst")
     ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg")
+    ("Mikio Nakajima" "Nakajima Mikio")
     ("Paul Eggert" "eggert")
     ("Paul Reilly" "(pmr@legacy.pajato.com)")
     ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml." "Pavel Jan,Am(Bk" "Pavel@Janik.Cz")
@@ -114,6 +118,7 @@
     ("Stephen A. Wood" "(saw@cebaf.gov)")
     ("Steven L. Baur" "SL Baur" "Steven L Baur")
     ("Takaaki Ota" "Tak Ota")
+    ("Takahashi Naoto" "Naoto Takahashi")
     ("Teodor Zlatanov" "Ted Zlatanov")
     ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson")
     ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson")
@@ -152,6 +157,13 @@
 Changes to files matching one of the regexps in this list are not
 listed.")
 
+(defconst authors-ignored-files
+  '("external-lisp"
+    "lock" "share-lib" "local-lisp"
+    "noleim-Makefile.in"
+    "NEWS" "PROBLEMS" "FAQ")
+  "List of files and directories to ignore.
+Changes to files in this list are not listed.")
 
 (defconst authors-fixed-entries
   '(("Richard M. Stallman" :wrote "[The original GNU emacs and numerous files]")
@@ -184,7 +196,7 @@
      "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h" "systty.h" "unexec.c"
       "ymakefile" "linux.h")
     ("Kyle E. Jones" :wrote "mldrag.el")
-    ("Kenry Kautz" :wrote "bib-mode.el")
+    ("Henry Kautz" :wrote "bib-mode.el")
     ("Joseph M. Kelsey" :changed "fileio.c" "vms-pwd.h" "vmsfns.c" "dir.h"
      "uaf.h")
     ("Sam Kendall" :changed "etags.c" "etags.el")
@@ -260,7 +272,8 @@
 
 (defconst authors-valid-file-names
   '("aclocal.m4"
-    "makedist.bat")
+    "makedist.bat"
+    "make-delta")
   "File names which are valid, but no longer exists (or cannot be
 found) in the repository.")
 
@@ -274,6 +287,9 @@
     ("s/windowsnt.h" . "s/ms-w32.h")
     ("config.emacs" . "configure")
     ("GETTING.GNU.SOFTWARE" . "FTP")
+    ("leim-Makefile" . "leim/Makefile")
+    ("leim-Makefile.in" . "leim/Makefile.in")
+    ("INSTALL-CVS" . "INSTALL.CVS")
     )
   "Alist of files which have been renamed during their lifetime.
 Elements are (OLDNAME . NEWNAME).")
@@ -372,7 +388,8 @@
 ACTION is a keyword symbol describing what he did.  Record file,
 author and what he did in hash table TABLE.  See the description of
 `authors-scan-change-log' for the structure of the hash table."
-  (unless (or (authors-obsolete-file-p file)
+  (unless (or (member file authors-ignored-files)
+	      (authors-obsolete-file-p file)
 	      (equal author ""))
     (let* ((value (gethash author table))
 	   (entry (assoc file value))
--- a/lisp/emacs-lisp/copyright.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/copyright.el	Sat Apr 09 02:16:29 2005 +0000
@@ -110,7 +110,7 @@
 			  (concat "Add " copyright-current-year
 				  " to copyright? "))))
 	  (if replace
-	      (replace-match copyright-current-year t t nil 1)
+	      (replace-match copyright-current-year t t nil 2)
 	    (let ((size (save-excursion (skip-chars-backward "0-9"))))
 	      (if (and (eq (% (- (string-to-number copyright-current-year)
 				 (string-to-number (buffer-substring
--- a/lisp/emacs-lisp/easy-mmode.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/easy-mmode.el	Sat Apr 09 02:16:29 2005 +0000
@@ -94,8 +94,11 @@
   These following keyword arguments are supported (other keywords
   will be passed to `defcustom' if the minor mode is global):
 :group GROUP	Custom group name to use in all generated `defcustom' forms.
+		Defaults to MODE without the possible trailing \"-mode\".
+		(This default may not be a valid customization group defined
+		with `defgroup'.  Make sure it is.)
 :global GLOBAL	If non-nil specifies that the minor mode is not meant to be
-              	buffer-local, so don't make the variable MODE buffer-local.
+		buffer-local, so don't make the variable MODE buffer-local.
 		By default, the mode is buffer-local.
 :init-value VAL	Same as the INIT-VALUE argument.
 :lighter SPEC	Same as the LIGHTER argument.
@@ -153,10 +156,9 @@
     (unless group
       ;; We might as well provide a best-guess default group.
       (setq group
-	    `(:group (or (custom-current-group)
-			 ',(intern (replace-regexp-in-string
-				    "-mode\\'" "" mode-name))))))
-
+	    `(:group ',(intern (replace-regexp-in-string
+				"-mode\\'" "" mode-name)))))
+    
     `(progn
        ;; Define the variable to enable or disable the mode.
        ,(if (not globalp)
@@ -220,8 +222,8 @@
 	 ;; Return the new setting.
 	 ,mode)
 
-       ;; Autoloading an easy-mmode-define-minor-mode autoloads
-       ;; everything up-to-here.
+       ;; Autoloading a define-minor-mode autoloads everything
+       ;; up-to-here.
        :autoload-end
 
        ;; The toggle's hook.
@@ -280,9 +282,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
-				    "-mode\\'" "" (symbol-name mode)))))))
+	    `(:group ',(intern (replace-regexp-in-string
+				"-mode\\'" "" (symbol-name mode))))))
 
     `(progn
        ;; The actual global minor-mode
--- a/lisp/emacs-lisp/eldoc.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/eldoc.el	Sat Apr 09 02:16:29 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/emacs-lisp/lisp.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/lisp.el	Sat Apr 09 02:16:29 2005 +0000
@@ -31,18 +31,16 @@
 
 ;; Note that this variable is used by non-lisp modes too.
 (defcustom defun-prompt-regexp nil
-  "*If non-nil, a regexp to ignore before the character that starts a defun.
+  "*If non-nil, a regexp to ignore before a defun.
 This is only necessary if the opening paren or brace is not in column 0.
-See function `beginning-of-defun'.
-
-Setting this variable automatically makes it local to the current buffer."
+See function `beginning-of-defun'."
   :type '(choice (const nil)
 		 regexp)
   :group 'lisp)
 (make-variable-buffer-local 'defun-prompt-regexp)
 
 (defcustom parens-require-spaces t
-  "Non-nil means `insert-parentheses' should insert whitespace as needed."
+  "If non-nil, `insert-parentheses' inserts whitespace as needed."
   :type 'boolean
   :group 'lisp)
 
@@ -74,7 +72,7 @@
 The place mark goes is the same place \\[forward-sexp] would
 move to with the same argument.
 Interactively, if this command is repeated
-or (in Transient Mark mode) if the mark is active, 
+or (in Transient Mark mode) if the mark is active,
 it marks the next ARG sexps after the ones already marked."
   (interactive "P\np")
   (cond ((and allow-extend
@@ -233,13 +231,14 @@
 normal method is not appropriate.")
 
 (defun buffer-end (arg)
-  "Return the \"far end\" position of the buffer, moving in direction ARG.
+  "Return the \"far end\" position of the buffer, in direction ARG.
 If ARG is positive, that's the end of the buffer.
 Otherwise, that's the beginning of the buffer."
   (if (> arg 0) (point-max) (point-min)))
 
 (defun end-of-defun (&optional arg)
-  "Move forward to next end of defun.  With argument, do it that many times.
+  "Move forward to next end of defun.
+With argument, do it that many times.
 Negative argument -N means move back to Nth preceding end of defun.
 
 An end of a defun occurs right after the close-parenthesis that
@@ -299,7 +298,7 @@
 The defun marked is the one that contains point or follows point.
 
 Interactively, if this command is repeated
-or (in Transient Mark mode) if the mark is active, 
+or (in Transient Mark mode) if the mark is active,
 it marks the next defun after the ones already marked."
   (interactive "p")
   (cond ((and allow-extend
@@ -424,7 +423,8 @@
                  (prefix-numeric-value arg))))
 
 (defun insert-parentheses (&optional arg)
-  "Enclose following ARG sexps in parentheses.  Leave point after open-paren.
+  "Enclose following ARG sexps in parentheses.
+Leave point after open-paren.
 A negative ARG encloses the preceding ARG sexps instead.
 No argument is equivalent to zero: just insert `()' and leave point between.
 If `parens-require-spaces' is non-nil, this command also inserts a space
--- a/lisp/emacs-lisp/re-builder.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emacs-lisp/re-builder.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; re-builder.el --- building Regexps with visual feedback
 
-;; Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Detlev Zundel <dzu@gnu.org>
 ;; Keywords: matching, lisp, tools
@@ -177,7 +177,9 @@
   :group 're-builder)
 
 (defface reb-match-3
-  '((((class color) (background light))
+  '((((min-colors 88) (class color) (background light))
+     :background "yellow1")
+    (((class color) (background light))
      :background "yellow")
     (((class color) (background dark))
      :background "sienna4")
--- a/lisp/emulation/cua-base.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/emulation/cua-base.el	Sat Apr 09 02:16:29 2005 +0000
@@ -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/fast-lock.el	Sat Apr 09 01:45:41 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,863 +0,0 @@
-;;; fast-lock.el --- automagic text properties caching for fast Font Lock mode
-
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-
-;; Author: Simon Marshall <simon@gnu.org>
-;; Maintainer: FSF
-;; Keywords: faces files
-;; Version: 3.14
-
-;; 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:
-
-;; Fast Lock mode is a Font Lock support mode.
-;; It makes visiting a file in Font Lock mode faster by restoring its face text
-;; properties from automatically saved associated Font Lock cache files.
-;;
-;; See caveats and feedback below.
-;; See also the lazy-lock package.  (But don't use the two at the same time!)
-
-;; Installation:
-;;
-;; Put in your ~/.emacs:
-;;
-;; (setq font-lock-support-mode 'fast-lock-mode)
-;;
-;; Start up a new Emacs and use font-lock as usual (except that you can use the
-;; so-called "gaudier" fontification regexps on big files without frustration).
-;;
-;; When you visit a file (which has `font-lock-mode' enabled) that has a
-;; corresponding Font Lock cache file associated with it, the Font Lock cache
-;; will be loaded from that file instead of being generated by Font Lock code.
-
-;; Caveats:
-;;
-;; A cache will be saved when visiting a compressed file using crypt++, but not
-;; be read.  This is a "feature"/"consequence"/"bug" of crypt++.
-;;
-;; Version control packages are likely to stamp all over file modification
-;; times.  Therefore the act of checking out may invalidate a cache.
-
-;; History:
-;;
-;; 0.02--1.00:
-;; - Changed name from turbo-prop to fast-lock.  Automagic for font-lock only
-;; - Made `fast-lock-mode' a minor mode, like G. Dinesh Dutt's fss-mode
-;; 1.00--1.01:
-;; - Turn on `fast-lock-mode' only if `buffer-file-name' or `interactive-p'
-;; - Made `fast-lock-file-name' use `buffer-name' if `buffer-file-name' is nil
-;; - Moved save-all conditions to `fast-lock-save-cache'
-;; - Added `fast-lock-save-text-properties' to `kill-buffer-hook'
-;; 1.01--2.00: complete rewrite---not worth the space to document
-;; - Changed structure of text properties cache and threw out file mod checks
-;; 2.00--2.01:
-;; - Made `condition-case' forms understand `quit'.
-;; - Made `fast-lock' require `font-lock'
-;; - Made `fast-lock-cache-name' chase links (from Ben Liblit)
-;; 2.01--3.00:
-;; - Changed structure of cache to include `font-lock-keywords' (from rms)
-;; - Changed `fast-lock-cache-mechanisms' to `fast-lock-cache-directories'
-;; - Removed `fast-lock-read-others'
-;; - Made `fast-lock-read-cache' ignore cache owner
-;; - Made `fast-lock-save-cache-external' create cache directory
-;; - Made `fast-lock-save-cache-external' save `font-lock-keywords'
-;; - Made `fast-lock-cache-data' check `font-lock-keywords'
-;; 3.00--3.01: incorporated port of 2.00 to Lucid, made by Barry Warsaw
-;; - Package now provides itself
-;; - Lucid: Use `font-lock-any-extents-p' for `font-lock-any-properties-p'
-;; - Lucid: Use `list-faces' for `face-list'
-;; - Lucid: Added `set-text-properties'
-;; - Lucid: Made `turn-on-fast-lock' pass 1 not t to `fast-lock-mode'
-;; - Removed test for `fast-lock-mode' from `fast-lock-read-cache'
-;; - Lucid: Added Lucid-specific `fast-lock-get-face-properties'
-;; 3.01--3.02: now works with Lucid Emacs, thanks to Barry Warsaw
-;; - Made `fast-lock-cache-name' map ":" to ";" for OS/2 (from Serganova Vera)
-;; - Made `fast-lock-cache-name' use abbreviated file name (from Barry Warsaw)
-;; - Lucid: Separated handlers for `error' and `quit' for `condition-case'
-;; 3.02--3.03:
-;; - Changed `fast-lock-save-cache-external' to `fast-lock-save-cache-data'
-;; - Lucid: Added Lucid-specific `fast-lock-set-face-properties'
-;; 3.03--3.04:
-;; - Corrected `subrp' test of Lucid code
-;; - Replaced `font-lock-any-properties-p' with `text-property-not-all'
-;; - Lucid: Made `fast-lock-set-face-properties' put `text-prop' on extents
-;; - Made `fast-lock-cache-directories' a regexp alist (from Colin Rafferty)
-;; - Made `fast-lock-cache-directory' to return a usable cache file directory
-;; 3.04--3.05:
-;; - Lucid: Fix for XEmacs 19.11 `text-property-not-all'
-;; - Replaced `subrp' test of Lucid code with `emacs-version' `string-match'
-;; - Made `byte-compile-warnings' omit `unresolved' on compilation
-;; - Made `fast-lock-save-cache-data' use a buffer (from Rick Sladkey)
-;; - Reverted to old `fast-lock-get-face-properties' (from Rick Sladkey)
-;; 3.05--3.06: incorporated hack of 3.03, made by Jonathan Stigelman (Stig)
-;; - Reverted to 3.04 version of `fast-lock-get-face-properties'
-;; - XEmacs: Removed `list-faces' `defalias'
-;; - Made `fast-lock-mode' and `turn-on-fast-lock' succeed `autoload' cookies
-;; - Added `fast-lock-submit-bug-report'
-;; - Renamed `fast-lock-save-size' to `fast-lock-minimum-size'
-;; - Made `fast-lock-save-cache' output a message if no save ever attempted
-;; - Made `fast-lock-save-cache-data' output a message if save attempted
-;; - Made `fast-lock-cache-data' output a message if load attempted
-;; - Made `fast-lock-save-cache-data' do `condition-case' not `unwind-protect'
-;; - Made `fast-lock-save-cache' and `fast-lock-read-cache' return nothing
-;; - Made `fast-lock-save-cache' check `buffer-modified-p' (Stig)
-;; - Added `fast-lock-save-events'
-;; - Added `fast-lock-after-save-hook' to `after-save-hook' (Stig)
-;; - Added `fast-lock-kill-buffer-hook' to `kill-buffer-hook'
-;; - Changed `fast-lock-save-caches' to `fast-lock-kill-emacs-hook'
-;; - Added `fast-lock-kill-emacs-hook' to `kill-emacs-hook'
-;; - Made `fast-lock-save-cache' check `verify-visited-file-modtime' (Stig)
-;; - Made `visited-file-modtime' be the basis of the timestamp (Stig)
-;; - Made `fast-lock-save-cache-1' and `fast-lock-cache-data' use/reformat it
-;; - Added `fast-lock-cache-filename' to keep track of the cache file name
-;; - Added `fast-lock-after-fontify-buffer'
-;; - Added `fast-lock-save-faces' list of faces to save (idea from Stig/Tibor)
-;; - Made `fast-lock-get-face-properties' functions use it
-;; - XEmacs: Made `fast-lock-set-face-properties' do extents the Font Lock way
-;; - XEmacs: Removed fix for `text-property-not-all' (19.11 support dropped)
-;; - Made `fast-lock-mode' ensure `font-lock-mode' is on
-;; - Made `fast-lock-save-cache' do `cdr-safe' not `cdr' (from Dave Foster)
-;; - Made `fast-lock-save-cache' do `set-buffer' first (from Dave Foster)
-;; - Made `fast-lock-save-cache' loop until saved or quit (from Georg Nikodym)
-;; - Made `fast-lock-cache-data' check `buffer-modified-p'
-;; - Made `fast-lock-cache-data' do `font-lock-compile-keywords' if necessary
-;; - XEmacs: Made `font-lock-compile-keywords' `defalias'
-;; 3.06--3.07:
-;; - XEmacs: Add `fast-lock-after-fontify-buffer' to the Font Lock hook
-;; - Made `fast-lock-cache-name' explain the use of `directory-abbrev-alist'
-;; - Made `fast-lock-mode' use `buffer-file-truename' not `buffer-file-name'
-;; 3.07--3.08:
-;; - Made `fast-lock-read-cache' set `fast-lock-cache-filename'
-;; 3.08--3.09:
-;; - Made `fast-lock-save-cache' cope if `fast-lock-minimum-size' is an a list
-;; - Made `fast-lock-mode' respect the value of `font-lock-inhibit-thing-lock'
-;; - Added `fast-lock-after-unfontify-buffer'
-;; 3.09--3.10:
-;; - Rewrite for Common Lisp macros
-;; - Made fast-lock.el barf on a crap 8+3 pseudo-OS (Eli Zaretskii help)
-;; - XEmacs: Made `add-minor-mode' succeed `autoload' cookie
-;; - XEmacs: Made `fast-lock-save-faces' default to `font-lock-face-list'
-;; - Made `fast-lock-save-cache' use `font-lock-value-in-major-mode'
-;; - Wrap with `save-buffer-state' (Ray Van Tassle report)
-;; - Made `fast-lock-mode' wrap `font-lock-support-mode'
-;; 3.10--3.11:
-;; - Made `fast-lock-get-face-properties' cope with face lists
-;; - Added `fast-lock-verbose'
-;; - XEmacs: Add `font-lock-value-in-major-mode' if necessary
-;; - Removed `fast-lock-submit-bug-report' and bade farewell
-;; 3.11--3.12:
-;; - Added Custom support (Hrvoje Niksic help)
-;; - Made `save-buffer-state' wrap `inhibit-point-motion-hooks'
-;; - Made `fast-lock-cache-data' simplify calls of `font-lock-compile-keywords'
-;; 3.12--3.13:
-;; - Removed `byte-*' variables from `eval-when-compile' (Erik Naggum hint)
-;; - Changed structure of cache to include `font-lock-syntactic-keywords'
-;; - Made `fast-lock-save-cache-1' save syntactic fontification data
-;; - Made `fast-lock-cache-data' take syntactic fontification data
-;; - Added `fast-lock-get-syntactic-properties'
-;; - Renamed `fast-lock-set-face-properties' to `fast-lock-add-properties'
-;; - Made `fast-lock-add-properties' add syntactic and face fontification data
-;; 3.13--3.14:
-;; - Made `fast-lock-cache-name' cope with `windowsnt' (Geoff Voelker fix)
-;; - Made `fast-lock-verbose' use `other' widget (Andreas Schwab fix)
-;; - Used `with-temp-message' where possible to make messages temporary.
-
-;;; Code:
-
-(require 'font-lock)
-
-;; Make sure fast-lock.el is supported.
-(if (and (eq system-type 'ms-dos) (not (msdos-long-file-names)))
-    (error "`fast-lock' was written for long file name systems"))
-
-(eval-when-compile
- ;;
- ;; We don't do this at the top-level as we only use non-autoloaded macros.
- (require 'cl)
- ;;
- ;; We use this to preserve or protect things when modifying text properties.
- (defmacro save-buffer-state (varlist &rest body)
-   "Bind variables according to VARLIST and eval BODY restoring buffer state."
-   `(let* (,@(append varlist
-                     '((modified (buffer-modified-p)) (buffer-undo-list t)
-                       (inhibit-read-only t) (inhibit-point-motion-hooks t)
-                       before-change-functions after-change-functions
-                       deactivate-mark buffer-file-name buffer-file-truename)))
-     ,@body
-     (when (and (not modified) (buffer-modified-p))
-       (set-buffer-modified-p nil))))
- (put 'save-buffer-state 'lisp-indent-function 1)
- ;;
- ;; We use this to verify that a face should be saved.
- (defmacro fast-lock-save-facep (face)
-   "Return non-nil if FACE is one of `fast-lock-save-faces'."
-   `(or (null fast-lock-save-faces)
-     (if (symbolp ,face)
-         (memq ,face fast-lock-save-faces)
-         (let ((faces ,face))
-           (while (unless (memq (car faces) fast-lock-save-faces)
-                    (setq faces (cdr faces))))
-           faces))))
- ;;
- ;; We use this for compatibility with a future Emacs.
- (or (fboundp 'with-temp-message)
-     (defmacro with-temp-message (message &rest body)
-       `(let ((temp-message ,message) current-message)
-         (unwind-protect
-              (progn
-                (when temp-message
-                  (setq current-message (current-message))
-                  (message temp-message))
-                ,@body)
-           (when temp-message
-             (message current-message))))))
- ;;
- ;; We use this for compatibility with a future Emacs.
- (or (fboundp 'defcustom)
-     (defmacro defcustom (symbol value doc &rest args)
-       `(defvar ,symbol ,value ,doc))))
-
-;(defun fast-lock-submit-bug-report ()
-;  "Submit via mail a bug report on fast-lock.el."
-;  (interactive)
-;  (let ((reporter-prompt-for-summary-p t))
-;    (reporter-submit-bug-report "simon@gnu.org" "fast-lock 3.14"
-;     '(fast-lock-cache-directories fast-lock-minimum-size
-;       fast-lock-save-others fast-lock-save-events fast-lock-save-faces
-;       fast-lock-verbose)
-;     nil nil
-;     (concat "Hi Si.,
-;
-;I want to report a bug.  I've read the `Bugs' section of `Info' on Emacs, so I
-;know how to make a clear and unambiguous report.  To reproduce the bug:
-;
-;Start a fresh editor via `" invocation-name " -no-init-file -no-site-file'.
-;In the `*scratch*' buffer, evaluate:"))))
-
-(defvar fast-lock-mode nil)		; Whether we are turned on.
-(defvar fast-lock-cache-timestamp nil)	; For saving/reading.
-(defvar fast-lock-cache-filename nil)	; For deleting.
-
-;; User Variables:
-
-(defcustom fast-lock-minimum-size 25600
-  "*Minimum size of a buffer for cached fontification.
-Only buffers more than this can have associated Font Lock cache files saved.
-If nil, means cache files are never created.
-If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
-where MAJOR-MODE is a symbol or t (meaning the default).  For example:
- ((c-mode . 25600) (c++-mode . 25600) (rmail-mode . 1048576))
-means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
-for buffers in Rmail mode, and size is irrelevant otherwise."
-  :type '(choice (const :tag "none" nil)
-		 (integer :tag "size")
-		 (repeat :menu-tag "mode specific" :tag "mode specific"
-			 :value ((t . nil))
-			 (cons :tag "Instance"
-			       (radio :tag "Mode"
-				      (const :tag "all" t)
-				      (symbol :tag "name"))
-			       (radio :tag "Size"
-				      (const :tag "none" nil)
-				      (integer :tag "size")))))
-  :group 'fast-lock)
-
-(defcustom fast-lock-cache-directories '("." "~/.emacs-flc")
-; - `internal', keep each file's Font Lock cache file in the same file.
-; - `external', keep each file's Font Lock cache file in the same directory.
-  "*Directories in which Font Lock cache files are saved and read.
-Each item should be either DIR or a cons pair of the form (REGEXP . DIR) where
-DIR is a directory name (relative or absolute) and REGEXP is a regexp.
-
-An attempt will be made to save or read Font Lock cache files using these items
-until one succeeds (i.e., until a readable or writable one is found).  If an
-item contains REGEXP, DIR is used only if the buffer file name matches REGEXP.
-For example:
-
- (let ((home (expand-file-name (abbreviate-file-name (file-truename \"~/\")))))
-   (list (cons (concat \"^\" (regexp-quote home)) \".\") \"~/.emacs-flc\"))
-    =>
- ((\"^/your/true/home/directory/\" . \".\") \"~/.emacs-flc\")
-
-would cause a file's current directory to be used if the file is under your
-home directory hierarchy, or otherwise the absolute directory `~/.emacs-flc'."
-  :type '(repeat (radio (directory :tag "directory")
-			(cons :tag "Matching"
-			      (regexp :tag "regexp")
-			      (directory :tag "directory"))))
-  :group 'fast-lock)
-
-(defcustom fast-lock-save-events '(kill-buffer kill-emacs)
-  "*Events under which caches will be saved.
-Valid events are `save-buffer', `kill-buffer' and `kill-emacs'.
-If concurrent editing sessions use the same associated cache file for a file's
-buffer, then you should add `save-buffer' to this list."
-  :type '(set (const :tag "buffer saving" save-buffer)
-	      (const :tag "buffer killing" kill-buffer)
-	      (const :tag "emacs killing" kill-emacs))
-  :group 'fast-lock)
-
-(defcustom fast-lock-save-others t
-  "*If non-nil, save Font Lock cache files irrespective of file owner.
-If nil, means only buffer files known to be owned by you can have associated
-Font Lock cache files saved.  Ownership may be unknown for networked files."
-  :type 'boolean
-  :group 'fast-lock)
-
-(defcustom fast-lock-verbose font-lock-verbose
-  "*If non-nil, means show status messages for cache processing.
-If a number, only buffers greater than this size have processing messages."
-  :type '(choice (const :tag "never" nil)
-		 (other :tag "always" t)
-		 (integer :tag "size"))
-  :group 'fast-lock)
-
-(defvar fast-lock-save-faces
-  (when (save-match-data (string-match "XEmacs" (emacs-version)))
-    ;; XEmacs uses extents for everything, so we have to pick the right ones.
-    font-lock-face-list)
-  "Faces that will be saved in a Font Lock cache file.
-If nil, means information for all faces will be saved.")
-
-;; User Functions:
-
-;;;###autoload
-(defun fast-lock-mode (&optional arg)
-  "Toggle Fast Lock mode.
-With arg, turn Fast Lock mode on if and only if arg is positive and the buffer
-is associated with a file.  Enable it automatically in your `~/.emacs' by:
-
- (setq font-lock-support-mode 'fast-lock-mode)
-
-If Fast Lock mode is enabled, and the current buffer does not contain any text
-properties, any associated Font Lock cache is used if its timestamp matches the
-buffer's file, and its `font-lock-keywords' match those that you are using.
-
-Font Lock caches may be saved:
-- When you save the file's buffer.
-- When you kill an unmodified file's buffer.
-- When you exit Emacs, for all unmodified or saved buffers.
-Depending on the value of `fast-lock-save-events'.
-See also the commands `fast-lock-read-cache' and `fast-lock-save-cache'.
-
-Use \\[font-lock-fontify-buffer] to fontify the buffer if the cache is bad.
-
-Various methods of control are provided for the Font Lock cache.  In general,
-see variable `fast-lock-cache-directories' and function `fast-lock-cache-name'.
-For saving, see variables `fast-lock-minimum-size', `fast-lock-save-events',
-`fast-lock-save-others' and `fast-lock-save-faces'."
-  (interactive "P")
-  ;; Only turn on if we are visiting a file.  We could use `buffer-file-name',
-  ;; but many packages temporarily wrap that to nil when doing their own thing.
-  (set (make-local-variable 'fast-lock-mode)
-       (and buffer-file-truename
-	    (not (memq 'fast-lock-mode font-lock-inhibit-thing-lock))
-	    (if arg (> (prefix-numeric-value arg) 0) (not fast-lock-mode))))
-  (if (and fast-lock-mode (not font-lock-mode))
-      ;; Turned on `fast-lock-mode' rather than `font-lock-mode'.
-      (let ((font-lock-support-mode 'fast-lock-mode))
-	(font-lock-mode t))
-    ;; Let's get down to business.
-    (set (make-local-variable 'fast-lock-cache-timestamp) nil)
-    (set (make-local-variable 'fast-lock-cache-filename) nil)
-    (when (and fast-lock-mode (not font-lock-fontified))
-      (fast-lock-read-cache))))
-
-(defun fast-lock-read-cache ()
-  "Read the Font Lock cache for the current buffer.
-
-The following criteria must be met for a Font Lock cache file to be read:
-- Fast Lock mode must be turned on in the buffer.
-- The buffer must not be modified.
-- The buffer's `font-lock-keywords' must match the cache's.
-- The buffer file's timestamp must match the cache's.
-- Criteria imposed by `fast-lock-cache-directories'.
-
-See `fast-lock-mode'."
-  (interactive)
-  (let ((directories fast-lock-cache-directories)
-	(modified (buffer-modified-p)) (inhibit-read-only t)
-	(fontified font-lock-fontified))
-    (set (make-local-variable 'font-lock-fontified) nil)
-    ;; Keep trying directories until fontification is turned off.
-    (while (and directories (not font-lock-fontified))
-      (let ((directory (fast-lock-cache-directory (car directories) nil)))
-	(condition-case nil
-	    (when directory
-	      (setq fast-lock-cache-filename (fast-lock-cache-name directory))
-	      (when (file-readable-p fast-lock-cache-filename)
-		(load fast-lock-cache-filename t t t)))
-	  (error nil) (quit nil))
-	(setq directories (cdr directories))))
-    ;; Unset `fast-lock-cache-filename', and restore `font-lock-fontified', if
-    ;; we don't use a cache.  (Note that `fast-lock-cache-data' sets the value
-    ;; of `fast-lock-cache-timestamp'.)
-    (set-buffer-modified-p modified)
-    (unless font-lock-fontified
-      (setq fast-lock-cache-filename nil font-lock-fontified fontified))))
-
-(defun fast-lock-save-cache (&optional buffer)
-  "Save the Font Lock cache of BUFFER or the current buffer.
-
-The following criteria must be met for a Font Lock cache file to be saved:
-- Fast Lock mode must be turned on in the buffer.
-- The event must be one of `fast-lock-save-events'.
-- The buffer must be at least `fast-lock-minimum-size' bytes long.
-- The buffer file must be owned by you, or `fast-lock-save-others' must be t.
-- The buffer must contain at least one `face' text property.
-- The buffer must not be modified.
-- The buffer file's timestamp must be the same as the file's on disk.
-- The on disk file's timestamp must be different than the buffer's cache.
-- Criteria imposed by `fast-lock-cache-directories'.
-
-See `fast-lock-mode'."
-  (interactive)
-  (save-excursion
-    (when buffer
-      (set-buffer buffer))
-    (let ((min-size (font-lock-value-in-major-mode fast-lock-minimum-size))
-	  (file-timestamp (visited-file-modtime)) (saved nil))
-      (when (and fast-lock-mode
-	     ;;
-	     ;; "Only save if the buffer matches the file, the file has
-	     ;; changed, and it was changed by the current emacs session."
-	     ;;
-	     ;; Only save if the buffer is not modified,
-	     ;; (i.e., so we don't save for something not on disk)
-	     (not (buffer-modified-p))
-	     ;; and the file's timestamp is the same as the buffer's,
-	     ;; (i.e., someone else hasn't written the file in the meantime)
-	     (verify-visited-file-modtime (current-buffer))
-	     ;; and the file's timestamp is different from the cache's.
-	     ;; (i.e., a save has occurred since the cache was read)
-	     (not (equal fast-lock-cache-timestamp file-timestamp))
-	     ;;
-	     ;; Only save if user's restrictions are satisfied.
-	     (and min-size (>= (buffer-size) min-size))
-	     (or fast-lock-save-others
-		 (eq (user-uid) (nth 2 (file-attributes buffer-file-name))))
-	     ;;
-	     ;; Only save if there are `face' properties to save.
-	     (text-property-not-all (point-min) (point-max) 'face nil))
-	;;
-	;; Try each directory until we manage to save or the user quits.
-	(let ((directories fast-lock-cache-directories))
-	  (while (and directories (memq saved '(nil error)))
-	    (let* ((dir (fast-lock-cache-directory (car directories) t))
-		   (file (and dir (fast-lock-cache-name dir))))
-	      (when (and file (file-writable-p file))
-		(setq saved (fast-lock-save-cache-1 file file-timestamp)))
-	      (setq directories (cdr directories)))))))))
-
-;;;###autoload
-(defun turn-on-fast-lock ()
-  "Unconditionally turn on Fast Lock mode."
-  (fast-lock-mode t))
-
-;;; API Functions:
-
-(defun fast-lock-after-fontify-buffer ()
-  ;; Delete the Font Lock cache file used to restore fontification, if any.
-  (when fast-lock-cache-filename
-    (if (file-writable-p fast-lock-cache-filename)
-	(delete-file fast-lock-cache-filename)
-      (message "File %s font lock cache cannot be deleted" (buffer-name))))
-  ;; Flag so that a cache will be saved later even if the file is never saved.
-  (setq fast-lock-cache-timestamp nil))
-
-(defalias 'fast-lock-after-unfontify-buffer
-  'ignore)
-
-;; Miscellaneous Functions:
-
-(defun fast-lock-save-cache-after-save-file ()
-  ;; Do `fast-lock-save-cache' if `save-buffer' is on `fast-lock-save-events'.
-  (when (memq 'save-buffer fast-lock-save-events)
-    (fast-lock-save-cache)))
-
-(defun fast-lock-save-cache-before-kill-buffer ()
-  ;; Do `fast-lock-save-cache' if `kill-buffer' is on `fast-lock-save-events'.
-  (when (memq 'kill-buffer fast-lock-save-events)
-    (fast-lock-save-cache)))
-
-(defun fast-lock-save-caches-before-kill-emacs ()
-  ;; Do `fast-lock-save-cache's if `kill-emacs' is on `fast-lock-save-events'.
-  (when (memq 'kill-emacs fast-lock-save-events)
-    (mapcar 'fast-lock-save-cache (buffer-list))))
-
-(defun fast-lock-cache-directory (directory create)
-  "Return usable directory based on DIRECTORY.
-Returns nil if the directory does not exist, or, if CREATE non-nil, cannot be
-created.  DIRECTORY may be a string or a cons pair of the form (REGEXP . DIR).
-See `fast-lock-cache-directories'."
-  (let ((dir
-	 (cond ((not buffer-file-name)
-		;; Should never be nil, but `crypt++' screws it up.
-		nil)
-	       ((stringp directory)
-		;; Just a directory.
-		directory)
-	       (t
-		;; A directory iff the file name matches the regexp.
-		(let ((bufile (expand-file-name buffer-file-truename))
-		      (case-fold-search nil))
-		  (when (save-match-data (string-match (car directory) bufile))
-		    (cdr directory)))))))
-    (cond ((not dir)
-	   nil)
-	  ((file-accessible-directory-p dir)
-	   dir)
-	  (create
-	   (condition-case nil
-	       (progn (make-directory dir t) dir)
-	     (error nil))))))
-
-;; If you are wondering why we only hash if the directory is not ".", rather
-;; than if `file-name-absolute-p', it is because if we just appended ".flc" for
-;; relative cache directories (that are not ".") then it is possible that more
-;; than one file would have the same cache name in that directory, if the luser
-;; made a link from one relative cache directory to another.  (Phew!)
-(defun fast-lock-cache-name (directory)
-  "Return full cache file name using caching DIRECTORY.
-If DIRECTORY is `.', the file name is the buffer file name appended with `.flc'.
-Otherwise, the file name is constructed from DIRECTORY and the buffer's true
-abbreviated file name, with all `/' characters in the name replaced with `#'
-characters, and appended with `.flc'.
-
-If the same file has different cache file names when edited on different
-machines, e.g., on one machine the cache file name has the prefix `#home',
-perhaps due to automount, try putting in your `~/.emacs' something like:
-
- (setq directory-abbrev-alist (cons '(\"^/home/\" . \"/\") directory-abbrev-alist))
-
-Emacs automagically removes the common `/tmp_mnt' automount prefix by default.
-
-See `fast-lock-cache-directory'."
-  (if (string-equal directory ".")
-      (concat buffer-file-name ".flc")
-    (let* ((bufile (expand-file-name buffer-file-truename))
-	   (chars-alist
-	    (if (memq system-type '(emx windows-nt cygwin))
-		'((?/ . (?#)) (?# . (?# ?#)) (?: . (?\;)) (?\; . (?\; ?\;)))
-	      '((?/ . (?#)) (?# . (?# ?#)))))
-	   (mapchars
-	    (function (lambda (c) (or (cdr (assq c chars-alist)) (list c))))))
-      (concat
-       (file-name-as-directory (expand-file-name directory))
-       (mapconcat 'char-to-string (apply 'append (mapcar mapchars bufile)) "")
-       ".flc"))))
-
-;; Font Lock Cache Processing Functions:
-
-;; The version 3 format of the cache is:
-;;
-;; (fast-lock-cache-data VERSION TIMESTAMP
-;;  font-lock-syntactic-keywords SYNTACTIC-PROPERTIES
-;;  font-lock-keywords FACE-PROPERTIES)
-
-(defun fast-lock-save-cache-1 (file timestamp)
-  ;; Save the FILE with the TIMESTAMP plus fontification data.
-  ;; Returns non-nil if a save was attempted to a writable cache file.
-  (let ((tpbuf (generate-new-buffer " *fast-lock*"))
-	(verbose (if (numberp fast-lock-verbose)
-		     (> (buffer-size) fast-lock-verbose)
-		   fast-lock-verbose))
-	(saved t))
-    (with-temp-message
-	(when verbose
-	  (format "Saving %s font lock cache..." (buffer-name)))
-      (condition-case nil
-	  (save-excursion
-	    (print (list 'fast-lock-cache-data 3
-			 (list 'quote timestamp)
-			 (list 'quote font-lock-syntactic-keywords)
-			 (list 'quote (fast-lock-get-syntactic-properties))
-			 (list 'quote font-lock-keywords)
-			 (list 'quote (fast-lock-get-face-properties)))
-		   tpbuf)
-	    (set-buffer tpbuf)
-	    (write-region (point-min) (point-max) file nil 'quietly)
-	    (setq fast-lock-cache-timestamp timestamp
-		  fast-lock-cache-filename file))
-	(error (setq saved 'error)) (quit (setq saved 'quit)))
-      (kill-buffer tpbuf))
-    (cond ((eq saved 'quit)
-	   (message "Saving %s font lock cache...quit" (buffer-name)))
-	  ((eq saved 'error)
-	   (message "Saving %s font lock cache...failed" (buffer-name))))
-    ;; We return non-nil regardless of whether a failure occurred.
-    saved))
-
-(defun fast-lock-cache-data (version timestamp
-			     syntactic-keywords syntactic-properties
-			     keywords face-properties
-			     &rest ignored)
-  ;; Find value of syntactic keywords in case it is a symbol.
-  (setq font-lock-syntactic-keywords (font-lock-eval-keywords
-				      font-lock-syntactic-keywords))
-  ;; Compile all keywords in case some are and some aren't.
-  (when font-lock-syntactic-keywords
-    (setq font-lock-syntactic-keywords (font-lock-compile-keywords
-					font-lock-syntactic-keywords)))
-  (when syntactic-keywords
-    (setq syntactic-keywords (font-lock-compile-keywords syntactic-keywords)))
-  (setq font-lock-keywords (font-lock-compile-keywords font-lock-keywords)
-	keywords (font-lock-compile-keywords keywords))
-  ;; Use the Font Lock cache SYNTACTIC-PROPERTIES and FACE-PROPERTIES if we're
-  ;; using cache VERSION format 3, the current buffer's file timestamp matches
-  ;; the TIMESTAMP, the current buffer's `font-lock-syntactic-keywords' are the
-  ;; same as SYNTACTIC-KEYWORDS, and the current buffer's `font-lock-keywords'
-  ;; are the same as KEYWORDS.
-  (let ((buf-timestamp (visited-file-modtime))
-	(verbose (if (numberp fast-lock-verbose)
-		     (> (buffer-size) fast-lock-verbose)
-		   fast-lock-verbose))
-	(loaded t))
-    (if (or (/= version 3)
-	    (buffer-modified-p)
-	    (not (equal timestamp buf-timestamp))
-	    (not (equal syntactic-keywords font-lock-syntactic-keywords))
-	    (not (equal keywords font-lock-keywords)))
-	(setq loaded nil)
-      (with-temp-message
-	  (when verbose
-	    (format "Loading %s font lock cache..." (buffer-name)))
-	(condition-case nil
-	    (fast-lock-add-properties syntactic-properties face-properties)
-	  (error (setq loaded 'error)) (quit (setq loaded 'quit))))
-      (cond ((eq loaded 'quit)
-	     (message "Loading %s font lock cache...quit" (buffer-name)))
-	    ((eq loaded 'error)
-	     (message "Loading %s font lock cache...failed" (buffer-name)))))
-    (setq font-lock-fontified (eq loaded t)
-	  fast-lock-cache-timestamp (and (eq loaded t) timestamp))))
-
-;; Text Properties Processing Functions:
-
-;; This is fast, but fails if adjacent characters have different `face' text
-;; properties.  Maybe that's why I dropped it in the first place?
-;(defun fast-lock-get-face-properties ()
-;  "Return a list of `face' text properties in the current buffer.
-;Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
-;where VALUE is a `face' property value and STARTx and ENDx are positions."
-;  (save-restriction
-;    (widen)
-;    (let ((start (text-property-not-all (point-min) (point-max) 'face nil))
-;	  (limit (point-max)) end properties value cell)
-;      (while start
-;	(setq end (next-single-property-change start 'face nil limit)
-;	      value (get-text-property start 'face))
-;	;; Make, or add to existing, list of regions with same `face'.
-;	(if (setq cell (assq value properties))
-;	    (setcdr cell (cons start (cons end (cdr cell))))
-;	  (setq properties (cons (list value start end) properties)))
-;	(setq start (next-single-property-change end 'face)))
-;      properties)))
-
-;; This is slow, but copes if adjacent characters have different `face' text
-;; properties, but fails if they are lists.
-;(defun fast-lock-get-face-properties ()
-;  "Return a list of `face' text properties in the current buffer.
-;Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
-;where VALUE is a `face' property value and STARTx and ENDx are positions.
-;Only those `face' VALUEs in `fast-lock-save-faces' are returned."
-;  (save-restriction
-;    (widen)
-;    (let ((faces (or fast-lock-save-faces (face-list))) (limit (point-max))
-;	  properties regions face start end)
-;      (while faces
-;	(setq face (car faces) faces (cdr faces) regions () end (point-min))
-;	;; Make a list of start/end regions with `face' property face.
-;	(while (setq start (text-property-any end limit 'face face))
-;	  (setq end (or (text-property-not-all start limit 'face face) limit)
-;		regions (cons start (cons end regions))))
-;	;; Add `face' face's regions, if any, to properties.
-;	(when regions
-;	  (push (cons face regions) properties)))
-;      properties)))
-
-(defun fast-lock-get-face-properties ()
-  "Return a list of `face' text properties in the current buffer.
-Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
-where VALUE is a `face' property value and STARTx and ENDx are positions."
-  (save-restriction
-    (widen)
-    (let ((start (text-property-not-all (point-min) (point-max) 'face nil))
-	  end properties value cell)
-      (while start
-	(setq end (next-single-property-change start 'face nil (point-max))
-	      value (get-text-property start 'face))
-	;; Make, or add to existing, list of regions with same `face'.
-	(cond ((setq cell (assoc value properties))
-	       (setcdr cell (cons start (cons end (cdr cell)))))
-	      ((fast-lock-save-facep value)
-	       (push (list value start end) properties)))
-	(setq start (text-property-not-all end (point-max) 'face nil)))
-      properties)))
-
-(defun fast-lock-get-syntactic-properties ()
-  "Return a list of `syntax-table' text properties in the current buffer.
-See `fast-lock-get-face-properties'."
-  (save-restriction
-    (widen)
-    (let ((start (text-property-not-all (point-min) (point-max) 'syntax-table
-					nil))
-	  end properties value cell)
-      (while start
-	(setq end (next-single-property-change start 'syntax-table nil
-					       (point-max))
-	      value (get-text-property start 'syntax-table))
-	;; Make, or add to existing, list of regions with same `syntax-table'.
-	(if (setq cell (assoc value properties))
-	    (setcdr cell (cons start (cons end (cdr cell))))
-	  (push (list value start end) properties))
-	(setq start (text-property-not-all end (point-max) 'syntax-table nil)))
-      properties)))
-
-(defun fast-lock-add-properties (syntactic-properties face-properties)
-  "Add `syntax-table' and `face' text properties to the current buffer.
-Any existing `syntax-table' and `face' text properties are removed first.
-See `fast-lock-get-face-properties'."
-  (save-buffer-state (plist regions)
-    (save-restriction
-      (widen)
-      (font-lock-unfontify-region (point-min) (point-max))
-      ;;
-      ;; Set the `syntax-table' property for each start/end region.
-      (while syntactic-properties
-	(setq plist (list 'syntax-table (car (car syntactic-properties)))
-	      regions (cdr (car syntactic-properties))
-	      syntactic-properties (cdr syntactic-properties))
-	(while regions
-	  (add-text-properties (nth 0 regions) (nth 1 regions) plist)
-	  (setq regions (nthcdr 2 regions))))
-      ;;
-      ;; Set the `face' property for each start/end region.
-      (while face-properties
-	(setq plist (list 'face (car (car face-properties)))
-	      regions (cdr (car face-properties))
-	      face-properties (cdr face-properties))
-	(while regions
-	  (add-text-properties (nth 0 regions) (nth 1 regions) plist)
-	  (setq regions (nthcdr 2 regions)))))))
-
-;; Functions for XEmacs:
-
-(when (save-match-data (string-match "XEmacs" (emacs-version)))
-  ;;
-  ;; It would be better to use XEmacs' `map-extents' over extents with a
-  ;; `font-lock' property, but `face' properties are on different extents.
-  (defun fast-lock-get-face-properties ()
-    "Return a list of `face' text properties in the current buffer.
-Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
-where VALUE is a `face' property value and STARTx and ENDx are positions.
-Only those `face' VALUEs in `fast-lock-save-faces' are returned."
-    (save-restriction
-      (widen)
-      (let ((properties ()) cell)
-	(map-extents
-	 (function (lambda (extent ignore)
-	    (let ((value (extent-face extent)))
-	      ;; We're only interested if it's one of `fast-lock-save-faces'.
-	      (when (and value (fast-lock-save-facep value))
-		(let ((start (extent-start-position extent))
-		      (end (extent-end-position extent)))
-		  ;; Make or add to existing list of regions with the same
-		  ;; `face' property value.
-		  (if (setq cell (assoc value properties))
-		      (setcdr cell (cons start (cons end (cdr cell))))
-		    (push (list value start end) properties))))
-	      ;; Return nil to keep `map-extents' going.
-	      nil))))
-	properties)))
-  ;;
-  ;; XEmacs does not support the `syntax-table' text property.
-  (defalias 'fast-lock-get-syntactic-properties
-    'ignore)
-  ;;
-  ;; Make extents just like XEmacs' font-lock.el does.
-  (defun fast-lock-add-properties (syntactic-properties face-properties)
-    "Set `face' text properties in the current buffer.
-Any existing `face' text properties are removed first.
-See `fast-lock-get-face-properties'."
-    (save-restriction
-      (widen)
-      (font-lock-unfontify-region (point-min) (point-max))
-      ;; Set the `face' property, etc., for each start/end region.
-      (while face-properties
-	(let ((face (car (car face-properties)))
-	      (regions (cdr (car face-properties))))
-	  (while regions
-	    (font-lock-set-face (nth 0 regions) (nth 1 regions) face)
-	    (setq regions (nthcdr 2 regions)))
-	  (setq face-properties (cdr face-properties))))
-      ;; XEmacs does not support the `syntax-table' text property.
-      ))
-  ;;
-  ;; XEmacs 19.12 font-lock.el's `font-lock-fontify-buffer' runs a hook.
-  (add-hook 'font-lock-after-fontify-buffer-hook
-	    'fast-lock-after-fontify-buffer))
-
-(unless (boundp 'font-lock-syntactic-keywords)
-  (defvar font-lock-syntactic-keywords nil))
-
-(unless (boundp 'font-lock-inhibit-thing-lock)
-  (defvar font-lock-inhibit-thing-lock nil))
-
-(unless (fboundp 'font-lock-compile-keywords)
-  (defalias 'font-lock-compile-keywords 'identity))
-
-(unless (fboundp 'font-lock-eval-keywords)
-  (defun font-lock-eval-keywords (keywords)
-    (if (symbolp keywords)
-	(font-lock-eval-keywords (if (fboundp keywords)
-				     (funcall keywords)
-				   (eval keywords)))
-      keywords)))
-
-(unless (fboundp 'font-lock-value-in-major-mode)
-  (defun font-lock-value-in-major-mode (alist)
-    (if (consp alist)
-	(cdr (or (assq major-mode alist) (assq t alist)))
-      alist)))
-
-(unless (fboundp 'current-message)
-  (defun current-message ()
-    ""))
-
-;; Install ourselves:
-
-(add-hook 'after-save-hook 'fast-lock-save-cache-after-save-file)
-(add-hook 'kill-buffer-hook 'fast-lock-save-cache-before-kill-buffer)
-(add-hook 'kill-emacs-hook 'fast-lock-save-caches-before-kill-emacs)
-
-;;;###autoload
-(when (fboundp 'add-minor-mode)
-  (defvar fast-lock-mode nil)
-  (add-minor-mode 'fast-lock-mode nil))
-;;;###dont-autoload
-(unless (assq 'fast-lock-mode minor-mode-alist)
-  (setq minor-mode-alist (append minor-mode-alist '((fast-lock-mode nil)))))
-
-;; Provide ourselves:
-
-(provide 'fast-lock)
-
-;;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e
-;;; fast-lock.el ends here
--- a/lisp/ffap.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ffap.el	Sat Apr 09 02:16:29 2005 +0000
@@ -217,10 +217,13 @@
   "*A regexp matching filename wildcard characters, or nil.
 
 If `find-file-at-point' gets a filename matching this pattern,
-it passes it on to `find-file' with non-nil WILDCARDS argument,
-which expands wildcards and visits multiple files.  To visit
-a file whose name contains wildcard characters you can suppress
-wildcard expansion by setting `find-file-wildcards'.
+and `ffap-pass-wildcards-to-dired' is nil, it passes it on to
+`find-file' with non-nil WILDCARDS argument, which expands
+wildcards and visits multiple files.  To visit a file whose name
+contains wildcard characters you can suppress wildcard expansion
+by setting `find-file-wildcards'.  If `find-file-at-point' gets a
+filename matching this pattern and `ffap-pass-wildcards-to-dired'
+is non-nil, it passes it on to `dired'.
 
 If `dired-at-point' gets a filename matching this pattern,
 it passes it on to `dired'."
@@ -230,6 +233,11 @@
 		 )
   :group 'ffap)
 
+(defcustom ffap-pass-wildcards-to-dired nil
+  "*If non-nil, pass filenames matching `ffap-dired-wildcards' to dired."
+  :type 'boolean
+  :group 'ffap)
+
 (defcustom ffap-newfile-prompt nil
   ;; Suggestion from RHOGEE, 11 Jul 1994.  Disabled, I think this is
   ;; better handled by `find-file-not-found-hooks'.
@@ -1386,6 +1394,10 @@
      ((ffap-url-p filename)
       (let (current-prefix-arg)		; w3 2.3.25 bug, reported by KPC
 	(funcall ffap-url-fetcher filename)))
+     ((and ffap-pass-wildcards-to-dired
+	   ffap-dired-wildcards
+	   (string-match ffap-dired-wildcards filename))
+      (funcall ffap-directory-finder filename))
      ((and ffap-dired-wildcards
 	   (string-match ffap-dired-wildcards filename)
 	   find-file-wildcards
--- a/lisp/filesets.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/filesets.el	Sat Apr 09 02:16:29 2005 +0000
@@ -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
--- a/lisp/font-core.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/font-core.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/font-lock.el	Sat Apr 09 02:16:29 2005 +0000
@@ -383,14 +383,14 @@
 
 MATCH-HIGHLIGHT should be of the form:
 
- (MATCH FACENAME OVERRIDE LAXMATCH)
+ (MATCH FACENAME [[OVERRIDE [LAXMATCH]])
 
 MATCH is the subexpression of MATCHER to be highlighted.  FACENAME is an
 expression whose value is the face name to use.  Face default attributes
 can be modified via \\[customize].  Instead of a face, FACENAME can
-evaluate to a property list of the form (face VAL1 PROP2 VAL2 PROP3 VAL3 ...)
+evaluate to a property list of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...)
 in which case all the listed text-properties will be set rather than
-just `face'.  In such a case, you will most likely want to put those
+just FACE.  In such a case, you will most likely want to put those
 properties in `font-lock-extra-managed-props' or to override
 `font-lock-unfontify-region-function'.
 
@@ -426,7 +426,7 @@
 used to initialise before, and cleanup after, MATCHER is used.  Typically,
 PRE-MATCH-FORM is used to move to some position relative to the original
 MATCHER, before starting with MATCH-ANCHORED's MATCHER.  POST-MATCH-FORM might
-be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER.
+be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER.
 
 For example, an element of the form highlights (if not already highlighted):
 
@@ -436,7 +436,7 @@
  discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
  (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil.  Therefore \"item\" is
  initially searched for starting from the end of the match of \"anchor\", and
- searching for subsequent instance of \"anchor\" resumes from where searching
+ searching for subsequent instances of \"anchor\" resumes from where searching
  for \"item\" concluded.)
 
 The above-mentioned exception is as follows.  The limit of the MATCHER search
@@ -1657,7 +1657,7 @@
   '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold))
     (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold))
     (((class color) (min-colors 88) (background light)) (:foreground "Purple"))
-    (((class color) (min-colors 88) (background dark)) (:foreground "Cyan"))
+    (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
     (((class color) (min-colors 16) (background light)) (:foreground "Purple"))
     (((class color) (min-colors 16) (background dark)) (:foreground "Cyan"))
     (((class color) (min-colors 8)) (:foreground "cyan" :weight bold))
@@ -1678,7 +1678,7 @@
   :group 'font-lock-highlighting-faces)
 
 (defface font-lock-function-name-face
-  '((((class color) (min-colors 88) (background light)) (:foreground "Blue"))
+  '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
     (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
     (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
     (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
@@ -1728,7 +1728,7 @@
   :group 'font-lock-highlighting-faces)
 
 (defface font-lock-warning-face
-  '((((class color) (min-colors 88) (background light)) (:foreground "Red" :weight bold))
+  '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold))
     (((class color) (min-colors 88) (background dark)) (:foreground "Pink" :weight bold))
     (((class color) (min-colors 16) (background light)) (:foreground "Red" :weight bold))
     (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :weight bold))
--- a/lisp/generic-x.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/generic-x.el	Sat Apr 09 02:16:29 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
@@ -1587,20 +1612,20 @@
 (defface show-tabs-tab-face
   '((((class grayscale) (background light)) (:background "DimGray"   :weight bold))
     (((class grayscale) (background dark))  (:background "LightGray" :weight bold))
-    (((class color)     (background light)) (:background "red"))
-    (((class color)     (background dark))  (:background "red"))
+    (((class color)     (min-colors 88))    (:background "red1"))
+    (((class color))                        (:background "red"))
     (t (:weight bold)))
   "Font Lock mode face used to highlight TABs."
-  :group 'show-tabs)
+  :group 'generic-x)
 
 (defface show-tabs-space-face
   '((((class grayscale) (background light)) (:background "DimGray"   :weight bold))
     (((class grayscale) (background dark))  (:background "LightGray" :weight bold))
-    (((class color)     (background light)) (:background "yellow"))
-    (((class color)     (background dark))  (:background "yellow"))
+    (((class color)     (min-colors 88))    (:background "yellow1"))
+    (((class color))                        (:background "yellow"))
     (t (:weight bold)))
   "Font Lock mode face used to highlight spaces."
-  :group 'show-tabs)
+  :group 'generic-x)
 
 (define-generic-mode show-tabs-generic-mode
   nil ;; no comment char
@@ -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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/generic.el	Sat Apr 09 02:16:29 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,22 +217,42 @@
 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.  Defaults to MODE without the
+possible trailing \"-mode\".  (This default may not be a valid
+customization group defined with `defgroup'.  Make sure it is.)
+You can specify keyword arguments without specifying a docstring.
+
 See the file generic-x.el for some examples of `define-generic-mode'."
   (declare (debug (sexp def-form def-form def-form form def-form
-			&optional stringp))
+			[&optional stringp] &rest [keywordp form]))
 	   (indent 1))
 
   ;; Backward compatibility.
   (when (eq (car-safe mode) 'quote)
     (setq mode (eval mode)))
-  (let* ((mode-name (symbol-name 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* ((name (symbol-name mode))
 	 (pretty-name (capitalize (replace-regexp-in-string
-				   "-mode\\'" "" mode-name)))
-	 (mode-hook (intern (concat mode-name "-hook"))))
+				   "-mode\\'" "" name)))
+	 (mode-hook (intern (concat name "-hook"))))
+
+    (unless (plist-get custom-keyword-args :group)
+      (setq custom-keyword-args
+	    (plist-put custom-keyword-args 
+		       :group `',(intern (replace-regexp-in-string
+					  "-mode\\'" "" name)))))
 
     `(progn
        ;; Add a new entry.
-       (add-to-list 'generic-mode-list ,mode-name)
+       (add-to-list 'generic-mode-list ,name)
 
        ;; Add it to auto-mode-alist
        (dolist (re ,auto-mode-list)
@@ -240,9 +261,7 @@
        (defcustom ,mode-hook nil
 	 ,(concat "Hook run when entering " pretty-name " mode.")
 	 :type 'hook
-	 :group (or (custom-current-group)
-		    ',(intern (replace-regexp-in-string
-			       "-mode\\'" "" mode-name))))
+	 ,@custom-keyword-args)
 
        (defun ,mode ()
 	 ,(or docstring
@@ -256,10 +275,10 @@
 (defun generic-mode-internal (mode comment-list keyword-list
 				   font-lock-list function-list)
   "Go into the generic mode MODE."
-  (let* ((mode-name (symbol-name mode))
+  (let* ((name (symbol-name mode))
 	 (pretty-name (capitalize (replace-regexp-in-string
-				   "-mode\\'" "" mode-name)))
-	 (mode-hook (intern (concat mode-name "-hook"))))
+				   "-mode\\'" "" name)))
+	 (mode-hook (intern (concat name "-hook"))))
 
     (kill-all-local-variables)
 
@@ -373,7 +392,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
--- a/lisp/gnus/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,23 @@
+2005-04-04  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.el (message-make-date): Add defvars in order to silence
+	the byte compiler inside the defun.
+
+	* nnimap.el (nnimap-date-days-ago): Ditto.
+
+	* gnus-demon.el (parse-time-string): Added autoload.
+
+	* gnus-delay.el (parse-time-string): Added autoload.
+
+	* gnus-art.el (parse-time-string): Added autoload.
+
+	* nnultimate.el (parse-time): Require for `parse-time-string'.
+
+2005-04-03  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-sum.el (gnus-summary-make-menu-bar): Avoid the
+	"Unrecognized menu descriptor" error in XEmacs.
+
 2005-03-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* message.el (message-resend): Bind rfc2047-encode-encoded-words.
@@ -483,7 +503,7 @@
 
 2004-11-04  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-	* gnus-art. (gnus-article-edit-article): Don't associate the
+	* gnus-art.el (gnus-article-edit-article): Don't associate the
 	article buffer with a draft file.  This is a temporary measure
 	against the 2004-08-22 change to gnus-article-edit-mode.
 
--- a/lisp/gnus/ChangeLog.2	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/ChangeLog.2	Sat Apr 09 02:16:29 2005 +0000
@@ -12604,7 +12604,7 @@
 
 	* nnfolder.el (nnfolder-read-folder): Use group instead of
 	nnfolder-current-group.
-	Suggested by Lorentey Karoly <lorentey@elte.hu>.
+	Suggested by K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu>.
 
 2001-11-17  Simon Josefsson  <jas@extundo.com>
 
--- a/lisp/gnus/gnus-art.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/gnus-art.el	Sat Apr 09 02:16:29 2005 +0000
@@ -46,6 +46,7 @@
 (autoload 'gnus-msg-mail "gnus-msg" nil t)
 (autoload 'gnus-button-mailto "gnus-msg")
 (autoload 'gnus-button-reply "gnus-msg" nil t)
+(autoload 'parse-time-string "parse-time" nil nil)
 
 (defgroup gnus-article nil
   "Article display."
--- a/lisp/gnus/gnus-delay.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/gnus-delay.el	Sat Apr 09 02:16:29 2005 +0000
@@ -37,6 +37,7 @@
 
 (require 'nndraft)
 (require 'gnus-draft)
+(autoload 'parse-time-string "parse-time" nil nil)
 
 ;;;###autoload
 (defgroup gnus-delay nil
--- a/lisp/gnus/gnus-demon.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/gnus-demon.el	Sat Apr 09 02:16:29 2005 +0000
@@ -40,6 +40,8 @@
       (require 'itimer)
     (require 'timer)))
 
+(autoload 'parse-time-string "parse-time" nil nil)
+
 (defgroup gnus-demon nil
   "Demonic behaviour."
   :group 'gnus)
--- a/lisp/gnus/gnus-sum.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/message.el	Sat Apr 09 02:16:29 2005 +0000
@@ -4568,6 +4568,8 @@
   "Make a valid data header.
 If NOW, use that time instead."
   (require 'parse-time)
+  (defvar parse-time-weekdays)
+  (defvar parse-time-months)
   (let* ((now (or now (current-time)))
 	 (zone (nth 8 (decode-time now)))
 	 (sign "+"))
--- a/lisp/gnus/nnimap.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/nnimap.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1388,6 +1388,8 @@
 
 (defun nnimap-date-days-ago (daysago)
   "Return date, in format \"3-Aug-1998\", for DAYSAGO days ago."
+  (require 'parse-time)
+  (defvar parse-time-months)
   (let* ((time (nnimap-time-substract (current-time) (days-to-time daysago)))
 	 (date (format-time-string
 		(format "%%d-%s-%%Y"
--- a/lisp/gnus/nnultimate.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/gnus/nnultimate.el	Sat Apr 09 02:16:29 2005 +0000
@@ -39,6 +39,7 @@
 (require 'mm-util)
 (require 'mm-url)
 (require 'nnweb)
+(require 'parse-time)
 (autoload 'w3-parse-buffer "w3-parse")
 
 (nnoo-declare nnultimate)
--- a/lisp/hi-lock.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/hi-lock.el	Sat Apr 09 02:16:29 2005 +0000
@@ -119,7 +119,10 @@
   :group 'hi-lock-interactive-text-highlighting)
 
 (defface hi-yellow
-  '((((background dark)) (:background "yellow" :foreground "black"))
+  '((((min-colors 88) (background dark))
+     (:background "yellow1" :foreground "black"))
+    (((background dark)) (:background "yellow" :foreground "black"))
+    (((min-colors 88)) (:background "yellow1"))
     (t (:background "yellow")))
   "Default face for hi-lock mode."
   :group 'hi-lock-faces)
@@ -131,7 +134,10 @@
   :group 'hi-lock-faces)
 
 (defface hi-green
-  '((((background dark)) (:background "green" :foreground "black"))
+  '((((min-colors 88) (background dark))
+     (:background "green1" :foreground "black"))
+    (((background dark)) (:background "green" :foreground "black"))
+    (((min-colors 88)) (:background "green1"))
     (t (:background "green")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
@@ -148,17 +154,20 @@
   :group 'hi-lock-faces)
 
 (defface hi-blue-b
-  '((t (:weight bold :foreground "blue")))
+  '((((min-colors 88)) (:weight bold :foreground "blue1"))
+    (t (:weight bold :foreground "blue")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
 (defface hi-green-b
-  '((t (:weight bold :foreground "green")))
+  '((((min-colors 88)) (:weight bold :foreground "green1"))
+    (t (:weight bold :foreground "green")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
 (defface hi-red-b
-  '((t (:weight bold :foreground "red")))
+  '((((min-colors 88)) (:weight bold :foreground "red1"))
+    (t (:weight bold :foreground "red")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
--- a/lisp/hilit-chg.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/hilit-chg.el	Sat Apr 09 02:16:29 2005 +0000
@@ -213,14 +213,16 @@
 ;; indentation on inserts gets underlined (which can look pretty ugly!).
 
 (defface highlight-changes-face
-  '((((class color)) (:foreground "red" ))
+  '((((min-colors 88) (class color)) (:foreground "red1" ))
+    (((class color)) (:foreground "red" ))
     (t (:inverse-video t)))
   "Face used for highlighting changes."
   :group 'highlight-changes)
 
 ;; This looks pretty ugly, actually.  Maybe the underline should be removed.
 (defface highlight-changes-delete-face
-  '((((class color)) (:foreground "red" :underline t))
+  '((((min-colors 88) (class color)) (:foreground "red1" :underline t))
+    (((class color)) (:foreground "red" :underline t))
     (t (:inverse-video t)))
   "Face used for highlighting deletions."
   :group 'highlight-changes)
--- a/lisp/hl-line.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/hl-line.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ido.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; ido.el --- interactively do things with buffers and files.
 
-;; Copyright (C) 1996-2004  Free Software Foundation, Inc.
+;; Copyright (C) 1996-2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Kim F. Storm <storm@cua.dk>
 ;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
@@ -747,13 +747,19 @@
   "*Font used by ido for highlighting only match."
   :group 'ido)
 
-(defface ido-subdir-face  '((((class color))
+(defface ido-subdir-face  '((((min-colors 88) (class color))
+                             (:foreground "red1"))
+			    (((class color))
                              (:foreground "red"))
                             (t (:underline t)))
   "*Font used by ido for highlighting subdirs in the alternatives."
   :group 'ido)
 
-(defface ido-indicator-face  '((((class color))
+(defface ido-indicator-face  '((((min-colors 88) (class color))
+				(:foreground "yellow1"
+				 :background "red1"
+				 :width condensed))
+			       (((class color))
 				(:foreground "yellow"
 				 :background "red"
 				 :width condensed))
--- a/lisp/ielm.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/ielm.el	Sat Apr 09 02:16:29 2005 +0000
@@ -65,7 +65,7 @@
 
 \(add-hook 'ielm-mode-hook
 	  '(lambda ()
-	     (define-key ielm-map \"\C-w\" 'comint-kill-region)
+	     (define-key ielm-map \"\\C-w\" 'comint-kill-region)
 	     (define-key ielm-map [C-S-backspace]
 	       'comint-kill-whole-line)))
 
--- a/lisp/iimage.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/iimage.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/info.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; info.el --- info package for Emacs
 
-;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,2004
+;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,04,2005
 ;;  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -83,7 +83,11 @@
   :group 'info)
 
 (defface info-xref
-  '((((class color) (background light)) :foreground "blue" :underline t)
+  '((((min-colors 88) 
+      (class color) (background light)) :foreground "blue1" :underline t)
+    (((class color) (background light)) :foreground "blue" :underline t)
+    (((min-colors 88) 
+      (class color) (background dark)) :foreground "cyan1" :underline t)
     (((class color) (background dark)) :foreground "cyan" :underline t)
     (t :underline t))
   "Face for Info cross-references."
@@ -3240,6 +3244,7 @@
   (setq line-move-ignore-invisible t)
   (make-local-variable 'desktop-save-buffer)
   (setq desktop-save-buffer 'Info-desktop-buffer-misc-data)
+  (add-hook 'kill-buffer-hook 'Info-kill-buffer nil t)
   (add-hook 'clone-buffer-hook 'Info-clone-buffer-hook nil t)
   (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
   (add-hook 'isearch-mode-hook 'Info-isearch-start nil t)
@@ -3254,6 +3259,13 @@
   (Info-set-mode-line)
   (run-hooks 'Info-mode-hook))
 
+;; When an Info buffer is killed, make sure the associated tags buffer
+;; is killed too.
+(defun Info-kill-buffer ()
+  (and (eq major-mode 'Info-mode)
+       Info-tag-table-buffer
+       (kill-buffer Info-tag-table-buffer)))
+
 (defun Info-clone-buffer-hook ()
   (when (bufferp Info-tag-table-buffer)
     (setq Info-tag-table-buffer
@@ -3887,16 +3899,6 @@
 
       (set-buffer-modified-p nil))))
 
-
-;; When an Info buffer is killed, make sure the associated tags buffer
-;; is killed too.
-(defun Info-kill-buffer ()
-  (and (eq major-mode 'Info-mode)
-       Info-tag-table-buffer
-       (kill-buffer Info-tag-table-buffer)))
-
-(add-hook 'kill-buffer-hook 'Info-kill-buffer)
-
 ;;; Speedbar support:
 ;; These functions permit speedbar to display the "tags" in the
 ;; current info node.
--- a/lisp/international/encoded-kb.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/international/encoded-kb.el	Sat Apr 09 02:16:29 2005 +0000
@@ -346,7 +346,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/language/thai-util.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/language/thai-util.el	Sat Apr 09 02:16:29 2005 +0000
@@ -174,7 +174,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.
@@ -183,9 +183,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))
 
@@ -256,7 +256,7 @@
 (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
+  :global t :group 'mule
   (cond (thai-word-mode
 	 ;; This enables linebreak between Thai characters.
 	 (modify-category-entry (make-char 'thai-tis620) ?|)
--- a/lisp/lazy-lock.el	Sat Apr 09 01:45:41 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1054 +0,0 @@
-;;; lazy-lock.el --- lazy demand-driven fontification for fast Font Lock mode
-
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2001
-;;   Free Software Foundation, Inc.
-
-;; Author: Simon Marshall <simon@gnu.org>
-;; Maintainer: FSF
-;; Keywords: faces files
-;; Version: 2.11
-
-;; 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:
-
-;; Purpose:
-;;
-;; Lazy Lock mode is a Font Lock support mode.
-;; It makes visiting buffers in Font Lock mode faster by making fontification
-;; be demand-driven, deferred and stealthy, so that fontification only occurs
-;; when, and where, necessary.
-;;
-;; See caveats and feedback below.
-;; See also the fast-lock package.  (But don't use them at the same time!)
-
-;; Installation:
-;;
-;; Put in your ~/.emacs:
-;;
-;; (setq font-lock-support-mode 'lazy-lock-mode)
-;;
-;; Start up a new Emacs and use font-lock as usual (except that you can use the
-;; so-called "gaudier" fontification regexps on big files without frustration).
-;;
-;; In a buffer (which has `font-lock-mode' enabled) which is at least
-;; `lazy-lock-minimum-size' characters long, buffer fontification will not
-;; occur and only the visible portion of the buffer will be fontified.  Motion
-;; around the buffer will fontify those visible portions not previously
-;; fontified.  If stealth fontification is enabled, buffer fontification will
-;; occur in invisible parts of the buffer after `lazy-lock-stealth-time'
-;; seconds of idle time.  If on-the-fly fontification is deferred, on-the-fly
-;; fontification will occur after `lazy-lock-defer-time' seconds of idle time.
-
-;; User-visible differences with version 1:
-;;
-;; - Version 2 can defer on-the-fly fontification.  Therefore you need not, and
-;; should not, use defer-lock.el with this version of lazy-lock.el.
-;;
-;; A number of variables have changed meaning:
-;;
-;; - A value of nil for the variable `lazy-lock-minimum-size' means never turn
-;; on demand-driven fontification.  In version 1 this meant always turn on
-;; demand-driven fontification.  If you really want demand-driven fontification
-;; regardless of buffer size, set this variable to 0.
-;;
-;; - The variable `lazy-lock-stealth-lines' cannot have a nil value.  In
-;; version 1 this meant use `window-height' as the maximum number of lines to
-;; fontify as a stealth chunk.  This makes no sense; stealth fontification is
-;; of a buffer, not a window.
-
-;; Implementation differences with version 1:
-;;
-;; - Version 1 of lazy-lock.el is a bit of a hack.  Version 1 demand-driven
-;; fontification, the core feature of lazy-lock.el, is implemented by placing a
-;; function on `post-command-hook'.  This function fontifies where necessary,
-;; i.e., where a window scroll has occurred.  However, there are a number of
-;; problems with using `post-command-hook':
-;;
-;; (a) As the name suggests, `post-command-hook' is run after every command,
-;;     i.e., frequently and regardless of whether scrolling has occurred.
-;; (b) Scrolling can occur during a command, when `post-command-hook' is not
-;;     run, i.e., it is not necessarily run after scrolling has occurred.
-;; (c) When `post-command-hook' is run, there is nothing to suggest where
-;;     scrolling might have occurred, i.e., which windows have scrolled.
-;;
-;; Thus lazy-lock.el's function is called almost as often as possible, usually
-;; when it need not be called, yet it is not always called when it is needed.
-;; Also, lazy-lock.el's function must check each window to see if a scroll has
-;; occurred there.  Worse still, lazy-lock.el's function must fontify a region
-;; twice as large as necessary to make sure the window is completely fontified.
-;; Basically, `post-command-hook' is completely inappropriate for lazy-lock.el.
-;;
-;; Ideally, we want to attach lazy-lock.el's function to a hook that is run
-;; only when scrolling occurs, e.g., `window-start' has changed, and tells us
-;; as much information as we need, i.e., the window and its new buffer region.
-;; Richard Stallman implemented a `window-scroll-functions' for Emacs 19.30.
-;; Functions on it are run when `window-start' has changed, and are supplied
-;; with the window and the window's new `window-start' position.  (It would be
-;; better if it also supplied the window's new `window-end' position, but that
-;; is calculated as part of the redisplay process, and the functions on
-;; `window-scroll-functions' are run before redisplay has finished.)  Thus, the
-;; hook deals with the above problems (a), (b) and (c).
-;;
-;; If only life was that easy.  Version 2 demand-driven fontification is mostly
-;; implemented by placing a function on `window-scroll-functions'.  However,
-;; not all scrolling occurs when `window-start' has changed.  A change in
-;; window size, e.g., via C-x 1, or a significant deletion, e.g., of a number
-;; of lines, causes text previously invisible (i.e., after `window-end') to
-;; become visible without changing `window-start'.  Arguably, these events are
-;; not scrolling events, but fontification must occur for lazy-lock.el to work.
-;; Hooks `window-size-change-functions' and `redisplay-end-trigger-functions'
-;; were added for these circumstances.
-;;
-;; (Ben Wing thinks these hooks are "horribly horribly kludgy", and implemented
-;; a `pre-idle-hook', a `mother-of-all-post-command-hooks', for XEmacs 19.14.
-;; He then hacked up a version 1 lazy-lock.el to use `pre-idle-hook' rather
-;; than `post-command-hook'.  Whereas functions on `post-command-hook' are
-;; called almost as often as possible, functions on `pre-idle-hook' really are
-;; called as often as possible, even when the mouse moves and, on some systems,
-;; while XEmacs is idle.  Thus, the hook deals with the above problem (b), but
-;; unfortunately it makes (a) worse and does not address (c) at all.
-;;
-;; I freely admit that `redisplay-end-trigger-functions' and, to a much lesser
-;; extent, `window-size-change-functions' are not pretty.  However, I feel that
-;; a `window-scroll-functions' feature is cleaner than a `pre-idle-hook', and
-;; the result is faster and smaller, less intrusive and more targeted, code.
-;; Since `pre-idle-hook' is pretty much like `post-command-hook', there is no
-;; point in making this version of lazy-lock.el work with it.  Anyway, that's
-;; Lit 30 of my humble opinion.
-;;
-;; - Version 1 stealth fontification is also implemented by placing a function
-;; on `post-command-hook'.  This function waits for a given amount of time,
-;; and, if Emacs remains idle, fontifies where necessary.  Again, there are a
-;; number of problems with using `post-command-hook':
-;;
-;; (a) Functions on `post-command-hook' are run sequentially, so this function
-;;     can interfere with other functions on the hook, and vice versa.
-;; (b) This function waits for a given amount of time, so it can interfere with
-;;     various features that are dealt with by Emacs after a command, e.g.,
-;;     region highlighting, asynchronous updating and keystroke echoing.
-;; (c) Fontification may be required during a command, when `post-command-hook'
-;;     is not run.  (Version 2 deferred fontification only.)
-;;
-;; Again, `post-command-hook' is completely inappropriate for lazy-lock.el.
-;; Richard Stallman and Morten Welinder implemented internal Timers and Idle
-;; Timers for Emacs 19.31.  Functions can be run independently at given times
-;; or after given amounts of idle time.  Thus, the feature deals with the above
-;; problems (a), (b) and (c).  Version 2 deferral and stealth are implemented
-;; by functions on Idle Timers.  (A function on XEmacs' `pre-idle-hook' is
-;; similar to an Emacs Idle Timer function with a fixed zero second timeout.)
-
-;; - Version 1 has the following problems (relative to version 2):
-;;
-;; (a) It is slow when it does its job.
-;; (b) It does not always do its job when it should.
-;; (c) It slows all interaction (when it doesn't need to do its job).
-;; (d) It interferes with other package functions on `post-command-hook'.
-;; (e) It interferes with Emacs things within the read-eval loop.
-;;
-;; Ben's hacked-up lazy-lock.el 1.14 almost solved (b) but made (c) worse.
-;;
-;; - Version 2 has the following additional features (relative to version 1):
-;;
-;; (a) It can defer fontification (both on-the-fly and on-scrolling).
-;; (b) It can fontify contextually (syntactically true on-the-fly).
-
-;; Caveats:
-;;
-;; Lazy Lock mode does not work efficiently with Outline mode.
-;; This is because when in Outline mode, although text may be not visible to
-;; you in the window, the text is visible to Emacs Lisp code (not surprisingly)
-;; and Lazy Lock fontifies it mercilessly.  Maybe it will be fixed one day.
-;;
-;; Because buffer text is not necessarily fontified, other packages that expect
-;; buffer text to be fontified in Font Lock mode either might not work as
-;; expected, or might not display buffer text as expected.  An example of the
-;; latter is `occur', which copies lines of buffer text into another buffer.
-;;
-;; In Emacs 19.30, Lazy Lock mode does not ensure that an existing buffer is
-;; fontified if it is made visible via a minibuffer-less command that replaces
-;; an existing window's buffer (e.g., via the Buffers menu).  Upgrade!
-;;
-;; In Emacs 19.30, Lazy Lock mode does not work well with Transient Mark mode
-;; or modes based on Comint mode (e.g., Shell mode), and also interferes with
-;; the echoing of keystrokes in the minibuffer.  This is because of the way
-;; deferral and stealth have to be implemented for Emacs 19.30.  Upgrade!
-;;
-;; Currently XEmacs does not have the features to support this version of
-;; lazy-lock.el.  Maybe it will one day.
-
-;; History:
-;;
-;; 1.15--2.00:
-;; - Rewrite for Emacs 19.30 and the features rms added to support lazy-lock.el
-;;   so that it could work correctly and efficiently.
-;; - Many thanks to those who reported bugs, fixed bugs, made suggestions or
-;;   otherwise contributed in the version 1 cycle; Jari Aalto, Kevin Broadey,
-;;   Ulrik Dickow, Bill Dubuque, Bob Glickstein, Boris Goldowsky,
-;;   Jonas Jarnestrom, David Karr, Michael Kifer, Erik Naggum, Rick Sladkey,
-;;   Jim Thompson, Ben Wing, Ilya Zakharevich, and Richard Stallman.
-;; 2.00--2.01:
-;; - Made `lazy-lock-fontify-after-command' always `sit-for' and so redisplay
-;; - Use `buffer-name' not `buffer-live-p' (Bill Dubuque hint)
-;; - Made `lazy-lock-install' do `add-to-list' not `setq' of `current-buffer'
-;; - Made `lazy-lock-fontify-after-install' loop over buffer list
-;; - Made `lazy-lock-arrange-before-change' to arrange `window-end' triggering
-;; - Made `lazy-lock-let-buffer-state' wrap both `befter-change-functions'
-;; - Made `lazy-lock-fontify-region' do `condition-case' (Hyman Rosen report)
-;; 2.01--2.02:
-;; - Use `buffer-live-p' as `buffer-name' can barf (Richard Stanton report)
-;; - Made `lazy-lock-install' set `font-lock-fontified' (Kevin Davidson report)
-;; - Made `lazy-lock-install' add hooks only if needed
-;; - Made `lazy-lock-unstall' add `font-lock-after-change-function' if needed
-;; 2.02--2.03:
-;; - Made `lazy-lock-fontify-region' do `condition-case' for `quit' too
-;; - Made `lazy-lock-mode' respect the value of `font-lock-inhibit-thing-lock'
-;; - Added `lazy-lock-after-unfontify-buffer'
-;; - Removed `lazy-lock-fontify-after-install' hack
-;; - Made `lazy-lock-fontify-after-scroll' not `set-buffer' to `window-buffer'
-;; - Made `lazy-lock-fontify-after-trigger' not `set-buffer' to `window-buffer'
-;; - Made `lazy-lock-fontify-after-idle' be interruptible (Scott Burson hint)
-;; 2.03--2.04:
-;; - Rewrite for Emacs 19.31 idle timers
-;; - Renamed `buffer-windows' to `get-buffer-window-list'
-;; - Removed `buffer-live-p'
-;; - Made `lazy-lock-defer-after-change' always save `current-buffer'
-;; - Made `lazy-lock-fontify-after-defer' just process buffers
-;; - Made `lazy-lock-install-hooks' add hooks correctly (Kevin Broadey report)
-;; - Made `lazy-lock-install' cope if `lazy-lock-defer-time' is a list
-;; 2.04--2.05:
-;; - Rewrite for Common Lisp macros
-;; - Added `do-while' macro
-;; - Renamed `lazy-lock-let-buffer-state' macro to `save-buffer-state'
-;; - Returned `lazy-lock-fontify-after-install' hack (Darren Hall hint)
-;; - Added `lazy-lock-defer-on-scrolling' functionality (Scott Byer hint)
-;; - Made `lazy-lock-mode' wrap `font-lock-support-mode'
-;; 2.05--2.06:
-;; - Made `lazy-lock-fontify-after-defer' swap correctly (Scott Byer report)
-;; 2.06--2.07:
-;; - Added `lazy-lock-stealth-load' functionality (Rob Hooft hint)
-;; - Made `lazy-lock-unstall' call `lazy-lock-fontify-region' if needed
-;; - Made `lazy-lock-mode' call `lazy-lock-unstall' only if needed
-;; - Made `lazy-lock-defer-after-scroll' do `set-window-redisplay-end-trigger'
-;; - Added `lazy-lock-defer-contextually' functionality
-;; - Added `lazy-lock-defer-on-the-fly' from `lazy-lock-defer-time'
-;; - Renamed `lazy-lock-defer-driven' to `lazy-lock-defer-on-scrolling'
-;; - Removed `lazy-lock-submit-bug-report' and bade farewell
-;; 2.07--2.08:
-;; - Made `lazy-lock-fontify-conservatively' fontify around `window-point'
-;; - Made `save-buffer-state' wrap `inhibit-point-motion-hooks'
-;; - Added Custom support
-;; 2.08--2.09:
-;; - Removed `byte-*' variables from `eval-when-compile' (Erik Naggum hint)
-;; - Made various wrapping `inhibit-point-motion-hooks' (Vinicius Latorre hint)
-;; - Made `lazy-lock-fontify-after-idle' wrap `minibuffer-auto-raise'
-;; - Made `lazy-lock-fontify-after-defer' paranoid about deferred buffers
-;; 2.09--2.10:
-;; - Use `window-end' UPDATE arg for Emacs 20.4 and later.
-;; - Made deferral `widen' before unfontifying (Dan Nicolaescu report)
-;; - Use `lazy-lock-fontify-after-visage' for hideshow.el (Dan Nicolaescu hint)
-;; - Use `other' widget where possible (Andreas Schwab fix)
-;; 2.10--2.11:
-;; - Used `with-temp-message' where possible to make messages temporary.
-
-;;; Code:
-
-(require 'font-lock)
-
-(eval-when-compile
- ;; We don't do this at the top-level as we only use non-autoloaded macros.
- (require 'cl)
- ;;
- ;; We use this to preserve or protect things when modifying text properties.
- (defmacro save-buffer-state (varlist &rest body)
-   "Bind variables according to VARLIST and eval BODY restoring buffer state."
-   `(let* (,@(append varlist
-		   '((modified (buffer-modified-p))
-		     (buffer-undo-list t)
-		     (inhibit-read-only t)
-		     (inhibit-point-motion-hooks t)
-		     (inhibit-modification-hooks t)
-		     deactivate-mark
-		     buffer-file-name
-		     buffer-file-truename)))
-     ,@body
-     (when (and (not modified) (buffer-modified-p))
-       (restore-buffer-modified-p nil))))
- (put 'save-buffer-state 'lisp-indent-function 1)
- ;;
- ;; We use this for clarity and speed.  Naughty but nice.
- (defmacro do-while (test &rest body)
-   "(do-while TEST BODY...): eval BODY... and repeat if TEST yields non-nil.
-The order of execution is thus BODY, TEST, BODY, TEST and so on
-until TEST returns nil."
-   `(while (progn ,@body ,test)))
- (put 'do-while 'lisp-indent-function (get 'while 'lisp-indent-function)))
-
-(defvar lazy-lock-mode nil)			; Whether we are turned on.
-(defvar lazy-lock-buffers nil)			; For deferral.
-(defvar lazy-lock-timers (cons nil nil))	; For deferral and stealth.
-
-;; User Variables:
-
-(defcustom lazy-lock-minimum-size 25600
-  "*Minimum size of a buffer for demand-driven fontification.
-On-demand fontification occurs if the buffer size is greater than this value.
-If nil, means demand-driven fontification is never performed.
-If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
-where MAJOR-MODE is a symbol or t (meaning the default).  For example:
- ((c-mode . 25600) (c++-mode . 25600) (rmail-mode . 1048576))
-means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
-for buffers in Rmail mode, and size is irrelevant otherwise.
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "none" nil)
-		 (integer :tag "size")
-		 (repeat :menu-tag "mode specific" :tag "mode specific"
-			 :value ((t . nil))
-			 (cons :tag "Instance"
-			       (radio :tag "Mode"
-				      (const :tag "all" t)
-				      (symbol :tag "name"))
-			       (radio :tag "Size"
-				      (const :tag "none" nil)
-				      (integer :tag "size")))))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-defer-on-the-fly t
-  "*If non-nil, means fontification after a change should be deferred.
-If nil, means on-the-fly fontification is performed.  This means when changes
-occur in the buffer, those areas are immediately fontified.
-If a list, it should be a list of `major-mode' symbol names for which deferred
-fontification should occur.  The sense of the list is negated if it begins with
-`not'.  For example:
- (c-mode c++-mode)
-means that on-the-fly fontification is deferred for buffers in C and C++ modes
-only, and deferral does not occur otherwise.
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "never" nil)
-		 (const :tag "always" t)
-		 (set :menu-tag "mode specific" :tag "modes"
-		      :value (not)
-		      (const :tag "Except" not)
-		      (repeat :inline t (symbol :tag "mode"))))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-defer-on-scrolling nil
-  "*If non-nil, means fontification after a scroll should be deferred.
-If nil, means demand-driven fontification is performed.  This means when
-scrolling into unfontified areas of the buffer, those areas are immediately
-fontified.  Thus scrolling never presents unfontified areas.  However, since
-fontification occurs during scrolling, scrolling may be slow.
-If t, means defer-driven fontification is performed.  This means fontification
-of those areas is deferred.  Thus scrolling may present momentarily unfontified
-areas.  However, since fontification does not occur during scrolling, scrolling
-will be faster than demand-driven fontification.
-If any other value, e.g., `eventually', means demand-driven fontification is
-performed until the buffer is fontified, then buffer fontification becomes
-defer-driven.  Thus scrolling never presents unfontified areas until the buffer
-is first fontified, after which subsequent scrolling may present future buffer
-insertions momentarily unfontified.  However, since fontification does not
-occur during scrolling after the buffer is first fontified, scrolling will
-become faster.  (But, since contextual changes continually occur, such a value
-makes little sense if `lazy-lock-defer-contextually' is non-nil.)
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "never" nil)
-		 (const :tag "always" t)
-		 (other :tag "eventually" eventually))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-defer-contextually 'syntax-driven
-  "*If non-nil, means deferred fontification should be syntactically true.
-If nil, means deferred fontification occurs only on those lines modified.  This
-means where modification on a line causes syntactic change on subsequent lines,
-those subsequent lines are not refontified to reflect their new context.
-If t, means deferred fontification occurs on those lines modified and all
-subsequent lines.  This means those subsequent lines are refontified to reflect
-their new syntactic context, either immediately or when scrolling into them.
-If any other value, e.g., `syntax-driven', means deferred syntactically true
-fontification occurs only if syntactic fontification is performed using the
-buffer mode's syntax table, i.e., only if `font-lock-keywords-only' is nil.
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "never" nil)
-		 (const :tag "always" t)
-		 (other :tag "syntax-driven" syntax-driven))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-defer-time
-  (if (featurep 'lisp-float-type) (/ (float 1) (float 4)) 1)
-  "*Time in seconds to delay before beginning deferred fontification.
-Deferred fontification occurs if there is no input within this time.
-If nil, means fontification is never deferred, regardless of the values of the
-variables `lazy-lock-defer-on-the-fly', `lazy-lock-defer-on-scrolling' and
-`lazy-lock-defer-contextually'.
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "never" nil)
-		 (number :tag "seconds"))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-stealth-time 30
-  "*Time in seconds to delay before beginning stealth fontification.
-Stealth fontification occurs if there is no input within this time.
-If nil, means stealth fontification is never performed.
-
-The value of this variable is used when Lazy Lock mode is turned on."
-  :type '(choice (const :tag "never" nil)
-		 (number :tag "seconds"))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-stealth-lines (if font-lock-maximum-decoration 100 250)
-  "*Maximum size of a chunk of stealth fontification.
-Each iteration of stealth fontification can fontify this number of lines.
-To speed up input response during stealth fontification, at the cost of stealth
-taking longer to fontify, you could reduce the value of this variable."
-  :type '(integer :tag "lines")
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-stealth-load
-  (if (condition-case nil (load-average) (error)) 200)
-  "*Load in percentage above which stealth fontification is suspended.
-Stealth fontification pauses when the system short-term load average (as
-returned by the function `load-average' if supported) goes above this level,
-thus reducing the demand that stealth fontification makes on the system.
-If nil, means stealth fontification is never suspended.
-To reduce machine load during stealth fontification, at the cost of stealth
-taking longer to fontify, you could reduce the value of this variable.
-See also `lazy-lock-stealth-nice'."
-  :type (if (condition-case nil (load-average) (error))
-	    '(choice (const :tag "never" nil)
-		     (integer :tag "load"))
-	  '(const :format "%t: unsupported\n" nil))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-stealth-nice
-  (if (featurep 'lisp-float-type) (/ (float 1) (float 8)) 1)
-  "*Time in seconds to pause between chunks of stealth fontification.
-Each iteration of stealth fontification is separated by this amount of time,
-thus reducing the demand that stealth fontification makes on the system.
-If nil, means stealth fontification is never paused.
-To reduce machine load during stealth fontification, at the cost of stealth
-taking longer to fontify, you could increase the value of this variable.
-See also `lazy-lock-stealth-load'."
-  :type '(choice (const :tag "never" nil)
-		 (number :tag "seconds"))
-  :group 'lazy-lock)
-
-(defcustom lazy-lock-stealth-verbose
-  (if (featurep 'lisp-float-type)
-      (and (not lazy-lock-defer-contextually) (not (null font-lock-verbose))))
-  "*If non-nil, means stealth fontification should show status messages."
-  :type 'boolean
-  :group 'lazy-lock)
-
-;; User Functions:
-
-;;;###autoload
-(defun lazy-lock-mode (&optional arg)
-  "Toggle Lazy Lock mode.
-With arg, turn Lazy Lock mode on if and only if arg is positive.  Enable it
-automatically in your `~/.emacs' by:
-
- (setq font-lock-support-mode 'lazy-lock-mode)
-
-For a newer font-lock support mode with similar functionality, see
-`jit-lock-mode'.  Eventually, Lazy Lock mode will be deprecated in
-JIT Lock's favor.
-
-When Lazy Lock mode is enabled, fontification can be lazy in a number of ways:
-
-- Demand-driven buffer fontification if `lazy-lock-minimum-size' is non-nil.
-  This means initial fontification does not occur if the buffer is greater than
-  `lazy-lock-minimum-size' characters in length.  Instead, fontification occurs
-  when necessary, such as when scrolling through the buffer would otherwise
-  reveal unfontified areas.  This is useful if buffer fontification is too slow
-  for large buffers.
-
-- Deferred scroll fontification if `lazy-lock-defer-on-scrolling' is non-nil.
-  This means demand-driven fontification does not occur as you scroll.
-  Instead, fontification is deferred until after `lazy-lock-defer-time' seconds
-  of Emacs idle time, while Emacs remains idle.  This is useful if
-  fontification is too slow to keep up with scrolling.
-
-- Deferred on-the-fly fontification if `lazy-lock-defer-on-the-fly' is non-nil.
-  This means on-the-fly fontification does not occur as you type.  Instead,
-  fontification is deferred until after `lazy-lock-defer-time' seconds of Emacs
-  idle time, while Emacs remains idle.  This is useful if fontification is too
-  slow to keep up with your typing.
-
-- Deferred context fontification if `lazy-lock-defer-contextually' is non-nil.
-  This means fontification updates the buffer corresponding to true syntactic
-  context, after `lazy-lock-defer-time' seconds of Emacs idle time, while Emacs
-  remains idle.  Otherwise, fontification occurs on modified lines only, and
-  subsequent lines can remain fontified corresponding to previous syntactic
-  contexts.  This is useful where strings or comments span lines.
-
-- Stealthy buffer fontification if `lazy-lock-stealth-time' is non-nil.
-  This means remaining unfontified areas of buffers are fontified if Emacs has
-  been idle for `lazy-lock-stealth-time' seconds, while Emacs remains idle.
-  This is useful if any buffer has any deferred fontification.
-
-Basic Font Lock mode on-the-fly fontification behaviour fontifies modified
-lines only.  Thus, if `lazy-lock-defer-contextually' is non-nil, Lazy Lock mode
-on-the-fly fontification may fontify differently, albeit correctly.  In any
-event, to refontify some lines you can use \\[font-lock-fontify-block].
-
-Stealth fontification only occurs while the system remains unloaded.
-If the system load rises above `lazy-lock-stealth-load' percent, stealth
-fontification is suspended.  Stealth fontification intensity is controlled via
-the variable `lazy-lock-stealth-nice' and `lazy-lock-stealth-lines', and
-verbosity is controlled via the variable `lazy-lock-stealth-verbose'."
-  (interactive "P")
-  (let* ((was-on lazy-lock-mode)
-	 (now-on (unless (memq 'lazy-lock-mode font-lock-inhibit-thing-lock)
-		   (if arg (> (prefix-numeric-value arg) 0) (not was-on)))))
-    (cond ((and now-on (not font-lock-mode))
-	   ;; Turned on `lazy-lock-mode' rather than `font-lock-mode'.
-	   (let ((font-lock-support-mode 'lazy-lock-mode))
-	     (font-lock-mode t)))
-	  (now-on
-	   ;; Turn ourselves on.
-	   (set (make-local-variable 'lazy-lock-mode) t)
-	   (lazy-lock-install))
-	  (was-on
-	   ;; Turn ourselves off.
-	   (set (make-local-variable 'lazy-lock-mode) nil)
-	   (lazy-lock-unstall)))))
-
-;;;###autoload
-(defun turn-on-lazy-lock ()
-  "Unconditionally turn on Lazy Lock mode."
-  (lazy-lock-mode t))
-
-(defun lazy-lock-install ()
-  (let ((min-size (font-lock-value-in-major-mode lazy-lock-minimum-size))
-	(defer-change (and lazy-lock-defer-time lazy-lock-defer-on-the-fly))
-	(defer-scroll (and lazy-lock-defer-time lazy-lock-defer-on-scrolling))
-	(defer-context (and lazy-lock-defer-time lazy-lock-defer-contextually
-			    (or (eq lazy-lock-defer-contextually t)
-				(null font-lock-keywords-only)))))
-    ;;
-    ;; Tell Font Lock whether Lazy Lock will do fontification.
-    (make-local-variable 'font-lock-fontified)
-    (setq font-lock-fontified (and min-size (>= (buffer-size) min-size)))
-    ;;
-    ;; Add the text properties and fontify.
-    (if (not font-lock-fontified)
-	(lazy-lock-after-fontify-buffer)
-      ;; Make sure we fontify in any existing windows showing the buffer.
-      (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)))
-	(lazy-lock-after-unfontify-buffer)
-	(while windows
-	  (lazy-lock-fontify-conservatively (car windows))
-	  (setq windows (cdr windows)))))
-    ;;
-    ;; Add the fontification hooks.
-    (lazy-lock-install-hooks
-     font-lock-fontified
-     (cond ((eq (car-safe defer-change) 'not)
-	    (not (memq major-mode (cdr defer-change))))
-	   ((listp defer-change)
-	    (memq major-mode defer-change))
-	   (t
-	    defer-change))
-     (eq defer-scroll t)
-     defer-context)
-    ;;
-    ;; Add the fontification timers.
-    (lazy-lock-install-timers
-     (if (or defer-change defer-scroll defer-context) lazy-lock-defer-time)
-     lazy-lock-stealth-time)))
-
-(defun lazy-lock-install-hooks (fontifying
-				defer-change defer-scroll defer-context)
-  ;;
-  ;; Add hook if lazy-lock.el is fontifying on scrolling or is deferring.
-  (when (or fontifying defer-change defer-scroll defer-context)
-    (add-hook 'window-scroll-functions (if defer-scroll
-					   'lazy-lock-defer-after-scroll
-					 'lazy-lock-fontify-after-scroll)
-	      nil t))
-  ;;
-  ;; Add hook if lazy-lock.el is fontifying and is not deferring changes.
-  (when (and fontifying (not defer-change) (not defer-context))
-    (add-hook 'before-change-functions 'lazy-lock-arrange-before-change nil t))
-  ;;
-  ;; Replace Font Lock mode hook.
-  (remove-hook 'after-change-functions 'font-lock-after-change-function t)
-  (add-hook 'after-change-functions
-	    (cond ((and defer-change defer-context)
-		   'lazy-lock-defer-rest-after-change)
-		  (defer-change
-		   'lazy-lock-defer-line-after-change)
-		  (defer-context
-		   'lazy-lock-fontify-rest-after-change)
-		  (t
-		   'lazy-lock-fontify-line-after-change))
-	    nil t)
-  ;;
-  ;; Add package-specific hook.
-  (add-hook 'outline-view-change-hook 'lazy-lock-fontify-after-visage nil t)
-  (add-hook 'hs-hide-hook 'lazy-lock-fontify-after-visage nil t))
-
-(defun lazy-lock-install-timers (dtime stime)
-  ;; Schedule or re-schedule the deferral and stealth timers.
-  ;; The layout of `lazy-lock-timers' is:
-  ;;  ((DEFER-TIME . DEFER-TIMER) (STEALTH-TIME . STEALTH-TIMER)
-  ;; If an idle timeout has changed, cancel the existing idle timer (if there
-  ;; is one) and schedule a new one (if the new idle timeout is non-nil).
-  (unless (eq dtime (car (car lazy-lock-timers)))
-    (let ((defer (car lazy-lock-timers)))
-      (when (cdr defer)
-	(cancel-timer (cdr defer)))
-      (setcar lazy-lock-timers (cons dtime (and dtime
-	      (run-with-idle-timer dtime t 'lazy-lock-fontify-after-defer))))))
-  (unless (eq stime (car (cdr lazy-lock-timers)))
-    (let ((stealth (cdr lazy-lock-timers)))
-      (when (cdr stealth)
-	(cancel-timer (cdr stealth)))
-      (setcdr lazy-lock-timers (cons stime (and stime
-	      (run-with-idle-timer stime t 'lazy-lock-fontify-after-idle)))))))
-
-(defun lazy-lock-unstall ()
-  ;;
-  ;; If Font Lock mode is still enabled, make sure that the buffer is
-  ;; fontified, and reinstall its hook.  We must do this first.
-  (when font-lock-mode
-    (when (lazy-lock-unfontified-p)
-      (let ((verbose (if (numberp font-lock-verbose)
-			 (> (buffer-size) font-lock-verbose)
-		       font-lock-verbose)))
-	(with-temp-message
-	    (when verbose
-	      (format "Fontifying %s..." (buffer-name)))
-	  ;; Make sure we fontify etc. in the whole buffer.
-	  (save-restriction
-	    (widen)
-	    (lazy-lock-fontify-region (point-min) (point-max))))))
-    (add-hook 'after-change-functions 'font-lock-after-change-function nil t))
-  ;;
-  ;; Remove the text properties.
-  (lazy-lock-after-unfontify-buffer)
-  ;;
-  ;; Remove the fontification hooks.
-  (remove-hook 'window-scroll-functions 'lazy-lock-fontify-after-scroll t)
-  (remove-hook 'window-scroll-functions 'lazy-lock-defer-after-scroll t)
-  (remove-hook 'before-change-functions 'lazy-lock-arrange-before-change t)
-  (remove-hook 'after-change-functions 'lazy-lock-fontify-line-after-change t)
-  (remove-hook 'after-change-functions 'lazy-lock-fontify-rest-after-change t)
-  (remove-hook 'after-change-functions 'lazy-lock-defer-line-after-change t)
-  (remove-hook 'after-change-functions 'lazy-lock-defer-rest-after-change t)
-  (remove-hook 'outline-view-change-hook 'lazy-lock-fontify-after-visage t)
-  (remove-hook 'hs-hide-hook 'lazy-lock-fontify-after-visage t))
-
-;; Hook functions.
-
-;; Lazy Lock mode intervenes when (1) a previously invisible buffer region
-;; becomes visible, i.e., for demand- or defer-driven on-the-scroll
-;; fontification, (2) a buffer modification occurs, i.e., for defer-driven
-;; on-the-fly fontification, (3) Emacs becomes idle, i.e., for fontification of
-;; deferred fontification and stealth fontification, and (4) other special
-;; occasions.
-
-;; 1.  There are three ways whereby this can happen.
-;;
-;; (a) Scrolling the window, either explicitly (e.g., `scroll-up') or
-;;     implicitly (e.g., `search-forward').  Here, `window-start' changes.
-;;     Fontification occurs by adding `lazy-lock-fontify-after-scroll' (for
-;;     demand-driven fontification) or `lazy-lock-defer-after-scroll' (for
-;;     defer-driven fontification) to the hook `window-scroll-functions'.
-
-(defun lazy-lock-fontify-after-scroll (window window-start)
-  ;; Called from `window-scroll-functions'.
-  ;; Fontify WINDOW from WINDOW-START following the scroll.
-  (let ((inhibit-point-motion-hooks t))
-    (lazy-lock-fontify-region window-start (window-end window t)))
-  ;; A prior deletion that did not cause scrolling, followed by a scroll, would
-  ;; result in an unnecessary trigger after this if we did not cancel it now.
-  (set-window-redisplay-end-trigger window nil))
-
-(defun lazy-lock-defer-after-scroll (window window-start)
-  ;; Called from `window-scroll-functions'.
-  ;; Defer fontification following the scroll.  Save the current buffer so that
-  ;; we subsequently fontify in all windows showing the buffer.
-  (unless (memq (current-buffer) lazy-lock-buffers)
-    (push (current-buffer) lazy-lock-buffers))
-  ;; A prior deletion that did not cause scrolling, followed by a scroll, would
-  ;; result in an unnecessary trigger after this if we did not cancel it now.
-  (set-window-redisplay-end-trigger window nil))
-
-;; (b) Resizing the window, either explicitly (e.g., `enlarge-window') or
-;;     implicitly (e.g., `delete-other-windows').  Here, `window-end' changes.
-;;     Fontification occurs by adding `lazy-lock-fontify-after-resize' to the
-;;     hook `window-size-change-functions'.
-
-(defun lazy-lock-fontify-after-resize (frame)
-  ;; Called from `window-size-change-functions'.
-  ;; Fontify windows in FRAME following the resize.  We cannot use
-  ;; `window-start' or `window-end' so we fontify conservatively.
-  (save-excursion
-    (save-selected-window
-      (select-frame frame)
-      (walk-windows (function (lambda (window)
-		       (set-buffer (window-buffer window))
-		       (when lazy-lock-mode
-			 (lazy-lock-fontify-conservatively window))
-		       (set-window-redisplay-end-trigger window nil)))
-		    'nomini frame))))
-
-;; (c) Deletion in the buffer.  Here, a `window-end' marker can become visible.
-;;     Fontification occurs by adding `lazy-lock-arrange-before-change' to
-;;     `before-change-functions' and `lazy-lock-fontify-after-trigger' to the
-;;     hook `redisplay-end-trigger-functions'.  Before every deletion, the
-;;     marker `window-redisplay-end-trigger' position is set to the soon-to-be
-;;     changed `window-end' position.  If the marker becomes visible,
-;;     `lazy-lock-fontify-after-trigger' gets called.  Ouch.  Note that we only
-;;     have to deal with this eventuality if there is no on-the-fly deferral.
-
-(defun lazy-lock-arrange-before-change (beg end)
-  ;; Called from `before-change-functions'.
-  ;; Arrange that if text becomes visible it will be fontified (if a deletion
-  ;; is pending, text might become visible at the bottom).
-  (unless (eq beg end)
-    (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)) window)
-      (while windows
-	(setq window (car windows))
-	(unless (markerp (window-redisplay-end-trigger window))
-	  (set-window-redisplay-end-trigger window (make-marker)))
-	(set-marker (window-redisplay-end-trigger window) (window-end window))
-	(setq windows (cdr windows))))))
-
-(defun lazy-lock-fontify-after-trigger (window trigger-point)
-  ;; Called from `redisplay-end-trigger-functions'.
-  ;; Fontify WINDOW from TRIGGER-POINT following the redisplay.
-  ;; We could probably just use `lazy-lock-fontify-after-scroll' without loss:
-  ;;  (inline (lazy-lock-fontify-after-scroll window (window-start window)))
-  (let ((inhibit-point-motion-hooks t))
-    (lazy-lock-fontify-region trigger-point (window-end window t))))
-
-;; 2.  Modified text must be marked as unfontified so it can be identified and
-;;     fontified later when Emacs is idle.  Deferral occurs by adding one of
-;;     `lazy-lock-fontify-*-after-change' (for on-the-fly fontification) or
-;;     `lazy-lock-defer-*-after-change' (for deferred fontification) to the
-;;     hook `after-change-functions'.
-
-(defalias 'lazy-lock-fontify-line-after-change
-  ;; Called from `after-change-functions'.
-  ;; Fontify the current change.
-  'font-lock-after-change-function)
-
-(defun lazy-lock-fontify-rest-after-change (beg end old-len)
-  ;; Called from `after-change-functions'.
-  ;; Fontify the current change and defer fontification of the rest of the
-  ;; buffer.  Save the current buffer so that we subsequently fontify in all
-  ;; windows showing the buffer.
-  (lazy-lock-fontify-line-after-change beg end old-len)
-  (save-buffer-state nil
-    (unless (memq (current-buffer) lazy-lock-buffers)
-      (push (current-buffer) lazy-lock-buffers))
-    (save-restriction
-      (widen)
-      (remove-text-properties end (point-max) '(lazy-lock nil)))))
-
-(defun lazy-lock-defer-line-after-change (beg end old-len)
-  ;; Called from `after-change-functions'.
-  ;; Defer fontification of the current change.  Save the current buffer so
-  ;; that we subsequently fontify in all windows showing the buffer.
-  (save-buffer-state nil
-    (unless (memq (current-buffer) lazy-lock-buffers)
-      (push (current-buffer) lazy-lock-buffers))
-    (remove-text-properties (max (1- beg) (point-min))
-			    (min (1+ end) (point-max))
-			    '(lazy-lock nil))))
-
-(defun lazy-lock-defer-rest-after-change (beg end old-len)
-  ;; Called from `after-change-functions'.
-  ;; Defer fontification of the rest of the buffer.  Save the current buffer so
-  ;; that we subsequently fontify in all windows showing the buffer.
-  (save-buffer-state nil
-    (unless (memq (current-buffer) lazy-lock-buffers)
-      (push (current-buffer) lazy-lock-buffers))
-    (save-restriction
-      (widen)
-      (remove-text-properties (max (1- beg) (point-min))
-			      (point-max)
-			      '(lazy-lock nil)))))
-
-;; 3.  Deferred fontification and stealth fontification are done from these two
-;;     functions.  They are set up as Idle Timers.
-
-(defun lazy-lock-fontify-after-defer ()
-  ;; Called from `timer-idle-list'.
-  ;; Fontify all windows where deferral has occurred for its buffer.
-  (save-excursion
-    (while (and lazy-lock-buffers (not (input-pending-p)))
-      (let ((buffer (car lazy-lock-buffers)) windows)
-	;; Paranoia: check that the buffer is still live and Lazy Lock mode on.
-	(when (buffer-live-p buffer)
-	  (set-buffer buffer)
-	  (when lazy-lock-mode
-	    (setq windows (get-buffer-window-list buffer 'nomini t))
-	    (while windows
-	      (lazy-lock-fontify-window (car windows))
-	      (setq windows (cdr windows)))))
-	(setq lazy-lock-buffers (cdr lazy-lock-buffers)))))
-  ;; Add hook if fontification should now be defer-driven in this buffer.
-  (when (and lazy-lock-mode lazy-lock-defer-on-scrolling
-	     (memq 'lazy-lock-fontify-after-scroll window-scroll-functions)
-	     (not (or (input-pending-p) (lazy-lock-unfontified-p))))
-    (remove-hook 'window-scroll-functions 'lazy-lock-fontify-after-scroll t)
-    (add-hook 'window-scroll-functions 'lazy-lock-defer-after-scroll nil t)))
-
-(defun lazy-lock-fontify-after-idle ()
-  ;; Called from `timer-idle-list'.
-  ;; Fontify all buffers that need it, stealthily while idle.
-  (unless (or executing-kbd-macro (window-minibuffer-p (selected-window)))
-    ;; Loop over all buffers, fontify stealthily for each if necessary.
-    (let ((buffers (buffer-list)) (continue t)
-	  message message-log-max minibuffer-auto-raise)
-      (save-excursion
-	(do-while (and buffers continue)
-	  (set-buffer (car buffers))
-	  (if (not (and lazy-lock-mode (lazy-lock-unfontified-p)))
-	      (setq continue (not (input-pending-p)))
-	    ;; Fontify regions in this buffer while there is no input.
-	    (with-temp-message
-		(when lazy-lock-stealth-verbose
-		  "Fontifying stealthily...")
-	      (do-while (and (lazy-lock-unfontified-p) continue)
-		(if (and lazy-lock-stealth-load
-			 (> (car (load-average)) lazy-lock-stealth-load))
-		    ;; Wait a while before continuing with the loop.
-		    (progn
-		      (when message
-			(message "Fontifying stealthily...suspended")
-			(setq message nil))
-		      (setq continue (sit-for (or lazy-lock-stealth-time 30))))
-		  ;; Fontify a chunk.
-		  (when lazy-lock-stealth-verbose
-		    (if message
-			(message "Fontifying stealthily... %2d%% of %s"
-				 (lazy-lock-percent-fontified) (buffer-name))
-		      (message "Fontifying stealthily...")
-		      (setq message t)))
-		  ;; Current buffer may have changed during `sit-for'.
-		  (set-buffer (car buffers))
-		  (lazy-lock-fontify-chunk)
-		  (setq continue (sit-for (or lazy-lock-stealth-nice 0)))))))
-	  (setq buffers (cdr buffers)))))))
-
-;; 4.  Special circumstances.
-
-(defun lazy-lock-fontify-after-visage ()
-  ;; Called from `outline-view-change-hook' and `hs-hide-hook'.
-  ;; Fontify windows showing the current buffer, as its visibility has changed.
-  ;; This is a conspiracy hack between lazy-lock.el, outline.el and
-  ;; hideshow.el.
-  (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)))
-    (while windows
-      (lazy-lock-fontify-conservatively (car windows))
-      (setq windows (cdr windows)))))
-
-(defun lazy-lock-after-fontify-buffer ()
-  ;; Called from `font-lock-after-fontify-buffer'.
-  ;; Mark the current buffer as fontified.
-  ;; This is a conspiracy hack between lazy-lock.el and font-lock.el.
-  (save-buffer-state nil
-    (add-text-properties (point-min) (point-max) '(lazy-lock t))))
-
-(defun lazy-lock-after-unfontify-buffer ()
-  ;; Called from `font-lock-after-unfontify-buffer'.
-  ;; Mark the current buffer as unfontified.
-  ;; This is a conspiracy hack between lazy-lock.el and font-lock.el.
-  (save-buffer-state nil
-    (remove-text-properties (point-min) (point-max) '(lazy-lock nil))))
-
-;; Fontification functions.
-
-;; If packages want to ensure that some region of the buffer is fontified, they
-;; should use this function.  For an example, see ps-print.el.
-(defun lazy-lock-fontify-region (beg end)
-  ;; Fontify between BEG and END, where necessary, in the current buffer.
-  (save-restriction
-    (widen)
-    (when (setq beg (text-property-any beg end 'lazy-lock nil))
-      (save-excursion
-	(save-match-data
-	  (save-buffer-state
-	   ;; Ensure syntactic fontification is always correct.
-	   (font-lock-beginning-of-syntax-function next)
-	   ;; Find successive unfontified regions between BEG and END.
-	   (condition-case data
-	       (do-while beg
-			 (setq next (or (text-property-any beg end 'lazy-lock t) end))
-	  ;; Make sure the region end points are at beginning of line.
-			 (goto-char beg)
-			 (unless (bolp)
-			   (beginning-of-line)
-			   (setq beg (point)))
-			 (goto-char next)
-			 (unless (bolp)
-			   (forward-line)
-			   (setq next (point)))
-		     ;; Fontify the region, then flag it as fontified.
-			 (font-lock-fontify-region beg next)
-			 (add-text-properties beg next '(lazy-lock t))
-			 (setq beg (text-property-any next end 'lazy-lock nil)))
-	     ((error quit) (message "Fontifying region...%s" data)))))))))
-
-(defun lazy-lock-fontify-chunk ()
-  ;; Fontify the nearest chunk, for stealth, in the current buffer.
-  (let ((inhibit-point-motion-hooks t))
-    (save-excursion
-      (save-restriction
-	(widen)
-	;; Move to end of line in case the character at point is not fontified.
-	(end-of-line)
-	;; Find where the previous (next) unfontified regions end (begin).
-	(let ((prev (previous-single-property-change (point) 'lazy-lock))
-	      (next (text-property-any (point) (point-max) 'lazy-lock nil)))
-	  ;; Fontify from the nearest unfontified position.
-	  (if (or (null prev) (and next (< (- next (point)) (- (point) prev))))
-	      ;; The next, or neither, region is the nearest not fontified.
-	      (lazy-lock-fontify-region
-	       (progn (goto-char (or next (point-min)))
-		      (beginning-of-line)
-		      (point))
-	       (progn (goto-char (or next (point-min)))
-		      (forward-line lazy-lock-stealth-lines)
-		      (point)))
-	    ;; The previous region is the nearest not fontified.
-	    (lazy-lock-fontify-region
-	     (progn (goto-char prev)
-		    (forward-line (- lazy-lock-stealth-lines))
-		    (point))
-	     (progn (goto-char prev)
-		    (forward-line)
-		    (point)))))))))
-
-(defun lazy-lock-fontify-window (window)
-  ;; Fontify in WINDOW between `window-start' and `window-end'.
-  ;; We can only do this when we can use `window-start' and `window-end'.
-  (with-current-buffer (window-buffer window)
-    (lazy-lock-fontify-region (window-start window) (window-end window))))
-
-(defun lazy-lock-fontify-conservatively (window)
-  ;; Fontify in WINDOW conservatively around point.
-  ;; Where we cannot use `window-start' and `window-end' we do `window-height'
-  ;; lines around point.  That way we guarantee to have done enough.
-  (with-current-buffer (window-buffer window)
-    (let ((inhibit-point-motion-hooks t))
-      (lazy-lock-fontify-region
-       (save-excursion
-	 (goto-char (window-point window))
-	 (vertical-motion (- (window-height window)) window) (point))
-       (save-excursion
-	 (goto-char (window-point window))
-	 (vertical-motion (window-height window) window) (point))))))
-
-(defun lazy-lock-unfontified-p ()
-  ;; Return non-nil if there is anywhere still to be fontified.
-  (save-restriction
-    (widen)
-    (text-property-any (point-min) (point-max) 'lazy-lock nil)))
-
-(defun lazy-lock-percent-fontified ()
-  ;; Return the percentage (of characters) of the buffer that are fontified.
-  (save-restriction
-    (widen)
-    (let ((beg (point-min)) (size 0) next)
-      ;; Find where the next fontified region begins.
-      (while (setq beg (text-property-any beg (point-max) 'lazy-lock t))
-	(setq next (or (text-property-any beg (point-max) 'lazy-lock nil)
-		       (point-max)))
-	(incf size (- next beg))
-	(setq beg next))
-      ;; Float because using integer multiplication will frequently overflow.
-      (truncate (* (/ (float size) (point-max)) 100)))))
-
-;; Version dependent workarounds and fixes.
-
-(when (consp lazy-lock-defer-time)
-  ;;
-  ;; In 2.06.04 and below, `lazy-lock-defer-time' could specify modes and time.
-  (with-output-to-temp-buffer "*Help*"
-    (princ "The value of the variable `lazy-lock-defer-time' was\n ")
-    (princ lazy-lock-defer-time)
-    (princ "\n")
-    (princ "This variable cannot now be a list of modes and time,\n")
-    (princ "so instead use ")
-    (princ (substitute-command-keys "\\[customize-option]"))
-    (princ " to modify the variables, or put the forms:\n")
-    (princ " (setq lazy-lock-defer-time ")
-    (princ (cdr lazy-lock-defer-time))
-    (princ ")\n")
-    (princ " (setq lazy-lock-defer-on-the-fly '")
-    (princ (car lazy-lock-defer-time))
-    (princ ")\n")
-    (princ "in your ~/.emacs.  ")
-    (princ "The above forms have been evaluated for this editor session,\n")
-    (princ "but you should use ")
-    (princ (substitute-command-keys "\\[customize-option]"))
-    (princ " or change your ~/.emacs now."))
-  (setq lazy-lock-defer-on-the-fly (car lazy-lock-defer-time)
-	lazy-lock-defer-time (cdr lazy-lock-defer-time)))
-
-(when (boundp 'lazy-lock-defer-driven)
-  ;;
-  ;; In 2.06.04 and below, `lazy-lock-defer-driven' was the variable name.
-  (with-output-to-temp-buffer "*Help*"
-    (princ "The value of the variable `lazy-lock-defer-driven' is set to ")
-    (if (memq lazy-lock-defer-driven '(nil t))
-	(princ lazy-lock-defer-driven)
-      (princ "`")
-      (princ lazy-lock-defer-driven)
-      (princ "'"))
-    (princ ".\n")
-    (princ "This variable is now called `lazy-lock-defer-on-scrolling',\n")
-    (princ "so instead use ")
-    (princ (substitute-command-keys "\\[customize-option]"))
-    (princ " to modify the variable, or put the form:\n")
-    (princ " (setq lazy-lock-defer-on-scrolling ")
-    (unless (memq lazy-lock-defer-driven '(nil t))
-      (princ "'"))
-    (princ lazy-lock-defer-driven)
-    (princ ")\n")
-    (princ "in your ~/.emacs.  ")
-    (princ "The above form has been evaluated for this editor session,\n")
-    (princ "but you should use ")
-    (princ (substitute-command-keys "\\[customize-option]"))
-    (princ " or change your ~/.emacs now."))
-  (setq lazy-lock-defer-on-scrolling lazy-lock-defer-driven))
-
-;; Install ourselves:
-
-(add-hook 'window-size-change-functions 'lazy-lock-fontify-after-resize)
-(add-hook 'redisplay-end-trigger-functions 'lazy-lock-fontify-after-trigger)
-
-(unless (assq 'lazy-lock-mode minor-mode-alist)
-  (setq minor-mode-alist (append minor-mode-alist '((lazy-lock-mode nil)))))
-
-;; Provide ourselves:
-
-(provide 'lazy-lock)
-
-;;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9
-;;; lazy-lock.el ends here
--- a/lisp/longlines.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/longlines.el	Sat Apr 09 02:16:29 2005 +0000
@@ -101,7 +101,7 @@
 
 If `longlines-show-hard-newlines' is non-nil, hard newlines will
 be marked by a symbol."
-  nil " ll" nil
+  :group 'longlines :lighter " ll"
   (if longlines-mode
       ;; Turn on longlines mode
       (progn
--- a/lisp/mail/supercite.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/mail/supercite.el	Sat Apr 09 02:16:29 2005 +0000
@@ -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 ()
--- a/lisp/master.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/master.el	Sat Apr 09 02:16:29 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/mh-e/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/mh-e/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,8 @@
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* mh-customize.el (mh-speedbar-selected-folder-face): Special case
+	high number of colors displays.
+
 2005-03-25  Werner Lemberg  <wl@gnu.org>
 
 	* mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with `valid'.
@@ -85,18 +90,18 @@
 2004-08-15  Bill Wohler  <wohler@newt.com>
 
 	* Released MH-E version 7.4.80.
-     
+
 	* MH-E-NEWS, README: Updated for release 7.4.80.
-     
+
 	* mh-e.el (Version, mh-version): Updated for release 7.4.80.
-	
+
 2004-08-15  Bill Wohler  <wohler@newt.com>
 
 	* mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el,
 	mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright.
 
 	* mh-acros.el, mh-alias.el: Checkdoc fixes.
-	
+
 2004-08-12  Satyaki Das  <satyaki@theforce.stanford.edu>
 
 	* mh-acros.el (cl): Load cl in this file. That is all right, since
@@ -130,7 +135,7 @@
 	do a good job of suppressing compilation warnings in 21.3 and CVS
 	Emacs (21.4). This replaces (require 'cl) or (require
 	'utils) (mh-require-cl) calls:
-	
+
 	  (eval-when-compile (require 'mh-acros))
           (mh-require-cl)
 
@@ -151,7 +156,7 @@
 
 	* mh-seq.el (mh-thread-message, mh-thread-container): Use
 	mh-defstruct instead of defstruct.
-	(mh-thread-id-container, mh-thread-get-message-container) 
+	(mh-thread-id-container, mh-thread-get-message-container)
 	(mh-thread-get-message): Use the slightly different structure
 	constructor function.
 
@@ -240,8 +245,8 @@
 	programs are run in background. Running in foreground can be slow.
 	Defaults to nil to spare machines with little memory.
 
-	* mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist) 
-	(mh-bogofilter-whitelist, mh-spamprobe-blacklist) 
+	* mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist)
+	(mh-bogofilter-whitelist, mh-spamprobe-blacklist)
 	(mh-spamprobe-whitelist): Use new option mh-junk-background.
 
 2004-07-25  Satyaki Das  <satyaki@theforce.stanford.edu>
@@ -266,7 +271,7 @@
 	* mh-customize.el (mh-invisible-header-fields-internal): Added
 	header fields emitted by T-Mobile picture phones (X-Mms-*, and
 	commented out X-Operator field saying it's like X-Mailer).
-	
+
 2004-07-12  Bill Wohler  <wohler@newt.com>
 
 	* mh-gnus.el: Set local variables indent-tabs-mode and
@@ -306,7 +311,7 @@
 
 	* mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info):
 	Prefer GNU mailutils over GNU Mailutils MH.
-	
+
 	* mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch)
 	(mh-edit-again, mh-extract-rejected-mail, mh-forward)
 	(mh-smail-other-window, mh-reply, mh-send, mh-send-other-window):
@@ -325,8 +330,8 @@
 	* MH-E-NEWS, README: Updated for release 7.4.4.
 
 	* mh-e.el (Version, mh-version): Updated for release 7.4.4.
-	
-	* This patch release contains the following patches:
+
+	This patch release contains the following patches:
 
 	* mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el
 	and mh-xemacs-icons.el which were removed since their names
@@ -390,9 +395,9 @@
 	(require 'mouse): To shush compiler.
 
 	* Use new function mh-require-cl throughout.
-	
+
 	* Add arch taglines (courtesy Miles Bader).
-	
+
 	* mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and
 	mh-xemacs-icons.el with mh-xemacs.el.
 
@@ -409,10 +414,10 @@
 
 2004-07-07  Stephen Gildea
 
-	* mh-customize.el (mh-invisible-header-fields-internal): 
+	* mh-customize.el (mh-invisible-header-fields-internal):
 	Add X-Greylist, X-Source*, and X-WebTV-Signature.
 	Replace specific X-Spam-* headers with general pattern.
-	
+
 2004-06-15  Bill Wohler  <wohler@newt.com>
 
 	* README: Vladimir Ivanovic reports that mh-rmail works with
@@ -438,7 +443,7 @@
 
 2004-04-07  Satyaki Das  <satyaki@theforce.stanford.edu>
 
-	* mh-mime.el (mh-insert-mime-button) 
+	* mh-mime.el (mh-insert-mime-button)
 	(mh-insert-mime-security-button): Add evaporate property to
 	overlays used in MIME part buttons.  This avoids problems with
 	CVS Emacs.
@@ -459,10 +464,10 @@
 
 2003-12-26  Jeffrey C Honig  <jch@honig.net>
 
-	* mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) 
-	(mh-spamassassin-blacklist, mh-spamassassin-blacklist) 
-	(mh-spamassassin-blacklist, mh-spamassassin-whitelist) 
-	(mh-spamassassin-whitelist, mh-bogofilter-blacklist) 
+	* mh-junk.el (mh-junk-blacklist, mh-junk-whitelist)
+	(mh-spamassassin-blacklist, mh-spamassassin-blacklist)
+	(mh-spamassassin-blacklist, mh-spamassassin-whitelist)
+	(mh-spamassassin-whitelist, mh-bogofilter-blacklist)
 	(mh-spamprobe-blacklist): Add progress messages.  Change "Couldn't"
 	to "Unable" in error messages.  Run bogofilter and spamprobe in
 	the foreground to prevent a large number of processes from
@@ -536,9 +541,9 @@
 	* MH-E-NEWS, README: Updated for release 7.4.3.
 
 	* mh-e.el (Version, mh-version): Updated for release 7.4.3.
-	
+
 	* This patch release contains the following two patches:
-	
+
 	* mh-identity.el (mh-identity-make-menu): Removed condition on
 	mh-auto-fields-list. Use it to enable or disable menu item
 	instead.
@@ -576,10 +581,10 @@
 
 2003-11-14  Mark D. Baushke  <mdb@gnu.org>
 
-	* mh-customize.el (mh-invisible-header-fields-internal): 
+	* mh-customize.el (mh-invisible-header-fields-internal):
 	Add X-AntiAbuse and X-MailScanner.
 	(Patch from Stephen Gildea.)
-	
+
 2003-11-13  Peter S Galbraith  <psg@debian.org>
 
 	* mh-identity.el (mh-identity-handler-attribution-verb): New
@@ -689,14 +694,14 @@
 
 2003-11-02  Jeffrey C Honig  <jch@honig.net>
 
-	* mh-loaddefs.el: Regenerated.	
+	* mh-loaddefs.el: Regenerated.
 
 	* mh-funcs.el (mh-print-msg): Move to mh-print.el.
 
 	* mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it
 	will print a message that this usage is deprecated.
 
-	* mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file): 
+	* mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file):
 	Require mh-funcs for mh-note-printed.  PS print functions were not
 	setting the printed notation.  Move mh-print-msg here for
 	consistency.  Print message if mh-print-msg invoked via deprecated
@@ -790,7 +795,7 @@
 	(custom-load.elc): Allow for '-no-autoloads'.
 	(compile-xemacs): New.  It allows for the '-no-autoloads' option
 	and byte-compiles all the source files with a single instance of
-	XEmacs. 
+	XEmacs.
 
 	* mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if
 	toolbar support is available.
@@ -874,7 +879,7 @@
 2003-10-09  Peter S Galbraith  <psg@debian.org>
 
 	* mh-customize.el (mail-citation-hook): Moved from mh-comp.el and
-	made into a defcustom. 
+	made into a defcustom.
 
 2003-10-09  Satyaki Das  <satyakid@stanford.edu>
 
@@ -938,10 +943,10 @@
 	parenthetical comment.
 
 	* mh-loaddefs.el: Regenerated.
-	
+
 	* mh-customize.el (mh-mml-method-default): What method should be
 	used in secure directives.
-	
+
 	* mh-mime.el (mh-secure-message): New function used to generate
 	the mml security tags.
 	(mh-mml-unsecure-message): New wrapper function around
@@ -1061,7 +1066,7 @@
 
 	* mh-customize.el (mh-identity-handlers): New defcustom.  Alist of
 	Handler functions for mh-identity (downcased) fields.
-	(mh-identity-list): Add support for pgg-default-user-id.	
+	(mh-identity-list): Add support for pgg-default-user-id.
 
 	* mh-identity.el (mh-insert-identity): Modified to use
 	`mh-identity-handlers', adding hacking flexibility for those who
@@ -1084,7 +1089,7 @@
 	(mh-header-field-delete): Make more robust wrt the field having a
 	trailing colon or not.
 	(mh-identity-make-menu): Add a "Customize Identities" menu entry.
-	
+
 	* mh-loaddefs.el: Regenerated.
 
 2003-09-21  Peter S Galbraith  <psg@debian.org>
@@ -1093,7 +1098,7 @@
 	with version numbers.
 
 	* mh-e.el (mh-scan-format): patch from Sergey Poznyakoff.
-	GNU mailutils now supports the %(decode) format 
+	GNU mailutils now supports the %(decode) format
 
 2003-09-20  Satyaki Das  <satyakid@stanford.edu>
 
@@ -1422,7 +1427,7 @@
 	* mh-utils.el (mh-find-path): Run setup code only if
 	`mh-find-path-run' is nil such that this is only done once.
 	Also remove the `setq' for `read-mail-command' and `mail-user-agent'.
-	
+
 2003-08-18  Peter S Galbraith  <psg@debian.org>
 
 	* mh-e.el: require 'mh-utils first
@@ -1441,16 +1446,16 @@
 	(mh-path-search): Deleted.  Was only used by `mh-find-progs'.
 
 	* mh-e.el: require mh-init.el.
-	(mh-version): Use simpler `mh-variant-in-use'.	
+	(mh-version): Use simpler `mh-variant-in-use'.
 	(mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
 
 	* mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'.
 
-	* mh-utils.el (mh-progs, mh-lib, mh-lib-progs) 
+	* mh-utils.el (mh-progs, mh-lib, mh-lib-progs)
 	(mh-flists-present-flag): Moved to mh-init.el.
 	(mh-nmh-flag): Deleted.  Use (mh-variant-p 'nmh) instead.
 
-	* mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply) 
+	* mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply)
 	(mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
 
 	* mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p
@@ -1484,7 +1489,7 @@
 	(mh-variant-in-use, mh-variant-p): Developers may check which
         variant is currently in use with the variable `mh-variant-in-use'
         or the function `mh-variant-p'.
-	
+
 2003-08-15  Bill Wohler  <wohler@newt.com>
 
 	* mh-customize.el (mh-auto-fields-list): The manual uses Fcc
@@ -1653,7 +1658,7 @@
 
 	* mh-identity.el (mh-insert-identity): Refactor to use
 	mh-insert-signature
-	
+
 	* mh-comp.el (mh-signature-separator-p): Removed.
 
 	* mh-comp.el (mh-insert-signature): Merge MIME awareness from
@@ -1724,8 +1729,8 @@
 	* mh-funcs.el (mh-undo-folder): Ditto.
 
 	* mh-mime.el (mh-mime-save-parts): Ditto.
-	
-	* mh-seq.el (mh-subject-to-sequence-unthreaded) 
+
+	* mh-seq.el (mh-subject-to-sequence-unthreaded)
 	(mh-narrow-to-subject, mh-delete-subject): Ditto.
 
 	* mh-index.el (mh-index-sequenced-messages)
@@ -2021,7 +2026,7 @@
 	(mh-unit-equal): New function that throws an error if RESULT
 	doesn't equal EXPECTED.
 	(mh-unit): Call mh-unit-x-image-url-cache-canonicalize.
-	
+
 2003-07-29  Satyaki Das  <satyakid@stanford.edu>
 
 	* mh-unit.el (mh-unit-update-call-graph): Make the function work
@@ -2159,10 +2164,10 @@
 	hoping to quote the hint `t' but checkdoc wouldn't let me.
 	(mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan
 	Line Formats section.
-	(mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp) 
-	(mh-scan-refiled-msg-regexp, mh-scan-valid-regexp) 
-	(mh-scan-cur-msg-number-regexp, mh-scan-date-regexp) 
-	(mh-scan-rcpt-regexp, mh-scan-body-regexp) 
+	(mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp)
+	(mh-scan-refiled-msg-regexp, mh-scan-valid-regexp)
+	(mh-scan-cur-msg-number-regexp, mh-scan-date-regexp)
+	(mh-scan-rcpt-regexp, mh-scan-body-regexp)
 	(mh-scan-subject-regexp, mh-scan-format-regexp): Cleaned
 	up docstrings (changed phrases to sentences).
 	(mh-scan-cur-msg-regexp): Marked this variable as obsolete; it
@@ -2350,7 +2355,7 @@
 	* mh-utils.el (mh-replace-in-string): New function name instead of
 	`dired-replace-in-string'.
 	* mh-alias.el (mh-alias-gcos-name): Use it.
-	
+
 	* mh-alias.el (mh-alias-apropos): New command. Show all aliases
 	that match REGEXP either in name or content.
 
@@ -2374,7 +2379,7 @@
 2003-06-02  Peter S Galbraith  <psg@debian.org>
 
 	* mh-utils.el (dired-replace-in-string): Bind if not already
-	defined.  Borrowed from dired.el 
+	defined.  Borrowed from dired.el
 
 	* mh-alias.el (mh-alias-gcos-name): switch to using
 	dired-replace-in-string.
@@ -2425,7 +2430,7 @@
 	second time.  I have wrapped the value around \b word delimiters.
 	Hope there are no side effects for other code.
 
-	* mh-comp.el (mh-insert-auto-fields): Attempt regardless of 
+	* mh-comp.el (mh-insert-auto-fields): Attempt regardless of
 	`mh-insert-auto-fields-done-local' flag in interactive use.
 
 	* mh-comp.el (mh-insert-auto-fields-done-local): Keep track of
@@ -3153,7 +3158,7 @@
 	* mh-e.el (mh-folder-map): Add "F'" to the map for
 	mh-index-ticked-messages.
 	(mh-help-messages): Replace broken [t]hread with [n]ew messages.
-	
+
 	* mh-customize.el (mh-index-ticked-messages-folders): New user
 	customizable flag that controls the folders to be searched by
 	mh-index-ticked-messages.
@@ -3224,7 +3229,7 @@
 	* mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has
 	been updated to handle multiple-line copyrights in 21.3, so
 	updated code to run lm-verify only if user has 21.3 or greater.
-	Delete buffers after use, unless user already had buffer open.	
+	Delete buffers after use, unless user already had buffer open.
 
 2003-04-27  Satyaki Das  <satyakid@stanford.edu>
 
@@ -3433,7 +3438,7 @@
 	'mh-customize'.
 
 	* mh-customize.el: Require 'mh-xemacs-icons' instead of
-	'mh-xemacs-toolbar'. 
+	'mh-xemacs-toolbar'.
 
 2003-04-17  Peter S Galbraith  <psg@debian.org>
 
@@ -10928,9 +10933,9 @@
 	$(EMACS_HOME)/src.
 	(dist): Leave release in current directory.
 
- 
-Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-	
+
+Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
 notice and this notice are preserved.
--- a/lisp/mh-e/mh-customize.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/mh-e/mh-customize.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; mh-customize.el --- MH-E customization
 
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Bill Wohler <wohler@newt.com>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -2345,9 +2345,9 @@
 
 (defface mh-speedbar-selected-folder-face
   '((((class color) (background light))
-     (:foreground "red" :underline t))
+     (:foreground "red1" :underline t))
     (((class color) (background dark))
-     (:foreground "red" :underline t))
+     (:foreground "red1" :underline t))
     (t (:underline t)))
   "Face used for the current folder."
   :group 'mh-speed-faces)
--- a/lisp/mouse.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/mouse.el	Sat Apr 09 02:16:29 2005 +0000
@@ -788,8 +788,7 @@
 A clickable link is identified by one of the following methods:
 
 - If the character at POS has a non-nil `follow-link' text or
-overlay property, use the value of that property determines what
-to do.
+overlay property, the value of that property determines what to do.
 
 - If there is a local key-binding or a keybinding at position POS
 for the `follow-link' event, the binding of that event determines
--- a/lisp/msb.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/msb.el	Sat Apr 09 02:16:29 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/fast-lock.el	Sat Apr 09 02:16:29 2005 +0000
@@ -0,0 +1,863 @@
+;;; fast-lock.el --- automagic text properties caching for fast Font Lock mode
+
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+;; Author: Simon Marshall <simon@gnu.org>
+;; Maintainer: FSF
+;; Keywords: faces files
+;; Version: 3.14
+
+;; 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:
+
+;; Fast Lock mode is a Font Lock support mode.
+;; It makes visiting a file in Font Lock mode faster by restoring its face text
+;; properties from automatically saved associated Font Lock cache files.
+;;
+;; See caveats and feedback below.
+;; See also the lazy-lock package.  (But don't use the two at the same time!)
+
+;; Installation:
+;;
+;; Put in your ~/.emacs:
+;;
+;; (setq font-lock-support-mode 'fast-lock-mode)
+;;
+;; Start up a new Emacs and use font-lock as usual (except that you can use the
+;; so-called "gaudier" fontification regexps on big files without frustration).
+;;
+;; When you visit a file (which has `font-lock-mode' enabled) that has a
+;; corresponding Font Lock cache file associated with it, the Font Lock cache
+;; will be loaded from that file instead of being generated by Font Lock code.
+
+;; Caveats:
+;;
+;; A cache will be saved when visiting a compressed file using crypt++, but not
+;; be read.  This is a "feature"/"consequence"/"bug" of crypt++.
+;;
+;; Version control packages are likely to stamp all over file modification
+;; times.  Therefore the act of checking out may invalidate a cache.
+
+;; History:
+;;
+;; 0.02--1.00:
+;; - Changed name from turbo-prop to fast-lock.  Automagic for font-lock only
+;; - Made `fast-lock-mode' a minor mode, like G. Dinesh Dutt's fss-mode
+;; 1.00--1.01:
+;; - Turn on `fast-lock-mode' only if `buffer-file-name' or `interactive-p'
+;; - Made `fast-lock-file-name' use `buffer-name' if `buffer-file-name' is nil
+;; - Moved save-all conditions to `fast-lock-save-cache'
+;; - Added `fast-lock-save-text-properties' to `kill-buffer-hook'
+;; 1.01--2.00: complete rewrite---not worth the space to document
+;; - Changed structure of text properties cache and threw out file mod checks
+;; 2.00--2.01:
+;; - Made `condition-case' forms understand `quit'.
+;; - Made `fast-lock' require `font-lock'
+;; - Made `fast-lock-cache-name' chase links (from Ben Liblit)
+;; 2.01--3.00:
+;; - Changed structure of cache to include `font-lock-keywords' (from rms)
+;; - Changed `fast-lock-cache-mechanisms' to `fast-lock-cache-directories'
+;; - Removed `fast-lock-read-others'
+;; - Made `fast-lock-read-cache' ignore cache owner
+;; - Made `fast-lock-save-cache-external' create cache directory
+;; - Made `fast-lock-save-cache-external' save `font-lock-keywords'
+;; - Made `fast-lock-cache-data' check `font-lock-keywords'
+;; 3.00--3.01: incorporated port of 2.00 to Lucid, made by Barry Warsaw
+;; - Package now provides itself
+;; - Lucid: Use `font-lock-any-extents-p' for `font-lock-any-properties-p'
+;; - Lucid: Use `list-faces' for `face-list'
+;; - Lucid: Added `set-text-properties'
+;; - Lucid: Made `turn-on-fast-lock' pass 1 not t to `fast-lock-mode'
+;; - Removed test for `fast-lock-mode' from `fast-lock-read-cache'
+;; - Lucid: Added Lucid-specific `fast-lock-get-face-properties'
+;; 3.01--3.02: now works with Lucid Emacs, thanks to Barry Warsaw
+;; - Made `fast-lock-cache-name' map ":" to ";" for OS/2 (from Serganova Vera)
+;; - Made `fast-lock-cache-name' use abbreviated file name (from Barry Warsaw)
+;; - Lucid: Separated handlers for `error' and `quit' for `condition-case'
+;; 3.02--3.03:
+;; - Changed `fast-lock-save-cache-external' to `fast-lock-save-cache-data'
+;; - Lucid: Added Lucid-specific `fast-lock-set-face-properties'
+;; 3.03--3.04:
+;; - Corrected `subrp' test of Lucid code
+;; - Replaced `font-lock-any-properties-p' with `text-property-not-all'
+;; - Lucid: Made `fast-lock-set-face-properties' put `text-prop' on extents
+;; - Made `fast-lock-cache-directories' a regexp alist (from Colin Rafferty)
+;; - Made `fast-lock-cache-directory' to return a usable cache file directory
+;; 3.04--3.05:
+;; - Lucid: Fix for XEmacs 19.11 `text-property-not-all'
+;; - Replaced `subrp' test of Lucid code with `emacs-version' `string-match'
+;; - Made `byte-compile-warnings' omit `unresolved' on compilation
+;; - Made `fast-lock-save-cache-data' use a buffer (from Rick Sladkey)
+;; - Reverted to old `fast-lock-get-face-properties' (from Rick Sladkey)
+;; 3.05--3.06: incorporated hack of 3.03, made by Jonathan Stigelman (Stig)
+;; - Reverted to 3.04 version of `fast-lock-get-face-properties'
+;; - XEmacs: Removed `list-faces' `defalias'
+;; - Made `fast-lock-mode' and `turn-on-fast-lock' succeed `autoload' cookies
+;; - Added `fast-lock-submit-bug-report'
+;; - Renamed `fast-lock-save-size' to `fast-lock-minimum-size'
+;; - Made `fast-lock-save-cache' output a message if no save ever attempted
+;; - Made `fast-lock-save-cache-data' output a message if save attempted
+;; - Made `fast-lock-cache-data' output a message if load attempted
+;; - Made `fast-lock-save-cache-data' do `condition-case' not `unwind-protect'
+;; - Made `fast-lock-save-cache' and `fast-lock-read-cache' return nothing
+;; - Made `fast-lock-save-cache' check `buffer-modified-p' (Stig)
+;; - Added `fast-lock-save-events'
+;; - Added `fast-lock-after-save-hook' to `after-save-hook' (Stig)
+;; - Added `fast-lock-kill-buffer-hook' to `kill-buffer-hook'
+;; - Changed `fast-lock-save-caches' to `fast-lock-kill-emacs-hook'
+;; - Added `fast-lock-kill-emacs-hook' to `kill-emacs-hook'
+;; - Made `fast-lock-save-cache' check `verify-visited-file-modtime' (Stig)
+;; - Made `visited-file-modtime' be the basis of the timestamp (Stig)
+;; - Made `fast-lock-save-cache-1' and `fast-lock-cache-data' use/reformat it
+;; - Added `fast-lock-cache-filename' to keep track of the cache file name
+;; - Added `fast-lock-after-fontify-buffer'
+;; - Added `fast-lock-save-faces' list of faces to save (idea from Stig/Tibor)
+;; - Made `fast-lock-get-face-properties' functions use it
+;; - XEmacs: Made `fast-lock-set-face-properties' do extents the Font Lock way
+;; - XEmacs: Removed fix for `text-property-not-all' (19.11 support dropped)
+;; - Made `fast-lock-mode' ensure `font-lock-mode' is on
+;; - Made `fast-lock-save-cache' do `cdr-safe' not `cdr' (from Dave Foster)
+;; - Made `fast-lock-save-cache' do `set-buffer' first (from Dave Foster)
+;; - Made `fast-lock-save-cache' loop until saved or quit (from Georg Nikodym)
+;; - Made `fast-lock-cache-data' check `buffer-modified-p'
+;; - Made `fast-lock-cache-data' do `font-lock-compile-keywords' if necessary
+;; - XEmacs: Made `font-lock-compile-keywords' `defalias'
+;; 3.06--3.07:
+;; - XEmacs: Add `fast-lock-after-fontify-buffer' to the Font Lock hook
+;; - Made `fast-lock-cache-name' explain the use of `directory-abbrev-alist'
+;; - Made `fast-lock-mode' use `buffer-file-truename' not `buffer-file-name'
+;; 3.07--3.08:
+;; - Made `fast-lock-read-cache' set `fast-lock-cache-filename'
+;; 3.08--3.09:
+;; - Made `fast-lock-save-cache' cope if `fast-lock-minimum-size' is an a list
+;; - Made `fast-lock-mode' respect the value of `font-lock-inhibit-thing-lock'
+;; - Added `fast-lock-after-unfontify-buffer'
+;; 3.09--3.10:
+;; - Rewrite for Common Lisp macros
+;; - Made fast-lock.el barf on a crap 8+3 pseudo-OS (Eli Zaretskii help)
+;; - XEmacs: Made `add-minor-mode' succeed `autoload' cookie
+;; - XEmacs: Made `fast-lock-save-faces' default to `font-lock-face-list'
+;; - Made `fast-lock-save-cache' use `font-lock-value-in-major-mode'
+;; - Wrap with `save-buffer-state' (Ray Van Tassle report)
+;; - Made `fast-lock-mode' wrap `font-lock-support-mode'
+;; 3.10--3.11:
+;; - Made `fast-lock-get-face-properties' cope with face lists
+;; - Added `fast-lock-verbose'
+;; - XEmacs: Add `font-lock-value-in-major-mode' if necessary
+;; - Removed `fast-lock-submit-bug-report' and bade farewell
+;; 3.11--3.12:
+;; - Added Custom support (Hrvoje Niksic help)
+;; - Made `save-buffer-state' wrap `inhibit-point-motion-hooks'
+;; - Made `fast-lock-cache-data' simplify calls of `font-lock-compile-keywords'
+;; 3.12--3.13:
+;; - Removed `byte-*' variables from `eval-when-compile' (Erik Naggum hint)
+;; - Changed structure of cache to include `font-lock-syntactic-keywords'
+;; - Made `fast-lock-save-cache-1' save syntactic fontification data
+;; - Made `fast-lock-cache-data' take syntactic fontification data
+;; - Added `fast-lock-get-syntactic-properties'
+;; - Renamed `fast-lock-set-face-properties' to `fast-lock-add-properties'
+;; - Made `fast-lock-add-properties' add syntactic and face fontification data
+;; 3.13--3.14:
+;; - Made `fast-lock-cache-name' cope with `windowsnt' (Geoff Voelker fix)
+;; - Made `fast-lock-verbose' use `other' widget (Andreas Schwab fix)
+;; - Used `with-temp-message' where possible to make messages temporary.
+
+;;; Code:
+
+(require 'font-lock)
+
+;; Make sure fast-lock.el is supported.
+(if (and (eq system-type 'ms-dos) (not (msdos-long-file-names)))
+    (error "`fast-lock' was written for long file name systems"))
+
+(eval-when-compile
+ ;;
+ ;; We don't do this at the top-level as we only use non-autoloaded macros.
+ (require 'cl)
+ ;;
+ ;; We use this to preserve or protect things when modifying text properties.
+ (defmacro save-buffer-state (varlist &rest body)
+   "Bind variables according to VARLIST and eval BODY restoring buffer state."
+   `(let* (,@(append varlist
+                     '((modified (buffer-modified-p)) (buffer-undo-list t)
+                       (inhibit-read-only t) (inhibit-point-motion-hooks t)
+                       before-change-functions after-change-functions
+                       deactivate-mark buffer-file-name buffer-file-truename)))
+     ,@body
+     (when (and (not modified) (buffer-modified-p))
+       (set-buffer-modified-p nil))))
+ (put 'save-buffer-state 'lisp-indent-function 1)
+ ;;
+ ;; We use this to verify that a face should be saved.
+ (defmacro fast-lock-save-facep (face)
+   "Return non-nil if FACE is one of `fast-lock-save-faces'."
+   `(or (null fast-lock-save-faces)
+     (if (symbolp ,face)
+         (memq ,face fast-lock-save-faces)
+         (let ((faces ,face))
+           (while (unless (memq (car faces) fast-lock-save-faces)
+                    (setq faces (cdr faces))))
+           faces))))
+ ;;
+ ;; We use this for compatibility with a future Emacs.
+ (or (fboundp 'with-temp-message)
+     (defmacro with-temp-message (message &rest body)
+       `(let ((temp-message ,message) current-message)
+         (unwind-protect
+              (progn
+                (when temp-message
+                  (setq current-message (current-message))
+                  (message temp-message))
+                ,@body)
+           (when temp-message
+             (message current-message))))))
+ ;;
+ ;; We use this for compatibility with a future Emacs.
+ (or (fboundp 'defcustom)
+     (defmacro defcustom (symbol value doc &rest args)
+       `(defvar ,symbol ,value ,doc))))
+
+;(defun fast-lock-submit-bug-report ()
+;  "Submit via mail a bug report on fast-lock.el."
+;  (interactive)
+;  (let ((reporter-prompt-for-summary-p t))
+;    (reporter-submit-bug-report "simon@gnu.org" "fast-lock 3.14"
+;     '(fast-lock-cache-directories fast-lock-minimum-size
+;       fast-lock-save-others fast-lock-save-events fast-lock-save-faces
+;       fast-lock-verbose)
+;     nil nil
+;     (concat "Hi Si.,
+;
+;I want to report a bug.  I've read the `Bugs' section of `Info' on Emacs, so I
+;know how to make a clear and unambiguous report.  To reproduce the bug:
+;
+;Start a fresh editor via `" invocation-name " -no-init-file -no-site-file'.
+;In the `*scratch*' buffer, evaluate:"))))
+
+(defvar fast-lock-mode nil)		; Whether we are turned on.
+(defvar fast-lock-cache-timestamp nil)	; For saving/reading.
+(defvar fast-lock-cache-filename nil)	; For deleting.
+
+;; User Variables:
+
+(defcustom fast-lock-minimum-size 25600
+  "*Minimum size of a buffer for cached fontification.
+Only buffers more than this can have associated Font Lock cache files saved.
+If nil, means cache files are never created.
+If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
+where MAJOR-MODE is a symbol or t (meaning the default).  For example:
+ ((c-mode . 25600) (c++-mode . 25600) (rmail-mode . 1048576))
+means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
+for buffers in Rmail mode, and size is irrelevant otherwise."
+  :type '(choice (const :tag "none" nil)
+		 (integer :tag "size")
+		 (repeat :menu-tag "mode specific" :tag "mode specific"
+			 :value ((t . nil))
+			 (cons :tag "Instance"
+			       (radio :tag "Mode"
+				      (const :tag "all" t)
+				      (symbol :tag "name"))
+			       (radio :tag "Size"
+				      (const :tag "none" nil)
+				      (integer :tag "size")))))
+  :group 'fast-lock)
+
+(defcustom fast-lock-cache-directories '("." "~/.emacs-flc")
+; - `internal', keep each file's Font Lock cache file in the same file.
+; - `external', keep each file's Font Lock cache file in the same directory.
+  "*Directories in which Font Lock cache files are saved and read.
+Each item should be either DIR or a cons pair of the form (REGEXP . DIR) where
+DIR is a directory name (relative or absolute) and REGEXP is a regexp.
+
+An attempt will be made to save or read Font Lock cache files using these items
+until one succeeds (i.e., until a readable or writable one is found).  If an
+item contains REGEXP, DIR is used only if the buffer file name matches REGEXP.
+For example:
+
+ (let ((home (expand-file-name (abbreviate-file-name (file-truename \"~/\")))))
+   (list (cons (concat \"^\" (regexp-quote home)) \".\") \"~/.emacs-flc\"))
+    =>
+ ((\"^/your/true/home/directory/\" . \".\") \"~/.emacs-flc\")
+
+would cause a file's current directory to be used if the file is under your
+home directory hierarchy, or otherwise the absolute directory `~/.emacs-flc'."
+  :type '(repeat (radio (directory :tag "directory")
+			(cons :tag "Matching"
+			      (regexp :tag "regexp")
+			      (directory :tag "directory"))))
+  :group 'fast-lock)
+
+(defcustom fast-lock-save-events '(kill-buffer kill-emacs)
+  "*Events under which caches will be saved.
+Valid events are `save-buffer', `kill-buffer' and `kill-emacs'.
+If concurrent editing sessions use the same associated cache file for a file's
+buffer, then you should add `save-buffer' to this list."
+  :type '(set (const :tag "buffer saving" save-buffer)
+	      (const :tag "buffer killing" kill-buffer)
+	      (const :tag "emacs killing" kill-emacs))
+  :group 'fast-lock)
+
+(defcustom fast-lock-save-others t
+  "*If non-nil, save Font Lock cache files irrespective of file owner.
+If nil, means only buffer files known to be owned by you can have associated
+Font Lock cache files saved.  Ownership may be unknown for networked files."
+  :type 'boolean
+  :group 'fast-lock)
+
+(defcustom fast-lock-verbose font-lock-verbose
+  "*If non-nil, means show status messages for cache processing.
+If a number, only buffers greater than this size have processing messages."
+  :type '(choice (const :tag "never" nil)
+		 (other :tag "always" t)
+		 (integer :tag "size"))
+  :group 'fast-lock)
+
+(defvar fast-lock-save-faces
+  (when (save-match-data (string-match "XEmacs" (emacs-version)))
+    ;; XEmacs uses extents for everything, so we have to pick the right ones.
+    font-lock-face-list)
+  "Faces that will be saved in a Font Lock cache file.
+If nil, means information for all faces will be saved.")
+
+;; User Functions:
+
+;;;###autoload
+(defun fast-lock-mode (&optional arg)
+  "Toggle Fast Lock mode.
+With arg, turn Fast Lock mode on if and only if arg is positive and the buffer
+is associated with a file.  Enable it automatically in your `~/.emacs' by:
+
+ (setq font-lock-support-mode 'fast-lock-mode)
+
+If Fast Lock mode is enabled, and the current buffer does not contain any text
+properties, any associated Font Lock cache is used if its timestamp matches the
+buffer's file, and its `font-lock-keywords' match those that you are using.
+
+Font Lock caches may be saved:
+- When you save the file's buffer.
+- When you kill an unmodified file's buffer.
+- When you exit Emacs, for all unmodified or saved buffers.
+Depending on the value of `fast-lock-save-events'.
+See also the commands `fast-lock-read-cache' and `fast-lock-save-cache'.
+
+Use \\[font-lock-fontify-buffer] to fontify the buffer if the cache is bad.
+
+Various methods of control are provided for the Font Lock cache.  In general,
+see variable `fast-lock-cache-directories' and function `fast-lock-cache-name'.
+For saving, see variables `fast-lock-minimum-size', `fast-lock-save-events',
+`fast-lock-save-others' and `fast-lock-save-faces'."
+  (interactive "P")
+  ;; Only turn on if we are visiting a file.  We could use `buffer-file-name',
+  ;; but many packages temporarily wrap that to nil when doing their own thing.
+  (set (make-local-variable 'fast-lock-mode)
+       (and buffer-file-truename
+	    (not (memq 'fast-lock-mode font-lock-inhibit-thing-lock))
+	    (if arg (> (prefix-numeric-value arg) 0) (not fast-lock-mode))))
+  (if (and fast-lock-mode (not font-lock-mode))
+      ;; Turned on `fast-lock-mode' rather than `font-lock-mode'.
+      (let ((font-lock-support-mode 'fast-lock-mode))
+	(font-lock-mode t))
+    ;; Let's get down to business.
+    (set (make-local-variable 'fast-lock-cache-timestamp) nil)
+    (set (make-local-variable 'fast-lock-cache-filename) nil)
+    (when (and fast-lock-mode (not font-lock-fontified))
+      (fast-lock-read-cache))))
+
+(defun fast-lock-read-cache ()
+  "Read the Font Lock cache for the current buffer.
+
+The following criteria must be met for a Font Lock cache file to be read:
+- Fast Lock mode must be turned on in the buffer.
+- The buffer must not be modified.
+- The buffer's `font-lock-keywords' must match the cache's.
+- The buffer file's timestamp must match the cache's.
+- Criteria imposed by `fast-lock-cache-directories'.
+
+See `fast-lock-mode'."
+  (interactive)
+  (let ((directories fast-lock-cache-directories)
+	(modified (buffer-modified-p)) (inhibit-read-only t)
+	(fontified font-lock-fontified))
+    (set (make-local-variable 'font-lock-fontified) nil)
+    ;; Keep trying directories until fontification is turned off.
+    (while (and directories (not font-lock-fontified))
+      (let ((directory (fast-lock-cache-directory (car directories) nil)))
+	(condition-case nil
+	    (when directory
+	      (setq fast-lock-cache-filename (fast-lock-cache-name directory))
+	      (when (file-readable-p fast-lock-cache-filename)
+		(load fast-lock-cache-filename t t t)))
+	  (error nil) (quit nil))
+	(setq directories (cdr directories))))
+    ;; Unset `fast-lock-cache-filename', and restore `font-lock-fontified', if
+    ;; we don't use a cache.  (Note that `fast-lock-cache-data' sets the value
+    ;; of `fast-lock-cache-timestamp'.)
+    (set-buffer-modified-p modified)
+    (unless font-lock-fontified
+      (setq fast-lock-cache-filename nil font-lock-fontified fontified))))
+
+(defun fast-lock-save-cache (&optional buffer)
+  "Save the Font Lock cache of BUFFER or the current buffer.
+
+The following criteria must be met for a Font Lock cache file to be saved:
+- Fast Lock mode must be turned on in the buffer.
+- The event must be one of `fast-lock-save-events'.
+- The buffer must be at least `fast-lock-minimum-size' bytes long.
+- The buffer file must be owned by you, or `fast-lock-save-others' must be t.
+- The buffer must contain at least one `face' text property.
+- The buffer must not be modified.
+- The buffer file's timestamp must be the same as the file's on disk.
+- The on disk file's timestamp must be different than the buffer's cache.
+- Criteria imposed by `fast-lock-cache-directories'.
+
+See `fast-lock-mode'."
+  (interactive)
+  (save-excursion
+    (when buffer
+      (set-buffer buffer))
+    (let ((min-size (font-lock-value-in-major-mode fast-lock-minimum-size))
+	  (file-timestamp (visited-file-modtime)) (saved nil))
+      (when (and fast-lock-mode
+	     ;;
+	     ;; "Only save if the buffer matches the file, the file has
+	     ;; changed, and it was changed by the current emacs session."
+	     ;;
+	     ;; Only save if the buffer is not modified,
+	     ;; (i.e., so we don't save for something not on disk)
+	     (not (buffer-modified-p))
+	     ;; and the file's timestamp is the same as the buffer's,
+	     ;; (i.e., someone else hasn't written the file in the meantime)
+	     (verify-visited-file-modtime (current-buffer))
+	     ;; and the file's timestamp is different from the cache's.
+	     ;; (i.e., a save has occurred since the cache was read)
+	     (not (equal fast-lock-cache-timestamp file-timestamp))
+	     ;;
+	     ;; Only save if user's restrictions are satisfied.
+	     (and min-size (>= (buffer-size) min-size))
+	     (or fast-lock-save-others
+		 (eq (user-uid) (nth 2 (file-attributes buffer-file-name))))
+	     ;;
+	     ;; Only save if there are `face' properties to save.
+	     (text-property-not-all (point-min) (point-max) 'face nil))
+	;;
+	;; Try each directory until we manage to save or the user quits.
+	(let ((directories fast-lock-cache-directories))
+	  (while (and directories (memq saved '(nil error)))
+	    (let* ((dir (fast-lock-cache-directory (car directories) t))
+		   (file (and dir (fast-lock-cache-name dir))))
+	      (when (and file (file-writable-p file))
+		(setq saved (fast-lock-save-cache-1 file file-timestamp)))
+	      (setq directories (cdr directories)))))))))
+
+;;;###autoload
+(defun turn-on-fast-lock ()
+  "Unconditionally turn on Fast Lock mode."
+  (fast-lock-mode t))
+
+;;; API Functions:
+
+(defun fast-lock-after-fontify-buffer ()
+  ;; Delete the Font Lock cache file used to restore fontification, if any.
+  (when fast-lock-cache-filename
+    (if (file-writable-p fast-lock-cache-filename)
+	(delete-file fast-lock-cache-filename)
+      (message "File %s font lock cache cannot be deleted" (buffer-name))))
+  ;; Flag so that a cache will be saved later even if the file is never saved.
+  (setq fast-lock-cache-timestamp nil))
+
+(defalias 'fast-lock-after-unfontify-buffer
+  'ignore)
+
+;; Miscellaneous Functions:
+
+(defun fast-lock-save-cache-after-save-file ()
+  ;; Do `fast-lock-save-cache' if `save-buffer' is on `fast-lock-save-events'.
+  (when (memq 'save-buffer fast-lock-save-events)
+    (fast-lock-save-cache)))
+
+(defun fast-lock-save-cache-before-kill-buffer ()
+  ;; Do `fast-lock-save-cache' if `kill-buffer' is on `fast-lock-save-events'.
+  (when (memq 'kill-buffer fast-lock-save-events)
+    (fast-lock-save-cache)))
+
+(defun fast-lock-save-caches-before-kill-emacs ()
+  ;; Do `fast-lock-save-cache's if `kill-emacs' is on `fast-lock-save-events'.
+  (when (memq 'kill-emacs fast-lock-save-events)
+    (mapcar 'fast-lock-save-cache (buffer-list))))
+
+(defun fast-lock-cache-directory (directory create)
+  "Return usable directory based on DIRECTORY.
+Returns nil if the directory does not exist, or, if CREATE non-nil, cannot be
+created.  DIRECTORY may be a string or a cons pair of the form (REGEXP . DIR).
+See `fast-lock-cache-directories'."
+  (let ((dir
+	 (cond ((not buffer-file-name)
+		;; Should never be nil, but `crypt++' screws it up.
+		nil)
+	       ((stringp directory)
+		;; Just a directory.
+		directory)
+	       (t
+		;; A directory iff the file name matches the regexp.
+		(let ((bufile (expand-file-name buffer-file-truename))
+		      (case-fold-search nil))
+		  (when (save-match-data (string-match (car directory) bufile))
+		    (cdr directory)))))))
+    (cond ((not dir)
+	   nil)
+	  ((file-accessible-directory-p dir)
+	   dir)
+	  (create
+	   (condition-case nil
+	       (progn (make-directory dir t) dir)
+	     (error nil))))))
+
+;; If you are wondering why we only hash if the directory is not ".", rather
+;; than if `file-name-absolute-p', it is because if we just appended ".flc" for
+;; relative cache directories (that are not ".") then it is possible that more
+;; than one file would have the same cache name in that directory, if the luser
+;; made a link from one relative cache directory to another.  (Phew!)
+(defun fast-lock-cache-name (directory)
+  "Return full cache file name using caching DIRECTORY.
+If DIRECTORY is `.', the file name is the buffer file name appended with `.flc'.
+Otherwise, the file name is constructed from DIRECTORY and the buffer's true
+abbreviated file name, with all `/' characters in the name replaced with `#'
+characters, and appended with `.flc'.
+
+If the same file has different cache file names when edited on different
+machines, e.g., on one machine the cache file name has the prefix `#home',
+perhaps due to automount, try putting in your `~/.emacs' something like:
+
+ (setq directory-abbrev-alist (cons '(\"^/home/\" . \"/\") directory-abbrev-alist))
+
+Emacs automagically removes the common `/tmp_mnt' automount prefix by default.
+
+See `fast-lock-cache-directory'."
+  (if (string-equal directory ".")
+      (concat buffer-file-name ".flc")
+    (let* ((bufile (expand-file-name buffer-file-truename))
+	   (chars-alist
+	    (if (memq system-type '(emx windows-nt cygwin))
+		'((?/ . (?#)) (?# . (?# ?#)) (?: . (?\;)) (?\; . (?\; ?\;)))
+	      '((?/ . (?#)) (?# . (?# ?#)))))
+	   (mapchars
+	    (function (lambda (c) (or (cdr (assq c chars-alist)) (list c))))))
+      (concat
+       (file-name-as-directory (expand-file-name directory))
+       (mapconcat 'char-to-string (apply 'append (mapcar mapchars bufile)) "")
+       ".flc"))))
+
+;; Font Lock Cache Processing Functions:
+
+;; The version 3 format of the cache is:
+;;
+;; (fast-lock-cache-data VERSION TIMESTAMP
+;;  font-lock-syntactic-keywords SYNTACTIC-PROPERTIES
+;;  font-lock-keywords FACE-PROPERTIES)
+
+(defun fast-lock-save-cache-1 (file timestamp)
+  ;; Save the FILE with the TIMESTAMP plus fontification data.
+  ;; Returns non-nil if a save was attempted to a writable cache file.
+  (let ((tpbuf (generate-new-buffer " *fast-lock*"))
+	(verbose (if (numberp fast-lock-verbose)
+		     (> (buffer-size) fast-lock-verbose)
+		   fast-lock-verbose))
+	(saved t))
+    (with-temp-message
+	(when verbose
+	  (format "Saving %s font lock cache..." (buffer-name)))
+      (condition-case nil
+	  (save-excursion
+	    (print (list 'fast-lock-cache-data 3
+			 (list 'quote timestamp)
+			 (list 'quote font-lock-syntactic-keywords)
+			 (list 'quote (fast-lock-get-syntactic-properties))
+			 (list 'quote font-lock-keywords)
+			 (list 'quote (fast-lock-get-face-properties)))
+		   tpbuf)
+	    (set-buffer tpbuf)
+	    (write-region (point-min) (point-max) file nil 'quietly)
+	    (setq fast-lock-cache-timestamp timestamp
+		  fast-lock-cache-filename file))
+	(error (setq saved 'error)) (quit (setq saved 'quit)))
+      (kill-buffer tpbuf))
+    (cond ((eq saved 'quit)
+	   (message "Saving %s font lock cache...quit" (buffer-name)))
+	  ((eq saved 'error)
+	   (message "Saving %s font lock cache...failed" (buffer-name))))
+    ;; We return non-nil regardless of whether a failure occurred.
+    saved))
+
+(defun fast-lock-cache-data (version timestamp
+			     syntactic-keywords syntactic-properties
+			     keywords face-properties
+			     &rest ignored)
+  ;; Find value of syntactic keywords in case it is a symbol.
+  (setq font-lock-syntactic-keywords (font-lock-eval-keywords
+				      font-lock-syntactic-keywords))
+  ;; Compile all keywords in case some are and some aren't.
+  (when font-lock-syntactic-keywords
+    (setq font-lock-syntactic-keywords (font-lock-compile-keywords
+					font-lock-syntactic-keywords)))
+  (when syntactic-keywords
+    (setq syntactic-keywords (font-lock-compile-keywords syntactic-keywords)))
+  (setq font-lock-keywords (font-lock-compile-keywords font-lock-keywords)
+	keywords (font-lock-compile-keywords keywords))
+  ;; Use the Font Lock cache SYNTACTIC-PROPERTIES and FACE-PROPERTIES if we're
+  ;; using cache VERSION format 3, the current buffer's file timestamp matches
+  ;; the TIMESTAMP, the current buffer's `font-lock-syntactic-keywords' are the
+  ;; same as SYNTACTIC-KEYWORDS, and the current buffer's `font-lock-keywords'
+  ;; are the same as KEYWORDS.
+  (let ((buf-timestamp (visited-file-modtime))
+	(verbose (if (numberp fast-lock-verbose)
+		     (> (buffer-size) fast-lock-verbose)
+		   fast-lock-verbose))
+	(loaded t))
+    (if (or (/= version 3)
+	    (buffer-modified-p)
+	    (not (equal timestamp buf-timestamp))
+	    (not (equal syntactic-keywords font-lock-syntactic-keywords))
+	    (not (equal keywords font-lock-keywords)))
+	(setq loaded nil)
+      (with-temp-message
+	  (when verbose
+	    (format "Loading %s font lock cache..." (buffer-name)))
+	(condition-case nil
+	    (fast-lock-add-properties syntactic-properties face-properties)
+	  (error (setq loaded 'error)) (quit (setq loaded 'quit))))
+      (cond ((eq loaded 'quit)
+	     (message "Loading %s font lock cache...quit" (buffer-name)))
+	    ((eq loaded 'error)
+	     (message "Loading %s font lock cache...failed" (buffer-name)))))
+    (setq font-lock-fontified (eq loaded t)
+	  fast-lock-cache-timestamp (and (eq loaded t) timestamp))))
+
+;; Text Properties Processing Functions:
+
+;; This is fast, but fails if adjacent characters have different `face' text
+;; properties.  Maybe that's why I dropped it in the first place?
+;(defun fast-lock-get-face-properties ()
+;  "Return a list of `face' text properties in the current buffer.
+;Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
+;where VALUE is a `face' property value and STARTx and ENDx are positions."
+;  (save-restriction
+;    (widen)
+;    (let ((start (text-property-not-all (point-min) (point-max) 'face nil))
+;	  (limit (point-max)) end properties value cell)
+;      (while start
+;	(setq end (next-single-property-change start 'face nil limit)
+;	      value (get-text-property start 'face))
+;	;; Make, or add to existing, list of regions with same `face'.
+;	(if (setq cell (assq value properties))
+;	    (setcdr cell (cons start (cons end (cdr cell))))
+;	  (setq properties (cons (list value start end) properties)))
+;	(setq start (next-single-property-change end 'face)))
+;      properties)))
+
+;; This is slow, but copes if adjacent characters have different `face' text
+;; properties, but fails if they are lists.
+;(defun fast-lock-get-face-properties ()
+;  "Return a list of `face' text properties in the current buffer.
+;Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
+;where VALUE is a `face' property value and STARTx and ENDx are positions.
+;Only those `face' VALUEs in `fast-lock-save-faces' are returned."
+;  (save-restriction
+;    (widen)
+;    (let ((faces (or fast-lock-save-faces (face-list))) (limit (point-max))
+;	  properties regions face start end)
+;      (while faces
+;	(setq face (car faces) faces (cdr faces) regions () end (point-min))
+;	;; Make a list of start/end regions with `face' property face.
+;	(while (setq start (text-property-any end limit 'face face))
+;	  (setq end (or (text-property-not-all start limit 'face face) limit)
+;		regions (cons start (cons end regions))))
+;	;; Add `face' face's regions, if any, to properties.
+;	(when regions
+;	  (push (cons face regions) properties)))
+;      properties)))
+
+(defun fast-lock-get-face-properties ()
+  "Return a list of `face' text properties in the current buffer.
+Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
+where VALUE is a `face' property value and STARTx and ENDx are positions."
+  (save-restriction
+    (widen)
+    (let ((start (text-property-not-all (point-min) (point-max) 'face nil))
+	  end properties value cell)
+      (while start
+	(setq end (next-single-property-change start 'face nil (point-max))
+	      value (get-text-property start 'face))
+	;; Make, or add to existing, list of regions with same `face'.
+	(cond ((setq cell (assoc value properties))
+	       (setcdr cell (cons start (cons end (cdr cell)))))
+	      ((fast-lock-save-facep value)
+	       (push (list value start end) properties)))
+	(setq start (text-property-not-all end (point-max) 'face nil)))
+      properties)))
+
+(defun fast-lock-get-syntactic-properties ()
+  "Return a list of `syntax-table' text properties in the current buffer.
+See `fast-lock-get-face-properties'."
+  (save-restriction
+    (widen)
+    (let ((start (text-property-not-all (point-min) (point-max) 'syntax-table
+					nil))
+	  end properties value cell)
+      (while start
+	(setq end (next-single-property-change start 'syntax-table nil
+					       (point-max))
+	      value (get-text-property start 'syntax-table))
+	;; Make, or add to existing, list of regions with same `syntax-table'.
+	(if (setq cell (assoc value properties))
+	    (setcdr cell (cons start (cons end (cdr cell))))
+	  (push (list value start end) properties))
+	(setq start (text-property-not-all end (point-max) 'syntax-table nil)))
+      properties)))
+
+(defun fast-lock-add-properties (syntactic-properties face-properties)
+  "Add `syntax-table' and `face' text properties to the current buffer.
+Any existing `syntax-table' and `face' text properties are removed first.
+See `fast-lock-get-face-properties'."
+  (save-buffer-state (plist regions)
+    (save-restriction
+      (widen)
+      (font-lock-unfontify-region (point-min) (point-max))
+      ;;
+      ;; Set the `syntax-table' property for each start/end region.
+      (while syntactic-properties
+	(setq plist (list 'syntax-table (car (car syntactic-properties)))
+	      regions (cdr (car syntactic-properties))
+	      syntactic-properties (cdr syntactic-properties))
+	(while regions
+	  (add-text-properties (nth 0 regions) (nth 1 regions) plist)
+	  (setq regions (nthcdr 2 regions))))
+      ;;
+      ;; Set the `face' property for each start/end region.
+      (while face-properties
+	(setq plist (list 'face (car (car face-properties)))
+	      regions (cdr (car face-properties))
+	      face-properties (cdr face-properties))
+	(while regions
+	  (add-text-properties (nth 0 regions) (nth 1 regions) plist)
+	  (setq regions (nthcdr 2 regions)))))))
+
+;; Functions for XEmacs:
+
+(when (save-match-data (string-match "XEmacs" (emacs-version)))
+  ;;
+  ;; It would be better to use XEmacs' `map-extents' over extents with a
+  ;; `font-lock' property, but `face' properties are on different extents.
+  (defun fast-lock-get-face-properties ()
+    "Return a list of `face' text properties in the current buffer.
+Each element of the list is of the form (VALUE START1 END1 START2 END2 ...)
+where VALUE is a `face' property value and STARTx and ENDx are positions.
+Only those `face' VALUEs in `fast-lock-save-faces' are returned."
+    (save-restriction
+      (widen)
+      (let ((properties ()) cell)
+	(map-extents
+	 (function (lambda (extent ignore)
+	    (let ((value (extent-face extent)))
+	      ;; We're only interested if it's one of `fast-lock-save-faces'.
+	      (when (and value (fast-lock-save-facep value))
+		(let ((start (extent-start-position extent))
+		      (end (extent-end-position extent)))
+		  ;; Make or add to existing list of regions with the same
+		  ;; `face' property value.
+		  (if (setq cell (assoc value properties))
+		      (setcdr cell (cons start (cons end (cdr cell))))
+		    (push (list value start end) properties))))
+	      ;; Return nil to keep `map-extents' going.
+	      nil))))
+	properties)))
+  ;;
+  ;; XEmacs does not support the `syntax-table' text property.
+  (defalias 'fast-lock-get-syntactic-properties
+    'ignore)
+  ;;
+  ;; Make extents just like XEmacs' font-lock.el does.
+  (defun fast-lock-add-properties (syntactic-properties face-properties)
+    "Set `face' text properties in the current buffer.
+Any existing `face' text properties are removed first.
+See `fast-lock-get-face-properties'."
+    (save-restriction
+      (widen)
+      (font-lock-unfontify-region (point-min) (point-max))
+      ;; Set the `face' property, etc., for each start/end region.
+      (while face-properties
+	(let ((face (car (car face-properties)))
+	      (regions (cdr (car face-properties))))
+	  (while regions
+	    (font-lock-set-face (nth 0 regions) (nth 1 regions) face)
+	    (setq regions (nthcdr 2 regions)))
+	  (setq face-properties (cdr face-properties))))
+      ;; XEmacs does not support the `syntax-table' text property.
+      ))
+  ;;
+  ;; XEmacs 19.12 font-lock.el's `font-lock-fontify-buffer' runs a hook.
+  (add-hook 'font-lock-after-fontify-buffer-hook
+	    'fast-lock-after-fontify-buffer))
+
+(unless (boundp 'font-lock-syntactic-keywords)
+  (defvar font-lock-syntactic-keywords nil))
+
+(unless (boundp 'font-lock-inhibit-thing-lock)
+  (defvar font-lock-inhibit-thing-lock nil))
+
+(unless (fboundp 'font-lock-compile-keywords)
+  (defalias 'font-lock-compile-keywords 'identity))
+
+(unless (fboundp 'font-lock-eval-keywords)
+  (defun font-lock-eval-keywords (keywords)
+    (if (symbolp keywords)
+	(font-lock-eval-keywords (if (fboundp keywords)
+				     (funcall keywords)
+				   (eval keywords)))
+      keywords)))
+
+(unless (fboundp 'font-lock-value-in-major-mode)
+  (defun font-lock-value-in-major-mode (alist)
+    (if (consp alist)
+	(cdr (or (assq major-mode alist) (assq t alist)))
+      alist)))
+
+(unless (fboundp 'current-message)
+  (defun current-message ()
+    ""))
+
+;; Install ourselves:
+
+(add-hook 'after-save-hook 'fast-lock-save-cache-after-save-file)
+(add-hook 'kill-buffer-hook 'fast-lock-save-cache-before-kill-buffer)
+(add-hook 'kill-emacs-hook 'fast-lock-save-caches-before-kill-emacs)
+
+;;;###autoload
+(when (fboundp 'add-minor-mode)
+  (defvar fast-lock-mode nil)
+  (add-minor-mode 'fast-lock-mode nil))
+;;;###dont-autoload
+(unless (assq 'fast-lock-mode minor-mode-alist)
+  (setq minor-mode-alist (append minor-mode-alist '((fast-lock-mode nil)))))
+
+;; Provide ourselves:
+
+(provide 'fast-lock)
+
+;;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e
+;;; fast-lock.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/obsolete/lazy-lock.el	Sat Apr 09 02:16:29 2005 +0000
@@ -0,0 +1,1054 @@
+;;; lazy-lock.el --- lazy demand-driven fontification for fast Font Lock mode
+
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2001
+;;   Free Software Foundation, Inc.
+
+;; Author: Simon Marshall <simon@gnu.org>
+;; Maintainer: FSF
+;; Keywords: faces files
+;; Version: 2.11
+
+;; 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:
+
+;; Purpose:
+;;
+;; Lazy Lock mode is a Font Lock support mode.
+;; It makes visiting buffers in Font Lock mode faster by making fontification
+;; be demand-driven, deferred and stealthy, so that fontification only occurs
+;; when, and where, necessary.
+;;
+;; See caveats and feedback below.
+;; See also the fast-lock package.  (But don't use them at the same time!)
+
+;; Installation:
+;;
+;; Put in your ~/.emacs:
+;;
+;; (setq font-lock-support-mode 'lazy-lock-mode)
+;;
+;; Start up a new Emacs and use font-lock as usual (except that you can use the
+;; so-called "gaudier" fontification regexps on big files without frustration).
+;;
+;; In a buffer (which has `font-lock-mode' enabled) which is at least
+;; `lazy-lock-minimum-size' characters long, buffer fontification will not
+;; occur and only the visible portion of the buffer will be fontified.  Motion
+;; around the buffer will fontify those visible portions not previously
+;; fontified.  If stealth fontification is enabled, buffer fontification will
+;; occur in invisible parts of the buffer after `lazy-lock-stealth-time'
+;; seconds of idle time.  If on-the-fly fontification is deferred, on-the-fly
+;; fontification will occur after `lazy-lock-defer-time' seconds of idle time.
+
+;; User-visible differences with version 1:
+;;
+;; - Version 2 can defer on-the-fly fontification.  Therefore you need not, and
+;; should not, use defer-lock.el with this version of lazy-lock.el.
+;;
+;; A number of variables have changed meaning:
+;;
+;; - A value of nil for the variable `lazy-lock-minimum-size' means never turn
+;; on demand-driven fontification.  In version 1 this meant always turn on
+;; demand-driven fontification.  If you really want demand-driven fontification
+;; regardless of buffer size, set this variable to 0.
+;;
+;; - The variable `lazy-lock-stealth-lines' cannot have a nil value.  In
+;; version 1 this meant use `window-height' as the maximum number of lines to
+;; fontify as a stealth chunk.  This makes no sense; stealth fontification is
+;; of a buffer, not a window.
+
+;; Implementation differences with version 1:
+;;
+;; - Version 1 of lazy-lock.el is a bit of a hack.  Version 1 demand-driven
+;; fontification, the core feature of lazy-lock.el, is implemented by placing a
+;; function on `post-command-hook'.  This function fontifies where necessary,
+;; i.e., where a window scroll has occurred.  However, there are a number of
+;; problems with using `post-command-hook':
+;;
+;; (a) As the name suggests, `post-command-hook' is run after every command,
+;;     i.e., frequently and regardless of whether scrolling has occurred.
+;; (b) Scrolling can occur during a command, when `post-command-hook' is not
+;;     run, i.e., it is not necessarily run after scrolling has occurred.
+;; (c) When `post-command-hook' is run, there is nothing to suggest where
+;;     scrolling might have occurred, i.e., which windows have scrolled.
+;;
+;; Thus lazy-lock.el's function is called almost as often as possible, usually
+;; when it need not be called, yet it is not always called when it is needed.
+;; Also, lazy-lock.el's function must check each window to see if a scroll has
+;; occurred there.  Worse still, lazy-lock.el's function must fontify a region
+;; twice as large as necessary to make sure the window is completely fontified.
+;; Basically, `post-command-hook' is completely inappropriate for lazy-lock.el.
+;;
+;; Ideally, we want to attach lazy-lock.el's function to a hook that is run
+;; only when scrolling occurs, e.g., `window-start' has changed, and tells us
+;; as much information as we need, i.e., the window and its new buffer region.
+;; Richard Stallman implemented a `window-scroll-functions' for Emacs 19.30.
+;; Functions on it are run when `window-start' has changed, and are supplied
+;; with the window and the window's new `window-start' position.  (It would be
+;; better if it also supplied the window's new `window-end' position, but that
+;; is calculated as part of the redisplay process, and the functions on
+;; `window-scroll-functions' are run before redisplay has finished.)  Thus, the
+;; hook deals with the above problems (a), (b) and (c).
+;;
+;; If only life was that easy.  Version 2 demand-driven fontification is mostly
+;; implemented by placing a function on `window-scroll-functions'.  However,
+;; not all scrolling occurs when `window-start' has changed.  A change in
+;; window size, e.g., via C-x 1, or a significant deletion, e.g., of a number
+;; of lines, causes text previously invisible (i.e., after `window-end') to
+;; become visible without changing `window-start'.  Arguably, these events are
+;; not scrolling events, but fontification must occur for lazy-lock.el to work.
+;; Hooks `window-size-change-functions' and `redisplay-end-trigger-functions'
+;; were added for these circumstances.
+;;
+;; (Ben Wing thinks these hooks are "horribly horribly kludgy", and implemented
+;; a `pre-idle-hook', a `mother-of-all-post-command-hooks', for XEmacs 19.14.
+;; He then hacked up a version 1 lazy-lock.el to use `pre-idle-hook' rather
+;; than `post-command-hook'.  Whereas functions on `post-command-hook' are
+;; called almost as often as possible, functions on `pre-idle-hook' really are
+;; called as often as possible, even when the mouse moves and, on some systems,
+;; while XEmacs is idle.  Thus, the hook deals with the above problem (b), but
+;; unfortunately it makes (a) worse and does not address (c) at all.
+;;
+;; I freely admit that `redisplay-end-trigger-functions' and, to a much lesser
+;; extent, `window-size-change-functions' are not pretty.  However, I feel that
+;; a `window-scroll-functions' feature is cleaner than a `pre-idle-hook', and
+;; the result is faster and smaller, less intrusive and more targeted, code.
+;; Since `pre-idle-hook' is pretty much like `post-command-hook', there is no
+;; point in making this version of lazy-lock.el work with it.  Anyway, that's
+;; Lit 30 of my humble opinion.
+;;
+;; - Version 1 stealth fontification is also implemented by placing a function
+;; on `post-command-hook'.  This function waits for a given amount of time,
+;; and, if Emacs remains idle, fontifies where necessary.  Again, there are a
+;; number of problems with using `post-command-hook':
+;;
+;; (a) Functions on `post-command-hook' are run sequentially, so this function
+;;     can interfere with other functions on the hook, and vice versa.
+;; (b) This function waits for a given amount of time, so it can interfere with
+;;     various features that are dealt with by Emacs after a command, e.g.,
+;;     region highlighting, asynchronous updating and keystroke echoing.
+;; (c) Fontification may be required during a command, when `post-command-hook'
+;;     is not run.  (Version 2 deferred fontification only.)
+;;
+;; Again, `post-command-hook' is completely inappropriate for lazy-lock.el.
+;; Richard Stallman and Morten Welinder implemented internal Timers and Idle
+;; Timers for Emacs 19.31.  Functions can be run independently at given times
+;; or after given amounts of idle time.  Thus, the feature deals with the above
+;; problems (a), (b) and (c).  Version 2 deferral and stealth are implemented
+;; by functions on Idle Timers.  (A function on XEmacs' `pre-idle-hook' is
+;; similar to an Emacs Idle Timer function with a fixed zero second timeout.)
+
+;; - Version 1 has the following problems (relative to version 2):
+;;
+;; (a) It is slow when it does its job.
+;; (b) It does not always do its job when it should.
+;; (c) It slows all interaction (when it doesn't need to do its job).
+;; (d) It interferes with other package functions on `post-command-hook'.
+;; (e) It interferes with Emacs things within the read-eval loop.
+;;
+;; Ben's hacked-up lazy-lock.el 1.14 almost solved (b) but made (c) worse.
+;;
+;; - Version 2 has the following additional features (relative to version 1):
+;;
+;; (a) It can defer fontification (both on-the-fly and on-scrolling).
+;; (b) It can fontify contextually (syntactically true on-the-fly).
+
+;; Caveats:
+;;
+;; Lazy Lock mode does not work efficiently with Outline mode.
+;; This is because when in Outline mode, although text may be not visible to
+;; you in the window, the text is visible to Emacs Lisp code (not surprisingly)
+;; and Lazy Lock fontifies it mercilessly.  Maybe it will be fixed one day.
+;;
+;; Because buffer text is not necessarily fontified, other packages that expect
+;; buffer text to be fontified in Font Lock mode either might not work as
+;; expected, or might not display buffer text as expected.  An example of the
+;; latter is `occur', which copies lines of buffer text into another buffer.
+;;
+;; In Emacs 19.30, Lazy Lock mode does not ensure that an existing buffer is
+;; fontified if it is made visible via a minibuffer-less command that replaces
+;; an existing window's buffer (e.g., via the Buffers menu).  Upgrade!
+;;
+;; In Emacs 19.30, Lazy Lock mode does not work well with Transient Mark mode
+;; or modes based on Comint mode (e.g., Shell mode), and also interferes with
+;; the echoing of keystrokes in the minibuffer.  This is because of the way
+;; deferral and stealth have to be implemented for Emacs 19.30.  Upgrade!
+;;
+;; Currently XEmacs does not have the features to support this version of
+;; lazy-lock.el.  Maybe it will one day.
+
+;; History:
+;;
+;; 1.15--2.00:
+;; - Rewrite for Emacs 19.30 and the features rms added to support lazy-lock.el
+;;   so that it could work correctly and efficiently.
+;; - Many thanks to those who reported bugs, fixed bugs, made suggestions or
+;;   otherwise contributed in the version 1 cycle; Jari Aalto, Kevin Broadey,
+;;   Ulrik Dickow, Bill Dubuque, Bob Glickstein, Boris Goldowsky,
+;;   Jonas Jarnestrom, David Karr, Michael Kifer, Erik Naggum, Rick Sladkey,
+;;   Jim Thompson, Ben Wing, Ilya Zakharevich, and Richard Stallman.
+;; 2.00--2.01:
+;; - Made `lazy-lock-fontify-after-command' always `sit-for' and so redisplay
+;; - Use `buffer-name' not `buffer-live-p' (Bill Dubuque hint)
+;; - Made `lazy-lock-install' do `add-to-list' not `setq' of `current-buffer'
+;; - Made `lazy-lock-fontify-after-install' loop over buffer list
+;; - Made `lazy-lock-arrange-before-change' to arrange `window-end' triggering
+;; - Made `lazy-lock-let-buffer-state' wrap both `befter-change-functions'
+;; - Made `lazy-lock-fontify-region' do `condition-case' (Hyman Rosen report)
+;; 2.01--2.02:
+;; - Use `buffer-live-p' as `buffer-name' can barf (Richard Stanton report)
+;; - Made `lazy-lock-install' set `font-lock-fontified' (Kevin Davidson report)
+;; - Made `lazy-lock-install' add hooks only if needed
+;; - Made `lazy-lock-unstall' add `font-lock-after-change-function' if needed
+;; 2.02--2.03:
+;; - Made `lazy-lock-fontify-region' do `condition-case' for `quit' too
+;; - Made `lazy-lock-mode' respect the value of `font-lock-inhibit-thing-lock'
+;; - Added `lazy-lock-after-unfontify-buffer'
+;; - Removed `lazy-lock-fontify-after-install' hack
+;; - Made `lazy-lock-fontify-after-scroll' not `set-buffer' to `window-buffer'
+;; - Made `lazy-lock-fontify-after-trigger' not `set-buffer' to `window-buffer'
+;; - Made `lazy-lock-fontify-after-idle' be interruptible (Scott Burson hint)
+;; 2.03--2.04:
+;; - Rewrite for Emacs 19.31 idle timers
+;; - Renamed `buffer-windows' to `get-buffer-window-list'
+;; - Removed `buffer-live-p'
+;; - Made `lazy-lock-defer-after-change' always save `current-buffer'
+;; - Made `lazy-lock-fontify-after-defer' just process buffers
+;; - Made `lazy-lock-install-hooks' add hooks correctly (Kevin Broadey report)
+;; - Made `lazy-lock-install' cope if `lazy-lock-defer-time' is a list
+;; 2.04--2.05:
+;; - Rewrite for Common Lisp macros
+;; - Added `do-while' macro
+;; - Renamed `lazy-lock-let-buffer-state' macro to `save-buffer-state'
+;; - Returned `lazy-lock-fontify-after-install' hack (Darren Hall hint)
+;; - Added `lazy-lock-defer-on-scrolling' functionality (Scott Byer hint)
+;; - Made `lazy-lock-mode' wrap `font-lock-support-mode'
+;; 2.05--2.06:
+;; - Made `lazy-lock-fontify-after-defer' swap correctly (Scott Byer report)
+;; 2.06--2.07:
+;; - Added `lazy-lock-stealth-load' functionality (Rob Hooft hint)
+;; - Made `lazy-lock-unstall' call `lazy-lock-fontify-region' if needed
+;; - Made `lazy-lock-mode' call `lazy-lock-unstall' only if needed
+;; - Made `lazy-lock-defer-after-scroll' do `set-window-redisplay-end-trigger'
+;; - Added `lazy-lock-defer-contextually' functionality
+;; - Added `lazy-lock-defer-on-the-fly' from `lazy-lock-defer-time'
+;; - Renamed `lazy-lock-defer-driven' to `lazy-lock-defer-on-scrolling'
+;; - Removed `lazy-lock-submit-bug-report' and bade farewell
+;; 2.07--2.08:
+;; - Made `lazy-lock-fontify-conservatively' fontify around `window-point'
+;; - Made `save-buffer-state' wrap `inhibit-point-motion-hooks'
+;; - Added Custom support
+;; 2.08--2.09:
+;; - Removed `byte-*' variables from `eval-when-compile' (Erik Naggum hint)
+;; - Made various wrapping `inhibit-point-motion-hooks' (Vinicius Latorre hint)
+;; - Made `lazy-lock-fontify-after-idle' wrap `minibuffer-auto-raise'
+;; - Made `lazy-lock-fontify-after-defer' paranoid about deferred buffers
+;; 2.09--2.10:
+;; - Use `window-end' UPDATE arg for Emacs 20.4 and later.
+;; - Made deferral `widen' before unfontifying (Dan Nicolaescu report)
+;; - Use `lazy-lock-fontify-after-visage' for hideshow.el (Dan Nicolaescu hint)
+;; - Use `other' widget where possible (Andreas Schwab fix)
+;; 2.10--2.11:
+;; - Used `with-temp-message' where possible to make messages temporary.
+
+;;; Code:
+
+(require 'font-lock)
+
+(eval-when-compile
+ ;; We don't do this at the top-level as we only use non-autoloaded macros.
+ (require 'cl)
+ ;;
+ ;; We use this to preserve or protect things when modifying text properties.
+ (defmacro save-buffer-state (varlist &rest body)
+   "Bind variables according to VARLIST and eval BODY restoring buffer state."
+   `(let* (,@(append varlist
+		   '((modified (buffer-modified-p))
+		     (buffer-undo-list t)
+		     (inhibit-read-only t)
+		     (inhibit-point-motion-hooks t)
+		     (inhibit-modification-hooks t)
+		     deactivate-mark
+		     buffer-file-name
+		     buffer-file-truename)))
+     ,@body
+     (when (and (not modified) (buffer-modified-p))
+       (restore-buffer-modified-p nil))))
+ (put 'save-buffer-state 'lisp-indent-function 1)
+ ;;
+ ;; We use this for clarity and speed.  Naughty but nice.
+ (defmacro do-while (test &rest body)
+   "(do-while TEST BODY...): eval BODY... and repeat if TEST yields non-nil.
+The order of execution is thus BODY, TEST, BODY, TEST and so on
+until TEST returns nil."
+   `(while (progn ,@body ,test)))
+ (put 'do-while 'lisp-indent-function (get 'while 'lisp-indent-function)))
+
+(defvar lazy-lock-mode nil)			; Whether we are turned on.
+(defvar lazy-lock-buffers nil)			; For deferral.
+(defvar lazy-lock-timers (cons nil nil))	; For deferral and stealth.
+
+;; User Variables:
+
+(defcustom lazy-lock-minimum-size 25600
+  "*Minimum size of a buffer for demand-driven fontification.
+On-demand fontification occurs if the buffer size is greater than this value.
+If nil, means demand-driven fontification is never performed.
+If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
+where MAJOR-MODE is a symbol or t (meaning the default).  For example:
+ ((c-mode . 25600) (c++-mode . 25600) (rmail-mode . 1048576))
+means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
+for buffers in Rmail mode, and size is irrelevant otherwise.
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "none" nil)
+		 (integer :tag "size")
+		 (repeat :menu-tag "mode specific" :tag "mode specific"
+			 :value ((t . nil))
+			 (cons :tag "Instance"
+			       (radio :tag "Mode"
+				      (const :tag "all" t)
+				      (symbol :tag "name"))
+			       (radio :tag "Size"
+				      (const :tag "none" nil)
+				      (integer :tag "size")))))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-defer-on-the-fly t
+  "*If non-nil, means fontification after a change should be deferred.
+If nil, means on-the-fly fontification is performed.  This means when changes
+occur in the buffer, those areas are immediately fontified.
+If a list, it should be a list of `major-mode' symbol names for which deferred
+fontification should occur.  The sense of the list is negated if it begins with
+`not'.  For example:
+ (c-mode c++-mode)
+means that on-the-fly fontification is deferred for buffers in C and C++ modes
+only, and deferral does not occur otherwise.
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "never" nil)
+		 (const :tag "always" t)
+		 (set :menu-tag "mode specific" :tag "modes"
+		      :value (not)
+		      (const :tag "Except" not)
+		      (repeat :inline t (symbol :tag "mode"))))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-defer-on-scrolling nil
+  "*If non-nil, means fontification after a scroll should be deferred.
+If nil, means demand-driven fontification is performed.  This means when
+scrolling into unfontified areas of the buffer, those areas are immediately
+fontified.  Thus scrolling never presents unfontified areas.  However, since
+fontification occurs during scrolling, scrolling may be slow.
+If t, means defer-driven fontification is performed.  This means fontification
+of those areas is deferred.  Thus scrolling may present momentarily unfontified
+areas.  However, since fontification does not occur during scrolling, scrolling
+will be faster than demand-driven fontification.
+If any other value, e.g., `eventually', means demand-driven fontification is
+performed until the buffer is fontified, then buffer fontification becomes
+defer-driven.  Thus scrolling never presents unfontified areas until the buffer
+is first fontified, after which subsequent scrolling may present future buffer
+insertions momentarily unfontified.  However, since fontification does not
+occur during scrolling after the buffer is first fontified, scrolling will
+become faster.  (But, since contextual changes continually occur, such a value
+makes little sense if `lazy-lock-defer-contextually' is non-nil.)
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "never" nil)
+		 (const :tag "always" t)
+		 (other :tag "eventually" eventually))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-defer-contextually 'syntax-driven
+  "*If non-nil, means deferred fontification should be syntactically true.
+If nil, means deferred fontification occurs only on those lines modified.  This
+means where modification on a line causes syntactic change on subsequent lines,
+those subsequent lines are not refontified to reflect their new context.
+If t, means deferred fontification occurs on those lines modified and all
+subsequent lines.  This means those subsequent lines are refontified to reflect
+their new syntactic context, either immediately or when scrolling into them.
+If any other value, e.g., `syntax-driven', means deferred syntactically true
+fontification occurs only if syntactic fontification is performed using the
+buffer mode's syntax table, i.e., only if `font-lock-keywords-only' is nil.
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "never" nil)
+		 (const :tag "always" t)
+		 (other :tag "syntax-driven" syntax-driven))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-defer-time
+  (if (featurep 'lisp-float-type) (/ (float 1) (float 4)) 1)
+  "*Time in seconds to delay before beginning deferred fontification.
+Deferred fontification occurs if there is no input within this time.
+If nil, means fontification is never deferred, regardless of the values of the
+variables `lazy-lock-defer-on-the-fly', `lazy-lock-defer-on-scrolling' and
+`lazy-lock-defer-contextually'.
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "never" nil)
+		 (number :tag "seconds"))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-stealth-time 30
+  "*Time in seconds to delay before beginning stealth fontification.
+Stealth fontification occurs if there is no input within this time.
+If nil, means stealth fontification is never performed.
+
+The value of this variable is used when Lazy Lock mode is turned on."
+  :type '(choice (const :tag "never" nil)
+		 (number :tag "seconds"))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-stealth-lines (if font-lock-maximum-decoration 100 250)
+  "*Maximum size of a chunk of stealth fontification.
+Each iteration of stealth fontification can fontify this number of lines.
+To speed up input response during stealth fontification, at the cost of stealth
+taking longer to fontify, you could reduce the value of this variable."
+  :type '(integer :tag "lines")
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-stealth-load
+  (if (condition-case nil (load-average) (error)) 200)
+  "*Load in percentage above which stealth fontification is suspended.
+Stealth fontification pauses when the system short-term load average (as
+returned by the function `load-average' if supported) goes above this level,
+thus reducing the demand that stealth fontification makes on the system.
+If nil, means stealth fontification is never suspended.
+To reduce machine load during stealth fontification, at the cost of stealth
+taking longer to fontify, you could reduce the value of this variable.
+See also `lazy-lock-stealth-nice'."
+  :type (if (condition-case nil (load-average) (error))
+	    '(choice (const :tag "never" nil)
+		     (integer :tag "load"))
+	  '(const :format "%t: unsupported\n" nil))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-stealth-nice
+  (if (featurep 'lisp-float-type) (/ (float 1) (float 8)) 1)
+  "*Time in seconds to pause between chunks of stealth fontification.
+Each iteration of stealth fontification is separated by this amount of time,
+thus reducing the demand that stealth fontification makes on the system.
+If nil, means stealth fontification is never paused.
+To reduce machine load during stealth fontification, at the cost of stealth
+taking longer to fontify, you could increase the value of this variable.
+See also `lazy-lock-stealth-load'."
+  :type '(choice (const :tag "never" nil)
+		 (number :tag "seconds"))
+  :group 'lazy-lock)
+
+(defcustom lazy-lock-stealth-verbose
+  (if (featurep 'lisp-float-type)
+      (and (not lazy-lock-defer-contextually) (not (null font-lock-verbose))))
+  "*If non-nil, means stealth fontification should show status messages."
+  :type 'boolean
+  :group 'lazy-lock)
+
+;; User Functions:
+
+;;;###autoload
+(defun lazy-lock-mode (&optional arg)
+  "Toggle Lazy Lock mode.
+With arg, turn Lazy Lock mode on if and only if arg is positive.  Enable it
+automatically in your `~/.emacs' by:
+
+ (setq font-lock-support-mode 'lazy-lock-mode)
+
+For a newer font-lock support mode with similar functionality, see
+`jit-lock-mode'.  Eventually, Lazy Lock mode will be deprecated in
+JIT Lock's favor.
+
+When Lazy Lock mode is enabled, fontification can be lazy in a number of ways:
+
+- Demand-driven buffer fontification if `lazy-lock-minimum-size' is non-nil.
+  This means initial fontification does not occur if the buffer is greater than
+  `lazy-lock-minimum-size' characters in length.  Instead, fontification occurs
+  when necessary, such as when scrolling through the buffer would otherwise
+  reveal unfontified areas.  This is useful if buffer fontification is too slow
+  for large buffers.
+
+- Deferred scroll fontification if `lazy-lock-defer-on-scrolling' is non-nil.
+  This means demand-driven fontification does not occur as you scroll.
+  Instead, fontification is deferred until after `lazy-lock-defer-time' seconds
+  of Emacs idle time, while Emacs remains idle.  This is useful if
+  fontification is too slow to keep up with scrolling.
+
+- Deferred on-the-fly fontification if `lazy-lock-defer-on-the-fly' is non-nil.
+  This means on-the-fly fontification does not occur as you type.  Instead,
+  fontification is deferred until after `lazy-lock-defer-time' seconds of Emacs
+  idle time, while Emacs remains idle.  This is useful if fontification is too
+  slow to keep up with your typing.
+
+- Deferred context fontification if `lazy-lock-defer-contextually' is non-nil.
+  This means fontification updates the buffer corresponding to true syntactic
+  context, after `lazy-lock-defer-time' seconds of Emacs idle time, while Emacs
+  remains idle.  Otherwise, fontification occurs on modified lines only, and
+  subsequent lines can remain fontified corresponding to previous syntactic
+  contexts.  This is useful where strings or comments span lines.
+
+- Stealthy buffer fontification if `lazy-lock-stealth-time' is non-nil.
+  This means remaining unfontified areas of buffers are fontified if Emacs has
+  been idle for `lazy-lock-stealth-time' seconds, while Emacs remains idle.
+  This is useful if any buffer has any deferred fontification.
+
+Basic Font Lock mode on-the-fly fontification behaviour fontifies modified
+lines only.  Thus, if `lazy-lock-defer-contextually' is non-nil, Lazy Lock mode
+on-the-fly fontification may fontify differently, albeit correctly.  In any
+event, to refontify some lines you can use \\[font-lock-fontify-block].
+
+Stealth fontification only occurs while the system remains unloaded.
+If the system load rises above `lazy-lock-stealth-load' percent, stealth
+fontification is suspended.  Stealth fontification intensity is controlled via
+the variable `lazy-lock-stealth-nice' and `lazy-lock-stealth-lines', and
+verbosity is controlled via the variable `lazy-lock-stealth-verbose'."
+  (interactive "P")
+  (let* ((was-on lazy-lock-mode)
+	 (now-on (unless (memq 'lazy-lock-mode font-lock-inhibit-thing-lock)
+		   (if arg (> (prefix-numeric-value arg) 0) (not was-on)))))
+    (cond ((and now-on (not font-lock-mode))
+	   ;; Turned on `lazy-lock-mode' rather than `font-lock-mode'.
+	   (let ((font-lock-support-mode 'lazy-lock-mode))
+	     (font-lock-mode t)))
+	  (now-on
+	   ;; Turn ourselves on.
+	   (set (make-local-variable 'lazy-lock-mode) t)
+	   (lazy-lock-install))
+	  (was-on
+	   ;; Turn ourselves off.
+	   (set (make-local-variable 'lazy-lock-mode) nil)
+	   (lazy-lock-unstall)))))
+
+;;;###autoload
+(defun turn-on-lazy-lock ()
+  "Unconditionally turn on Lazy Lock mode."
+  (lazy-lock-mode t))
+
+(defun lazy-lock-install ()
+  (let ((min-size (font-lock-value-in-major-mode lazy-lock-minimum-size))
+	(defer-change (and lazy-lock-defer-time lazy-lock-defer-on-the-fly))
+	(defer-scroll (and lazy-lock-defer-time lazy-lock-defer-on-scrolling))
+	(defer-context (and lazy-lock-defer-time lazy-lock-defer-contextually
+			    (or (eq lazy-lock-defer-contextually t)
+				(null font-lock-keywords-only)))))
+    ;;
+    ;; Tell Font Lock whether Lazy Lock will do fontification.
+    (make-local-variable 'font-lock-fontified)
+    (setq font-lock-fontified (and min-size (>= (buffer-size) min-size)))
+    ;;
+    ;; Add the text properties and fontify.
+    (if (not font-lock-fontified)
+	(lazy-lock-after-fontify-buffer)
+      ;; Make sure we fontify in any existing windows showing the buffer.
+      (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)))
+	(lazy-lock-after-unfontify-buffer)
+	(while windows
+	  (lazy-lock-fontify-conservatively (car windows))
+	  (setq windows (cdr windows)))))
+    ;;
+    ;; Add the fontification hooks.
+    (lazy-lock-install-hooks
+     font-lock-fontified
+     (cond ((eq (car-safe defer-change) 'not)
+	    (not (memq major-mode (cdr defer-change))))
+	   ((listp defer-change)
+	    (memq major-mode defer-change))
+	   (t
+	    defer-change))
+     (eq defer-scroll t)
+     defer-context)
+    ;;
+    ;; Add the fontification timers.
+    (lazy-lock-install-timers
+     (if (or defer-change defer-scroll defer-context) lazy-lock-defer-time)
+     lazy-lock-stealth-time)))
+
+(defun lazy-lock-install-hooks (fontifying
+				defer-change defer-scroll defer-context)
+  ;;
+  ;; Add hook if lazy-lock.el is fontifying on scrolling or is deferring.
+  (when (or fontifying defer-change defer-scroll defer-context)
+    (add-hook 'window-scroll-functions (if defer-scroll
+					   'lazy-lock-defer-after-scroll
+					 'lazy-lock-fontify-after-scroll)
+	      nil t))
+  ;;
+  ;; Add hook if lazy-lock.el is fontifying and is not deferring changes.
+  (when (and fontifying (not defer-change) (not defer-context))
+    (add-hook 'before-change-functions 'lazy-lock-arrange-before-change nil t))
+  ;;
+  ;; Replace Font Lock mode hook.
+  (remove-hook 'after-change-functions 'font-lock-after-change-function t)
+  (add-hook 'after-change-functions
+	    (cond ((and defer-change defer-context)
+		   'lazy-lock-defer-rest-after-change)
+		  (defer-change
+		   'lazy-lock-defer-line-after-change)
+		  (defer-context
+		   'lazy-lock-fontify-rest-after-change)
+		  (t
+		   'lazy-lock-fontify-line-after-change))
+	    nil t)
+  ;;
+  ;; Add package-specific hook.
+  (add-hook 'outline-view-change-hook 'lazy-lock-fontify-after-visage nil t)
+  (add-hook 'hs-hide-hook 'lazy-lock-fontify-after-visage nil t))
+
+(defun lazy-lock-install-timers (dtime stime)
+  ;; Schedule or re-schedule the deferral and stealth timers.
+  ;; The layout of `lazy-lock-timers' is:
+  ;;  ((DEFER-TIME . DEFER-TIMER) (STEALTH-TIME . STEALTH-TIMER)
+  ;; If an idle timeout has changed, cancel the existing idle timer (if there
+  ;; is one) and schedule a new one (if the new idle timeout is non-nil).
+  (unless (eq dtime (car (car lazy-lock-timers)))
+    (let ((defer (car lazy-lock-timers)))
+      (when (cdr defer)
+	(cancel-timer (cdr defer)))
+      (setcar lazy-lock-timers (cons dtime (and dtime
+	      (run-with-idle-timer dtime t 'lazy-lock-fontify-after-defer))))))
+  (unless (eq stime (car (cdr lazy-lock-timers)))
+    (let ((stealth (cdr lazy-lock-timers)))
+      (when (cdr stealth)
+	(cancel-timer (cdr stealth)))
+      (setcdr lazy-lock-timers (cons stime (and stime
+	      (run-with-idle-timer stime t 'lazy-lock-fontify-after-idle)))))))
+
+(defun lazy-lock-unstall ()
+  ;;
+  ;; If Font Lock mode is still enabled, make sure that the buffer is
+  ;; fontified, and reinstall its hook.  We must do this first.
+  (when font-lock-mode
+    (when (lazy-lock-unfontified-p)
+      (let ((verbose (if (numberp font-lock-verbose)
+			 (> (buffer-size) font-lock-verbose)
+		       font-lock-verbose)))
+	(with-temp-message
+	    (when verbose
+	      (format "Fontifying %s..." (buffer-name)))
+	  ;; Make sure we fontify etc. in the whole buffer.
+	  (save-restriction
+	    (widen)
+	    (lazy-lock-fontify-region (point-min) (point-max))))))
+    (add-hook 'after-change-functions 'font-lock-after-change-function nil t))
+  ;;
+  ;; Remove the text properties.
+  (lazy-lock-after-unfontify-buffer)
+  ;;
+  ;; Remove the fontification hooks.
+  (remove-hook 'window-scroll-functions 'lazy-lock-fontify-after-scroll t)
+  (remove-hook 'window-scroll-functions 'lazy-lock-defer-after-scroll t)
+  (remove-hook 'before-change-functions 'lazy-lock-arrange-before-change t)
+  (remove-hook 'after-change-functions 'lazy-lock-fontify-line-after-change t)
+  (remove-hook 'after-change-functions 'lazy-lock-fontify-rest-after-change t)
+  (remove-hook 'after-change-functions 'lazy-lock-defer-line-after-change t)
+  (remove-hook 'after-change-functions 'lazy-lock-defer-rest-after-change t)
+  (remove-hook 'outline-view-change-hook 'lazy-lock-fontify-after-visage t)
+  (remove-hook 'hs-hide-hook 'lazy-lock-fontify-after-visage t))
+
+;; Hook functions.
+
+;; Lazy Lock mode intervenes when (1) a previously invisible buffer region
+;; becomes visible, i.e., for demand- or defer-driven on-the-scroll
+;; fontification, (2) a buffer modification occurs, i.e., for defer-driven
+;; on-the-fly fontification, (3) Emacs becomes idle, i.e., for fontification of
+;; deferred fontification and stealth fontification, and (4) other special
+;; occasions.
+
+;; 1.  There are three ways whereby this can happen.
+;;
+;; (a) Scrolling the window, either explicitly (e.g., `scroll-up') or
+;;     implicitly (e.g., `search-forward').  Here, `window-start' changes.
+;;     Fontification occurs by adding `lazy-lock-fontify-after-scroll' (for
+;;     demand-driven fontification) or `lazy-lock-defer-after-scroll' (for
+;;     defer-driven fontification) to the hook `window-scroll-functions'.
+
+(defun lazy-lock-fontify-after-scroll (window window-start)
+  ;; Called from `window-scroll-functions'.
+  ;; Fontify WINDOW from WINDOW-START following the scroll.
+  (let ((inhibit-point-motion-hooks t))
+    (lazy-lock-fontify-region window-start (window-end window t)))
+  ;; A prior deletion that did not cause scrolling, followed by a scroll, would
+  ;; result in an unnecessary trigger after this if we did not cancel it now.
+  (set-window-redisplay-end-trigger window nil))
+
+(defun lazy-lock-defer-after-scroll (window window-start)
+  ;; Called from `window-scroll-functions'.
+  ;; Defer fontification following the scroll.  Save the current buffer so that
+  ;; we subsequently fontify in all windows showing the buffer.
+  (unless (memq (current-buffer) lazy-lock-buffers)
+    (push (current-buffer) lazy-lock-buffers))
+  ;; A prior deletion that did not cause scrolling, followed by a scroll, would
+  ;; result in an unnecessary trigger after this if we did not cancel it now.
+  (set-window-redisplay-end-trigger window nil))
+
+;; (b) Resizing the window, either explicitly (e.g., `enlarge-window') or
+;;     implicitly (e.g., `delete-other-windows').  Here, `window-end' changes.
+;;     Fontification occurs by adding `lazy-lock-fontify-after-resize' to the
+;;     hook `window-size-change-functions'.
+
+(defun lazy-lock-fontify-after-resize (frame)
+  ;; Called from `window-size-change-functions'.
+  ;; Fontify windows in FRAME following the resize.  We cannot use
+  ;; `window-start' or `window-end' so we fontify conservatively.
+  (save-excursion
+    (save-selected-window
+      (select-frame frame)
+      (walk-windows (function (lambda (window)
+		       (set-buffer (window-buffer window))
+		       (when lazy-lock-mode
+			 (lazy-lock-fontify-conservatively window))
+		       (set-window-redisplay-end-trigger window nil)))
+		    'nomini frame))))
+
+;; (c) Deletion in the buffer.  Here, a `window-end' marker can become visible.
+;;     Fontification occurs by adding `lazy-lock-arrange-before-change' to
+;;     `before-change-functions' and `lazy-lock-fontify-after-trigger' to the
+;;     hook `redisplay-end-trigger-functions'.  Before every deletion, the
+;;     marker `window-redisplay-end-trigger' position is set to the soon-to-be
+;;     changed `window-end' position.  If the marker becomes visible,
+;;     `lazy-lock-fontify-after-trigger' gets called.  Ouch.  Note that we only
+;;     have to deal with this eventuality if there is no on-the-fly deferral.
+
+(defun lazy-lock-arrange-before-change (beg end)
+  ;; Called from `before-change-functions'.
+  ;; Arrange that if text becomes visible it will be fontified (if a deletion
+  ;; is pending, text might become visible at the bottom).
+  (unless (eq beg end)
+    (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)) window)
+      (while windows
+	(setq window (car windows))
+	(unless (markerp (window-redisplay-end-trigger window))
+	  (set-window-redisplay-end-trigger window (make-marker)))
+	(set-marker (window-redisplay-end-trigger window) (window-end window))
+	(setq windows (cdr windows))))))
+
+(defun lazy-lock-fontify-after-trigger (window trigger-point)
+  ;; Called from `redisplay-end-trigger-functions'.
+  ;; Fontify WINDOW from TRIGGER-POINT following the redisplay.
+  ;; We could probably just use `lazy-lock-fontify-after-scroll' without loss:
+  ;;  (inline (lazy-lock-fontify-after-scroll window (window-start window)))
+  (let ((inhibit-point-motion-hooks t))
+    (lazy-lock-fontify-region trigger-point (window-end window t))))
+
+;; 2.  Modified text must be marked as unfontified so it can be identified and
+;;     fontified later when Emacs is idle.  Deferral occurs by adding one of
+;;     `lazy-lock-fontify-*-after-change' (for on-the-fly fontification) or
+;;     `lazy-lock-defer-*-after-change' (for deferred fontification) to the
+;;     hook `after-change-functions'.
+
+(defalias 'lazy-lock-fontify-line-after-change
+  ;; Called from `after-change-functions'.
+  ;; Fontify the current change.
+  'font-lock-after-change-function)
+
+(defun lazy-lock-fontify-rest-after-change (beg end old-len)
+  ;; Called from `after-change-functions'.
+  ;; Fontify the current change and defer fontification of the rest of the
+  ;; buffer.  Save the current buffer so that we subsequently fontify in all
+  ;; windows showing the buffer.
+  (lazy-lock-fontify-line-after-change beg end old-len)
+  (save-buffer-state nil
+    (unless (memq (current-buffer) lazy-lock-buffers)
+      (push (current-buffer) lazy-lock-buffers))
+    (save-restriction
+      (widen)
+      (remove-text-properties end (point-max) '(lazy-lock nil)))))
+
+(defun lazy-lock-defer-line-after-change (beg end old-len)
+  ;; Called from `after-change-functions'.
+  ;; Defer fontification of the current change.  Save the current buffer so
+  ;; that we subsequently fontify in all windows showing the buffer.
+  (save-buffer-state nil
+    (unless (memq (current-buffer) lazy-lock-buffers)
+      (push (current-buffer) lazy-lock-buffers))
+    (remove-text-properties (max (1- beg) (point-min))
+			    (min (1+ end) (point-max))
+			    '(lazy-lock nil))))
+
+(defun lazy-lock-defer-rest-after-change (beg end old-len)
+  ;; Called from `after-change-functions'.
+  ;; Defer fontification of the rest of the buffer.  Save the current buffer so
+  ;; that we subsequently fontify in all windows showing the buffer.
+  (save-buffer-state nil
+    (unless (memq (current-buffer) lazy-lock-buffers)
+      (push (current-buffer) lazy-lock-buffers))
+    (save-restriction
+      (widen)
+      (remove-text-properties (max (1- beg) (point-min))
+			      (point-max)
+			      '(lazy-lock nil)))))
+
+;; 3.  Deferred fontification and stealth fontification are done from these two
+;;     functions.  They are set up as Idle Timers.
+
+(defun lazy-lock-fontify-after-defer ()
+  ;; Called from `timer-idle-list'.
+  ;; Fontify all windows where deferral has occurred for its buffer.
+  (save-excursion
+    (while (and lazy-lock-buffers (not (input-pending-p)))
+      (let ((buffer (car lazy-lock-buffers)) windows)
+	;; Paranoia: check that the buffer is still live and Lazy Lock mode on.
+	(when (buffer-live-p buffer)
+	  (set-buffer buffer)
+	  (when lazy-lock-mode
+	    (setq windows (get-buffer-window-list buffer 'nomini t))
+	    (while windows
+	      (lazy-lock-fontify-window (car windows))
+	      (setq windows (cdr windows)))))
+	(setq lazy-lock-buffers (cdr lazy-lock-buffers)))))
+  ;; Add hook if fontification should now be defer-driven in this buffer.
+  (when (and lazy-lock-mode lazy-lock-defer-on-scrolling
+	     (memq 'lazy-lock-fontify-after-scroll window-scroll-functions)
+	     (not (or (input-pending-p) (lazy-lock-unfontified-p))))
+    (remove-hook 'window-scroll-functions 'lazy-lock-fontify-after-scroll t)
+    (add-hook 'window-scroll-functions 'lazy-lock-defer-after-scroll nil t)))
+
+(defun lazy-lock-fontify-after-idle ()
+  ;; Called from `timer-idle-list'.
+  ;; Fontify all buffers that need it, stealthily while idle.
+  (unless (or executing-kbd-macro (window-minibuffer-p (selected-window)))
+    ;; Loop over all buffers, fontify stealthily for each if necessary.
+    (let ((buffers (buffer-list)) (continue t)
+	  message message-log-max minibuffer-auto-raise)
+      (save-excursion
+	(do-while (and buffers continue)
+	  (set-buffer (car buffers))
+	  (if (not (and lazy-lock-mode (lazy-lock-unfontified-p)))
+	      (setq continue (not (input-pending-p)))
+	    ;; Fontify regions in this buffer while there is no input.
+	    (with-temp-message
+		(when lazy-lock-stealth-verbose
+		  "Fontifying stealthily...")
+	      (do-while (and (lazy-lock-unfontified-p) continue)
+		(if (and lazy-lock-stealth-load
+			 (> (car (load-average)) lazy-lock-stealth-load))
+		    ;; Wait a while before continuing with the loop.
+		    (progn
+		      (when message
+			(message "Fontifying stealthily...suspended")
+			(setq message nil))
+		      (setq continue (sit-for (or lazy-lock-stealth-time 30))))
+		  ;; Fontify a chunk.
+		  (when lazy-lock-stealth-verbose
+		    (if message
+			(message "Fontifying stealthily... %2d%% of %s"
+				 (lazy-lock-percent-fontified) (buffer-name))
+		      (message "Fontifying stealthily...")
+		      (setq message t)))
+		  ;; Current buffer may have changed during `sit-for'.
+		  (set-buffer (car buffers))
+		  (lazy-lock-fontify-chunk)
+		  (setq continue (sit-for (or lazy-lock-stealth-nice 0)))))))
+	  (setq buffers (cdr buffers)))))))
+
+;; 4.  Special circumstances.
+
+(defun lazy-lock-fontify-after-visage ()
+  ;; Called from `outline-view-change-hook' and `hs-hide-hook'.
+  ;; Fontify windows showing the current buffer, as its visibility has changed.
+  ;; This is a conspiracy hack between lazy-lock.el, outline.el and
+  ;; hideshow.el.
+  (let ((windows (get-buffer-window-list (current-buffer) 'nomini t)))
+    (while windows
+      (lazy-lock-fontify-conservatively (car windows))
+      (setq windows (cdr windows)))))
+
+(defun lazy-lock-after-fontify-buffer ()
+  ;; Called from `font-lock-after-fontify-buffer'.
+  ;; Mark the current buffer as fontified.
+  ;; This is a conspiracy hack between lazy-lock.el and font-lock.el.
+  (save-buffer-state nil
+    (add-text-properties (point-min) (point-max) '(lazy-lock t))))
+
+(defun lazy-lock-after-unfontify-buffer ()
+  ;; Called from `font-lock-after-unfontify-buffer'.
+  ;; Mark the current buffer as unfontified.
+  ;; This is a conspiracy hack between lazy-lock.el and font-lock.el.
+  (save-buffer-state nil
+    (remove-text-properties (point-min) (point-max) '(lazy-lock nil))))
+
+;; Fontification functions.
+
+;; If packages want to ensure that some region of the buffer is fontified, they
+;; should use this function.  For an example, see ps-print.el.
+(defun lazy-lock-fontify-region (beg end)
+  ;; Fontify between BEG and END, where necessary, in the current buffer.
+  (save-restriction
+    (widen)
+    (when (setq beg (text-property-any beg end 'lazy-lock nil))
+      (save-excursion
+	(save-match-data
+	  (save-buffer-state
+	   ;; Ensure syntactic fontification is always correct.
+	   (font-lock-beginning-of-syntax-function next)
+	   ;; Find successive unfontified regions between BEG and END.
+	   (condition-case data
+	       (do-while beg
+			 (setq next (or (text-property-any beg end 'lazy-lock t) end))
+	  ;; Make sure the region end points are at beginning of line.
+			 (goto-char beg)
+			 (unless (bolp)
+			   (beginning-of-line)
+			   (setq beg (point)))
+			 (goto-char next)
+			 (unless (bolp)
+			   (forward-line)
+			   (setq next (point)))
+		     ;; Fontify the region, then flag it as fontified.
+			 (font-lock-fontify-region beg next)
+			 (add-text-properties beg next '(lazy-lock t))
+			 (setq beg (text-property-any next end 'lazy-lock nil)))
+	     ((error quit) (message "Fontifying region...%s" data)))))))))
+
+(defun lazy-lock-fontify-chunk ()
+  ;; Fontify the nearest chunk, for stealth, in the current buffer.
+  (let ((inhibit-point-motion-hooks t))
+    (save-excursion
+      (save-restriction
+	(widen)
+	;; Move to end of line in case the character at point is not fontified.
+	(end-of-line)
+	;; Find where the previous (next) unfontified regions end (begin).
+	(let ((prev (previous-single-property-change (point) 'lazy-lock))
+	      (next (text-property-any (point) (point-max) 'lazy-lock nil)))
+	  ;; Fontify from the nearest unfontified position.
+	  (if (or (null prev) (and next (< (- next (point)) (- (point) prev))))
+	      ;; The next, or neither, region is the nearest not fontified.
+	      (lazy-lock-fontify-region
+	       (progn (goto-char (or next (point-min)))
+		      (beginning-of-line)
+		      (point))
+	       (progn (goto-char (or next (point-min)))
+		      (forward-line lazy-lock-stealth-lines)
+		      (point)))
+	    ;; The previous region is the nearest not fontified.
+	    (lazy-lock-fontify-region
+	     (progn (goto-char prev)
+		    (forward-line (- lazy-lock-stealth-lines))
+		    (point))
+	     (progn (goto-char prev)
+		    (forward-line)
+		    (point)))))))))
+
+(defun lazy-lock-fontify-window (window)
+  ;; Fontify in WINDOW between `window-start' and `window-end'.
+  ;; We can only do this when we can use `window-start' and `window-end'.
+  (with-current-buffer (window-buffer window)
+    (lazy-lock-fontify-region (window-start window) (window-end window))))
+
+(defun lazy-lock-fontify-conservatively (window)
+  ;; Fontify in WINDOW conservatively around point.
+  ;; Where we cannot use `window-start' and `window-end' we do `window-height'
+  ;; lines around point.  That way we guarantee to have done enough.
+  (with-current-buffer (window-buffer window)
+    (let ((inhibit-point-motion-hooks t))
+      (lazy-lock-fontify-region
+       (save-excursion
+	 (goto-char (window-point window))
+	 (vertical-motion (- (window-height window)) window) (point))
+       (save-excursion
+	 (goto-char (window-point window))
+	 (vertical-motion (window-height window) window) (point))))))
+
+(defun lazy-lock-unfontified-p ()
+  ;; Return non-nil if there is anywhere still to be fontified.
+  (save-restriction
+    (widen)
+    (text-property-any (point-min) (point-max) 'lazy-lock nil)))
+
+(defun lazy-lock-percent-fontified ()
+  ;; Return the percentage (of characters) of the buffer that are fontified.
+  (save-restriction
+    (widen)
+    (let ((beg (point-min)) (size 0) next)
+      ;; Find where the next fontified region begins.
+      (while (setq beg (text-property-any beg (point-max) 'lazy-lock t))
+	(setq next (or (text-property-any beg (point-max) 'lazy-lock nil)
+		       (point-max)))
+	(incf size (- next beg))
+	(setq beg next))
+      ;; Float because using integer multiplication will frequently overflow.
+      (truncate (* (/ (float size) (point-max)) 100)))))
+
+;; Version dependent workarounds and fixes.
+
+(when (consp lazy-lock-defer-time)
+  ;;
+  ;; In 2.06.04 and below, `lazy-lock-defer-time' could specify modes and time.
+  (with-output-to-temp-buffer "*Help*"
+    (princ "The value of the variable `lazy-lock-defer-time' was\n ")
+    (princ lazy-lock-defer-time)
+    (princ "\n")
+    (princ "This variable cannot now be a list of modes and time,\n")
+    (princ "so instead use ")
+    (princ (substitute-command-keys "\\[customize-option]"))
+    (princ " to modify the variables, or put the forms:\n")
+    (princ " (setq lazy-lock-defer-time ")
+    (princ (cdr lazy-lock-defer-time))
+    (princ ")\n")
+    (princ " (setq lazy-lock-defer-on-the-fly '")
+    (princ (car lazy-lock-defer-time))
+    (princ ")\n")
+    (princ "in your ~/.emacs.  ")
+    (princ "The above forms have been evaluated for this editor session,\n")
+    (princ "but you should use ")
+    (princ (substitute-command-keys "\\[customize-option]"))
+    (princ " or change your ~/.emacs now."))
+  (setq lazy-lock-defer-on-the-fly (car lazy-lock-defer-time)
+	lazy-lock-defer-time (cdr lazy-lock-defer-time)))
+
+(when (boundp 'lazy-lock-defer-driven)
+  ;;
+  ;; In 2.06.04 and below, `lazy-lock-defer-driven' was the variable name.
+  (with-output-to-temp-buffer "*Help*"
+    (princ "The value of the variable `lazy-lock-defer-driven' is set to ")
+    (if (memq lazy-lock-defer-driven '(nil t))
+	(princ lazy-lock-defer-driven)
+      (princ "`")
+      (princ lazy-lock-defer-driven)
+      (princ "'"))
+    (princ ".\n")
+    (princ "This variable is now called `lazy-lock-defer-on-scrolling',\n")
+    (princ "so instead use ")
+    (princ (substitute-command-keys "\\[customize-option]"))
+    (princ " to modify the variable, or put the form:\n")
+    (princ " (setq lazy-lock-defer-on-scrolling ")
+    (unless (memq lazy-lock-defer-driven '(nil t))
+      (princ "'"))
+    (princ lazy-lock-defer-driven)
+    (princ ")\n")
+    (princ "in your ~/.emacs.  ")
+    (princ "The above form has been evaluated for this editor session,\n")
+    (princ "but you should use ")
+    (princ (substitute-command-keys "\\[customize-option]"))
+    (princ " or change your ~/.emacs now."))
+  (setq lazy-lock-defer-on-scrolling lazy-lock-defer-driven))
+
+;; Install ourselves:
+
+(add-hook 'window-size-change-functions 'lazy-lock-fontify-after-resize)
+(add-hook 'redisplay-end-trigger-functions 'lazy-lock-fontify-after-trigger)
+
+(unless (assq 'lazy-lock-mode minor-mode-alist)
+  (setq minor-mode-alist (append minor-mode-alist '((lazy-lock-mode nil)))))
+
+;; Provide ourselves:
+
+(provide 'lazy-lock)
+
+;;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9
+;;; lazy-lock.el ends here
--- a/lisp/pcvs-info.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/pcvs-info.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,7 +1,7 @@
 ;;; pcvs-info.el --- internal representation of a fileinfo entry
 
 ;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2004  Free Software Foundation, Inc.
+;;   2000, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: pcl-cvs
@@ -105,7 +105,9 @@
   :group 'pcl-cvs)
 
 (defface cvs-marked-face
-  '((((class color) (background dark))
+  '((((min-colors 88) (class color) (background dark))
+     (:foreground "green1" :weight bold))
+    (((class color) (background dark))
      (:foreground "green" :weight bold))
     (((class color) (background light))
      (:foreground "green3" :weight bold))
--- a/lisp/pcvs.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/pcvs.el	Sat Apr 09 02:16:29 2005 +0000
@@ -918,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.
--- a/lisp/progmodes/cc-fonts.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/cc-fonts.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; cc-fonts.el --- font lock support for CC Mode
 
-;; Copyright (C) 2002, 03 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;             2002- Martin Stjernholm
@@ -194,7 +194,7 @@
 (unless (c-face-name-p c-invalid-face-name)
   (defconst c-invalid-face 'c-invalid-face) ; Necessary in Emacs 19.
   (defface c-invalid-face
-    '((((class color) (background light)) (:foreground "red"))
+    '((((class color) (background light)) (:foreground "red1"))
       (((class color)) (:foreground "hotpink"))
       (t (:inverse-video t)))
     "Face used to highlight invalid syntax."
--- a/lisp/progmodes/compile.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/compile.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,7 +1,7 @@
 ;;; compile.el --- run compiler as inferior of Emacs, parse error messages
 
 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2001, 2003, 2004  Free Software Foundation, Inc.
+;;   2001, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Authors: Roland McGrath <roland@gnu.org>,
 ;;	    Daniel Pfeiffer <occitan@esperanto.org>
@@ -464,6 +464,8 @@
 (defface compilation-info-face
   '((((class color) (min-colors 16) (background light))
      (:foreground "Green3" :weight bold))
+    (((class color) (min-colors 88) (background dark))
+     (:foreground "Green1" :weight bold))
     (((class color) (min-colors 16) (background dark))
      (:foreground "Green" :weight bold))
     (((class color)) (:foreground "green" :weight bold))
@@ -1233,6 +1235,10 @@
   (make-local-variable 'compilation-messages-start)
   (make-local-variable 'compilation-error-screen-columns)
   (make-local-variable 'overlay-arrow-position)
+  (set (make-local-variable 'overlay-arrow-string) "=>")
+  (setq next-error-overlay-arrow-position nil)
+  (add-hook 'kill-buffer-hook
+	    (lambda () (setq next-error-overlay-arrow-position nil)) nil t)
   ;; Note that compilation-next-error-function is for interfacing
   ;; with the next-error function in simple.el, and it's only
   ;; coincidentally named similarly to compilation-next-error.
@@ -1641,8 +1647,9 @@
 			 (numberp next-error-highlight)))
 		(delete-overlay compilation-highlight-overlay))))))
     (when (and (eq next-error-highlight 'fringe-arrow))
-      (set (make-local-variable 'overlay-arrow-position)
-	   (copy-marker (line-beginning-position))))))
+      (setq next-error-overlay-arrow-position
+	    (copy-marker (line-beginning-position))))))
+
 
 (defun compilation-find-file (marker filename dir &rest formats)
   "Find a buffer for file FILENAME.
--- a/lisp/progmodes/cwarn.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/cwarn.el	Sat Apr 09 02:16:29 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/ebrowse.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/ebrowse.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; ebrowse.el --- Emacs C++ class browser & tags facility
 
-;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
+;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2005
 ;;  Free Software Foundation Inc.
 
 ;; Author: Gerd Moellmann <gerd@gnu.org>
@@ -158,13 +158,15 @@
 
 
 (defface ebrowse-tree-mark-face
-  '((t (:foreground "red")))
+  '((((min-colors 88)) (:foreground "red1"))
+    (t (:foreground "red")))
   "*The face used for the mark character in the tree."
   :group 'ebrowse-faces)
 
 
 (defface ebrowse-root-class-face
-  '((t (:weight bold :foreground "blue")))
+  '((((min-colors 88)) (:weight bold :foreground "blue1"))
+    (t (:weight bold :foreground "blue")))
   "*The face used for root classes in the tree."
   :group 'ebrowse-faces)
 
@@ -182,7 +184,8 @@
 
 
 (defface ebrowse-member-attribute-face
-  '((t (:foreground "red")))
+  '((((min-colors 88)) (:foreground "red1"))
+    (t (:foreground "red")))
   "*Face used to display member attributes."
   :group 'ebrowse-faces)
 
@@ -194,7 +197,8 @@
 
 
 (defface ebrowse-progress-face
-  '((t (:background "blue")))
+  '((((min-colors 88)) (:background "blue1"))
+    (t (:background "blue")))
   "*Face for progress indicator."
   :group 'ebrowse-faces)
 
--- a/lisp/progmodes/flymake.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/flymake.el	Sat Apr 09 02:16:29 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/glasses.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/glasses.el	Sat Apr 09 02:16:29 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/hideif.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/hideif.el	Sat Apr 09 02:16:29 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/idlw-help.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/idlw-help.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,7 +1,7 @@
 ;;; idlw-help.el --- HTML Help code for IDLWAVE
 ;; Copyright (c) 2000 Carsten Dominik
 ;; Copyright (c) 2001, 2002 J.D. Smith
-;; Copyright (c) 2003,2004 Free Software Foundation
+;; Copyright (c) 2003,2004,2005 Free Software Foundation
 ;;
 ;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
 ;;          Carsten Dominik <dominik@astro.uva.nl>
@@ -183,7 +183,8 @@
   :type 'string)
 
 (defface idlwave-help-link-face
-  '((((class color)) (:foreground "Blue"))
+  '((((min-colors 88) (class color)) (:foreground "Blue1"))
+    (((class color)) (:foreground "Blue"))
     (t (:weight bold)))
   "Face for highlighting links into IDLWAVE online help."
   :group 'idlwave-online-help)
--- a/lisp/progmodes/sh-script.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/sh-script.el	Sat Apr 09 02:16:29 2005 +0000
@@ -574,7 +574,7 @@
 ;; but it *did* have an asterisk in the docstring!
 (defcustom sh-builtins
   '((bash sh-append posix
-	  "." "alias" "bg" "bind" "builtin" "compgen" "complete"
+	  "." "alias" "bg" "bind" "builtin" "caller" "compgen" "complete"
           "declare" "dirs" "disown" "enable" "fc" "fg" "help" "history"
           "jobs" "kill" "let" "local" "popd" "printf" "pushd" "shopt"
           "source" "suspend" "typeset" "unalias")
@@ -779,7 +779,10 @@
 ;; Font-Lock support
 
 (defface sh-heredoc-face
-  '((((class color)
+  '((((min-colors 88) (class color)
+      (background dark))
+     (:foreground "yellow1" :weight bold))
+    (((class color)
       (background dark))
      (:foreground "yellow" :weight bold))
     (((class color)
@@ -791,6 +794,10 @@
   :group 'sh-indentation)
 (defvar sh-heredoc-face 'sh-heredoc-face)
 
+(defface sh-escaped-newline '((t :inherit font-lock-string-face))
+  "Face used for (non-escaped) backslash at end of a line in Shell-script mode."
+  :group 'sh-script
+  :version "22.1")
 
 (defvar sh-font-lock-keywords
   '((csh sh-append shell
@@ -815,7 +822,7 @@
     ;; The next entry is only used for defining the others
     (shell sh-append executable-font-lock-keywords
            ;; Using font-lock-string-face here confuses sh-get-indent-info.
-           ("\\\\$" 0 font-lock-warning-face)
+           ("\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\)$" 3 'sh-escaped-newline)
 	   ("\\\\[^A-Za-z0-9]" 0 font-lock-string-face)
 	   ("\\${?\\([A-Za-z_][A-Za-z0-9_]*\\|[0-9]+\\|[$*_]\\)" 1
 	     font-lock-variable-name-face))
--- a/lisp/progmodes/tcl.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/tcl.el	Sat Apr 09 02:16:29 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>
@@ -41,6 +42,7 @@
 ;; * tcl-typeword-list is similar, but uses font-lock-type-face.
 ;; * tcl-keyword-list is a list of keywords.  I've generally used this
 ;; for flow-control words.  Eg I add "unwind_protect" to this list.
+;; * tcl-builtin-list lists commands to be given font-lock-builtin-face.
 ;; * tcl-type-alist can be used to minimally customize indentation
 ;; according to context.
 
@@ -192,6 +194,11 @@
 quoted for Tcl."
   :type 'string)
 
+(defface tcl-escaped-newline '((t :inherit font-lock-string-face))
+  "Face used for (non-escaped) backslash at end of a line in Tcl mode."
+  :group 'tcl
+  :version "22.1")
+
 ;;
 ;; Keymaps, abbrevs, syntax tables.
 ;;
@@ -371,6 +378,21 @@
 Default list includes some TclX keywords.
 Call `tcl-set-font-lock-keywords' after changing this list.")
 
+(defvar tcl-builtin-list
+  '("after" "append" "array" "bgerror" "binary" "catch" "cd" "clock"
+    "close" "concat" "console" "dde" "encoding" "eof" "exec" "expr"
+    "fblocked" "fconfigure" "fcopy" "file" "fileevent" "flush"
+    "format" "gets" "glob" "history" "incr" "info" "interp" "join"
+    "lappend" "lindex" "linsert" "list" "llength" "load" "lrange"
+    "lreplace" "lsort" "namespace" "open" "package" "pid" "puts" "pwd"
+    "read" "regexp" "registry" "regsub" "rename" "scan" "seek" "set"
+    "socket" "source" "split" "string" "subst" "tell" "time" "trace"
+    "unknown" "unset" "vwait")
+  "List of Tcl commands.  Used only for highlighting.
+Call `tcl-set-font-lock-keywords' after changing this list.
+This list excludes those commands already found in `tcl-proc-list' and
+`tcl-keyword-list'.")
+
 (defvar tcl-font-lock-keywords nil
   "Keywords to highlight for Tcl.  See variable `font-lock-keywords'.
 This variable is generally set from `tcl-proc-regexp',
@@ -466,14 +488,30 @@
 		       "\\(\\s-\\|$\\)")
 	       2 'font-lock-type-face)
 
+         (list (concat "\\_<" (regexp-opt tcl-builtin-list t) "\\_>")
+	       1 'font-lock-builtin-face)
+
+         ;; When variable names are enclosed in {} braces, any
+         ;; character can be used. Otherwise just letters, digits,
+         ;; underscores.  Variable names can be prefixed with any
+         ;; number of "namespace::" qualifiers.  A leading "::" refers
+         ;; to the global namespace.
+         '("\\${\\([^}]+\\)}" 1 font-lock-variable-name-face)
+         '("\\$\\(\\(?:::\\)?\\(?:[[:alnum:]_]+::\\)*[[:alnum:]_]+\\)"
+           1 font-lock-variable-name-face)
+         '("\\(?:\\s-\\|^\\|\\[\\)set\\s-+{\\([^}]+\\)}"
+           1 font-lock-variable-name-face keep)
+         '("\\(?:\\s-\\|^\\|\\[\\)set\\s-+\\(\\(?:::\\)?\
+\\(?:[[:alnum:]_]+::\\)*[[:alnum:]_]+\\)"
+           1 font-lock-variable-name-face keep)
+
+         '("\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\)$" 3 'tcl-escaped-newline)
+
 	 ;; 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-\\|$\\)")
-	       2))))
+	 (cons (concat "\\_<" (regexp-opt tcl-keyword-list t) "\\_>")
+	       1))))
 
 (if tcl-proc-regexp
     ()
@@ -544,8 +582,8 @@
 
   (set (make-local-variable 'font-lock-defaults)
        '(tcl-font-lock-keywords nil nil nil beginning-of-defun
-	 (font-lock-syntactic-keywords . tcl-font-lock-syntactic-keywords)
-	 (parse-sexp-lookup-properties . t)))
+ 	 (font-lock-syntactic-keywords . tcl-font-lock-syntactic-keywords)
+ 	 (parse-sexp-lookup-properties . t)))
 
   (set (make-local-variable 'imenu-generic-expression)
        tcl-imenu-generic-expression)
@@ -1507,5 +1545,5 @@
 
 (provide 'tcl)
 
-;;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
+;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
 ;;; tcl.el ends here
--- a/lisp/progmodes/vhdl-mode.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/progmodes/vhdl-mode.el	Sat Apr 09 02:16:29 2005 +0000
@@ -12593,7 +12593,9 @@
  'vhdl-highlight-faces 'font-lock-variable-name-face 'custom-face)
 
 (defface vhdl-font-lock-prompt-face
-  '((((class color) (background light)) (:foreground "Red" :bold t))
+  '((((min-colors 88) (class color) (background light)) 
+     (:foreground "Red1" :bold t))
+    (((class color) (background light)) (:foreground "Red" :bold t))
     (((class color) (background dark)) (:foreground "Pink" :bold t))
     (t (:inverse-video t)))
   "Font lock mode face used to highlight prompts."
@@ -12634,6 +12636,8 @@
 
 (defface vhdl-font-lock-reserved-words-face
   '((((class color) (background light)) (:foreground "Orange" :bold t))
+    (((min-colors 88) (class color) (background dark)) 
+     (:foreground "Yellow1" :bold t))
     (((class color) (background dark)) (:foreground "Yellow" :bold t))
     (t ()))
   "Font lock mode face used to highlight additional reserved words."
@@ -14975,7 +14979,8 @@
   :group 'speedbar-faces)
 
 (defface vhdl-speedbar-architecture-face
-  '((((class color) (background light)) (:foreground "Blue"))
+  '((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
+    (((class color) (background light)) (:foreground "Blue"))
     (((class color) (background dark)) (:foreground "LightSkyBlue")))
   "Face used for displaying architecture names."
   :group 'speedbar-faces)
@@ -15000,6 +15005,7 @@
 
 (defface vhdl-speedbar-instantiation-face
   '((((class color) (background light)) (:foreground "Brown"))
+    (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1"))
     (((class color) (background dark)) (:foreground "Yellow")))
   "Face used for displaying instantiation names."
   :group 'speedbar-faces)
@@ -15017,7 +15023,9 @@
   :group 'speedbar-faces)
 
 (defface vhdl-speedbar-architecture-selected-face
-  '((((class color) (background light)) (:foreground "Blue" :underline t))
+  '((((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
+    (((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
+    (((class color) (background light)) (:foreground "Blue" :underline t))
     (((class color) (background dark)) (:foreground "LightSkyBlue" :underline t)))
   "Face used for displaying architecture names."
   :group 'speedbar-faces)
@@ -15036,6 +15044,7 @@
 
 (defface vhdl-speedbar-instantiation-selected-face
   '((((class color) (background light)) (:foreground "Brown" :underline t))
+    (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1" :underline t))
     (((class color) (background dark)) (:foreground "Yellow" :underline t)))
   "Face used for displaying instantiation names."
   :group 'speedbar-faces)
--- a/lisp/reveal.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/reveal.el	Sat Apr 09 02:16:29 2005 +0000
@@ -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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/simple.el	Sat Apr 09 02:16:29 2005 +0000
@@ -114,6 +114,10 @@
 
 (defvar next-error-highlight-timer nil)
 
+(defvar next-error-overlay-arrow-position nil)
+(put 'next-error-overlay-arrow-position 'overlay-arrow-string "=>")
+(add-to-list 'overlay-arrow-variable-list 'next-error-overlay-arrow-position)
+
 (defvar next-error-last-buffer nil
   "The most recent next-error buffer.
 A buffer becomes most recent when its compilation, grep, or
@@ -302,7 +306,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)
--- a/lisp/smerge-mode.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/smerge-mode.el	Sat Apr 09 02:16:29 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
@@ -76,8 +76,12 @@
   :type 'boolean)
 
 (defface smerge-mine-face
-  '((((background light))
+  '((((min-colors 88) (background light))
+     (:foreground "blue1"))
+    (((background light))
      (:foreground "blue"))
+    (((min-colors 88) (background dark))
+     (:foreground "cyan1"))
     (((background dark))
      (:foreground "cyan")))
   "Face for your code."
@@ -94,7 +98,9 @@
 (defvar smerge-other-face 'smerge-other-face)
 
 (defface smerge-base-face
-  '((((background light))
+  '((((min-colors 88) (background light))
+     (:foreground "red1"))
+    (((background light))
      (:foreground "red"))
     (((background dark))
      (:foreground "orange")))
@@ -667,7 +673,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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/startup.el	Sat Apr 09 02:16:29 2005 +0000
@@ -657,7 +657,7 @@
     (while (and (not done) args)
       (let* ((longopts '(("--no-init-file") ("--no-site-file") ("--user")
                          ("--debug-init") ("--iconic") ("--icon-type")
-			 ("--no-blinking-cursor")))
+			 ("--no-blinking-cursor") ("--bare-bones")))
              (argi (pop args))
              (orig-argi argi)
              argval)
@@ -677,7 +677,7 @@
 		(setq argval nil
                       argi orig-argi)))))
 	(cond
-	 ((equal argi "-Q")
+	 ((member argi '("-Q" "-bare-bones"))
 	  (setq init-file-user nil
 		site-run-file nil
 		no-blinking-cursor t
@@ -1004,8 +1004,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 "
@@ -1069,14 +1088,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)))))
@@ -1461,9 +1484,16 @@
 			    nil t))
 		       (error nil))
 		   (kill-buffer buffer)))))
-      ;; Stop any "Loading image..." message hiding echo-area-message.
-      (use-fancy-splash-screens-p)
-      (display-startup-echo-area-message))
+      ;; display-splash-screen at the end of command-line-1 calls
+      ;; use-fancy-splash-screens-p. This can cause image.el to be
+      ;; loaded, putting "Loading image... done" in the echo area.
+      ;; This hides startup-echo-area-message. So
+      ;; use-fancy-splash-screens-p is called here simply to get the
+      ;; loading of image.el (if needed) out of the way before
+      ;; display-startup-echo-area-message runs.
+      (progn
+        (use-fancy-splash-screens-p)
+        (display-startup-echo-area-message)))
 
   ;; Delay 2 seconds after an init file error message
   ;; was displayed, so user can read it.
--- a/lisp/term.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/term.el	Sat Apr 09 02:16:29 2005 +0000
@@ -3231,7 +3231,7 @@
    ((eq char ?P)
     (term-delete-chars (max 1 term-terminal-parameter)))
    ;; \E[@ - insert spaces
-   ((eq char ?@)
+   ((eq char ?@) ;; (terminfo: ich)
     (term-insert-spaces (max 1 term-terminal-parameter)))
    ;; \E[?h - DEC Private Mode Set
    ((eq char ?h)
--- a/lisp/term/mac-win.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/term/mac-win.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1178,7 +1178,10 @@
 	  (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
 	;; Create a fontset from FONT.  The fontset name is
 	;; generated from FONT.
-	(create-fontset-from-ascii-font font resolved-name "startup"))))
+	(if (and (string= "mac" (aref xlfd-fields xlfd-regexp-registry-subnum))
+		 (string= "roman" (aref xlfd-fields xlfd-regexp-encoding-subnum)))
+	    (create-fontset-from-mac-roman-font font resolved-name "startup")
+	  (create-fontset-from-ascii-font font resolved-name "startup")))))
 
 ;; Apply a geometry resource to the initial frame.  Put it at the end
 ;; of the alist, so that anything specified on the command line takes
--- a/lisp/term/xterm.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/term/xterm.el	Sat Apr 09 02:16:29 2005 +0000
@@ -107,15 +107,15 @@
     ("red"            1 (205   0   0))	; red3
     ("green"          2 (  0 205   0))	; green3
     ("yellow"         3 (205 205   0))	; yellow3
-    ("blue"           4 (  0   0 205))	; blue3
+    ("blue"           4 (  0   0 238))	; blue2
     ("magenta"        5 (205   0 205))	; magenta3
     ("cyan"           6 (  0 205 205))	; cyan3
     ("white"          7 (229 229 229))	; gray90
-    ("brightblack"    8 ( 77  77  77))	; gray30
+    ("brightblack"    8 (127 127 127))	; gray50
     ("brightred"      9 (255   0   0))	; red
     ("brightgreen"   10 (  0 255   0))	; green
     ("brightyellow"  11 (255 255   0))	; yellow
-    ("brightblue"    12 (  0   0 255))	; blue
+    ("brightblue"    12 (92   92 255))	; rgb:5c/5c/ff
     ("brightmagenta" 13 (255   0 255))	; magenta
     ("brightcyan"    14 (  0 255 255))	; cyan
     ("brightwhite"   15 (255 255 255)))	; white
--- a/lisp/textmodes/bibtex.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/bibtex.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/enriched.el	Sat Apr 09 02:16:29 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/flyspell.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/flyspell.el	Sat Apr 09 02:16:29 2005 +0000
@@ -221,10 +221,10 @@
 
 (defcustom flyspell-large-region 1000
   "*The threshold that determines if a region is small.
-The `flyspell-region' function is invoked if the region is small, the
-word are checked one after the other using regular flyspell check
-means.  If the region is large, a new Ispell process is spawned to get
-speed."
+If the region is smaller than this number of characters,
+`flyspell-region' checks the words sequentially using regular
+flyspell methods.  Else, if the region is large, a new Ispell process is
+spawned for speed."
   :group 'flyspell
   :version "21.1"
   :type 'number)
--- a/lisp/textmodes/org.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/org.el	Sat Apr 09 02:16:29 2005 +0000
@@ -279,7 +279,7 @@
   :group 'org-startup
   :type 'boolean)
 
-(defcustom org-insert-mode-line-in-empty-file t
+(defcustom org-insert-mode-line-in-empty-file nil
   "Non-nil means insert the first line setting Org-mode in empty files.
 When the function `org-mode' is called interactively in an empty, this
 normally means that the file name does not automatically trigger Org-mode.
@@ -3477,7 +3477,7 @@
 (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" ""))
+  (add-to-diary-list original-date "Org-mode dummy" "" nil))
 
 (defun org-add-file (&optional file)
   "Add current file to the list of files in variable `org-agenda-files'.
--- a/lisp/textmodes/refill.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/refill.el	Sat Apr 09 02:16:29 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/table.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/table.el	Sat Apr 09 02:16:29 2005 +0000
@@ -683,7 +683,9 @@
   :group 'table)
 
 (defface table-cell-face
-  '((((class color))
+  '((((min-colors 88) (class color))
+     (:foreground "gray90" :background "blue1"))
+    (((class color))
      (:foreground "gray90" :background "blue"))
     (t (:bold t)))
   "*Face used for table cell contents."
--- a/lisp/textmodes/tex-mode.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/textmodes/tex-mode.el	Sat Apr 09 02:16:29 2005 +0000
@@ -573,7 +573,7 @@
 	      2 '(tex-font-lock-append-prop 'italic) 'append)
 	;; This is separate from the previous one because of cases like
 	;; {\em foo {\bf bar} bla} where both match.
-	(list (concat "\\\\\\(bf\\)\\>" args)
+	(list (concat "\\\\\\(bf\\(series\\)?\\)\\>" args)
 	      2 '(tex-font-lock-append-prop 'bold) 'append)))))
    "Gaudy expressions to highlight in TeX modes.")
 
--- a/lisp/url/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/url/ChangeLog	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/url/url-handlers.el	Sat Apr 09 02:16:29 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/wdired.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/wdired.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,10 +1,10 @@
 ;;; wdired.el --- Rename files editing their names in dired buffers
 
-;; Copyright (C) 2001, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Filename: wdired.el
-;; Author: Juan León Lahoz García <juan-leon.lahoz@tecsidel.es>
-;; Version: 1.91
+;; Author: Juan León Lahoz García <juanleon1@gmail.com>
+;; Version: 2.0
 ;; Keywords: dired, environment, files, renaming
 
 ;; This file is part of GNU Emacs.
@@ -156,9 +156,8 @@
 
 ;;; Code:
 
+(defvar dired-backup-overwrite) ; Only in emacs 20.x this is a custom var
 (eval-when-compile
-  (require 'advice)
-  (defvar dired-backup-overwrite) ; Only in emacs 20.x this is a custom var
   (set (make-local-variable 'byte-compile-dynamic) t))
 
 (eval-and-compile
@@ -199,19 +198,6 @@
 		 (other :tag "As in dired mode" t))
   :group 'wdired)
 
-(defcustom wdired-advise-functions t
-  "*If t some editing commands are advised when wdired is loaded.
-The advice only has effect in wdired mode.  These commands are
-`query-replace' `query-replace-regexp' `replace-string', and the
-advice makes them to ignore read-only regions, so no attempts to
-modify these regions are done by them, and so they don't end
-prematurely.
-
-Setting this to nil does not unadvise the functions, if they are
-already advised, but new Emacs will not advise them."
-  :type 'boolean
-  :group 'wdired)
-
 (defcustom wdired-allow-to-redirect-links t
   "*If non-nil, the target of the symbolic links can be changed also.
 In systems without symbolic links support, this variable has no effect
@@ -309,6 +295,7 @@
   (interactive)
   (set (make-local-variable 'wdired-old-content)
        (buffer-substring (point-min) (point-max)))
+  (set (make-local-variable 'query-replace-skip-read-only) t)
   (use-local-map wdired-mode-map)
   (force-mode-line-update)
   (setq buffer-read-only nil)
@@ -664,64 +651,6 @@
   (interactive "p")
   (wdired-xcase-word 'capitalize-word arg))
 
-;; The following code is related to advice some interactive functions
-;; to make some editing commands in wdired mode not to fail trying to
-;; change read-only text. Notice that some advises advice and unadvise
-;; them-self to another functions: search-forward and
-;; re-search-forward. This is to keep these functions advised only
-;; when is necessary. Since they are built-in commands used heavily in
-;; lots of places, to have it permanently advised would cause some
-;; performance loss.
-
-
-(defun wdired-add-skip-in-replace (command)
-  "Advice COMMAND to skip matches while they have read-only properties.
-This is useful to avoid \"read-only\" errors in search and replace
-commands.  This advice only has effect in wdired mode."
-  (eval
-    `(defadvice ,command (around wdired-discard-read-only activate)
-       ,(format "Make %s to work better with wdired,\n%s."  command
-		"skipping read-only matches when invoked without argument")
-       ad-do-it
-       (if (eq major-mode 'wdired-mode)
-	   (while (and ad-return-value
-		       (text-property-any
-			(max 1 (1- (match-beginning 0))) (match-end 0)
-			'read-only t))
-	     ad-do-it))
-       ad-return-value)))
-
-
-(defun wdired-add-replace-advice (command)
-  "Advice COMMAND to skip matches while they have read-only properties.
-This is useful to avoid \"read-only\" errors in search and replace
-commands.  This advice only has effect in wdired mode."
-  (eval
-   `(defadvice ,command (around wdired-grok-read-only activate)
-       ,(format "Make %s to work better with wdired,\n%s."  command
-		"skipping read-only matches when invoked without argument")
-       (if (eq major-mode 'wdired-mode)
-           (progn
-             (wdired-add-skip-in-replace 'search-forward)
-             (wdired-add-skip-in-replace 're-search-forward)
-             (unwind-protect 
-                 ad-do-it
-               (progn
-                 (ad-remove-advice 'search-forward
-                                   'around 'wdired-discard-read-only)
-                 (ad-remove-advice 're-search-forward
-                                   'around 'wdired-discard-read-only)
-                 (ad-update 'search-forward)
-                 (ad-update 're-search-forward))))
-         ad-do-it)
-       ad-return-value)))
-
-
-(if wdired-advise-functions
-    (progn
-      (mapcar 'wdired-add-replace-advice
-              '(query-replace query-replace-regexp replace-string))))
-
 
 ;; The following code deals with changing the access bits (or
 ;; permissions) of the files.
--- a/lisp/whitespace.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/whitespace.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; whitespace.el --- warn about and clean bogus whitespaces in the file
 
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
 
 ;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
 ;; Keywords: convenience
@@ -319,7 +319,7 @@
   :group 'faces)
 
 (defface whitespace-highlight-face '((((class color) (background light))
-				      (:background "green"))
+				      (:background "green1"))
 				     (((class color) (background dark))
 				      (:background "sea green"))
 				     (((class grayscale mono)
@@ -489,16 +489,14 @@
 				  (if whitespace-spacetab "s")
 				  (if whitespace-trailing "t")))))
 	      (whitespace-update-modeline whitespace-this-modeline)
-	      (save-excursion
-		(get-buffer-create whitespace-errbuf)
-		(kill-buffer whitespace-errbuf)
-		(get-buffer-create whitespace-errbuf)
-		(set-buffer whitespace-errbuf)
+	      (if (get-buffer whitespace-errbuf)
+		  (kill-buffer whitespace-errbuf))
+	      (with-current-buffer (get-buffer-create whitespace-errbuf)
 		(if whitespace-errmsg
 		    (progn
 		      (insert whitespace-errmsg)
 		      (if (not (or quiet whitespace-silent))
-			  (display-buffer whitespace-errbuf t))
+			  (display-buffer (current-buffer) t))
 		      (if (not quiet)
 			  (message "Whitespaces: [%s%s] in %s"
 				   whitespace-this-modeline
@@ -511,9 +509,7 @@
 		  (if (and (not quiet) (not (equal whitespace-clean-msg "")))
 		      (message "%s %s" whitespace-filename
 			       whitespace-clean-msg))))))))
-    (if whitespace-error
-	t
-      nil)))
+    whitespace-error))
 
 ;;;###autoload
 (defun whitespace-region (s e)
@@ -736,23 +732,17 @@
 (defun whitespace-highlight-the-space (b e)
   "Highlight the current line, unhighlighting a previously jumped to line."
   (if whitespace-display-spaces-in-color
-      (progn
+      (let ((ol (whitespace-make-overlay b e)))
 	(whitespace-unhighlight-the-space)
-	(add-to-list 'whitespace-highlighted-space
-		     (whitespace-make-overlay b e))
-	(whitespace-overlay-put (whitespace-make-overlay b e) 'face
-				'whitespace-highlight-face))))
+	(push ol whitespace-highlighted-space)
+	(whitespace-overlay-put ol 'face 'whitespace-highlight-face))))
 ;;  (add-hook 'pre-command-hook 'whitespace-unhighlight-the-space))
 
 (defun whitespace-unhighlight-the-space ()
   "Unhighlight the currently highlight line."
   (if (and whitespace-display-spaces-in-color whitespace-highlighted-space)
-      (let ((whitespace-this-space nil))
-	(while whitespace-highlighted-space
-	  (setq whitespace-this-space (car whitespace-highlighted-space))
-	  (setq whitespace-highlighted-space
-		(cdr whitespace-highlighted-space))
-	  (whitespace-delete-overlay whitespace-this-space))
+      (progn
+	(mapc 'whitespace-delete-overlay whitespace-highlighted-space)
 	(setq whitespace-highlighted-space nil))
     (remove-hook 'pre-command-hook 'whitespace-unhighlight-the-space)))
 
@@ -863,5 +853,5 @@
 
 (provide 'whitespace)
 
-;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
+;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
 ;;; whitespace.el ends here
--- a/lisp/wid-edit.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/wid-edit.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; wid-edit.el --- Functions for creating and using widgets -*-byte-compile-dynamic: t;-*-
 ;;
-;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004, 2005  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: FSF
@@ -883,7 +883,9 @@
        (lookup-key widget-global-map (this-command-keys))))))
 
 (defface widget-button-pressed-face
-  '((((class color))
+  '((((min-colors 88) (class color))
+     (:foreground "red1"))
+    (((class color))
      (:foreground "red"))
     (t
      (:weight bold :underline t)))
@@ -1185,9 +1187,17 @@
     ;; or if a special `boundary' field has been added after the widget
     ;; field.
     (if (overlayp overlay)
-	(if (and (not (eq (get-char-property (overlay-end overlay)
-					     'field
-					     (widget-field-buffer widget))
+	(if (and (not (eq (with-current-buffer
+			      (widget-field-buffer widget)
+			    (save-restriction
+			      ;; `widget-narrow-to-field' can be
+			      ;; active when this function is called
+			      ;; from an change-functions hook. So
+			      ;; temporarily remove field narrowing
+			      ;; before to call `get-char-property'.
+			      (widen)
+			      (get-char-property (overlay-end overlay)
+						 'field)))
 			  'boundary))
 		 (or widget-field-add-space
 		     (null (widget-get widget :size))))
--- a/lisp/woman.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/woman.el	Sat Apr 09 02:16:29 2005 +0000
@@ -1,6 +1,6 @@
 ;;; woman.el --- browse UN*X manual pages `wo (without) man'
 
-;; Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Francis J. Wright <F.J.Wright@qmul.ac.uk>
 ;; Maintainer: Francis J. Wright <F.J.Wright@qmul.ac.uk>
@@ -876,13 +876,16 @@
 ;; You should probably select either italic or underline as you prefer, but
 ;; not both, although italic and underline work together perfectly well!
 (defface woman-italic-face
-  `((((background light)) (:slant italic :underline t :foreground "red"))
+  `((((min-colors 88) (background light)) 
+     (:slant italic :underline t :foreground "red1"))
+    (((background light)) (:slant italic :underline t :foreground "red"))
     (((background dark)) (:slant italic :underline t)))
   "Face for italic font in man pages."
   :group 'woman-faces)
 
 (defface woman-bold-face
-  '((((background light)) (:weight bold :foreground "blue"))
+  '((((min-colors 88) (background light)) (:weight bold :foreground "blue1"))
+    (((background light)) (:weight bold :foreground "blue"))
     (((background dark)) (:weight bold :foreground "green2")))
   "Face for bold font in man pages."
   :group 'woman-faces)
@@ -892,6 +895,7 @@
 ;; non-standard fonts seem to do so badly or in idiosyncratic ways!)
 (defface woman-unknown-face
   '((((background light)) (:foreground "brown"))
+    (((min-colors 88) (background dark)) (:foreground "cyan1"))
     (((background dark)) (:foreground "cyan")))
   "Face for all unknown fonts in man pages."
   :group 'woman-faces)
--- a/lisp/xt-mouse.el	Sat Apr 09 01:45:41 2005 +0000
+++ b/lisp/xt-mouse.el	Sat Apr 09 02:16:29 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	Sat Apr 09 01:45:41 2005 +0000
+++ b/lispref/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,23 @@
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+	* modes.texi (Search-based Fontification): Fix cross references.
+	Use consistent terminology.  Document anchored highlighting.
+
+2005-04-05  Lute Kamstra  <lute@gnu.org>
+
+	* modes.texi (Defining Minor Modes): Document :group keyword
+	argument and its default value.
+
+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.
@@ -2333,7 +2353,7 @@
 
 	* files.texi (Changing Files): copy-file allows dir as NEWNAME.
 	(Magic File Names): Specify precedence order of handlers.
-o
+
 	* commands.texi (Command Overview): Emacs server runs pre-command-hook
 	and post-command-hook.
 	(Waiting): New calling convention for sit-for.
--- a/lispref/hooks.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/lispref/hooks.texi	Sat Apr 09 02:16:29 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/modes.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/lispref/modes.texi	Sat Apr 09 02:16:29 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, 1994, 1995, 1998, 1999, 
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999,
 @c   2003, 2004, 2005 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/modes
@@ -1127,6 +1127,12 @@
 corresponding values.  A few keywords have special meanings:
 
 @table @code
+@item :group @var{group}
+Custom group name to use in all generated @code{defcustom} forms.
+Defaults to @var{mode} without the possible trailing @samp{-mode}.  Be
+aware that this default may not be a valid customization group defined
+with @code{defgroup}.  Please make sure it is.
+
 @item :global @var{global}
 If non-@code{nil} specifies that the minor mode should be global.
 By default, minor modes are buffer-local.
@@ -2105,7 +2111,7 @@
 each element, it finds and handles all matches.  Ordinarily, once
 part of the text has been fontified already, this cannot be overridden
 by a subsequent match in the same text; but you can specify different
-behavior using the @var{override} element of a @var{highlighter}.
+behavior using the @var{override} element of a @var{subexp-highlighter}.
 
   Each element of @code{font-lock-keywords} should have one of these
 forms:
@@ -2116,14 +2122,14 @@
 @code{font-lock-keyword-face}.  For example,
 
 @example
-;; @r{Highlight discrete occurrences of @samp{foo}}
+;; @r{Highlight occurrences of the word @samp{foo}}
 ;; @r{using @code{font-lock-keyword-face}.}
 "\\<foo\\>"
 @end example
 
-The function @code{regexp-opt} (@pxref{Syntax of Regexps}) is useful for
-calculating optimal regular expressions to match a number of different
-keywords.
+The function @code{regexp-opt} (@pxref{Regexp Functions}) is useful
+for calculating optimal regular expressions to match a number of
+different keywords.
 
 @item @var{function}
 Find text by calling @var{function}, and highlight the matches
@@ -2140,10 +2146,10 @@
 @var{function} fails.  On failure, @var{function} need not reset point
 in any particular way.
 
-@item (@var{matcher} . @var{match})
+@item (@var{matcher} . @var{subexp})
 In this kind of element, @var{matcher} is either a regular
 expression or a function, as described above.  The @sc{cdr},
-@var{match}, specifies which subexpression of @var{matcher} should be
+@var{subexp}, specifies which subexpression of @var{matcher} should be
 highlighted (instead of the entire text that @var{matcher} matched).
 
 @example
@@ -2153,8 +2159,8 @@
 @end example
 
 If you use @code{regexp-opt} to produce the regular expression
-@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Syntax
-of Regexps}) to calculate the value for @var{match}.
+@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Regexp
+Functions}) to calculate the value for @var{subexp}.
 
 @item (@var{matcher} . @var{facespec})
 In this kind of element, @var{facespec} is an object which specifies
@@ -2167,37 +2173,39 @@
 ("fubar" . fubar-face)
 @end example
 
-However, @var{facespec} can also be a list of the form
+However, @var{facespec} can also be a list of the form:
 
 @example
 (face @var{face} @var{prop1} @var{val1} @var{prop2} @var{val2}@dots{})
 @end example
 
-to specify various text properties to put on the text that matches.
-If you do this, be sure to add the other text property names that you
-set in this way to the value of @code{font-lock-extra-managed-props}
-so that the properties will also be cleared out when they are no longer
-appropriate.
-
-@item (@var{matcher} . @var{highlighter})
-In this kind of element, @var{highlighter} is a list
+to specify the face @var{face} and various additional text properties
+to put on the text that matches.  If you do this, be sure to add the
+other text property names that you set in this way to the value of
+@code{font-lock-extra-managed-props} so that the properties will also
+be cleared out when they are no longer appropriate.  Alternatively,
+you can set the variable @code{font-lock-unfontify-region-function} to
+a function that clears these properties.
+
+@item (@var{matcher} . @var{subexp-highlighter})
+In this kind of element, @var{subexp-highlighter} is a list
 which specifies how to highlight matches found by @var{matcher}.
-It has the form
+It has the form:
 
 @example
-(@var{subexp} @var{facespec} @var{override} @var{laxmatch})
+(@var{subexp} @var{facespec} [[@var{override} [@var{laxmatch}]])
 @end example
 
 The @sc{car}, @var{subexp}, is an integer specifying which subexpression
 of the match to fontify (0 means the entire matching text).  The second
 subelement, @var{facespec}, specifies the face, as described above.
 
-The last two values in @var{highlighter}, @var{override} and
-@var{laxmatch}, are flags.  If @var{override} is @code{t}, this
-element can override existing fontification made by previous elements
-of @code{font-lock-keywords}.  If it is @code{keep}, then each
-character is fontified if it has not been fontified already by some
-other element.  If it is @code{prepend}, the face specified by
+The last two values in @var{subexp-highlighter}, @var{override} and
+@var{laxmatch}, are optional flags.  If @var{override} is @code{t},
+this element can override existing fontification made by previous
+elements of @code{font-lock-keywords}.  If it is @code{keep}, then
+each character is fontified if it has not been fontified already by
+some other element.  If it is @code{prepend}, the face specified by
 @var{facespec} is added to the beginning of the @code{font-lock-face}
 property.  If it is @code{append}, the face is added to the end of the
 @code{font-lock-face} property.
@@ -2213,8 +2221,8 @@
 Here are some examples of elements of this kind, and what they do:
 
 @smallexample
-;; @r{Highlight occurrences of either @samp{foo} or @samp{bar},}
-;; @r{using @code{foo-bar-face}, even if they have already been highlighted.}
+;; @r{Highlight occurrences of either @samp{foo} or @samp{bar}, using}
+;; @r{@code{foo-bar-face}, even if they have already been highlighted.}
 ;; @r{@code{foo-bar-face} should be a variable whose value is a face.}
 ("foo\\|bar" 0 foo-bar-face t)
 
@@ -2224,64 +2232,71 @@
 (fubar-match 1 fubar-face)
 @end smallexample
 
-@item (@var{matcher} @var{highlighters}@dots{})
-This sort of element specifies several @var{highlighter} lists for a
-single @var{matcher}.  In order for this to be useful, each
-@var{highlighter} should have a different value of @var{subexp}; that is,
-each one should apply to a different subexpression of @var{matcher}.
-
-@ignore
-@item (@var{matcher} . @var{anchored})
-In this kind of element, @var{anchored} acts much like a
-@var{highlighter}, but it is more complex and can specify multiple
-successive searches.
-
-For highlighting single items, typically only @var{highlighter} is
-required.  However, if an item or (typically) items are to be
-highlighted following the instance of another item (the anchor) then
-@var{anchored} may be required.
-
-It has this format:
+@item (@var{matcher} . @var{anchored-highlighter})
+In this kind of element, @var{anchored-highlighter} specifies how to
+highlight text that follows a match found by @var{matcher}.  So a
+match found by @var{matcher} acts as the anchor for further searches
+specified by @var{anchored-highlighter}.  @var{anchored-highlighter}
+is a list of the following form:
 
 @example
-(@var{submatcher} @var{pre-match-form} @var{post-match-form} @var{highlighters}@dots{})
-@end example
-
-@c I can't parse this text -- rms
-where @var{submatcher} is much like @var{matcher}, with one
-exception---see below.  @var{pre-match-form} and @var{post-match-form}
-are evaluated before the first, and after the last, instance
-@var{anchored}'s @var{submatcher} is used.  Therefore they can be used
-to initialize before, and cleanup after, @var{submatcher} is used.
-Typically, @var{pre-match-form} is used to move to some position
-relative to the original @var{submatcher}, before starting with
-@var{anchored}'s @var{submatcher}.  @var{post-match-form} might be used
-to move, before resuming with @var{anchored}'s parent's @var{matcher}.
-
-For example, an element of the form highlights (if not already highlighted):
-
-@example
-("\\<anchor\\>" (0 anchor-face) ("\\<item\\>" nil nil (0 item-face)))
+(@var{anchored-matcher} @var{pre-form} @var{post-form}
+                        @var{subexp-highlighters}@dots{})
 @end example
 
-Discrete occurrences of @samp{anchor} in the value of
-@code{anchor-face}, and subsequent discrete occurrences of @samp{item}
-(on the same line) in the value of @code{item-face}.  (Here
-@var{pre-match-form} and @var{post-match-form} are @code{nil}.
-Therefore @samp{item} is initially searched for starting from the end of
-the match of @samp{anchor}, and searching for subsequent instance of
-@samp{anchor} resumes from where searching for @samp{item} concluded.)
-
-The above-mentioned exception is as follows.  The limit of the
-@var{submatcher} search defaults to the end of the line after
-@var{pre-match-form} is evaluated.  However, if @var{pre-match-form}
-returns a position greater than the position after @var{pre-match-form}
-is evaluated, that position is used as the limit of the search.  It is
-generally a bad idea to return a position greater than the end of the
-line; in other words, the @var{submatcher} search should not span lines.
-
-@item (@var{matcher} @var{highlighters-or-anchoreds} ...)
-@end ignore
+Here, @var{anchored-matcher}, like @var{matcher}, is either a regular
+expression or a function.  After a match of @var{matcher} is found,
+point is at the end of the match.  Now, Font Lock evaluates the form
+@var{pre-form}.  Then it searches for matches of
+@var{anchored-matcher} and uses @var{subexp-highlighters} to highlight
+these.  A @var{subexp-highlighter} is as described above.  Finally,
+Font Lock evaluates @var{post-form}.
+
+The forms @var{pre-form} and @var{post-form} can be used to initialize
+before, and cleanup after, @var{anchored-matcher} is used.  Typically,
+@var{pre-form} is used to move point to some position relative to the
+match of @var{matcher}, before starting with @var{anchored-matcher}.
+@var{post-form} might be used to move back, before resuming with
+@var{matcher}.
+
+After Font Lock evaluates @var{pre-form}, it does not search for
+@var{anchored-matcher} beyond the end of the line.  However, if
+@var{pre-form} returns a buffer position that is greater than the
+position of point after @var{pre-form} is evaluated, then the position
+returned by @var{pre-form} is used as the limit of the search instead.
+It is generally a bad idea to return a position greater than the end
+of the line; in other words, the @var{anchored-matcher} search should
+not span lines.
+
+For example,
+
+@smallexample
+;; @r{Highlight occurrences of the word @samp{item} following}
+;; @r{an occurrence of the word @samp{anchor} (on the same line)}
+;; @r{in the value of @code{item-face}.}
+("\\<anchor\\>" "\\<item\\>" nil nil (0 item-face))
+@end smallexample
+
+Here, @var{pre-form} and @var{post-form} are @code{nil}.  Therefore
+searching for @samp{item} starts at the end of the match of
+@samp{anchor}, and searching for subsequent instances of @samp{anchor}
+resumes from where searching for @samp{item} concluded.
+
+@item (@var{matcher} @var{highlighters}@dots{})
+This sort of element specifies several @var{highlighter} lists for a
+single @var{matcher}.  A @var{highlighter} list can be of the type
+@var{subexp-highlighter} or @var{anchored-highlighter} as described
+above.
+
+For example,
+
+@smallexample
+;; @r{Highlight occurrences of the word @samp{anchor} in the value}
+;; @r{of @code{anchor-face}, and subsequent occurrences of the word}
+;; @r{@samp{item} (on the same line) in the value of @code{item-face}.}
+("\\<anchor\\>" (0 anchor-face)
+                ("\\<item\\>" nil nil (0 item-face)))
+@end smallexample
 
 @item (eval . @var{form})
 Here @var{form} is an expression to be evaluated the first time
@@ -2295,7 +2310,7 @@
 updating when you edit the buffer does not, since it considers text one
 line at a time.  If you have patterns that typically only span one
 line but can occasionally span two or three, such as
-@samp{<title>...</title>}, you can ask font-lock to be more careful by
+@samp{<title>...</title>}, you can ask Font Lock to be more careful by
 setting @code{font-lock-multiline} to @code{t}.  But it still will not
 work in all cases.
 
--- a/lispref/nonascii.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/lispref/nonascii.texi	Sat Apr 09 02:16:29 2005 +0000
@@ -628,11 +628,11 @@
 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 text then encoding the result in the same coding system can
-produce a different byte sequence from the one you originally decoded.
-However, the following coding systems do guarantee that the result
-will be the same as what you originally decoded:
+  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
@@ -641,13 +641,13 @@
 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, when you encode Latin-2
+  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}).  When you encode Unicode characters
-with @code{iso-latin-2} and decode them back with the same coding
-system, you'll get Latin-2 characters.
+@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
--- a/mac/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/mac/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,11 @@
+2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
+	(CFBundleShortVersionString, CFBundleGetInfoString): Fix version
+	number and copyright.
+
+	* Emacs.r (DITL, vers): Likewise.
+
 2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* Emacs.app/Contents/Info.plist (CFBundleIdentifier): Change to
--- a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings	Sat Apr 09 01:45:41 2005 +0000
+++ b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings	Sat Apr 09 02:16:29 2005 +0000
@@ -1,5 +1,5 @@
 /* Localized versions of Info.plist keys */
 
 CFBundleName = "Emacs";
-CFBundleShortVersionString = "Emacs version 21";
-CFBundleGetInfoString = "Emacs version 21, Copyright 2002 FSF.";
+CFBundleShortVersionString = "22.0.50";
+CFBundleGetInfoString = "22.0.50, Copyright (C) 2005 Free Software Foundation, Inc.";
--- a/mac/src/Emacs.r	Sat Apr 09 01:45:41 2005 +0000
+++ b/mac/src/Emacs.r	Sat Apr 09 02:16:29 2005 +0000
@@ -141,7 +141,7 @@
 		{10, 60, 72, 278},
 		StaticText {
 			disabled,
-			"GNU Emacs 21 for Mac OS"
+			"GNU Emacs 22 for Mac OS"
 		}
 	}
 };
@@ -215,14 +215,14 @@
 };
 
 resource 'vers' (1) {
-	0x1,
-	0x0,
-	development,
-	0x0,
-	0,
-	"d6",
-	"GNU Emacs 21.1 for Mac OS\n\0xa9 2"
-	"000 Free Software Foundation"
+	0x22,		/* Major revision in BCD */
+	0x0,		/* Minor revision in BCD */
+	development,	/* development, alpha, beta, or final (release) */
+	50,		/* Non-final release # */
+	0,		/* Region code */
+	"22.0.50",	/* Short version number */
+	"22.0.50, Copyright \0xa9 2005 "
+	"Free Software Foundation, Inc." /* Long version number */
 };
 
 data 'EMAx' (0, "Owner resource") {
--- a/man/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,29 @@
+2005-04-06  Kim F. Storm  <storm@cua.dk>
+
+	* cmdargs.texi (Initial Options): Add --bare-bones alias for -Q.
+
+2005-04-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* dired.texi (Dired Visiting): `dired-view-command-alist' has been
+	deleted.
+	(Marks vs Flags): Add some convenient key bindings.
+	(Hiding Subdirectories): Delete redundant and inaccurate sentence.
+	(Misc Dired Features): Correct and expand description of `w' command.
+
+	* frames.texi (XTerm Mouse): Delete apparently false info.
+	The GNU/Linux console currently does not appear to support
+	`xterm-mouse-mode'.
+
+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
--- a/man/calc.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/calc.texi	Sat Apr 09 02:16:29 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
@@ -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
@@ -34677,10 +34844,10 @@
 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{KEY} . @var{VALUE})}; for example, 
+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{KEY}, it will set itself
-to use the language @var{VALUE}.
+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
--- a/man/calendar.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/calendar.texi	Sat Apr 09 02:16:29 2005 +0000
@@ -942,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!!
--- a/man/cmdargs.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/cmdargs.texi	Sat Apr 09 02:16:29 2005 +0000
@@ -268,6 +268,8 @@
 
 @item -Q
 @opindex -Q
+@itemx --bare-bones
+@opindex --bare-bones
 Start emacs with minimum customizations and window decorations.
 This is like using @samp{-q} and @samp{--no-site-file}, but in
 addition it also disables the menu-bar, the tool-bar, the scroll-bars,
--- a/man/dired.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/dired.texi	Sat Apr 09 02:16:29 2005 +0000
@@ -289,15 +289,11 @@
 @item v
 @kindex v @r{(Dired)}
 @findex dired-view-file
-View the file described on the current line, using either an external
-viewing program or @kbd{M-x view-file} (@code{dired-view-file}).
-
-@vindex dired-view-command-alist
-External viewers are used for certain file types under the control of
-@code{dired-view-command-alist}.  Viewing a file with @code{view-file}
-is like visiting it, but is slanted toward moving around in the file
+View the file described on the current line, using @kbd{M-x view-file}
+(@code{dired-view-file}).  Viewing a file with @code{view-file} is
+like visiting it, but is slanted toward moving around in the file
 conveniently and does not allow changing the file.  @xref{Misc File
-Ops,View File, Miscellaneous File Operations}.
+Ops, View File, Miscellaneous File Operations}.
 
 @item ^
 @kindex ^ @r{(Dired)}
@@ -376,13 +372,17 @@
 (@code{dired-unmark-backward}).
 
 @item * !
+@itemx U
 @kindex * ! @r{(Dired)}
+@kindex U @r{(Dired)}
 @findex dired-unmark-all-marks
 Remove all marks from all the files in this Dired buffer
 (@code{dired-unmark-all-marks}).
 
 @item * ? @var{markchar}
+@itemx M-@key{DEL}
 @kindex * ? @r{(Dired)}
+@kindex M-DEL @r{(Dired)}
 @findex dired-unmark-all-files
 Remove all marks that use the character @var{markchar}
 (@code{dired-unmark-all-files}).  The argument is a single
@@ -396,17 +396,23 @@
 files without asking about them.
 
 @item * C-n
+@itemx M-@}
 @findex dired-next-marked-file
 @kindex * C-n @r{(Dired)}
+@kindex M-@} @r{(Dired)}
 Move down to the next marked file (@code{dired-next-marked-file})
 A file is ``marked'' if it has any kind of mark.
 
 @item * C-p
+@itemx M-@{
 @findex dired-prev-marked-file
 @kindex * C-p @r{(Dired)}
+@kindex M-@{ @r{(Dired)}
 Move up to the previous marked file (@code{dired-prev-marked-file})
 
-@item * t
+@item t
+@itemx * t
+@kindex t @r{(Dired)}
 @kindex * t @r{(Dired)}
 @findex dired-toggle-marks
 @cindex toggling marks (in Dired)
@@ -968,9 +974,6 @@
 can use hiding to temporarily exclude subdirectories from operations
 without having to remove the markers.
 
-  The subdirectory hiding commands toggle; that is, they hide what was
-visible, and show what was hidden.
-
 @node Dired Updating
 @section Updating the Dired Buffer
 @cindex updating Dired buffer
@@ -1145,18 +1148,18 @@
 @findex dired-copy-filename-as-kill
   The @kbd{w} command (@code{dired-copy-filename-as-kill}) puts the
 names of the marked (or next @var{n}) files into the kill ring, as if
-you had killed them with @kbd{C-w}.
+you had killed them with @kbd{C-w}.  The names are separated by a space.
 
   The main purpose of this command is so that you can yank the file
 names into arguments for other Emacs commands.  It also displays what
 was pushed onto the kill ring, so you can use it to display the list
 of currently marked files in the echo area.  With a zero prefix
-argument @var{n}=0, this uses the absolute file name of each marked
-file.  With just @kbd{C-u} as the prefix argument, it uses the
-relative file name of each marked file.  As a special case, if no
-prefix argument is given and point is on a directory headerline,
-@kbd{w} gives you the name of that directory without looking for
-marked files.
+argument, this uses the absolute file name of each marked file.  With
+just @kbd{C-u} as the prefix argument, it uses file names relative to
+the Dired buffer's default directory.  (This can still contain slashes
+if in a subdirectory.)  As a special case, if point is on a directory
+headerline, @kbd{w} gives you the absolute name of that directory.
+Any prefix argument or marked files are ignored in this case.
 
   On the X window system, Emacs supports the ``drag and drop''
 protocol.  You can drag a file object from another program, and drop
--- a/man/frames.texi	Sat Apr 09 01:45:41 2005 +0000
+++ b/man/frames.texi	Sat Apr 09 02:16:29 2005 +0000
@@ -1058,9 +1058,7 @@
 you can use @kbd{M-x xterm-mouse-mode} to enable simple use of the
 mouse---only single clicks are supported.  The normal @code{xterm} mouse
 functionality is still available by holding down the @kbd{SHIFT} key
-when you press the mouse button.  The Linux console supports this
-mode if it has support for the mouse enabled, e.g.@: using the
-@command{gpm} daemon.
+when you press the mouse button.
 
 @ignore
    arch-tag: 7dcf3a31-a43b-45d4-a900-445b10d77e49
--- a/src/ChangeLog	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/ChangeLog	Sat Apr 09 02:16:29 2005 +0000
@@ -1,3 +1,37 @@
+2005-04-09  Kim F. Storm  <storm@cua.dk>
+
+	* lread.c (readevalloop): Add args START and END as region in
+	current buffer to read.  Callers changed.
+	When specified, narrow to this region only when reading,
+	not during eval.  Track next point to read from during eval.
+	Also restore point to "real" buffer position before eval.
+	(Feval_region): Don't save excursion and restriction here, and
+	don't narrow to region.  Just pass region to readevalloop.
+	Note: Point is now preserved even when PRINTFLAG is nil.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>".
+
+2005-04-06  Kim F. Storm  <storm@cua.dk>
+
+	* emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones.
+
+2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
+	(Fmac_get_preference): Doc fix.
+
+	* macfns.c (Fx_create_frame, x_create_tip_frame): Add
+	"fontset-mac" to fallback font/fontsets.
+
+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
@@ -2853,7 +2887,7 @@
 
 	* xfns.c (xic_create_xfontset): Initialize missing_list to NULL.
 
-2004-10-21  K,Aa(Broly L$,1 q(Brentey  <lorentey@elte.hu>
+2004-10-21  K,Ba(Broly L,Bu(Brentey  <lorentey@elte.hu>
 
 	* xterm.h (x_output): New member `xic_base_fontname'.
 	(FRAME_XIC_BASE_FONTNAME): New macro.
@@ -4134,7 +4168,7 @@
 	* keyboard.c (cmd_error): Don't call any_kboard_state
 	if inside a recursive edit level.
 
-2004-06-13  Lorentey K,Aa(Broly  <lorentey@elte.hu>
+2004-06-13  K,Ba(Broly L,Bu(Brentey  <lorentey@elte.hu>
 
 	* keyboard.c (command_loop): Call any_kboard_state before
 	command_loop_2 when at top level.
--- a/src/ChangeLog.6	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/ChangeLog.6	Sat Apr 09 02:16:29 2005 +0000
@@ -1079,7 +1079,7 @@
 	scroll_bar_up_arrow, scroll_bar_down_arrow.
 	(win32_scroll_bar_click): New enum constant.
 
-1996-05-03  Andrw Innes  <andrewi@harlequin.co.uk>
+1996-05-03  Andrew Innes  <andrewi@harlequin.co.uk>
 
 	* makefile.nt (SUBSYSTEM) [NTGUI]: Remove conditional.
 	(LINK_FLAGS): Explicitly set base address, and stack and heap sizes.
@@ -4817,7 +4817,7 @@
 	(Fmemory_use_counts): New function.
 	(syms_of_alloc): defsubr it.
 
-1995-07-28  Gvran Uddeborg  <uddeborg@carmen.se>
+1995-07-28  Göran Uddeborg  <uddeborg@carmen.se>
 
 	* s/isc4-1.h: ISC 4.1 has termios.
 
--- a/src/alloc.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/alloc.c	Sat Apr 09 02:16:29 2005 +0000
@@ -4644,6 +4644,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.  */
   {
@@ -4837,6 +4839,8 @@
 
   UNBLOCK_INPUT;
 
+  CHECK_CONS_LIST ();
+
   /* clear_marks (); */
   gc_in_progress = 0;
 
--- a/src/emacs.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/emacs.c	Sat Apr 09 02:16:29 2005 +0000
@@ -1814,6 +1814,8 @@
   { "-d", "--display", 60, 1 },
   { "-display", 0, 60, 1 },
   /* Now for the options handled in startup.el.  */
+  { "-Q", "--bare-bones", 55, 0 },
+  { "-bare-bones", 0, 55, 0 },
   { "-q", "--no-init-file", 50, 0 },
   { "-no-init-file", 0, 50, 0 },
   { "-no-site-file", "--no-site-file", 40, 0 },
--- a/src/eval.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/eval.c	Sat Apr 09 02:16:29 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/lread.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/lread.c	Sat Apr 09 02:16:29 2005 +0000
@@ -218,6 +218,7 @@
 
 static void readevalloop P_ ((Lisp_Object, FILE*, Lisp_Object,
 			      Lisp_Object (*) (), int,
+			      Lisp_Object, Lisp_Object,
 			      Lisp_Object, Lisp_Object));
 static Lisp_Object load_unwind P_ ((Lisp_Object));
 static Lisp_Object load_descriptor_unwind P_ ((Lisp_Object));
@@ -1097,14 +1098,15 @@
     = Fcons (make_number (fileno (stream)), load_descriptor_list);
   load_in_progress++;
   if (! version || version >= 22)
-    readevalloop (Qget_file_char, stream, file, Feval, 0, Qnil, Qnil);
+    readevalloop (Qget_file_char, stream, file, Feval,
+		  0, Qnil, Qnil, Qnil, Qnil);
   else
     {
       /* We can't handle a file which was compiled with
 	 byte-compile-dynamic by older version of Emacs.  */
       specbind (Qload_force_doc_strings, Qt);
-      readevalloop (Qget_emacs_mule_file_char, stream, file, Feval, 0,
-		    Qnil, Qnil);
+      readevalloop (Qget_emacs_mule_file_char, stream, file, Feval,
+		    0, Qnil, Qnil, Qnil, Qnil);
     }
   unbind_to (count, Qnil);
 
@@ -1483,16 +1485,19 @@
 
 /* UNIBYTE specifies how to set load_convert_to_unibyte
    for this invocation.
-   READFUN, if non-nil, is used instead of `read'.  */
+   READFUN, if non-nil, is used instead of `read'.
+   START, END is region in current buffer (from eval-region).  */
 
 static void
-readevalloop (readcharfun, stream, sourcename, evalfun, printflag, unibyte, readfun)
+readevalloop (readcharfun, stream, sourcename, evalfun,
+	      printflag, unibyte, readfun, start, end)
      Lisp_Object readcharfun;
      FILE *stream;
      Lisp_Object sourcename;
      Lisp_Object (*evalfun) ();
      int printflag;
      Lisp_Object unibyte, readfun;
+     Lisp_Object start, end;
 {
   register int c;
   register Lisp_Object val;
@@ -1518,28 +1523,41 @@
   continue_reading_p = 1;
   while (continue_reading_p)
     {
+      int count1 = SPECPDL_INDEX ();
+
       if (b != 0 && NILP (b->name))
 	error ("Reading from killed buffer");
 
+      if (!NILP (start))
+	{
+	  record_unwind_protect (save_excursion_restore, save_excursion_save ());
+	  record_unwind_protect (save_restriction_restore, save_restriction_save ());
+	  Fgoto_char (start);
+	  Fnarrow_to_region (make_number (BEGV), end);
+	}
+
       instream = stream;
+    read_next:
       c = READCHAR;
       if (c == ';')
 	{
 	  while ((c = READCHAR) != '\n' && c != -1);
-	  continue;
+	  goto read_next;
 	}
-      if (c < 0) break;
+      if (c < 0)
+	{
+	  unbind_to (count1, Qnil);
+	  break;
+	}
 
       /* Ignore whitespace here, so we can detect eof.  */
       if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r')
-	continue;
+	goto read_next;
 
       if (!NILP (Vpurify_flag) && c == '(')
 	{
-	  int count1 = SPECPDL_INDEX ();
 	  record_unwind_protect (unreadpure, Qnil);
 	  val = read_list (-1, readcharfun);
-	  unbind_to (count1, Qnil);
 	}
       else
 	{
@@ -1565,6 +1583,10 @@
 	    val = read_internal_start (readcharfun, Qnil, Qnil);
 	}
 
+      if (!NILP (start) && continue_reading_p)
+	start = Fpoint_marker ();
+      unbind_to (count1, Qnil);
+
       val = (*evalfun) (val);
 
       if (printflag)
@@ -1623,7 +1645,8 @@
   specbind (Qstandard_output, tem);
   record_unwind_protect (save_excursion_restore, save_excursion_save ());
   BUF_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
-  readevalloop (buf, 0, filename, Feval, !NILP (printflag), unibyte, Qnil);
+  readevalloop (buf, 0, filename, Feval,
+		!NILP (printflag), unibyte, Qnil, Qnil, Qnil);
   unbind_to (count, Qnil);
 
   return Qnil;
@@ -1655,15 +1678,10 @@
     tem = printflag;
   specbind (Qstandard_output, tem);
 
-  if (NILP (printflag))
-    record_unwind_protect (save_excursion_restore, save_excursion_save ());
-  record_unwind_protect (save_restriction_restore, save_restriction_save ());
-
-  /* This both uses start and checks its type.  */
-  Fgoto_char (start);
-  Fnarrow_to_region (make_number (BEGV), end);
+  /* readevalloop calls functions which check the type of start and end.  */
   readevalloop (cbuf, 0, XBUFFER (cbuf)->filename, Feval,
-		!NILP (printflag), Qnil, read_function);
+		!NILP (printflag), Qnil, read_function,
+		start, end);
 
   return unbind_to (count, Qnil);
 }
--- a/src/mac.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/mac.c	Sat Apr 09 02:16:29 2005 +0000
@@ -364,13 +364,13 @@
 
 
 /* CFDate to a list of three integers as in a return value of
-   `current-time'xo.  */
+   `current-time'.  */
 
 Lisp_Object
 cfdate_to_lisp (date)
      CFDateRef date;
 {
-  static CFGregorianDate epoch_gdate = {1970, 1, 1, 0, 0, 0.0};
+  static const CFGregorianDate epoch_gdate = {1970, 1, 1, 0, 0, 0.0};
   static CFAbsoluteTime epoch = 0.0, sec;
   int high, low;
 
@@ -668,7 +668,7 @@
     return Qnil;
 
   result = Fcons (component, result);
-  while (binding = parse_binding (p))
+  while ((binding = parse_binding (p)) != '\0')
     {
       if (binding == '*')
 	result = Fcons (LOOSE_BINDING, result);
@@ -3662,7 +3662,7 @@
   CFDate             List of three integers         date
                        (cf. `current-time')
   CFData             Unibyte string                 data
-  CFArray            Array                          array
+  CFArray            Vector                         array
   CFDictionary       Alist or hash table            dictionary
                        (depending on HASH-BOUND)
 
@@ -4174,26 +4174,13 @@
   staticpro (&QCLIPBOARD);
 
 #if TARGET_API_MAC_CARBON
-  Qstring = intern ("string");
-  staticpro (&Qstring);
-
-  Qnumber = intern ("number");
-  staticpro (&Qnumber);
-
-  Qboolean = intern ("boolean");
-  staticpro (&Qboolean);
-
-  Qdate = intern ("date");
-  staticpro (&Qdate);
-
-  Qdata = intern ("data");
-  staticpro (&Qdata);
-
-  Qarray = intern ("array");
-  staticpro (&Qarray);
-
-  Qdictionary = intern ("dictionary");
-  staticpro (&Qdictionary);
+  Qstring  = intern ("string");		staticpro (&Qstring);
+  Qnumber  = intern ("number");		staticpro (&Qnumber);
+  Qboolean = intern ("boolean");	staticpro (&Qboolean);
+  Qdate	   = intern ("date");		staticpro (&Qdate);
+  Qdata    = intern ("data");		staticpro (&Qdata);
+  Qarray   = intern ("array");		staticpro (&Qarray);
+  Qdictionary = intern ("dictionary");	staticpro (&Qdictionary);
 
   Qxml = intern ("xml");
   staticpro (&Qxml);
--- a/src/macfns.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/macfns.c	Sat Apr 09 02:16:29 2005 +0000
@@ -2632,6 +2632,8 @@
       font = x_new_font (f, "-ETL-fixed-medium-r-*--*-160-*-*-*-*-iso8859-1");
     /* If those didn't work, look for something which will at least work.  */
     if (! STRINGP (font))
+      font = x_new_fontset (f, "fontset-mac");
+    if (! STRINGP (font))
       font = x_new_font (f, "-*-monaco-*-12-*-mac-roman");
     if (! STRINGP (font))
       font = x_new_font (f, "-*-courier-*-10-*-mac-roman");
@@ -3732,6 +3734,8 @@
       font = x_new_font (f, "-ETL-fixed-medium-r-*--*-160-*-*-*-*-iso8859-1");
     /* If those didn't work, look for something which will at least work.  */
     if (! STRINGP (font))
+      font = x_new_fontset (f, "fontset-mac");
+    if (! STRINGP (font))
       font = x_new_font (f, "-*-monaco-*-12-*-mac-roman");
     if (! STRINGP (font))
       font = x_new_font (f, "-*-courier-*-10-*-mac-roman");
--- a/src/xdisp.c	Sat Apr 09 01:45:41 2005 +0000
+++ b/src/xdisp.c	Sat Apr 09 02:16:29 2005 +0000
@@ -22757,7 +22757,7 @@
   DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string,
     doc: /* String to display as an arrow in non-window frames.
 See also `overlay-arrow-position'.  */);
-  Voverlay_arrow_string = Qnil;
+  Voverlay_arrow_string = build_string ("=>");
 
   DEFVAR_LISP ("overlay-arrow-variable-list", &Voverlay_arrow_variable_list,
     doc: /* List of variables (symbols) which hold markers for overlay arrows.