changeset 92148:f991f10f15ec

Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1074
author Miles Bader <miles@gnu.org>
date Sun, 24 Feb 2008 10:09:07 +0000
parents 773ae07da318 (current diff) 639e83cd103d (diff)
children e8b93cb7392a
files ChangeLog configure configure.in doc/lispref/ChangeLog doc/lispref/windows.texi doc/misc/ChangeLog doc/misc/org.texi doc/misc/rcirc.texi etc/AUTHORS etc/ChangeLog etc/NEWS.22 etc/PROBLEMS etc/tutorials/TUTORIAL.ru lib-src/movemail.c lib-src/pop.c lisp/ChangeLog lisp/ChangeLog.12 lisp/custom.el lisp/dired.el lisp/emacs-lisp/byte-run.el lisp/emacs-lisp/edebug.el lisp/erc/ChangeLog lisp/erc/erc-button.el lisp/erc/erc-match.el lisp/erc/erc.el lisp/eshell/esh-var.el lisp/ffap.el lisp/follow.el lisp/font-lock.el lisp/gnus/deuglify.el lisp/isearch.el lisp/ldefs-boot.el lisp/mail/mail-extr.el lisp/mh-e/ChangeLog lisp/mh-e/mh-e.el lisp/mh-e/mh-xface.el lisp/net/ange-ftp.el lisp/net/net-utils.el lisp/net/rcirc.el lisp/progmodes/ada-mode.el lisp/progmodes/cc-defs.el lisp/progmodes/cc-engine.el lisp/progmodes/cc-fonts.el lisp/progmodes/cc-langs.el lisp/progmodes/cc-mode.el lisp/progmodes/cc-styles.el lisp/progmodes/compile.el lisp/progmodes/cperl-mode.el lisp/progmodes/gdb-ui.el lisp/progmodes/gud.el lisp/progmodes/scheme.el lisp/progmodes/verilog-mode.el lisp/subr.el lisp/textmodes/ispell.el lisp/textmodes/sgml-mode.el lisp/vc-hooks.el nt/ChangeLog nt/INSTALL nt/configure.bat src/ChangeLog src/fileio.c src/intervals.h src/w32.c src/w32fns.c
diffstat 71 files changed, 1504 insertions(+), 709 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -6,6 +6,10 @@
 	* README.unicode: Split into admin/notes/unicode,font-backend and
 	remove.
 
+2008-02-10  Matthew Luckie  <mjl@luckie.org.nz>  (tiny change)
+
+	* configure.in (arm*-*-freebsd*): Added.
+
 2008-02-09  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
@@ -1394,7 +1398,7 @@
 
 2003-04-28  Francesco Potort,Al(B  <pot@gnu.org>
 
-	* configure.in:  Undo last (RMS') change, as it is useless, per
+	* configure.in: Undo last (RMS') change, as it is useless, per
 	Dave Love.
 
 2003-04-08  Richard M. Stallman  <rms@gnu.org>
@@ -1565,7 +1569,7 @@
 
 2002-10-30  Dave Love  <fx@gnu.org>
 
-	* configure.in:  Require autoconf 2.53.  Test for pty.h,
+	* configure.in: Require autoconf 2.53.  Test for pty.h,
 	sys/mman.h, sys/param.h, mremap, memmove.
 	(AH_BOTTOM): Maybe include strings.h.  Add local variables for mode.
 	(AC_PROG_YACC): Delete.
@@ -3352,7 +3356,7 @@
 
 1997-04-09  Marcus G. Daniels  <marcus@cathcart.sysc.pdx.edu>
 
-	* configure.in (doug_lea_malloc):  First check for SYSTEM_MALLOC,
+	* configure.in (doug_lea_malloc): First check for SYSTEM_MALLOC,
 	in case it is desirable to disable the GNU malloc features with glibc.
 
 1997-04-08  Marcus G. Daniels  <marcus@cathcart.sysc.pdx.edu>
--- a/configure	Sun Feb 24 06:43:15 2008 +0000
+++ b/configure	Sun Feb 24 10:09:07 2008 +0000
@@ -2357,6 +2357,7 @@
     opsys=freebsd
     case "${canonical}" in
       alpha*-*-freebsd*)	machine=alpha ;;
+      arm*-*-freebsd*)          machine=arm ;;
       ia64-*-freebsd*)		machine=ia64 ;;
       sparc64-*-freebsd*)	machine=sparc ;;
       powerpc-*-freebsd*)	machine=macppc ;;
--- a/configure.in	Sun Feb 24 06:43:15 2008 +0000
+++ b/configure.in	Sun Feb 24 10:09:07 2008 +0000
@@ -285,6 +285,7 @@
     opsys=freebsd
     case "${canonical}" in
       alpha*-*-freebsd*)	machine=alpha ;;
+      arm*-*-freebsd*)          machine=arm ;;
       ia64-*-freebsd*)		machine=ia64 ;;
       sparc64-*-freebsd*)	machine=sparc ;;
       powerpc-*-freebsd*)	machine=macppc ;;
--- a/doc/lispref/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/doc/lispref/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -20,6 +20,11 @@
 	* objects.texi (Equality Predicates):
 	Mention equal-including-properties.
 
+2008-02-07  Richard Stallman  <rms@gnu.org>
+
+	* windows.texi (Window Start): Mention the feature of moving
+	window-start to start of line.
+
 2008-02-07  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* keymaps.texi (Tool Bar): Document rtl property.
--- a/doc/lispref/windows.texi	Sun Feb 24 06:43:15 2008 +0000
+++ b/doc/lispref/windows.texi	Sun Feb 24 10:09:07 2008 +0000
@@ -1229,6 +1229,15 @@
 at the upper left corner of the window.  It is usually, but not
 inevitably, at the beginning of a text line.
 
+  After switching windows or buffers, and in some other cases, if the
+window start is in the middle of a line, Emacs adjusts the window
+start to the start of a line.  This prevents certain operations from
+leaving the window start at a meaningless point within a line.  This
+feature may interfere with testing some Lisp code by executing it
+using the commands of Lisp mode, because they trigger this
+readjustment.  To test such code, put it into a command and bind the
+command to a key.
+
 @defun window-start &optional window
 @cindex window top line
 This function returns the display-start position of window
@@ -1296,10 +1305,10 @@
 screen.  If this does place point off screen, the display routines move
 point to the left margin on the middle line in the window.
 
-For example, if point @w{is 1} and you set the start of the window @w{to
-2}, then point would be ``above'' the top of the window.  The display
-routines will automatically move point if it is still 1 when redisplay
-occurs.  Here is an example:
+For example, if point @w{is 1} and you set the start of the window
+@w{to 37}, the start of the next line, point will be ``above'' the top
+of the window.  The display routines will automatically move point if
+it is still 1 when redisplay occurs.  Here is an example:
 
 @example
 @group
@@ -1321,15 +1330,17 @@
 @group
 (set-window-start
  (selected-window)
- (1+ (window-start)))
-@result{} 2
+ (save-excursion
+   (goto-char 1)
+   (forward-line 1)
+   (point)))
+@result{} 37
 @end group
 
 @group
 ;; @r{Here is what @samp{foo} looks like after executing}
 ;;   @r{the @code{set-window-start} expression.}
 ---------- Buffer: foo ----------
-his is the contents of buffer foo.
 2
 3
 @point{}4
--- a/doc/misc/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/doc/misc/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -1,3 +1,8 @@
+2008-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+	* org.texi (Setting tags, In-buffer settings):
+	* rcirc.texi (rcirc commands): Replace `legal' with `valid'.
+
 2008-02-24  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-news.texi: Mention that spaces and tabs are allowed in the
--- a/doc/misc/org.texi	Sun Feb 24 06:43:15 2008 +0000
+++ b/doc/misc/org.texi	Sun Feb 24 10:09:07 2008 +0000
@@ -3255,7 +3255,7 @@
 
 If at least one tag has a selection key, pressing @kbd{C-c C-c} will
 automatically present you with a special interface, listing inherited
-tags, the tags of the current headline, and a list of all legal tags
+tags, the tags of the current headline, and a list of all valid tags
 with corresponding keys@footnote{Keys will automatically be assigned to
 tags which have no configured keys.}.  In this interface, you can use
 the following keys:
@@ -7367,7 +7367,7 @@
 constSI    @r{@file{constants.el} should use the SI unit system}
 @end example
 @item #+TAGS:  TAG1(c1) TAG2(c2)
-These lines (several such lines are allowed) specify the legal tags in
+These lines (several such lines are allowed) specify the valid tags in
 this file, and (potentially) the corresponding @emph{fast tag selection}
 keys.  The corresponding variable is @code{org-tag-alist}.
 @item #+TBLFM:
--- a/doc/misc/rcirc.texi	Sun Feb 24 06:43:15 2008 +0000
+++ b/doc/misc/rcirc.texi	Sun Feb 24 10:09:07 2008 +0000
@@ -305,7 +305,7 @@
 @end example
 
 This will try to change your nick to @code{"alex}.  Usually this will
-fail because the double quote character is not a legal character for
+fail because the double quote character is not a valid character for
 nicks.
 
 @cindex case insensitive commands
--- a/etc/AUTHORS	Sun Feb 24 06:43:15 2008 +0000
+++ b/etc/AUTHORS	Sun Feb 24 10:09:07 2008 +0000
@@ -24,6 +24,8 @@
 
 Adrian Lanz: changed mail-source.el spam.el
 
+,AF(Bvar Arnfj,Av(Br,Ap(B Bjarmason: changed rcirc.el
+
 Agust,Am(Bn Mart,Am(Bn: changed flyspell.el ispell.el
 
 Aidan Kehoe: changed lread.c mm-util.el erc.el latin-ltx.el objects.texi
@@ -343,7 +345,7 @@
 Chong Yidong: changed cus-edit.el files.el simple.el longlines.el xdisp.c
   display.texi custom.el files.texi image-mode.el info.el keyboard.c
   compile.el custom.texi text.texi xterm.c frames.texi image.c mouse.el
-  misc.texi startup.el wid-edit.el and 300 other files
+  misc.texi startup.el wid-edit.el and 301 other files
 
 Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
   hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
@@ -400,6 +402,8 @@
 
 Craig Mcdaniel: changed sheap.c
 
+D. E. Evans: changed basic.texi
+
 Daiki Ueno: wrote pgg-def.el pgg-gpg.el pgg-parse.el pgg-pgp.el
   pgg-pgp5.el pgg.el starttls.el
 and changed gnus-sum.el mml2015.el faces.el gnus-agent.el gnus-srvr.el
@@ -423,9 +427,9 @@
 
 Dan Nicolaescu: wrote iris-ansi.el romanian.el
 and changed xterm.el term.el hideshow.el vc-hg.el files.el isearch.el
-  sh-script.el icon.el lisp.h vc.el cus-edit.el faces.el font-lock.el
-  grep.el verilog-mode.el diff-mode.el eterm-color.ti ibuffer.el
-  replace.el rxvt.el term.c and 187 other files
+  sh-script.el icon.el lisp.h vc.el verilog-mode.el cus-edit.el faces.el
+  font-lock.el grep.el diff-mode.el eterm-color.ti ibuffer.el replace.el
+  rxvt.el term.c and 187 other files
 
 Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el
 
@@ -667,7 +671,7 @@
 and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
   startup.el mainmake.v2 rmail.el config.bat menu-bar.el simple.el
   pc-win.el msdos.h internal.el xfaces.c emacs.c frame.c INSTALL dosfns.c
-  mule-cmds.el and 536 other files
+  mule-cmds.el and 537 other files
 
 Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
   gnus-faq.texi sh-script.el text.texi
@@ -870,7 +874,7 @@
   calendar.texi COPYING appt.el Makefile.in files.el sh-script.el
   timeclock.el cal-menu.el configure.in simple.el tex-mode.el calc.texi
   complete.el fr-refcard.tex orgcard.tex programs.texi startup.el
-  and 245 other files
+  and 247 other files
 
 Glynn Clements: wrote gamegrid.el snake.el tetris.el
 
@@ -1308,8 +1312,8 @@
 
 Juanma Barranquero: changed makefile.w32-in subr.el faces.el files.el
   help-fns.el bs.el w32fns.c buffer.c simple.el emacsclient.c replace.el
-  eval.c org.el idlwave.el ido.el process.c vhdl-mode.el window.c xdisp.c
-  allout.el cperl-mode.el and 651 other files
+  eval.c org.el desktop.el idlwave.el ido.el process.c vhdl-mode.el
+  window.c xdisp.c allout.el and 658 other files
 
 Juergen Hoetzel: changed url-handlers.el
 
@@ -1325,8 +1329,8 @@
 
 Juri Linkov: changed info.el simple.el isearch.el replace.el compile.el
   faces.el display.texi grep.el descr-text.el cus-edit.el dired.el
-  dired-aux.el edebug.el compare-w.el files.el lisp-mode.el lisp.el
-  man.el menu-bar.el modes.texi mule.el and 224 other files
+  dired-aux.el edebug.el startup.el compare-w.el desktop.el files.el
+  lisp-mode.el lisp.el man.el menu-bar.el and 224 other files
 
 Justin Sheehy: changed gnus-sum.el nntp.el
 
@@ -1561,8 +1565,8 @@
 and changed erc.el erc-match.el erc-nets.el erc-nickserv.el erc-button.el
   erc-compat.el erc-dcc.el erc-fill.el erc-list.el erc-track.el Makefile
   erc-autoaway.el erc-autojoin.el erc-bbdb.el erc-ezbounce.el erc-menu.el
-  erc-netsplit.el erc-nicklist.el erc-notify.el erc-sound.el subr.el
-  tempo.el
+  erc-netsplit.el erc-nicklist.el erc-notify.el erc-sound.el objects.texi
+  and 3 other files
 
 Lawrence R. Dodd: wrote dired-x.el
 and changed fortran.el ispell.el sendmail.el cmuscheme.el comint.el
@@ -1729,7 +1733,7 @@
 Martin Rudalics: changed cus-start.el cus-edit.el files.el wid-edit.el
   window.el flyspell.el font-lock.el mouse.el syntax.c xdisp.c compile.el
   complete.el dired.el frame.c frame.el insdel.c ispell.el keyboard.c
-  macmenu.c macterm.c msdos.c and 64 other files
+  macmenu.c macterm.c msdos.c and 65 other files
 
 Martin Stjernholm: wrote cc-bytecomp.el
 and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1778,6 +1782,8 @@
 Matt Swift: changed compile.el dired.el editfns.c lisp-mode.el
   mm-decode.el outline.el rx.el simple.el startup.el
 
+Matthew Luckie: changed configure.in
+
 Matthew Mundell: changed calendar.texi diary-lib.el files.texi
   type-break.el debugging.texi display.texi edebug.texi editfns.c eval.c
   fileio.c frames.texi help.texi internals.texi modes.texi nonascii.texi
@@ -1796,9 +1802,9 @@
 
 Michael Albinus: wrote tramp-ftp.el tramp-smb.el
 and changed tramp.el tramp.texi tramp-vc.el ange-ftp.el files.el
-  tramp-util.el files.texi nnml.el tramp-uu.el trampver.el vc.el
-  dired-x.el dired.el faq.texi ffap.el find-dired.el locate.el mini.texi
-  rcompile.el socks.el tramp*.el and 4 other files
+  tramp-util.el trampver.el files.texi nnml.el tramp-uu.el trampver.texi
+  vc.el dired-x.el dired.el faq.texi ffap.el find-dired.el locate.el
+  mini.texi rcompile.el socks.el and 4 other files
 
 Michael Ben-Gershon: changed acorn.h configure.in riscix1-1.h riscix1-2.h
   unexec.c
@@ -1832,9 +1838,9 @@
   ediff-vers.el ediff-wind.el ediff.el viper-cmd.el viper-ex.el
   viper-init.el viper-keym.el viper-macs.el viper-mous.el viper-util.el
   viper.el
-and changed ediff*.el ediff-merge.el viper*.el ediff-hooks.el menu-bar.el
-  viper-utils.el appt.el desktop.el ediff-meta.el ediff-nult.el
-  ediff.texi viper-mouse.el viper.texi
+and changed ediff*.el viper*.el ediff-hooks.el ediff-merge.el menu-bar.el
+  appt.el desktop.el ediff-meta.el ediff-nult.el ediff.texi
+  viper-mouse.el viper.texi
 
 Michael Mcnamara: wrote verilog-mode.el
 
@@ -2254,7 +2260,7 @@
 and changed keyboard.c files.el simple.el xterm.c xdisp.c fileio.c
   rmail.el process.c sysdep.c xfns.c buffer.c Makefile.in window.c
   configure.in subr.el startup.el emacs.c editfns.c info.el sendmail.el
-  dispnew.c and 1336 other files
+  dispnew.c and 1337 other files
 
 Richard Mlynarik: wrote cl-indent.el ebuff-menu.el ehelp.el env.c
   rfc822.el terminal.el yow.el
@@ -2464,9 +2470,9 @@
   diff-mode.el log-edit.el log-view.el pcvs-defs.el pcvs-info.el
   pcvs-parse.el pcvs-util.el reveal.el smerge-mode.el vc-mtn.el
 and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
-  keyboard.c tex-mode.el fill.el keymap.c compile.el vc-hooks.el files.el
-  simple.el alloc.c easy-mmode.el regex.c syntax.c info.el xdisp.c
-  sh-script.el and 528 other files
+  keyboard.c tex-mode.el fill.el keymap.c vc-hooks.el compile.el
+  simple.el files.el alloc.c easy-mmode.el regex.c syntax.c info.el
+  xdisp.c sh-script.el and 528 other files
 
 Steinar Bang: changed imap.el
 
@@ -2587,8 +2593,8 @@
 Theodore Jump: changed w32-win.el w32faces.c
 
 Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el
-and changed ewoc.el info.el processes.texi zone.el Makefile.in
-  lisp-mode.el vc.el fileio.c scheme.el text.texi TUTORIAL.it bindat.el
+and changed ewoc.el info.el processes.texi vc.el zone.el Makefile.in
+  lisp-mode.el fileio.c scheme.el text.texi TUTORIAL.it bindat.el
   dcl-mode.el display.texi files.el gnus.texi pcvs.el startup.el sysdep.c
   vc-rcs.el MORE.STUFF and 134 other files
 
@@ -2688,8 +2694,8 @@
 Ulrich Leodolter: changed w32proc.c
 
 Ulrich Mueller: changed gud.el ChgPane.c ChgSel.c Makefile.in
-  XMakeAssoc.c case-table.el files.el fortran.el iso-acc.el simple.el
-  sysdep.c
+  XMakeAssoc.c case-table.el files.el fortran.el iso-acc.el
+  msdog-xtra.texi simple.el sysdep.c
 
 Ulrik Vieth: wrote meta-mode.el
 and changed files.el
@@ -2716,7 +2722,7 @@
   printing.el ps-mule.el
 and changed ps-print.el ps-prin1.ps ps-bdf.el ps-prin0.ps ps-prin3.ps
   ps-prin2.ps lpr.el subr.el TUTORIAL.pt_BR easymenu.el loading.texi
-  ps-print-def.el ps-print.ps ps-print0.ps ps-vars.el
+  ps-print-def.el ps-print0.ps ps-vars.el
 
 Vivek Dasmohapatra: changed emacs.c erc-backend.el erc.el sh-script.el
   xterm.c xterm.h
--- a/etc/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/etc/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -31,6 +31,11 @@
 
 	* NEWS: Clarify EasyPG functionalities.
 
+2008-02-09  Eli Zaretskii  <eliz@gnu.org>
+
+	* tutorials/TUTORIAL.ru: Remove redundant empty lines, insert a
+	magic line instead.
+
 2008-02-08  Jan Dj$(Q)Z(Brv  <jan.h.d@swipnet.se>
 
 	* NEWS: Mention XEmbed and --parent-id.
@@ -41,7 +46,8 @@
 
 2008-02-02  Eli Zaretskii  <eliz@gnu.org>
 
-	* TUTORIAL.ru: Restore copyright years.  Update tutorial.  Fix wording.
+	* tutorials/TUTORIAL.ru: Restore copyright years.  Update
+	tutorial.  Fix wording.
 
 2008-02-02  Kenichi Handa  <handa@ni.aist.go.jp>
 
@@ -77,7 +83,7 @@
 
 2008-02-01  Kenichi Handa  <handa@m17n.org>
 
-	* TUTORIAL.es: Add local variable coding: latin-1.
+	* tutorials/TUTORIAL.es: Add local variable coding: latin-1.
 
 2008-02-01  Kenichi Handa  <handa@m17n.org>
 
--- a/etc/NEWS.22	Sun Feb 24 06:43:15 2008 +0000
+++ b/etc/NEWS.22	Sun Feb 24 10:09:07 2008 +0000
@@ -85,6 +85,11 @@
 desktop.el warns about attempts to overwrite a desktop file if it determines
 that the desktop being saved is not an update of the one on disk.
 
+** Compilation mode now correctly respects the value of
+`compilation-scroll-output' between invocations.  Previously, output
+was mistakenly scrolled on compiles after the first.  Customize
+`compilation-scroll-output' if you want to retain the scrolling.
+
 * New Modes and Packages in Emacs 22.2
 
 ** bibtex-style-mode helps you write BibTeX's *.bst files.
--- a/etc/PROBLEMS	Sun Feb 24 06:43:15 2008 +0000
+++ b/etc/PROBLEMS	Sun Feb 24 10:09:07 2008 +0000
@@ -2156,14 +2156,13 @@
 When "ClearType" method is selected as the "method to smooth edges of
 screen fonts" (in Display Properties, Appearance tab, under
 "Effects"), there are various problems related to display of
-characters: 2-pixel trace is left behind when moving overlays, bold
-fonts can be hard to read, small portions of some characters could
-appear chopped, etc.  This happens because, under ClearType,
-characters are drawn outside their advertised bounding box.  Emacs 21
-disabled the use of ClearType, whereas Emacs 22 allows it and has some
-code to enlarge the width of the bounding box.  Apparently, this
-display feature needs more changes to get it 100% right.  A workaround
-is to disable ClearType.
+characters:  Bold fonts can be hard to read, small portions of some
+characters could appear chopped, etc.  This happens because, under
+ClearType, characters are drawn outside their advertised bounding box.
+Emacs 21 disabled the use of ClearType, whereas Emacs 22 allows it and
+has some code to enlarge the width of the bounding box.  Apparently,
+this display feature needs more changes to get it 100% right.  A
+workaround is to disable ClearType.
 
 There are problems with display if mouse-tracking is enabled and the
 mouse is moved off a frame, over another frame then back over the first
@@ -2533,28 +2532,6 @@
 to detect the shell correctly. Try "make SHELL=cmd.exe", or if that
 fails, try running make from Cygwin bash instead.
 
-*** Building the MS-Windows port with Leim fails in the `leim' directory.
-
-The error message might be something like this:
-
- Converting d:/emacs-21.3/leim/CXTERM-DIC/4Corner.tit to quail-package...
- Invalid ENCODE: value in TIT dictionary
- NMAKE : fatal error U1077: '"../src/obj-spd/i386/emacs.exe"' : return code
-       '0xffffffff'
- Stop.
-
-This can happen if the Leim distribution is unpacked with a program
-which converts the `*.tit' files to DOS-style CR-LF text format.  The
-`*.tit' files in the leim/CXTERM-DIC directory require Unix-style line
-endings to compile properly, because Emacs reads them without any code
-or EOL conversions.
-
-The solution is to make sure the program used to unpack Leim does not
-change the files' line endings behind your back.  The GNU FTP site has
-in the `/gnu/emacs/windows' directory a program called `djtarnt.exe'
-which can be used to unpack `.tar.gz' and `.zip' archives without
-mangling them.
-
 *** Building `ctags' for MS-Windows with the MinGW port of GCC fails.
 
 This might happen due to a bug in the MinGW header assert.h, which
--- a/etc/tutorials/TUTORIAL.ru	Sun Feb 24 06:43:15 2008 +0000
+++ b/etc/tutorials/TUTORIAL.ru	Sun Feb 24 10:09:07 2008 +0000
@@ -15,23 +15,8 @@
 ÷ÁÖÎÏÅ ÚÁÍÅÞÁÎÉÅ: ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÓÅÁÎÓÁ Emacs, ÎÁÂÅÒÉÔÅ C-x C-c (Ä×Á
 ÓÉÍ×ÏÌÁ). óÉÍ×ÏÌÙ ">>" Ó ÌÅ×ÏÊ ÓÔÏÒÏÎÙ ÕËÁÚÙ×ÁÀÔ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ ÄÅÌÁÔØ,
 ÞÔÏÂÙ ÐÒÉÍÅÎÉÔØ ËÏÍÁÎÄÕ. îÁÐÒÉÍÅÒ:
-
-
-
-
-
-
-
-
+<<Blank lines inserted here by startup of help-with-tutorial>>
 [óÅÒÅÄÉÎÁ ÓÔÒÁÎÉÃÙ ÏÓÔÁ×ÌÅÎÁ ÐÕÓÔÏÊ × ÕÞÅÂÎÙÈ ÃÅÌÑÈ. ôÅËÓÔ ÐÒÏÄÏÌÖÁÅÔÓÑ ÎÉÖÅ]
-
-
-
-
-
-
-
-
 >> ôÅÐÅÒØ ÎÁÖÍÉÔÅ C-v (ÐÒÏÓÍÏÔÒ ÓÌÅÄÕÀÝÅÇÏ ÜËÒÁÎÁ) ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÑ ÎÁ
    ÓÌÅÄÕÀÝÉÊ ÜËÒÁÎ. (÷ÙÐÏÌÎÉÔÅ ÜÔÕ ËÏÍÁÎÄÕ ÕÄÅÒÖÉ×ÁÑ ËÌÁ×ÉÛÕ CONTROL É
    ÎÁÖÉÍÁÑ v.) ôÅÐÅÒØ ×Ù ÄÏÌÖÎÙ ÜÔÏ ÓÄÅÌÁÔØ ÅÝÅ ÒÁÚ, ËÏÇÄÁ ÚÁËÏÎÞÉÔÅ ÞÉÔÁÔØ
--- a/lib-src/movemail.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/lib-src/movemail.c	Sun Feb 24 10:09:07 2008 +0000
@@ -692,7 +692,7 @@
 				   the original length of 80.  */
 
 /*
- * The full legal syntax for a POP mailbox specification for movemail
+ * The full valid syntax for a POP mailbox specification for movemail
  * is "po:username:hostname".  The ":hostname" is optional; if it is
  * omitted, the MAILHOST environment variable will be consulted.  Note
  * that by the time popmail() is called the "po:" has been stripped
--- a/lib-src/pop.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/lib-src/pop.c	Sun Feb 24 10:09:07 2008 +0000
@@ -1630,7 +1630,7 @@
  * Function: pop_trash
  *
  * Purpose: Like pop_close or pop_quit, but doesn't deallocate the
- * 	memory associated with the server.  It is legal to call
+ * 	memory associated with the server.  It is valid to call
  * 	pop_close or pop_quit after this function has been called.
  */
 static void
--- a/lisp/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -1,3 +1,186 @@
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* dired.el (dired-mark-prompt): Don't count/display the t element.
+	Reported by Carsten Blaauw <it-media.blaauw@daimler.com>.
+
+2008-02-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* progmodes/verilog-mode.el (eval-when-compile): Don't define
+	add-submenu.
+	(verilog-xemacs-menu): Add :keys for C-M-a, C-M-e and C-M-h.
+	Remove.  Move contents to the only use ...
+	(verilog-menu): ... here.
+	(verilog-statement-menu): Remove.  Move contents to the only use ...
+	(verilog-stmt-menu): ... here.
+	(verilog-mark-defun): Simply call mark-defun for emacs.
+	(occur-pos-list): Declare for byte compiler.
+	(mode-popup-menu): Don't defvar.
+	(verilog-add-statement-menu): Remove.
+	(verilog-mode-hook): Don't add verilog-add-statement-menu.
+	(verilog-mode): Call easy-menu-add and set mode-popup-menu for
+	XEmacs.
+
+2008-02-24  Michael McNamara  <mac@mail.brushroad.com>
+
+	* progmodes/verilog-mode.el (verilog-xemacs-menu): Remove XEmacs
+	conditional.
+	(verilog-font-grouping-keywords-face): Make the begin..end
+	keywords standout more than other verilog keywords.
+        (verilog-type-font-keywords): Move the begin..end out of this list
+	to facilitate making them to (potentially) stand out more.
+	(verilog-backward-token): Fix indent of bare always{_*}?, initial,
+	function & task blocks.
+        (verilog-behavioral-block-beg-re): Fix indent of bare always{_*}?,
+	initial, function & task blocks.
+	(verilog-forward-sexp): Handle the new "disable fork" statement of
+	IEEE-1800 Verilog.
+        (verilog-beg-block-re-ordered): Handle the new "disable fork"
+	statement of IEEE-1800 Verilog.
+        (verilog-calc-1): Handle the new "disable fork" statement of
+	IEEE-1800 Verilog.
+        (verilog-disable-fork-re): Add const to help handle the new
+	"disable fork" statement of IEEE-1800 Verilog.
+	(verilog-declaration-core-re): Add port directions by themselves,
+	with no qualification, as base item of a declaration.
+        (verilog-pretty-declarations): Add new flag to ask it to refrain
+	from printing to the message buffer.
+        (verilog-pretty-expr): Add a QUIET flag to ask it to refrain from
+	printing to the message buffer.  Improve handling of the many
+	types of expression line up.
+        (verilog-just-one-space): Remove printing of an empty message.
+        (verilog-get-lineup-indent): Rework to support the better handling
+	of expression lineup for verilog-pretty-expr.
+        (verilog-auto-wire): Pass the quiet flag to verilog-pretty-expr.
+
+2008-02-24  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-mode.el (c-extend-region-for-CPP): Bug fix from
+	yesterday's commit.
+
+2008-02-24  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (gdb-mouse-set-clear-breakpoint): Fall back
+	to mouse-set-point in buffers that aren't associated with files.
+
+	* progmodes/gud.el: Rename menu item to "Show GUD tooltips".
+
+2008-02-24  Alan Mackenzie  <acm@muc.de>
+
+	Set of changes so that "obtrusive" syntactic elements in a
+	C/C++/ObjC preprocessor line (e.g. an unbalanced string quote or
+	unmatched paren) don't interact syntactically with stuff outside
+	the CPP line.
+
+	* progmodes/cc-awk.el (c-awk-beyond-logical-line, c-awk-old-ByLL):
+	Replace c-awk-end-of-logical-line and c-awk-old-EoLL to solve an
+	off-by-one bug.
+	(c-awk-record-region-clear-NL): Replaces c-awk-before-change, with
+	a bit of refactoring.
+	(c-awk-extend-and-syntax-tablify-region): Takes some of the
+	functionality of c-awk-advise-fl-for-awk-region, which has been
+	refactored away.
+
+	* progmodes/cc-defs.el (c-clear-char-property-with-value-function)
+	(c-clear-char-property-with-value): New function and macro which
+	remove text-properties `equal' to a supplied value.
+
+	* progmodes/cc-engine.el: Comment about text properties amended.
+
+	* progmodes/cc-fonts.el (c-cpp-matchers): Make it put regexp
+	parens around "error\\|warning".
+
+	* progmodes/cc-langs.el (c-get-state-before-change-function)
+	(c-before-font-lock-function, c-anchored-cpp-prefix):
+	New language variables.
+	(c-cpp-message-directives): Handle "#warning" in C, C++ and ObjC.
+
+	* progmodes/cc-mode.el (c-basic-common-init): C and ObjC now use
+	syntax-table text properties.
+	(c-common-init): Call language specific before/after-change
+	functions at mode initialisation.
+	(c-new-BEG, c-new-END, c-old-BOM, c-old-EOM): New variables.
+	(c-extend-region-for-CPP, c-neutralize-CPP-line)
+	(c-neutralize-syntax-in-CPP): New functions.
+	(c-before-change, c-after-change): Call the new language specific
+	change functions defined in cc-langs.el.
+	(c-advise-fl-for-region): New macro.
+	(awk-mode): Remove AWK specific stuff which has been refactored
+	into language independent stuff.
+
+2008-02-24  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (gdba): Recreate as an alias for gdb.
+	(gdb): (Re)set gdb-flush-pending-output to nil here...
+	(gdb-init-1): ...instead of here (before gdb-prompt).
+
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/ada-mode.el (ada-font-lock-syntactic-keywords):
+	Recognize ''' just like any other char-constant.
+
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* vc-hooks.el (vc-find-root): Remove initial loop because it's not
+	careful enough.  Detect the uid-change all within the main loop.
+
+2008-02-24  Stefan Monnier  <monnier@pastel.home>
+
+	* textmodes/sgml-mode.el (sgml-mode): Fix comment syntax.
+
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* hilit-chg.el (highlight-save-buffer-state): New macro.
+	(highlight-save-buffer-state, hilit-chg-set-face-on-change)
+	(hilit-chg-clear): Use it to preserve the modified-p flag.
+	(highlight-changes-rotate-faces): Don't mess with the undo-list.
+
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* font-lock.el (font-lock-set-defaults): Unset previously set variables
+	when needed.
+
+2008-02-24  ,AF(Bvar Arnfj,Av(Br,Ap(B Bjarmason  <avar@cpan.org>  (tiny change)
+
+	* net/rcirc.el (rcirc-url-regexp): Replace definition by copying
+	from gnus-button-url-regexp.
+
+2008-02-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* progmodes/compile.el (compilation-next-error): Doc fix.
+	(compilation-find-file): Doc fix.
+
+2008-02-24  Glenn Morris  <rgm@gnu.org>
+
+	* net/net-utils.el (ipconfig-program, ipconfig-program-options):
+	Add obsolete aliases to the old names.
+
+2008-02-24  Richard Stallman  <rms@gnu.org>
+
+	* net/net-utils.el (ifconfig): Rename from ipconfig.
+	(ipconfig): Alias to ifconfig.
+	(ifconfig-program): Rename from ipconfig-program.
+	(ifconfig-program-options): Rename from ipconfig-program-options.
+
+2008-02-24  Michael McNamara  <mac@mail.brushroad.com>
+
+	* progmodes/verilog-mode.el (verilog-declaration-core-re):
+	Add port directions by themselves, with no qualification, as base
+	item of a declaration.
+	(verilog-pretty-declarations): Add new flag that inhibits printing
+	to the message buffer.
+	(verilog-pretty-expr): Add new flag that inhibits printing to the
+	message buffer.  Improve handling of the many types of expression
+	line up.
+	(verilog-just-one-space): Don't print an empty message.
+	(verilog-get-lineup-indent): Rework to support the better handling
+	of expression lineup for verilog-pretty-expr.
+	(verilog-auto-wire): Pass the quiet flag to verilog-pretty-expr.
+	(verilog-mode-version, verilog-mode-release-date): Update.
+
+2008-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* subr.el (cancel-change-group): Don't move point.
+
 2008-02-23  Markus Triska  <markus.triska@gmx.at>
 
 	* linum.el (linum-after-config): Update all visible windows.
--- a/lisp/ChangeLog.12	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/ChangeLog.12	Sun Feb 24 10:09:07 2008 +0000
@@ -2386,7 +2386,7 @@
 
 2007-01-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-	* ps-print.ps: Fix background height.
+	* ps-print.el: Fix background height.
 	(ps-print-version): New version 6.7.2.
 
 2007-01-26  Eli Zaretskii  <eliz@gnu.org>
@@ -6104,7 +6104,7 @@
 	* emulation/viper.el: Bump up version/date of update to reflect the
 	substantial changes done in August 2006.
 
-	* emulation/viper-cmd (viper-next-line-at-bol): Make sure button-at,
+	* emulation/viper-cmd.el (viper-next-line-at-bol): Make sure button-at,
 	push-button are defined.
 
 	* ediff-util.el (ediff-add-to-history): New function.
@@ -18114,7 +18114,7 @@
 
 2005-11-15  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* emulation/viper-utils.el (viper-non-word-characters-reformed-vi):
+	* emulation/viper-util.el (viper-non-word-characters-reformed-vi):
 	Quote `-' in string.
 
 	* emulation/viper.el (viper-emacs-state-mode-list): Ensure that
@@ -20772,7 +20772,7 @@
 
 2005-10-05  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* ediff-merge.el (ediff-merge-region-is-non-clash): New defsubst.
+	* ediff-merg.el (ediff-merge-region-is-non-clash): New defsubst.
 	(ediff-merge-region-is-non-clash-to-skip): Previously called
 	ediff-merge-region-is-non-clash.
 
@@ -21424,7 +21424,7 @@
 
 	* emulation/viper-macs.el (ex-map): Better messages.
 
-	* emulation/viper-utils.el (viper-beginning-of-field): New function.
+	* emulation/viper-util.el (viper-beginning-of-field): New function.
 
 	* emulation/viper.el: Replace make-variable-buffer-local with
 	viper-make-variable-buffer-local everywhere, to avoid warnings.
@@ -26999,7 +26999,7 @@
 
 2005-05-29  Richard M. Stallman  <rms@gnu.org>
 
-	* textmoddes/flyspell.el (flyspell-version): Function deleted.
+	* textmodes/flyspell.el (flyspell-version): Function deleted.
 	(flyspell-auto-correct-previous-hook): Doc fix.
 
 	* jit-lock.el (jit-lock-function, jit-lock-after-change):
@@ -30044,7 +30044,7 @@
 
 2005-04-04  Jay Belanger  <belanger@truman.edu>
 
-	* calc.el (calc-language-alist): Add tags to customization type.
+	* calc/calc.el (calc-language-alist): Add tags to customization type.
 
 2005-04-03  Luc Teirlinck  <teirllm@auburn.edu>
 
--- a/lisp/custom.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/custom.el	Sun Feb 24 10:09:07 2008 +0000
@@ -900,7 +900,7 @@
                   (memq (get symbol 'custom-autoload) '(nil noset)))
         ;; This symbol needs to be autoloaded, even just for a `set'.
         (custom-load-symbol symbol))))
- 
+
   ;; Move minor modes and variables with explicit requires to the end.
   (setq args
 	(sort args
--- a/lisp/dired.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/dired.el	Sun Feb 24 10:09:07 2008 +0000
@@ -2550,8 +2550,10 @@
   (if (= 1 count) "" "s"))
 
 (defun dired-mark-prompt (arg files)
-  ;; Return a string for use in a prompt, either the current file
-  ;; name, or the marker and a count of marked files.
+  "Return a string for use in a prompt, either the current file
+name, or the marker and a count of marked files."
+  ;; distinguish-one-marked can cause the first element to be just t.
+  (if (eq (car files) t) (setq files (cdr files)))
   (let ((count (length files)))
     (if (= count 1)
 	(car files)
--- a/lisp/emacs-lisp/byte-run.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/emacs-lisp/byte-run.el	Sun Feb 24 10:09:07 2008 +0000
@@ -221,7 +221,7 @@
 ;;   verbose	  t, nil		byte-compile-verbose
 ;;   optimize	  t, nil, source, byte	byte-compile-optimize
 ;;   warnings	  list of warnings	byte-compile-warnings
-;; 		      Legal elements: (callargs redefine free-vars unresolved)
+;; 		      Valid elements: (callargs redefine free-vars unresolved)
 ;;   file-format	  emacs18, emacs19	byte-compile-compatibility
 ;;
 ;; For example, this might appear at the top of a source file:
--- a/lisp/emacs-lisp/cl-specs.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/emacs-lisp/cl-specs.el	Sun Feb 24 10:09:07 2008 +0000
@@ -323,7 +323,7 @@
 ;; Below is a complete spec for loop, in several parts that correspond
 ;; to the syntax given in CLtL2.  The specs do more than specify where
 ;; the forms are; it also specifies, as much as Edebug allows, all the
-;; syntactically legal loop clauses.  The disadvantage of this
+;; syntactically valid loop clauses.  The disadvantage of this
 ;; completeness is rigidity, but the "for ... being" clause allows
 ;; arbitrary extensions of the form: [symbolp &rest &or symbolp form].
 
--- a/lisp/emacs-lisp/edebug.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/emacs-lisp/edebug.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1496,7 +1496,7 @@
     (cond
      ((symbolp head)
       (cond
-       ((null head) nil) ; () is legal.
+       ((null head) nil) ; () is valid.
        ((eq head 'interactive-p)
 	;; Special case: replace (interactive-p) with variable
 	(setq edebug-def-interactive 'check-it)
@@ -2076,7 +2076,7 @@
    ;; doesn't handle (a . ,b).  The straightforward fix:
    ;;   (backquote-form . [&or nil backquote-form])
    ;; uses up too much stack space.
-   ;; Note that `(foo . ,@bar) is not legal, so we don't need to handle it.
+   ;; Note that `(foo . ,@bar) is not valid, so we don't need to handle it.
    (backquote-form [&rest [&not ","] backquote-form]
 		   . [&or nil backquote-form])
    ;; If you use dotted forms in backquotes, replace the previous line
--- a/lisp/erc/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/erc/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -2,6 +2,12 @@
 
 	* erc.el (erc-notice-face): Fix this face for Emacs 21 users.
 
+2008-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+	* erc.el (erc-valid-nick-regexp):
+	* erc-button.el (erc-button-syntax-table):
+	* erc-match.el (erc-match-syntax-table): Replace `legal' with `valid'.
+
 2008-02-04  Jeremy Maitin-Shepard  <jbms@cmu.edu>
 
 	* erc.el (erc-cmd-QUERY): Bind the value of `erc-auto-query' to
--- a/lisp/erc/erc-button.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/erc/erc-button.el	Sun Feb 24 10:09:07 2008 +0000
@@ -239,7 +239,7 @@
     (modify-syntax-entry ?\\ "w" table)
     table)
   "Syntax table used when buttonizing messages.
-This syntax table should make all the legal nick characters word
+This syntax table should make all the valid nick characters word
 constituents.")
 
 (defvar erc-button-keys-added nil
--- a/lisp/erc/erc-match.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/erc/erc-match.el	Sun Feb 24 10:09:07 2008 +0000
@@ -256,7 +256,7 @@
     (modify-syntax-entry ?\\ "w" table)
     table)
   "Syntax table used when highlighting messages.
-This syntax table should make all the legal nick characters word
+This syntax table should make all the valid nick characters word
 constituents.")
 
 ;; Faces:
--- a/lisp/erc/erc.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/erc/erc.el	Sun Feb 24 10:09:07 2008 +0000
@@ -2428,7 +2428,7 @@
 	(setq list (cdr list))))))
 
 (defvar erc-valid-nick-regexp "[]a-zA-Z^[;\\`_{}|][]^[;\\`_{}|a-zA-Z0-9-]*"
-  "Regexp which matches all legal characters in a IRC nickname.")
+  "Regexp which matches all valid characters in a IRC nickname.")
 
 (defun erc-is-valid-nick-p (nick)
   "Check if NICK is a valid IRC nickname."
--- a/lisp/eshell/esh-var.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/eshell/esh-var.el	Sun Feb 24 10:09:07 2008 +0000
@@ -35,7 +35,7 @@
 ;;
 ;;   $ALSO-VAR
 ;;
-;; "-" is a legal part of a variable name.
+;; "-" is a valid part of a variable name.
 ;;
 ;;   $<MYVAR>-TOO
 ;;
--- a/lisp/ffap.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/ffap.el	Sun Feb 24 10:09:07 2008 +0000
@@ -426,7 +426,7 @@
   ;; (ffap-machine-p "mathcs" 5678 nil 'ping)
   ;; (ffap-machine-p "foo.bonk" nil nil 'ping)
   ;; (ffap-machine-p "foo.bonk.com" nil nil 'ping)
-  (if (or (string-match "[^-[:alnum:].]" host) ; Illegal chars (?)
+  (if (or (string-match "[^-[:alnum:].]" host) ; Invalid chars (?)
 	  (not (string-match "[^0-9]" host))) ; 1: a number? 2: quick reject
       nil
     (let* ((domain
--- a/lisp/follow.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/follow.el	Sun Feb 24 10:09:07 2008 +0000
@@ -302,7 +302,7 @@
 ;; above for an example of how to bind the keys the way you like.
 ;;
 ;; Please note that the keymap is defined the first time this file is
-;; loaded.  Also note that the only legal way to manipulate the
+;; loaded.  Also note that the only valid way to manipulate the
 ;; keymap is to use `define-key'.  Don't change it using `setq' or
 ;; similar!
 
--- a/lisp/font-lock.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/font-lock.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1785,13 +1785,16 @@
 	    (cdr-safe (assq major-mode font-lock-removed-keywords-alist))))
       (set (make-local-variable 'font-lock-defaults) defaults)
       ;; Syntactic fontification?
-      (when (nth 1 defaults)
-	(set (make-local-variable 'font-lock-keywords-only) t))
+      (if (nth 1 defaults)
+          (set (make-local-variable 'font-lock-keywords-only) t)
+        (kill-local-variable 'font-lock-keywords-only))
       ;; Case fold during regexp fontification?
-      (when (nth 2 defaults)
-	(set (make-local-variable 'font-lock-keywords-case-fold-search) t))
+      (if (nth 2 defaults)
+          (set (make-local-variable 'font-lock-keywords-case-fold-search) t)
+        (kill-local-variable 'font-lock-keywords-case-fold-search))
       ;; Syntax table for regexp and syntactic fontification?
-      (when (nth 3 defaults)
+      (if (null (nth 3 defaults))
+          (kill-local-variable 'font-lock-syntax-table)
 	(set (make-local-variable 'font-lock-syntax-table)
 	     (copy-syntax-table (syntax-table)))
 	(dolist (selem (nth 3 defaults))
@@ -1802,9 +1805,10 @@
 			    (mapcar 'identity (car selem))))
 	      (modify-syntax-entry char syntax font-lock-syntax-table)))))
       ;; Syntax function for syntactic fontification?
-      (when (nth 4 defaults)
+      (if (nth 4 defaults)
 	(set (make-local-variable 'font-lock-beginning-of-syntax-function)
-	     (nth 4 defaults)))
+               (nth 4 defaults))
+        (kill-local-variable 'font-lock-beginning-of-syntax-function))
       ;; Variable alist?
       (dolist (x (nthcdr 5 defaults))
 	(set (make-local-variable (car x)) (cdr x)))
--- a/lisp/gnus/deuglify.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/gnus/deuglify.el	Sun Feb 24 10:09:07 2008 +0000
@@ -68,7 +68,7 @@
 ;; > verb.  This sentence no verb.  This sentence no verb.  This
 ;; > sentence no verb.
 ;;
-;; Unwrapping "You forgot in all your sentences." would be illegal as
+;; Unwrapping "You forgot in all your sentences." would be invalid as
 ;; this part wasn't intended to be cited text.
 ;; `gnus-article-outlook-unwrap-lines' will only unwrap lines if the resulting
 ;; citation line will be of a certain maximum length.  You can control
--- a/lisp/hilit-chg.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/hilit-chg.el	Sun Feb 24 10:09:07 2008 +0000
@@ -515,12 +515,28 @@
 	      (delete-overlay ov))))))
     (hilit-chg-display-changes beg end)))
 
+;; Inspired by font-lock.  Something like this should be moved to subr.el.
+(defmacro highlight-save-buffer-state (&rest body)
+  "Bind variables according to VARLIST and eval BODY restoring buffer state."
+  (declare (indent 0) (debug t))
+  (let ((modified (make-symbol "modified")))
+    `(let* ((,modified (buffer-modified-p))
+            (inhibit-modification-hooks t)
+            deactivate-mark
+            ;; So we don't check the file's mtime.
+            buffer-file-name
+            buffer-file-truename)
+       (progn
+         ,@body)
+       (unless ,modified
+         (restore-buffer-modified-p nil)))))
+
 ;;;###autoload
 (defun highlight-changes-remove-highlight (beg end)
   "Remove the change face from the region between BEG and END.
 This allows you to manually remove highlighting from uninteresting changes."
   (interactive "r")
-  (let ((after-change-functions nil))
+  (highlight-save-buffer-state
     (remove-text-properties beg end '(hilit-chg nil))
     (hilit-chg-fixup beg end)))
 
@@ -543,38 +559,39 @@
       (if undo-in-progress
 	  (if (eq highlight-changes-mode 'active)
 	      (hilit-chg-fixup beg end))
-	(if (and (= beg end) (> leng-before 0))
-	    ;; deletion
-	    (progn
-	      ;; The eolp and bolp tests are a kludge!  But they prevent
-	      ;; rather nasty looking displays when deleting text at the end
-	      ;; of line, such as normal corrections as one is typing and
-	      ;; immediately makes a correction, and when deleting first
-	      ;; character of a line.
-;;;	      (if (= leng-before 1)
-;;;		  (if (eolp)
-;;;		      (setq beg-decr 0 end-incr 0)
-;;;		    (if (bolp)
-;;;			(setq beg-decr 0))))
-;;;	      (setq beg (max (- beg beg-decr) (point-min)))
-	      (setq end (min (+ end end-incr) (point-max)))
-	      (setq type 'hilit-chg-delete))
-	  ;; Not a deletion.
-	  ;; Most of the time the following is not necessary, but
-	  ;; if the current text was marked as a deletion then
-	  ;; the old overlay is still in effect, so if we add some
-	  ;; text then remove the deletion marking, but set it to
+        (highlight-save-buffer-state
+          (if (and (= beg end) (> leng-before 0))
+              ;; deletion
+              (progn
+                ;; The eolp and bolp tests are a kludge!  But they prevent
+                ;; rather nasty looking displays when deleting text at the end
+                ;; of line, such as normal corrections as one is typing and
+                ;; immediately makes a correction, and when deleting first
+                ;; character of a line.
+                ;; (if (= leng-before 1)
+                ;;     (if (eolp)
+                ;;         (setq beg-decr 0 end-incr 0)
+                ;;       (if (bolp)
+                ;;   	(setq beg-decr 0))))
+                ;; (setq beg (max (- beg beg-decr) (point-min)))
+                (setq end (min (+ end end-incr) (point-max)))
+                (setq type 'hilit-chg-delete))
+            ;; Not a deletion.
+            ;; Most of the time the following is not necessary, but
+            ;; if the current text was marked as a deletion then
+            ;; the old overlay is still in effect, so if we add some
+            ;; text then remove the deletion marking, but set it to
 	  ;; changed otherwise its highlighting disappears.
 	  (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete)
 	      (progn
 		(remove-text-properties end (+ end 1) '(hilit-chg nil))
 		(put-text-property end (+ end 1) 'hilit-chg 'hilit-chg)
 		(if (eq highlight-changes-mode 'active)
-		    (hilit-chg-fixup beg (+ end 1))))))
-	(unless no-property-change
-		(put-text-property beg end 'hilit-chg type))
-	(if (or (eq highlight-changes-mode 'active) no-property-change)
-	    (hilit-chg-make-ov type beg end))))))
+                      (hilit-chg-fixup beg (+ end 1))))))
+          (unless no-property-change
+            (put-text-property beg end 'hilit-chg type))
+          (if (or (eq highlight-changes-mode 'active) no-property-change)
+              (hilit-chg-make-ov type beg end)))))))
 
 (defun hilit-chg-set (value)
   "Turn on Highlight Changes mode for this buffer."
@@ -602,12 +619,11 @@
       (message "Cannot remove highlighting from read-only mode buffer %s"
 	       (buffer-name))
     (remove-hook 'after-change-functions 'hilit-chg-set-face-on-change t)
-    (let ((after-change-functions nil))
+    (highlight-save-buffer-state
       (hilit-chg-hide-changes)
       (hilit-chg-map-changes
-       '(lambda (prop start stop)
-	  (remove-text-properties start stop '(hilit-chg nil))))
-      )
+       (lambda (prop start stop)
+         (remove-text-properties start stop '(hilit-chg nil)))))
     (setq highlight-changes-mode nil)
     (force-mode-line-update)
     ;; If we type:  C-u -1 M-x highlight-changes-mode
@@ -798,11 +814,12 @@
       ;; of the current buffer due to the rotation.  We do this by inserting (in
       ;; `buffer-undo-list') entries restoring buffer-modified-p to nil before
       ;; and after the entry for the rotation.
-      (unless modified
-	;; Install the "before" entry.
-	(setq buffer-undo-list
-	      (cons '(apply restore-buffer-modified-p nil)
-		    buffer-undo-list)))
+      ;; FIXME: this is no good: we need to test the `modified' state at the
+      ;; time of the undo, not at the time of the "do", otherwise the undo
+      ;; may erroneously clear the modified flag.  --Stef
+      ;; (unless modified
+      ;;   ;; Install the "before" entry.
+      ;;   (push '(apply restore-buffer-modified-p nil) buffer-undo-list))
       (unwind-protect
 	  (progn
 	    ;; ensure hilit-chg-list is made and up to date
@@ -815,10 +832,8 @@
 	    (if (eq highlight-changes-mode 'active)
 		(hilit-chg-display-changes)))
 	(unless modified
-	  ;; Install the "after" entry.
-	  (setq buffer-undo-list
-		(cons '(apply restore-buffer-modified-p nil)
-		      buffer-undo-list))
+	  ;; Install the "after" entry.  FIXME: See above.
+	  ;; (push '(apply restore-buffer-modified-p nil) buffer-undo-list)
 
 	  (restore-buffer-modified-p nil)))))
   ;; This always returns nil so it is safe to use in write-file-functions
--- a/lisp/isearch.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/isearch.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1486,7 +1486,7 @@
 	;; removes all bracket-sets and groups that might be in the way, as
 	;; well as partial \{\} constructs that the code below leaves behind.
 	;; Also skip over postfix operators -- though horrid,
-	;; 'ab?\{5,6\}+\{1,2\}*' is perfectly legal.
+	;; 'ab?\{5,6\}+\{1,2\}*' is perfectly valid.
 	(while (and previous
 		    (or (isearch-error-state frame)
 			(let* ((string (isearch-string-state frame))
--- a/lisp/ldefs-boot.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/ldefs-boot.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1890,6 +1890,18 @@
 
 ;;;***
 
+;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el"
+;;;;;;  (18310 14604))
+;;; Generated autoloads from textmodes/bibtex-style.el
+ (add-to-list 'auto-mode-alist '("\\.bst\\'" . bibtex-style-mode))
+
+(autoload (quote bibtex-style-mode) "bibtex-style" "\
+Major mode for editing BibTeX style files.
+
+\(fn)" t nil)
+
+;;;***
+
 ;;;### (autoloads (binhex-decode-region binhex-decode-region-external
 ;;;;;;  binhex-decode-region-internal) "binhex" "mail/binhex.el"
 ;;;;;;  (18335 54537))
@@ -12196,6 +12208,8 @@
 
 \(fn COMMAND-LINE)" t nil)
 
+(defalias (quote gdba) (quote gdb))
+
 (defvar gdb-enable-debug nil "\
 Non-nil means record the process input and output in `gdb-debug-log'.")
 
@@ -30680,6 +30694,201 @@
 
 ;;;***
 
+;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el"
+;;;;;;  (18310 14601))
+;;; Generated autoloads from progmodes/vera-mode.el
+ (add-to-list 'auto-mode-alist '("\\.vr[hi]?\\'" . vera-mode))
+
+(autoload (quote vera-mode) "vera-mode" "\
+Major mode for editing Vera code.
+
+Usage:
+------
+
+  INDENTATION:  Typing `TAB' at the beginning of a line indents the line.
+    The amount of indentation is specified by option `vera-basic-offset'.
+    Indentation can be done for an entire region (`M-C-\\') or buffer (menu).
+    `TAB' always indents the line if option `vera-intelligent-tab' is nil.
+
+  WORD/COMMAND COMPLETION:  Typing `TAB' after a (not completed) word looks
+    for a word in the buffer or a Vera keyword that starts alike, inserts it
+    and adjusts case.  Re-typing `TAB' toggles through alternative word
+    completions.
+
+    Typing `TAB' after a non-word character inserts a tabulator stop (if not
+    at the beginning of a line).  `M-TAB' always inserts a tabulator stop.
+
+  COMMENTS:  `C-c C-c' comments out a region if not commented out, and
+    uncomments a region if already commented out.
+
+  HIGHLIGHTING (fontification):  Vera keywords, predefined types and
+    constants, function names, declaration names, directives, as well as
+    comments and strings are highlighted using different colors.
+
+  VERA VERSION:  OpenVera 1.4 and Vera version 6.2.8.
+
+
+Maintenance:
+------------
+
+To submit a bug report, use the corresponding menu entry within Vera Mode.
+Add a description of the problem and include a reproducible test case.
+
+Feel free to send questions and enhancement requests to <reto@gnu.org>.
+
+Official distribution is at
+<http://www.iis.ee.ethz.ch/~zimmi/emacs/vera-mode.html>.
+
+
+                                                  The Vera Mode Maintainer
+                                               Reto Zimmermann <reto@gnu.org>
+
+Key bindings:
+-------------
+
+\\{vera-mode-map}
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el"
+;;;;;;  (18363 3872))
+;;; Generated autoloads from progmodes/verilog-mode.el
+
+(autoload (quote verilog-mode) "verilog-mode" "\
+Major mode for editing Verilog code.
+\\<verilog-mode-map>
+See \\[describe-function] verilog-auto (\\[verilog-auto]) for details on how
+AUTOs can improve coding efficiency.
+
+Use \\[verilog-faq] for a pointer to frequently asked questions.
+
+NEWLINE, TAB indents for Verilog code.
+Delete converts tabs to spaces as it moves back.
+
+Supports highlighting.
+
+Turning on Verilog mode calls the value of the variable `verilog-mode-hook'
+with no args, if that value is non-nil.
+
+Variables controlling indentation/edit style:
+
+ variable `verilog-indent-level'      (default 3)
+   Indentation of Verilog statements with respect to containing block.
+ `verilog-indent-level-module'        (default 3)
+   Absolute indentation of Module level Verilog statements.
+   Set to 0 to get initial and always statements lined up
+   on the left side of your screen.
+ `verilog-indent-level-declaration'   (default 3)
+   Indentation of declarations with respect to containing block.
+   Set to 0 to get them list right under containing block.
+ `verilog-indent-level-behavioral'    (default 3)
+   Indentation of first begin in a task or function block
+   Set to 0 to get such code to lined up underneath the task or
+   function keyword.
+ `verilog-indent-level-directive'     (default 1)
+   Indentation of `ifdef/`endif blocks.
+ `verilog-cexp-indent'              (default 1)
+   Indentation of Verilog statements broken across lines i.e.:
+      if (a)
+        begin
+ `verilog-case-indent'              (default 2)
+   Indentation for case statements.
+ `verilog-auto-newline'             (default nil)
+   Non-nil means automatically newline after semicolons and the punctuation
+   mark after an end.
+ `verilog-auto-indent-on-newline'   (default t)
+   Non-nil means automatically indent line after newline.
+ `verilog-tab-always-indent'        (default t)
+   Non-nil means TAB in Verilog mode should always reindent the current line,
+   regardless of where in the line point is when the TAB command is used.
+ `verilog-indent-begin-after-if'    (default t)
+   Non-nil means to indent begin statements following a preceding
+   if, else, while, for and repeat statements, if any.  Otherwise,
+   the begin is lined up with the preceding token.  If t, you get:
+      if (a)
+         begin // amount of indent based on `verilog-cexp-indent'
+   otherwise you get:
+      if (a)
+      begin
+ `verilog-auto-endcomments'         (default t)
+   Non-nil means a comment /* ... */ is set after the ends which ends
+   cases, tasks, functions and modules.
+   The type and name of the object will be set between the braces.
+ `verilog-minimum-comment-distance' (default 10)
+   Minimum distance (in lines) between begin and end required before a comment
+   will be inserted.  Setting this variable to zero results in every
+   end acquiring a comment; the default avoids too many redundant
+   comments in tight quarters.
+ `verilog-auto-lineup'              (default `(all))
+   List of contexts where auto lineup of code should be done.
+
+Variables controlling other actions:
+
+ `verilog-linter'                   (default surelint)
+   Unix program to call to run the lint checker.  This is the default
+   command for \\[compile-command] and \\[verilog-auto-save-compile].
+
+See \\[customize] for the complete list of variables.
+
+AUTO expansion functions are, in part:
+
+    \\[verilog-auto]  Expand AUTO statements.
+    \\[verilog-delete-auto]  Remove the AUTOs.
+    \\[verilog-inject-auto]  Insert AUTOs for the first time.
+
+Some other functions are:
+
+    \\[verilog-complete-word]    Complete word with appropriate possibilities.
+    \\[verilog-mark-defun]  Mark function.
+    \\[verilog-beg-of-defun]  Move to beginning of current function.
+    \\[verilog-end-of-defun]  Move to end of current function.
+    \\[verilog-label-be]  Label matching begin ... end, fork ... join, etc statements.
+
+    \\[verilog-comment-region]  Put marked area in a comment.
+    \\[verilog-uncomment-region]  Uncomment an area commented with \\[verilog-comment-region].
+    \\[verilog-insert-block]  Insert begin ... end;.
+    \\[verilog-star-comment]    Insert /* ... */.
+
+    \\[verilog-sk-always]  Insert a always @(AS) begin .. end block.
+    \\[verilog-sk-begin]  Insert a begin .. end block.
+    \\[verilog-sk-case]  Insert a case block, prompting for details.
+    \\[verilog-sk-for]  Insert a for (...) begin .. end block, prompting for details.
+    \\[verilog-sk-generate]  Insert a generate .. endgenerate block.
+    \\[verilog-sk-header]  Insert a nice header block at the top of file.
+    \\[verilog-sk-initial]  Insert an initial begin .. end block.
+    \\[verilog-sk-fork]  Insert a fork begin .. end .. join block.
+    \\[verilog-sk-module]  Insert a module .. (/*AUTOARG*/);.. endmodule block.
+    \\[verilog-sk-primitive]  Insert a primitive .. (.. );.. endprimitive block.
+    \\[verilog-sk-repeat]  Insert a repeat (..) begin .. end block.
+    \\[verilog-sk-specify]  Insert a specify .. endspecify block.
+    \\[verilog-sk-task]  Insert a task .. begin .. end endtask block.
+    \\[verilog-sk-while]  Insert a while (...) begin .. end block, prompting for details.
+    \\[verilog-sk-casex]  Insert a casex (...) item: begin.. end endcase block, prompting for details.
+    \\[verilog-sk-casez]  Insert a casez (...) item: begin.. end endcase block, prompting for details.
+    \\[verilog-sk-if]  Insert an if (..) begin .. end block.
+    \\[verilog-sk-else-if]  Insert an else if (..) begin .. end block.
+    \\[verilog-sk-comment]  Insert a comment block.
+    \\[verilog-sk-assign]  Insert an assign .. = ..; statement.
+    \\[verilog-sk-function]  Insert a function .. begin .. end endfunction block.
+    \\[verilog-sk-input]  Insert an input declaration, prompting for details.
+    \\[verilog-sk-output]  Insert an output declaration, prompting for details.
+    \\[verilog-sk-state-machine]  Insert a state machine definition, prompting for details.
+    \\[verilog-sk-inout]  Insert an inout declaration, prompting for details.
+    \\[verilog-sk-wire]  Insert a wire declaration, prompting for details.
+    \\[verilog-sk-reg]  Insert a register declaration, prompting for details.
+    \\[verilog-sk-define-signal]  Define signal under point as a register at the top of the module.
+
+All key bindings can be seen in a Verilog-buffer with \\[describe-bindings].
+Key bindings specific to `verilog-mode-map' are:
+
+\\{verilog-mode-map}
+
+\(fn)" t nil)
+
+;;;***
+
 ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
 ;;;;;;  (18335 54543))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
@@ -31760,6 +31969,11 @@
 ;;;;;;  global-whitespace-toggle-options whitespace-toggle-options
 ;;;;;;  whitespace-mode) "whitespace" "whitespace.el" (18340 43875))
 ;;; Generated autoloads from whitespace.el
+(put 'whitespace-check-buffer-leading 'safe-local-variable 'booleanp)
+(put 'whitespace-check-buffer-trailing 'safe-local-variable 'booleanp)
+(put 'whitespace-check-buffer-indent 'safe-local-variable 'booleanp)
+(put 'whitespace-check-buffer-spacetab 'safe-local-variable 'booleanp)
+(put 'whitespace-check-buffer-ateol 'safe-local-variable 'booleanp)
 
 (autoload 'whitespace-mode "whitespace" "\
 Toggle whitespace minor mode visualization (\"ws\" on modeline).
@@ -31956,7 +32170,7 @@
 See also `whitespace-cleanup' and `whitespace-cleanup-region' for
 cleaning up these problems.
 
-\(fn)" t nil)
+\(fn)" nil nil)
 
 ;;;***
 
--- a/lisp/mail/mail-extr.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mail/mail-extr.el	Sun Feb 24 10:09:07 2008 +0000
@@ -850,7 +850,7 @@
 	      (setq char ?\() ; HAVE I NO SHAME??
 	      )
 	     ;; record the position of various interesting chars, determine
-	     ;; legality later.
+	     ;; validity later.
 	     ((setq record-pos-symbol
 		    (cdr (assq char
 			       '((?< . <-pos) (?> . >-pos) (?@ . @-pos)
@@ -862,9 +862,9 @@
 	     ((eq char ?.)
 	      (forward-char 1))
 	     ((memq char '(
-			   ;; comment terminator illegal
+			   ;; comment terminator invalid
 			   ?\)
-			   ;; domain literal terminator illegal
+			   ;; domain literal terminator invalid
 			   ?\]
 			   ;; \ allowed only within quoted strings,
 			   ;; domain literals, and comments
--- a/lisp/mh-e/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mh-e/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -77,6 +77,22 @@
 	* mh-mime.el (mh-mml-forward-message): Forward messages as inline
 	attatchments (closes SF #1378993).
 
+2008-02-06  Richard Stallman  <rms@gnu.org>
+
+	* mh-seq.el (mh-make-seq, mh-seq-name): Use defsubst.
+
+	* mh-acros.el (mh-do-in-gnu-emacs, mh-do-in-xemacs)
+	(with-mh-folder-updating, mh-in-show-buffer)
+	(mh-iterate-on-messages-in-region, mh-iterate-on-range):
+	(mh-do-at-event-location): Add debug decls.
+	(mh-seq-msgs): Use defsubst.
+
+2008-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+	* mh-e.el (mh-scan-format-file-check, mh-adaptive-cmd-note-flag-check):
+	* mh-xface.el (mh-x-image-url-cache-canonicalize):
+	Replace `legal' with `valid'.
+
 2007-08-19  Jeffrey C Honig  <jch@honig.net>
 
 	* mh-e.el (mh-invisible-header-fields-internal): We want to show
--- a/lisp/mh-e/mh-acros.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mh-e/mh-acros.el	Sun Feb 24 10:09:07 2008 +0000
@@ -65,12 +65,14 @@
 ;;;###mh-autoload
 (defmacro mh-do-in-gnu-emacs (&rest body)
   "Execute BODY if in GNU Emacs."
+  (declare (debug t))
   (unless (featurep 'xemacs) `(progn ,@body)))
 (put 'mh-do-in-gnu-emacs 'lisp-indent-hook 'defun)
 
 ;;;###mh-autoload
 (defmacro mh-do-in-xemacs (&rest body)
   "Execute BODY if in XEmacs."
+  (declare (debug t))
   (when (featurep 'xemacs) `(progn ,@body)))
 (put 'mh-do-in-xemacs 'lisp-indent-hook 'defun)
 
@@ -178,6 +180,7 @@
 worry about file locking or the read-only flag, and return its result.
 If SAVE-MODIFICATION-FLAG is non-nil, the buffer's modification flag
 is unchanged, otherwise it is cleared."
+  (declare (debug t))
   (setq save-modification-flag (car save-modification-flag)) ; CL style
   `(prog1
        (let ((mh-folder-updating-mod-flag (buffer-modified-p))
@@ -196,6 +199,7 @@
   "Format is (mh-in-show-buffer (SHOW-BUFFER) &body BODY).
 Display buffer SHOW-BUFFER in other window and execute BODY in it.
 Stronger than `save-excursion', weaker than `save-window-excursion'."
+  (declare (debug t))
   (setq show-buffer (car show-buffer))  ; CL style
   `(let ((mh-in-show-buffer-saved-window (selected-window)))
      (switch-to-buffer-other-window ,show-buffer)
@@ -212,6 +216,7 @@
 After BODY has been executed return to original window. The
 modification flag of the buffer in the event window is
 preserved."
+  (declare (debug t))
   (let ((event-window (make-symbol "event-window"))
         (event-position (make-symbol "event-position"))
         (original-window (make-symbol "original-window"))
@@ -245,9 +250,9 @@
 ;;; Sequences and Ranges
 
 ;;;###mh-autoload
-(defmacro mh-seq-msgs (sequence)
+(defsubst mh-seq-msgs (sequence)
   "Extract messages from the given SEQUENCE."
-  (list 'cdr sequence))
+  (cdr sequence))
 
 ;;;###mh-autoload
 (defmacro mh-iterate-on-messages-in-region (var begin end &rest body)
@@ -257,6 +262,7 @@
 starting from BEGIN till END. In each step BODY is executed.
 
 If VAR is nil then the loop is executed without any binding."
+  (declare (debug (symbolp body)))
   (unless (symbolp var)
     (error "Can not bind the non-symbol %s" var))
   (let ((binding-needed-flag var))
@@ -282,6 +288,7 @@
 The parameter RANGE is usually created with
 `mh-interactive-range' in order to provide a uniform interface to
 MH-E functions."
+  (declare (debug (symbolp body)))
   (unless (symbolp var)
     (error "Can not bind the non-symbol %s" var))
   (let ((binding-needed-flag var)
--- a/lisp/mh-e/mh-e.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mh-e/mh-e.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1982,7 +1982,7 @@
   :package-version '(MH-E . "7.0"))
 
 (defun mh-scan-format-file-check (symbol value)
-  "Check if desired setting is legal.
+  "Check if desired setting is valid.
 Throw an error if user tries to set `mh-scan-format-file' to
 anything but t when `mh-adaptive-cmd-note-flag' is on. Otherwise,
 set SYMBOL to VALUE."
@@ -2021,7 +2021,7 @@
   :package-version '(MH-E . "6.0"))
 
 (defun mh-adaptive-cmd-note-flag-check (symbol value)
-  "Check if desired setting is legal.
+  "Check if desired setting is valid.
 Throw an error if user tries to turn on
 `mh-adaptive-cmd-note-flag' when `mh-scan-format-file' isn't t.
 Otherwise, set SYMBOL to VALUE."
--- a/lisp/mh-e/mh-seq.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mh-e/mh-seq.el	Sun Feb 24 10:09:07 2008 +0000
@@ -53,13 +53,13 @@
 
 ;;; Macros
 
-(defmacro mh-make-seq (name msgs)
+(defsubst mh-make-seq (name msgs)
   "Create sequence NAME with the given MSGS."
-  (list 'cons name msgs))
+  (cons name msgs))
 
-(defmacro mh-seq-name (sequence)
+(defsubst mh-seq-name (sequence)
   "Extract sequence name from the given SEQUENCE."
-  (list 'car sequence))
+  (car sequence))
 
 
 
--- a/lisp/mh-e/mh-xface.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/mh-e/mh-xface.el	Sun Feb 24 10:09:07 2008 +0000
@@ -360,8 +360,8 @@
   "Canonicalize URL.
 Replace the ?/ character with a ?! character and append .png.
 Also replaces special characters with `mh-url-hexify-string'
-since not all characters, such as :, are legal within Windows
-filenames. In addition, replaces * with %2a. See URL
+since not all characters, such as :, are valid within Windows
+filenames.  In addition, replaces * with %2a. See URL
 `http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iitemnamelimits/GetValidCharacters.asp'."
   (format "%s/%s.png" mh-x-image-cache-directory
           (mh-replace-regexp-in-string
--- a/lisp/net/ange-ftp.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/net/ange-ftp.el	Sun Feb 24 10:09:07 2008 +0000
@@ -297,7 +297,7 @@
 ;; you would type:
 ;;  C-x C-f /anonymous@ymir.claremont.edu:CSV/POLICY/RULES.MEM
 ;;
-;; A legal VMS filename is of the form: FILE.TYPE;##
+;; A valid VMS filename is of the form: FILE.TYPE;##
 ;; where FILE can be up to 39 characters
 ;;       TYPE can be up to 39 characters
 ;;       ## is a version number (an integer between 1 and 32,767)
--- a/lisp/net/net-utils.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/net/net-utils.el	Sun Feb 24 10:09:07 2008 +0000
@@ -93,7 +93,7 @@
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom ipconfig-program
+(defcustom ifconfig-program
   (if (eq system-type 'windows-nt)
       "ipconfig"
     "ifconfig")
@@ -101,11 +101,13 @@
   :group 'net-utils
   :type  'string)
 
-(defcustom ipconfig-program-options
+(define-obsolete-variable-alias 'ipconfig-program 'ifconfig-program "22.2")
+
+(defcustom ifconfig-program-options
   (list
    (if (eq system-type 'windows-nt)
        "/all" "-a"))
-  "Options for ipconfig-program."
+  "Options for `ifconfig-program'."
   :group 'net-utils
   :type  '(repeat string))
 
@@ -121,6 +123,9 @@
  :type '(repeat string)
  :version "23.1")
 
+(define-obsolete-variable-alias 'ipconfig-program-options
+  'ifconfig-program-options "22.2")
+
 (defcustom netstat-program  "netstat"
   "Program to print network statistics."
   :group 'net-utils
@@ -364,18 +369,18 @@
      options)))
 
 ;;;###autoload
-(defun ipconfig ()
-  "Run ipconfig program."
+(defun ifconfig ()
+  "Run ifconfig program."
   (interactive)
   (net-utils-run-program
-   "Ipconfig"
-   (concat "** Ipconfig ** " ipconfig-program " ** ")
-   ipconfig-program
-   ipconfig-program-options))
+   "Ifconfig"
+   (concat "** Ifconfig ** " ifconfig-program " ** ")
+   ifconfig-program
+   ifconfig-program-options))
 
-;; This is the normal name on most Unixes.
+;; Windows uses this name.
 ;;;###autoload
-(defalias 'ifconfig 'ipconfig)
+(defalias 'ipconfig 'ifconfig)
 
 ;;;###autoload
 (defun iwconfig ()
--- a/lisp/net/rcirc.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/net/rcirc.el	Sun Feb 24 10:09:07 2008 +0000
@@ -2137,23 +2137,24 @@
     string))
 
 (defvar rcirc-url-regexp
-  (rx-to-string
-   `(and word-boundary
-	 (or (and
-	      (or (and (or "http" "https" "ftp" "file" "gopher" "news"
-			   "telnet" "wais" "mailto")
-		       "://")
-		  "www.")
-	      (1+ (char "-a-zA-Z0-9_."))
-	      (1+ (char "-a-zA-Z0-9_"))
-	      (optional ":" (1+ (char "0-9"))))
-	     (and (1+ (char "-a-zA-Z0-9_."))
-		  (or ".com" ".net" ".org")
-		  word-boundary))
-	 (optional
-	  (and "/"
-	       (1+ (char "-a-zA-Z0-9_='!?#$\@~`%&*+|\\/:;.,{}[]()"))
-	       (char "-a-zA-Z0-9_=#$\@~`%&*+|\\/:;{}[]()")))))
+  (concat
+   "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|"
+   "nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)"
+   "\\(//[-a-z0-9_.]+:[0-9]*\\)?"
+   (if (string-match "[[:digit:]]" "1") ;; Support POSIX?
+       (let ((chars "-a-z0-9_=#$@~%&*+\\/[:word:]")
+	     (punct "!?:;.,"))
+	 (concat
+	  "\\(?:"
+	  ;; Match paired parentheses, e.g. in Wikipedia URLs:
+	  "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" "[" chars "]"
+	  "\\|"
+	  "[" chars punct     "]+" "[" chars "]"
+	  "\\)"))
+     (concat ;; XEmacs 21.4 doesn't support POSIX.
+      "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+"
+      "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)"))
+   "\\)")
   "Regexp matching URLs.  Set to nil to disable URL features in rcirc.")
 
 (defun rcirc-browse-url (&optional arg)
--- a/lisp/progmodes/ada-mode.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/ada-mode.el	Sun Feb 24 10:09:07 2008 +0000
@@ -5180,12 +5180,9 @@
 
 (defconst ada-font-lock-syntactic-keywords
   ;; Mark single quotes as having string quote syntax in 'c' instances.
-  ;; As a special case, ''' will not be highlighted, but if we do not
-  ;; set this special case, then the rest of the buffer is highlighted as
-  ;; a string
-  ;; This sets the properties of the characters, so that ada-in-string-p
-  ;; correctly handles '"' too...
-  '(("[^a-zA-Z0-9)]\\('\\)[^'\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?')))
+  ;; We used to explicitly avoid ''' as a special case for fear the buffer
+  ;; be highlighted as a string, but it seems this fear is unfounded.
+  '(("[^a-zA-Z0-9)]\\('\\)[^\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?')))
     ("^[ \t]*\\(#\\(if\\|else\\|elsif\\|end\\)\\)" (1 (11 . ?\n)))))
 
 (defvar ada-font-lock-keywords
--- a/lisp/progmodes/cc-awk.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-awk.el	Sun Feb 24 10:09:07 2008 +0000
@@ -53,6 +53,8 @@
 
 ;; Silence the byte compiler.
 (cc-bytecomp-defvar font-lock-mode)	; Checked with boundp before use.
+(cc-bytecomp-defvar c-new-BEG)
+(cc-bytecomp-defvar c-new-END)
 
 ;; Some functions in cc-engine that are used below.  There's a cyclic
 ;; dependency so it can't be required here.  (Perhaps some functions
@@ -213,7 +215,7 @@
   "\\([{}@` \t]\\|\\+\\+\\|--\\|\\\\.\\)")
 ;;   A "neutral" char(pair).  Doesn't change the "state" of a subsequent /.
 ;; This is space/tab, braces, an auto-increment/decrement operator or an
-;; escaped character.  Or one of the (illegal) characters @ or `.  But NOT an
+;; escaped character.  Or one of the (invalid) characters @ or `.  But NOT an
 ;; end of line (even if escaped).
 (defconst c-awk-neutrals*-re
   (concat "\\(" c-awk-neutral-re "\\)*"))
@@ -624,22 +626,25 @@
     (forward-line -1))
   (point))
 
-(defun c-awk-end-of-logical-line (&optional pos)
-;; Go forward to the end of the (apparent) current logical line (or the end of
-;; the line containing POS), returning the buffer position of that point.  I.e.,
-;; go to the end of the next line which doesn't have an escaped EOL.
+(defun c-awk-beyond-logical-line (&optional pos)
+;; Return the position just beyond the (apparent) current logical line, or the
+;; one containing POS.  This is usually the beginning of the next line which
+;; doesn't follow an escaped EOL.  At EOB, this will be EOB.
+;;
+;; Point is unchanged.
 ;;
 ;; This is guaranteed to be "safe" for syntactic analysis, i.e. outwith any
 ;; comment, string or regexp.  IT MAY WELL BE that this function should not be
 ;; executed on a narrowed buffer.
-;;
-;; This function might do hidden buffer changes.
-  (if pos (goto-char pos))
-  (end-of-line)
-  (while (and (< (point) (point-max))
-              (eq (char-before) ?\\))
-    (end-of-line 2))
-  (point))
+  (save-excursion
+    (if pos (goto-char pos))
+    (end-of-line)
+    (while (and (< (point) (point-max))
+		(eq (char-before) ?\\))
+      (end-of-line 2))
+    (if (< (point) (point-max))
+	(1+ (point))
+      (point))))
 
 ;; ACM, 2002/02/15: The idea of the next function is to put the "Error font"
 ;; on strings/regexps which are missing their closing delimiter.
@@ -712,7 +717,7 @@
   ;;
   ;; The result is what ANCHOR-STATE-/DIV (see above) is where point is left.
   ;;
-  ;; This function might do hidden buffer changes.
+  ;; This function does hidden buffer changes.
   (let ((/point (point)))
     (goto-char anchor)
     ;; Analyse the line to find out what the / is.
@@ -780,55 +785,38 @@
               (c-awk-syntax-tablify-/ anchor anchor-state-/div))))
     nil))
 
-
 ;; ACM, 2002/07/21: Thoughts: We need an AWK Mode after-change function to set
 ;; the syntax-table properties even when font-lock isn't enabled, for the
 ;; subsequent use of movement functions, etc.  However, it seems that if font
 ;; lock _is_ enabled, we can always leave it to do the job.
-(defvar c-awk-old-EOLL 0)
-(make-variable-buffer-local 'c-awk-old-EOLL)
-;; End of logical line following the region which is about to be changed.  Set
-;; in c-awk-before-change and used in c-awk-after-change.
+(defvar c-awk-old-ByLL 0)
+(make-variable-buffer-local 'c-awk-old-Byll)
+;; Just beyond logical line following the region which is about to be changed.
+;; Set in c-awk-record-region-clear-NL and used in c-awk-after-change.
 
-(defun c-awk-before-change (beg end)
+(defun c-awk-record-region-clear-NL (beg end)
 ;; This function is called exclusively from the before-change-functions hook.
 ;; It does two things: Finds the end of the (logical) line on which END lies,
-;; and clears c-awk-NL-prop text properties from this point onwards.
+;; and clears c-awk-NL-prop text properties from this point onwards.  BEG is
+;; ignored.
 ;;
-;; This function might do hidden buffer changes.
-  (save-restriction
-    (save-excursion
-      (setq c-awk-old-EOLL (c-awk-end-of-logical-line end))
-      (c-save-buffer-state nil
-       (c-awk-clear-NL-props end (point-max))))))
+;; On entry, the buffer will have been widened and match-data will have been
+;; saved; point is undefined on both entry and exit; the return value is
+;; ignored.
+;;
+;; This function does hidden buffer changes.
+  (c-save-buffer-state ()
+    (setq c-awk-old-ByLL (c-awk-beyond-logical-line end))
+    (c-save-buffer-state nil
+      (c-awk-clear-NL-props end (point-max)))))
 
 (defun c-awk-end-of-change-region (beg end old-len)
   ;; Find the end of the region which needs to be font-locked after a change.
   ;; This is the end of the logical line on which the change happened, either
   ;; as it was before the change, or as it is now, whichever is later.
   ;; N.B. point is left undefined.
-  ;;
-  ;; This function might do hidden buffer changes.
-  (max (+ (- c-awk-old-EOLL old-len) (- end beg))
-       (c-awk-end-of-logical-line end)))
-
-(defun c-awk-after-change (beg end old-len)
-;; This function is called exclusively as an after-change function in
-;; AWK Mode.  It ensures that the syntax-table properties get set in the
-;; changed region.  However, if font-lock is enabled, this function does
-;; nothing, since an enabled font-lock after-change function will always do
-;; this.
-;;
-;; This function might do hidden buffer changes.
-  (unless (and (boundp 'font-lock-mode) font-lock-mode)
-    (save-restriction
-      (save-excursion
-	(save-match-data
-	  (setq end (c-awk-end-of-change-region beg end old-len))
-	  (c-awk-beginning-of-logical-line beg)
-	  (c-save-buffer-state nil  ; So that read-only status isn't affected.
-                                        ; (e.g. when first loading the buffer)
-	    (c-awk-set-syntax-table-properties end)))))))
+  (max (+ (- c-awk-old-ByLL old-len) (- end beg))
+       (c-awk-beyond-logical-line end)))
 
 ;; ACM 2002/5/25.  When font-locking is invoked by a buffer change, the region
 ;; specified by the font-lock after-change function must be expanded to
@@ -836,22 +824,28 @@
 ;; do this in practice is to use the beginning/end-of-logical-line functions.
 ;; Don't overlook the possibility of the buffer change being the "recapturing"
 ;; of a previously escaped newline.
-(defmacro c-awk-advise-fl-for-awk-region (function)
-  `(defadvice ,function (before get-awk-region activate)
-;; When font-locking an AWK Mode buffer, make sure that any string/regexp is
-;; completely font-locked.
-  (when (eq major-mode 'awk-mode)
-    (save-excursion
-      (ad-set-arg 1 (c-awk-end-of-change-region
-                     (ad-get-arg 0)     ; beg
-                     (ad-get-arg 1)     ; end
-                     (ad-get-arg 2)))   ; old-len
-      (ad-set-arg 0 (c-awk-beginning-of-logical-line (ad-get-arg 0)))))))
 
-(c-awk-advise-fl-for-awk-region font-lock-after-change-function)
-(c-awk-advise-fl-for-awk-region jit-lock-after-change)
-(c-awk-advise-fl-for-awk-region lazy-lock-defer-rest-after-change)
-(c-awk-advise-fl-for-awk-region lazy-lock-defer-line-after-change)
+;; ACM 2008-02-05: 
+(defun c-awk-extend-and-syntax-tablify-region (beg end old-len)
+  ;; Expand the region (BEG END) as needed to (c-new-BEG c-new-END) then put
+  ;; `syntax-table' properties on this region.
+  ;;
+  ;; This function is called from an after-change function, BEG END and
+  ;; OLD-LEN being the standard parameters.
+  ;; 
+  ;; Point is undefined both before and after this function call, the buffer
+  ;; has been widened, and match-data saved.  The return value is ignored.
+  ;;
+  ;; It prepares the buffer for font
+  ;; locking, hence must get called before `font-lock-after-change-function'.
+  ;;
+  ;; This function is the AWK value of `c-before-font-lock-function'.
+  ;; It does hidden buffer changes.
+  (c-save-buffer-state ()
+    (setq c-new-END (c-awk-end-of-change-region beg end old-len))
+    (setq c-new-BEG (c-awk-beginning-of-logical-line beg))
+    (goto-char c-new-BEG)
+    (c-awk-set-syntax-table-properties c-new-END)))
 
 ;; Awk regexps written with help from Peter Galbraith
 ;; <galbraith@mixing.qc.dfo.ca>.
--- a/lisp/progmodes/cc-defs.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-defs.el	Sun Feb 24 10:09:07 2008 +0000
@@ -721,7 +721,7 @@
 		  ((bobp) (setq pos (point-min)))
 		  ((not pos)
 		   (let ((distance (skip-chars-backward "^{")))
-		     ;; unbalanced parenthesis, while illegal C code,
+		     ;; unbalanced parenthesis, while invalid C code,
 		     ;; shouldn't cause an infloop!  See unbal.c
 		     (when (zerop distance)
 		       ;; Punt!
@@ -1028,6 +1028,39 @@
     ;; Emacs.
     `(remove-text-properties ,from ,to '(,property nil))))
 
+(defun c-clear-char-property-with-value-function (from to property value)
+  "Remove all text-properties PROPERTY from the region (FROM, TO)
+which have the value VALUE, as tested by `equal'.  These
+properties are assumed to be over individual characters, having
+been put there by c-put-char-property.  POINT remains unchanged."
+  (let ((place from) end-place)
+    (while			  ; loop round occurrances of (PROPERTY VALUE)
+	(progn
+	  (while	   ; loop round changes in PROPERTY till we find VALUE
+	      (and
+	       (< place to)
+	       (not (equal (get-text-property place property) value)))
+	    (setq place (next-single-property-change place property nil to)))
+	  (< place to))
+      (setq end-place (next-single-property-change place property nil to))
+      (put-text-property place end-place property nil)
+      ;; Do we have to do anything with stickiness here?
+      (setq place end-place))))
+
+(defmacro c-clear-char-property-with-value (from to property value)
+  "Remove all text-properties PROPERTY from the region [FROM, TO)
+which have the value VALUE, as tested by `equal'.  These
+properties are assumed to be over individual characters, having
+been put there by c-put-char-property.  POINT remains unchanged."
+  (if c-use-extents
+    ;; XEmacs
+      `(let ((-property- ,property))
+	 (map-extents (lambda (ext val)
+			(if (equal (extent-property ext -property-) val)
+			    (delete-extent ext)))
+		      nil ,from ,to ,value nil -property-))
+  ;; Gnu Emacs
+    `(c-clear-char-property-with-value-function ,from ,to ,property ,value)))
 
 ;; Macros to put overlays (Emacs) or extents (XEmacs) on buffer text.
 ;; For our purposes, these are characterized by being possible to
--- a/lisp/progmodes/cc-engine.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-engine.el	Sun Feb 24 10:09:07 2008 +0000
@@ -81,8 +81,9 @@
 ;; assume that these text properties are used as described here.
 ;;
 ;; 'syntax-table
-;;   Used to modify the syntax of some characters.  Currently used to
-;;   mark the "<" and ">" of angle bracket parens with paren syntax.
+;;   Used to modify the syntax of some characters.  It is used to
+;;   mark the "<" and ">" of angle bracket parens with paren syntax, and
+;;   to "hide" obtrusive characters in preprocessor lines.
 ;;
 ;;   This property is used on single characters and is therefore
 ;;   always treated as front and rear nonsticky (or start and end open
--- a/lisp/progmodes/cc-fonts.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-fonts.el	Sun Feb 24 10:09:07 2008 +0000
@@ -394,14 +394,14 @@
 	    `(;; The stuff after #error and #warning is a message, so
 	      ;; fontify it as a string.
 	      ,@(when (c-lang-const c-cpp-message-directives)
-		  (let* ((re (c-make-keywords-re nil
+		  (let* ((re (c-make-keywords-re 'appendable ; nil
 			       (c-lang-const c-cpp-message-directives)))
 			 (re-depth (regexp-opt-depth re)))
 		    `((,(concat noncontinued-line-end
 				(c-lang-const c-opt-cpp-prefix)
 				re
 				"\\s +\\(.*\\)$")
-		       ,(+ ncle-depth re-depth 1) font-lock-string-face))))
+		       ,(+ ncle-depth re-depth 1) font-lock-string-face t))))
 
 	      ;; Fontify filenames in #include <...> as strings.
 	      ,@(when (c-lang-const c-cpp-include-directives)
--- a/lisp/progmodes/cc-langs.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-langs.el	Sun Feb 24 10:09:07 2008 +0000
@@ -414,6 +414,49 @@
 classifies symbol constituents like '_' and '$' as word constituents,
 so that all identifiers are recognized as words.")
 
+(c-lang-defconst c-get-state-before-change-function
+  "If non-nil, a function called from c-before-change-hook.
+Typically it will record enough state to allow
+`c-before-font-lock-function' to extend the region to fontify,
+and may do such things as removing text-properties which must be
+recalculated.
+
+It takes 2 parameters, the BEG and END supplied to every
+before-change function; on entry, the buffer will have been
+widened and match-data will have been saved; point is undefined
+on both entry and exit; the return value is ignored.
+
+When the mode is initialized, this function is called with
+parameters \(point-min) and \(point-max)."
+  t nil
+  (c c++ objc) 'c-extend-region-for-CPP
+  awk 'c-awk-record-region-clear-NL)
+(c-lang-defvar c-get-state-before-change-function
+	       (c-lang-const c-get-state-before-change-function))
+  
+(c-lang-defconst c-before-font-lock-function
+  "If non-nil, a function called just before font locking.
+Typically it will extend the region about to be fontified \(see
+below) and will set `syntax-table' text properties on the region.
+
+It takes 3 parameters, the BEG, END, and OLD-LEN supplied to
+every after-change function; point is undefined on both entry and
+exit; on entry, the buffer will have been widened and match-data
+will have been saved; the return value is ignored.
+
+The function may extend the region to be fontified by setting the
+buffer local variables c-old-BEG and c-old-LEN.
+
+The function is called even when font locking is disabled.
+
+When the mode is initialized, this function is called with
+parameters \(point-min), \(point-max) and <buffer size>."
+  t nil
+  (c c++ objc) 'c-neutralize-syntax-in-CPP
+  awk 'c-awk-extend-and-syntax-tablify-region)
+(c-lang-defvar c-before-font-lock-function
+	       (c-lang-const c-before-font-lock-function))
+
 
 ;;; Lexer-level syntax (identifiers, tokens etc).
 
@@ -645,6 +688,13 @@
   (java awk) nil)
 (c-lang-defvar c-opt-cpp-prefix (c-lang-const c-opt-cpp-prefix))
 
+(c-lang-defconst c-anchored-cpp-prefix
+  "Regexp matching the prefix of a cpp directive anchored to BOL,
+in the languages that have a macro preprocessor."
+  t (if (c-lang-const c-opt-cpp-prefix)
+	(concat "^" (c-lang-const c-opt-cpp-prefix))))
+(c-lang-defvar c-anchored-cpp-prefix (c-lang-const c-anchored-cpp-prefix))
+
 (c-lang-defconst c-opt-cpp-start
   "Regexp matching the prefix of a cpp directive including the directive
 name, or nil in languages without preprocessor support.  The first
@@ -662,7 +712,7 @@
 string message."
   t    (if (c-lang-const c-opt-cpp-prefix)
 	   '("error"))
-  pike '("error" "warning"))
+  (c c++ objc pike) '("error" "warning"))
 
 (c-lang-defconst c-cpp-include-directives
   "List of cpp directives (without the prefix) that are followed by a
@@ -700,7 +750,7 @@
   (c-lang-const c-opt-cpp-macro-define-id))
 
 (c-lang-defconst c-cpp-expr-directives
-  "List if cpp directives (without the prefix) that are followed by an
+  "List of cpp directives (without the prefix) that are followed by an
 expression."
   t (if (c-lang-const c-opt-cpp-prefix)
 	'("if" "elif")))
--- a/lisp/progmodes/cc-mode.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-mode.el	Sun Feb 24 10:09:07 2008 +0000
@@ -467,117 +467,6 @@
 (defvar c-maybe-stale-found-type nil)
 (make-variable-buffer-local 'c-maybe-stale-found-type)
 
-(defun c-before-change (beg end)
-  ;; Function to be put on `before-change-function'.  Currently
-  ;; (2007-02) it is used only to remove stale entries from the
-  ;; `c-found-types' cache, and to record entries which a
-  ;; `c-after-change' function might confirm as stale.
-  ;; 
-  ;; Note that this function must be FAST rather than accurate.  Note
-  ;; also that it only has any effect when font locking is enabled.
-  ;; We exploit this by checking for font-lock-*-face instead of doing
-  ;; rigourous syntactic analysis.
-
-  ;; If either change boundary is wholly inside an identifier, delete
-  ;; it/them from the cache.  Don't worry about being inside a string
-  ;; or a comment - "wrongly" removing a symbol from `c-found-types'
-  ;; isn't critical.
-  (setq c-maybe-stale-found-type nil)
-  (save-restriction
-    (save-match-data
-      (widen)
-      (save-excursion
-	;; Are we inserting/deleting stuff in the middle of an identifier?
-	(c-unfind-enclosing-token beg)
-	(c-unfind-enclosing-token end)
-	;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"?
-	(when (< beg end)
-	  (c-unfind-coalesced-tokens beg end))
-	;; Are we (potentially) disrupting the syntactic context which
-	;; makes a type a type?  E.g. by inserting stuff after "foo" in
-	;; "foo bar;", or before "foo" in "typedef foo *bar;"?
-	;;
-	;; We search for appropriate c-type properties "near" the change.
-	;; First, find an appropriate boundary for this property search.
-	(let (lim
-	      type type-pos
-	      marked-id term-pos
-	      (end1
-	       (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
-			(previous-single-property-change end 'face))
-		   end)))
-	  (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
-	    ;; Find a limit for the search for a `c-type' property
-	    (while
-		(and (/= (skip-chars-backward "^;{}") 0)
-		     (> (point) (point-min))
-		     (memq (c-get-char-property (1- (point)) 'face)
-			   '(font-lock-comment-face font-lock-string-face))))
-	    (setq lim (max (point-min) (1- (point))))
-
-	    ;; Look for the latest `c-type' property before end1
-	    (when (and (> end1 (point-min))
-		       (setq type-pos
-			     (if (get-text-property (1- end1) 'c-type)
-				 end1
-			       (previous-single-property-change end1 'c-type nil lim))))
-	      (setq type (get-text-property (max (1- type-pos) lim) 'c-type))
-
-	      (when (memq type '(c-decl-id-start c-decl-type-start))
-		;; Get the identifier, if any, that the property is on.
-		(goto-char (1- type-pos))
-		(setq marked-id
-		      (when (looking-at "\\(\\sw\\|\\s_\\)")
-			(c-beginning-of-current-token)
-			(buffer-substring-no-properties (point) type-pos)))
-
-		(goto-char end1)
-		(skip-chars-forward "^;{}") ; FIXME!!!  loop for comment, maybe
-		(setq lim (point))
-		(setq term-pos
-		      (or (next-single-property-change end 'c-type nil lim) lim))
-		(setq c-maybe-stale-found-type
-		      (list type marked-id
-			    type-pos term-pos
-			    (buffer-substring-no-properties type-pos term-pos)
-			    (buffer-substring-no-properties beg end)))))))))))
-
-(defun c-after-change (beg end old-len)
-  ;; Function put on `after-change-functions' to adjust various caches
-  ;; etc.  Prefer speed to finesse here, since there will be an order
-  ;; of magnitude more calls to this function than any of the
-  ;; functions that use the caches.
-  ;;
-  ;; Note that care must be taken so that this is called before any
-  ;; font-lock callbacks since we might get calls to functions using
-  ;; these caches from inside them, and we must thus be sure that this
-  ;; has already been executed.
-
-  (c-save-buffer-state ()
-    ;; When `combine-after-change-calls' is used we might get calls
-    ;; with regions outside the current narrowing.  This has been
-    ;; observed in Emacs 20.7.
-    (save-restriction
-      (save-match-data		  ; c-recognize-<>-arglists changes match-data
-	(widen)
-
-	(when (> end (point-max))
-	  ;; Some emacsen might return positions past the end. This has been
-	  ;; observed in Emacs 20.7 when rereading a buffer changed on disk
-	  ;; (haven't been able to minimize it, but Emacs 21.3 appears to
-	  ;; work).
-	  (setq end (point-max))
-	  (when (> beg end)
-	    (setq beg end)))
-
-	(c-trim-found-types beg end old-len) ; maybe we don't need all of these.
-	(c-invalidate-sws-region-after beg end)
-	(c-invalidate-state-cache beg)
-	(c-invalidate-find-decl-cache beg)
-
-	(when c-recognize-<>-arglists
-	  (c-after-change-check-<>-operators beg end))))))
-
 (defun c-basic-common-init (mode default-style)
   "Do the necessary initialization for the syntax handling routines
 and the line breaking/filling code.  Intended to be used by other
@@ -625,7 +514,8 @@
   (setq fill-paragraph-function 'c-fill-paragraph)
 
   (when (or c-recognize-<>-arglists
-	    (c-major-mode-is 'awk-mode))
+	    (c-major-mode-is 'awk-mode)
+	    (c-major-mode-is '(c-mode c++-mode objc-mode)))
     ;; We'll use the syntax-table text property to change the syntax
     ;; of some chars for this language, so do the necessary setup for
     ;; that.
@@ -712,34 +602,6 @@
   (make-local-hook 'after-change-functions)
   (add-hook 'after-change-functions 'c-after-change nil t))
 
-(defun c-after-font-lock-init ()
-  ;; Put on `font-lock-mode-hook'.
-  (remove-hook 'after-change-functions 'c-after-change t)
-  (add-hook 'after-change-functions 'c-after-change nil t))
-
-(defun c-font-lock-init ()
-  "Set up the font-lock variables for using the font-lock support in CC Mode.
-This does not load the font-lock package.  Use after
-`c-basic-common-init' and after cc-fonts has been loaded."
-
-  (make-local-variable 'font-lock-defaults)
-  (setq font-lock-defaults
-	`(,(if (c-major-mode-is 'awk-mode)
-	       ;; awk-mode currently has only one font lock level.
-	       'awk-font-lock-keywords
-	     (mapcar 'c-mode-symbol
-		     '("font-lock-keywords" "font-lock-keywords-1"
-		       "font-lock-keywords-2" "font-lock-keywords-3")))
-	  nil nil
-	  ,c-identifier-syntax-modifications
-	  c-beginning-of-syntax
-	  (font-lock-lines-before . 1)
-	  (font-lock-mark-block-function
-	   . c-mark-function)))
-
-  (make-local-hook 'font-lock-mode-hook)
-  (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
-
 (defun c-setup-doc-comment-style ()
   "Initialize the variables that depend on the value of `c-doc-comment-style'."
   (when (and (featurep 'font-lock)
@@ -769,6 +631,16 @@
     ;; Only initialize font locking if we aren't called from an old package.
     (c-font-lock-init))
 
+  ;; Starting a mode is a sort of "change".  So call the change functions...
+  (save-restriction
+    (widen)
+    (save-excursion
+      (if c-get-state-before-change-function
+	  (funcall c-get-state-before-change-function (point-min) (point-max)))
+      (if c-before-font-lock-function
+	  (funcall c-before-font-lock-function (point-min) (point-max)
+		   (- (point-max) (point-min))))))
+
   (make-local-variable 'outline-regexp)
   (make-local-variable 'outline-level)
   (setq outline-regexp "[^#\n\^M]"
@@ -878,6 +750,280 @@
     `(progn ,@(mapcar (lambda (hook) `(run-hooks ,hook)) hooks))))
 
 
+;;; Change hooks, linking with Font Lock.
+
+;; Buffer local variables defining the region to be fontified by a font lock
+;; after-change function.  They are set in c-after-change to
+;; after-change-function's BEG and END, and may be modified by a
+;; `c-before-font-lock-function'.
+(defvar c-new-BEG 0)
+(make-variable-buffer-local 'c-new-BEG)
+(defvar c-new-END 0)
+(make-variable-buffer-local 'c-new-END)
+
+;; Buffer local variables recording Beginning/End-of-Macro position before a
+;; change, when a macro straddles, respectively, the BEG or END (or both) of
+;; the change region.  Otherwise these have the values BEG/END.
+(defvar c-old-BOM 0)
+(make-variable-buffer-local 'c-old-BOM)
+(defvar c-old-EOM 0)
+(make-variable-buffer-local 'c-old-EOM)
+
+(defun c-extend-region-for-CPP (beg end)
+  ;; Set c-old-BOM or c-old-EOM respectively to BEG, END, each extended to the
+  ;; beginning/end of any preprocessor construct they may be in.
+  ;;
+  ;; Point is undefined both before and after this function call; the buffer
+  ;; has already been widened, and match-data saved.  The return value is
+  ;; meaningless.
+  ;;
+  ;; This function is the C/C++/ObjC value of
+  ;; `c-get-state-before-change-function' and is called exclusively as a
+  ;; before change function.
+  (goto-char beg)
+  (c-beginning-of-macro)
+  (setq c-old-BOM (point))
+
+  (goto-char end)
+  (if (c-beginning-of-macro)
+    (c-end-of-macro))
+  (setq c-old-EOM (point)))
+
+(defun c-neutralize-CPP-line (beg end)
+  ;; BEG and END bound a preprocessor line.  Put a "punctuation" syntax-table
+  ;; property on syntactically obtrusive characters, ones which would interact
+  ;; syntactically with stuff outside the CPP line.
+  ;;
+  ;; These are unmatched string delimiters, or unmatched
+  ;; parens/brackets/braces.  An unclosed comment is regarded as valid, NOT
+  ;; obtrusive.
+  (let (s)
+    (while
+	(progn
+	  (setq s (parse-partial-sexp beg end -1))
+	  (cond
+	   ((< (nth 0 s) 0)		; found an unmated ),},]
+	    (c-put-char-property (1- (point)) 'syntax-table '(1))
+	    t)
+	   ((nth 3 s)			; In a string
+	    (c-put-char-property (nth 8 s) 'syntax-table '(1))
+	    t)
+	   ((> (nth 0 s) 0)		; In a (,{,[
+	    (c-put-char-property (nth 1 s) 'syntax-table '(1))
+	    t)
+	   (t nil))))))
+
+(defun c-neutralize-syntax-in-CPP (begg endd old-len)
+  ;; "Neutralize" every preprocessor line wholly or partially in the changed
+  ;; region.  "Restore" lines which were CPP lines before the change and are
+  ;; no longer so; these can be located from the Buffer local variables
+  ;; c-old-[EB]OM.
+  ;; 
+  ;; That is, set syntax-table properties on characters that would otherwise
+  ;; interact syntactically with those outside the CPP line(s).
+  ;; 
+  ;; This function is called from an after-change function, BEGG ENDD and
+  ;; OLD-LEN being the standard parameters.  It prepares the buffer for font
+  ;; locking, hence must get called before `font-lock-after-change-function'.
+  ;;
+  ;; Point is undefined both before and after this function call, the buffer
+  ;; has been widened, and match-data saved.  The return value is ignored.
+  ;;
+  ;; This function is the C/C++/ObjC value of `c-before-font-lock-function'.
+  ;;
+  ;; This function might do invisible changes.
+  (c-save-buffer-state (limits mbeg beg end)
+    ;; First calculate the region, possibly to be extended.
+    (setq beg (min begg c-old-BOM))
+    (goto-char endd)
+    (when (c-beginning-of-macro)
+      (c-end-of-macro))
+    (setq end (max (+ (- c-old-EOM old-len) (- endd begg))
+		   (point)))
+    ;; Clear all old punctuation properties
+    (c-clear-char-property-with-value beg end 'syntax-table '(1))
+
+    (goto-char beg)
+    ;; If we're inside a string/comment, go to its end.
+    (if (setq limits (c-literal-limits))
+	(goto-char (cdr limits)))
+
+    (while (and (< (point) end)
+		(search-forward-regexp c-anchored-cpp-prefix end t))
+      (when (c-beginning-of-macro)    ; Guard against being in a string/comment.
+	(setq mbeg (point))
+	(c-end-of-macro)	  ; Do we need to go forward 1 char here?  No!
+	(c-neutralize-CPP-line mbeg (point)))
+      (forward-char))))		; We might still be in a comment - this is OK.
+
+(defun c-before-change (beg end)
+  ;; Function to be put on `before-change-function'.  Primarily, this calls
+  ;; the language dependent `c-get-state-before-change-function'.  It is
+  ;; otherwise used only to remove stale entries from the `c-found-types'
+  ;; cache, and to record entries which a `c-after-change' function might
+  ;; confirm as stale.
+  ;; 
+  ;; Note that this function must be FAST rather than accurate.  Note
+  ;; also that it only has any effect when font locking is enabled.
+  ;; We exploit this by checking for font-lock-*-face instead of doing
+  ;; rigourous syntactic analysis.
+
+  ;; If either change boundary is wholly inside an identifier, delete
+  ;; it/them from the cache.  Don't worry about being inside a string
+  ;; or a comment - "wrongly" removing a symbol from `c-found-types'
+  ;; isn't critical.
+  (setq c-maybe-stale-found-type nil)
+  (save-restriction
+    (save-match-data
+      (widen)
+      (save-excursion
+	;; Are we inserting/deleting stuff in the middle of an identifier?
+	(c-unfind-enclosing-token beg)
+	(c-unfind-enclosing-token end)
+	;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"?
+	(when (< beg end)
+	  (c-unfind-coalesced-tokens beg end))
+	;; Are we (potentially) disrupting the syntactic context which
+	;; makes a type a type?  E.g. by inserting stuff after "foo" in
+	;; "foo bar;", or before "foo" in "typedef foo *bar;"?
+	;;
+	;; We search for appropriate c-type properties "near" the change.
+	;; First, find an appropriate boundary for this property search.
+	(let (lim
+	      type type-pos
+	      marked-id term-pos
+	      (end1
+	       (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
+			(previous-single-property-change end 'face))
+		   end)))
+	  (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
+	    ;; Find a limit for the search for a `c-type' property
+	    (while
+		(and (/= (skip-chars-backward "^;{}") 0)
+		     (> (point) (point-min))
+		     (memq (c-get-char-property (1- (point)) 'face)
+			   '(font-lock-comment-face font-lock-string-face))))
+	    (setq lim (max (point-min) (1- (point))))
+
+	    ;; Look for the latest `c-type' property before end1
+	    (when (and (> end1 (point-min))
+		       (setq type-pos
+			     (if (get-text-property (1- end1) 'c-type)
+				 end1
+			       (previous-single-property-change end1 'c-type nil lim))))
+	      (setq type (get-text-property (max (1- type-pos) lim) 'c-type))
+
+	      (when (memq type '(c-decl-id-start c-decl-type-start))
+		;; Get the identifier, if any, that the property is on.
+		(goto-char (1- type-pos))
+		(setq marked-id
+		      (when (looking-at "\\(\\sw\\|\\s_\\)")
+			(c-beginning-of-current-token)
+			(buffer-substring-no-properties (point) type-pos)))
+
+		(goto-char end1)
+		(skip-chars-forward "^;{}") ; FIXME!!!  loop for comment, maybe
+		(setq lim (point))
+		(setq term-pos
+		      (or (next-single-property-change end 'c-type nil lim) lim))
+		(setq c-maybe-stale-found-type
+		      (list type marked-id
+			    type-pos term-pos
+			    (buffer-substring-no-properties type-pos term-pos)
+			    (buffer-substring-no-properties beg end)))))))
+
+	(setq c-new-BEG beg
+	      c-new-END end)
+	(if c-get-state-before-change-function
+	    (funcall c-get-state-before-change-function beg end))
+	))))
+
+(defun c-after-change (beg end old-len)
+  ;; Function put on `after-change-functions' to adjust various caches
+  ;; etc.  Prefer speed to finesse here, since there will be an order
+  ;; of magnitude more calls to this function than any of the
+  ;; functions that use the caches.
+  ;;
+  ;; Note that care must be taken so that this is called before any
+  ;; font-lock callbacks since we might get calls to functions using
+  ;; these caches from inside them, and we must thus be sure that this
+  ;; has already been executed.
+  ;;
+  ;; This calls the language variable c-before-font-lock-function, if non nil.
+  ;; This typically sets `syntax-table' properties.
+
+  (c-save-buffer-state ()
+    ;; When `combine-after-change-calls' is used we might get calls
+    ;; with regions outside the current narrowing.  This has been
+    ;; observed in Emacs 20.7.
+    (save-restriction
+      (save-match-data		  ; c-recognize-<>-arglists changes match-data
+	(widen)
+
+	(when (> end (point-max))
+	  ;; Some emacsen might return positions past the end. This has been
+	  ;; observed in Emacs 20.7 when rereading a buffer changed on disk
+	  ;; (haven't been able to minimize it, but Emacs 21.3 appears to
+	  ;; work).
+	  (setq end (point-max))
+	  (when (> beg end)
+	    (setq beg end)))
+
+	(c-trim-found-types beg end old-len) ; maybe we don't need all of these.
+	(c-invalidate-sws-region-after beg end)
+	(c-invalidate-state-cache beg)
+	(c-invalidate-find-decl-cache beg)
+
+	(when c-recognize-<>-arglists
+	  (c-after-change-check-<>-operators beg end))
+
+	(if c-before-font-lock-function
+	    (save-excursion
+	      (funcall c-before-font-lock-function beg end old-len)))))))
+
+(defun c-after-font-lock-init ()
+  ;; Put on `font-lock-mode-hook'.
+  (remove-hook 'after-change-functions 'c-after-change t)
+  (add-hook 'after-change-functions 'c-after-change nil t))
+
+(defun c-font-lock-init ()
+  "Set up the font-lock variables for using the font-lock support in CC Mode.
+This does not load the font-lock package.  Use after
+`c-basic-common-init' and after cc-fonts has been loaded."
+
+  (make-local-variable 'font-lock-defaults)
+  (setq font-lock-defaults
+	`(,(if (c-major-mode-is 'awk-mode)
+	       ;; awk-mode currently has only one font lock level.
+	       'awk-font-lock-keywords
+	     (mapcar 'c-mode-symbol
+		     '("font-lock-keywords" "font-lock-keywords-1"
+		       "font-lock-keywords-2" "font-lock-keywords-3")))
+	  nil nil
+	  ,c-identifier-syntax-modifications
+	  c-beginning-of-syntax
+	  (font-lock-lines-before . 1)
+	  (font-lock-mark-block-function
+	   . c-mark-function)))
+
+  (make-local-hook 'font-lock-mode-hook)
+  (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
+
+(defmacro c-advise-fl-for-region (function)
+  `(defadvice ,function (before get-awk-region activate)
+;; When font-locking an AWK Mode buffer, make sure that any string/regexp is
+;; completely font-locked.
+  (when (eq major-mode 'awk-mode)
+    (save-excursion
+      (ad-set-arg 1 c-new-END)   ; end
+      (ad-set-arg 0 c-new-BEG)))))	; beg
+
+(c-advise-fl-for-region font-lock-after-change-function)
+(c-advise-fl-for-region jit-lock-after-change)
+(c-advise-fl-for-region lazy-lock-defer-rest-after-change)
+(c-advise-fl-for-region lazy-lock-defer-line-after-change)
+
+
 ;; Support for C
 
 ;;;###autoload
@@ -1339,21 +1485,7 @@
   (use-local-map awk-mode-map)
   (c-init-language-vars-for 'awk-mode)
   (c-common-init 'awk-mode)
-  ;; The rest of CC Mode does not (yet) use `font-lock-syntactic-keywords',
-  ;; so it's not set by `c-font-lock-init'.
-  (make-local-variable 'font-lock-syntactic-keywords)
-  (setq font-lock-syntactic-keywords
-	'((c-awk-set-syntax-table-properties
-	   0 (0)			; Everything on this line is a dummy.
-	   nil t)))
   (c-awk-unstick-NL-prop)
-  (add-hook 'before-change-functions 'c-awk-before-change nil t)
-  (add-hook 'after-change-functions 'c-awk-after-change nil t)
-  (c-save-buffer-state nil
-    (save-restriction
-      (widen)
-      (c-awk-clear-NL-props (point-min) (point-max))
-      (c-awk-after-change (point-min) (point-max) 0))) ; Set syntax-table props.
 
   ;; Prevent Xemacs's buffer-syntactic-context being used.  See the comment
   ;; in cc-engine.el, just before (defun c-fast-in-literal ...
--- a/lisp/progmodes/cc-styles.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cc-styles.el	Sun Feb 24 10:09:07 2008 +0000
@@ -423,7 +423,7 @@
 
 (defun c-read-offset (langelem)
   ;; read new offset value for LANGELEM from minibuffer. return a
-  ;; legal value only
+  ;; valid value only
   (let* ((oldoff  (cdr-safe (or (assq langelem c-offsets-alist)
 				(assq langelem (get 'c-offsets-alist
 						    'c-stylevar-fallback)))))
@@ -555,7 +555,7 @@
 	"[ \t\f]*\\\\?$")
   (setq c-sentence-end-with-esc-eol
 	(concat "\\(\\(" (c-default-value-sentence-end) "\\)"
-		;; N.B.:  "$" would be illegal when not enclosed like "\\($\\)".
+		;; N.B.:  "$" would be invalid when not enclosed like "\\($\\)".
 		"\\|" "[.?!][]\"')}]* ?\\\\\\($\\)[ \t\n]*"
 		"\\)")))
 
--- a/lisp/progmodes/compile.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/compile.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1629,9 +1629,13 @@
 
 (defun compilation-next-error (n &optional different-file pt)
   "Move point to the next error in the compilation buffer.
+This function does NOT find the source line like \\[next-error].
 Prefix arg N says how many error messages to move forwards (or
 backwards, if negative).
-Does NOT find the source line like \\[next-error]."
+Optional arg DIFFERENT-FILE, if non-nil, means find next error for a
+file that is different from the current one.
+Optional arg PT, if non-nil, specifies the value of point to start
+looking for the next message."
   (interactive "p")
   (or (compilation-buffer-p (current-buffer))
       (error "Not in a compilation buffer"))
@@ -1943,13 +1947,17 @@
 
 (defun compilation-find-file (marker filename directory &rest formats)
   "Find a buffer for file FILENAME.
+If FILENAME is not found at all, ask the user where to find it.
+Pop up the buffer containing MARKER and scroll to MARKER if we ask
+the user where to find the file.
 Search the directories in `compilation-search-path'.
 A nil in `compilation-search-path' means to try the
 \"current\" directory, which is passed in DIRECTORY.
 If DIRECTORY is relative, it is combined with `default-directory'.
 If DIRECTORY is nil, that means use `default-directory'.
-If FILENAME is not found at all, ask the user where to find it.
-Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
+FORMATS, if given, is a list of formats to reformat FILENAME when
+looking for it: for each element FMT in FORMATS, this function
+attempts to find a file whose name is produced by (format FMT FILENAME)."
   (or formats (setq formats '("%s")))
   (let ((dirs compilation-search-path)
         (spec-dir (if directory
--- a/lisp/progmodes/cperl-mode.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/cperl-mode.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1247,7 +1247,7 @@
 	  ["Contract groups" cperl-contract-levels
 	   cperl-use-syntax-table-text-property]
 	  "----"
-	  ["Find next interpolated" cperl-next-interpolated-REx 
+	  ["Find next interpolated" cperl-next-interpolated-REx
 	   (next-single-property-change (point-min) 'REx-interpolated)]
 	  ["Find next interpolated (no //o)"
 	   cperl-next-interpolated-REx-0
@@ -2846,7 +2846,7 @@
 				    (skip-chars-backward " \t")
 				    (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:")))
 			     (get-text-property (point) 'first-format-line)))
-		   
+
 		   ;; Look at previous line that's at column 0
 		   ;; to determine whether we are in top-level decls
 		   ;; or function's arg decls.  Set basic-indent accordingly.
@@ -3080,7 +3080,7 @@
 	 ((eq 'toplevel (elt i 0)) ;; [toplevel start char-after state immed-after-block]
 	  (+ (save-excursion		; To beg-of-defun, or end of last sexp
 	       (goto-char (elt i 1))	; start = Good place to start parsing
-	       (- (current-indentation) ; 
+	       (- (current-indentation) ;
 		  (if (elt i 4) cperl-indent-level 0)))	; immed-after-block
 	     (if (eq (elt i 2) ?{) cperl-continued-brace-offset 0) ; char-after
 	     ;; Look at previous line that's at column 0
@@ -3900,7 +3900,7 @@
 	       ;;; XXX What to do: foo <<bar ???
 	       ;;; XXX Need to support print {a} <<B ???
 				       (forward-sexp -1)
-				       (save-match-data	
+				       (save-match-data
 					; $foo << b; $f .= <<B;
 					; ($f+1) << b; a($f) . <<B;
 					; foo 1, <<B; $x{a} <<b;
@@ -3932,7 +3932,7 @@
 			qtag (regexp-quote tag))
 		  (cond (cperl-pod-here-fontify
 			 ;; Highlight the starting delimiter
-			 (cperl-postpone-fontification 
+			 (cperl-postpone-fontification
 			  b1 e1 'face my-cperl-delimiters-face)
 			 (cperl-put-do-not-fontify b1 e1 t)))
 		  (forward-line)
@@ -4292,7 +4292,7 @@
 ;;;m^a[\^b]c^ + m.a[^b]\.c.;
 			(save-excursion
 			  (goto-char (1+ b))
-			  ;; First 
+			  ;; First
 			  (cperl-look-at-leading-count is-x-REx e)
 			  (setq hairy-RE
 				(concat
@@ -4453,7 +4453,7 @@
 				 ;; This is not pretty: the 5.8.7 logic:
 				 ;; \0numx  -> octal (up to total 3 dig)
 				 ;; \DIGIT  -> backref unless \0
-				 ;; \DIGITs -> backref if legal
+				 ;; \DIGITs -> backref if valid
 				 ;;	     otherwise up to 3 -> octal
 				 ;; Do not try to distinguish, we guess
 				 ((or (and (memq qtag (append "01234567" nil))
@@ -4461,7 +4461,7 @@
 					    "\\=[01234567]?[01234567]?"
 					    (1- e) 'to-end))
 				      (and (memq qtag (append "89" nil))
-					   (re-search-forward 
+					   (re-search-forward
 					    "\\=[0123456789]*" (1- e) 'to-end))
 				      (and (eq qtag ?x)
 					   (re-search-forward
@@ -4499,7 +4499,7 @@
 			      ;; in m]]: m][\\\]\]] produces [\\]]
 ;;; POSIX?  [:word:] [:^word:] only inside []
 ;;;				       "\\=\\(\\\\.\\|[^][\\\\]\\|\\[:\\^?\sw+:]\\|\\[[^:]\\)*]")
-			      (while 
+			      (while
 				  (and argument
 				       (re-search-forward
 					(if (eq (char-after b) ?\] )
@@ -5816,7 +5816,7 @@
 				   ","
 				   cperl-maybe-white-and-comment-rex
 				   "\\([$@%*]\\([a-zA-Z0-9_:]+\\|[^a-zA-Z0-9_]\\)\\)")
-			;; Bug in font-lock: limit is used not only to limit 
+			;; Bug in font-lock: limit is used not only to limit
 			;; searches, but to set the "extend window for
 			;; facification" property.  Thus we need to minimize.
 			,(if cperl-font-lock-multiline
@@ -6785,7 +6785,7 @@
 by CPerl."
   (interactive "P")
   (or arg
-      (setq arg (if (eq cperl-syntaxify-by-font-lock 
+      (setq arg (if (eq cperl-syntaxify-by-font-lock
 			(if backtrace 'backtrace 'message)) 0 1)))
   (setq arg (if (> arg 0) (if backtrace 'backtrace 'message) t))
   (setq cperl-syntaxify-by-font-lock arg)
@@ -8246,7 +8246,7 @@
 (defun cperl-invert-if-unless-modifiers ()
   "Change `B if A;' into `if (A) {B}' etc if possible.
 \(Unfinished.)"
-  (interactive)				; 
+  (interactive)				;
   (let (A B pre-B post-B pre-if post-if pre-A post-A if-string
 	  (w-rex "\\<\\(if\\|unless\\|while\\|until\\|for\\|foreach\\)\\>"))
     (and (= (char-syntax (preceding-char)) ?w)
--- a/lisp/progmodes/gdb-ui.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/gdb-ui.el	Sun Feb 24 10:09:07 2008 +0000
@@ -326,6 +326,10 @@
   (setq gud-filter-pending-text nil)
   (run-hooks 'gdb-mode-hook))
 
+;; Keep as an alias for compatibility with Emacs 22.1.
+;;;###autoload
+(defalias 'gdba 'gdb)
+
 (defcustom gdb-debug-log-max 128
   "Maximum size of `gdb-debug-log'.  If nil, size is unlimited."
   :group 'gud
@@ -1981,15 +1985,17 @@
   (interactive "e")
   (mouse-minibuffer-check event)
   (let ((posn (event-end event)))
-    (if (numberp (posn-point posn))
-	(with-selected-window (posn-window posn)
-	  (save-excursion
-	    (goto-char (posn-point posn))
-	    (if (or (posn-object posn)
-		    (eq (car (fringe-bitmaps-at-pos (posn-point posn)))
-			'breakpoint))
-		(gud-remove nil)
-	      (gud-break nil)))))))
+    (if (buffer-file-name)
+	(if (numberp (posn-point posn))
+	    (with-selected-window (posn-window posn)
+	      (save-excursion
+		(goto-char (posn-point posn))
+		(if (or (posn-object posn)
+			(eq (car (fringe-bitmaps-at-pos (posn-point posn)))
+			    'breakpoint))
+		    (gud-remove nil)
+		  (gud-break nil)))))
+      (posn-set-point posn))))
 
 (defun gdb-mouse-toggle-breakpoint-margin (event)
   "Enable/disable breakpoint in left margin with mouse click."
--- a/lisp/progmodes/gud.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/gud.el	Sun Feb 24 10:09:07 2008 +0000
@@ -145,7 +145,7 @@
 
 (easy-mmode-defmap gud-menu-map
   '(([help]     "Info" . gud-goto-info)
-    ([tooltips] menu-item "Toggle GUD tooltips" gud-tooltip-mode
+    ([tooltips] menu-item "Show GUD tooltips" gud-tooltip-mode
                   :enable (and (not emacs-basic-display)
 			       (display-graphic-p)
 			       (fboundp 'x-show-tip))
--- a/lisp/progmodes/scheme.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/scheme.el	Sun Feb 24 10:09:07 2008 +0000
@@ -33,7 +33,7 @@
 ;; for instance, at <URL:http://www.sil.org/sgml/related.html#dsssl>.]
 ;; All these Lisp-ish modes vary basically in details of the language
 ;; syntax they highlight/indent/index, but dsssl-mode uses "^;;;" as
-;; the page-delimiter since ^L isn't normally a legal SGML character.
+;; the page-delimiter since ^L isn't normally a valid SGML character.
 ;;
 ;; For interacting with a Scheme interpreter See also `run-scheme' in
 ;; the `cmuscheme' package and also the implementation-specific
--- a/lisp/progmodes/verilog-mode.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/progmodes/verilog-mode.el	Sun Feb 24 10:09:07 2008 +0000
@@ -115,9 +115,9 @@
 ;;; Code:
 
 ;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "383"
+(defconst verilog-mode-version "399"
   "Version of this Verilog mode.")
-(defconst verilog-mode-release-date "2008-01-07-GNU"
+(defconst verilog-mode-release-date "2008-02-19-GNU"
   "Release date of this Verilog mode.")
 (defconst verilog-mode-release-emacs t
   "If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -161,13 +161,6 @@
           (defmacro store-match-data (&rest args) nil))
       (error nil))
     (condition-case nil
-        (if (boundp 'current-menubar)
-            nil ;; great
-          (progn
-            (defmacro add-submenu (&rest args) nil))
-          )
-      (error nil))
-    (condition-case nil
         (if (fboundp 'char-before)
             nil ;; great
           (defmacro char-before (&rest body)
@@ -957,7 +950,8 @@
   "Keymap used in Verilog mode.")
 
 ;; menus
-(defvar verilog-xemacs-menu
+(easy-menu-define
+  verilog-menu verilog-mode-map "Menu for Verilog mode"
   `("Verilog"
     ("Choose Compilation Action"
      ["None"
@@ -992,15 +986,12 @@
       :selected (equal verilog-tool `verilog-compiler)]
      )
     ("Move"
-     ,(if (featurep 'xemacs)
-	  (progn
-	    ["Beginning of function"		verilog-beg-of-defun t]
-	    ["End of function"			verilog-end-of-defun t]
-	    ["Mark function"			verilog-mark-defun t])
-	["Beginning of function"		beginning-of-defun t]
-	["End of function"			end-of-defun t]
-	["Mark function"			mark-defun t])
-
+     ["Beginning of function"           verilog-beg-of-defun
+      :keys "C-M-a"]
+     ["End of function"                 verilog-end-of-defun
+      :keys "C-M-e"]
+     ["Mark function"                   verilog-mark-defun
+      :keys "C-M-h"]
      ["Goto function/module"		verilog-goto-defun t]
      ["Move to beginning of block"	electric-verilog-backward-sexp t]
      ["Move to end of block"		electric-verilog-forward-sexp t]
@@ -1057,11 +1048,10 @@
     ["Submit bug report"		verilog-submit-bug-report t]
     ["Version and FAQ"			verilog-faq t]
     ["Customize Verilog Mode..."	verilog-customize t]
-    ["Customize Verilog Fonts & Colors"	verilog-font-customize t]
-    )
-  "Emacs menu for Verilog mode."
-  )
-(defvar verilog-statement-menu
+    ["Customize Verilog Fonts & Colors"	verilog-font-customize t]))
+
+(easy-menu-define
+  verilog-stmt-menu verilog-mode-map "Menu for statement templates in Verilog."
   '("Statements"
     ["Header"		verilog-sk-header  t]
     ["Comment"		verilog-sk-comment t]
@@ -1092,14 +1082,7 @@
     ["Repeat"		verilog-sk-repeat t]
     ["Case"		verilog-sk-case t]
     ["Casex"		verilog-sk-casex t]
-    ["Casez"		verilog-sk-casez t]
-    )
-  "Menu for statement templates in Verilog.")
-
-(easy-menu-define verilog-menu verilog-mode-map "Menu for Verilog mode"
-		  verilog-xemacs-menu)
-(easy-menu-define verilog-stmt-menu verilog-mode-map "Menu for statement templates in Verilog."
-		  verilog-statement-menu)
+    ["Casez"		verilog-sk-casez t]))
 
 (defvar verilog-mode-abbrev-table nil
   "Abbrev table in use in Verilog-mode buffers.")
@@ -1451,19 +1434,18 @@
 (defconst verilog-beg-block-re-ordered
   ( concat "\\<"
 	   "\\(begin\\)"		;1
-	   "\\|\\(randcase\\|\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?\\)" ; 2
-;;	   "\\|\\(randcase\\|case[xz]?\\)" ; 2
-	   "\\|\\(fork\\)"		;3
-	   "\\|\\(class\\)"		;4
-	   "\\|\\(table\\)"		;5
-	   "\\|\\(specify\\)"		;6
-	   "\\|\\(function\\)"		;7
-	   "\\|\\(task\\)"		;8
-	   "\\|\\(generate\\)"		;9
-	   "\\|\\(covergroup\\)"	;10
-	   "\\|\\(property\\)"		;11
-	   "\\|\\(\\(rand\\)?sequence\\)"  ;12
-	   "\\|\\(clocking\\)"          ;13
+	   "\\|\\(randcase\\|\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?\\)" ; 2,3
+	   "\\|\\(\\(disable\\s-+\\)?fork\\)" ;4
+	   "\\|\\(class\\)"		;5
+	   "\\|\\(table\\)"		;6
+	   "\\|\\(specify\\)"		;7
+	   "\\|\\(function\\)"		;8
+	   "\\|\\(task\\)"		;9
+	   "\\|\\(generate\\)"		;10
+	   "\\|\\(covergroup\\)"	;11
+	   "\\|\\(property\\)"		;12
+	   "\\|\\(\\(rand\\)?sequence\\)" ;13
+	   "\\|\\(clocking\\)"          ;14
 	   "\\>"))
 
 (defconst verilog-end-block-ordered-rry
@@ -1526,6 +1508,8 @@
   (eval-when-compile
     (verilog-regexp-words
      `(
+       ;; port direction (by themselves)
+       "inout" "input" "output"
        ;; integer_atom_type
        "byte" "shortint" "int" "longint" "integer" "time"
        ;; integer_vector_type
@@ -1572,8 +1556,8 @@
   (concat verilog-defun-re "\\|" verilog-end-defun-re))
 
 (defconst verilog-behavioral-block-beg-re
-  (concat "\\(\\<initial\\>\\|\\<final\\>\\|\\<always\\>\\|\\<always_comb\\>\\|\\<always_ff\\>\\|"
-	  "\\<always_latch\\>\\|\\<function\\>\\|\\<task\\>\\)"))
+  (eval-when-compile (verilog-regexp-words `("initial" "final" "always" "always_comb" "always_latch" "always_ff"
+					     "function" "task"))))
 
 (defconst verilog-indent-re
   (eval-when-compile
@@ -1638,6 +1622,7 @@
      `(
        "endmodule" "endprimitive" "endinterface" "endpackage" "endprogram" "endclass"
        ))))
+(defconst verilog-disable-fork-re "disable\\s-+fork")
 (defconst verilog-extended-case-re "\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?")
 (defconst verilog-extended-complete-re
   (concat "\\(\\<extern\\s-+\\|\\<virtual\\s-+\\|\\<protected\\s-+\\)*\\(\\<function\\>\\|\\<task\\>\\)"
@@ -1813,6 +1798,20 @@
   "Font lock mode face used to highlight AMS keywords."
   :group 'font-lock-highlighting-faces)
 
+(defvar verilog-font-grouping-keywords-face
+  'verilog-font-lock-grouping-keywords-face
+  "Font to use for Verilog Grouping Keywords (such as begin..end).")
+(defface verilog-font-lock-grouping-keywords-face
+  '((((class color)
+      (background light))
+     (:foreground "red4" :bold t ))
+    (((class color)
+      (background dark))
+     (:foreground "red4" :bold t ))
+    (t (:italic t)))
+  "Font lock mode face used to highlight verilog grouping keywords."
+  :group 'font-lock-highlighting-faces)
+
 (let* ((verilog-type-font-keywords
 	(eval-when-compile
 	  (verilog-regexp-opt
@@ -1877,8 +1876,8 @@
 	(eval-when-compile
 	  (verilog-regexp-opt
 	   '(
-	     "assign" "begin" "case" "casex" "casez" "randcase" "deassign"
-	     "default" "disable" "else" "end" "endcase" "endfunction"
+	     "assign" "case" "casex" "casez" "randcase" "deassign"
+	     "default" "disable" "else" "endcase" "endfunction"
 	     "endgenerate" "endinterface" "endmodule" "endprimitive"
 	     "endspecify" "endtable" "endtask" "final" "for" "force" "return" "break"
 	     "continue" "forever" "fork" "function" "generate" "if" "iff" "initial"
@@ -1887,7 +1886,12 @@
 	     "always_latch" "posedge" "primitive" "priority" "release"
 	     "repeat" "specify" "table" "task" "unique" "wait" "while"
 	     "class" "program" "endclass" "endprogram"
-	     ) nil  ))))
+	     ) nil  )))
+
+       (verilog-font-grouping-keywords
+	(eval-when-compile
+	  (verilog-regexp-opt
+	   '( "begin" "end" ) nil  ))))
 
   (setq verilog-font-lock-keywords
 	(list
@@ -1897,7 +1901,9 @@
 		       "\\$[a-zA-Z][a-zA-Z0-9_\\$]*"
 		       "\\)\\>")
 	 ;; Fontify all types
-	 (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>")
+	 (cons (concat "\\(\\<" verilog-font-grouping-keywords "\\)\\>") 
+	       'verilog-font-lock-ams-face)
+	 (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>") 
 	       'font-lock-type-face)
 	 ;; Fontify IEEE-P1800 keywords appropriately
 	 (if verilog-highlight-p1800-keywords
@@ -2064,49 +2070,64 @@
     (cond
      ((verilog-skip-forward-comment-or-string)
       (verilog-forward-syntactic-ws))
-     ((looking-at verilog-beg-block-re-ordered);; begin|case|fork|class|table|specify|function|task|generate|covergroup|property|sequence|clocking
+     ((looking-at verilog-beg-block-re-ordered) ;; begin|(case)|xx|(fork)|class|table|specify|function|task|generate|covergroup|property|sequence|clocking
       (cond
        ((match-end 1) ; end
 	;; Search forward for matching begin
 	(setq reg "\\(\\<begin\\>\\)\\|\\(\\<end\\>\\)" ))
        ((match-end 2) ; endcase
 	;; Search forward for matching case
-	(setq reg "\\(\\<randcase\\>\\|\\(\\<unique\\>\\s-+\\|\\<priority\\>\\s-+\\)?\\<case[xz]?\\>[^:]\\)\\|\\(\\<endcase\\>\\)" ))
-       ((match-end 3) ; join
-	;; Search forward for matching fork
-	(setq reg "\\(\\<fork\\>\\)\\|\\(\\<join\\(_any\\|_none\\)?\\>\\)" ))
-       ((match-end 4) ; endclass
+	(setq reg "\\(\\<randcase\\>\\|\\(\\<unique\\>\\s-+\\|\\<priority\\>\\s-+\\)?\\<case[xz]?\\>[^:]\\)\\|\\(\\<endcase\\>\\)" )
+	(setq md 3) ;; ender is third item in regexp
+	)
+       ((match-end 4) ; join
+	;; might be "disable fork"
+	(if (or 
+	     (looking-at verilog-disable-fork-re)
+	     (and (looking-at "fork")
+		  (progn
+		    (forward-word -1)
+		    (looking-at verilog-disable-fork-re))))
+	    (progn
+	      (goto-char (match-end 0))
+	      (forward-word)
+	      (setq reg nil))
+	  (progn
+	    ;; Search forward for matching fork
+	    (setq reg "\\(\\<fork\\>\\)\\|\\(\\<join\\(_any\\|_none\\)?\\>\\)" ))))
+       ((match-end 5) ; endclass
 	;; Search forward for matching class
 	(setq reg "\\(\\<class\\>\\)\\|\\(\\<endclass\\>\\)" ))
-       ((match-end 5) ; endtable
+       ((match-end 6) ; endtable
 	;; Search forward for matching table
 	(setq reg "\\(\\<table\\>\\)\\|\\(\\<endtable\\>\\)" ))
-       ((match-end 6) ; endspecify
+       ((match-end 7) ; endspecify
 	;; Search forward for matching specify
 	(setq reg "\\(\\<specify\\>\\)\\|\\(\\<endspecify\\>\\)" ))
-       ((match-end 7) ; endfunction
+       ((match-end 8) ; endfunction
 	;; Search forward for matching function
 	(setq reg "\\(\\<function\\>\\)\\|\\(\\<endfunction\\>\\)" ))
-       ((match-end 8) ; endtask
+       ((match-end 9) ; endtask
 	;; Search forward for matching task
 	(setq reg "\\(\\<task\\>\\)\\|\\(\\<endtask\\>\\)" ))
-       ((match-end 9) ; endgenerate
+       ((match-end 10) ; endgenerate
 	;; Search forward for matching generate
 	(setq reg "\\(\\<generate\\>\\)\\|\\(\\<endgenerate\\>\\)" ))
-       ((match-end 10) ; endgroup
+       ((match-end 11) ; endgroup
 	;; Search forward for matching covergroup
 	(setq reg "\\(\\<covergroup\\>\\)\\|\\(\\<endgroup\\>\\)" ))
-       ((match-end 11) ; endproperty
+       ((match-end 12) ; endproperty
 	;; Search forward for matching property
 	(setq reg "\\(\\<property\\>\\)\\|\\(\\<endproperty\\>\\)" ))
-       ((match-end 12) ; endsequence
+       ((match-end 13) ; endsequence
 	;; Search forward for matching sequence
 	(setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\<endsequence\\>\\)" )
 	(setq md 3)) ; 3 to get to endsequence in the reg above
-       ((match-end 13) ; endclocking
+       ((match-end 14) ; endclocking
 	;; Search forward for matching clocking
 	(setq reg "\\(\\<clocking\\>\\)\\|\\(\\<endclocking\\>\\)" )))
-      (if (forward-word 1)
+      (if (and reg
+	       (forward-word 1))
 	  (catch 'skip
 	    (let ((nest 1))
 	      (while (verilog-re-search-forward reg nil 'move)
@@ -2343,11 +2364,9 @@
 
   ;; Setting up menus
   (when (featurep 'xemacs)
-    (when (and current-menubar
-	       (not (assoc "Verilog" current-menubar)))
-      ;; (set-buffer-menubar (copy-sequence current-menubar))
-      (add-submenu nil verilog-xemacs-menu)
-      (add-submenu nil verilog-stmt-menu)))
+    (easy-menu-add verilog-stmt-menu)
+    (easy-menu-add verilog-menu)
+    (setq mode-popup-menu (cons "Verilog Mode" verilog-stmt-menu)))
 
   ;; Stuff for GNU emacs
   (set (make-local-variable 'font-lock-defaults)
@@ -2641,13 +2660,15 @@
   "Mark the current Verilog function (or procedure).
 This puts the mark at the end, and point at the beginning."
   (interactive)
-  (when (featurep 'xemacs)
-    (push-mark (point))
-    (verilog-end-of-defun)
-    (push-mark (point))
-    (verilog-beg-of-defun)
-    (if (fboundp 'zmacs-activate-region)
-	(zmacs-activate-region))))
+  (if (featurep 'xemacs)
+      (progn
+	(push-mark (point))
+	(verilog-end-of-defun)
+	(push-mark (point))
+	(verilog-beg-of-defun)
+	(if (fboundp 'zmacs-activate-region)
+	    (zmacs-activate-region)))
+    (mark-defun)))
 
 (defun verilog-comment-region (start end)
   ; checkdoc-params: (start end)
@@ -3932,6 +3953,16 @@
 		(throw 'nesting 'case)
 	      (goto-char here)))
 	  (throw 'nesting 'case))
+	 
+	 ((match-end 4)  ; *sigh* could be "disable fork"
+	  (let ((here (point)))
+	    (verilog-beg-of-statement)
+	    (if (looking-at verilog-disable-fork-re)
+		t ; is disable fork, this is a normal statement
+	      (progn ; or is fork, starts a new block
+		(goto-char here)
+		(throw 'nesting 'block)))))
+
 
 	 ;; need to consider typedef struct here...
 	 ((looking-at "\\<class\\|struct\\|function\\|task\\|property\\>")
@@ -4167,6 +4198,8 @@
     (cond
      ((looking-at "\\<else\\>")
       t)
+     ((looking-at verilog-behavioral-block-beg-re)
+      t)
      ((looking-at verilog-indent-re)
       nil)
      (t
@@ -4682,7 +4715,7 @@
 
 ;;
 
-(defun verilog-pretty-declarations ()
+(defun verilog-pretty-declarations (&optional quiet)
   "Line up declarations around point."
   (interactive)
   (save-excursion
@@ -4726,7 +4759,8 @@
 		  (current-column))))
 	  (goto-char end)
 	  (goto-char start)
-	  (if (> (- end start) 100)
+	  (if (and (not quiet)
+		   (> (- end start) 100))
 	      (message "Lining up declarations..(please stand by)"))
 	  ;; Get the beginning of line indent first
 	  (while (progn (setq e (marker-position edpos))
@@ -4751,7 +4785,7 @@
 			(setq r (- e (point)))
 			(> r 0))
 	    (setq e (point))
-	    (message "%d" r)
+	    (unless quiet (message "%d" r))
 	    (cond
 	     ((or (and verilog-indent-declaration-macros
 		       (looking-at verilog-declaration-re-1-macro))
@@ -4776,90 +4810,98 @@
 	      (verilog-forward-ws&directives)
 	      (forward-line -1)))
 	    (forward-line 1))
-	  (message "")))))
-
-(defun verilog-pretty-expr (&optional myre)
+	  (unless quiet (message ""))))))
+
+(defun verilog-pretty-expr (&optional quiet myre)
   "Line up expressions around point, or optional regexp MYRE."
   (interactive "sRegular Expression: ((<|:)?=) ")
   (save-excursion
     (if (or (eq myre nil)
 	    (string-equal myre ""))
 	(setq myre "\\(<\\|:\\)?="))
-;    (setq myre (concat "\\(^[^;" myre "]*\\)\\([" myre "]\\)"))
-    (setq myre (concat "\\(^[^;#:?=]*\\)\\([" myre "]\\)"))
-    (beginning-of-line)
-    (if (and (not (looking-at (concat "^\\s-*" verilog-complete-reg)))
-	     (looking-at myre))
-	(let* ((here (point))
-	       (e) (r)
-	       (start
-		(progn
-		  (beginning-of-line)
-		  (setq e (point))
-		  (verilog-backward-syntactic-ws)
-		  (beginning-of-line)
-		  (while (and (not (looking-at (concat "^\\s-*" verilog-complete-reg)))
-			      (looking-at myre)
-			      (not (bobp)))
+    (setq myre (concat "\\(^[^;#:<=>]*\\)\\(" myre "\\)"))
+    (let ((rexp(concat "^\\s-*" verilog-complete-reg)))
+      (beginning-of-line)
+      (if (and (not (looking-at rexp ))
+	       (looking-at myre))
+	  (let* ((here (point))
+		 (e) (r)
+		 (start
+		  (progn
+		    (beginning-of-line)
 		    (setq e (point))
 		    (verilog-backward-syntactic-ws)
 		    (beginning-of-line)
-		    ) ;Ack, need to grok `define
-		  e))
-	       (end
-		(progn
-		  (goto-char here)
-		  (end-of-line)
-		  (setq e (point))	;Might be on last line
-		  (verilog-forward-syntactic-ws)
-		  (beginning-of-line)
-		  (while (and (not (looking-at
-				    (concat "^\\s-*" verilog-complete-reg)))
-			      (looking-at myre))
+		    (while (and (not (looking-at rexp ))
+				(looking-at myre)
+				(not (bobp))
+				)
+		      (setq e (point))
+		      (verilog-backward-syntactic-ws)
+		      (beginning-of-line)
+		      ) ;Ack, need to grok `define
+		    e))
+		 (end
+		  (progn
+		    (goto-char here)
 		    (end-of-line)
-		    (setq e (point))
+		    (setq e (point))	;Might be on last line
 		    (verilog-forward-syntactic-ws)
-		    (beginning-of-line))
-		  e))
-	       (edpos (set-marker (make-marker) end))
-	       (ind))
-	  (goto-char start)
-	  (verilog-do-indent (verilog-calculate-indent))
-	  (if (> (- end start) 100)
-	      (message "Lining up expressions..(please stand by)"))
-
-	  ;; Set indent to minimum throughout region
-	  (while (< (point) (marker-position edpos))
-	    (beginning-of-line)
-	    (verilog-just-one-space myre)
-	    (end-of-line)
-	    (verilog-forward-syntactic-ws))
-
-	  ;; Now find biggest prefix
-	  (setq ind (verilog-get-lineup-indent-2 myre start edpos))
-
-	  ;; Now indent each line.
-	  (goto-char start)
-	  (while (progn (setq e (marker-position edpos))
-			(setq r (- e (point)))
-			(> r 0))
-	    (setq e (point))
-	    (message "%d" r)
-	    (cond
-	     ((looking-at myre)
-	      (goto-char (match-end 1))
-	      (if (eq (char-after) ?=)
-		  (indent-to (1+ ind))	; line up the = of the <= with surrounding =
-		(indent-to ind)))
-	     ((verilog-continued-line-1 start)
-	      (goto-char e)
-	      (indent-line-to ind))
-	     (t		; Must be comment or white space
-	      (goto-char e)
-	      (verilog-forward-ws&directives)
-	      (forward-line -1)))
-	    (forward-line 1))
-	  (message "")))))
+		    (beginning-of-line)
+		    (while (and (not (looking-at rexp ))
+				(looking-at myre))
+		      (end-of-line)
+		      (setq e (point))
+		      (verilog-forward-syntactic-ws)
+		      (beginning-of-line)
+		      )
+		    e))
+		 (edpos (set-marker (make-marker) end))
+		 (ind)
+		 )
+	    (goto-char start)
+	    (verilog-do-indent (verilog-calculate-indent))
+	    (if (and (not quiet)
+		     (> (- end start) 100))
+		(message "Lining up expressions..(please stand by)"))
+
+	    ;; Set indent to minimum throughout region
+	    (while (< (point) (marker-position edpos))
+	      (beginning-of-line)
+	      (verilog-just-one-space myre)
+	      (end-of-line)
+	      (verilog-forward-syntactic-ws)
+	      )
+
+	    ;; Now find biggest prefix
+	    (setq ind (verilog-get-lineup-indent-2 myre start edpos))
+
+	    ;; Now indent each line.
+	    (goto-char start)
+	    (while (progn (setq e (marker-position edpos))
+			  (setq r (- e (point)))
+			  (> r 0))
+	      (setq e (point))
+	      (if (not quiet) (message "%d" r))
+	      (cond
+	       ((looking-at myre)
+		(goto-char (match-end 1))
+		(if (not (verilog-parenthesis-depth)) ;; ignore parenthsized exprs
+		    (if (eq (char-after) ?=)
+			(indent-to (1+ ind))	; line up the = of the <= with surrounding =
+		      (indent-to ind)
+		      )))
+	       ((verilog-continued-line-1 start)
+		(goto-char e)
+		(indent-line-to ind))
+	       (t		; Must be comment or white space
+		(goto-char e)
+		(verilog-forward-ws&directives)
+		(forward-line -1))
+	       )
+	      (forward-line 1))
+	    (unless quiet (message ""))
+	    )))))
 
 (defun verilog-just-one-space (myre)
   "Remove extra spaces around regular expression MYRE."
@@ -4873,8 +4915,8 @@
 	  (if (looking-at "\\s-") (just-one-space))
 	  (goto-char p1)
 	  (forward-char -1)
-	  (if (looking-at "\\s-") (just-one-space)))))
-  (message ""))
+	  (if (looking-at "\\s-") (just-one-space))
+	  ))))
 
 (defun verilog-indent-declaration (baseind)
   "Indent current lines as declaration.
@@ -4975,13 +5017,15 @@
       ;; Get rightmost position
       (while (progn (setq e (marker-position edpos))
 		    (< (point) e))
-	(if (verilog-re-search-forward myre e 'move)
+	(if (and (verilog-re-search-forward myre e 'move)
+		 (not (verilog-parenthesis-depth))) ;; skip parenthsized exprs
 	    (progn
-	      (goto-char (match-end 0))
+	      (goto-char (match-beginning 2))
 	      (verilog-backward-syntactic-ws)
 	      (if (> (current-column) ind)
 		  (setq ind (current-column)))
-	      (goto-char (match-end 0)))))
+	      (goto-char (match-end 0)))
+	  ))
       (if (> ind 0)
 	  (1+ ind)
 	;; No lineup-string found
@@ -5455,9 +5499,7 @@
 	(verilog-goto-defun-file label))))
 
 ;; Eliminate compile warning
-(eval-when-compile
-  (if (not (boundp 'occur-pos-list))
-      (defvar occur-pos-list nil "Backward compatibility occur positions.")))
+(defvar occur-pos-list)
 
 (defun verilog-showscopes ()
   "List all scopes in this module."
@@ -8499,7 +8541,7 @@
 	(when nil	;; Too slow on huge modules, plus makes everyone's module change
 	  (beginning-of-line)
 	  (setq pnt (point))
-	  (verilog-pretty-declarations)
+	  (verilog-pretty-declarations quiet)
 	  (goto-char pnt)
 	  (verilog-pretty-expr "//"))))))
 
@@ -9814,23 +9856,6 @@
   > ("case selector: " str ": begin" \n > "next_" verilog-sk-state " = " _ ";" \n > (- verilog-indent-level-behavioral) "end" \n )
   resume: >  (- verilog-case-indent) "endcase" (progn (electric-verilog-terminate-line) nil)
   > (- verilog-indent-level-behavioral) "end" (progn (electric-verilog-terminate-line) nil))
-
-;; Eliminate compile warning
-(eval-when-compile
-  (if (not (boundp 'mode-popup-menu))
-      (defvar mode-popup-menu nil "Compatibility with XEmacs.")))
-
-;; ---- add menu 'Statements' in Verilog mode (MH)
-(defun verilog-add-statement-menu ()
-  "Add the menu 'Statements' to the menu bar in Verilog mode."
-  (if (featurep 'xemacs)
-      (progn
-	(easy-menu-add verilog-stmt-menu)
-	(easy-menu-add verilog-menu)
-	(setq mode-popup-menu (cons "Verilog Mode" verilog-stmt-menu)))))
-
-(add-hook 'verilog-mode-hook 'verilog-add-statement-menu)
-
 
 
 ;;
--- a/lisp/subr.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/subr.el	Sun Feb 24 10:09:07 2008 +0000
@@ -1944,24 +1944,25 @@
     (with-current-buffer (car elt)
       (setq elt (cdr elt))
       (let ((old-car
-	     (if (consp elt) (car elt)))
-	    (old-cdr
-	     (if (consp elt) (cdr elt))))
-	;; Temporarily truncate the undo log at ELT.
-	(when (consp elt)
-	  (setcar elt nil) (setcdr elt nil))
-	(unless (eq last-command 'undo) (undo-start))
-	;; Make sure there's no confusion.
-	(when (and (consp elt) (not (eq elt (last pending-undo-list))))
-	  (error "Undoing to some unrelated state"))
-	;; Undo it all.
-	(while (listp pending-undo-list) (undo-more 1))
-	;; Reset the modified cons cell ELT to its original content.
-	(when (consp elt)
-	  (setcar elt old-car)
-	  (setcdr elt old-cdr))
-	;; Revert the undo info to what it was when we grabbed the state.
-	(setq buffer-undo-list elt)))))
+             (if (consp elt) (car elt)))
+            (old-cdr
+             (if (consp elt) (cdr elt))))
+        ;; Temporarily truncate the undo log at ELT.
+        (when (consp elt)
+          (setcar elt nil) (setcdr elt nil))
+        (unless (eq last-command 'undo) (undo-start))
+        ;; Make sure there's no confusion.
+        (when (and (consp elt) (not (eq elt (last pending-undo-list))))
+          (error "Undoing to some unrelated state"))
+        ;; Undo it all.
+        (save-excursion
+          (while (listp pending-undo-list) (undo-more 1)))
+        ;; Reset the modified cons cell ELT to its original content.
+        (when (consp elt)
+          (setcar elt old-car)
+          (setcdr elt old-cdr))
+        ;; Revert the undo info to what it was when we grabbed the state.
+        (setq buffer-undo-list elt)))))
 
 ;;;; Display-related functions.
 
--- a/lisp/textmodes/ispell.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/textmodes/ispell.el	Sun Feb 24 10:09:07 2008 +0000
@@ -3730,7 +3730,7 @@
 	;; any character other than a space.  Not rigorous enough.
 	(while (re-search-forward " *\\([^ ]+\\)" end t)
 	  (setq string (match-string-no-properties 1))
-	  ;; This can fail when string contains a word with illegal chars.
+	  ;; This can fail when string contains a word with invalid chars.
 	  ;; Error handling needs to be added between ispell and emacs.
 	  (if (and (< 1 (length string))
 		   (equal 0 (string-match ispell-casechars string)))
--- a/lisp/textmodes/sgml-mode.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/textmodes/sgml-mode.el	Sun Feb 24 10:09:07 2008 +0000
@@ -465,8 +465,12 @@
          sgml-transformation-function))
   ;; This will allow existing comments within declarations to be
   ;; recognized.
-  (set (make-local-variable 'comment-start-skip) "\\(?:<!\\)?--[ \t]*")
-  (set (make-local-variable 'comment-end-skip) "[ \t]*--\\([ \t\n]*>\\)?")
+  ;; I can't find a clear description of SGML/XML comments, but it seems that
+  ;; the only reliable ones are <!-- ... --> although it's not clear what
+  ;; "..." can contain.  It used to accept -- ... -- as well, but that was
+  ;; apparently a mistake.
+  (set (make-local-variable 'comment-start-skip) "<!--[ \t]*")
+  (set (make-local-variable 'comment-end-skip) "[ \t]*--[ \t\n]*>")
   ;; This definition has an HTML leaning but probably fits well for other modes.
   (setq imenu-generic-expression
 	`((nil
--- a/lisp/vc-hooks.el	Sun Feb 24 06:43:15 2008 +0000
+++ b/lisp/vc-hooks.el	Sun Feb 24 10:09:07 2008 +0000
@@ -333,12 +333,13 @@
 the root is the last directory for which WITNESS *is* found."
   ;; Represent /home/luser/foo as ~/foo so that we don't try to look for
   ;; witnesses in /home or in /.
-  (while (not (file-directory-p file))
-    (setq file (file-name-directory (directory-file-name file))))
   (setq file (abbreviate-file-name file))
   (let ((root nil)
         (prev-file file)
-        (user (nth 2 (file-attributes file)))
+        ;; `user' is not initialized outside the loop because
+        ;; `file' may not exist, so we may have to walk up part of the
+        ;; hierarchy before we find the "initial UID".
+        (user nil)
         try)
     (while (not (or root
                     (null file)
@@ -347,7 +348,9 @@
                     ;; to another user.  This should save us from looking in
                     ;; things like /net and /afs.  This assumes that all the
                     ;; files inside a project belong to the same user.
-                    (not (equal user (nth 2 (file-attributes file))))
+                    (let ((prev-user user))
+                      (setq user (nth 2 (file-attributes file)))
+                      (and prev-user (not (equal user prev-user))))
                     (string-match vc-ignore-dir-regexp file)))
       (setq try (file-exists-p (expand-file-name witness file)))
       (cond ((and invert (not try)) (setq root prev-file))
--- a/nt/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/nt/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -14,6 +14,15 @@
 
 	* configure.bat (dontCopy): Do not rename admin/unidata/Makefile.
 
+2008-02-11  Jason Rumney  <jasonr@gnu.org>
+
+	* addpm.c (add_registry): Add an App Paths registry key.
+	Look for GTK and add it to the DLL search path for Emacs if found.
+
+2008-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+	* configure.bat: In help, use generic names for the image libraries.
+
 2008-02-04  Juanma Barranquero  <lekktu@gmail.com>
 
 	* .cvsignore: Don't ignore .arch-inventory.
--- a/nt/INSTALL	Sun Feb 24 06:43:15 2008 +0000
+++ b/nt/INSTALL	Sun Feb 24 10:09:07 2008 +0000
@@ -101,13 +101,18 @@
   dos2unix and unix2dos available from GnuWin32 or dtou and utod from
   the DJGPP project.
 
-  Additionally, the files lisp/international/uni-*.el need Unix line
-  ends due to some embedded ^M characters that are not at the end of
-  the line.  So in the lisp/international directory you should run the
-  following command, or use dos2unix on those files.
+  Additionally, the files lisp/international/uni-*.el and
+  lisp/ldefs-boot.el need Unix line ends due to some embedded ^M
+  characters that are not at the end of the line.  So in the
+  lisp/international directory you should run the following command, or
+  use dos2unix on those files.
 
      cvs update -kb uni-*.el
 
+  and in the lisp directory, use the command:
+
+     cvs update -kb lisp/ldefs-boot.el
+
   In addition to this file, you should also read INSTALL.CVS in the
   parent directory, and make sure that you have a version of
   "touch.exe" in your path, and that it will create files that do not
@@ -279,8 +284,10 @@
   compatible (for example, that they were built with the same compiler).
 
   Binaries for the image libraries (among many others) can be found at
-  the GnuWin32 project.  These are built with MinGW, but they can be
-  used with both GCC/MinGW and MSVC builds of Emacs.  See the info on
+  the GnuWin32 project.  PNG, JPEG and TIFF libraries are also
+  included with GTK, which is installed along with other Free Software
+  that requires it.  These are built with MinGW, but they can be used
+  with both GCC/MinGW and MSVC builds of Emacs.  See the info on
   http://ourcomments.org/Emacs/w32-build-emacs.html, under "How to Get
   Images Support", for more details about installing image support
   libraries.  Note specifically that, due to some packaging snafus in
@@ -288,6 +295,9 @@
   _source_ packages for some of the libraries in order to get the
   header files necessary for building Emacs with image support.
 
+  If GTK 2.0 is installed, addpm will arrange for its image libraries
+  to be on the DLL search path for Emacs.
+
 * Building
 
   After running configure, simply run the appropriate `make' program for
--- a/nt/addpm.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/nt/addpm.c	Sun Feb 24 10:09:07 2008 +0000
@@ -46,6 +46,9 @@
 		              CF_TEXT, XTYP_EXECUTE, 30000, NULL)
 
 #define REG_ROOT "SOFTWARE\\GNU\\Emacs"
+#define REG_GTK "SOFTWARE\\GTK\\2.0"
+#define REG_APP_PATH \
+  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe"
 
 static struct entry
 {
@@ -73,6 +76,57 @@
   HKEY hrootkey = NULL;
   int i;
   BOOL ok = TRUE;
+  DWORD size;
+
+  /* Record the location of Emacs to the App Paths key if we have
+     sufficient permissions to do so.  This helps Windows find emacs quickly
+     if the user types emacs.exe in the "Run Program" dialog without having
+     emacs on their path.  Some applications also use the same registry key
+     to discover the installation directory for programs they are looking for.
+     Multiple installations cannot be handled by this method, but it does not
+     affect the general operation of other installations of Emacs, and we
+     are blindly overwriting the Start Menu entries already.
+  */
+  if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_APP_PATH, 0, "", 
+                      REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL,
+                      &hrootkey, NULL) == ERROR_SUCCESS)
+    {
+      int len;
+      char *emacs_path;
+      HKEY gtk_key = NULL;
+
+      len = strlen (path) + 15; /* \bin\emacs.exe + terminator.  */
+      emacs_path = alloca (len);
+      sprintf (emacs_path, "%s\\bin\\emacs.exe", path);
+
+      RegSetValueEx (hrootkey, NULL, 0, REG_SZ, emacs_path, len);
+
+      /* Look for a GTK installation. If found, add it to the library search
+         path for Emacs so that the image libraries it provides are available
+         to Emacs regardless of whether it is in the path or not.  */
+      if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_GTK, REG_OPTION_NON_VOLATILE,
+                        KEY_READ, &gtk_key) == ERROR_SUCCESS)
+        {
+          if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL,
+                               NULL, &size) == ERROR_SUCCESS)
+            {
+              char *gtk_path = (char *) alloca (size);
+              if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL,
+                                   gtk_path, &size) == ERROR_SUCCESS)
+                {
+                  /* Make sure the emacs bin directory continues to be searched
+                     first by including it as well.  */
+                  char *dll_paths;
+                  len = strlen (path) + 5 + size;
+                  dll_paths = (char *) alloca (size + strlen (path) + 1);
+                  sprintf (dll_paths, "%s\\bin;%s", path, gtk_path);
+                  RegSetValueEx (hrootkey, "Path", 0, REG_SZ, dll_paths, len);
+                }
+            }
+          RegCloseKey (gtk_key);
+        }
+      RegCloseKey (hrootkey);
+    }
 
   /* Previous versions relied on registry settings, but we do not need
      them any more.  If registry settings are installed from a previous
--- a/nt/configure.bat	Sun Feb 24 06:43:15 2008 +0000
+++ b/nt/configure.bat	Sun Feb 24 10:09:07 2008 +0000
@@ -121,11 +121,11 @@
 echo.   --no-cygwin             use -mno-cygwin option with GCC
 echo.   --cflags FLAG           pass FLAG to compiler
 echo.   --ldflags FLAG          pass FLAG to compiler when linking
-echo.   --without-png           do not use libpng
-echo.   --without-jpeg          do not use jpeg-6b
-echo.   --without-gif           do not use giflib or libungif
-echo.   --without-tiff          do not use libtiff
-echo.   --without-xpm           do not use libXpm
+echo.   --without-png           do not use PNG library even if it is installed
+echo.   --without-jpeg          do not use JPEG library even if it is installed
+echo.   --without-gif           do not use GIF library even if it is installed
+echo.   --without-tiff          do not use TIFF library even if it is installed
+echo.   --without-xpm           do not use XPM library even if it is installed
 echo.   --enable-font-backend   build with font backend support
 goto end
 rem ----------------------------------------------------------------------
--- a/src/ChangeLog	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/ChangeLog	Sun Feb 24 10:09:07 2008 +0000
@@ -1,3 +1,20 @@
+2008-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* intervals.h (INT_LISPLIKE): Remove.  It may misfire.
+	(NULL_INTERVAL_P, SET_INTERVAL_PARENT): Don't use it.
+
+2008-02-18  Jason Rumney  <jasonr@gnu.org>
+
+	* w32fns.c (Fw32_shell_execute): Encode parameters.
+
+2008-02-09  Eli Zaretskii  <eliz@gnu.org>
+
+	* fileio.c (syms_of_fileio) <insert-default-directory>: Doc fix.
+
+2008-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+	* unexhp9k800.c (read_header): Replace `legal' with `valid'.
+
 2008-02-24  Ulrich Neumerkel  <ulrich@complang.tuwien.ac.at>  (tiny change)
 
 	* xterm.c (x_set_offset): Don't change the gravity if
--- a/src/fileio.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/fileio.c	Sun Feb 24 10:09:07 2008 +0000
@@ -6619,19 +6619,25 @@
 
   DEFVAR_BOOL ("insert-default-directory", &insert_default_directory,
 	       doc: /* *Non-nil means when reading a filename start with default dir in minibuffer.
-If the initial minibuffer contents are non-empty, you can usually
-request a default filename by typing RETURN without editing.  For some
-commands, exiting with an empty minibuffer has a special meaning,
-such as making the current buffer visit no file in the case of
-`set-visited-file-name'.
+
+When the initial minibuffer contents show a name of a file or a directory,
+typing RETURN without editing the initial contents is equivalent to typing
+the default file name.
+
 If this variable is non-nil, the minibuffer contents are always
-initially non-empty and typing RETURN without editing will fetch the
+initially non-empty, and typing RETURN without editing will fetch the
 default name, if one is provided.  Note however that this default name
-is not necessarily the name originally inserted in the minibuffer, if
-that is just the default directory.
+is not necessarily the same as initial contents inserted in the minibuffer,
+if the initial contents is just the default directory.
+
 If this variable is nil, the minibuffer often starts out empty.  In
 that case you may have to explicitly fetch the next history element to
-request the default name.  */);
+request the default name; typing RETURN without editing will leave
+the minibuffer empty.
+
+For some commands, exiting with an empty minibuffer has a special meaning,
+such as making the current buffer visit no file in the case of
+`set-visited-file-name'.  */);
   insert_default_directory = 1;
 
   DEFVAR_BOOL ("vms-stmlf-recfm", &vms_stmlf_recfm,
--- a/src/intervals.h	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/intervals.h	Sun Feb 24 10:09:07 2008 +0000
@@ -75,24 +75,7 @@
 /* Size of a pointer to an interval structure */
 #define INTERVAL_PTR_SIZE (sizeof (struct interval *))
 
-/* True if an interval pointer is null, or is a Lisp_Buffer or
-   Lisp_String pointer (meaning it points to the owner of this
-   interval tree). */
-#ifdef NO_UNION_TYPE
-#define INT_LISPLIKE(i) (BUFFERP ((Lisp_Object)(i)) \
-			 || STRINGP ((Lisp_Object)(i)))
-#else
-#define INT_LISPLIKE(i) (BUFFERP ((Lisp_Object){(EMACS_INT)(i)}) \
-			 || STRINGP ((Lisp_Object){(EMACS_INT)(i)}))
-#endif
-
-#ifdef ENABLE_CHECKING
-#define NULL_INTERVAL_P(i) \
-   (CHECK (!INT_LISPLIKE (i), "non-interval"), (i) == NULL_INTERVAL)
-/* old #define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL || INT_LISPLIKE (i)) */
-#else
 #define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL)
-#endif
 
 /* True if this interval has no right child. */
 #define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL)
@@ -162,7 +145,7 @@
    casts to get around this, it will break some development work in
    progress.  */
 #define SET_INTERVAL_PARENT(i,p) \
-   (eassert (!INT_LISPLIKE (p)), (i)->up_obj = 0, (i)->up.interval = (p))
+   ((i)->up_obj = 0, (i)->up.interval = (p))
 #define SET_INTERVAL_OBJECT(i,o) \
    (eassert (BUFFERP (o) || STRINGP (o)), (i)->up_obj = 1, (i)->up.obj = (o))
 #define INTERVAL_PARENT(i) \
--- a/src/unexhp9k800.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/unexhp9k800.c	Sun Feb 24 10:09:07 2008 +0000
@@ -228,7 +228,7 @@
   if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC
       &&  hdr->a_magic != DEMAND_MAGIC)
     {
-      fprintf (stderr, "a.out file doesn't have legal magic number\n");
+      fprintf (stderr, "a.out file doesn't have valid magic number\n");
       exit (1);
     }
 
--- a/src/w32.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/w32.c	Sun Feb 24 10:09:07 2008 +0000
@@ -1701,7 +1701,7 @@
   return FALSE;
 }
 
-/* Map filename to a legal 8.3 name if necessary. */
+/* Map filename to a valid 8.3 name if necessary. */
 const char *
 map_w32_filename (const char * name, const char ** pPath)
 {
--- a/src/w32fns.c	Sun Feb 24 06:43:15 2008 +0000
+++ b/src/w32fns.c	Sun Feb 24 10:09:07 2008 +0000
@@ -8346,9 +8346,12 @@
 
   CHECK_STRING (document);
 
-  /* Encode filename and current directory.  */
+  /* Encode filename, current directory and parameters.  */
   current_dir = ENCODE_FILE (current_buffer->directory);
   document = ENCODE_FILE (document);
+  if (STRINGP (parameters))
+    parameters = ENCODE_SYSTEM (parameters);
+
   if ((int) ShellExecute (NULL,
 			  (STRINGP (operation) ?
 			   SDATA (operation) : NULL),