changeset 83562:5a45becb5728

Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-702 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-703 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-704 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-705 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-706 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-707 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-216 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-602
author Karoly Lorentey <karoly@lorentey.hu>
date Sun, 22 Apr 2007 12:45:07 +0000
parents dc002877ce12 (current diff) 1b3aff56da73 (diff)
children 617cce375495
files ChangeLog admin/FOR-RELEASE admin/notes/copyright confdefs.h configure configure.in conftest.c conftest.er1 etc/TODO lisp/ChangeLog lisp/calendar/todo-mode.el lisp/international/mule.el lispref/ChangeLog src/minibuf.c
diffstat 36 files changed, 715 insertions(+), 129 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,12 @@
+2007-04-19  Glenn Morris  <rgm@gnu.org>
+
+	* configure.in: Signal error if Xaw libs are missing in a Lucid
+	build.
+
+2007-04-18  Glenn Morris  <rgm@gnu.org>
+
+	* INSTALL: Mention CPP.
+
 2007-04-15  Glenn Morris  <rgm@gnu.org>
 
 	* FTP: Replace with a pointer to the web version.
--- a/INSTALL	Sun Apr 22 12:42:47 2007 +0000
+++ b/INSTALL	Sun Apr 22 12:45:07 2007 +0000
@@ -364,11 +364,12 @@
 directories for some header files, or link against optional
 libraries, or use special compilation options.  You can force
 `configure' and the build process which follows it to do that by
-setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, and CC before
-running `configure'.  CPPFLAGS lists the options passed to the
-preprocessor, CFLAGS are compilation options, LDFLAGS are options used
-when linking, LIBS are libraries to link against, and CC is the
-command which invokes the compiler.
+setting the variables CPPFLGS, CFLAGS, LDFLAGS, LIBS, CPP and CC before
+running `configure'.  CPP is the command which invokes the
+preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
+compilation options, LDFLAGS are options used when linking, LIBS are
+libraries to link against, and CC is the command which invokes the
+compiler.
 
 Here's an example of a `configure' invocation, assuming a Bourne-like
 shell such as Bash, which uses these variables:
--- a/admin/FOR-RELEASE	Sun Apr 22 12:42:47 2007 +0000
+++ b/admin/FOR-RELEASE	Sun Apr 22 12:45:07 2007 +0000
@@ -41,6 +41,8 @@
 
 * BUGS
 
+** nferrier@tapsellferrier.co.uk, April 18: rcirc multiline nick adding
+
 * DOCUMENTATION
 
 ** Check the Emacs Tutorial.
--- a/admin/notes/copyright	Sun Apr 22 12:42:47 2007 +0000
+++ b/admin/notes/copyright	Sun Apr 22 12:45:07 2007 +0000
@@ -306,6 +306,13 @@
 rms prefers that we do not do so.
 
 
+man/*.texi - All manuals should be under GFDL, and should include a
+copy of it, so that they can be distributed separately.  faq.texi has
+a different license, for some reason no-one can remember.
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00583.html
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00618.html
+
+
 msdos/is_exec.c, sigaction.c - these files are copyright DJ Delorie.
 Leave the copyrights alone. Leave the Eli Zaretskii copyright in
 is_exec.c alone. See the msdos/README file for the legal history of
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/confdefs.h	Sun Apr 22 12:45:07 2007 +0000
@@ -0,0 +1,136 @@
+#define PACKAGE_NAME ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define PACKAGE_STRING ""
+#define PACKAGE_BUGREPORT ""
+#define MAIL_USE_POP 1
+#define _GNU_SOURCE 1
+#define _FILE_OFFSET_BITS 64
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_TIMEB_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UTIME_H 1
+#define HAVE_LINUX_VERSION_H 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_TERMCAP_H 1
+#define HAVE_STDIO_EXT_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_PTY_H 1
+#define HAVE_SYS_MMAN_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_VLIMIT_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_LOCALE_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_PWD_H 1
+#define HAVE_PERSONALITY_LINUX32 1
+#define HAVE_TERM_H 1
+#define STDC_HEADERS 1
+#define TIME_WITH_SYS_TIME 1
+#define HAVE_DECL_SYS_SIGLIST 0
+#define HAVE_DECL___SYS_SIGLIST 0
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_STRUCT_UTIMBUF 1
+#define RETSIGTYPE void
+#define HAVE_SPEED_T 1
+#define HAVE_TIMEVAL 1
+#define HAVE_SYS_SOCKET_H 1
+#define HAVE_NET_IF_H 1
+#define HAVE_STRUCT_TM_TM_ZONE 1
+#define HAVE_TM_ZONE 1
+#define HAVE_TM_GMTOFF 1
+#define HAVE_STRUCT_IFREQ_IFR_FLAGS 1
+#define HAVE_STRUCT_IFREQ_IFR_HWADDR 1
+#define HAVE_STRUCT_IFREQ_IFR_NETMASK 1
+#define HAVE_STRUCT_IFREQ_IFR_BROADADDR 1
+#define HAVE_STRUCT_IFREQ_IFR_ADDR 1
+#define PROTOTYPES 1
+#define __PROTOTYPES 1
+#define POINTER_TYPE void
+#define HAVE_LONG_FILE_NAMES 1
+#define DOUG_LEA_MALLOC 1
+#define HAVE_STDLIB_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_MMAP 1
+#define HAVE_XKBGETKEYBOARD 1
+#define HAVE_XRMSETDATABASE 1
+#define HAVE_XSCREENRESOURCESTRING 1
+#define HAVE_XSCREENNUMBEROFSCREEN 1
+#define HAVE_XSETWMPROTOCOLS 1
+#define HAVE_X11R6 1
+#define HAVE_X11R5 1
+#define HAVE_GTK_MAIN 1
+#define HAVE_GTK 1
+#define HAVE_GDK_DISPLAY_OPEN 1
+#define HAVE_GTK_MULTIDISPLAY 1
+#define HAVE_GTK_FILE_SELECTION_NEW 1
+#define HAVE_GTK_FILE_CHOOSER_DIALOG_NEW 1
+#define HAVE_GTK_FILE_BOTH 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_GTK_AND_PTHREAD 1
+#define HAVE_XFT 1
+#define USE_TOOLKIT_SCROLL_BARS 1
+#define HAVE_XIM 1
+#define USE_XIM 1
+#define XRegisterIMInstantiateCallback_arg6 XPointer
+#define HAVE_XPM 1
+#define HAVE_JPEG 1
+#define HAVE_JPEG 1
+#define HAVE_PNG_H 1
+#define HAVE_LIBPNG_PNG_H 1
+#define HAVE_PNG 1
+#define HAVE_TIFF 1
+#define HAVE_GIF 1
+#define HAVE_X_SM 1
+#define HAVE_H_ERRNO 1
+#define HAVE_ALLOCA_H 1
+#define HAVE_ALLOCA 1
+#define HAVE_LIBM 1
+#define HAVE_LIBLOCKFILE 1
+#define HAVE_TOUCHLOCK 1
+#define HAVE_MAILLOCK_H 1
+#define HAVE_GETHOSTNAME 1
+#define HAVE_GETDOMAINNAME 1
+#define HAVE_DUP2 1
+#define HAVE_RENAME 1
+#define HAVE_CLOSEDIR 1
+#define HAVE_MKDIR 1
+#define HAVE_RMDIR 1
+#define HAVE_SYSINFO 1
+#define HAVE_GETRUSAGE 1
+#define HAVE_GET_CURRENT_DIR_NAME 1
+#define HAVE_RANDOM 1
+#define HAVE_LRAND48 1
+#define HAVE_BCOPY 1
+#define HAVE_BCMP 1
+#define HAVE_LOGB 1
+#define HAVE_FREXP 1
+#define HAVE_FMOD 1
+#define HAVE_RINT 1
+#define HAVE_CBRT 1
+#define HAVE_FTIME 1
+#define HAVE_SETSID 1
+#define HAVE_STRERROR 1
+#define HAVE_FPATHCONF 1
+#define HAVE_SELECT 1
+#define HAVE_MKTIME 1
+#define HAVE_EUIDACCESS 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_TZSET 1
--- a/configure	Sun Apr 22 12:42:47 2007 +0000
+++ b/configure	Sun Apr 22 12:45:07 2007 +0000
@@ -2996,6 +2996,8 @@
 		;;
       *-sunos5* | *-solaris* )
 		opsys=sol2-6
+## FIXME: make this into a proper fix that checks the compiler type,
+## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
 		if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
 		  ## -Xs prevents spurious whitespace.
 		  NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
@@ -12014,7 +12016,7 @@
   fi
 fi
 
-if test x"${USE_X_TOOLKIT}" = xmaybe; then
+if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
   if test x"${HAVE_X11R5}" = xyes; then
     { echo "$as_me:$LINENO: checking X11 version 5 with Xaw" >&5
 echo $ECHO_N "checking X11 version 5 with Xaw... $ECHO_C" >&6; }
@@ -12073,9 +12075,15 @@
 echo "${ECHO_T}5 or newer, with Xaw; use toolkit by default" >&6; }
       USE_X_TOOLKIT=LUCID
     else
-      { echo "$as_me:$LINENO: result: before 5 or no Xaw; do not use toolkit by default" >&5
+      if test x"${USE_X_TOOLKIT}" = xLUCID; then
+        { { echo "$as_me:$LINENO: error: Lucid toolkit requires X11/Xaw include files" >&5
+echo "$as_me: error: Lucid toolkit requires X11/Xaw include files" >&2;}
+   { (exit 1); exit 1; }; }
+      else
+        { echo "$as_me:$LINENO: result: before 5 or no Xaw; do not use toolkit by default" >&5
 echo "${ECHO_T}before 5 or no Xaw; do not use toolkit by default" >&6; }
-      USE_X_TOOLKIT=none
+        USE_X_TOOLKIT=none
+      fi
     fi
   else
     USE_X_TOOLKIT=none
--- a/configure.in	Sun Apr 22 12:42:47 2007 +0000
+++ b/configure.in	Sun Apr 22 12:45:07 2007 +0000
@@ -1030,6 +1030,8 @@
 		;;
       *-sunos5* | *-solaris* )
 		opsys=sol2-6
+## FIXME: make this into a proper fix that checks the compiler type,
+## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
 		if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
 		  ## -Xs prevents spurious whitespace.
 		  NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
@@ -2204,7 +2206,7 @@
 
 dnl Do not put whitespace before the #include statements below.
 dnl Older compilers (eg sunos4 cc) choke on it.
-if test x"${USE_X_TOOLKIT}" = xmaybe; then
+if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
   if test x"${HAVE_X11R5}" = xyes; then
     AC_MSG_CHECKING(X11 version 5 with Xaw)
     AC_CACHE_VAL(emacs_cv_x11_version_5_with_xaw,
@@ -2218,8 +2220,12 @@
       AC_MSG_RESULT([5 or newer, with Xaw; use toolkit by default])
       USE_X_TOOLKIT=LUCID
     else
-      AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
-      USE_X_TOOLKIT=none
+      if test x"${USE_X_TOOLKIT}" = xLUCID; then
+        AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
+      else
+        AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
+        USE_X_TOOLKIT=none
+      fi
     fi
   else
     USE_X_TOOLKIT=none
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/conftest.c	Sun Apr 22 12:45:07 2007 +0000
@@ -0,0 +1,176 @@
+/* confdefs.h.  */
+#define PACKAGE_NAME ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define PACKAGE_STRING ""
+#define PACKAGE_BUGREPORT ""
+#define MAIL_USE_POP 1
+#define _GNU_SOURCE 1
+#define _FILE_OFFSET_BITS 64
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_SYS_SOUNDCARD_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_TIMEB_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UTIME_H 1
+#define HAVE_LINUX_VERSION_H 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_TERMCAP_H 1
+#define HAVE_STDIO_EXT_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_PTY_H 1
+#define HAVE_SYS_MMAN_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_VLIMIT_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_LOCALE_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_PWD_H 1
+#define HAVE_PERSONALITY_LINUX32 1
+#define HAVE_TERM_H 1
+#define STDC_HEADERS 1
+#define TIME_WITH_SYS_TIME 1
+#define HAVE_DECL_SYS_SIGLIST 0
+#define HAVE_DECL___SYS_SIGLIST 0
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_STRUCT_UTIMBUF 1
+#define RETSIGTYPE void
+#define HAVE_SPEED_T 1
+#define HAVE_TIMEVAL 1
+#define HAVE_SYS_SOCKET_H 1
+#define HAVE_NET_IF_H 1
+#define HAVE_STRUCT_TM_TM_ZONE 1
+#define HAVE_TM_ZONE 1
+#define HAVE_TM_GMTOFF 1
+#define HAVE_STRUCT_IFREQ_IFR_FLAGS 1
+#define HAVE_STRUCT_IFREQ_IFR_HWADDR 1
+#define HAVE_STRUCT_IFREQ_IFR_NETMASK 1
+#define HAVE_STRUCT_IFREQ_IFR_BROADADDR 1
+#define HAVE_STRUCT_IFREQ_IFR_ADDR 1
+#define PROTOTYPES 1
+#define __PROTOTYPES 1
+#define POINTER_TYPE void
+#define HAVE_LONG_FILE_NAMES 1
+#define DOUG_LEA_MALLOC 1
+#define HAVE_STDLIB_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_MMAP 1
+#define HAVE_XKBGETKEYBOARD 1
+#define HAVE_XRMSETDATABASE 1
+#define HAVE_XSCREENRESOURCESTRING 1
+#define HAVE_XSCREENNUMBEROFSCREEN 1
+#define HAVE_XSETWMPROTOCOLS 1
+#define HAVE_X11R6 1
+#define HAVE_X11R5 1
+#define HAVE_GTK_MAIN 1
+#define HAVE_GTK 1
+#define HAVE_GDK_DISPLAY_OPEN 1
+#define HAVE_GTK_MULTIDISPLAY 1
+#define HAVE_GTK_FILE_SELECTION_NEW 1
+#define HAVE_GTK_FILE_CHOOSER_DIALOG_NEW 1
+#define HAVE_GTK_FILE_BOTH 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_GTK_AND_PTHREAD 1
+#define HAVE_XFT 1
+#define USE_TOOLKIT_SCROLL_BARS 1
+#define HAVE_XIM 1
+#define USE_XIM 1
+#define XRegisterIMInstantiateCallback_arg6 XPointer
+#define HAVE_XPM 1
+#define HAVE_JPEG 1
+#define HAVE_JPEG 1
+#define HAVE_PNG_H 1
+#define HAVE_LIBPNG_PNG_H 1
+#define HAVE_PNG 1
+#define HAVE_TIFF 1
+#define HAVE_GIF 1
+#define HAVE_X_SM 1
+#define HAVE_H_ERRNO 1
+#define HAVE_ALLOCA_H 1
+#define HAVE_ALLOCA 1
+#define HAVE_LIBM 1
+#define HAVE_LIBLOCKFILE 1
+#define HAVE_TOUCHLOCK 1
+#define HAVE_MAILLOCK_H 1
+#define HAVE_GETHOSTNAME 1
+#define HAVE_GETDOMAINNAME 1
+#define HAVE_DUP2 1
+#define HAVE_RENAME 1
+#define HAVE_CLOSEDIR 1
+#define HAVE_MKDIR 1
+#define HAVE_RMDIR 1
+#define HAVE_SYSINFO 1
+#define HAVE_GETRUSAGE 1
+#define HAVE_GET_CURRENT_DIR_NAME 1
+#define HAVE_RANDOM 1
+#define HAVE_LRAND48 1
+#define HAVE_BCOPY 1
+#define HAVE_BCMP 1
+#define HAVE_LOGB 1
+#define HAVE_FREXP 1
+#define HAVE_FMOD 1
+#define HAVE_RINT 1
+#define HAVE_CBRT 1
+#define HAVE_FTIME 1
+#define HAVE_SETSID 1
+#define HAVE_STRERROR 1
+#define HAVE_FPATHCONF 1
+#define HAVE_SELECT 1
+#define HAVE_MKTIME 1
+#define HAVE_EUIDACCESS 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_TZSET 1
+/* end confdefs.h.  */
+/* Define setlocale to an innocuous variant, in case <limits.h> declares setlocale.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define setlocale innocuous_setlocale
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char setlocale (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef setlocale
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setlocale ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_setlocale || defined __stub___setlocale
+choke me
+#endif
+
+int
+main ()
+{
+return setlocale ();
+  ;
+  return 0;
+}
--- a/etc/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/etc/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,11 @@
+2007-04-19  Glenn Morris  <rgm@gnu.org>
+
+	* PROBLEMS: Expand a little on Emacs not knowing fqdn.
+
+2007-04-17  David Kastrup  <dak@gnu.org>
+
+	* NEWS: Mention `query-replace-regexp-eval' being deprecated.
+
 2007-04-15  Glenn Morris  <rgm@gnu.org>
 
 	* FTP: Make it a duplicate of ../FTP.
--- a/etc/DEVEL.HUMOR	Sun Apr 22 12:42:47 2007 +0000
+++ b/etc/DEVEL.HUMOR	Sun Apr 22 12:45:07 2007 +0000
@@ -178,3 +178,9 @@
 constants with anything like the universality of e and pi."
   "42"
                                 -- Alan Mackenzie and David Hansen
+
+----------------------------------------------------------------------
+
+  "[...] So please do not delete anything."
+  "Done."
+                                              -- RMS and David Kastrup
--- a/etc/NEWS	Sun Apr 22 12:42:47 2007 +0000
+++ b/etc/NEWS	Sun Apr 22 12:45:07 2007 +0000
@@ -106,14 +106,14 @@
 ---
 ** New translations of the Emacs Tutorial are available in the
 following languages: Brasilian Portuguese, Bulgarian, Chinese (both
-with simplified and traditional characters), French, and Italian.
-Type `C-u C-h t' to choose one of them in case your language setup
-doesn't automatically select the right one.
-
----
-** A Portuguese translation of Emacs' reference card has been added.
-Its name is `pt-br-refcard.tex'.  The corresponding PostScript file is
-also included.
+with simplified and traditional characters), French, Russian, and
+Italian.  Type `C-u C-h t' to choose one of them in case your language
+setup doesn't automatically select the right one.
+
+---
+** New translations of the Emacs reference card are available in the
+Brasilian Portuguese and Russian.  The corresponding PostScript files
+are also included.
 
 ---
 ** A French translation of the `Emacs Survival Guide' is available.
@@ -633,12 +633,12 @@
 *** When used interactively, the commands `query-replace-regexp' and
 `replace-regexp' allow \,expr to be used in a replacement string,
 where expr is an arbitrary Lisp expression evaluated at replacement
-time.  In many cases, this will be more convenient than using
-`query-replace-regexp-eval'.  `\#' in a replacement string now refers
-to the count of replacements already made by the replacement command.
-All regular expression replacement commands now allow `\?' in the
-replacement string to specify a position where the replacement string
-can be edited for each replacement.
+time.  `\#' in a replacement string now refers to the count of
+replacements already made by the replacement command.  All regular
+expression replacement commands now allow `\?' in the replacement
+string to specify a position where the replacement string can be
+edited for each replacement.  `query-replace-regexp-eval' is now
+deprecated since it offers no additional functionality.
 
 +++
 *** query-replace uses isearch lazy highlighting when the new user option
@@ -2218,7 +2218,7 @@
    - version number incremented to 2.2
 
 +++
-** The variable `woman-topic-at-point' was renamed
+** The variable `woman-topic-at-point' is renamed
 to `woman-use-topic-at-point' and behaves differently: if this
 variable is non-nil, the `woman' command uses the word at point
 automatically, without asking for a confirmation.  Otherwise, the word
--- a/etc/PROBLEMS	Sun Apr 22 12:42:47 2007 +0000
+++ b/etc/PROBLEMS	Sun Apr 22 12:45:07 2007 +0000
@@ -386,9 +386,13 @@
 
 *** Emacs does not know your host's fully-qualified domain name.
 
+For example, (system-name) returns some variation on
+"localhost.localdomain", rather the name you were expecting.
+
 You need to configure your machine with a fully qualified domain name,
-either in /etc/hosts, /etc/hostname, the NIS, or wherever your system
-calls for specifying this.
+(i.e. a name with at least one ".") either in /etc/hosts,
+/etc/hostname, the NIS, or wherever your system calls for specifying
+this.
 
 If you cannot fix the configuration, you can set the Lisp variable
 mail-host-address to the value you want.
--- a/etc/TODO	Sun Apr 22 12:42:47 2007 +0000
+++ b/etc/TODO	Sun Apr 22 12:45:07 2007 +0000
@@ -14,6 +14,12 @@
 
 * Small but important fixes needed in existing features:
 
+** Fix compilation when Xaw3d libraries are present but libxaw is not.
+In new X11 versions, xaw3dg-dev does not depend on libxaw-dev, so the
+latter need not be installed.  As a result, all the source files that
+look for include files in X11/Xaw should look in X11/Xaw3d if we are
+using Xaw3d.
+
 ** Compute the list of active keymaps *after* reading the first event.
 
 ** Avoid using "iff" in doc strings.
@@ -94,6 +100,8 @@
 
 ** make back_comment use syntax-ppss or equivalent.
 
+** Improve configure's treatment of NON_GNU_CPP on Solaris.
+
 * Important features:
 
 ** Provide user-friendly ways to list all available font families,
@@ -544,7 +552,7 @@
    a derived mode of sendmail.el.  Or arrange for messages.el to be split
    into a small core and "the rest" so that we use less resources as long as
    we stick to the features provided in sendmail.el.
-
+ 
 ** Replace gmalloc.c with the modified Doug Lea code from the current
    GNU libc so that the special mmapping of buffers can be removed --
    that apparently loses under Solaris, at least. [fx has mostly done
Binary file etc/images/icons/emacs_16.png has changed
Binary file etc/images/icons/emacs_24.png has changed
Binary file etc/images/icons/emacs_32.png has changed
Binary file etc/images/icons/emacs_48.png has changed
--- a/lisp/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,56 @@
+2007-04-19  Kevin Ryde  <user42@zip.com.au>
+
+	* arc-mode.el (archive-find-type): lzh-exe for lzh self-extracting exe.
+	(archive-lzh-summarize): Add optional start arg for where to start
+	looking at the archive.
+	(archive-lzh-exe-summarize, archive-lzh-exe-extract): New functions.
+
+	* international/mule.el (auto-coding-alist): no-conversion for .exe
+	and .EXE.
+
+2007-04-19  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-cmds.el (c-in-function-trailer-p): Fix this: when a
+	function return type contains "struct", "union", etc.
+	c-end-of-defun goes too far forward.
+
+2007-04-19  Chong Yidong  <cyd@stupidchicken.com>
+
+	* paren.el (show-paren-function): Reset window-start to avoid
+	recentering.
+
+2007-04-19  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/todo-mode.el: Fix typo: "threshhold" -> "threshold".
+
+2007-04-18  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/diary-lib.el (diary-header-line-format): Add a custom
+	:set function.
+	(diary-list-entries): Only switch to diary-mode from
+	default-major-mode (reverts 2007-03-21 change).  Otherwise, if in
+	diary-mode set header-line-format, in case of any customization.
+
+2007-04-18  Levin Du  <zslevin@gmail.com>  (tiny change)
+
+	* calendar/parse-time.el (parse-time-string-chars): Check if CHAR
+	is less than the length of parse-time-syntax.
+
+2007-04-17  David Kastrup  <dak@gnu.org>
+
+	* replace.el (query-replace-regexp-eval): Deprecate.
+
+2007-04-17  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-cmds.el (c-beginning-of-defun): With -ve arg and
+	point too close to EOB, leave point at EOB rather than last `}'.
+
+2007-04-17  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-include-OPTkey)
+	(bibtex-user-optional-fields, bibtex-entry-field-alist):
+	Fix defcustom.
+
 2007-04-17  Glenn Morris  <rgm@gnu.org>
 
 	* calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
@@ -66,8 +119,7 @@
 
 2007-04-13  Chong Yidong  <cyd@stupidchicken.com>
 
-	* progmodes/compile.el (compilation-start): Revert 2007-03-25
-	change.
+	* progmodes/compile.el (compilation-start): Revert 2007-03-25 change.
 
 	* files.el: Ditto.
 
@@ -135,8 +187,8 @@
 
 2007-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-	* desktop.el (desktop-save, desktop-create-buffer): Replace mapcar with
-	dolist.
+	* desktop.el (desktop-save, desktop-create-buffer): Replace mapcar
+	with dolist.
 	(after-init-hook): Don't quote lambda.
 	(desktop-first-buffer): Don't wrap it in eval-when-compile.
 	(desktop-internal-v2s): Remove unused var `el'.
@@ -715,6 +767,13 @@
 	(number-of-diary-entries): Change :set to use diary-set-maybe-redraw.
 	(diary-list-entries): Always run diary-mode.
 
+2007-03-20  Kenichi Handa  <handa@m17n.org>
+
+	* international/quail.el (quail-setup-completion-buf): Make the
+	completion buffer read-only.
+	(quail-completion): Adjusted for the above change.  Leave the
+	modified flag nil.
+
 2007-03-20  David Kastrup  <dak@gnu.org>
 
 	* files.el (magic-mode-alist): Require literal "%!PS" string for
--- a/lisp/arc-mode.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/arc-mode.el	Sun Apr 22 12:45:07 2007 +0000
@@ -700,6 +700,10 @@
 		(string-match "\\.[aA][rR][cC]$"
 			      (or buffer-file-name (buffer-name))))
 	   'arc)
+          ;; This pattern modelled on the BSD/GNU+Linux `file' command.
+          ;; Have seen capital "LHA's", and file has lower case "LHa's" too.
+          ;; Note this regexp is also in archive-exe-p.
+          ((looking-at "MZ\\(.\\|\n\\)\\{34\\}LH[aA]'s SFX ") 'lzh-exe)
 	  (t (error "Buffer format not recognized")))))
 ;; -------------------------------------------------------------------------
 (defun archive-summarize (&optional shut-up)
@@ -1398,8 +1402,8 @@
 ;; -------------------------------------------------------------------------
 ;; Section: Lzh Archives
 
-(defun archive-lzh-summarize ()
-  (let ((p 1)
+(defun archive-lzh-summarize (&optional start)
+  (let ((p (or start 1)) ;; 1 for .lzh, something further on for .exe
 	(totalsize 0)
 	(maxlen 8)
         files
@@ -1621,6 +1625,34 @@
    ;; This should work even though newmode will be dynamically accessed.
    (lambda (old) (archive-calc-mode old newmode t))
    files "a unix-style mode" 8))
+
+;; -------------------------------------------------------------------------
+;; Section: Lzh Self-Extracting .exe Archives
+;;
+;; No support for modifying these files.  It looks like the lha for unix
+;; program (as of version 1.14i) can't create or retain the DOS exe part.
+;; If you do an "lha a" on a .exe for instance it renames and writes to a
+;; plain .lzh.
+
+(defun archive-lzh-exe-summarize ()
+  "Summarize the contents of an LZH self-extracting exe, for `archive-mode'."
+
+  ;; Skip the initial executable code part and apply archive-lzh-summarize
+  ;; to the archive part proper.  The "-lh5-" etc regexp here for the start
+  ;; is the same as in archive-find-type.
+  ;;
+  ;; The lha program (version 1.14i) does this in skip_msdos_sfx1_code() by
+  ;; a similar scan.  It looks for "..-l..-" plus for level 0 or 1 a test of
+  ;; the header checksum, or level 2 a test of the "attribute" and size.
+  ;;
+  (re-search-forward "..-l[hz][0-9ds]-" nil)
+  (archive-lzh-summarize (match-beginning 0)))
+
+;; `archive-lzh-extract' runs "lha pq", and that works for .exe as well as
+;; .lzh files
+(defalias 'archive-lzh-exe-extract 'archive-lzh-extract
+  "Extract a member from an LZH self-extracting exe, for `archive-mode'.")
+
 ;; -------------------------------------------------------------------------
 ;; Section: Zip Archives
 
--- a/lisp/calendar/diary-lib.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/calendar/diary-lib.el	Sun Apr 22 12:45:07 2007 +0000
@@ -276,6 +276,7 @@
   :group   'diary
   :type    'boolean
   :initialize 'custom-initialize-default
+  ;; FIXME overkill.
   :set 'diary-set-maybe-redraw
   :version "22.1")
 
@@ -292,6 +293,9 @@
 Only used if `diary-header-line-flag' is non-nil."
   :group   'diary
   :type    'sexp
+  :initialize 'custom-initialize-default
+  ;; FIXME overkill.
+  :set 'diary-set-maybe-redraw
   :version "22.1")
 
 (defvar diary-saved-point)		; internal
@@ -434,10 +438,17 @@
             (or (verify-visited-file-modtime diary-buffer)
                 (revert-buffer t t))))
         ;; Setup things like the header-line-format and invisibility-spec.
-        ;; This used to only run if the major-mode was default-major-mode,
-        ;; but that meant eg changes to header-line-format did not
-        ;; take effect from one diary invocation to the next.
-        (diary-mode)
+        (if (eq major-mode default-major-mode)
+            (diary-mode)
+          ;; This kludge is to make customizations to
+          ;; diary-header-line-flag after diary has been displayed
+          ;; take effect. Unconditionally calling (diary-mode)
+          ;; clobbers file local variables.
+          ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00363.html
+          ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00404.html
+          (if (eq major-mode 'diary-mode)
+              (setq header-line-format (and diary-header-line-flag
+                                            diary-header-line-format))))
         ;; d-s-p is passed to the diary display function.
         (let ((diary-saved-point (point)))
           (save-excursion
--- a/lisp/calendar/parse-time.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/calendar/parse-time.el	Sun Apr 22 12:45:07 2007 +0000
@@ -66,7 +66,8 @@
   (aref parse-time-digits char))
 
 (defsubst parse-time-string-chars (char)
-  (aref parse-time-syntax char))
+  (and (< char (length parse-time-syntax))
+       (aref parse-time-syntax char)))
 
 (put 'parse-error 'error-conditions '(parse-error error))
 (put 'parse-error 'error-message "Parsing error")
--- a/lisp/calendar/todo-mode.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/calendar/todo-mode.el	Sun Apr 22 12:45:07 2007 +0000
@@ -205,11 +205,11 @@
 ;;     	by the binary insertion algorithm.  However, you may not
 ;;     	really have a need for such accurate priorities amongst your
 ;;     	TODO items.  If you now think about the binary insertion
-;;     	halfing the size of the window each time, then the threshhold
+;;     	halfing the size of the window each time, then the threshold
 ;;     	is the window size at which it will stop.  If you set the
-;;     	threshhold to zero, the upper and lower bound will coincide at
+;;     	threshold to zero, the upper and lower bound will coincide at
 ;;     	the end of the loop and you will insert your item just before
-;;     	that point.  If you set the threshhold to, e.g. 8, it will stop
+;;     	that point.  If you set the threshold to, e.g. 8, it will stop
 ;;     	as soon as the window size drops below that amount and will
 ;;     	insert the item in the approximate centre of that window.  I
 ;;     	got the idea for this feature after reading a very helpful
@@ -307,10 +307,10 @@
 questions by the binary insertion algorithm.  However, you may not
 really have a need for such accurate priorities amongst your TODO
 items.  If you now think about the binary insertion halfing the size
-of the window each time, then the threshhold is the window size at
-which it will stop.  If you set the threshhold to zero, the upper and
+of the window each time, then the threshold is the window size at
+which it will stop.  If you set the threshold to zero, the upper and
 lower bound will coincide at the end of the loop and you will insert
-your item just before that point.  If you set the threshhold to,
+your item just before that point.  If you set the threshold to,
 e.g. 8, it will stop as soon as the window size drops below that
 amount and will insert the item in the approximate center of that
 window."
--- a/lisp/gnus/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/gnus/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,15 @@
+2007-04-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-art.el (gnus-mime-strip-charset-parameters): New function.
+	(gnus-mime-view-part-as-charset): Use it; redisplay subpart currently
+	displayed of multipart/alternative part if it is invoked from summary
+	buffer.
+	(gnus-article-part-wrapper): Select article window.
+
+	* mm-view.el (mm-inline-text-html-render-with-w3m)
+	(mm-inline-text-html-render-with-w3m-standalone)
+	(mm-inline-render-with-function): Use mail-parse-charset by default.
+
 2007-04-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-msg.el (gnus-inews-yank-articles): Use
--- a/lisp/gnus/gnus-art.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/gnus/gnus-art.el	Sun Apr 22 12:45:07 2007 +0000
@@ -4606,6 +4606,21 @@
 	   (mm-string-to-multibyte contents)))
 	(goto-char b)))))
 
+(defun gnus-mime-strip-charset-parameters (handle)
+  "Strip charset parameters from HANDLE."
+  (if (stringp (car handle))
+      (mapc #'gnus-mime-strip-charset-parameters (cdr handle))
+    (let* ((type (mm-handle-type (if (equal (mm-handle-media-type handle)
+					    "message/external-body")
+				     (progn
+				       (unless (mm-handle-cache handle)
+					 (mm-extern-cache-contents handle))
+				       (mm-handle-cache handle))
+				   handle)))
+	   (charset (assq 'charset (cdr type))))
+      (when charset
+	(delq charset type)))))
+
 (defun gnus-mime-view-part-as-charset (&optional handle arg)
   "Insert the MIME part under point into the current buffer using the
 specified charset."
@@ -4614,7 +4629,7 @@
   (let ((handle (or handle (get-text-property (point) 'gnus-data)))
 	(fun (get-text-property (point) 'gnus-callback))
 	(gnus-newsgroup-ignored-charsets 'gnus-all)
-	gnus-newsgroup-charset type charset)
+	gnus-newsgroup-charset form preferred parts)
     (when handle
       (if (mm-handle-undisplayer handle)
 	  (mm-remove-part handle))
@@ -4622,17 +4637,24 @@
 	(setq gnus-newsgroup-charset
 	      (or (cdr (assq arg gnus-summary-show-article-charset-alist))
 		  (mm-read-coding-system "Charset: ")))
-	;; Strip the charset parameter from `handle'.
-	(setq type (mm-handle-type
-		    (if (equal (mm-handle-media-type handle)
-			       "message/external-body")
-			(progn
-			  (unless (mm-handle-cache handle)
-			    (mm-extern-cache-contents handle))
-			  (mm-handle-cache handle))
-		      handle))
-	      charset (assq 'charset (cdr type)))
-	(delq charset type)
+	(gnus-mime-strip-charset-parameters handle)
+	(when (and (consp (setq form (cdr-safe fun)))
+		   (setq form (ignore-errors
+				(assq 'gnus-mime-display-alternative form)))
+		   (setq preferred (caddr form))
+		   (progn
+		     (when (eq (car preferred) 'quote)
+		       (setq preferred (cadr preferred)))
+		     (not (equal preferred
+				 (get-text-property (point) 'gnus-data))))
+		   (setq parts (get-text-property (point) 'gnus-part))
+		   (setq parts (cdr (assq parts
+					  gnus-article-mime-handle-alist)))
+		   (equal (mm-handle-media-type parts) "multipart/alternative")
+		   (setq parts (reverse (cdr parts))))
+	  (setcar (cddr form)
+		  (list 'quote (or (cadr (member preferred parts))
+				   (car parts)))))
 	(funcall fun handle)))))
 
 (defun gnus-mime-view-part-externally (&optional handle)
@@ -4688,13 +4710,22 @@
 	(funcall (cdr action-pair)))))
 
 (defun gnus-article-part-wrapper (n function)
-  (save-current-buffer
-    (set-buffer gnus-article-buffer)
-    (when (> n (length gnus-article-mime-handle-alist))
-      (error "No such part"))
-    (gnus-article-goto-part n)
-    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
-      (funcall function handle))))
+  (let ((window (get-buffer-window gnus-article-buffer 'visible))
+	frame)
+    (when window
+      ;; It is necessary to select the article window so that
+      ;; `gnus-article-goto-part' may really move the point.
+      (setq frame (selected-frame))
+      (gnus-select-frame-set-input-focus (window-frame window))
+      (unwind-protect
+	  (save-window-excursion
+	    (select-window window)
+	    (when (> n (length gnus-article-mime-handle-alist))
+	      (error "No such part"))
+	    (gnus-article-goto-part n)
+	    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
+	      (funcall function handle)))
+	(gnus-select-frame-set-input-focus frame)))))
 
 (defun gnus-article-pipe-part (n)
   "Pipe MIME part N, which is the numerical prefix."
--- a/lisp/gnus/mm-view.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/gnus/mm-view.el	Sun Apr 22 12:45:07 2007 +0000
@@ -238,7 +238,8 @@
   (mm-setup-w3m)
   (let ((text (mm-get-part handle))
 	(b (point))
-	(charset (mail-content-type-get (mm-handle-type handle) 'charset)))
+	(charset (or (mail-content-type-get (mm-handle-type handle) 'charset)
+		     mail-parse-charset)))
     (save-excursion
       (insert (if charset (mm-decode-string text charset) text))
       (save-restriction
@@ -302,7 +303,9 @@
   "Render a text/html part using w3m."
   (if (mm-w3m-standalone-supports-m17n-p)
       (let ((source (mm-get-part handle))
-	    (charset (mail-content-type-get (mm-handle-type handle) 'charset))
+	    (charset (or (mail-content-type-get (mm-handle-type handle)
+						'charset)
+			 (symbol-name mail-parse-charset)))
 	    cs)
 	(unless (and charset
 		     (setq cs (mm-charset-to-coding-system charset))
@@ -368,7 +371,8 @@
 
 (defun mm-inline-render-with-function (handle func &rest args)
   (let ((source (mm-get-part handle))
-	(charset (mail-content-type-get (mm-handle-type handle) 'charset)))
+	(charset (or (mail-content-type-get (mm-handle-type handle) 'charset)
+		     mail-parse-charset)))
     (mm-insert-inline
      handle
      (mm-with-multibyte-buffer
--- a/lisp/international/mule.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/international/mule.el	Sun Apr 22 12:45:07 2007 +0000
@@ -1586,8 +1586,10 @@
 ;;; FILE I/O
 
 (defcustom auto-coding-alist
-  '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion)
-    ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
+  ;; .exe and .EXE are added to support archive-mode looking at DOS
+  ;; self-extracting exe archives.
+  '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|exe\\)\\'" . no-conversion)
+    ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|EXE\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
     ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
     ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
--- a/lisp/paren.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/paren.el	Sun Apr 22 12:45:07 2007 +0000
@@ -143,6 +143,7 @@
       (let ((oldpos (point))
 	    (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1)
                        ((eq (syntax-class (syntax-after (point)))      4) 1)))
+	    (window-start (window-start))
 	    pos mismatch face)
 	;;
 	;; Find the other end of the sexp.
@@ -247,7 +248,12 @@
 	  ;;
 	  ;; Always set the overlay face, since it varies.
 	  (overlay-put show-paren-overlay 'priority show-paren-priority)
-	  (overlay-put show-paren-overlay 'face face)))
+	  (overlay-put show-paren-overlay 'face face))
+	;; If there are continued lines, the above operations can
+	;; force redisplay to recenter the window (since there is no
+	;; way for it to know that the overlay changes to the buffer
+	;; are harmless).  So reset the window-start.
+	(set-window-start (selected-window) window-start))
     ;; show-paren-mode is nil in this buffer.
     (and show-paren-overlay
 	 (delete-overlay show-paren-overlay))
--- a/lisp/progmodes/cc-cmds.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/progmodes/cc-cmds.el	Sun Apr 22 12:45:07 2007 +0000
@@ -1360,10 +1360,24 @@
   (and c-opt-block-decls-with-vars-key
        (save-excursion
 	 (c-syntactic-skip-backward "^;}" lim)
-	 (and (eq (char-before) ?\})
-	      (eq (car (c-beginning-of-decl-1 lim)) 'previous)
-	      (looking-at c-opt-block-decls-with-vars-key)
-	      (point)))))
+	 (let ((eo-block (point))
+	       bod)
+	   (and (eq (char-before) ?\})
+		(eq (car (c-beginning-of-decl-1 lim)) 'previous)
+		(setq bod (point))
+		;; Look for struct or union or ...  If we find one, it might
+		;; be the return type of a function, or the like.  Exclude
+		;; this case.
+		(c-syntactic-re-search-forward
+		 (concat "[;=\(\[{]\\|\\("
+			 c-opt-block-decls-with-vars-key
+			 "\\)")
+		 eo-block t t t)
+		(match-beginning 1)	; Is there a "struct" etc., somewhere?
+		(not (eq (char-before) ?_))
+		(c-syntactic-re-search-forward "[;=\(\[{]" eo-block t t t)
+		(eq (char-before) ?\{)
+		bod)))))
 
 (defun c-where-wrt-brace-construct ()
   ;; Determine where we are with respect to functions (or other brace
@@ -1531,7 +1545,7 @@
 	      (setq arg (c-forward-to-nth-EOF-} (- arg) where)))
 	  ;; Move forward to the next opening brace....
 	  (when (and (= arg 0)
-		     (c-syntactic-re-search-forward "{" nil t))
+		     (c-syntactic-re-search-forward "{" nil 'eob))
 	    (backward-char)
 	    ;; ... and backward to the function header.
 	    (c-beginning-of-decl-1)
--- a/lisp/replace.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/replace.el	Sun Apr 22 12:45:07 2007 +0000
@@ -303,6 +303,11 @@
 
 (defun query-replace-regexp-eval (regexp to-expr &optional delimited start end)
   "Replace some things after point matching REGEXP with the result of TO-EXPR.
+
+Interactive use of this function is deprecated in favor of the
+`\\,' feature of `query-replace-regexp'.  For non-interactive use, a loop
+using `search-forward-regexp' and `replace-match' is preferred.
+
 As each match is found, the user must type a character saying
 what to do with it.  For directions, type \\[help-command] at that time.
 
@@ -354,6 +359,11 @@
   (perform-replace regexp (cons 'replace-eval-replacement to-expr)
 		   t 'literal delimited nil nil start end))
 
+(make-obsolete 'query-replace-regexp-eval
+  "for interactive use, use the special `\\,' feature of
+`query-replace-regexp' instead.  Non-interactively, a loop
+using `search-forward-regexp' and `replace-match' is preferred." "22.1")
+
 (defun map-query-replace-regexp (regexp to-strings &optional n start end)
   "Replace some matches for REGEXP with various strings, in rotation.
 The second argument TO-STRINGS contains the replacement strings,
--- a/lisp/textmodes/bibtex.el	Sun Apr 22 12:42:47 2007 +0000
+++ b/lisp/textmodes/bibtex.el	Sun Apr 22 12:45:07 2007 +0000
@@ -86,7 +86,7 @@
   :group 'bibtex
   :type '(choice (const :tag "None" nil)
                  (string :tag "Initial text")
-                 (function :tag "Initialize Function" :value fun)
+                 (function :tag "Initialize Function")
                  (const :tag "Default" t)))
 (put 'bibtex-include-OPTkey 'risky-local-variable t)
 
@@ -98,11 +98,8 @@
   :group 'bibtex
   :type '(repeat (group (string :tag "Field")
                         (string :tag "Comment")
-                        (option (group :inline t
-                                       :extra-offset -4
-                                       (choice :tag "Init" :value ""
-                                               string
-                                               function))))))
+                        (option (choice :tag "Init"
+                                        (const nil) string function)))))
 (put 'bibtex-user-optional-fields 'risky-local-variable t)
 
 (defcustom bibtex-entry-format
@@ -454,45 +451,34 @@
 field is an alternative.  ALTERNATIVE-FLAG may be t only in the
 REQUIRED or CROSSREF-REQUIRED lists."
   :group 'bibtex
-  :type '(repeat (list (string :tag "Entry name")
-                       (list (repeat :tag "required"
-                                     (group (string :tag "Field")
-                                            (string :tag "Comment")
-                                            (option (choice :tag "Init" :value nil
-                                                            (const nil)
-                                                            (string :tag "string")
-                                                            (function :tag "function")))
-                                            (option (choice (const nil)
-                                                            (const :tag "Alternative" t)))))
-                             (repeat :tag "optional"
-                                     (group (string :tag "Field")
-                                            (string :tag "Comment")
-                                            (option (choice :tag "Init" :value nil
-                                                            (const nil)
-                                                            (string :tag "string")
-                                                            (function :tag "function")))
-                                            (option (choice (const nil)
-                                                            (const :tag "Alternative" t))))))
-                       (option
-                        (list :tag "Crossref"
-                              (repeat :tag "required"
-                                      (group (string :tag "Field")
-                                             (string :tag "Comment")
-                                             (option (choice :tag "Init" :value nil
-                                                             (const nil)
-                                                             (string :tag "string")
-                                                             (function :tag "function")))
-                                             (option (choice (const nil)
-                                                             (const :tag "Alternative" t)))))
-                              (repeat :tag "optional"
-                                      (group (string :tag "Field")
-                                             (string :tag "Comment")
-                                             (option (choice :tag "Init" :value nil
-                                                             (const nil)
-                                                             (string :tag "string")
-                                                             (function :tag "function")))
-                                             (option (choice (const nil)
-                                                             (const :tag "Alternative" t))))))))))
+  :type '(repeat (group (string :tag "Entry name")
+                        (group (repeat :tag "Required fields"
+                                       (group (string :tag "Field")
+                                              (string :tag "Comment")
+                                              (option (choice :tag "Init" :value nil
+                                                              (const nil) string function))
+                                              (option (choice :tag "Alternative"
+                                                              (const :tag "No" nil)
+                                                              (const :tag "Yes" t)))))
+                               (repeat :tag "Optional fields"
+                                       (group (string :tag "Field")
+                                              (string :tag "Comment")
+                                              (option (choice :tag "Init" :value nil
+                                                              (const nil) string function)))))
+                        (option :extra-offset -4
+                         (group (repeat :tag "Crossref: required fields"
+                                        (group (string :tag "Field")
+                                               (string :tag "Comment")
+                                               (option (choice :tag "Init" :value nil
+                                                               (const nil) string function))
+                                               (option (choice :tag "Alternative"
+                                                               (const :tag "No" nil)
+                                                               (const :tag "Yes" t)))))
+                                (repeat :tag "Crossref: optional fields"
+                                        (group (string :tag "Field")
+                                               (string :tag "Comment")
+                                               (option (choice :tag "Init" :value nil
+                                                               (const nil) string function)))))))))
 (put 'bibtex-entry-field-alist 'risky-local-variable t)
 
 (defcustom bibtex-comment-start "@Comment"
--- a/lispref/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/lispref/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,11 @@
+2007-04-19  Kenichi Handa  <handa@m17n.org>
+
+	* text.texi (Special Properties): Document composition property.
+
+2007-04-19  Glenn Morris  <rgm@gnu.org>
+
+	* files.texi (File Name Expansion): Mention "superroot".
+
 2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
 
 	* frames.texi (Multiple Displays): Add note about "multi-monitor"
@@ -51,7 +59,7 @@
 	adaptive-fill-regexp's value, since they are not in the standard
 	TeX fonts.
 
-2007-04-07  Herbert Euler  <herberteuler@hotmail.com>
+2007-04-07  Guanpeng Xu  <herberteuler@hotmail.com>
 
 	* display.texi (Defining Faces): Fix example.
 
--- a/lispref/files.texi	Sun Apr 22 12:42:47 2007 +0000
+++ b/lispref/files.texi	Sun Apr 22 12:45:07 2007 +0000
@@ -1990,6 +1990,19 @@
 @end group
 @end example
 
+In some cases, a leading @samp{..} can remain in the output:
+
+@example
+@group
+(expand-file-name "../home" "/")
+     @result{} "/../home"
+@end group
+@end example
+
+This is for use with filesystems that have the concept of a
+``superroot'' above the root directory @file{/}.  On other filesystems,
+@file{/../} is interpreted exactly the same as @file{/}.
+
 Note that @code{expand-file-name} does @emph{not} expand environment
 variables; only @code{substitute-in-file-name} does that.
 
--- a/lispref/text.texi	Sun Apr 22 12:42:47 2007 +0000
+++ b/lispref/text.texi	Sun Apr 22 12:45:07 2007 +0000
@@ -3241,7 +3241,6 @@
 It is possible with @code{char-after} to examine characters at various
 buffer positions without moving point to those positions.  Only an
 actual change in the value of point runs these hook functions.
-@end table
 
 @defvar inhibit-point-motion-hooks
 When this variable is non-@code{nil}, @code{point-left} and
@@ -3260,6 +3259,27 @@
 Manual}) provides an example.
 @end defvar
 
+@item composition
+@kindex composition @r{(text property)}
+This text property is used to display a sequence of characters as a
+single glyph composed from components.  For instance, Thai base
+consonant is composed with the following combining vowel as a single
+glyph.
+
+The value is a character or a sequence (vector, list, or
+string) of integers.
+
+If it is a character, it is an alternate character to display instead
+of the text in the region.
+
+If it is a string, it is an alternate character sequences to
+display.
+
+If it is a vector or list, it is a sequence of alternate
+characters interleaved with internal codes specifying how to
+compose the following character with the previous one.
+@end table
+
 @node Format Properties
 @subsection Formatted Text Properties
 
--- a/src/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
+++ b/src/ChangeLog	Sun Apr 22 12:45:07 2007 +0000
@@ -1,3 +1,9 @@
+2007-04-19  Juanma Barranquero  <lekktu@gmail.com>
+
+	* minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties)
+	(Fminibuffer_completion_contents, Fdelete_minibuffer_contents):
+	Doc fixes.
+
 2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
 
 	* dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Set
--- a/src/mac.c	Sun Apr 22 12:42:47 2007 +0000
+++ b/src/mac.c	Sun Apr 22 12:45:07 2007 +0000
@@ -4991,7 +4991,7 @@
    3. [If SELECT_USE_CFSOCKET is set]
       Only the window event channel and socket read/write channels are
       involved, and timeout is not too short (greater than
-      SELECT_TIMEOUT_THRESHHOLD_RUNLOOP seconds).
+      SELECT_TIMEOUT_THRESHOLD_RUNLOOP seconds).
       -> Create CFSocket for each socket and add it into the current
          event RunLoop so that the current event loop gets quit when
          the socket becomes ready.  Then ReceiveNextEvent can wait for
--- a/src/minibuf.c	Sun Apr 22 12:42:47 2007 +0000
+++ b/src/minibuf.c	Sun Apr 22 12:45:07 2007 +0000
@@ -387,7 +387,7 @@
 DEFUN ("minibuffer-contents", Fminibuffer_contents,
        Sminibuffer_contents, 0, 0, 0,
        doc: /* Return the user input in a minibuffer as a string.
-The current buffer must be a minibuffer.  */)
+If the current buffer is not a minibuffer, return its entire contents.  */)
      ()
 {
   int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -397,7 +397,7 @@
 DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
        Sminibuffer_contents_no_properties, 0, 0, 0,
        doc: /* Return the user input in a minibuffer as a string, without text-properties.
-The current buffer must be a minibuffer.  */)
+If the current buffer is not a minibuffer, return its entire contents.  */)
      ()
 {
   int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -408,7 +408,7 @@
        Sminibuffer_completion_contents, 0, 0, 0,
        doc: /* Return the user input in a minibuffer before point as a string.
 That is what completion commands operate on.
-The current buffer must be a minibuffer.  */)
+If the current buffer is not a minibuffer, return its entire contents.  */)
      ()
 {
   int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -420,7 +420,7 @@
 DEFUN ("delete-minibuffer-contents", Fdelete_minibuffer_contents,
        Sdelete_minibuffer_contents, 0, 0, 0,
        doc: /* Delete all user input in a minibuffer.
-The current buffer must be a minibuffer.  */)
+If the current buffer is not a minibuffer, erase its entire contents.  */)
      ()
 {
   int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -706,7 +706,7 @@
     if (!NILP (current_buffer->enable_multibyte_characters)
 	&& ! STRING_MULTIBYTE (minibuf_prompt))
       minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
-    
+
     /* Insert the prompt, record where it ends.  */
     Finsert (1, &minibuf_prompt);
     if (PT > BEG)