]> code.delx.au - gnu-emacs/commitdiff
Merge from trunk
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 6 Mar 2011 21:22:16 +0000 (16:22 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 6 Mar 2011 21:22:16 +0000 (16:22 -0500)
280 files changed:
ChangeLog
INSTALL.BZR
Makefile.in
aclocal.m4
admin/ChangeLog
admin/bzrmerge.el
admin/notes/bugtracker
admin/notes/bzr
config.bat
config.sub
configure
configure.in
doc/emacs/ChangeLog
doc/emacs/custom.texi
doc/emacs/maintaining.texi
doc/emacs/misc.texi
doc/emacs/mule.texi
doc/emacs/search.texi
doc/lispref/ChangeLog
doc/lispref/ChangeLog.trunk [new file with mode: 0644]
doc/lispref/Makefile.in
doc/lispref/elisp.texi
doc/lispref/files.texi
doc/lispref/minibuf.texi
doc/lispref/package.texi
doc/lispref/processes.texi
doc/lispref/variables.texi
doc/misc/ChangeLog
doc/misc/auth.texi
doc/misc/calc.texi
doc/misc/dbus.texi
doc/misc/dired-x.texi
doc/misc/edt.texi
doc/misc/erc.texi
doc/misc/faq.texi
doc/misc/gnus.texi
doc/misc/idlwave.texi
doc/misc/mh-e.texi
doc/misc/semantic.texi
doc/misc/texinfo.tex
doc/misc/tramp.texi
doc/misc/trampver.texi
doc/misc/url.texi
etc/ChangeLog
etc/NEWS
etc/NEWS.23
etc/srecode/el.srt
leim/ChangeLog
leim/ja-dic/ja-dic.el
leim/quail/cyrillic.el
leim/quail/ethiopic.el
lib-src/ChangeLog
lib-src/Makefile.in
lib-src/ebrowse.c
lib-src/emacsclient.c
lib-src/etags.c
lib-src/fakemail.c
lib-src/make-docfile.c
lib-src/makefile.w32-in
lib-src/movemail.c
lib-src/pop.c
lib-src/profile.c
lib-src/test-distrib.c
lib-src/update-game-score.c
lib/Makefile.in
lib/dosname.h [new file with mode: 0644]
lib/getopt_int.h
lib/gnulib.mk
lib/lstat.c [new file with mode: 0644]
lib/min-max.h [new file with mode: 0644]
lib/readlink.c [new file with mode: 0644]
lib/stat.c [new file with mode: 0644]
lib/stdlib.in.h
lib/symlink.c [new file with mode: 0644]
lisp/ChangeLog.10
lisp/ChangeLog.12
lisp/ChangeLog.3
lisp/ChangeLog.trunk
lisp/allout-widgets.el
lisp/allout.el
lisp/bookmark.el
lisp/calc/calc-ext.el
lisp/calc/calc-math.el
lisp/calc/calc-units.el
lisp/calc/calc-vec.el
lisp/calc/calc.el
lisp/calendar/cal-hebrew.el
lisp/cedet/semantic/analyze.el
lisp/cedet/semantic/complete.el
lisp/cedet/semantic/edit.el
lisp/cedet/semantic/format.el
lisp/cedet/semantic/java.el
lisp/cus-edit.el
lisp/desktop.el
lisp/dired-aux.el
lisp/dired-x.el
lisp/dired.el
lisp/emacs-lisp/assoc.el
lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/cl-loaddefs.el
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/elp.el
lisp/emacs-lisp/ert.el
lisp/emacs-lisp/ewoc.el
lisp/emacs-lisp/package-x.el
lisp/emacs-lisp/package.el
lisp/emacs-lisp/pcase.el
lisp/emacs-lock.el
lisp/emulation/viper-cmd.el
lisp/erc/ChangeLog
lisp/erc/ChangeLog.01
lisp/erc/erc-track.el
lisp/eshell/em-alias.el
lisp/eshell/em-banner.el
lisp/eshell/em-cmpl.el
lisp/eshell/em-dirs.el
lisp/eshell/em-glob.el
lisp/eshell/em-hist.el
lisp/eshell/em-ls.el
lisp/eshell/em-pred.el
lisp/eshell/em-prompt.el
lisp/eshell/em-rebind.el
lisp/eshell/em-script.el
lisp/eshell/em-smart.el
lisp/eshell/em-term.el
lisp/eshell/em-unix.el
lisp/eshell/esh-arg.el
lisp/eshell/esh-cmd.el
lisp/eshell/esh-ext.el
lisp/eshell/esh-io.el
lisp/eshell/esh-mode.el
lisp/eshell/esh-module.el
lisp/eshell/esh-proc.el
lisp/eshell/esh-util.el
lisp/eshell/esh-var.el
lisp/eshell/eshell.el
lisp/facemenu.el
lisp/files-x.el
lisp/files.el
lisp/find-file.el
lisp/generic-x.el
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el
lisp/gnus/gnus-agent.el
lisp/gnus/gnus-art.el
lisp/gnus/gnus-demon.el
lisp/gnus/gnus-gravatar.el
lisp/gnus/gnus-group.el
lisp/gnus/gnus-msg.el
lisp/gnus/gnus-range.el
lisp/gnus/gnus-start.el
lisp/gnus/gnus-sum.el
lisp/gnus/gnus-uu.el
lisp/gnus/gnus.el
lisp/gnus/message.el
lisp/gnus/nnimap.el
lisp/gnus/nnir.el
lisp/gnus/nnmail.el
lisp/gnus/nntp.el
lisp/gnus/sieve.el
lisp/help-fns.el
lisp/help-mode.el
lisp/ido.el
lisp/image-dired.el
lisp/international/ja-dic-cnv.el
lisp/international/mule-cmds.el
lisp/international/titdic-cnv.el
lisp/isearch.el
lisp/mail/mailclient.el
lisp/mail/mailheader.el
lisp/mail/rmail.el
lisp/mail/rmailmm.el
lisp/mail/sendmail.el
lisp/man.el
lisp/mh-e/ChangeLog
lisp/mh-e/mh-funcs.el
lisp/mh-e/mh-mime.el
lisp/net/ange-ftp.el
lisp/net/browse-url.el
lisp/net/rcirc.el
lisp/net/soap-client.el
lisp/net/soap-inspect.el
lisp/net/tramp-cache.el
lisp/net/tramp-cmds.el
lisp/net/tramp-gvfs.el
lisp/obsolete/fast-lock.el
lisp/obsolete/sym-comp.el
lisp/org/ChangeLog
lisp/org/org-id.el
lisp/org/org.el
lisp/outline.el
lisp/password-cache.el
lisp/printing.el
lisp/progmodes/ada-prj.el
lisp/progmodes/cc-engine.el
lisp/progmodes/cperl-mode.el
lisp/progmodes/ebnf2ps.el
lisp/progmodes/grep.el
lisp/progmodes/gud.el
lisp/progmodes/idlwave.el
lisp/progmodes/prolog.el
lisp/progmodes/sql.el
lisp/progmodes/vhdl-mode.el
lisp/ps-print.el
lisp/recentf.el
lisp/replace.el
lisp/saveplace.el
lisp/shell.el
lisp/speedbar.el
lisp/term/screen.el [new file with mode: 0644]
lisp/textmodes/artist.el
lisp/textmodes/paragraphs.el
lisp/textmodes/reftex.el
lisp/textmodes/sgml-mode.el
lisp/time.el
lisp/vc/diff-mode.el
lisp/vc/ediff-init.el
lisp/vc/emerge.el
lisp/vc/vc-bzr.el
lisp/vc/vc-dir.el
lisp/vc/vc-rcs.el
lisp/vc/vc-svn.el
lisp/vc/vc.el
lisp/window.el
m4/gl-comp.m4
m4/lstat.m4 [new file with mode: 0644]
m4/readlink.m4 [new file with mode: 0644]
m4/stat.m4 [new file with mode: 0644]
m4/stdlib_h.m4
m4/symlink.m4 [new file with mode: 0644]
msdos/ChangeLog
msdos/depfiles.bat
msdos/sed2v2.inp
msdos/sedlibmk.inp
nextstep/ChangeLog
nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
nt/ChangeLog
nt/config.nt
nt/inc/unistd.h
src/ChangeLog.10
src/ChangeLog.3
src/ChangeLog.trunk
src/bidi.c
src/bytecode.c
src/character.c
src/cmds.c
src/config.in
src/dired.c
src/dispextern.h
src/dispnew.c
src/editfns.c
src/fileio.c
src/filelock.c
src/font.c
src/frame.c
src/frame.h
src/indent.c
src/keymap.c
src/lisp.h
src/lread.c
src/minibuf.c
src/msdos.c
src/msdos.h
src/nsterm.m
src/print.c
src/s/msdos.h
src/scroll.c
src/sheap.c
src/w32.c
src/w32proc.c
src/w32term.c
src/window.c
src/window.h
src/xdisp.c
src/xrdb.c
test/ChangeLog
test/automated/ert-tests.el
test/eshell.el [moved from lisp/eshell/esh-test.el with 58% similarity]

index 13e3657bac3be665be46581ec2147738b68cf8a5..949862248bd7118e78d9218050d01c08a4119daa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,50 @@
+2011-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in (FREETYPE_LIBS): Actually set it to something.
+
+2011-03-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around some portability problems with symlinks.
+
+       * Makefile.in (GNULIB_MODULES): Add lstat, readlink, symlink.
+       * configure.in (lstat, HAVE_LSTAT): Remove special hack.
+       * lib/dosname.h, lib/lstat.c, lib/readlink.c, lib/stat.c:
+       * lib/symlink.c, m4/lstat.m4, m4/readlink.m4, m4/stat.m4:
+       * m4/symlink.m4:
+       New files, automatically generated from gnulib.
+       * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk:
+       * m4/gl-comp.m4, src/config.in, config.sub: Regenerate.
+
+2011-02-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * .bzrignore: Ignore new lib/*.in-h files.
+
+       * config.bat: Rename stdint.in.h and sys_stat.in.h.  Call
+       depfiles.bat even if lib/deps already exist.
+
+2011-02-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * configure, lib/Makefile.in, lib/getopt_int.h, lib/gnulib.mk:
+       * lib/stdlib.in.h, m4/stdlib_h.m4: Regenerate to incorporate
+       recent changes to configure.in and to gnulib.
+
+2011-02-24  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in: Replace obsolete AC_OUTPUT() with AC_CONFIG_FILES(),
+       AC_CONFIG_COMMANDS(), and AC_OUTPUT sans arguments.
+
+2011-02-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume S_ISLNK etc. work, since gnulib supports this.
+       * Makefile.in (GNULIB_MODULES): Add sys_stat.
+       * configure.in: Check for lstat and set HAVE_LSTAT=0 if not.
+       Pretend to be using the gnulib lstat module for benefit of sys/stat.h.
+       * configure, lib/Makefile.in, lib/gnulib.mk: Regenerate.
+
+2011-02-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/min-max.h: New file, for "min" and "max".
+
 2011-02-21  Christoph Scholtes  <cschol2112@gmail.com>
 
        * lib/makefile.w32-in: ($(BLD)/md5.$(O)): Added dependency on
 
        * Makefile.in (lib-src/Makefile, src/Makefile, oldXMenu/Makefile):
        Depend on vpath.sed.
-       Replace sed comand for VPATH with @vpath_sed@.
+       Replace sed command for VPATH with @vpath_sed@.
 
        * configure.in: Substitute variable `vpath_sed'.
        If not in $srcdir and $srcdir is configured,
        there, and then copy it in, to make sure we get a real file.
 
        * make-dist: Don't try to distribute *.defns files any more.  The
-       only such file was for simula.el, which has been superceded by a
+       only such file was for simula.el, which has been superseded by a
        version which doesn't have a separate .defns file.
 
 1992-05-28  Ken Raeburn  (Raeburn@Cygnus.COM)
index c5e1e62a32dd79ed5bcb3b0738e582564eaf48b5..710a73c7048a529a269b9354cb9e39a52ad0c9ca 100644 (file)
@@ -9,6 +9,10 @@ before bootstrapping:
 
   $ ./configure
 
+(Normally there is no need to run `autoconf' etc.  If you do need it,
+the relevant command is `autoreconf -I m4'.  Be aware that this will
+likely lead to conflicts next time you update from Bazaar.)
+
 Some of the files that are included in the Emacs tarball, such as
 byte-compiled Lisp files, are not stored in Bazaar.  Therefore, to
 build from Bazaar you must run "make bootstrap" instead of just "make":
index b18612418820a5672ec20d060f9731da28aae00a..7bd4318bfbaedebb237efaa7ce104999256d9dea 100644 (file)
@@ -332,7 +332,7 @@ DOS_gnulib_comp.m4 = gl-comp.m4
 # as per $(gnulib_srcdir)/DEPENDENCIES.
 GNULIB_MODULES = \
   crypto/md5 dtoastr filemode getloadavg getopt-gnu \
-  ignore-value mktime strftime
+  ignore-value lstat mktime readlink strftime symlink sys_stat
 GNULIB_TOOL_FLAGS = \
  --import --no-changelog --no-vc-files --makefile-name=gnulib.mk
 sync-from-gnulib: $(gnulib_srcdir)
index 880166dc34ef69156f43408565acf84f644af0ac..9fdc8e76c497d813cf39dba31d3eb2daea162f30 100644 (file)
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -994,15 +994,19 @@ m4_include([m4/gl-comp.m4])
 m4_include([m4/gnulib-common.m4])
 m4_include([m4/include_next.m4])
 m4_include([m4/longlong.m4])
+m4_include([m4/lstat.m4])
 m4_include([m4/md5.m4])
 m4_include([m4/mktime.m4])
 m4_include([m4/multiarch.m4])
+m4_include([m4/readlink.m4])
 m4_include([m4/st_dm_mode.m4])
+m4_include([m4/stat.m4])
 m4_include([m4/stdbool.m4])
 m4_include([m4/stddef_h.m4])
 m4_include([m4/stdint.m4])
 m4_include([m4/stdlib_h.m4])
 m4_include([m4/strftime.m4])
+m4_include([m4/symlink.m4])
 m4_include([m4/sys_stat_h.m4])
 m4_include([m4/time_h.m4])
 m4_include([m4/time_r.m4])
index 87ba151dc347f56969d1caadec8981f84ffe455b..f2c16b42e23c4ccea5d651dae16936cdbda2a26d 100644 (file)
@@ -1,3 +1,7 @@
+2011-02-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * notes/bugtracker (bugtracker_debbugs_url): Fix typo.
+
 2011-02-19  Eli Zaretskii  <eliz@gnu.org>
 
        * admin.el (set-version): Add msdos/sed2v2.inp.
index 77e64a862c8e42f1632e105b08ca60c3e3762e0e..33cbae22a6cfe5215e3afd5056018519af313fd1 100644 (file)
@@ -270,6 +270,9 @@ Does not make other difference."
           (sit-for 1)
           ;; (debug 'after-merge)
           ;; Check the conflicts.
+          ;; FIXME if using the helpful bzr changelog_merge plugin,
+          ;; there are normally no conflicts in ChangeLogs.
+          ;; But we still want the dates fixing, like bzrmerge-resolve does.
           (let ((conflicted nil)
                 (files ()))
             (goto-char (point-min))
index 02ca77bf7deb4a6719ceba1119b6200939bdccf7..f2805eae44392265bf4d5f8186e42288d9f968d9 100644 (file)
@@ -489,7 +489,7 @@ Here "{id}" is a literal string, a placeholder that will be replaced
 by the bug number you specify after `--fixes debbugs:' in the bzr
 command line (123 in the example above).
 
-In the bazaar.conf file, this setting should go into the [DEFAULTS]
+In the bazaar.conf file, this setting should go into the [DEFAULT]
 section.
 
 In the locations.conf file, it should go into the branch-specific
index 11f0af17a3b0f37538d6158f8bda7ae55d325280..db9e6e0dcdaa45f09801ff11dba636f206d69d37 100644 (file)
@@ -75,6 +75,14 @@ This will make merging ChangeLogs a lot smoother.  It merges new
 entries to the top of the file, rather than trying to fit them in
 mid-way through.
 
+Sigh.  This plugin has a drawback.  People often like to edit older
+ChangeLog entries, not at the head of the file.  Frequently they do
+this in the same commit as making new entries.  Using this plugin
+will merge ALL changed entries (including older ones) to the top of
+the destination file.
+
+Maybe the default Emacs behavior without this plugin is better, I dunno.
+
 1) Get clean, up-to-date copies of the emacs-23 and trunk branches.
 Check for any uncommitted changes with bzr status.
 
@@ -112,9 +120,17 @@ and is due to a technical limitation of bzr.  The log data for those
 revisions gets merged, the actual changes themselves do not.
 http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00609.html )
 
-Note that ChangeLog entries are automatically merged to the top with
-today's date, but you still might want to check them to see that too
-much is not being included, or whitespace between entries is not missing.
+In particular, check the ChangeLog entries (eg in case too many
+entries have been included or whitespace between entries needs fixing).
+bzrmerge tries to fix up the dates to today's date, but it only does
+this where there are conflicts.  If you used the changelog_merge plugin,
+there won't be any conflicts, and (at time of writing) you will need
+to adjust dates by hand.  In any case, if someone made multiple
+ChangeLog entries on different days in the branch, you may wish to
+collapse them all to a single entry for that author in the trunk
+(because in the trunk they all appear under the same date).
+Obviously, if there are multiple changes to the same file by different
+authors, don't break the logical ordering in doing this.
 
 Notes:
 
index 7ebfc74b801605b5cb355ce22550d192dfca1532..4288f6537e6ee37ebbd874a0dfcd15f21cc54c2c 100644 (file)
@@ -280,17 +280,20 @@ cd lib
 Rem Rename files like djtar on plain DOS filesystem would.\r
 If Exist c++defs.h update c++defs.h cxxdefs.h\r
 If Exist getopt.in.h update getopt.in.h getopt.in-h\r
-If Exist stddef.in.h update stddef.in.h  stddef.in-h\r
 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h\r
+If Exist stddef.in.h update stddef.in.h  stddef.in-h\r
+If Exist stdint.in.h update stdint.in.h  stdint.in-h\r
 If Exist stdlib.in.h update stdlib.in.h stdlib.in-h\r
+If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h\r
 If Exist time.in.h update time.in.h time.in-h\r
 If Exist unistd.in.h update unistd.in.h unistd.in-h\r
 sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp\r
 sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile\r
 rm -f makefile.tmp\r
+Rem Create .Po files for new files in lib/\r
 If Not Exist deps\stamp mkdir deps\r
-If Not Exist deps\stamp for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f\r
-If Not Exist deps\stamp echo deps-stamp > deps\stamp\r
+for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f\r
+echo deps-stamp > deps\stamp\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
 Echo Configuring the lisp directory...\r
index 83da3565c17d7ef5f890256687d59fc249d8b25b..0ef29b072ed43a34b43daf0df2a25d5928fcd71b 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
 #   2011 Free Software Foundation, Inc.
 
-timestamp='2011-02-02'
+timestamp='2011-02-24'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -76,7 +76,7 @@ version="\
 GNU config.sub ($timestamp)
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
 Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
index 16673f2ca79f5e6fe8c86d52e1a4bd3eb4e6ca06..b8a83e66779eb5e37e9f27b2ae2fabac2a7075b9 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for emacs 24.0.50.
+# Generated by GNU Autoconf 2.67 for emacs 24.0.50.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -89,7 +89,6 @@ fi
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -215,18 +214,11 @@ IFS=$as_save_IFS
   # We cannot yet assume a decent shell, so we have to provide a
        # neutralization value for shells without unset; and this also
        # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
        BASH_ENV=/dev/null
        ENV=/dev/null
        (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
        export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
 fi
 
     if test x$as_have_required = xno; then :
@@ -679,38 +671,6 @@ NEXT_AS_FIRST_DIRECTIVE_TIME_H
 NEXT_TIME_H
 NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H
 NEXT_SYS_STAT_H
-REPLACE_UTIMENSAT
-REPLACE_STAT
-REPLACE_MKNOD
-REPLACE_MKFIFO
-REPLACE_MKDIR
-REPLACE_LSTAT
-REPLACE_FUTIMENS
-REPLACE_FSTATAT
-REPLACE_FSTAT
-HAVE_UTIMENSAT
-HAVE_MKNODAT
-HAVE_MKNOD
-HAVE_MKFIFOAT
-HAVE_MKFIFO
-HAVE_MKDIRAT
-HAVE_LSTAT
-HAVE_LCHMOD
-HAVE_FUTIMENS
-HAVE_FSTATAT
-HAVE_FCHMODAT
-GNULIB_UTIMENSAT
-GNULIB_STAT
-GNULIB_MKNODAT
-GNULIB_MKNOD
-GNULIB_MKFIFOAT
-GNULIB_MKFIFO
-GNULIB_MKDIRAT
-GNULIB_LSTAT
-GNULIB_LCHMOD
-GNULIB_FUTIMENS
-GNULIB_FSTATAT
-GNULIB_FCHMODAT
 NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
 NEXT_STDLIB_H
 STDINT_H
@@ -758,6 +718,38 @@ GNULIB_TIMEGM
 GNULIB_STRPTIME
 GNULIB_NANOSLEEP
 GNULIB_MKTIME
+REPLACE_UTIMENSAT
+REPLACE_STAT
+REPLACE_MKNOD
+REPLACE_MKFIFO
+REPLACE_MKDIR
+REPLACE_LSTAT
+REPLACE_FUTIMENS
+REPLACE_FSTATAT
+REPLACE_FSTAT
+HAVE_UTIMENSAT
+HAVE_MKNODAT
+HAVE_MKNOD
+HAVE_MKFIFOAT
+HAVE_MKFIFO
+HAVE_MKDIRAT
+HAVE_LSTAT
+HAVE_LCHMOD
+HAVE_FUTIMENS
+HAVE_FSTATAT
+HAVE_FCHMODAT
+GNULIB_UTIMENSAT
+GNULIB_STAT
+GNULIB_MKNODAT
+GNULIB_MKNOD
+GNULIB_MKFIFOAT
+GNULIB_MKFIFO
+GNULIB_MKDIRAT
+GNULIB_LSTAT
+GNULIB_LCHMOD
+GNULIB_FUTIMENS
+GNULIB_FSTATAT
+GNULIB_FCHMODAT
 LTLIBINTL
 LIBINTL
 GETOPT_H
@@ -874,6 +866,7 @@ GNULIB_DUP2
 GNULIB_CLOSE
 GNULIB_CHOWN
 GETLOADAVG_LIBS
+REPLACE_WCTOMB
 REPLACE_UNSETENV
 REPLACE_STRTOD
 REPLACE_SETENV
@@ -881,6 +874,7 @@ REPLACE_REALPATH
 REPLACE_REALLOC
 REPLACE_PUTENV
 REPLACE_MKSTEMP
+REPLACE_MBTOWC
 REPLACE_MALLOC
 REPLACE_CANONICALIZE_FILE_NAME
 REPLACE_CALLOC
@@ -909,6 +903,7 @@ HAVE_DECL_GETLOADAVG
 HAVE_CANONICALIZE_FILE_NAME
 HAVE_ATOLL
 HAVE__EXIT
+GNULIB_WCTOMB
 GNULIB_UNSETENV
 GNULIB_UNLOCKPT
 GNULIB_SYSTEM_POSIX
@@ -927,6 +922,7 @@ GNULIB_MKSTEMP
 GNULIB_MKOSTEMPS
 GNULIB_MKOSTEMP
 GNULIB_MKDTEMP
+GNULIB_MBTOWC
 GNULIB_MALLOC_POSIX
 GNULIB_GRANTPT
 GNULIB_GETSUBOPT
@@ -950,12 +946,12 @@ LIBTIFF
 LIBPNG
 LIBJPEG
 LIBXPM
-FREETYPE_LIBS
-FREETYPE_CFLAGS
 M17N_FLT_LIBS
 M17N_FLT_CFLAGS
 LIBOTF_LIBS
 LIBOTF_CFLAGS
+FREETYPE_LIBS
+FREETYPE_CFLAGS
 XFT_LIBS
 XFT_CFLAGS
 FONTCONFIG_LIBS
@@ -1161,9 +1157,6 @@ LDFLAGS
 LIBS
 CPPFLAGS
 CPP
-CPPFLAGS
-CPP
-CPPFLAGS
 XMKMF'
 
 
@@ -1569,7 +1562,7 @@ Try \`$0 --help' for more information"
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
   esac
@@ -1846,7 +1839,7 @@ Optional Packages:
                           don't use Motif or Xaw3d scroll bars
   --without-xaw3d         don't use Xaw3d
   --without-xim           don't use X11 XIM
-  --with-ns               use nextstep (Cocoa or GNUstep) windowing system
+  --with-ns               use NeXTstep (Cocoa or GNUstep) windowing system
   --without-gpm           don't use -lgpm for mouse support on a GNU/Linux
                           console
   --without-dbus          don't compile with D-Bus support
@@ -1943,7 +1936,7 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 emacs configure 24.0.50
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.67
 
 Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1989,7 +1982,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=1
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_compile
@@ -2026,7 +2019,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
     ac_retval=1
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_cpp
@@ -2039,10 +2032,10 @@ fi
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
+  if eval "test \"\${$3+set}\"" = set; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -2105,7 +2098,7 @@ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -2114,7 +2107,7 @@ eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_header_mongrel
 
@@ -2155,7 +2148,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
        ac_retval=$ac_status
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_run
@@ -2169,7 +2162,7 @@ ac_fn_c_check_header_compile ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2187,7 +2180,7 @@ fi
 eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_header_compile
 
@@ -2232,7 +2225,7 @@ fi
   # interfere with the next link command; also delete a directory that is
   # left behind by Apple's compiler.  We do this before executing the actions.
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_link
@@ -2248,7 +2241,7 @@ ac_fn_c_check_decl ()
   as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
 $as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2279,7 +2272,7 @@ fi
 eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_decl
 
@@ -2291,7 +2284,7 @@ ac_fn_c_check_header_preproc ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2308,7 +2301,7 @@ fi
 eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_header_preproc
 
@@ -2321,7 +2314,7 @@ ac_fn_c_check_member ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
 $as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
+if eval "test \"\${$4+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2365,7 +2358,7 @@ fi
 eval ac_res=\$$4
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_member
 
@@ -2377,7 +2370,7 @@ ac_fn_c_check_func ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2432,7 +2425,7 @@ fi
 eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_func
 
@@ -2445,7 +2438,7 @@ ac_fn_c_check_type ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -2486,7 +2479,7 @@ fi
 eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_type
 
@@ -2663,7 +2656,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 rm -f conftest.val
 
   fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_compute_int
@@ -2672,7 +2665,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by emacs $as_me 24.0.50, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -2930,7 +2923,7 @@ $as_echo "$as_me: loading site script $ac_site_file" >&6;}
       || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
@@ -2956,10 +2949,13 @@ as_fn_append ac_header_list " unistd.h"
 as_fn_append ac_header_list " sys/param.h"
 gl_getopt_required=GNU
 as_fn_append ac_header_list " getopt.h"
+as_fn_append ac_func_list " lstat"
 as_fn_append ac_func_list " alarm"
+as_fn_append ac_func_list " readlink"
 as_fn_append ac_header_list " wchar.h"
 as_fn_append ac_header_list " stdint.h"
 as_fn_append ac_func_list " tzset"
+as_fn_append ac_func_list " symlink"
 as_fn_append ac_header_list " sys/stat.h"
 as_fn_append ac_header_list " sys/time.h"
 as_fn_append ac_func_list " localtime_r"
@@ -3082,7 +3078,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
+if test "${ac_cv_path_install+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3169,11 +3165,11 @@ am_lf='
 '
 case `pwd` in
   *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
 esac
 
 # Do `set' in a subshell so we don't clobber the current shell's
@@ -3259,7 +3255,7 @@ if test "$cross_compiling" != no; then
 set dummy ${ac_tool_prefix}strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
+if test "${ac_cv_prog_STRIP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -3299,7 +3295,7 @@ if test -z "$ac_cv_prog_STRIP"; then
 set dummy strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -3352,7 +3348,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
 if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
+  if test "${ac_cv_path_mkdir+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3404,7 +3400,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
+if test "${ac_cv_prog_AWK+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -3444,7 +3440,7 @@ done
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -4002,7 +3998,7 @@ do
        stringfreelist) ac_gc_check_string_free_list=1 ;;
        xmallocoverrun) ac_xmalloc_overrun=1 ;;
        conslist)       ac_gc_check_cons_list=1 ;;
-       *)      as_fn_error $? "unknown check category $check" "$LINENO" 5 ;;
+       *)      as_fn_error $? "unknown check category $check" "$LINENO" 5  ;;
        esac
 done
 IFS="$ac_save_IFS"
@@ -4121,7 +4117,7 @@ $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
+if test "${ac_cv_build+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
@@ -4137,7 +4133,7 @@ fi
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -4155,7 +4151,7 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
 $as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
+if test "${ac_cv_host+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
@@ -4170,7 +4166,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -4452,7 +4448,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4492,7 +4488,7 @@ if test -z "$ac_cv_prog_CC"; then
 set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4545,7 +4541,7 @@ if test -z "$CC"; then
 set dummy ${ac_tool_prefix}cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4585,7 +4581,7 @@ if test -z "$CC"; then
 set dummy cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4644,7 +4640,7 @@ if test -z "$CC"; then
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4688,7 +4684,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4743,7 +4739,7 @@ fi
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -4858,7 +4854,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -4901,7 +4897,7 @@ else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -4960,7 +4956,7 @@ $as_echo "$ac_try_echo"; } >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
     fi
   fi
 fi
@@ -4971,7 +4967,7 @@ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
 ac_clean_files=$ac_clean_files_save
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 $as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
+if test "${ac_cv_objext+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5012,7 +5008,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -5022,7 +5018,7 @@ OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5059,7 +5055,7 @@ ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
+if test "${ac_cv_prog_cc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -5137,7 +5133,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -5298,7 +5294,7 @@ depcc="$CC"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -5430,7 +5426,7 @@ $as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
 set dummy $CC; ac_cc=`$as_echo "$2" |
                      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5554,7 +5550,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -5594,7 +5590,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
 set dummy ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -5654,7 +5650,7 @@ if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
+  if test "${ac_cv_prog_CPP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -5770,7 +5766,7 @@ else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -5782,7 +5778,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
+if test "${ac_cv_path_GREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -5845,7 +5841,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+if test "${ac_cv_path_EGREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -5912,7 +5908,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
+if test "${ac_cv_header_stdc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6043,7 +6039,7 @@ done
 
 
   ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
   MINIX=yes
 else
   MINIX=
@@ -6073,7 +6069,7 @@ $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6121,6 +6117,7 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
   # Code from module arg-nonnull:
   # Code from module c++defs:
   # Code from module crypto/md5:
+  # Code from module dosname:
   # Code from module dtoastr:
   # Code from module extensions:
 
@@ -6132,13 +6129,17 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
   # Code from module ignore-value:
   # Code from module include_next:
   # Code from module intprops:
+  # Code from module lstat:
   # Code from module mktime:
   # Code from module multiarch:
+  # Code from module readlink:
+  # Code from module stat:
   # Code from module stdbool:
   # Code from module stddef:
   # Code from module stdint:
   # Code from module stdlib:
   # Code from module strftime:
+  # Code from module symlink:
   # Code from module sys_stat:
   # Code from module time:
   # Code from module time_r:
@@ -6157,7 +6158,7 @@ if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
  test x"$CPP" = x; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using a Sun C compiler" >&5
 $as_echo_n "checking whether we are using a Sun C compiler... " >&6; }
-  if ${emacs_cv_sunpro_c+:} false; then :
+  if test "${emacs_cv_sunpro_c+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6325,7 +6326,7 @@ if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
+  if test "${ac_cv_prog_CPP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -6441,7 +6442,7 @@ else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -6457,7 +6458,7 @@ if test "x$RANLIB" = x; then
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -6497,7 +6498,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
 set dummy ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -6552,7 +6553,7 @@ fi
 ## is running in i386 mode, we can help them out.
 if test "$machine" = "amdx86-64"; then
   ac_fn_c_check_decl "$LINENO" "i386" "ac_cv_have_decl_i386" "$ac_includes_default"
-if test "x$ac_cv_have_decl_i386" = xyes; then :
+if test "x$ac_cv_have_decl_i386" = x""yes; then :
 
 fi
 
@@ -6567,7 +6568,7 @@ fi
 set dummy install-info; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_INSTALL_INFO+:} false; then :
+if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $INSTALL_INFO in
@@ -6607,7 +6608,7 @@ fi
 set dummy install-info; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_INSTALL_INFO+:} false; then :
+if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $INSTALL_INFO in
@@ -6647,7 +6648,7 @@ fi
 set dummy install-info; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_INSTALL_INFO+:} false; then :
+if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $INSTALL_INFO in
@@ -6688,7 +6689,7 @@ fi
 set dummy gzip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GZIP_PROG+:} false; then :
+if test "${ac_cv_path_GZIP_PROG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $GZIP_PROG in
@@ -6731,7 +6732,7 @@ fi
 set dummy makeinfo; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MAKEINFO+:} false; then :
+if test "${ac_cv_path_MAKEINFO+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAKEINFO in
@@ -6937,7 +6938,7 @@ esac
 C_SWITCH_MACHINE=
 if test "$machine" = "alpha"; then
   ac_fn_c_check_decl "$LINENO" "__ELF__" "ac_cv_have_decl___ELF__" "$ac_includes_default"
-if test "x$ac_cv_have_decl___ELF__" = xyes; then :
+if test "x$ac_cv_have_decl___ELF__" = x""yes; then :
 
 fi
 
@@ -7005,7 +7006,7 @@ if test "$enable_largefile" != no; then
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
 $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_sys_largefile_CC=no
@@ -7056,7 +7057,7 @@ $as_echo "$ac_cv_sys_largefile_CC" >&6; }
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -7125,7 +7126,7 @@ rm -rf conftest*
   if test $ac_cv_sys_file_offset_bits = unknown; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
+if test "${ac_cv_sys_large_files+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -7293,7 +7294,7 @@ done
   # Emulation library used on NetBSD.
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
 $as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; }
-if ${ac_cv_lib_ossaudio__oss_ioctl+:} false; then :
+if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -7327,7 +7328,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5
 $as_echo "$ac_cv_lib_ossaudio__oss_ioctl" >&6; }
-if test "x$ac_cv_lib_ossaudio__oss_ioctl" = xyes; then :
+if test "x$ac_cv_lib_ossaudio__oss_ioctl" = x""yes; then :
   LIBSOUND=-lossaudio
 else
   LIBSOUND=
@@ -7344,7 +7345,7 @@ fi
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -7548,7 +7549,7 @@ fi
 for ac_header in term.h
 do :
   ac_fn_c_check_header_preproc "$LINENO" "term.h" "ac_cv_header_term_h"
-if test "x$ac_cv_header_term_h" = xyes; then :
+if test "x$ac_cv_header_term_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_TERM_H 1
 _ACEOF
@@ -7559,7 +7560,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
+if test "${ac_cv_header_stdc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7671,7 +7672,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
+if test "${ac_cv_header_time+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7705,7 +7706,7 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 fi
 
 ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default"
-if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
+if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -7718,7 +7719,7 @@ _ACEOF
 if test $ac_cv_have_decl_sys_siglist != yes; then
   # For Tru64, at least:
   ac_fn_c_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default"
-if test "x$ac_cv_have_decl___sys_siglist" = xyes; then :
+if test "x$ac_cv_have_decl___sys_siglist" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -7736,7 +7737,7 @@ $as_echo "#define sys_siglist __sys_siglist" >>confdefs.h
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if ${ac_cv_header_sys_wait_h+:} false; then :
+if test "${ac_cv_header_sys_wait_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7778,7 +7779,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct utimbuf" >&5
 $as_echo_n "checking for struct utimbuf... " >&6; }
-if ${emacs_cv_struct_utimbuf+:} false; then :
+if test "${emacs_cv_struct_utimbuf+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7821,7 +7822,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
 $as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
+if test "${ac_cv_type_signal+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7855,7 +7856,7 @@ _ACEOF
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t" >&5
 $as_echo_n "checking for speed_t... " >&6; }
-if ${emacs_cv_speed_t+:} false; then :
+if test "${emacs_cv_speed_t+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7886,7 +7887,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
 $as_echo_n "checking for struct timeval... " >&6; }
-if ${emacs_cv_struct_timeval+:} false; then :
+if test "${emacs_cv_struct_timeval+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7927,7 +7928,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct exception" >&5
 $as_echo_n "checking for struct exception... " >&6; }
-if ${emacs_cv_struct_exception+:} false; then :
+if test "${emacs_cv_struct_exception+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7960,7 +7961,7 @@ fi
 for ac_header in sys/socket.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_socket_h" = xyes; then :
+if test "x$ac_cv_header_sys_socket_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SYS_SOCKET_H 1
 _ACEOF
@@ -7976,7 +7977,7 @@ do :
 #include <sys/socket.h>
 #endif
 "
-if test "x$ac_cv_header_net_if_h" = xyes; then :
+if test "x$ac_cv_header_net_if_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_NET_IF_H 1
 _ACEOF
@@ -7988,7 +7989,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if ${ac_cv_struct_tm+:} false; then :
+if test "${ac_cv_struct_tm+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8025,7 +8026,7 @@ ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_
 #include <$ac_cv_struct_tm>
 
 "
-if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_TM_TM_ZONE 1
@@ -8041,7 +8042,7 @@ $as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
 else
   ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
 "
-if test "x$ac_cv_have_decl_tzname" = xyes; then :
+if test "x$ac_cv_have_decl_tzname" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -8053,7 +8054,7 @@ _ACEOF
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
 $as_echo_n "checking for tzname... " >&6; }
-if ${ac_cv_var_tzname+:} false; then :
+if test "${ac_cv_var_tzname+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8090,7 +8091,7 @@ fi
 
 ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
 "
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
 
 $as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
 
@@ -8104,7 +8105,7 @@ ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_flags" "ac_cv_member_struct_i
 #include <net/if.h>
 #endif
 "
-if test "x$ac_cv_member_struct_ifreq_ifr_flags" = xyes; then :
+if test "x$ac_cv_member_struct_ifreq_ifr_flags" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_IFREQ_IFR_FLAGS 1
@@ -8120,7 +8121,7 @@ ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_hwaddr" "ac_cv_member_struct_
 #include <net/if.h>
 #endif
 "
-if test "x$ac_cv_member_struct_ifreq_ifr_hwaddr" = xyes; then :
+if test "x$ac_cv_member_struct_ifreq_ifr_hwaddr" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_IFREQ_IFR_HWADDR 1
@@ -8136,7 +8137,7 @@ ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_netmask" "ac_cv_member_struct
 #include <net/if.h>
 #endif
 "
-if test "x$ac_cv_member_struct_ifreq_ifr_netmask" = xyes; then :
+if test "x$ac_cv_member_struct_ifreq_ifr_netmask" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_IFREQ_IFR_NETMASK 1
@@ -8152,7 +8153,7 @@ ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_broadaddr" "ac_cv_member_stru
 #include <net/if.h>
 #endif
 "
-if test "x$ac_cv_member_struct_ifreq_ifr_broadaddr" = xyes; then :
+if test "x$ac_cv_member_struct_ifreq_ifr_broadaddr" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_IFREQ_IFR_BROADADDR 1
@@ -8168,7 +8169,7 @@ ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_addr" "ac_cv_member_struct_if
 #include <net/if.h>
 #endif
 "
-if test "x$ac_cv_member_struct_ifreq_ifr_addr" = xyes; then :
+if test "x$ac_cv_member_struct_ifreq_ifr_addr" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_IFREQ_IFR_ADDR 1
@@ -8197,7 +8198,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
 $as_echo_n "checking for working volatile... " >&6; }
-if ${ac_cv_c_volatile+:} false; then :
+if test "${ac_cv_c_volatile+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8231,7 +8232,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
+if test "${ac_cv_c_const+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8311,7 +8312,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for void * support" >&5
 $as_echo_n "checking for void * support... " >&6; }
-if ${emacs_cv_void_star+:} false; then :
+if test "${emacs_cv_void_star+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8344,7 +8345,7 @@ fi
 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
 $as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
+if test "${ac_cv_c_bigendian+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_bigendian=unknown
@@ -8563,13 +8564,13 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
      ;; #(
    *)
      as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
  esac
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for  __attribute__ ((__aligned__ (expr)))" >&5
 $as_echo_n "checking for  __attribute__ ((__aligned__ (expr)))... " >&6; }
-if ${emacs_cv_attribute_aligned+:} false; then :
+if test "${emacs_cv_attribute_aligned+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8602,7 +8603,7 @@ fi
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -8690,7 +8691,7 @@ deps_frag=$srcdir/src/$deps_frag
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long file names" >&5
 $as_echo_n "checking for long file names... " >&6; }
-if ${ac_cv_sys_long_file_names+:} false; then :
+if test "${ac_cv_sys_long_file_names+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_sys_long_file_names=yes
@@ -8746,8 +8747,8 @@ if test "x$with_x" = xno; then
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
-    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #(
+    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # One or both of the vars are not set, and there is no cached value.
@@ -9030,7 +9031,7 @@ if test "${with_ns}" != no; then
      TEMACS_LDFLAGS2=
   fi
   ac_fn_c_check_header_mongrel "$LINENO" "AppKit/AppKit.h" "ac_cv_header_AppKit_AppKit_h" "$ac_includes_default"
-if test "x$ac_cv_header_AppKit_AppKit_h" = xyes; then :
+if test "x$ac_cv_header_AppKit_AppKit_h" = x""yes; then :
   HAVE_NS=yes
 else
   as_fn_error $? "\`--with-ns' was specified, but the include
@@ -9115,7 +9116,7 @@ if test "$window_system" = none && test "X$with_x" != "Xno"; then
 set dummy X; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_HAVE_XSERVER+:} false; then :
+if test "${ac_cv_prog_HAVE_XSERVER+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$HAVE_XSERVER"; then
@@ -9174,14 +9175,14 @@ esac
 GNU_MALLOC=yes
 doug_lea_malloc=yes
 ac_fn_c_check_func "$LINENO" "malloc_get_state" "ac_cv_func_malloc_get_state"
-if test "x$ac_cv_func_malloc_get_state" = xyes; then :
+if test "x$ac_cv_func_malloc_get_state" = x""yes; then :
 
 else
   doug_lea_malloc=no
 fi
 
 ac_fn_c_check_func "$LINENO" "malloc_set_state" "ac_cv_func_malloc_set_state"
-if test "x$ac_cv_func_malloc_set_state" = xyes; then :
+if test "x$ac_cv_func_malloc_set_state" = x""yes; then :
 
 else
   doug_lea_malloc=no
@@ -9189,7 +9190,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __after_morecore_hook exists" >&5
 $as_echo_n "checking whether __after_morecore_hook exists... " >&6; }
-if ${emacs_cv_var___after_morecore_hook+:} false; then :
+if test "${emacs_cv_var___after_morecore_hook+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9294,7 +9295,7 @@ done
 for ac_func in getpagesize
 do :
   ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
+if test "x$ac_cv_func_getpagesize" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETPAGESIZE 1
 _ACEOF
@@ -9304,7 +9305,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
 $as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -9479,7 +9480,7 @@ LIBS="$LIBS_SYSTEM $LIBS"
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
-if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -9513,7 +9514,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBDNET 1
 _ACEOF
@@ -9525,7 +9526,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lXbsd" >&5
 $as_echo_n "checking for main in -lXbsd... " >&6; }
-if ${ac_cv_lib_Xbsd_main+:} false; then :
+if test "${ac_cv_lib_Xbsd_main+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -9553,14 +9554,14 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xbsd_main" >&5
 $as_echo "$ac_cv_lib_Xbsd_main" >&6; }
-if test "x$ac_cv_lib_Xbsd_main" = xyes; then :
+if test "x$ac_cv_lib_Xbsd_main" = x""yes; then :
   LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd"
 fi
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cma_open in -lpthreads" >&5
 $as_echo_n "checking for cma_open in -lpthreads... " >&6; }
-if ${ac_cv_lib_pthreads_cma_open+:} false; then :
+if test "${ac_cv_lib_pthreads_cma_open+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -9594,7 +9595,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_cma_open" >&5
 $as_echo "$ac_cv_lib_pthreads_cma_open" >&6; }
-if test "x$ac_cv_lib_pthreads_cma_open" = xyes; then :
+if test "x$ac_cv_lib_pthreads_cma_open" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBPTHREADS 1
 _ACEOF
@@ -9621,7 +9622,7 @@ case ${host_os} in
 aix*)
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -bbigtoc option" >&5
 $as_echo_n "checking for -bbigtoc option... " >&6; }
-if ${gdb_cv_bigtoc+:} false; then :
+if test "${gdb_cv_bigtoc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -9795,7 +9796,7 @@ fi
 if test "${window_system}" = "x11"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking X11 version 6" >&5
 $as_echo_n "checking X11 version 6... " >&6; }
-  if ${emacs_cv_x11_version_6+:} false; then :
+  if test "${emacs_cv_x11_version_6+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9860,7 +9861,7 @@ if test "${HAVE_X11}" = "yes" || test "${NS_IMPL_GNUSTEP}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -9971,7 +9972,7 @@ if test "${HAVE_X11}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10070,7 +10071,7 @@ $as_echo "#define HAVE_IMAGEMAGICK 1" >>confdefs.h
       for ac_func in MagickExportImagePixels
 do :
   ac_fn_c_check_func "$LINENO" "MagickExportImagePixels" "ac_cv_func_MagickExportImagePixels"
-if test "x$ac_cv_func_MagickExportImagePixels" = xyes; then :
+if test "x$ac_cv_func_MagickExportImagePixels" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_MAGICKEXPORTIMAGEPIXELS 1
 _ACEOF
@@ -10096,7 +10097,7 @@ if test "${with_gtk3}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10202,7 +10203,7 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10307,7 +10308,7 @@ if test x"$pkg_check_gtk" = xyes; then
   for ac_func in gtk_main
 do :
   ac_fn_c_check_func "$LINENO" "gtk_main" "ac_cv_func_gtk_main"
-if test "x$ac_cv_func_gtk_main" = xyes; then :
+if test "x$ac_cv_func_gtk_main" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GTK_MAIN 1
 _ACEOF
@@ -10317,7 +10318,7 @@ done
 
   if test "${GTK_COMPILES}" != "yes"; then
     if test "$USE_X_TOOLKIT" != "maybe"; then
-      as_fn_error $? "Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" "$LINENO" 5;
+      as_fn_error $? "Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" "$LINENO" 5 ;
     fi
   else
     HAVE_GTK=yes
@@ -10355,7 +10356,7 @@ if test "${HAVE_GTK}" = "yes"; then
   ac_fn_c_check_decl "$LINENO" "GTK_TYPE_FILE_SELECTION" "ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" "$ac_includes_default
 #include <gtk/gtk.h>
 "
-if test "x$ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" = xyes; then :
+if test "x$ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" = x""yes; then :
   HAVE_GTK_FILE_SELECTION=yes
 else
   HAVE_GTK_FILE_SELECTION=no
@@ -10365,7 +10366,7 @@ fi
     for ac_func in gtk_file_selection_new
 do :
   ac_fn_c_check_func "$LINENO" "gtk_file_selection_new" "ac_cv_func_gtk_file_selection_new"
-if test "x$ac_cv_func_gtk_file_selection_new" = xyes; then :
+if test "x$ac_cv_func_gtk_file_selection_new" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GTK_FILE_SELECTION_NEW 1
 _ACEOF
@@ -10379,7 +10380,7 @@ done
     for ac_header in pthread.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
+if test "x$ac_cv_header_pthread_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_PTHREAD_H 1
 _ACEOF
@@ -10391,7 +10392,7 @@ done
     if test "$ac_cv_header_pthread_h"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
 $as_echo_n "checking for pthread_self in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_self+:} false; then :
+if test "${ac_cv_lib_pthread_pthread_self+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -10425,7 +10426,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_self" >&5
 $as_echo "$ac_cv_lib_pthread_pthread_self" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_self" = xyes; then :
+if test "x$ac_cv_lib_pthread_pthread_self" = x""yes; then :
   HAVE_GTK_AND_PTHREAD=yes
 fi
 
@@ -10468,7 +10469,7 @@ if test "${with_dbus}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10563,7 +10564,7 @@ $as_echo "#define HAVE_DBUS 1" >>confdefs.h
      for ac_func in dbus_watch_get_unix_fd
 do :
   ac_fn_c_check_func "$LINENO" "dbus_watch_get_unix_fd" "ac_cv_func_dbus_watch_get_unix_fd"
-if test "x$ac_cv_func_dbus_watch_get_unix_fd" = xyes; then :
+if test "x$ac_cv_func_dbus_watch_get_unix_fd" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_DBUS_WATCH_GET_UNIX_FD 1
 _ACEOF
@@ -10585,7 +10586,7 @@ if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10679,7 +10680,7 @@ $as_echo "#define HAVE_GCONF 1" >>confdefs.h
             for ac_func in g_type_init
 do :
   ac_fn_c_check_func "$LINENO" "g_type_init" "ac_cv_func_g_type_init"
-if test "x$ac_cv_func_g_type_init" = xyes; then :
+if test "x$ac_cv_func_g_type_init" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_G_TYPE_INIT 1
 _ACEOF
@@ -10695,7 +10696,7 @@ LIBSELINUX_LIBS=
 if test "${with_selinux}" = "yes"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lgetfilecon in -lselinux" >&5
 $as_echo_n "checking for lgetfilecon in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_lgetfilecon+:} false; then :
+if test "${ac_cv_lib_selinux_lgetfilecon+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -10729,7 +10730,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_lgetfilecon" >&5
 $as_echo "$ac_cv_lib_selinux_lgetfilecon" >&6; }
-if test "x$ac_cv_lib_selinux_lgetfilecon" = xyes; then :
+if test "x$ac_cv_lib_selinux_lgetfilecon" = x""yes; then :
   HAVE_LIBSELINUX=yes
 else
   HAVE_LIBSELINUX=no
@@ -10753,7 +10754,7 @@ if test "${with_gnutls}" = "yes" ; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -10855,7 +10856,7 @@ if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
   if test "$with_xaw3d" != no; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xaw3d" >&5
 $as_echo_n "checking for xaw3d... " >&6; }
-    if ${emacs_cv_xaw3d+:} false; then :
+    if test "${emacs_cv_xaw3d+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10874,7 +10875,7 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XawScrollbarSetThumb in -lXaw3d" >&5
 $as_echo_n "checking for XawScrollbarSetThumb in -lXaw3d... " >&6; }
-if ${ac_cv_lib_Xaw3d_XawScrollbarSetThumb+:} false; then :
+if test "${ac_cv_lib_Xaw3d_XawScrollbarSetThumb+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -10908,7 +10909,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&5
 $as_echo "$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&6; }
-if test "x$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" = xyes; then :
+if test "x$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" = x""yes; then :
   emacs_cv_xaw3d=yes
 else
   emacs_cv_xaw3d=no
@@ -10938,7 +10939,7 @@ $as_echo "#define HAVE_XAW3D 1" >>confdefs.h
 $as_echo "no" >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libXaw" >&5
 $as_echo_n "checking for libXaw... " >&6; }
-    if ${emacs_cv_xaw+:} false; then :
+    if test "${emacs_cv_xaw+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10984,7 +10985,7 @@ LIBXTR6=
 if test "${USE_X_TOOLKIT}" != "none"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking X11 toolkit version" >&5
 $as_echo_n "checking X11 toolkit version... " >&6; }
-  if ${emacs_cv_x11_toolkit_version_6+:} false; then :
+  if test "${emacs_cv_x11_toolkit_version_6+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11035,7 +11036,7 @@ $as_echo "before 6" >&6; }
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuConvertStandardSelection in -lXmu" >&5
 $as_echo_n "checking for XmuConvertStandardSelection in -lXmu... " >&6; }
-if ${ac_cv_lib_Xmu_XmuConvertStandardSelection+:} false; then :
+if test "${ac_cv_lib_Xmu_XmuConvertStandardSelection+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11069,7 +11070,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuConvertStandardSelection" >&5
 $as_echo "$ac_cv_lib_Xmu_XmuConvertStandardSelection" >&6; }
-if test "x$ac_cv_lib_Xmu_XmuConvertStandardSelection" = xyes; then :
+if test "x$ac_cv_lib_Xmu_XmuConvertStandardSelection" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBXMU 1
 _ACEOF
@@ -11096,7 +11097,7 @@ if test "${HAVE_X11}" = "yes"; then
   if test "${USE_X_TOOLKIT}" != "none"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5
 $as_echo_n "checking for XShapeQueryExtension in -lXext... " >&6; }
-if ${ac_cv_lib_Xext_XShapeQueryExtension+:} false; then :
+if test "${ac_cv_lib_Xext_XShapeQueryExtension+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11130,7 +11131,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
 $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
-if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = xyes; then :
+if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBXEXT 1
 _ACEOF
@@ -11146,7 +11147,7 @@ LIBXP=
 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Motif version 2.1" >&5
 $as_echo_n "checking for Motif version 2.1... " >&6; }
-if ${emacs_cv_motif_version_2_1+:} false; then :
+if test "${emacs_cv_motif_version_2_1+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11176,7 +11177,7 @@ $as_echo "$emacs_cv_motif_version_2_1" >&6; }
   if test $emacs_cv_motif_version_2_1 = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpCreateContext in -lXp" >&5
 $as_echo_n "checking for XpCreateContext in -lXp... " >&6; }
-if ${ac_cv_lib_Xp_XpCreateContext+:} false; then :
+if test "${ac_cv_lib_Xp_XpCreateContext+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11210,14 +11211,14 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpCreateContext" >&5
 $as_echo "$ac_cv_lib_Xp_XpCreateContext" >&6; }
-if test "x$ac_cv_lib_Xp_XpCreateContext" = xyes; then :
+if test "x$ac_cv_lib_Xp_XpCreateContext" = x""yes; then :
   LIBXP=-lXp
 fi
 
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LessTif where some systems put it" >&5
 $as_echo_n "checking for LessTif where some systems put it... " >&6; }
-if ${emacs_cv_lesstif+:} false; then :
+if test "${emacs_cv_lesstif+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # We put this in CFLAGS temporarily to precede other -I options
@@ -11376,7 +11377,7 @@ if test "${HAVE_X11}" = "yes"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -11478,7 +11479,7 @@ $as_echo "no" >&6; }
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -11570,7 +11571,7 @@ $as_echo "no" >&6; }
       HAVE_XRENDER=no
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRenderQueryExtension in -lXrender" >&5
 $as_echo_n "checking for XRenderQueryExtension in -lXrender... " >&6; }
-if ${ac_cv_lib_Xrender_XRenderQueryExtension+:} false; then :
+if test "${ac_cv_lib_Xrender_XRenderQueryExtension+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11604,7 +11605,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xrender_XRenderQueryExtension" >&5
 $as_echo "$ac_cv_lib_Xrender_XRenderQueryExtension" >&6; }
-if test "x$ac_cv_lib_Xrender_XRenderQueryExtension" = xyes; then :
+if test "x$ac_cv_lib_Xrender_XRenderQueryExtension" = x""yes; then :
   HAVE_XRENDER=yes
 fi
 
        XFT_LIBS="-lXrender $XFT_LIBS"
        LIBS="$XFT_LIBS $LIBS"
        ac_fn_c_check_header_mongrel "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default"
-if test "x$ac_cv_header_X11_Xft_Xft_h" = xyes; then :
+if test "x$ac_cv_header_X11_Xft_Xft_h" = x""yes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XftFontOpen in -lXft" >&5
 $as_echo_n "checking for XftFontOpen in -lXft... " >&6; }
-if ${ac_cv_lib_Xft_XftFontOpen+:} false; then :
+if test "${ac_cv_lib_Xft_XftFontOpen+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11654,7 +11655,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xft_XftFontOpen" >&5
 $as_echo "$ac_cv_lib_Xft_XftFontOpen" >&6; }
-if test "x$ac_cv_lib_Xft_XftFontOpen" = xyes; then :
+if test "x$ac_cv_lib_Xft_XftFontOpen" = x""yes; then :
   HAVE_XFT=yes
 fi
 
@@ -11676,13 +11677,109 @@ $as_echo "#define HAVE_XFT 1" >>confdefs.h
       fi                          # "$HAVE_XFT" != no
     fi                            # "x${with_xft}" != "xno"
 
-        if test "$HAVE_XFT" != "yes"; then
-       HAVE_XFT=no
-    fi
-
     ## We used to allow building with FreeType and without Xft.
     ## However, the ftx font backend driver is not in good shape.
-    HAVE_FREETYPE=$HAVE_XFT
+    if test "$HAVE_XFT" != "yes"; then
+              HAVE_XFT=no
+       HAVE_FREETYPE=no
+    else
+
+  succeeded=no
+
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+  if test "$PKG_CONFIG" = "no" ; then
+     HAVE_FREETYPE=no
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5
+$as_echo_n "checking for freetype2... " >&6; }
+
+        if $PKG_CONFIG --exists "freetype2" 2>&5; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+            succeeded=yes
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking FREETYPE_CFLAGS" >&5
+$as_echo_n "checking FREETYPE_CFLAGS... " >&6; }
+            FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2"|sed -e 's,///*,/,g'`
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CFLAGS" >&5
+$as_echo "$FREETYPE_CFLAGS" >&6; }
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking FREETYPE_LIBS" >&5
+$as_echo_n "checking FREETYPE_LIBS... " >&6; }
+            FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2"|sed -e 's,///*,/,g'`
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIBS" >&5
+$as_echo "$FREETYPE_LIBS" >&6; }
+        else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+            FREETYPE_CFLAGS=""
+            FREETYPE_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but
+            ## do set a variable so people can do so.
+            FREETYPE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "freetype2"`
+
+        fi
+
+
+
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     HAVE_FREETYPE=yes
+  else
+     HAVE_FREETYPE=no
+  fi
+
+
+       test "$HAVE_FREETYPE" = "no" && as_fn_error $? "libxft requires libfreetype" "$LINENO" 5
+    fi
 
     HAVE_LIBOTF=no
     if test "${HAVE_FREETYPE}" = "yes"; then
@@ -11697,7 +11794,7 @@ $as_echo "#define HAVE_FREETYPE 1" >>confdefs.h
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -11790,7 +11887,7 @@ $as_echo "#define HAVE_LIBOTF 1" >>confdefs.h
 
          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OTF_get_variation_glyphs in -lotf" >&5
 $as_echo_n "checking for OTF_get_variation_glyphs in -lotf... " >&6; }
-if ${ac_cv_lib_otf_OTF_get_variation_glyphs+:} false; then :
+if test "${ac_cv_lib_otf_OTF_get_variation_glyphs+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -11824,7 +11921,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_otf_OTF_get_variation_glyphs" >&5
 $as_echo "$ac_cv_lib_otf_OTF_get_variation_glyphs" >&6; }
-if test "x$ac_cv_lib_otf_OTF_get_variation_glyphs" = xyes; then :
+if test "x$ac_cv_lib_otf_OTF_get_variation_glyphs" = x""yes; then :
   HAVE_OTF_GET_VARIATION_GLYPHS=yes
 else
   HAVE_OTF_GET_VARIATION_GLYPHS=no
@@ -11849,7 +11946,7 @@ $as_echo "#define HAVE_OTF_GET_VARIATION_GLYPHS 1" >>confdefs.h
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -11967,10 +12064,10 @@ LIBXPM=
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_xpm}" != "no"; then
     ac_fn_c_check_header_mongrel "$LINENO" "X11/xpm.h" "ac_cv_header_X11_xpm_h" "$ac_includes_default"
-if test "x$ac_cv_header_X11_xpm_h" = xyes; then :
+if test "x$ac_cv_header_X11_xpm_h" = x""yes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmReadFileToPixmap in -lXpm" >&5
 $as_echo_n "checking for XpmReadFileToPixmap in -lXpm... " >&6; }
-if ${ac_cv_lib_Xpm_XpmReadFileToPixmap+:} false; then :
+if test "${ac_cv_lib_Xpm_XpmReadFileToPixmap+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12004,7 +12101,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmReadFileToPixmap" >&5
 $as_echo "$ac_cv_lib_Xpm_XpmReadFileToPixmap" >&6; }
-if test "x$ac_cv_lib_Xpm_XpmReadFileToPixmap" = xyes; then :
+if test "x$ac_cv_lib_Xpm_XpmReadFileToPixmap" = x""yes; then :
   HAVE_XPM=yes
 fi
 
@@ -12056,10 +12153,10 @@ LIBJPEG=
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_jpeg}" != "no"; then
             ac_fn_c_check_header_mongrel "$LINENO" "jerror.h" "ac_cv_header_jerror_h" "$ac_includes_default"
-if test "x$ac_cv_header_jerror_h" = xyes; then :
+if test "x$ac_cv_header_jerror_h" = x""yes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_destroy_compress in -ljpeg" >&5
 $as_echo_n "checking for jpeg_destroy_compress in -ljpeg... " >&6; }
-if ${ac_cv_lib_jpeg_jpeg_destroy_compress+:} false; then :
+if test "${ac_cv_lib_jpeg_jpeg_destroy_compress+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12093,7 +12190,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_destroy_compress" >&5
 $as_echo "$ac_cv_lib_jpeg_jpeg_destroy_compress" >&6; }
-if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = xyes; then :
+if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = x""yes; then :
   HAVE_JPEG=yes
 fi
 
@@ -12152,7 +12249,7 @@ done
     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_channels in -lpng" >&5
 $as_echo_n "checking for png_get_channels in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_get_channels+:} false; then :
+if test "${ac_cv_lib_png_png_get_channels+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12186,7 +12283,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_get_channels" >&5
 $as_echo "$ac_cv_lib_png_png_get_channels" >&6; }
-if test "x$ac_cv_lib_png_png_get_channels" = xyes; then :
+if test "x$ac_cv_lib_png_png_get_channels" = x""yes; then :
   HAVE_PNG=yes
 fi
 
@@ -12208,13 +12305,13 @@ LIBTIFF=
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_tiff}" != "no"; then
     ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default"
-if test "x$ac_cv_header_tiffio_h" = xyes; then :
+if test "x$ac_cv_header_tiffio_h" = x""yes; then :
   tifflibs="-lz -lm"
       # At least one tiff package requires the jpeg library.
       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFGetVersion in -ltiff" >&5
 $as_echo_n "checking for TIFFGetVersion in -ltiff... " >&6; }
-if ${ac_cv_lib_tiff_TIFFGetVersion+:} false; then :
+if test "${ac_cv_lib_tiff_TIFFGetVersion+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12248,7 +12345,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFGetVersion" >&5
 $as_echo "$ac_cv_lib_tiff_TIFFGetVersion" >&6; }
-if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then :
+if test "x$ac_cv_lib_tiff_TIFFGetVersion" = x""yes; then :
   HAVE_TIFF=yes
 fi
 
@@ -12271,12 +12368,12 @@ HAVE_GIF=no
 LIBGIF=
 if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
   ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
-if test "x$ac_cv_header_gif_lib_h" = xyes; then :
+if test "x$ac_cv_header_gif_lib_h" = x""yes; then :
   # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
 # Earlier versions can crash Emacs.
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGifPutExtensionLast in -lgif" >&5
 $as_echo_n "checking for EGifPutExtensionLast in -lgif... " >&6; }
-if ${ac_cv_lib_gif_EGifPutExtensionLast+:} false; then :
+if test "${ac_cv_lib_gif_EGifPutExtensionLast+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12310,7 +12407,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_EGifPutExtensionLast" >&5
 $as_echo "$ac_cv_lib_gif_EGifPutExtensionLast" >&6; }
-if test "x$ac_cv_lib_gif_EGifPutExtensionLast" = xyes; then :
+if test "x$ac_cv_lib_gif_EGifPutExtensionLast" = x""yes; then :
   HAVE_GIF=yes
 else
   HAVE_GIF=maybe
@@ -12326,7 +12423,7 @@ fi
 # If gif_lib.h but no libgif, try libungif.
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGifPutExtensionLast in -lungif" >&5
 $as_echo_n "checking for EGifPutExtensionLast in -lungif... " >&6; }
-if ${ac_cv_lib_ungif_EGifPutExtensionLast+:} false; then :
+if test "${ac_cv_lib_ungif_EGifPutExtensionLast+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12360,7 +12457,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ungif_EGifPutExtensionLast" >&5
 $as_echo "$ac_cv_lib_ungif_EGifPutExtensionLast" >&6; }
-if test "x$ac_cv_lib_ungif_EGifPutExtensionLast" = xyes; then :
+if test "x$ac_cv_lib_ungif_EGifPutExtensionLast" = x""yes; then :
   HAVE_GIF=yes
 else
   HAVE_GIF=no
@@ -12407,10 +12504,10 @@ LIBGPM=
 MOUSE_SUPPORT=
 if test "${with_gpm}" != "no"; then
   ac_fn_c_check_header_mongrel "$LINENO" "gpm.h" "ac_cv_header_gpm_h" "$ac_includes_default"
-if test "x$ac_cv_header_gpm_h" = xyes; then :
+if test "x$ac_cv_header_gpm_h" = x""yes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Gpm_Open in -lgpm" >&5
 $as_echo_n "checking for Gpm_Open in -lgpm... " >&6; }
-if ${ac_cv_lib_gpm_Gpm_Open+:} false; then :
+if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12444,7 +12541,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 $as_echo "$ac_cv_lib_gpm_Gpm_Open" >&6; }
-if test "x$ac_cv_lib_gpm_Gpm_Open" = xyes; then :
+if test "x$ac_cv_lib_gpm_Gpm_Open" = x""yes; then :
   HAVE_GPM=yes
 fi
 
@@ -12464,7 +12561,7 @@ fi
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "malloc/malloc.h" "ac_cv_header_malloc_malloc_h" "$ac_includes_default"
-if test "x$ac_cv_header_malloc_malloc_h" = xyes; then :
+if test "x$ac_cv_header_malloc_malloc_h" = x""yes; then :
 
 $as_echo "#define HAVE_MALLOC_MALLOC_H 1" >>confdefs.h
 
@@ -12509,10 +12606,10 @@ HAVE_X_SM=no
 LIBXSM=
 if test "${HAVE_X11}" = "yes"; then
   ac_fn_c_check_header_mongrel "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_X11_SM_SMlib_h" = xyes; then :
+if test "x$ac_cv_header_X11_SM_SMlib_h" = x""yes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SmcOpenConnection in -lSM" >&5
 $as_echo_n "checking for SmcOpenConnection in -lSM... " >&6; }
-if ${ac_cv_lib_SM_SmcOpenConnection+:} false; then :
+if test "${ac_cv_lib_SM_SmcOpenConnection+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12546,7 +12643,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SM_SmcOpenConnection" >&5
 $as_echo "$ac_cv_lib_SM_SmcOpenConnection" >&6; }
-if test "x$ac_cv_lib_SM_SmcOpenConnection" = xyes; then :
+if test "x$ac_cv_lib_SM_SmcOpenConnection" = x""yes; then :
   HAVE_X_SM=yes
 fi
 
@@ -12577,7 +12674,7 @@ if test "${with_xml2}" != "no"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -12668,7 +12765,7 @@ $as_echo "no" >&6; }
     LIBS="$LIBXML2_LIBS $LIBS"
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for htmlReadMemory in -lxml2" >&5
 $as_echo_n "checking for htmlReadMemory in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_htmlReadMemory+:} false; then :
+if test "${ac_cv_lib_xml2_htmlReadMemory+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12702,7 +12799,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_htmlReadMemory" >&5
 $as_echo "$ac_cv_lib_xml2_htmlReadMemory" >&6; }
-if test "x$ac_cv_lib_xml2_htmlReadMemory" = xyes; then :
+if test "x$ac_cv_lib_xml2_htmlReadMemory" = x""yes; then :
   HAVE_LIBXML2=yes
 else
   HAVE_LIBXML2=no
@@ -12724,7 +12821,7 @@ fi
 # If netdb.h doesn't declare h_errno, we must declare it by hand.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netdb declares h_errno" >&5
 $as_echo_n "checking whether netdb declares h_errno... " >&6; }
-if ${emacs_cv_netdb_declares_h_errno+:} false; then :
+if test "${emacs_cv_netdb_declares_h_errno+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12754,22 +12851,11 @@ $as_echo "#define HAVE_H_ERRNO 1" >>confdefs.h
 
 fi
 
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
 $as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
+if test "${ac_cv_working_alloca_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12802,7 +12888,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
 $as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
+if test "${ac_cv_func_alloca_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12821,7 +12907,7 @@ else
  #pragma alloca
 #   else
 #    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
+char *alloca ();
 #    endif
 #   endif
 #  endif
@@ -12865,7 +12951,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
+if test "${ac_cv_os_cray+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12906,7 +12992,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
 $as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
+if test "${ac_cv_c_stack_direction+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -12963,7 +13049,7 @@ fi
 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5
 $as_echo_n "checking for sqrt in -lm... " >&6; }
-if ${ac_cv_lib_m_sqrt+:} false; then :
+if test "${ac_cv_lib_m_sqrt+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12997,7 +13083,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5
 $as_echo "$ac_cv_lib_m_sqrt" >&6; }
-if test "x$ac_cv_lib_m_sqrt" = xyes; then :
+if test "x$ac_cv_lib_m_sqrt" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBM 1
 _ACEOF
@@ -13011,7 +13097,7 @@ fi
 # have the same check as for liblockfile below.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for maillock in -lmail" >&5
 $as_echo_n "checking for maillock in -lmail... " >&6; }
-if ${ac_cv_lib_mail_maillock+:} false; then :
+if test "${ac_cv_lib_mail_maillock+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -13045,7 +13131,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mail_maillock" >&5
 $as_echo "$ac_cv_lib_mail_maillock" >&6; }
-if test "x$ac_cv_lib_mail_maillock" = xyes; then :
+if test "x$ac_cv_lib_mail_maillock" = x""yes; then :
   have_mail=yes
 else
   have_mail=no
@@ -13062,7 +13148,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for maillock in -llockfile" >&5
 $as_echo_n "checking for maillock in -llockfile... " >&6; }
-if ${ac_cv_lib_lockfile_maillock+:} false; then :
+if test "${ac_cv_lib_lockfile_maillock+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -13096,7 +13182,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lockfile_maillock" >&5
 $as_echo "$ac_cv_lib_lockfile_maillock" >&6; }
-if test "x$ac_cv_lib_lockfile_maillock" = xyes; then :
+if test "x$ac_cv_lib_lockfile_maillock" = x""yes; then :
   have_lockfile=yes
 else
   have_lockfile=no
@@ -13116,7 +13202,7 @@ else
 set dummy liblockfile.so; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_liblockfile+:} false; then :
+if test "${ac_cv_prog_liblockfile+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$liblockfile"; then
@@ -13160,7 +13246,7 @@ fi
 for ac_func in touchlock
 do :
   ac_fn_c_check_func "$LINENO" "touchlock" "ac_cv_func_touchlock"
-if test "x$ac_cv_func_touchlock" = xyes; then :
+if test "x$ac_cv_func_touchlock" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_TOUCHLOCK 1
 _ACEOF
@@ -13171,7 +13257,7 @@ done
 for ac_header in maillock.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "maillock.h" "ac_cv_header_maillock_h" "$ac_includes_default"
-if test "x$ac_cv_header_maillock_h" = xyes; then :
+if test "x$ac_cv_header_maillock_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_MAILLOCK_H 1
 _ACEOF
@@ -13252,7 +13338,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_unwind_init" >&5
 $as_echo_n "checking for __builtin_unwind_init... " >&6; }
-if ${emacs_cv_func___builtin_unwind_init+:} false; then :
+if test "${emacs_cv_func___builtin_unwind_init+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13285,7 +13371,7 @@ fi
 for ac_header in sys/un.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_un_h" = xyes; then :
+if test "x$ac_cv_header_sys_un_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SYS_UN_H 1
 _ACEOF
@@ -13297,7 +13383,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
+if test "${ac_cv_sys_largefile_source+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -13366,7 +13452,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
 $as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
-if ${ac_cv_func_getpgrp_void+:} false; then :
+if test "${ac_cv_func_getpgrp_void+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # Use it with a single arg.
@@ -13415,7 +13501,7 @@ fi
 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
 $as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
+if test "${ac_cv_c_bigendian+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_bigendian=unknown
@@ -13634,13 +13720,13 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
      ;; #(
    *)
      as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
  esac
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
 $as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
+if test "${ac_cv_c_inline+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_inline=no
@@ -13683,7 +13769,7 @@ esac
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5
 $as_echo_n "checking whether strtold conforms to C99... " >&6; }
-if ${gl_cv_func_c99_strtold+:} false; then :
+if test "${gl_cv_func_c99_strtold+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13726,7 +13812,7 @@ $as_echo "#define HAVE_C99_STRTOLD 1" >>confdefs.h
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_dm_mode in struct stat" >&5
 $as_echo_n "checking for st_dm_mode in struct stat... " >&6; }
-if ${ac_cv_struct_st_dm_mode+:} false; then :
+if test "${ac_cv_struct_st_dm_mode+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13760,7 +13846,7 @@ $as_echo "#define HAVE_ST_DM_MODE 1" >>confdefs.h
 
 
 ac_fn_c_check_decl "$LINENO" "strmode" "ac_cv_have_decl_strmode" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strmode" = xyes; then :
+if test "x$ac_cv_have_decl_strmode" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -13779,6 +13865,7 @@ _ACEOF
   GNULIB_GETSUBOPT=0;
   GNULIB_GRANTPT=0;
   GNULIB_MALLOC_POSIX=0;
+  GNULIB_MBTOWC=0;
   GNULIB_MKDTEMP=0;
   GNULIB_MKOSTEMP=0;
   GNULIB_MKOSTEMPS=0;
@@ -13797,6 +13884,7 @@ _ACEOF
   GNULIB_SYSTEM_POSIX=0;
   GNULIB_UNLOCKPT=0;
   GNULIB_UNSETENV=0;
+  GNULIB_WCTOMB=0;
     HAVE__EXIT=1;
   HAVE_ATOLL=1;
   HAVE_CANONICALIZE_FILE_NAME=1;
@@ -13825,6 +13913,7 @@ _ACEOF
   REPLACE_CALLOC=0;
   REPLACE_CANONICALIZE_FILE_NAME=0;
   REPLACE_MALLOC=0;
+  REPLACE_MBTOWC=0;
   REPLACE_MKSTEMP=0;
   REPLACE_PUTENV=0;
   REPLACE_REALLOC=0;
@@ -13832,6 +13921,7 @@ _ACEOF
   REPLACE_SETENV=0;
   REPLACE_STRTOD=0;
   REPLACE_UNSETENV=0;
+  REPLACE_WCTOMB=0;
 
 
   GNULIB_CHOWN=0;
@@ -13945,7 +14035,7 @@ _ACEOF
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
 $as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
-if ${gl_cv_have_include_next+:} false; then :
+if test "${gl_cv_have_include_next+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   rm -rf conftestd1a conftestd1b conftestd2
@@ -14025,7 +14115,7 @@ $as_echo "$gl_cv_have_include_next" >&6; }
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
 $as_echo_n "checking whether system header files limit the line length... " >&6; }
-if ${gl_cv_pragma_columns+:} false; then :
+if test "${gl_cv_pragma_columns+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14075,7 +14165,7 @@ $as_echo "$gl_cv_pragma_columns" >&6; }
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <getopt.h>" >&5
 $as_echo_n "checking absolute name of <getopt.h>... " >&6; }
-if ${gl_cv_next_getopt_h+:} false; then :
+if test "${gl_cv_next_getopt_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -14134,7 +14224,7 @@ $as_echo "$gl_cv_next_getopt_h" >&6; }
     for ac_header in getopt.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
-if test "x$ac_cv_header_getopt_h" = xyes; then :
+if test "x$ac_cv_header_getopt_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETOPT_H 1
 _ACEOF
@@ -14151,7 +14241,7 @@ done
     for ac_func in getopt_long_only
 do :
   ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only"
-if test "x$ac_cv_func_getopt_long_only" = xyes; then :
+if test "x$ac_cv_func_getopt_long_only" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETOPT_LONG_ONLY 1
 _ACEOF
@@ -14166,7 +14256,7 @@ done
                     if test -z "$gl_replace_getopt"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5
 $as_echo_n "checking whether getopt is POSIX compatible... " >&6; }
-if ${gl_cv_func_getopt_posix+:} false; then :
+if test "${gl_cv_func_getopt_posix+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -14324,7 +14414,7 @@ $as_echo "$gl_cv_func_getopt_posix" >&6; }
   if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5
 $as_echo_n "checking for working GNU getopt function... " >&6; }
-if ${gl_cv_func_getopt_gnu+:} false; then :
+if test "${gl_cv_func_getopt_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
@@ -14436,7 +14526,7 @@ $as_echo "$gl_cv_func_getopt_gnu" >&6; }
   fi
 
 ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getenv" = xyes; then :
+if test "x$ac_cv_have_decl_getenv" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 
 
 
-  GNULIB_MKTIME=0;
-  GNULIB_NANOSLEEP=0;
-  GNULIB_STRPTIME=0;
-  GNULIB_TIMEGM=0;
-  GNULIB_TIME_R=0;
-    HAVE_DECL_LOCALTIME_R=1;
-  HAVE_NANOSLEEP=1;
-  HAVE_STRPTIME=1;
-  HAVE_TIMEGM=1;
-        REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
-  REPLACE_MKTIME=GNULIB_PORTCHECK;
-  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
-  REPLACE_TIMEGM=GNULIB_PORTCHECK;
+     GNULIB_FCHMODAT=0;
+  GNULIB_FSTATAT=0;
+  GNULIB_FUTIMENS=0;
+  GNULIB_LCHMOD=0;
+  GNULIB_LSTAT=0;
+  GNULIB_MKDIRAT=0;
+  GNULIB_MKFIFO=0;
+  GNULIB_MKFIFOAT=0;
+  GNULIB_MKNOD=0;
+  GNULIB_MKNODAT=0;
+  GNULIB_STAT=0;
+  GNULIB_UTIMENSAT=0;
+    HAVE_FCHMODAT=1;
+  HAVE_FSTATAT=1;
+  HAVE_FUTIMENS=1;
+  HAVE_LCHMOD=1;
+  HAVE_LSTAT=1;
+  HAVE_MKDIRAT=1;
+  HAVE_MKFIFO=1;
+  HAVE_MKFIFOAT=1;
+  HAVE_MKNOD=1;
+  HAVE_MKNODAT=1;
+  HAVE_UTIMENSAT=1;
+  REPLACE_FSTAT=0;
+  REPLACE_FSTATAT=0;
+  REPLACE_FUTIMENS=0;
+  REPLACE_LSTAT=0;
+  REPLACE_MKDIR=0;
+  REPLACE_MKFIFO=0;
+  REPLACE_MKNOD=0;
+  REPLACE_STAT=0;
+  REPLACE_UTIMENSAT=0;
 
 
 
@@ -14523,50 +14632,139 @@ done
 
 
 
-    gl_cv_c_multiarch=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
+$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
+if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       if test "$cross_compiling" = yes; then :
+  # When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+
+else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifndef __APPLE_CC__
-         not a universal capable compiler
-        #endif
-        typedef int dummy;
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
 
+  ;
+  return 0;
+}
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_lstat_dereferences_slashed_symlink=yes
+else
+  ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-               arch=
-     prev=
-     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
-       if test -n "$prev"; then
-         case $word in
-           i?86 | x86_64 | ppc | ppc64)
-             if test -z "$arch" || test "$arch" = "$word"; then
-               arch="$word"
-             else
-               gl_cv_c_multiarch=yes
-             fi
-             ;;
-         esac
-         prev=
-       else
-         if test "x$word" = "x-arch"; then
-           prev=arch
-         fi
-       fi
-     done
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test $gl_cv_c_multiarch = yes; then
-    APPLE_UNIVERSAL_BUILD=1
-  else
-    APPLE_UNIVERSAL_BUILD=0
-  fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+
+cat >>confdefs.h <<_ACEOF
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+_ACEOF
+
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
+
+  fi
+
+
+  GNULIB_MKTIME=0;
+  GNULIB_NANOSLEEP=0;
+  GNULIB_STRPTIME=0;
+  GNULIB_TIMEGM=0;
+  GNULIB_TIME_R=0;
+    HAVE_DECL_LOCALTIME_R=1;
+  HAVE_NANOSLEEP=1;
+  HAVE_STRPTIME=1;
+  HAVE_TIMEGM=1;
+        REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
+  REPLACE_MKTIME=GNULIB_PORTCHECK;
+  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
+  REPLACE_TIMEGM=GNULIB_PORTCHECK;
+
+
+
+
+    gl_cv_c_multiarch=no
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+               arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test $gl_cv_c_multiarch = yes; then
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+
+
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if ${ac_cv_header_stdbool_h+:} false; then :
+if test "${ac_cv_header_stdbool_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14641,7 +14839,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = xyes; then :
+if test "x$ac_cv_type__Bool" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE__BOOL 1
@@ -14659,7 +14857,7 @@ fi
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
 $as_echo_n "checking for wchar_t... " >&6; }
-if ${gt_cv_c_wchar_t+:} false; then :
+if test "${gt_cv_c_wchar_t+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14692,7 +14890,7 @@ $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
 $as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_type_unsigned_long_long_int=yes
@@ -14750,7 +14948,7 @@ $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
 $as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
+if test "${ac_cv_type_long_long_int+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_type_long_long_int=yes
@@ -14813,7 +15011,7 @@ $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
 
  ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
 "
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
 
 $as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
 
 
 
 
-     GNULIB_FCHMODAT=0;
-  GNULIB_FSTATAT=0;
-  GNULIB_FUTIMENS=0;
-  GNULIB_LCHMOD=0;
-  GNULIB_LSTAT=0;
-  GNULIB_MKDIRAT=0;
-  GNULIB_MKFIFO=0;
-  GNULIB_MKFIFOAT=0;
-  GNULIB_MKNOD=0;
-  GNULIB_MKNODAT=0;
-  GNULIB_STAT=0;
-  GNULIB_UTIMENSAT=0;
-    HAVE_FCHMODAT=1;
-  HAVE_FSTATAT=1;
-  HAVE_FUTIMENS=1;
-  HAVE_LCHMOD=1;
-  HAVE_LSTAT=1;
-  HAVE_MKDIRAT=1;
-  HAVE_MKFIFO=1;
-  HAVE_MKFIFOAT=1;
-  HAVE_MKNOD=1;
-  HAVE_MKNODAT=1;
-  HAVE_UTIMENSAT=1;
-  REPLACE_FSTAT=0;
-  REPLACE_FSTATAT=0;
-  REPLACE_FUTIMENS=0;
-  REPLACE_LSTAT=0;
-  REPLACE_MKDIR=0;
-  REPLACE_MKFIFO=0;
-  REPLACE_MKNOD=0;
-  REPLACE_STAT=0;
-  REPLACE_UTIMENSAT=0;
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
-if ${ac_cv_header_stat_broken+:} false; then :
+if test "${ac_cv_header_stat_broken+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14902,7 +15068,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
 $as_echo_n "checking for C/C++ restrict keyword... " >&6; }
-if ${ac_cv_c_restrict+:} false; then :
+if test "${ac_cv_c_restrict+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_restrict=no
@@ -14952,7 +15118,7 @@ _ACEOF
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <time.h>" >&5
 $as_echo_n "checking for struct timespec in <time.h>... " >&6; }
-if ${gl_cv_sys_struct_timespec_in_time_h+:} false; then :
+if test "${gl_cv_sys_struct_timespec_in_time_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14985,7 +15151,7 @@ $as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; }
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <sys/time.h>" >&5
 $as_echo_n "checking for struct timespec in <sys/time.h>... " >&6; }
-if ${gl_cv_sys_struct_timespec_in_sys_time_h+:} false; then :
+if test "${gl_cv_sys_struct_timespec_in_sys_time_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15014,7 +15180,7 @@ $as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
     else
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <pthread.h>" >&5
 $as_echo_n "checking for struct timespec in <pthread.h>... " >&6; }
-if ${gl_cv_sys_struct_timespec_in_pthread_h+:} false; then :
+if test "${gl_cv_sys_struct_timespec_in_pthread_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15063,7 +15229,7 @@ $as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; }
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <time.h>" >&5
 $as_echo_n "checking absolute name of <time.h>... " >&6; }
-if ${gl_cv_next_time_h+:} false; then :
+if test "${gl_cv_next_time_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -15106,7 +15272,7 @@ $as_echo "$gl_cv_next_time_h" >&6; }
 
 
 ac_fn_c_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" "$ac_includes_default"
-if test "x$ac_cv_have_decl_localtime_r" = xyes; then :
+if test "x$ac_cv_have_decl_localtime_r" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -15160,6 +15326,7 @@ fi
 
   :
 
+  # Code from module dosname:
   # Code from module dtoastr:
 
   # Code from module extensions:
@@ -15193,7 +15360,7 @@ gl_save_LIBS=$LIBS
 # getloadvg is present in libc on glibc >= 2.2, MacOS X, FreeBSD >= 2.0,
 # NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7.
 ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
-if test "x$ac_cv_func_getloadavg" = xyes; then :
+if test "x$ac_cv_func_getloadavg" = x""yes; then :
 
 else
   gl_have_func=no
@@ -15206,7 +15373,7 @@ else
    if test $gl_have_func = no; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5
 $as_echo_n "checking for elf_begin in -lelf... " >&6; }
-if ${ac_cv_lib_elf_elf_begin+:} false; then :
+if test "${ac_cv_lib_elf_elf_begin+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15240,13 +15407,13 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5
 $as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
-if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
+if test "x$ac_cv_lib_elf_elf_begin" = x""yes; then :
   LIBS="-lelf $LIBS"
 fi
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5
 $as_echo_n "checking for kvm_open in -lkvm... " >&6; }
-if ${ac_cv_lib_kvm_kvm_open+:} false; then :
+if test "${ac_cv_lib_kvm_kvm_open+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15280,14 +15447,14 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5
 $as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
-if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
+if test "x$ac_cv_lib_kvm_kvm_open" = x""yes; then :
   LIBS="-lkvm $LIBS"
 fi
 
      # Check for the 4.4BSD definition of getloadavg.
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5
 $as_echo_n "checking for getloadavg in -lutil... " >&6; }
-if ${ac_cv_lib_util_getloadavg+:} false; then :
+if test "${ac_cv_lib_util_getloadavg+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15321,7 +15488,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5
 $as_echo "$ac_cv_lib_util_getloadavg" >&6; }
-if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
+if test "x$ac_cv_lib_util_getloadavg" = x""yes; then :
   LIBS="-lutil $LIBS" gl_have_func=yes
 fi
 
@@ -15334,7 +15501,7 @@ fi
      LIBS="-L/usr/local/lib $LIBS"
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5
 $as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
-if ${ac_cv_lib_getloadavg_getloadavg+:} false; then :
+if test "${ac_cv_lib_getloadavg_getloadavg+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15368,7 +15535,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5
 $as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
-if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then :
+if test "x$ac_cv_lib_getloadavg_getloadavg" = x""yes; then :
   LIBS="-lgetloadavg $LIBS" gl_have_func=yes
 else
   LIBS=$gl_getloadavg_LIBS
@@ -15394,7 +15561,7 @@ fi
 # Solaris has libkstat which does not require root.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5
 $as_echo_n "checking for kstat_open in -lkstat... " >&6; }
-if ${ac_cv_lib_kstat_kstat_open+:} false; then :
+if test "${ac_cv_lib_kstat_kstat_open+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15428,7 +15595,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
 $as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
-if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then :
+if test "x$ac_cv_lib_kstat_kstat_open" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBKSTAT 1
 _ACEOF
@@ -15444,7 +15611,7 @@ if test $gl_have_func = no; then
   for ac_func in pstat_getdynamic
 do :
   ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic"
-if test "x$ac_cv_func_pstat_getdynamic" = xyes; then :
+if test "x$ac_cv_func_pstat_getdynamic" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_PSTAT_GETDYNAMIC 1
 _ACEOF
@@ -15458,7 +15625,7 @@ fi
 if test $gl_have_func = no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5
 $as_echo_n "checking for perfstat_cpu_total in -lperfstat... " >&6; }
-if ${ac_cv_lib_perfstat_perfstat_cpu_total+:} false; then :
+if test "${ac_cv_lib_perfstat_perfstat_cpu_total+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15492,7 +15659,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5
 $as_echo "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; }
-if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes; then :
+if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBPERFSTAT 1
 _ACEOF
 
 if test $gl_have_func = no; then
   ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then :
+if test "x$ac_cv_header_sys_dg_sys_info_h" = x""yes; then :
   gl_have_func=yes
 
 $as_echo "#define DGUX 1" >>confdefs.h
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5
 $as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
-if ${ac_cv_lib_dgc_dg_sys_info+:} false; then :
+if test "${ac_cv_lib_dgc_dg_sys_info+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -15547,7 +15714,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
 $as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
-if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then :
+if test "x$ac_cv_lib_dgc_dg_sys_info" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBDGC 1
 _ACEOF
@@ -15574,7 +15741,7 @@ fi
 
 if test $gl_have_func = no; then
   ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default"
-if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then :
+if test "x$ac_cv_header_inq_stats_cpustats_h" = x""yes; then :
   gl_have_func=yes
 
 $as_echo "#define UMAX 1" >>confdefs.h
@@ -15589,7 +15756,7 @@ fi
 
 if test $gl_have_func = no; then
   ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_cpustats_h" = xyes; then :
+if test "x$ac_cv_header_sys_cpustats_h" = x""yes; then :
   gl_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h
 
 fi
@@ -15601,7 +15768,7 @@ if test $gl_have_func = no; then
   for ac_header in mach/mach.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
-if test "x$ac_cv_header_mach_mach_h" = xyes; then :
+if test "x$ac_cv_header_mach_mach_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_MACH_MACH_H 1
 _ACEOF
 for ac_header in nlist.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default"
-if test "x$ac_cv_header_nlist_h" = xyes; then :
+if test "x$ac_cv_header_nlist_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_NLIST_H 1
 _ACEOF
  ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include <nlist.h>
 "
-if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
+if test "x$ac_cv_member_struct_nlist_n_un_n_name" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
@@ -15675,7 +15842,7 @@ LIBS=$gl_save_LIBS
 for ac_header in sys/loadavg.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_loadavg_h" = xyes; then :
+if test "x$ac_cv_header_sys_loadavg_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SYS_LOADAVG_H 1
 _ACEOF
@@ -15694,7 +15861,7 @@ ac_fn_c_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE
    #endif
    #include <stdlib.h>
 "
-if test "x$ac_cv_have_decl_getloadavg" = xyes; then :
+if test "x$ac_cv_have_decl_getloadavg" = x""yes; then :
 
 else
   HAVE_DECL_GETLOADAVG=0
 
   # Code from module include_next:
   # Code from module intprops:
+  # Code from module lstat:
+
+
+
+  if test $ac_cv_func_lstat = yes; then
+
+    if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+            REPLACE_LSTAT=1
+    fi
+    # Prerequisites of lib/lstat.c.
+
+  else
+    HAVE_LSTAT=0
+  fi
+
+
+
+
+  GNULIB_LSTAT=1
+
+
+
   # Code from module mktime:
 
 
@@ -15781,7 +15970,7 @@ if test $APPLE_UNIVERSAL_BUILD = 1; then
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
 $as_echo_n "checking for working mktime... " >&6; }
-if ${ac_cv_func_working_mktime+:} false; then :
+if test "${ac_cv_func_working_mktime+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
 
   # Code from module multiarch:
 
+  # Code from module readlink:
+
+
+
+  if test $ac_cv_func_readlink = no; then
+    HAVE_READLINK=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+
+  :
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readlink signature is correct" >&5
+$as_echo_n "checking whether readlink signature is correct... " >&6; }
+if test "${gl_cv_decl_readlink_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+      /* Cause compilation failure if original declaration has wrong type.  */
+      ssize_t readlink (const char *, char *, size_t);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_decl_readlink_works=yes
+else
+  gl_cv_decl_readlink_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_readlink_works" >&5
+$as_echo "$gl_cv_decl_readlink_works" >&6; }
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readlink handles trailing slash correctly" >&5
+$as_echo_n "checking whether readlink handles trailing slash correctly... " >&6; }
+if test "${gl_cv_func_readlink_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # We have readlink, so assume ln -s works.
+       ln -s conftest.no-such conftest.link
+       ln -s conftest.link conftest.lnk2
+       if test "$cross_compiling" = yes; then :
+  gl_cv_func_readlink_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+int
+main ()
+{
+char buf[20];
+      return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_readlink_works=yes
+else
+  gl_cv_func_readlink_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.link conftest.lnk2
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_readlink_works" >&5
+$as_echo "$gl_cv_func_readlink_works" >&6; }
+    if test "$gl_cv_func_readlink_works" != yes; then
+
+$as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h
+
+      REPLACE_READLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+    elif test "$gl_cv_decl_readlink_works" != yes; then
+      REPLACE_READLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_READLINK=1
+
+
+
+  # Code from module stat:
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on directories" >&5
+$as_echo_n "checking whether stat handles trailing slashes on directories... " >&6; }
+if test "${gl_cv_func_stat_dir_slash+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  case $host_os in
+            mingw*) gl_cv_func_stat_dir_slash="guessing no";;
+            *) gl_cv_func_stat_dir_slash="guessing yes";;
+          esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+struct stat st; return stat (".", &st) != stat ("./", &st);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_stat_dir_slash=yes
+else
+  gl_cv_func_stat_dir_slash=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_stat_dir_slash" >&5
+$as_echo "$gl_cv_func_stat_dir_slash" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on files" >&5
+$as_echo_n "checking whether stat handles trailing slashes on files... " >&6; }
+if test "${gl_cv_func_stat_file_slash+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  touch conftest.tmp
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       if test "$cross_compiling" = yes; then :
+  gl_cv_func_stat_file_slash="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+int result = 0;
+      struct stat st;
+      if (!stat ("conftest.tmp/", &st))
+        result |= 1;
+#if HAVE_LSTAT
+      if (!stat ("conftest.lnk/", &st))
+        result |= 2;
+#endif
+      return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_stat_file_slash=yes
+else
+  gl_cv_func_stat_file_slash=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+       rm -f conftest.tmp conftest.lnk
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_stat_file_slash" >&5
+$as_echo "$gl_cv_func_stat_file_slash" >&6; }
+  case $gl_cv_func_stat_dir_slash in
+    *no) REPLACE_STAT=1
+
+$as_echo "#define REPLACE_FUNC_STAT_DIR 1" >>confdefs.h
+;;
+  esac
+  case $gl_cv_func_stat_file_slash in
+    *no) REPLACE_STAT=1
+
+$as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h
+;;
+  esac
+  if test $REPLACE_STAT = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext"
+
+
+  fi
+
+
+
+
+  GNULIB_STAT=1
+
+
+
   # Code from module stdbool:
 
 
@@ -16054,7 +16483,7 @@ fi
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
 $as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
-if ${gl_cv_decl_null_works+:} false; then :
+if test "${gl_cv_decl_null_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16097,7 +16526,7 @@ $as_echo "$gl_cv_decl_null_works" >&6; }
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
 $as_echo_n "checking absolute name of <stddef.h>... " >&6; }
-if ${gl_cv_next_stddef_h+:} false; then :
+if test "${gl_cv_next_stddef_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -16193,7 +16622,7 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
 $as_echo_n "checking absolute name of <stdint.h>... " >&6; }
-if ${gl_cv_next_stdint_h+:} false; then :
+if test "${gl_cv_next_stdint_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -16249,7 +16678,7 @@ $as_echo "$gl_cv_next_stdint_h" >&6; }
     if test $ac_cv_header_stdint_h = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
 $as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
-if ${gl_cv_header_working_stdint_h+:} false; then :
+if test "${gl_cv_header_working_stdint_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   gl_cv_header_working_stdint_h=no
@@ -16552,7 +16981,7 @@ done
   for gltype in ptrdiff_t size_t ; do
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
 $as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
@@ -16597,7 +17026,7 @@ _ACEOF
   for gltype in sig_atomic_t wchar_t wint_t ; do
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
 $as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
@@ -16641,7 +17070,7 @@ _ACEOF
   for gltype in sig_atomic_t wchar_t wint_t ; do
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
 $as_echo_n "checking whether $gltype is signed... " >&6; }
-if eval \${gl_cv_type_${gltype}_signed+:} false; then :
+if eval "test \"\${gl_cv_type_${gltype}_signed+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16700,7 +17129,7 @@ _ACEOF
   for gltype in ptrdiff_t size_t ; do
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
 $as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval gl_cv_type_${gltype}_suffix=no
@@ -16772,7 +17201,7 @@ _ACEOF
   for gltype in sig_atomic_t wchar_t wint_t ; do
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
 $as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval gl_cv_type_${gltype}_suffix=no
@@ -16859,7 +17288,7 @@ _ACEOF
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdlib.h>" >&5
 $as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
-if ${gl_cv_next_stdlib_h+:} false; then :
+if test "${gl_cv_next_stdlib_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -16928,6 +17357,86 @@ $as_echo "#define my_strftime nstrftime" >>confdefs.h
 
 
 
+  # Code from module symlink:
+
+
+
+        if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext"
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symlink handles trailing slash correctly" >&5
+$as_echo_n "checking whether symlink handles trailing slash correctly... " >&6; }
+if test "${gl_cv_func_symlink_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_func_symlink_works="guessing no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+int
+main ()
+{
+int result = 0;
+             if (!symlink ("a", "conftest.link/"))
+               result |= 1;
+             if (symlink ("conftest.f", "conftest.lnk2"))
+               result |= 2;
+             else if (!symlink ("a", "conftest.lnk2/"))
+               result |= 4;
+             return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_symlink_works=yes
+else
+  gl_cv_func_symlink_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.f conftest.link conftest.lnk2
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_symlink_works" >&5
+$as_echo "$gl_cv_func_symlink_works" >&6; }
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_SYMLINK=1
+
+
+
   # Code from module sys_stat:
 
 
@@ -16950,7 +17459,7 @@ $as_echo "#define my_strftime nstrftime" >>confdefs.h
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/stat.h>" >&5
 $as_echo_n "checking absolute name of <sys/stat.h>... " >&6; }
-if ${gl_cv_next_sys_stat_h+:} false; then :
+if test "${gl_cv_next_sys_stat_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -17000,7 +17509,7 @@ $as_echo "$gl_cv_next_sys_stat_h" >&6; }
       ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include <sys/types.h>
      #include <sys/stat.h>
 "
-if test "x$ac_cv_type_nlink_t" = xyes; then :
+if test "x$ac_cv_type_nlink_t" = x""yes; then :
 
 else
 
@@ -17033,7 +17542,7 @@ fi
     HAVE_LOCALTIME_R=1
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether localtime_r is compatible with its POSIX signature" >&5
 $as_echo_n "checking whether localtime_r is compatible with its POSIX signature... " >&6; }
-if ${gl_cv_time_r_posix+:} false; then :
+if test "${gl_cv_time_r_posix+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17115,7 +17624,7 @@ $as_echo "$gl_cv_time_r_posix" >&6; }
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <unistd.h>" >&5
 $as_echo_n "checking absolute name of <unistd.h>... " >&6; }
-if ${gl_cv_next_unistd_h+:} false; then :
+if test "${gl_cv_next_unistd_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -17215,7 +17724,7 @@ $as_echo "$gl_cv_next_unistd_h" >&6; }
 for ac_func in grantpt
 do :
   ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt"
-if test "x$ac_cv_func_grantpt" = xyes; then :
+if test "x$ac_cv_func_grantpt" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GRANTPT 1
 _ACEOF
@@ -17228,7 +17737,7 @@ done
 for ac_func in getpt
 do :
   ac_fn_c_check_func "$LINENO" "getpt" "ac_cv_func_getpt"
-if test "x$ac_cv_func_getpt" = xyes; then :
+if test "x$ac_cv_func_getpt" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETPT 1
 _ACEOF
@@ -17245,7 +17754,7 @@ done
 have_tputs_et_al=true
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tputs" >&5
 $as_echo_n "checking for library containing tputs... " >&6; }
-if ${ac_cv_search_tputs+:} false; then :
+if test "${ac_cv_search_tputs+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
@@ -17279,11 +17788,11 @@ for ac_lib in '' ncurses terminfo termcap; do
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if ${ac_cv_search_tputs+:} false; then :
+  if test "${ac_cv_search_tputs+set}" = set; then :
   break
 fi
 done
-if ${ac_cv_search_tputs+:} false; then :
+if test "${ac_cv_search_tputs+set}" = set; then :
 
 else
   ac_cv_search_tputs=no
@@ -17342,7 +17851,7 @@ case "$opsys" in
   freebsd)
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether FreeBSD is new enough to use terminfo" >&5
 $as_echo_n "checking whether FreeBSD is new enough to use terminfo... " >&6; }
-    if ${emacs_cv_freebsd_terminfo+:} false; then :
+    if test "${emacs_cv_freebsd_terminfo+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17484,16 +17993,16 @@ LIBHESIOD=
 if test "$with_hesiod" != no ; then
   # Don't set $LIBS here -- see comments above.  FIXME which comments?
   ac_fn_c_check_func "$LINENO" "res_send" "ac_cv_func_res_send"
-if test "x$ac_cv_func_res_send" = xyes; then :
+if test "x$ac_cv_func_res_send" = x""yes; then :
 
 else
   ac_fn_c_check_func "$LINENO" "__res_send" "ac_cv_func___res_send"
-if test "x$ac_cv_func___res_send" = xyes; then :
+if test "x$ac_cv_func___res_send" = x""yes; then :
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_send in -lresolv" >&5
 $as_echo_n "checking for res_send in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_res_send+:} false; then :
+if test "${ac_cv_lib_resolv_res_send+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17527,12 +18036,12 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_send" >&5
 $as_echo "$ac_cv_lib_resolv_res_send" >&6; }
-if test "x$ac_cv_lib_resolv_res_send" = xyes; then :
+if test "x$ac_cv_lib_resolv_res_send" = x""yes; then :
   resolv=yes
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __res_send in -lresolv" >&5
 $as_echo_n "checking for __res_send in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv___res_send+:} false; then :
+if test "${ac_cv_lib_resolv___res_send+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17566,7 +18075,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_send" >&5
 $as_echo "$ac_cv_lib_resolv___res_send" >&6; }
-if test "x$ac_cv_lib_resolv___res_send" = xyes; then :
+if test "x$ac_cv_lib_resolv___res_send" = x""yes; then :
   resolv=yes
 fi
 
     RESOLVLIB=
   fi
   ac_fn_c_check_func "$LINENO" "hes_getmailhost" "ac_cv_func_hes_getmailhost"
-if test "x$ac_cv_func_hes_getmailhost" = xyes; then :
+if test "x$ac_cv_func_hes_getmailhost" = x""yes; then :
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hes_getmailhost in -lhesiod" >&5
 $as_echo_n "checking for hes_getmailhost in -lhesiod... " >&6; }
-if ${ac_cv_lib_hesiod_hes_getmailhost+:} false; then :
+if test "${ac_cv_lib_hesiod_hes_getmailhost+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17621,7 +18130,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hesiod_hes_getmailhost" >&5
 $as_echo "$ac_cv_lib_hesiod_hes_getmailhost" >&6; }
-if test "x$ac_cv_lib_hesiod_hes_getmailhost" = xyes; then :
+if test "x$ac_cv_lib_hesiod_hes_getmailhost" = x""yes; then :
   hesiod=yes
 else
   :
@@ -17660,7 +18169,7 @@ KRB4LIB=
 if test "${with_kerberos}" != no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5
 $as_echo_n "checking for com_err in -lcom_err... " >&6; }
-if ${ac_cv_lib_com_err_com_err+:} false; then :
+if test "${ac_cv_lib_com_err_com_err+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17694,7 +18203,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_com_err_com_err" >&5
 $as_echo "$ac_cv_lib_com_err_com_err" >&6; }
-if test "x$ac_cv_lib_com_err_com_err" = xyes; then :
+if test "x$ac_cv_lib_com_err_com_err" = x""yes; then :
   have_com_err=yes
 else
   have_com_err=no
@@ -17709,7 +18218,7 @@ $as_echo "#define HAVE_LIBCOM_ERR 1" >>confdefs.h
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lcrypto" >&5
 $as_echo_n "checking for mit_des_cbc_encrypt in -lcrypto... " >&6; }
-if ${ac_cv_lib_crypto_mit_des_cbc_encrypt+:} false; then :
+if test "${ac_cv_lib_crypto_mit_des_cbc_encrypt+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17743,7 +18252,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_mit_des_cbc_encrypt" >&5
 $as_echo "$ac_cv_lib_crypto_mit_des_cbc_encrypt" >&6; }
-if test "x$ac_cv_lib_crypto_mit_des_cbc_encrypt" = xyes; then :
+if test "x$ac_cv_lib_crypto_mit_des_cbc_encrypt" = x""yes; then :
   have_crypto=yes
 else
   have_crypto=no
@@ -17758,7 +18267,7 @@ $as_echo "#define HAVE_LIBCRYPTO 1" >>confdefs.h
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lk5crypto" >&5
 $as_echo_n "checking for mit_des_cbc_encrypt in -lk5crypto... " >&6; }
-if ${ac_cv_lib_k5crypto_mit_des_cbc_encrypt+:} false; then :
+if test "${ac_cv_lib_k5crypto_mit_des_cbc_encrypt+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17792,7 +18301,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&5
 $as_echo "$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&6; }
-if test "x$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" = xyes; then :
+if test "x$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" = x""yes; then :
   have_k5crypto=yes
 else
   have_k5crypto=no
@@ -17807,7 +18316,7 @@ $as_echo "#define HAVE_LIBK5CRYPTO 1" >>confdefs.h
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
-if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
+if test "${ac_cv_lib_krb5_krb5_init_context+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17841,7 +18350,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5
 $as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
-if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
+if test "x$ac_cv_lib_krb5_krb5_init_context" = x""yes; then :
   have_krb5=yes
 else
   have_krb5=no
@@ -17857,7 +18366,7 @@ $as_echo "#define HAVE_LIBKRB5 1" >>confdefs.h
     if test "${with_kerberos5}" = no; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes425" >&5
 $as_echo_n "checking for des_cbc_encrypt in -ldes425... " >&6; }
-if ${ac_cv_lib_des425_des_cbc_encrypt+:} false; then :
+if test "${ac_cv_lib_des425_des_cbc_encrypt+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17891,7 +18400,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des425_des_cbc_encrypt" >&5
 $as_echo "$ac_cv_lib_des425_des_cbc_encrypt" >&6; }
-if test "x$ac_cv_lib_des425_des_cbc_encrypt" = xyes; then :
+if test "x$ac_cv_lib_des425_des_cbc_encrypt" = x""yes; then :
   have_des425=yes
 else
   have_des425=no
@@ -17906,7 +18415,7 @@ $as_echo "#define HAVE_LIBDES425 1" >>confdefs.h
     else
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
 $as_echo_n "checking for des_cbc_encrypt in -ldes... " >&6; }
-if ${ac_cv_lib_des_des_cbc_encrypt+:} false; then :
+if test "${ac_cv_lib_des_des_cbc_encrypt+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17940,7 +18449,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_cbc_encrypt" >&5
 $as_echo "$ac_cv_lib_des_des_cbc_encrypt" >&6; }
-if test "x$ac_cv_lib_des_des_cbc_encrypt" = xyes; then :
+if test "x$ac_cv_lib_des_des_cbc_encrypt" = x""yes; then :
   have_des=yes
 else
   have_des=no
@@ -17956,7 +18465,7 @@ $as_echo "#define HAVE_LIBDES 1" >>confdefs.h
     fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_get_cred in -lkrb4" >&5
 $as_echo_n "checking for krb_get_cred in -lkrb4... " >&6; }
-if ${ac_cv_lib_krb4_krb_get_cred+:} false; then :
+if test "${ac_cv_lib_krb4_krb_get_cred+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17990,7 +18499,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb4_krb_get_cred" >&5
 $as_echo "$ac_cv_lib_krb4_krb_get_cred" >&6; }
-if test "x$ac_cv_lib_krb4_krb_get_cred" = xyes; then :
+if test "x$ac_cv_lib_krb4_krb_get_cred" = x""yes; then :
   have_krb4=yes
 else
   have_krb4=no
@@ -18005,7 +18514,7 @@ $as_echo "#define HAVE_LIBKRB4 1" >>confdefs.h
     else
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_get_cred in -lkrb" >&5
 $as_echo_n "checking for krb_get_cred in -lkrb... " >&6; }
-if ${ac_cv_lib_krb_krb_get_cred+:} false; then :
+if test "${ac_cv_lib_krb_krb_get_cred+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18039,7 +18548,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb_krb_get_cred" >&5
 $as_echo "$ac_cv_lib_krb_krb_get_cred" >&6; }
-if test "x$ac_cv_lib_krb_krb_get_cred" = xyes; then :
+if test "x$ac_cv_lib_krb_krb_get_cred" = x""yes; then :
   have_krb=yes
 else
   have_krb=no
@@ -18059,13 +18568,13 @@ $as_echo "#define HAVE_LIBKRB 1" >>confdefs.h
     for ac_header in krb5.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "krb5.h" "ac_cv_header_krb5_h" "$ac_includes_default"
-if test "x$ac_cv_header_krb5_h" = xyes; then :
+if test "x$ac_cv_header_krb5_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
 _ACEOF
  ac_fn_c_check_member "$LINENO" "krb5_error" "text" "ac_cv_member_krb5_error_text" "#include <krb5.h>
 "
-if test "x$ac_cv_member_krb5_error_text" = xyes; then :
+if test "x$ac_cv_member_krb5_error_text" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_ERROR_TEXT 1
@@ -18075,7 +18584,7 @@ _ACEOF
 fi
 ac_fn_c_check_member "$LINENO" "krb5_error" "e_text" "ac_cv_member_krb5_error_e_text" "#include <krb5.h>
 "
-if test "x$ac_cv_member_krb5_error_e_text" = xyes; then :
+if test "x$ac_cv_member_krb5_error_e_text" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_ERROR_E_TEXT 1
@@ -18092,7 +18601,7 @@ done
     for ac_header in des.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "des.h" "ac_cv_header_des_h" "$ac_includes_default"
-if test "x$ac_cv_header_des_h" = xyes; then :
+if test "x$ac_cv_header_des_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_DES_H 1
 _ACEOF
@@ -18101,7 +18610,7 @@ else
   for ac_header in kerberosIV/des.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "kerberosIV/des.h" "ac_cv_header_kerberosIV_des_h" "$ac_includes_default"
-if test "x$ac_cv_header_kerberosIV_des_h" = xyes; then :
+if test "x$ac_cv_header_kerberosIV_des_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSIV_DES_H 1
 _ACEOF
@@ -18110,7 +18619,7 @@ else
   for ac_header in kerberos/des.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "kerberos/des.h" "ac_cv_header_kerberos_des_h" "$ac_includes_default"
-if test "x$ac_cv_header_kerberos_des_h" = xyes; then :
+if test "x$ac_cv_header_kerberos_des_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROS_DES_H 1
 _ACEOF
@@ -18130,7 +18639,7 @@ done
     for ac_header in krb.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "krb.h" "ac_cv_header_krb_h" "$ac_includes_default"
-if test "x$ac_cv_header_krb_h" = xyes; then :
+if test "x$ac_cv_header_krb_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB_H 1
 _ACEOF
@@ -18139,7 +18648,7 @@ else
   for ac_header in kerberosIV/krb.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "kerberosIV/krb.h" "ac_cv_header_kerberosIV_krb_h" "$ac_includes_default"
-if test "x$ac_cv_header_kerberosIV_krb_h" = xyes; then :
+if test "x$ac_cv_header_kerberosIV_krb_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSIV_KRB_H 1
 _ACEOF
@@ -18148,7 +18657,7 @@ else
   for ac_header in kerberos/krb.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "kerberos/krb.h" "ac_cv_header_kerberos_krb_h" "$ac_includes_default"
-if test "x$ac_cv_header_kerberos_krb_h" = xyes; then :
+if test "x$ac_cv_header_kerberos_krb_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROS_KRB_H 1
 _ACEOF
@@ -18169,7 +18678,7 @@ done
   for ac_header in com_err.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "com_err.h" "ac_cv_header_com_err_h" "$ac_includes_default"
-if test "x$ac_cv_header_com_err_h" = xyes; then :
+if test "x$ac_cv_header_com_err_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_COM_ERR_H 1
 _ACEOF
@@ -18190,7 +18699,7 @@ fi
 # to return localized messages.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
 $as_echo_n "checking for dgettext in -lintl... " >&6; }
-if ${ac_cv_lib_intl_dgettext+:} false; then :
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18224,7 +18733,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
 $as_echo "$ac_cv_lib_intl_dgettext" >&6; }
-if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
+if test "x$ac_cv_lib_intl_dgettext" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBINTL 1
 _ACEOF
@@ -18236,7 +18745,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether localtime caches TZ" >&5
 $as_echo_n "checking whether localtime caches TZ... " >&6; }
-if ${emacs_cv_localtime_cache+:} false; then :
+if test "${emacs_cv_localtime_cache+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test x$ac_cv_func_tzset = xyes; then
@@ -18295,7 +18804,7 @@ if test "x$HAVE_TIMEVAL" = xyes; then
   for ac_func in gettimeofday
 do :
   ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
-if test "x$ac_cv_func_gettimeofday" = xyes; then :
+if test "x$ac_cv_func_gettimeofday" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETTIMEOFDAY 1
 _ACEOF
@@ -18306,7 +18815,7 @@ done
   if test $ac_cv_func_gettimeofday = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday can accept two arguments" >&5
 $as_echo_n "checking whether gettimeofday can accept two arguments... " >&6; }
-if ${emacs_cv_gettimeofday_two_arguments+:} false; then :
+if test "${emacs_cv_gettimeofday_two_arguments+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18350,7 +18859,7 @@ fi
 
 ok_so_far=yes
 ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
-if test "x$ac_cv_func_socket" = xyes; then :
+if test "x$ac_cv_func_socket" = x""yes; then :
 
 else
   ok_so_far=no
@@ -18358,7 +18867,7 @@ fi
 
 if test $ok_so_far = yes; then
   ac_fn_c_check_header_mongrel "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default"
-if test "x$ac_cv_header_netinet_in_h" = xyes; then :
+if test "x$ac_cv_header_netinet_in_h" = x""yes; then :
 
 else
   ok_so_far=no
@@ -18368,7 +18877,7 @@ fi
 fi
 if test $ok_so_far = yes; then
   ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default"
-if test "x$ac_cv_header_arpa_inet_h" = xyes; then :
+if test "x$ac_cv_header_arpa_inet_h" = x""yes; then :
 
 else
   ok_so_far=no
@@ -18402,7 +18911,7 @@ $as_echo "no" >&6; }
 fi
 
 ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
+if test "x$ac_cv_type_pid_t" = x""yes; then :
 
 else
 
@@ -18415,7 +18924,7 @@ fi
 for ac_header in vfork.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
-if test "x$ac_cv_header_vfork_h" = xyes; then :
+if test "x$ac_cv_header_vfork_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_VFORK_H 1
 _ACEOF
@@ -18439,7 +18948,7 @@ done
 if test "x$ac_cv_func_fork" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
 $as_echo_n "checking for working fork... " >&6; }
-if ${ac_cv_func_fork_works+:} false; then :
+if test "${ac_cv_func_fork_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -18492,7 +19001,7 @@ ac_cv_func_vfork_works=$ac_cv_func_vfork
 if test "x$ac_cv_func_vfork" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
 $as_echo_n "checking for working vfork... " >&6; }
-if ${ac_cv_func_vfork_works+:} false; then :
+if test "${ac_cv_func_vfork_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -18628,7 +19137,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
 $as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${emacs_cv_langinfo_codeset+:} false; then :
+if test "${emacs_cv_langinfo_codeset+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18660,7 +19169,7 @@ $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_SIZE_T 1
@@ -18672,7 +19181,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
 $as_echo_n "checking for mbstate_t... " >&6; }
-if ${ac_cv_type_mbstate_t+:} false; then :
+if test "${ac_cv_type_mbstate_t+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18708,7 +19217,7 @@ $as_echo "#define mbstate_t int" >>confdefs.h
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C restricted array declarations" >&5
 $as_echo_n "checking for C restricted array declarations... " >&6; }
-if ${emacs_cv_c_restrict_arr+:} false; then :
+if test "${emacs_cv_c_restrict_arr+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19231,7 +19740,15 @@ test "${exec_prefix}" != NONE &&
 
 ac_config_files="$ac_config_files Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile"
 
-ac_config_commands="$ac_config_commands default"
+
+ac_config_commands="$ac_config_commands mkdirs"
+
+
+ac_config_commands="$ac_config_commands epaths"
+
+
+ac_config_commands="$ac_config_commands gdbinit"
+
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -19297,21 +19814,10 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
+    test "x$cache_file" != "x/dev/null" &&
       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-         mv -f confcache "$cache_file" ;;
-       esac
-      fi
-    fi
+    cat confcache >$cache_file
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -19397,7 +19903,7 @@ fi
 
 
 
-: "${CONFIG_STATUS=./config.status}"
+: ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -19498,7 +20004,6 @@ fi
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -19806,7 +20311,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # values after options handling.
 ac_log="
 This file was extended by emacs $as_me 24.0.50, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -19872,7 +20377,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 emacs config.status 24.0.50
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
 Copyright (C) 2010 Free Software Foundation, Inc.
     "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;;
     "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;;
     "test/automated/Makefile") CONFIG_FILES="$CONFIG_FILES test/automated/Makefile" ;;
-    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+    "mkdirs") CONFIG_COMMANDS="$CONFIG_COMMANDS mkdirs" ;;
+    "epaths") CONFIG_COMMANDS="$CONFIG_COMMANDS epaths" ;;
+    "gdbinit") CONFIG_COMMANDS="$CONFIG_COMMANDS gdbinit" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp= ac_tmp=
+  tmp=
   trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 ' 0
   trap 'as_fn_exit 1' 1 2 13 15
 }
@@ -20052,13 +20558,12 @@ $debug ||
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
+  test -n "$tmp" && test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -20097,13 +20602,13 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
 _ACEOF
 
 # Create commands to substitute file output variables.
 {
   echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
-  echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
+  echo 'cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&' &&
   echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
   echo "_ACAWK" &&
   echo "_ACEOF"
@@ -20136,7 +20641,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -20184,7 +20689,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = "\a"
   \$ac_cs_awk_pipe_init
@@ -20222,7 +20727,7 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
   || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
@@ -20256,7 +20761,7 @@ fi # test -n "$CONFIG_FILES"
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+cat >"$tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -20268,8 +20773,8 @@ _ACEOF
 # handling of long lines.
 ac_delim='%!_!# '
 for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
     as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
@@ -20370,7 +20875,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -20389,7 +20894,7 @@ do
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
+      -) ac_f="$tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
         # because $ac_f cannot contain `:'.
@@ -20398,7 +20903,7 @@ do
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
@@ -20424,8 +20929,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -20563,25 +21068,24 @@ $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
 if $ac_cs_awk_getline; then
-  $AWK -f "$ac_tmp/subs.awk"
+  $AWK -f "$tmp/subs.awk"
 else
-  $AWK -f "$ac_tmp/subs.awk" | $SHELL
-fi \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+  $AWK -f "$tmp/subs.awk" | $SHELL
+fi >$tmp/out \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$ac_tmp/stdin"
+  rm -f "$tmp/stdin"
   case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
   esac \
   || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
@@ -20592,20 +21096,20 @@ which seems to be undefined.  Please make sure it is defined" >&2;}
   if test x"$ac_file" != x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
+      mv "$tmp/config.h" "$ac_file" \
        || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
@@ -20746,21 +21250,20 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "default":C)
-
-### Make the necessary directories, if they don't exist.
+    "mkdirs":C)
 for dir in etc lisp ; do
   test -d ${dir} || mkdir ${dir}
 done
-
+ ;;
+    "epaths":C)
 echo creating src/epaths.h
 ${MAKE-make} epaths-force
-
+ ;;
+    "gdbinit":C)
 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
   echo creating src/.gdbinit
   echo source $srcdir/src/.gdbinit > src/.gdbinit
 fi
-
  ;;
 
   esac
@@ -20800,3 +21303,4 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
index 376c82c4ca471bdc0bedd383c91cc52708263b24..69d1a1e5bd305d5b2278e4b4a342639a69d99f84 100644 (file)
@@ -162,7 +162,7 @@ OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
-OPTION_DEFAULT_OFF([ns],[use nextstep (Cocoa or GNUstep) windowing system])
+OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
 
 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
@@ -2244,15 +2244,23 @@ if test "${HAVE_X11}" = "yes"; then
       fi                          # "$HAVE_XFT" != no
     fi                            # "x${with_xft}" != "xno"
 
-    dnl For the "Does Emacs use" message at the end.
+    ## We used to allow building with FreeType and without Xft.
+    ## However, the ftx font backend driver is not in good shape.
     if test "$HAVE_XFT" != "yes"; then
+       dnl For the "Does Emacs use" message at the end.
        HAVE_XFT=no
+       HAVE_FREETYPE=no
+    else
+       dnl Strict linkers fail with
+       dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
+       dnl if -lfreetype is not specified.
+       dnl The following is needed to set FREETYPE_LIBS.
+       PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
+                        HAVE_FREETYPE=no) 
+
+       test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
     fi
 
-    ## We used to allow building with FreeType and without Xft.
-    ## However, the ftx font backend driver is not in good shape.
-    HAVE_FREETYPE=$HAVE_XFT
-
     HAVE_LIBOTF=no
     if test "${HAVE_FREETYPE}" = "yes"; then
       AC_DEFINE(HAVE_FREETYPE, 1,
@@ -3697,6 +3705,18 @@ fi
 test "${exec_prefix}" != NONE &&
   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
 
+AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
+       doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
+       doc/lispref/Makefile src/Makefile \
+       lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile])
+
+dnl Make the necessary directories, if they don't exist.
+AC_CONFIG_COMMANDS([mkdirs], [
+for dir in etc lisp ; do
+  test -d ${dir} || mkdir ${dir}
+done
+])
+
 dnl You might wonder (I did) why epaths.h is generated by running make,
 dnl rather than just letting configure generate it from epaths.in.
 dnl One reason is that the various paths are not fully expanded (see above);
@@ -3705,22 +3725,18 @@ dnl Secondly, the GNU Coding standards require that one should be able
 dnl to run `make prefix=/some/where/else' and override the values set
 dnl by configure.  This also explains the `move-if-change' test and
 dnl the use of force in the `epaths-force' rule in Makefile.in.
-AC_OUTPUT(Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
-       doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
-       doc/lispref/Makefile src/Makefile \
-       lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile, [
-
-### Make the necessary directories, if they don't exist.
-for dir in etc lisp ; do
-  test -d ${dir} || mkdir ${dir}
-done
-
+AC_CONFIG_COMMANDS([epaths], [
 echo creating src/epaths.h
 ${MAKE-make} epaths-force
+], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
 
+AC_CONFIG_COMMANDS([gdbinit], [
 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
   echo creating src/.gdbinit
   echo source $srcdir/src/.gdbinit > src/.gdbinit
 fi
+])
 
-], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
+AC_OUTPUT
+
+dnl configure.in ends here
index f113a7987c12a1f767a554cce1a86e7580496ef9..dfdef6a0b055bd441a1405f0ee6508564227a69d 100644 (file)
@@ -1,3 +1,33 @@
+2011-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * search.texi (Isearch Yank): C-y now bound to isearch-yank-kill.
+
+2011-03-03  Drake Wilson  <drake@begriffli.ch>  (tiny change)
+
+       * misc.texi (emacsclient Options): Add q/quiet.
+
+2011-03-02  Glenn Morris  <rgm@gnu.org>
+
+       * mule.texi (Communication Coding) <x-select-request-type>:
+       Remove duplicate (essentially) paragraph.  (Bug#8148)
+
+2011-03-01  Christoph Scholtes  <cschol2112@googlemail.com>
+
+       * maintaining.texi (Format of ChangeLog): Add reference to
+       add-log-full-name.
+       (Change Log Commands): Add documentation for combining multiple
+       symbols in one change.
+
+2011-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * custom.texi (Directory Variables):
+       Give an example of excluding subdirectories.
+
+2011-02-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * search.texi (Regexp Search): Move index entries about regexps to the
+       "Regexps" node.  Add index entries for regexp search.  (Bug#8096)
+
 2011-02-19  Glenn Morris  <rgm@gnu.org>
 
        * dired.texi (Dired): Dired-X version number was dropped.
index dfd55b13f1859d9ec4ea0f44672b2e5e81cc2cb7..9304e8bef087a84cf0301b391ef43199c11947a6 100644 (file)
@@ -1331,7 +1331,8 @@ corresponding alist applies to all the files in that subdirectory.
          (tab-width . 4)
          (fill-column . 80)))
  (c-mode . ((c-file-style . "BSD")))
- (java-mode . ((c-file-style . "BSD")))
+ (java-mode . ((c-file-style . "BSD")
+               (subdirs . nil)))
  ("src/imported"
   . ((nil . ((change-log-default-name . "ChangeLog.local"))))))
 @end example
@@ -1340,8 +1341,10 @@ corresponding alist applies to all the files in that subdirectory.
 This example shows some settings for a hypothetical project.  It sets
 @samp{indent-tabs-mode}, @code{tab-width}, and @code{fill-column} for
 any file in the project's directory tree, and it sets the indentation
-style for any C or Java source file.  Finally, it specifies a different
-@file{ChangeLog} file name for any file in the @file{src/imported}
+style for any C or Java source file.  The special @code{subdirs} element
+indicates that the Java mode settings are only to be applied in the
+current directory, not in any subdirectories.  Finally, it specifies a
+different @file{ChangeLog} file name for any file in the @file{src/imported}
 subdirectory of the directory where you put the @file{.dir-locals.el}
 file.
 
index 60c569596ea9a2169be8154f0d5778b9813532f5..d311104ddd7d68732fc920db7ad183bc299f0e1d 100644 (file)
@@ -1486,6 +1486,10 @@ changed.
 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
 rather than starting a new item.
 
+You can combine multiple changes of the same nature.  If you don't
+enter any text after the initial @kbd{C-x 4 a}, any subsequent
+@kbd{C-x 4 a} adds another symbol to the change.
+
 @vindex add-log-always-start-new-record
   If @code{add-log-always-start-new-record} is non-@code{nil},
 @kbd{C-x 4 a} always makes a new entry, even if the last entry
@@ -1535,13 +1539,14 @@ insert a VC log entry into a Change Log buffer by typing @kbd{C-x v a}
 @node Format of ChangeLog
 @subsection Format of ChangeLog
 
-  A change log entry starts with a header line that contains the current
-date, your name, and your email address (taken from the variable
-@code{add-log-mailing-address}).  Aside from these header lines, every
-line in the change log starts with a space or a tab.  The bulk of the
-entry consists of @dfn{items}, each of which starts with a line starting
-with whitespace and a star.  Here are two entries, both dated in May
-1993, with two items and one item respectively.
+  A change log entry starts with a header line that contains the
+current date, your name (taken from the variable
+@code{add-log-full-name}), and your email address (taken from the
+variable @code{add-log-mailing-address}).  Aside from these header
+lines, every line in the change log starts with a space or a tab.  The
+bulk of the entry consists of @dfn{items}, each of which starts with a
+line starting with whitespace and a star.  Here are two entries, both
+dated in May 1993, with two items and one item respectively.
 
 @iftex
 @medbreak
index d7143d1498a9a69b9bfb6f5f3405be26762b5923..1299895a06e8860b6591d0c9f7a9ee36e99af481 100644 (file)
@@ -1672,6 +1672,11 @@ all server buffers are finished.  You can take as long as you like to
 edit the server buffers within Emacs, and they are @emph{not} killed
 when you type @kbd{C-x #} in them.
 
+@item -q
+@itemx --quiet
+Do not let @command{emacsclient} display messages about waiting for
+Emacs or connecting to remote server sockets.
+
 @item -s @var{server-name}
 @itemx --socket-name=@var{server-name}
 Connect to the Emacs server named @var{server-name}.  The server name
index f0facec86c11925276bc9d134bd9b5fa8e7646f6..22c155d26deb97393baa84ce6607811a0561f679 100644 (file)
@@ -1153,15 +1153,6 @@ specified by one of the environment variables @env{LC_ALL},
 specified above, whose value is nonempty is the one that determines
 the text representation.)
 
-@vindex x-select-request-type
-  The variable @code{x-select-request-type} specifies a selection data
-type of selection to request from the X server.  The default value is
-@code{nil}, which means Emacs tries @code{COMPOUND_TEXT} and
-@code{UTF8_STRING}, and uses whichever result seems more appropriate.
-You can explicitly specify the data type by setting the variable to
-one of the symbols @code{COMPOUND_TEXT}, @code{UTF8_STRING},
-@code{STRING} and @code{TEXT}.
-
 @node File Name Coding
 @section Coding Systems for File Names
 
index df0579ab9ea0131bb12b525371c3cf3e133f165e..9fdccc3218d971e7118e1cfa89cdc9cc586b1181 100644 (file)
@@ -271,19 +271,24 @@ keybindings.  These keybindings are part of the keymap
 @node Isearch Yank
 @subsection Isearch Yanking
 
-  Within incremental search, you can use @kbd{C-w} and @kbd{C-y} to grab
-text from the buffer into the search string.  This makes it convenient
-to search for another occurrence of text at point.
+  Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
+copies text from the kill ring into the search string.  It uses the
+same text that @kbd{C-y}, outside of incremental search, would
+normally yank into the buffer.  @kbd{Mouse-2} in the echo area does
+the same.  @xref{Yanking}.
 
-  @kbd{C-w} copies the character or word after point and adds it to
-the search string, advancing point over it.  (The decision, whether to
-copy a character or a word, is heuristic.)
+  @kbd{C-w} (@code{isearch-yank-word-or-char}) grabs the next
+character or word at point, and adds it to the search string.  This is
+convenient for searching for another occurrence of the text at point.
+(The decision, whether to copy a character or a word, is heuristic.)
 
-  @kbd{C-y} is similar to @kbd{C-w} but copies all the rest of the
-current line into the search string.  If point is already at the end
-of a line, it grabs the entire next line.  If the search is currently
-case-insensitive, both @kbd{C-y} and @kbd{C-w} convert the text they
-copy to lower case, so that the search remains case-insensitive.
+  Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) grabs the rest
+of the current line, and adds it to the search string.  If point is
+already at the end of a line, it grabs the entire next line.
+
+  If the search is currently case-insensitive, both @kbd{C-w} and
+@kbd{M-s C-e} convert the text they copy to lower case, so that the
+search remains case-insensitive.
 
   @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one
 character at a time: @kbd{C-M-w} deletes the last character from the
@@ -293,10 +298,6 @@ after point into the search string is to enter the minibuffer by
 @kbd{M-e} and to type @kbd{C-f} at the end of the search string in the
 minibuffer.
 
-  The character @kbd{M-y} copies text from the kill ring into the
-search string.  It uses the same text that @kbd{C-y} would yank.
-@kbd{Mouse-2} in the echo area does the same.  @xref{Yanking}.
-
 @node Isearch Scroll
 @subsection Scrolling During Incremental Search
 
@@ -468,8 +469,8 @@ apply to the lazy highlight, which always matches whole words.
 
 @node Regexp Search
 @section Regular Expression Search
-@cindex regular expression
-@cindex regexp
+@cindex regexp search
+@cindex search for a regular expression
 
   A @dfn{regular expression} (or @dfn{regexp} for short) is a pattern
 that denotes a class of alternative strings to match.  GNU Emacs
@@ -543,6 +544,8 @@ Search}.
 @node Regexps
 @section Syntax of Regular Expressions
 @cindex syntax of regexps
+@cindex regular expression
+@cindex regexp
 
   This manual describes regular expression features that users
 typically use.  @xref{Regular Expressions,,, elisp, The Emacs Lisp
index 338dbb5e7fd729ec24a0d54e43862f583402b310..2aecc5a6b4b4ebdca79f942ebaf73f8efd78ecb3 100644 (file)
-2011-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * variables.texi (Scope): Mention the availability of lexical scoping.
-       (Lexical Binding): New node.
-       * eval.texi (Eval): Add `eval's new `lexical' arg.
-
-2011-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vol2.texi (Top):
-       * vol1.texi (Top):
-       * objects.texi (Programming Types, Funvec Type, Type Predicates):
-       * functions.texi (Functions, What Is a Function, Function Currying):
-       * elisp.texi (Top): Remove mentions of funvec and curry.
-
-2011-02-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi: Sync @dircategory with ../../info/dir.
-
-       * files.texi (Visiting Functions): Document find-file-literally,
-       both the command and the variable.
-
-       * variables.texi (Creating Buffer-Local): Explain the meaning of
-       permanent local variables.
-
-       * files.texi (Visiting Functions): Document find-file-literally,
-       both the command and the variable.
-
-       * variables.texi (Creating Buffer-Local): Explain the meaning of
-       permanent local variables.
-
-2011-02-19  Glenn Morris  <rgm@gnu.org>
-
-       * keymaps.texi (Remapping Commands): Mention how to undo it.
-
-2011-02-09  Reuben Thomas  <rrt@sc3d.org>
-
-       * loading.texi (Hooks for Loading): Remove unnecessary advice
-       about eval-after-load (Bug#7986).
-
-2011-02-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Accessing Mouse): Note that a header line is not
-       included in the row of posn-col-row.
-
-2011-02-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Major Mode Conventions): Add face guidelines.
-       (Faces for Font Lock): List faces in order of prominence.
-
-2011-02-01  Paul Eggert  <eggert@cs.ucla.edu>
-
-       format-time-string now supports subsecond time stamp resolution
-       * os.texi (Time Parsing): Document %N.
-
-2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * vol1.texi (Top):
-       * vol2.texi (Top):
-       * elisp.texi (Top):
-       * display.texi (Display Property): Shorten the menu description of
-       the "Other Display Specs" node (Bug#7816).
-
-       * keymaps.texi (Defining Menus): Add "menu item" and "extended
-       menu item" concept index entries (Bug#7805).
-
-2011-01-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (texinfodir): New variable.
-       (usermanualdir): Remove as redundant with $(emacsdir).
-       (MAKEINFO): Remove options, leave only program name.
-       (MAKEINFO_OPTS): New variable.
-       (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
-
-2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
-            Richard Kim  <emacs18@gmail.com>
-
-       * loading.texi (Library Search): Document list-load-path-shadows
-       (Bug#7757).
-
-2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * searching.texi (Regexp Special): Remove outdated discussion of
-       character sets (Bug#7780).
-
-       * frames.texi (Pop-Up Menus): Document where menu title comes
-       from (Bug#7684).
-
-2011-01-25  Glenn Morris  <rgm@gnu.org>
-
-       * display.texi (Making Buttons): Mention limitation of text buttons.
-
-2011-01-23  Werner Lemberg  <wl@gnu.org>
-
-       * Makefile.in (MAKEINFO): Now controlled by `configure'.
-       (MAKEINFO_OPTS): New variable.  Use it where appropriate.
-       (ENVADD): New variable to control texi2dvi and texi2pdf.
-
-2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.texi (Directory Names): Move directory-abbrev-alist doc to
-       Emacs manual.
-
-2011-01-15  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (Directory Names): Explain why FROM in
-       directory-abbrev-alist should begin with \`.  (Bug#7777)
-
-2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * loading.texi (Hooks for Loading): Adjust doc of eval-after-load.
-
-2011-01-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * modes.texi (Emulating Mode Line): Fix last change.
-
-2011-01-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * modes.texi (Emulating Mode Line): Update documentation of
-       format-mode-line according to changes that fixed bug #7587.
-
-2010-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Derived Modes): Mention prog-mode.
-
-       * keymaps.texi (Simple Menu Items, Extended Menu Items): Remove mention
-       of the key-binding-data cache since we don't use it any more.
-
-2010-12-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Shell Arguments):
-       * strings.texi (Creating Strings): Don't mention "shell commands";
-       make it explicit that `split-string-and-unquote' and
-       `combine-and-quote-strings' are mainly for working with arguments
-       to call-process and start-process.
-
-       * processes.texi (Shell Arguments): Fix documentation of
-       `split-string-and-unquote'.  Add indexing.  (Bug#7563)
-
-2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Auto-Indentation): New section to document SMIE.
-       (Major Mode Conventions):
-       * text.texi (Mode-Specific Indent): Refer to it.
-
-2010-12-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Other Display Specs): Document left-fringe and
-       right-fringe display specs.
-
-2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * backups.texi (Making Backups):
-       * modes.texi (Example Major Modes): Use recommended coding style.
-       (Major Mode Basics, Derived Modes): Encourge more strongly use of
-       define-derived-mode.  Mention completion-at-point-functions.
-
-2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * nonascii.texi (Converting Representations):
-       Document byte-to-string.
-
-2010-12-08  Glenn Morris  <rgm@gnu.org>
-
-       * buffers.texi (Modification Time):
-       verify-visited-file-modtime now defaults to the current buffer.
-
-2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * nonascii.texi (Converting Representations): Document byte-to-string.
-
-       * strings.texi (Creating Strings): Don't mention semi-obsolete
-       function char-to-string.
-       (String Conversion): Shorten discussion of semi-obsolete function
-       string-to-char.  Link to Converting Representations.
-
-       * objects.texi (Symbol Type):
-       * text.texi (Near Point):
-       * help.texi (Help Functions):
-       * functions.texi (Mapping Functions): Use string instead of
-       char-to-string in examples.
-
-2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Kill Functions, Kill Functions)
-       (Low-Level Kill Ring, Low-Level Kill Ring): Remove obsolete
-       YANK-HANDLER args.
-
-       * symbols.texi (Creating Symbols): Using unintern without an
-       obarray arg is now obsolete.
-
-       * numbers.texi (Float Basics): Document float-e and float-pi.
-
-       * variables.texi (Defining Variables): Change "pi" example to
-       "float-pi".
-
-2010-11-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * commands.texi (Click Events): Document the values of X, Y and
-       COL, ROW in the event's position, when the click is on the header
-       or mode line, on the fringes, or in the margins.
-
-2010-11-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * customize.texi (Composite Types): Lower-case index entry.
-
-       * loading.texi (How Programs Do Loading):
-       Document load-file-name.  (Bug#7346)
-
-2010-11-17  Glenn Morris  <rgm@gnu.org>
-
-       * text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
-
-2010-11-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Usual Display): Characters with no fonts are not
-       necessarily displayed as empty boxes.
-
-2010-10-31  Glenn Morris  <rgm@gnu.org>
-
-       * maps.texi (Standard Keymaps): Update File menu description.
-
-2010-10-28  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
-
-2010-10-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Window Systems): Deprecate use of window-system as
-       a predicate.
-
-2010-10-23  Glenn Morris  <rgm@gnu.org>
-
-       * help.texi (Documentation Basics): Remove mentions of digest-doc and
-       sorted-doc.
-
-2010-10-15  Eli Zaretskii  <eliz@gnu.org>
-
-       * os.texi (Dynamic Libraries): New node, with slightly modified
-       text deleted from "Image Formats".
-       (System Interface): Add @menu entry for "Dynamic Libraries".
-
-       * display.texi (Image Formats): Remove description of
-       image-library-alist.  (Renamed in 2010-10-13T14:50:06Z!lekktu@gmail.com.)
-
-2010-10-12  Glenn Morris  <rgm@gnu.org>
-
-       * book-spine.texinfo: Rename to book-spine.texi.
-
-2010-10-11  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
-
-       * Makefile.in (DVIPS): New variable.
-       (.PHONY): Add html, ps.
-       (html, elisp.html, ps, elisp.ps): New targets.
-       (clean): Delete html, ps files.
-       ($(infodir)/elisp): Remove unnecessary includes.
-
-2010-10-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (emacsdir): New variable.
-       (srcs): Add emacsver.texi.
-       ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
-
-2010-10-09  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (VPATH): Remove.
-       (infodir): Make it absolute.
-       (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
-
-       * Makefile.in (dist): Anchor regexps.
-
-       * Makefile.in (srcs): Put elisp.texi first.
-       ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
-
-       * Makefile.in (infoclean): Remove harmless, long-standing error.
-
-       * Makefile.in ($(infodir)): Delete rule.
-       (mkinfodir): New.
-       ($(infodir)/elisp): Use $mkinfodir instead of infodir.
-
-       * Makefile.in (dist): Remove reference to emacsver.texi.in.
-       Also copy emacsver.texi, and edit $emacsdir.
-
-2010-10-09  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (emacsdir): New variable.
-       (MAKEINFO): Add -I $emacsdir.
-       (dist): Copy emacsver.texi.
-       (srcs): Add emacsver.texi.
-
-       * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
-       Set EMACSVER by including emacsver.texi.
-
-       * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
-
-2010-10-07  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (version): New, set by configure.
-       (clean): Delete dist tar file.
-       (dist): Use version in tar name.
-
-2010-10-06  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in: Rearrange to more closely resemble doc/emacs/Makefile.
-       (INSTALL_INFO): Remove unused variable.
-       (mostlyclean, infoclean, dist): New rules.
-       (clean): Delete dvi and pdf files.
-       (maintainer-clean): Remove elisp.oaux, use infoclean.
-       ($(infodir)): Add parallel build workaround.
-
-2010-10-04  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (dvi, pdf, $(infodir)): New targets.
-       ($(infodir)/elisp): Ensure target directory exists.  Use $@.
-       Fix -I typo.
-       (clean): No 'make.out' or 'core' files.
-       (.PHONY): Declare clean rules.
-       (maintainer-clean): Delete pdf file.  Guard against cd failures.
-
-2010-10-03  Glenn Morris  <rgm@gnu.org>
-
-       * files.texi (File Name Components): Remove ignored section about
-       deleted variable directory-sep-char.
-
-2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): New defopt
-       remote-file-name-inhibit-cache.
-
-2010-10-02  Glenn Morris  <rgm@gnu.org>
-
-       * os.texi (Killing Emacs): Hook now runs in batch mode.
-
-2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * text.texi (Special Properties): Clarify when modification-hooks run.
-
-2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.texi (Syntax Flags): Document new `c' flag.
-
-2010-09-09  Glenn Morris  <rgm@gnu.org>
-
-       * display.texi (ImageMagick Images): General cleanup.
-
-2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
-
-       * files.texi (Directory Names): Use \` rather than ^.
-
-2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * text.texi (Low-Level Kill Ring):
-       * frames.texi (Window System Selections): Remove cut buffer
-       documentation.
-
-2010-08-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Fringe Size/Pos): Add a cross-reference to "Layout
-       Parameters", where the default fringe width is described.
-
-       * frames.texi (Window Frame Parameters, Basic Parameters)
-       (Position Parameters, Layout Parameters, Management Parameters)
-       (Cursor Parameters, Font and Color Parameters): Add indexing for
-       frame parameters.  (Bug#6929)
-
-2010-08-25  Tom Tromey  <tromey@redhat.com>
-
-       * vol2.texi (Top): Update.
-       * vol1.texi (Top): Update.
-       * tips.texi (Library Headers): Mention Package-Version and
-       Package-Requires.
-       * package.texi: New file.
-       * os.texi (System Interface): Update pointers.
-       * elisp.texi (Top): Link to new nodes.  Include package.texi.
-       * anti.texi (Antinews): Update pointers.
-
-2010-08-25  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Filter Functions): Fix last change.
-
-2010-08-24  Markus Triska  <triska@gmx.at>
-
-       * processes.texi (Filter Functions): Use `buffer-live-p' instead
-       of `buffer-name' in the main text as well as in the example
-       (Bug#3098).
-
-2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * nonascii.texi (Text Representations):
-       * loading.texi (Loading Non-ASCII):
-       * compile.texi (Byte Compilation): Don't mention obsolete
-       --unibyte command-line argument.
-
-2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Defining Minor Modes): Doc fix (Bug#6880).
-
-2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * objects.texi (Bool-Vector Type): Minor definition tweak (Bug#6878).
-
-2010-08-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * commands.texi (Misc Events): Add cross-references to where
-       POSITION of a mouse event is described in detail.
-
-2010-08-08  Christoph  <cschol2112@googlemail.com>
-
-       * control.texi (Handling Errors) <error-message-string>: Fix arg name.
-
-2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * modes.texi (Defining Minor Modes): Use C-backspace, not C-delete.
-       Suggested by Štěpán Němec <stepnem@gmail.com>.
-
-2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.texi (High-Level Completion): Document args of
-       `read-buffer-function' (bug#5625).
-
-2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * frames.texi (Layout Parameters): Add doc for tool-bar-position.
-
-2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
-
-       * processes.texi (Process Information): Explain process property
-       `remote-tty'.
-
-2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * modes.texi (Defining Minor Modes): Use C-delete in examples,
-       instead of "\C-\^?" (bug#6334).
-
-       * text.texi (Special Properties): Fix typo.
-
-2010-07-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * internals.texi (Writing Emacs Primitives): Adapt to ANSI C
-       calling sequences, which are now the standard.
-
-2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Undo): Clarify command loop behavior (Bug#2433).
-
-       * commands.texi (Command Overview): Mention undo-boundary call.
-
-2010-06-23  Glenn Morris  <rgm@gnu.org>
-
-       * abbrevs.texi, commands.texi, compile.texi, debugging.texi:
-       * display.texi, edebug.texi, elisp.texi, eval.texi, files.texi:
-       * frames.texi, functions.texi, internals.texi, keymaps.texi:
-       * loading.texi, minibuf.texi, numbers.texi, os.texi, processes.texi:
-       * searching.texi, sequences.texi, strings.texi, syntax.texi:
-       * text.texi, tips.texi, vol1.texi, vol2.texi, windows.texi:
-       Untabify Texinfo files.
-
-2010-06-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Minor Mode Conventions): Fix typo (Bug#6477).
-
-2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * errors.texi (Standard Errors): Remove unnecessary markup (Bug#6461).
-
-2010-06-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * searching.texi (Regexp Special): Remove obsolete information
-       about matching non-ASCII characters, and suggest using char
-       classes (Bug#6283).
-
-2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.texi (Basic Completion): Add missing "@end defun".
-
-2010-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.texi (Basic Completion): Document completion-boundaries.
-       (Programmed Completion): Document the new fourth method for boundaries.
-
-2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Image Cache): Update documentation about image caching.
-
-2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
-
-       * windows.texi (Textual Scrolling):
-       * tips.texi (Coding Conventions):
-       * minibuf.texi (Minibuffer History):
-       * maps.texi (Standard Keymaps):
-       * loading.texi (Where Defined):
-       * edebug.texi (Instrumenting): Fix typos.
-
-2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Menu Bar): Document :advertised-binding property.
-
-       * functions.texi (Obsolete Functions):
-       Document set-advertised-calling-convention.
-
-       * minibuf.texi (Basic Completion): Document completion-in-region.
-       (Programmed Completion): Document completion-annotate-function.
-
-       * commands.texi (Reading One Event): Document read-key.
-       (Distinguish Interactive): Document KIND arg to
-       called-interactively-p.  Delete obsolete interactive-p.
-
-       * elisp.texi (Top): Update node description.
-
-2010-05-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Character Properties):
-       Document unicode-category-table.  Add an index entry for Unicode
-       general category.
-
-2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Version 23.2 released.
-
-2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * locals.texi (Standard Buffer-Local Variables):
-       Remove @ignore'd reference to `direction-reversed'.
-
-2010-04-14  Juri Linkov  <juri@jurta.org>
-
-       Fix @deffn without category.
-
-       * abbrevs.texi (Abbrev Expansion): Replace @deffn with @defun
-       for `abbrev-insert'.
-
-       * buffers.texi (Indirect Buffers): Add category `Command'
-       to @deffn of `clone-indirect-buffer'.
-
-       * windows.texi (Cyclic Window Ordering): Replace @deffn with @defun
-       for `next-window' and `previous-window'.  Add category `Command'
-       to @deffn of `pop-to-buffer'.
-
-2010-04-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * nonascii.texi (Text Representations): Don't mark
-       enable-multibyte-characters as a user option.
-
-2010-03-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * control.texi (Handling Errors): How to re-throw a signal caught
-       by condition-case.
-
-2010-03-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * loading.texi (Hooks for Loading): Document after-load-functions.
-       Copyedits.
-
-2010-03-24  Arni Magnusson  <arnima@hafro.is>  (tiny change)
-
-       * frames.texi (Cursor Parameters): Fix typo.  (Bug#5760)
-
-2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * processes.texi (Network Processes): Document seqpacket type.
-
-2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi (System Environment): Do not mention lynxos.
-
-2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Branch for 23.2.
-
-2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * objects.texi (Integer Type): Take note of the read syntax
-       exception for numbers that cannot fit in the integer type.
-
-2010-03-03  Glenn Morris  <rgm@gnu.org>
-
-       * numbers.texi (Integer Basics, Bitwise Operations):
-       * objects.texi (Integer Type): Update for integers now being 30-bit.
-
-2010-02-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Low-Level Font): Document :otf font-spec property.
-
-2010-02-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * display.texi (Line Height): Avoid obsolete special default variables
-       like default-major-mode.
-
-2010-01-28  Alan Mackenzie  <acm@muc.de>
-
-       * display.texi (Auto Faces): Say fontification-functions is called
-       whether or not Font Lock is enabled.  Tidy up the wording a bit.
-
-2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * elisp.texi: Remove duplicate edition information (Bug#5407).
-
-2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * two.el (volume-header-toc-markup): Fix typos in docstring.
-
-2010-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       Avoid dubious uses of save-excursions.
-       * positions.texi (Excursions): Recommend the use of
-       save-current-buffer if applicable.
-       * text.texi (Clickable Text): Fix the example code which used
-       save-excursion in a naive way which sometimes preserves point and
-       sometimes not.
-       * variables.texi (Creating Buffer-Local):
-       * os.texi (Session Management):
-       * display.texi (GIF Images):
-       * control.texi (Cleanups): Use (save|with)-current-buffer.
-
-2010-01-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * modes.texi (Example Major Modes): Fix indentation.  (Bug#5195)
-
-2010-01-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * nonascii.texi (Text Representations, Character Codes)
-       (Converting Representations, Explicit Encoding)
-       (Translation of Characters): Use hex notation consistently.
-       (Character Sets): Fix map-charset-chars doc (Bug#5197).
-
-2010-01-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * loading.texi (Where Defined): Make it clearer that these are
-       loaded files (Bug#5068).
-
-2009-12-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Completion Styles): Document `initials' style.
-
-2009-12-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Resources): Describe inhibit-x-resources.
-       (Size Parameters): Copyedit.
-
-       * hash.texi (Creating Hash):
-       * objects.texi (Hash Table Type): Document the new hash table
-       printed representation.
-
-       * minibuf.texi (Basic Completion): 4th arg to all-completions is
-       obsolete.
-
-       * processes.texi (Process Buffers):
-       Document process-kill-buffer-query-function.
-
-2009-12-05  Glenn Morris  <rgm@gnu.org>
-
-       * hooks.texi (Standard Hooks): Remove diary-display-hook, replaced by
-       diary-display-function, and no longer recommended to be a hook.
-       Update for changes in the names of calendar and diary hooks.
-       diary-print-entries-hook has changed section.
-
-2009-11-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * text.texi (Special Properties): More accurate description of
-       what the `cursor' property does.
-
-2009-11-26  Kevin Ryde  <user42@zip.com.au>
-
-       * commands.texi (Misc Events): vindex mouse-wheel-up-event and
-       mouse-wheel-down-event, the closest thing to a definition for them.
-       * os.texi (Startup Summary): vindex inhibit-startup-message and
-       inhibit-splash-screen.
-       (Command-Line Arguments): vindex argv.
-       (Suspending Emacs): vindex suspend-tty-functions and
-       resume-tty-functions.  Don't want to index every hook, but having
-       the programming ones is helpful.
-
-2009-11-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Motion Events): Fix typo (Bug#4907).
-
-2009-11-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * searching.texi (Char Classes): Note that [:upper:] and [:lower:]
-       are affected by case-fold-search (Bug#4483).
-
-2009-11-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Reading File Names): Note that read-file-name may
-       use a graphical file dialog.
-
-2009-10-31  Glenn Morris  <rgm@gnu.org>
-
-       * nonascii.texi (User-Chosen Coding Systems): Minor reword.  (Bug#4817)
-
-2009-10-16  Kevin Ryde  <user42@zip.com.au>
-
-       * files.texi (Magic File Names): Add @vindex file-name-handler-alist,
-       in particular so `info-lookup-symbol' can find its docs.
-
-2009-10-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * variables.texi (Constant Variables): Distinguish from defconst
-       variables.
-       (Defining Variables): Add cindex.
-
-2009-10-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Time of Day): Clarify that the microsecond part is
-       ignored (Bug#4637).
-
-2009-10-11  Glenn Morris  <rgm@gnu.org>
-
-       * frames.texi (Size and Position): Clarify what is included in the frame
-       height.  (Bug#4535)
-
-2009-10-10  Glenn Morris  <rgm@gnu.org>
-
-       * windows.texi (Size of Window): The relationship between window and
-       frame heights is not so simple.  (Bug#4535)
-       Mention window-full-height-p.
-
-2009-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * positions.texi (Text Lines): Remove goto-line, since it shouldn't be
-       used from Lisp.
-
-2009-10-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (Directory Names) <abbreviate-file-name>:
-       Document that root home directories are not replaced with "~".
-
-2009-10-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * text.texi (Special Properties): Document the meaning of the
-       `cursor' text property whose value is an integer.
-
-2009-10-05  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Add `copy-directory'.
-
-2009-10-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (File Attributes): Fix description of file
-       attributes.  (Bug#4638) Update attributes of files.texi example to
-       be more representative.
-
-2009-10-05  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Create/Delete Dirs): New command copy-directory.
-
-2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * anti.texi (Antinews):
-       * macros.texi (Indenting Macros):
-       * strings.texi (Creating Strings, Case Conversion):
-       Remove duplicate words.
-
-2009-10-01  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Create/Delete Dirs): delete-directory has an
-       optional parameter RECURSIVE.
-
-2009-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * buffers.texi (Swapping Text): Minor clarification.
-
-2009-10-01  Glenn Morris  <rgm@gnu.org>
-
-       * functions.texi (Declaring Functions): Mention that we also search for
-       ".m" files in the src/ directory.
-
-2009-09-25  David Engster  <deng@randomsample.de>
-
-       * display.texi (Managing Overlays): Document copy-overlay (Bug#4549).
-
-2009-09-22  Glenn Morris  <rgm@gnu.org>
-
-       * internals.texi (Building Emacs): Mention preloaded-file-list.
-
-2009-09-14  Alan Mackenzie  <acm@muc.de>
-
-       * os.texi (Terminal Output): Put "@code{}" around "stdout".
-
-2009-09-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * functions.texi (Anonymous Functions): Rearrange discussion,
-       giving usage of unquoted lambda forms first.  Mention that
-       `function' and `#'' are no longer required (Bug#4290).
-
-2009-09-11  Alan Mackenzie  <acm@muc.de>
-
-       * os.texi (Terminal Output): Document `send-string-to-terminal' in
-       batch mode.
-
-2009-09-01  Glenn Morris  <rgm@gnu.org>
-
-       * display.texi (Face Functions): Mention define-obsolete-face-alias.
-
-2009-08-26  Ulrich Mueller  <ulm@gentoo.org>
-
-       * nonascii.texi (Character Codes): Fix typos.
-
-2009-08-25  Michael Albinus  <michael.albinus@gmx.de>
-
-       * processes.texi (Synchronous Processes): New defvar
-       process-file-side-effects.
-
-2009-08-25  Glenn Morris  <rgm@gnu.org>
-
-       * display.texi (Fontsets): Fix typo.
-
-       * files.texi (Format Conversion Round-Trip): Mention nil regexp.
-
-2009-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * processes.texi (Asynchronous Processes): Adjust arglist of
-       start-process-shell-command and start-file-process-shell-command.
-
-2009-08-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * advice.texi (Argument Access in Advice): Note that argument
-       positions are zero-based (Bug#3932).
-
-       * commands.texi (Distinguish Interactive): Minor copyedit.
-
-       * display.texi (Face Attributes): Add xref to Displaying Faces for
-       explanation of "underlying face".
-
-       * customize.texi (Common Keywords): Add xref to Loading.
-
-       * loading.texi (How Programs Do Loading): Add xref to Lisp
-       Libraries node in the Emacs manual.
-
-2009-08-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * objects.texi (Meta-Char Syntax): Add xref to Strings of Events.
-
-2009-07-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * processes.texi (Shell Arguments): Copyedits.
-
-2009-07-18  Glenn Morris  <rgm@gnu.org>
-
-       * loading.texi (Repeated Loading): Fix typo.
-
-2009-07-16  Richard Stallman  <rms@gnu.org>
-
-       * buffers.texi (Swapping Text): Recommend setting
-       write-region-annotate-functions and buffer-saved-size.
-
-       * backups.texi (Auto-Saving): Document buffer-saved-size = -2.
-
-2009-07-15  Glenn Morris  <rgm@gnu.org>
-
-       * edebug.texi: Minor re-phrasings throughout.
-       (Edebug Execution Modes): Sit-for affects continue mode too.
-       (Jumping): Use `forward-sexp' rather than its keybinding.
-       (Edebug Misc): Fix Q binding.
-       (Edebug Eval): Remove cl version.
-       (Printing in Edebug): Clarify print-length etc.
-       (Instrumenting Macro Calls): Defopt edebug-eval-macro-args.
-       (Specification List): Remove edebug-unwrap findex entry.
-       (Specification Examples): defmacro is actually not the same as defun.
-       Escape "`" in example.
-
-2009-07-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * markers.texi (The Mark): Document optional arg to
-       deactivate-mark.
-
-2009-07-11  Kevin Ryde  <user42@zip.com.au>
-
-       * hooks.texi (Standard Hooks): Fix cross-references.
-
-       * loading.texi (Named Features): Refer to eval-after-load.
-
-2009-07-11  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (TEXI2PDF): New.
-       (elisp.pdf): New target.
-
-       * searching.texi (Regexp Backslash): Fix typo.
-
-       * elisp.texi (Top): Display copyright notice at start of non-TeX.
-
-2009-07-10  Glenn Morris  <rgm@gnu.org>
-
-       * elisp.texi, vol1.texi, vol2.texi: Update @detailmenu.
-
-       * customize.texi (Customization Types):
-       * display.texi (Abstract Display):
-       * objects.texi (Character Type, String Type):
-       Merge in some menu descriptions from elisp.texi.
-
-       * hash.texi (Hash Tables):
-       * modes.texi (Multiline Font Lock):
-       End menu description with period.
-
-2009-07-09  Glenn Morris  <rgm@gnu.org>
-
-       * back.texi: Don't hard-code texinfo location.
-
-       * two-volume.make (texinfodir): New, with location of texinfo.tex.
-       (tex): Add texinfodir to TEXINPUTS.
-       (elisp1med-init, elisp2med-init): Use texinfodir.
-
-       * Makefile.in (texinfodir): Rename from usermanualdir, and update.
-       (clean): Add two-volume.make intermediate files.
-
-       * elisp.texi, vol1.texi, vol2.texi:
-       Use a DATE variable with the publication date, and update it.
-       Fix antinews menu description.
-
-       * vol1.texi, vol2.texi: Update VERSION to match elisp.texi.
-       Update the detailed node listing to match elisp.texi.
-
-       * README: Update edition to match elisp.texi.
-
-       * objects.texi (General Escape Syntax):
-       * nonascii.texi (Character Sets):
-       Use consistent case for "Unicode Standard".
-
-       * anti.texi (Antinews):
-       * customize.texi (Variable Definitions):
-       * functions.texi (Declaring Functions):
-       * nonascii.texi (Character Properties):
-       * processes.texi (Serial Ports):
-       * text.texi (Special Properties):
-       * tips.texi (Coding Conventions):
-       Minor rearrangements to improve TeX line-filling.
-
-       * commands.texi (Using Interactive): Fix cross-reference.
-
-2009-07-01  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * frames.texi (Management Parameters): Mention sticky.
-
-2009-07-01  Andreas Schwab  <aschwab@redhat.com>
-
-       * help.texi (Help Functions): Fix description of help-buffer and
-       help-setup-xref to use @defun instead of @deffn.
-
-2009-07-01  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * frames.texi (Size Parameters): Mention maximized for fullscreen.
-
-2009-06-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Window Systems): Add ns to the list.
-
-2009-06-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Branch for 23.1.
-
-2009-06-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Dedicated Windows): Fix typo.
-       (Resizing Windows): Replace @defun by @deffn.
-
-2009-06-17  Glenn Morris  <rgm@gnu.org>
-
-       * variables.texi (Directory Local Variables):
-       Update for 2009-04-11 name-change of dir-locals-directory-alist.
-
-2009-06-09  Kenichi Handa  <handa@m17n.org>
-
-       * nonascii.texi (Character Sets): State clearly that FROM and TO
-       are codepoints of CHARSET.
-
-2009-06-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Reading File Names): Fix introductory text.
-       Suggested by stan@derbycityprints.com.
-       (High-Level Completion): Fix typo.
-
-2009-05-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Text Terminal Colors): Multi-tty is already
-       implemented, but tty-local colors are not.
-
-2009-05-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hooks.texi (Standard Hooks): Remove mention of obsolete
-       redisplay-end-trigger-functions.
-
-       * internals.texi (Window Internals): Remove mention of obsolete
-       redisplay-end-trigger-functions.
-
-2009-05-21  Martin Rudalics  <rudalics@gmx.at>
-
-       * abbrevs.texi (Abbrev Mode): abbrev-mode is an option.
-
-       * backups.texi (Making Backups): backup-directory-alist and
-       make-backup-file-name-function are options.
-       (Auto-Saving): auto-save-list-file-prefix is an option.
-
-       * buffers.texi (Killing Buffers): buffer-offer-save is an
-       option.
-
-       * display.texi (Refresh Screen): no-redraw-on-reenter is an
-       option.
-       (Echo Area Customization): echo-keystrokes is an option.
-       (Selective Display): selective-display-ellipses is an option.
-       (Temporary Displays): temp-buffer-show-function is an option.
-       (Face Attributes): underline-minimum-offset and x-bitmap-file-path
-       are options.
-       (Font Selection): face-font-family-alternatives,
-       face-font-selection-order, face-font-registry-alternatives, and
-       scalable-fonts-allowed are options.
-       (Fringe Indicators): indicate-buffer-boundaries is an option.
-       (Fringe Cursors): overflow-newline-into-fringe is an option.
-       (Scroll Bars): scroll-bar-mode is an option.
-
-       * eval.texi (Eval): max-lisp-eval-depth is an option.
-
-       * files.texi (Visiting Functions): find-file-hook is an option.
-       (Directory Names): directory-abbrev-alist is an option.
-       (Unique File Names): temporary-file-directory and
-       small-temporary-file-directory are options.
-
-       * frames.texi (Initial Parameters): initial-frame-alist,
-       minibuffer-frame-alist and default-frame-alist are options.
-       (Cursor Parameters): blink-cursor-alist and
-       cursor-in-non-selected-windows ar options.
-       (Window System Selections): selection-coding-system is an
-       option.
-       (Display Feature Testing): display-mm-dimensions-alist is an
-       option.
-
-       * help.texi (Help Functions): help-char and help-event-list are
-       options.
-
-       * keymaps.texi (Functions for Key Lookup): meta-prefix-char is
-       an option.
-
-       * minibuf.texi (Minibuffer History): history-length and
-       history-delete-duplicates are options.
-       (High-Level Completion): read-buffer-function and
-       read-buffer-completion-ignore-case are options.
-       (Reading File Names): read-file-name-completion-ignore-case is
-       an option.
-
-       * modes.texi (Mode Line Top): mode-line-format is an option.
-       (Mode Line Variables): mode-line-position and mode-line-modes
-       are options.
-
-       * nonascii.texi (Text Representations):
-       enable-multibyte-characters is an option.
-       (Default Coding Systems): auto-coding-regexp-alist,
-       file-coding-system-alist, auto-coding-alist and
-       auto-coding-functions are options.
-       (Specifying Coding Systems): inhibit-eol-conversion is an
-       option.
-
-       * os.texi (Init File): site-run-file is an option.
-       (System Environment): mail-host-address is an option.
-       (User Identification): user-mail-address is an option.
-       (Terminal Output): baud-rate is an option.
-
-       * positions.texi (Word Motion): words-include-escapes is an
-       option.
-
-       * searching.texi (Standard Regexps): page-delimiter,
-       paragraph-separate, paragraph-separate and sentence-end are
-       options.
-
-       * text.texi (Margins): left-margin and fill-nobreak-predicate
-       are options.
-
-       * variables.texi (Local Variables): max-specpdl-size is an
-       option.
-
-       * windows.texi (Choosing Window):
-       split-window-preferred-function, special-display-function and
-       display-buffer-function are options.
-
-2009-05-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       Fix errors spotted by Martin Rudalics.
-
-       * syntax.texi (Position Parse): Document rationale for ignored
-       arguments to syntax-ppss-flush-cache.
-
-       * processes.texi (Input to Processes): Mark PROCESS arg to
-       process-running-child-p as optional.
-       (Network Options): Document NO-ERROR arg to
-       set-network-process-option.
-
-       * buffers.texi (Indirect Buffers): Mark clone-indirect-buffer as a
-       command.
-
-       * searching.texi (POSIX Regexps): Mark posix-search-forward and
-       posix-search-backward as commands.
-
-       * os.texi (Killing Emacs): Mark kill-emacs as a command.
-       (Suspending Emacs): Mark suspend-emacs as a command.
-       (Processor Run Time): Mark emacs-uptime and emacs-init-time as
-       commands.
-       (Terminal Output): Remove obsolete function baud-rate.
-       Document TERMINAL arg for send-string-to-terminal.
-
-       * nonascii.texi (Terminal I/O Encoding): Document TERMINAL arg for
-       terminal-coding-system and set-terminal-coding-system.
-       (Explicit Encoding): Mark DESTINATION arg of decode-coding-region
-       as optional.
-       (Character Sets): Document RESTRICTION arg of char-charset.
-       (Character Codes): Mark POS argument to get-byte as optional.
-
-       * minibuf.texi (Minibuffer Misc): Document ARGS arg for
-       minibuffer-message.
-
-       * files.texi (Create/Delete Dirs): Mark make-directory and
-       delete-directory as commands.
-
-       * abbrevs.texi (Abbrev Tables): Fix arglist for make-abbrev-table.
-
-       * text.texi (Base 64): Mark base64-decode-string and
-       base64-encode-string as commands.
-       (Columns): Mark move-to-column as a command.
-       (Mode-Specific Indent): Document RIGID arg to
-       indent-for-tab-command.
-       (Region Indent): Mark TO-COLUMN arg to indent-region as optional.
-       Mark indent-code-rigidly as a command.
-       (Substitution): Mark translate-region as a command.
-
-       * frames.texi (Size and Position): Remove obsolete functions
-       screen-height and screen-width.
-
-2009-05-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * windows.texi (Cyclic Window Ordering, Cyclic Window Ordering)
-       (Displaying Buffers, Resizing Windows): Correct mistakes;
-       next-window, previous-window, and pop-to-buffer are not commands,
-       and fit-window-to-buffer" is a command.  (Pointed out by Martin
-       Rudalics.)
-
-2009-05-17  Richard M Stallman  <rms@gnu.org>
-
-       * modes.texi (Precalculated Fontification): Clarify text.
-
-2009-05-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Selecting Windows): Clarify descriptions of
-       with-selected-window and get-lru-window.
-       (Cyclic Window Ordering): Refer to particular frame when talking
-       about how splitting affects the ordering.
-       (Displaying Buffers): Fix descriptions of switch-to-buffer and
-       switch-to-buffer-other-window.  Explain how setting of
-       display-buffer-reuse-frames affects pop-to-buffer.
-       (Choosing Window): Clarify some details in descriptions of
-       display-buffer-reuse-frames, pop-up-frames, and
-       pop-up-frame-function.
-       (Dedicated Windows): Clarify some details.
-       (Textual Scrolling): Replace term vscroll by term vertical
-       scroll position.
-       (Vertical Scrolling): Fix typo.
-       (Window Hooks): Relate text on jit-lock-register to window
-       scrolling and size changes.
-
-2009-05-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Initial Parameters): Clarify what the initial
-       minibuffer frame is.
-       (Buffer Parameters): Note that the minibuffer parameter can not be
-       altered.
-
-       * anti.texi (Antinews): Copyedits.  Rearrange some entries.
-       Document display-buffer changes.
-
-2009-05-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * anti.texi (Antinews): Rewrite for Emacs 22.
-
-       * abbrevs.texi (Abbrevs): Add xref to Creating Symbols when
-       obarrays are first mentioned.  Define "system abbrev" more
-       prominently, and add it to the index.
-       (Abbrev Mode, Abbrev Tables, Defining Abbrevs, Abbrev Properties):
-       Copyedits.
-       (Abbrev Expansion): Document abbrev-insert.
-
-2009-05-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Font and Color Parameters): Rename from Color
-       Parameters.  Document font-backend parameter.
-
-       * vol2.texi (Top): Update node listing.
-       * vol1.texi (Top): Update node listing.
-       * elisp.texi (Top): Update node listing.
-
-2009-05-11  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Choosing Window): Don't explicitly refer to
-       split-window-sensibly's window argument in descriptions of
-       split-height-threshold and split-width-threshold.
-
-2009-05-10  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Choosing Window): Fix rewrite of window
-       splitting section.
-
-2009-05-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Default Coding Systems): Document
-       find-auto-coding, set-auto-coding, and auto-coding-alist.
-       Add indexing.
-       (Lisp and Coding Systems): Add index entries.
-
-2009-05-09  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Choosing Window): Describe split-window-sensibly
-       and rewrite section on window splitting accordingly.
-       (Textual Scrolling): Replace `...' by @code{...}.
-
-2009-05-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hooks.texi (Standard Hooks): Add abbrev-expand-functions.
-       Remove obsoleted pre-abbrev-expand-hook.
-
-       * locals.texi (Standard Buffer-Local Variables): Consolidate table
-       entries.
-
-       * internals.texi (Object Internals): Don't assume 32-bit machines
-       are the norm.
-       (Buffer Internals): Consolidate table entries for readability.
-       (Window Internals): Synch field names to window.h.
-       (Process Internals): Synch field names to process.h.
-
-2009-04-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * variables.texi (File Local Variables): Note that read-circle is
-       bound to nil when reading file-local variables.
-
-       * streams.texi (Input Functions): Document read-circle.
-       (Output Variables): Add xref to Circular Objects.
-
-2009-04-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * tips.texi (Coding Conventions): Copyedits.  Add xref to Named
-       Features and Coding System Basics.  Node that "p" stands for
-       "predicate".  Recommend utf-8-emacs instead of emacs-mule.
-       (Key Binding Conventions): Emacs does use S-down-mouse-1, for
-       mouse-appearance-menu.
-       (Programming Tips): Add xref to Progress.
-
-2009-04-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Command-Line Arguments):
-       Document command-line-args-left.
-       (Suspending Emacs): Adapt text to multi-tty case.  Document use of
-       terminal objects for tty arguments.
-       (Startup Summary): Add xref to Session Management.
-       (Session Management): Mention emacs-session-restore.  Copyedits.
-
-2009-04-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Startup Summary): Copyedits.  The init file is not
-       necessarily named .emacs now.  Document initial-buffer-choice and
-       initial-scratch-message.  Note where Emacs exits in batch mode.
-       Document inhibit-splash-screen as an alias.
-       (Init File): Be neutral about which init file name to use.
-
-2009-04-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (System Interface): Fix Texinfo usage.
-
-2009-04-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * searching.texi (Regexp Backslash): Also refer to shy groups as
-       non-capturing or unnumbered groups.
-       (Regexp Functions): Add cross-reference to Regexp Backslash.
-
-       * display.texi (Truncation): Overlays can use line-prefix and
-       wrap-prefix too.
-       (Overlay Properties): Document wrap-prefix and line-prefix.
-       (Face Attributes): Document underline-minimum-offset.
-       (Face Remapping): Copyedits.
-       (Low-Level Font): Copyedits.
-       (Image Cache): Note that the image cache is shared between frames.
-       (Line Height): Emphasize that line-spacing only takes effect on
-       graphical terminals.
-
-2009-04-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Refresh Screen): Note that a passage about screen
-       refreshing is text terminal only.
-       (Forcing Redisplay): Delete misleading comment---sit-for calls
-       redisplay, not the other way around.
-       (Truncation): Note new values of truncate-partial-width-windows.
-       Copyedits.
-       (Invisible Text): Document invisible-p.
-
-2009-04-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Overlays): Overlays don't scale well.  See
-       http://lists.gnu.org/archive/html/emacs-devel/2009-04/msg00243.html.
-
-2009-04-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * syntax.texi (Syntax Table Functions): Document cons cell
-       argument for modify-syntax-entry.
-       (Categories): Document cons cell argument for
-       modify-category-entry.
-
-       * searching.texi (String Search): Document word-search-forward-lax
-       and word-search-backward-lax.
-       (Searching and Case): Describe isearch behavior more precisely.
-
-       * keymaps.texi (Tool Bar): Mention that some platforms do not
-       support multi-line toolbars.  Suggested by Stephen Eglen.
-
-       * frames.texi (Layout Parameters): Mention that Nextstep also
-       allows only one tool-bar line.  Suggested by Stephen Eglen.
-
-       * nonascii.texi (Text Representations): Copyedits.
-       (Coding System Basics): Also mention utf-8-emacs.
-       (Converting Representations, Selecting a Representation)
-       (Scanning Charsets, Translation of Characters, Encoding and I/O):
-       Copyedits.
-       (Character Codes): Mention role of codepoints 1114112 to 4194175.
-
-2009-04-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Yank Commands): Note that yank uses push-mark.
-       (Filling): Clarify REGION argument of fill-paragraph.
-       Document fill-forward-paragraph-function.
-       (Special Properties): Remove "new in Emacs 22" declaration.
-       (Clickable Text): Merge with Links and Mouse-1 node.
-
-       * display.texi (Button Properties, Button Buffer Commands):
-       Change xref to Clickable Text.
-
-       * tips.texi (Key Binding Conventions): Change xref to Clickable
-       Text.
-
-       * elisp.texi (Top): Update node listing.
-
-2009-04-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * markers.texi (The Mark): Copyedits.  Improve description of
-       handle-shift-selection.
-       (The Region): Move use-region-p here from The Mark.
-
-       * positions.texi (Screen Lines): Document (cols . lines) argument
-       for vertical-motion.
-
-2009-04-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Frames): Clean up introduction.  Document `ns'
-       return value for framep.
-       (Creating Frames): Note how the terminal is chosen.
-       (Multiple Terminals, Multiple Displays): Merge into a single node.
-       (Color Parameters): Fix typo.
-
-       * variables.texi (Local Variables, Buffer-Local Variables)
-       (Creating Buffer-Local): Change link to Multiple Terminals.
-
-       * os.texi (X11 Keysyms): Change link to Multiple Terminals.
-
-       * keymaps.texi (Controlling Active Maps): Change link to Multiple
-       Terminals.
-
-       * commands.texi (Command Loop Info, Keyboard Macros): Change link
-       to Multiple Terminals.
-
-       * elisp.texi (Top): Update node listing.
-       * vol2.texi (Top): Update node listing.
-       * vol1.texi (Top): Update node listing.
-
-       * buffers.texi (Current Buffer): Note that the append-to-buffer
-       example is no longer in synch with the latest code.  Tie the two
-       examples together.
-
-       * files.texi (File Attributes): Move note about MS-DOS from
-       Changing Files to File Attributes.
-       (Create/Delete Dirs): Note that mkdir is an alias for this.
-
-2009-04-01  Markus Triska  <triska@gmx.at>
-
-       * processes.texi (Filter Functions): Suggest how to handle output
-       batches.
-
-2009-03-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.texi (Accessing Documentation): Update example to use
-       help-setup-xref and with-help-window.
-       (Help Functions): Remove print-help-return-message, which is
-       semi-obsolete due to with-help-window.  Document help-buffer and
-       help-setup-xref.
-
-2009-03-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.texi (Accessing Documentation, Help Functions):
-       Remove information about long-obsolete Emacs versions.
-
-       * modes.texi (Mode Line Variables): The default values of the mode
-       line variables are now more complicated.
-
-2009-03-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Major Mode Conventions): Note that specialness is
-       inherited.
-       (Derived Modes): Note that define-derive-mode sets the mode-class
-       property.
-
-       * keymaps.texi (Prefix Keys): The M-g prefix key is now named
-       goto-map.  Add search-map to the list.
-
-2009-03-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * os.texi (System Environment): Update the list of system-type
-       values.
-
-       * markers.texi (The Mark) <handle-shift-selection>: Update for
-       removal of the optional argument DEACTIVATE.
-
-2009-03-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Focus Events): Most X window managers don't use
-       focus-follows-mouse nowadays.
-
-2009-03-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Defining Commands): Clarify introduction.
-       (Using Interactive): Not that interactive can be put in a symbol
-       property.
-       (Interactive Call): Note that a symbol with a non-nil
-       interactive-form property satisfies commandp.
-
-2009-03-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.texi (Intro to Minibuffers): Fix typos.
-
-2009-03-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Intro to Minibuffers): Remove long-obsolete info
-       about minibuffers in old Emacs versions.  Copyedits.
-       Emphasize that enable-recursive-minibuffers defaults to nil.
-       (Text from Minibuffer): Simplify introduction.
-
-2009-03-22  Alan Mackenzie  <acm@muc.de>
-
-       * commands.texi (Using Interactive): Clarify string argument to
-       `interactive' - even promptless elements need \n separators.
-
-2009-03-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Completion Styles): New node.
-
-       * elisp.texi (Top): Update node listing.
-
-2009-03-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.texi (Basic Completion): Note that
-       read-file-name-completion-ignore-case and
-       read-buffer-completion-ignore-case can override
-       completion-ignore-case.
-       (Minibuffer Completion): Document completing-read changes.
-       (Completion Commands): Avoid mentioning partial completion mode.
-       Document minibuffer-completion-confirm changes, and
-       minibuffer-confirm-exit-commands.
-       (High-Level Completion): Document new require-match behavior for
-       read-buffer.  Document read-buffer-completion-ignore-case.
-       (Reading File Names): Document new require-match behavior for
-       read-file-name.
-
-2009-03-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * debugging.texi (Error Debugging): Don't mislead the reader into
-       thinking that debug-on-error enters debugger for C-f at EOB.
-       (Error Debugging): Setting debug-on-init within the init file
-       works, and has for some time.
-
-2009-03-13  Kenichi Handa  <handa@m17n.org>
-
-       * display.texi (Fontsets): Update the description.
-
-2009-03-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * advice.texi (Advising Primitives): Link to What Is a Function.
-
-2009-03-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * compile.texi (Speed of Byte-Code): Update example.
-       (Disassembly): Update examples.
-
-       * loading.texi (Repeated Loading): Simplify examples.
-
-       * customize.texi (Common Keywords): It's not necessary to use :tag
-       to remove hyphens, as custom-unlispify-tag-name does it
-       automatically.
-       (Variable Definitions): Link to File Local Variables.
-       Document customized-value symbol property.
-       (Customization Types): Move menu to end of node.
-
-2009-03-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * macros.texi (Compiling Macros): Omit misleading sentence, which
-       implied that macros can only be used in the same file they are
-       defined.
-       (Backquote): Remove obsolete information about Emacs 19.
-
-2009-03-05  John Foerch  <jjfoerch@earthlink.net>  (tiny change)
-
-       * display.texi (Display Margins): Fix paren typo.
-
-2009-02-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * elisp.texi (Top): Update node listing.
-
-       * variables.texi (Variables): Clarify introduction.
-       (Global Variables): Mention that setq is a special form.
-       (Local Variables): Use active voice.
-       (Tips for Defining): Mention marking variables as safe.
-       (Buffer-Local Variables): Mention terminal-local and frame-local
-       variables together.
-       (File Local Variables): Copyedits.
-       (Frame-Local Variables): Note that they are not really useful.
-       (Future Local Variables): Node deleted.
-
-       * objects.texi (General Escape Syntax): Update explanation of
-       unicode escape syntax.
-
-2009-02-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * control.texi (Control Structures): Add cindex entry for "textual
-       order".
-
-       * eval.texi (Intro Eval): Copyedits.  Standardize on "form"
-       instead of "expression" throughout.
-       (Function Indirection): Copyedits.  Use active voice.
-       (Eval): The default value of max-lisp-eval-depth is now 400.
-
-2009-02-23  Miles Bader  <miles@gnu.org>
-
-       * processes.texi (System Processes): Rename `system-process-attributes'
-       to `process-attributes'.
-
-2009-02-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * symbols.texi (Property Lists): Emphasize that property lists are
-       not restricted to symbol cells.
-       (Other Plists): Copyedit.
-
-       * sequences.texi (Sequences Arrays Vectors): Make introduction
-       more concise.
-       (Arrays): Mention char-tables and bool-vectors too.
-       (Vectors): Don't repeat information given in Arrays node.  Link to
-       nodes that explain the vector usage examples.
-       (Char-Tables): Note that char-table elements can have arbitrary
-       type.  Explain effect of omitted char-table-extra-slots property.
-       Link to Property Lists node.
-
-2009-02-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * lists.texi (Building Lists): Remove obsolete Emacs 20 usage of
-       `append'.
-       (List Elements): Copyedits.
-
-       * sequences.texi (Vector Functions): Remove obsolete Emacs 20 use
-       of `vconcat'.
-
-       * strings.texi (Creating Strings): Copyedits.  Remove obsolete
-       Emacs 20 usage of `concat'.
-       (Case Conversion): Copyedits.
-
-2009-02-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * objects.texi (Lisp Data Types, Syntax for Strings, Buffer Type):
-       Minor edits.
-       (Frame Configuration Type): Emphasize that it is not primitive.
-       (Font Type): New node.
-       (Type Predicates): Add fontp; type-of now recognizes font object
-       types.
-
-       * intro.texi (Version Info): Update version numbers in examples.
-       (Acknowledgements): List more contributors.
-
-       * elisp.texi: Bump version number to 3.0.
-       (Top): Link to Font Type node.
-
-2009-02-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * modes.texi (Major Mode Conventions): Remove duplicate words.
-       (Customizing Keywords): Fix typo.
-
-2009-02-14  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (User-Chosen Coding Systems): Document that
-       select-safe-coding-system suggests raw-text if there are raw bytes
-       in the region.
-       (Explicit Encoding): Warn not to use `undecided' when encoding.
-
-2009-02-11  Glenn Morris  <rgm@gnu.org>
-
-       * frames.texi (Visibility of Frames): Mention the effect multiple
-       workspaces/desktops can have on visibility.
-
-2009-02-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * text.texi (Commands for Insertion):
-       * commands.texi (Event Mod):
-       * keymaps.texi (Searching Keymaps):
-       * nonascii.texi (Translation of Characters):
-       Reinstate documentation of translation-table-for-input.
-       (Explicit Encoding): Document the `charset' text property produced
-       by decode-coding-region and decode-coding-string.
-
-2009-01-27  Alan Mackenzie  <acm@muc.de>
-
-       * modes.texi (Search-based Fontification): Correct a typo.
-
-2009-01-25  Juanma Barranquero  <lekktu@gmail.com>
-
-       * abbrevs.texi (Abbrev Table Properties): Fix typo.
-       Reported by Seweryn Kokot <sewkokot@gmail.com>.  (Bug#2039)
-
-2009-01-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Window Systems): Document the value of
-       `initial-window-system' under --daemon.
-
-       * os.texi (System Environment): Remove description of the
-       `environment' function which has been deleted.
-
-2009-01-22  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * frames.texi (Multiple Displays): Remove documentation for
-       removed function make-frame-on-tty.
-
-2009-01-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.texi (Format Conversion Piecemeal): Clarify behavior of
-       write-region-annotate-functions.
-       Document write-region-post-annotation-function.
-
-2009-01-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Font Lookup): Document WIDTH argument of
-       x-list-fonts.
-
-2009-01-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * maps.texi (Standard Keymaps): Rename function-key-map to
-       local-function-key-map.
-
-       * keymaps.texi (Translation Keymaps): Rename function-key-map to
-       local-function-key-map.
-
-       * nonascii.texi (Terminal I/O Encoding): `keyboard-coding-system'
-       and `set-keyboard-coding-system' now accept an optional terminal
-       argument.
-
-       * commands.texi (Event Mod): `keyboard-translate-table' is now
-       terminal-local.
-       (Function Keys): Rename function-key-map to
-       local-function-key-map.
-
-       * elisp.texi (Top): Make @detailmenu be consistent with changes in
-       frames.texi.
-
-       * hooks.texi (Standard Hooks): Document `delete-frame-functions'
-       `delete-terminal-functions', `suspend-tty-functions' and
-       `resume-tty-functions'.
-
-       * frames.texi (Frames): Document `frame-terminal' and
-       `terminal-live-p'.
-       (Multiple Displays): Document `make-frame-on-tty'.
-       (Multiple Terminals): Document `terminal-list', `delete-terminal',
-       `terminal-name', and `get-device-terminal'.
-       (Terminal Parameters): Document `terminal-parameters',
-       `terminal-parameter', and `set-terminal-parameter'.
-
-       * os.texi (System Environment): Document `environment' and
-       `initial-environment'.
-       (Suspending Emacs): Update for multi-tty; document
-       `suspend-tty', `resume-tty', and `controlling-tty-p'.
-
-       * nonascii.texi (Coding System Basics): More accurate description
-       of `raw-text'.
-
-2009-01-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Low-Level Font): Fix typo.
-
-2009-01-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * elisp.texi (Top): Update node listing.
-
-       * display.texi (PostScript Images): Node deleted.
-
-2009-01-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Decoding Output): Document that null bytes force
-       no-conversion for reading process output.
-
-       * files.texi (Reading from Files): Document that null bytes force
-       no-conversion when visiting files.
-
-       * processes.texi (Serial Ports): Improve wording, suggested by RMS.
-
-       * nonascii.texi (Lisp and Coding Systems):
-       Document inhibit-null-byte-detection and inhibit-iso-escape-detection.
-       (Character Properties): Improve wording.
-
-2009-01-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Font Lookup): Remove obsolete function
-       x-font-family-list.  x-list-fonts accepts Fontconfig/GTK syntax.
-       (Low-Level Font): Rename from Fonts, move to end of Faces section.
-       (Font Selection): Reorder order of variable descriptions.
-       Minor clarifications.
-
-       * elisp.texi (Top): Update node listing.
-
-2009-01-09  Glenn Morris  <rgm@gnu.org>
-
-       * commands.texi (Command Loop Info): Say that last-command-char and
-       last-input-char are obsolete aliases.
-
-       * edebug.texi (Edebug Recursive Edit): Remove separate references to
-       last-input-char and last-command-char, since they are just aliases for
-       last-input-event and last-command-event.
-
-       * minibuf.texi (Minibuffer Commands): Use last-command-event rather than
-       last-command-char.
-
-2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * elisp.texi: Update node listing.
-
-       * display.texi (Faces): Put Font Selection node after Auto Faces.
-       (Face Attributes): Don't link to Font Lookup.
-       Document font-family-list.
-       (Fonts): New node.
-
-2009-01-08  Jason Rumney  <jasonr@gnu.org>
-
-       * frames.texi (Pointer Shape): Clarify that only X supports
-       changing the standard pointer shapes.  (Bug#1485)
-
-2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Attribute Functions): Note that a function value
-       :height is relative, and that compatibility functions work by
-       calling set-face-attribute.
-       (Displaying Faces): Reorder list in order of increasing priority.
-       (Face Remapping): New node.  Content moved here from Displaying
-       Faces.
-       (Glyphs): Link to Face Functions.
-
-2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Faces): Don't discuss face id here.  facep does
-       not return t.
-       (Defining Faces): Minor clarification.
-       (Face Attributes): Rearrange items to match docstring of
-       set-face-attribute.  Add :foundry attribute.  Document new role of
-       :font attribute.  Texinfo usage fix.
-       (Attribute Functions): Copyedits.
-       (Face Functions): Note that face number is seldom used.
-
-2009-01-05  Richard M Stallman  <rms@gnu.org>
-
-       * strings.texi (Predicates for Strings): Minor clarification.
-
-       * functions.texi (Function Safety): Texinfo usage fix.
-
-2009-01-04  Eduard Wiebe  <usenet@pusto.de>  (tiny patch)
-
-       * objects.texi (General Escape Syntax): Fix typo.
-
-2009-01-03  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Choosing Window): Say that pop-up-frame-alist
-       works via the default value of pop-up-frame-function.
-
-2009-01-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (System Processes): Document the `time' and
-       `ctime' attributes of `system-process-attributes'.
-
-2009-01-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Face Attributes): Clarify :height attribute.
-
-2008-12-31  Martin Rudalics  <rudalics@gmx.at>
-
-       * buffers.texi (The Buffer List): Clarify what moves a buffer to
-       the front of the buffer list.  Add entries for `last-buffer' and
-       `unbury-buffer'.
-
-2008-12-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Add @detailmenu items for "Multiple Terminals"
-       and its subsections.
-
-       * frames.texi (Multiple Terminals, Low-level Terminal)
-       (Terminal Parameters, Frames on Other TTY devices): New sections.
-       (Frames): Add an xref to "Multiple Terminals".
-
-       * elisp.texi (Top): Add @detailmenu item for "Terminal Type".
-
-       * objects.texi (Terminal Type): New node.
-       (Editing Types): Add it to the menu.
-
-       * elisp.texi (Top): Add a @detailmenu item for "Directory Local
-       Variables".
-
-       * variables.texi (Directory Local Variables): New node.
-       (Variables): Add a menu item for it.
-
-       * loading.texi (Autoload): Document `generate-autoload-cookie' and
-       `generated-autoload-file'.
-
-2008-12-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * os.texi (Startup Summary): Add xref to documentation of
-       `initial-window-system'.
-
-       * display.texi (Window Systems): Document `window-system' the
-       function.  The variable `window-system' is now frame-local.
-       Document `initial-window-system'.
-
-2008-12-19  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Windows): Rewrite description of
-       fit-window-to-buffer.
-
-2008-12-13  Glenn Morris  <rgm@gnu.org>
-
-       * modes.texi (Font Lock Basics): Fix level description.  (Bug#1534)
-       (Levels of Font Lock): Refer to font-lock-maximum-decoration.
-
-2008-12-12  Glenn Morris  <rgm@gnu.org>
-
-       * debugging.texi (Error Debugging): Refer forwards to
-       eval-expression-debug-on-error.
-
-2008-12-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * strings.texi (String Basics): Only unibyte strings that
-       represent key sequences hold 8-bit raw bytes.
-
-       * nonascii.texi (Coding System Basics): Rewrite @ignore'd
-       paragraph to speak about `undecided'.
-       (Character Properties): Don't explain the meaning of each
-       property; instead, identify their Unicode Standard names.
-       (Character Sets): Document `map-charset-chars'.
-
-2008-12-02  Glenn Morris  <rgm@gnu.org>
-
-       * files.texi (Format Conversion Round-Trip): Rewrite format-write-file
-       section yet again.
-
-2008-11-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Character Properties): New Section.
-       (Specifying Coding Systems): Document
-       `coding-system-priority-list', `set-coding-system-priority', and
-       `with-coding-priority'.
-       (Lisp and Coding Systems): Document `check-coding-systems-region'
-       and `coding-system-charset-list'.
-       (Coding System Basics): Document `coding-system-aliases'.
-
-       * elisp.texi (Top): Add a @detailmenu entry for "Character
-       Properties".
-
-       * objects.texi (Character Type): Correct the range of Emacs
-       characters.  Add an @xref to "Character Codes".
-
-       * strings.texi (String Basics): Add an @xref to "Character Codes".
-
-       * numbers.texi (Integer Basics): Add an @xref to `max-char'.
-
-       * nonascii.texi (Explicit Encoding): Update for Emacs 23.
-       (Character Codes): Document `max-char'.
-
-2008-11-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Text Representations, Converting Representations)
-       (Character Sets, Scanning Charsets, Translation of Characters):
-       Make text more accurate.
-
-2008-11-28  Glenn Morris  <rgm@gnu.org>
-
-       * files.texi (Format Conversion Round-Trip): Improve previous change.
-
-2008-11-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Auto Major Mode): Fix example.
-
-2008-11-25  Glenn Morris  <rgm@gnu.org>
-
-       * control.texi (Signaling Errors): Fix `wrong-type-argument' name.
-
-       * files.texi (Format Conversion Round-Trip):
-       Use active voice for previous change.
-
-2008-11-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Processor Run Time):
-       * processes.texi (Transaction Queues):
-       * markers.texi (The Mark):
-       * windows.texi (Choosing Window, Selecting Windows):
-       * files.texi (Changing Files, Magic File Names):
-       * commands.texi (Key Sequence Input):
-       * functions.texi (Declaring Functions):
-       * strings.texi (Predicates for Strings):
-       * intro.texi (nil and t): Fix typos (pointed out by Drew Adams).
-
-2008-11-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.texi (Accessing Documentation): Update example.
-
-       * variables.texi (Defining Variables): Note that `*' is not
-       necessary if defcustom is used.
-
-2008-11-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Remove "Chars and Bytes" and "Splitting
-       Characters" from @detailmenu.
-
-       * nonascii.texi (Character Codes, Character Sets)
-       (Scanning Charsets, Translation of Characters): Update for Emacs 23.
-       (Chars and Bytes, Splitting Characters): Sections removed.
-
-2008-11-22  Lute Kamstra  <lute@gnu.org>
-
-       * positions.texi (Text Lines): Update goto-line documentation.
-
-2008-11-21  Martin Rudalics  <rudalics@gmx.at>
-
-       * frames.texi (Frames): Fix typo, add cross references, reword.
-       (Initial Parameters): Reword special-display-frame-alist text.
-       (Frames and Windows): Reword.  Describe argument norecord for
-       set-frame-selected-window.
-       (Input Focus): Describe argument norecord for select-frame.
-       Remove comment on MS-Windows behavior for focus-follows-mouse.
-       (Raising and Lowering): Mention windows-frames dichotomy in
-       metaphor.
-
-       * windows.texi (Displaying Buffers, Vertical Scrolling)
-       (Horizontal Scrolling): Fix indenting and rewording issues
-       introduced with 2008-11-07 change.
-
-2008-11-20  Glenn Morris  <rgm@gnu.org>
-
-       * files.texi (Format Conversion Round-Trip): Mention `preserve'
-       element of `format-alist'.
-
-2008-11-19  Glenn Morris  <rgm@gnu.org>
-
-       * doclicense.texi: Update to FDL 1.3.
-       * elisp.texi, vol1.texi, vol2.texi: Relicense under FDL 1.3 or later.
-
-2008-11-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * windows.texi (Window Hooks): Remove *-end-trigger-functions
-       vars, which are obsolete.  Mention jit-lock-register.
-
-       * modes.texi (Other Font Lock Variables):
-       Document jit-lock-register and jit-lock-unregister.
-
-       * frames.texi (Color Parameters): Document alpha parameter.
-
-2008-11-16  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Splitting Windows, Deleting Windows)
-       (Selecting Windows, Cyclic Window Ordering)
-       (Buffers and Windows, Displaying Buffers, Choosing Window)
-       (Dedicated Windows, Window Point, Window Start and End)
-       (Textual Scrolling, Vertical Scrolling, Horizontal Scrolling)
-       (Size of Window, Resizing Windows, Window Configurations)
-       (Window Parameters): Avoid @var at beginning of sentences and
-       reword accordingly.
-
-2008-11-11  Lute Kamstra  <lute@gnu.org>
-
-       * files.texi (File Name Components): Fix file-name-extension
-       documentation.
-
-2008-11-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * frames.texi (Basic Parameters): Remove display-environment-variable
-       and term-environment-variable.
-
-2008-11-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * windows.texi (Basic Windows, Splitting Windows)
-       (Deleting Windows, Selecting Windows, Cyclic Window Ordering)
-       (Buffers and Windows, Displaying Buffers, Dedicated Windows)
-       (Resizing Windows, Window Configurations, Window Parameters):
-       Fix wording and markup.
-
-2008-11-07  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Windows): Update entries.
-       (Basic Windows): Remove listing of attributes.  Reword.
-       (Splitting Windows, Deleting Windows): Reword.
-       (Selecting Windows, Cyclic Window Ordering): Reword with special
-       emphasis on order of recently selected windows and buffer list.
-       (Buffers and Windows, Choosing Window): Reword with special
-       emphasis on dedicated windows.
-       (Displaying Buffers): Reword.  For switch-to-buffer mention that
-       it may fall back on pop-to-buffer.  For other-window try to
-       explain how it treats the cyclic ordering of windows.
-       (Dedicated Windows): New node and section discussing dedicated
-       windows and associated functions.
-       (Window Point): Add entry for window-point-insertion-type.  Reword.
-       (Window Start and End): Rename node and section title.  Reword.
-       (Textual Scrolling, Vertical Scrolling, Horizontal Scrolling):
-       Minor rewording.
-       (Size of Window): Reword, in particular text on window-width.
-       (Resizing Windows): Reword.  Add text on balancing windows.
-       (Window Configurations): Reword.  Mention window parameters.
-       (Window Parameters): New node and section on window parameters.
-       (Window Hooks): Reword.  Mention that
-       window-configuration-change-hook is run "buffer-locally".
-       * elisp.texi (Top): Update Windows entries in @detailmenu
-       section.
-
-2008-11-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * searching.texi (Regexp Search): Fix typo.
-
-2008-11-03  Seweryn Kokot  <sewkokot@gmail.com>  (tiny change)
-
-       * searching.texi (Regexp Search): Document GREEDY arg.
-       (Simple Match Data): Fix return value.
-
-2008-11-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Text Representations): Rewrite to make consistent
-       with Emacs 23 internal representation of characters.
-       Document `unibyte-string'.
-
-2008-10-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * processes.texi (Process Information): Note that process-status
-       does not accept buffer names.
-
-2008-10-27  Seweryn Kokot  <sewkokot@gmail.com>  (tiny change)
-
-       * positions.texi (Skipping Characters): Correct return value of
-       skip-chars-forward.
-
-2008-10-25  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Deleting Windows): Update documentation of
-       delete-windows-on.
-       (Buffers and Windows): Update documentations of
-       get-buffer-window and get-buffer-window-list.
-       (Displaying Buffers): Update documentation of
-       replace-buffer-in-windows.
-
-       * buffers.texi (Current Buffer): Reword set-buffer and
-       with-current-buffer documentations.
-       (Creating Buffers): Reword documentation of get-buffer-create.
-
-2008-10-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * buffers.texi (Current Buffer): Reword documentation of
-       set-buffer.
-       (Buffer Names): Reword documentation of buffer-name.
-       (The Buffer List): For bury-buffer explain what happens with the
-       buffer's window.
-       (Creating Buffers): Say that get-buffer-create's arg is called
-       buffer-or-name.
-
-2008-10-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * advice.texi (Computed Advice): Explain what DEFINITION is.
-
-       * nonascii.texi (Character Codes): Remove obsolete function
-       char-valid-p, and document characterp instead.
-
-2008-10-22  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Displaying Buffers): Reword documentation of
-       pop-to-buffer.
-       (Choosing Window): Rewrite documentation of display-buffer and
-       its options.
-
-       * buffers.texi (Killing Buffers): Update documentation of
-       kill-buffer.
-
-2008-10-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Serial Ports): Fix wording and improve markup.
-
-       * searching.texi (Regexp Search): Document `string-match-p' and
-       `looking-at-p'.
-       (POSIX Regexps): Add an xref for "non-greedy".
-       (Regexp Special): Add @cindex entry for "non-greedy".
-
-       * display.texi (Attribute Functions): Document `face-all-attributes'.
-       (Image Cache) <image-refresh>: Minor wording fixes.
-
-       * frames.texi (Color Names): Add an xref to `read-color'.
-
-       * minibuf.texi (High-Level Completion): Document `read-color'.
-
-       * elisp.texi (Top): Add "Swapping Text" to @detailmenu.
-
-       * positions.texi (Narrowing): Add an xref to "Swapping Text".
-
-       * buffers.texi (Swapping Text): New section, documents
-       `buffer-swap-text'.
-
-2008-10-21  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Resizing Windows): Minor wording fix.
-
-2008-10-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Shell Arguments): Document `split-string-and-unquote'
-       and `combine-and-quote-strings'.
-
-       * strings.texi (Creating Strings): Add xrefs for them.
-
-2008-10-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Make descriptive text for "Reading File Names"
-       match the corresponding menu in minibuf.texi.
-
-       * minibuf.texi (Reading File Names): Document `read-shell-command'
-       and `minibuffer-local-shell-command-map'.
-
-2008-10-19  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Resizing Windows): Remove var{} around "window" in
-       documentation of enlarge-window.
-       Rewrite documentation of window-min-height and window-min-width.
-
-2008-10-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * functions.texi (Calling Functions): Document `apply-partially'.
-
-       * hooks.texi (Standard Hooks): Mention
-       `before-hack-local-variables-hook' and `hack-local-variables-hook'.
-
-       * variables.texi (File Local Variables): Document
-       `file-local-variables-alist', `before-hack-local-variables-hook'
-       and `hack-local-variables-hook'.
-
-       * processes.texi (Synchronous Processes): Document `process-lines'.
-
-       * customize.texi (Variable Definitions):
-       Document `custom-reevaluate-setting'.
-
-2008-10-18  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Choosing Window, Deleting Windows)
-       (Displaying Buffers): Expand documentation of dedicated windows.
-
-2008-10-18  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (Changing Files): Document symbolic input of file
-       modes to `set-file-modes'.  Document `read-file-modes' and
-       `file-modes-symbolic-to-number'.
-
-       * maps.texi (Standard Keymaps): Document `multi-query-replace-map'
-       and `search-map'.
-
-       * searching.texi (Search and Replace):
-       Document `replace-search-function' and `replace-re-search-function'.
-       Document `multi-query-replace-map'.
-
-       * minibuf.texi (Text from Minibuffer): Document `read-regexp'.
-       (Completion Commands, Reading File Names):
-       Rename `minibuffer-local-must-match-filename-map' to
-       `minibuffer-local-filename-must-match-map'.
-       (Minibuffer Completion): The `require-match' argument to
-       `completing-read' can now have the value `confirm-only'.
-
-       * windows.texi (Displaying Buffers): Minor wording fix.
-       (Choosing Window): `split-height-threshold' can now be nil.
-       Document `split-width-threshold'.  `pop-up-frames' can have the
-       value `graphic-only'.
-
-2008-10-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * os.texi (Startup Summary): Document `before-init-time' and
-       `after-init-time'.  Document `initial-window-system' and
-       `window-system-initialization-alist'.  Document reading the
-       abbrevs file.  Document the call to `server-start' under --daemon.
-       Rearrange a bit to be consistent with the code flow.
-       (Processor Run Time): Document `emacs-uptime' and `emacs-init-time'.
-       (Time Parsing): Document `format-seconds'.
-
-2008-10-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Basic Windows, Splitting Windows): Fix whitespace
-       and reword.
-
-2008-10-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * markers.texi (The Mark): Document use-region-p.
-
-2008-10-15  Eli Zaretskii  <eliz@gnu.org>
-
-       * internals.texi (Writing Emacs Primitives): The interactive spec
-       of a primitive can be a Lisp form.
-
-       * markers.texi (The Mark): Document the `lambda' and `(only . OLD)'
-       values of transient-mark-mode.  Document handle-shift-selection.
-
-       * commands.texi (Using Interactive, Interactive Codes): Document `^'.
-       (Interactive Examples): Show an example of `^'.
-       (Key Sequence Input): Document this-command-keys-shift-translated.
-       (Defining Commands, Using Interactive): The interactive-form of a
-       function can be added via its symbol's property.
-
-       * positions.texi (List Motion): beginning-of-defun-function can
-       now accept an argument.
-
-       * text.texi (Low-Level Kill Ring): interprogram-paste-function can
-       now return a list of strings.
-
-       * control.texi (Handling Errors): Document ignore-errors.
-
-       * frames.texi (Creating Frames): Document frame-inherited-parameters.
-       (Parameter Access): Document set-frame-parameter.
-
-       * variables.texi (Creating Buffer-Local): Add an xref to "Setting
-       Hooks" for the effect of kill-all-local-variables on local hook
-       functions.
-
-       * modes.texi (Major Mode Conventions, Mode Line Variables):
-       `mode-name' need not be a string.  xref to "Mode Line Data" for
-       details, and to "Emulating Mode Line" for computing a string
-       value.
-
-2008-10-14  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (System Processes): New section.
-       (Processes, Signals to Processes): Add xrefs to it.
-
-       * objects.texi (Editing Types): A `process' is a subprocess of
-       Emacs, not just any process running on the OS.
-
-       * elisp.texi (Top): Adjust the @detailmenu for the above two
-       changes.
-
-       * sequences.texi (Char-Tables): Remove documentation of
-       set-char-table-default, which has no effect since Emacs 23.
-       <char-table-range, set-char-table-range>: Don't mention generic
-       characters and charsets.  Add a cons cell as a possible argument.
-
-       * nonascii.texi (Splitting Characters)
-       (Translation of Characters): Don't mention generic characters.
-
-       * display.texi (Fontsets): Don't mention generic characters.
-
-       * sequences.texi (Char-Tables): `map-char-table' can now call its
-       argument FUNCTION with a cons cell as KEY.
-
-2008-10-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * objects.texi (Primitive Function Type): Move "@cindex special
-       forms" from here...
-
-       * eval.texi (Special Forms): ...to here.
-
-       * functions.texi (What Is a Function): `functionp' returns nil for
-       special forms.  Add an xref.
-
-       * elisp.texi (Top): Add a @detailmenu entry for "Frame-Local
-       Variables".
-
-       * variables.texi (Frame-Local Variables): New section.
-       (Buffer-Local Variables): Add an xref to it.
-       (Intro to Buffer-Local, Creating Buffer-Local): A variable cannot
-       have both frame-local and buffer-local binding.
-
-       * frames.texi (Frames): Mention multiple tty frames.
-       (Frame Parameters, Parameter Access): Mention frame-local variable
-       bindings.
-
-2008-09-20  Glenn Morris  <rgm@gnu.org>
-
-       * display.texi (Defining Faces): Recommend against face variables.
-
-2008-09-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Echo Area Customization): Fix typo.
-
-2008-09-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * loading.texi (Where Defined): Add `defface' item.
-
-2008-09-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * loading.texi (Where Defined): Fix description of symbol-file.
-
-2008-08-26  Jason Rumney  <jasonr@gnu.org>
-
-       * display.texi (TIFF Images): New section describing :index property.
-
-2008-08-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Temporary Displays): Remove unnecessary comment
-       about usage of temp-buffer-show-hook.
-
-2008-08-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * symbols.texi (Other Plists): Fix incorrect example.
-       Suggested by Florian Beck.
-
-2008-07-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * os.texi: Fix previous change.
-
-2008-07-31  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi:
-       * intro.texi:
-       * files.texi: Remove VMS support.
-
-2008-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi:
-       * frames.texi:
-       * display.texi: Remove mentions of Mac Carbon.
-
-2008-07-01  Miles Bader  <miles@gnu.org>
-
-       * text.texi (Special Properties):
-       * display.texi (Truncation): Add wrap-prefix and line-prefix.
-
-2008-06-28  Johan Bockgård  <bojohan@gnu.org>
-
-       * display.texi (Other Image Types): Fix copy/paste error; say
-       "PBM", not "XBM".
-
-2008-06-26  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi: Remove references to obsolete systems.
-
-2008-06-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (distclean): Remove makefile.
-
-2008-06-17  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (emacsver, miscmanualdir, VERSION, manual, install)
-       (elisp, dist): Remove rules and variables that are obsolete now
-       the lisp manual is no longer distributed separately.
-
-2008-06-16  Glenn Morris  <rgm@gnu.org>
-
-       * configure, configure.in, mkinstalldirs: Remove unused files.
-
-       * book-spine.texinfo: Set version to 23.0.60.
-       * vol1.texi (EMACSVER):
-       * vol2.texi (EMACSVER): Set to 23.0.60.
-
-       * elisp.texi, vol1.texi, vol2.texi: Update Back-Cover Text
-       as per maintain.info.
-
-2008-06-15  Glenn Morris  <rgm@gnu.org>
-
-       * makefile.w32-in (manual): Use "23" rather than "21".
-
-       * Makefile.in (emacsver): New, set by configure.
-       (manual): Use emacsver.
-
-       * intro.texi: Report bugs using M-x report-emacs-bug.
-
-       * elisp.texi (EMACSVER): Remove duplicate, outdated setting.
-
-2008-06-13  Daniel Engeler  <engeler@gmail.com>
-
-       * elisp.texi, internals.texi, processes.texi: Add documentation
-       about serial port access.
-
-2008-06-05  Miles Bader  <miles@gnu.org>
-
-       * display.texi (Displaying Faces): Update to reflect function
-       renamings in face-remap.el.
-
-2008-06-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Fontsets): Fix typos.
-
-2008-06-03  Miles Bader  <miles@gnu.org>
-
-       * display.texi (Displaying Faces): Add add-relative-face-remapping,
-       remove-relative-face-remapping, set-base-face-remapping,
-       and set-default-base-face-remapping.
-
-2008-06-01  Miles Bader  <miles@gnu.org>
-
-       * display.texi (Displaying Faces): Add face-remapping-alist.
-
-2008-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * tips.texi (Coding Conventions): Do not encourage the use of "-flag"
-       variable names.
-
-2008-05-03  Eric S. Raymond  <esr@golux>
-
-       * keymaps.texi: Clarify that (current-local-map) and
-       (current-global-map) return references, not copies.
-
-2008-05-02  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Text from Minibuffer): Document a list of
-       default values for `read-from-minibuffer'.
-
-2008-04-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * nonascii.texi (Translation of Characters): Fix previous change.
-
-2008-04-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Overlay Properties): Clarify role of underlying
-       textprop and overlay keymaps for display strings.
-
-       * keymaps.texi (Active Keymaps): Ditto.
-
-2008-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.texi (Programmed Completion):
-       Replace dynamic-completion-table with the new completion-table-dynamic.
-
-2008-04-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * intro.texi (Some Terms): Change "fonts in this manual" index
-       entry to "typographic conventions".
-
-2008-04-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * objects.texi (Text Props and Strings): Add indexing for read
-       syntax of text properties.
-
-2008-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * processes.texi (Decoding Output): Remove process-filter-multibyte
-       functions.
-
-2008-03-15  Martin Rudalics  <rudalics@gmx.at>
-
-       * display.texi (Finding Overlays): Say that empty overlays at
-       the end of the buffer are reported too.
-
-2008-03-13  Glenn Morris  <rgm@gnu.org>
-
-       * elisp.texi (EMACSVER): Set to 23.0.60.
-
-2008-02-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * strings.texi (Formatting Strings): Treat - and 0 as flag characters.
-
-2008-02-22  Glenn Morris  <rgm@gnu.org>
-
-       * frames.texi (Position Parameters): Clarify the description of
-       `left' and `top', using information from "Geometry".
-       (Geometry): Give a pointer to "Position Parameters", rather than
-       repeating information.
-
-2008-02-11  Glenn Morris  <rgm@gnu.org>
-
-       * objects.texi (Equality Predicates): No longer talk about "two"
-       functions.
-
-2008-02-11  Lawrence Mitchell  <wence@gmx.li>  (tiny change)
-
-       * objects.texi (Equality Predicates): Add defun for
-       equal-including-properties.
-
-2008-02-10  Glenn Morris  <rgm@gnu.org>
-
-       * 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ärv  <jan.h.d@swipnet.se>
-
-       * keymaps.texi (Tool Bar): Document rtl property.
-
-2008-01-27  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * display.texi (Button Types):
-       For define-button-type, clarify type of NAME.
-
-2008-01-19  Martin Rudalics  <rudalics@gmx.at>
-
-       * buffers.texi (Buffer Modification): Fix typo.
-
-2008-01-06  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi (System Environment): Remove references to OSes that are
-       not supported anymore.
-
-2008-01-05  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * os.texi (System Environment): Remove mention for Masscomp.
-
-2008-01-04  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Faces): Don't talk about internal face vector as arg
-       to facep.
-
-       * customize.texi (Type Keywords): Fix previous change.
-
-       * text.texi (Links and Mouse-1): Fix xref for commands.texi change.
-       * elisp.texi (Top): Fix menu for commands.texi change.
-
-2007-12-30  Richard Stallman  <rms@gnu.org>
-
-       * commands.texi (Accessing Mouse): Rename from Accessing Events.
-       (Accessing Scroll): New node broken out of Accessing Mouse.
-
-2007-12-28  Richard Stallman  <rms@gnu.org>
-
-       * frames.texi (Size Parameters): Fix typo.
-       (Basic Parameters): For `title', refer to title bar.
-       (Size and Position): Explain meaning of frame pixel width and height.
-
-2007-12-23  Richard Stallman  <rms@gnu.org>
-
-       * customize.texi (Type Keywords): Uncomment :validate and clarify it.
-       Improve some of the commented-out keywords' text too.
-
-2007-12-14  Martin Rudalics  <rudalics@gmx.at>
-
-       * nonascii.texi (Encoding and I/O): Reword to avoid saying
-       "visit the current buffer".
-
-       * os.texi (System Interface): Fix typo.
-
-2007-12-04  Richard Stallman  <rms@gnu.org>
-
-       * objects.texi (Symbol Type): Fix typo.
-
-2007-12-03  Richard Stallman  <rms@gnu.org>
-
-       * hooks.texi (Standard Hooks): Add link to Hooks for Loading.
-
-2007-12-01  Glenn Morris  <rgm@gnu.org>
-
-       * functions.texi (Declaring Functions): Improve previous change.
-
-2007-11-30  Glenn Morris  <rgm@gnu.org>
-
-       * functions.texi (Declaring Functions): Add optional fourth
-       argument of declare-function, and setting third argument to `t'.
-
-2007-11-29  Richard Stallman  <rms@gnu.org>
-
-       * customize.texi (Composite Types): Document `group' type.
-
-2007-11-29  Glenn Morris  <rgm@gnu.org>
-
-       * functions.texi (Declaring Functions): Add findex.
-       Mention `external' files.
-
-2007-11-26  Juanma Barranquero  <lekktu@gmail.com>
-
-       * functions.texi (Declaring Functions): Fix directive.
-
-2007-11-25  Richard Stallman  <rms@gnu.org>
-
-       * help.texi (Help Functions): Clean up last change.
-
-       * advice.texi (Preactivation, Activation of Advice): Minor cleanup.
-
-       * loading.texi (Named Features): Minor cleanup.
-
-       * macros.texi (Eval During Expansion): Minor cleanup.
-
-       * variables.texi (Variable Aliases): Minor cleanup.
-
-2007-11-24  Richard Stallman  <rms@gnu.org>
-
-       * functions.texi (Declaring Functions): Clarify previous change.
-
-       * compile.texi (Compiler Errors): Clarify previous change.
-
-2007-11-24  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Refresh Screen, Forcing Redisplay):
-       Clarify the text and move items around.
-
-2007-11-24  Glenn Morris  <rgm@gnu.org>
-
-       * functions.texi (Declaring Functions): New section.
-       * compile.texi (Compiler Errors): Mention declaring functions,
-       defvar with no initvalue, and byte-compile-warnings.
-
-2007-11-15  Martin Rudalics  <rudalics@gmx.at>
-
-       * vol1.texi (Top): Remove Frame-Local Variables from Node Listing.
-       * vol2.texi (Top): Remove Frame-Local Variables from Node Listing.
-
-2007-11-13  Martin Rudalics  <rudalics@gmx.at>
-
-       * help.texi (Help Functions): Document new macro `with-help-window'.
-
-2007-11-10  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * searching.texi (Replacing Match): Describe new
-       `match-substitute-replacement'.
-
-2007-10-31  Richard Stallman  <rms@gnu.org>
-
-       * strings.texi (Creating Strings): Null strings from concat not unique.
-
-2007-10-26  Richard Stallman  <rms@gnu.org>
-
-       * objects.texi (Equality Predicates): Null strings are uniquified.
-
-       * minibuf.texi: Minor clarifications in previous change.
-
-2007-10-25  Glenn Morris  <rgm@gnu.org>
-
-       * customize.texi (Variable Definitions): Add :risky and :safe keywords.
-
-2007-10-24  Richard Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Delete Frame-Local Variables from subnode menu.
-
-       * variables.texi (Frame-Local Variables): Node deleted.
-       (Variables): Delete Frame-Local Variables from menu.
-       (Local Variables, Buffer-Local Variables, Intro to Buffer-Local)
-       (Default Value): Don't mention frame-local vars.
-
-       * os.texi (Idle Timers): current-idle-time returns nil if not idle.
-
-       * loading.texi (Unloading): Document FEATURE-unload-function
-       instead of FEATURE-unload-hook.
-
-       * frames.texi (Multiple Displays): Don't mention frame-local vars.
-
-2007-10-22  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Text from Minibuffer, Minibuffer Completion)
-       (High-Level Completion): Document a list of default value strings
-       in the DEFAULT argument, for which minibuffer functions return the
-       first element.
-
-2007-10-17  Juri Linkov  <juri@jurta.org>
-
-       * text.texi (Filling): Update arguments of fill-paragraph.
-       fill-paragraph operates on the active region in Transient Mark mode.
-       Remove fill-paragraph-or-region.
-
-2007-10-13  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi (@dircategory): Move to after @copying,
-       since we want @copying as close as possible to the beginning of
-       the output.
-
-2007-10-12  Richard Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Add Distinguish Interactive to subnode menu.
-
-       * commands.texi (Distinguish Interactive): New node,
-       broken out from Interactive Call and rewritten.
-       (Command Loop): Put Distinguish Interactive in menu.
-
-2007-10-09  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Examining Properties): Mention overlay priority.
-
-       * display.texi (Display Margins): Correct the description
-       of margin display specifications.
-       (Replacing Specs): New subnode broken out of Display Property.
-
-2007-10-06  Juri Linkov  <juri@jurta.org>
-
-       * text.texi (Filling): Document fill-paragraph-or-region.
-
-2007-10-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Auto Faces): Fix typo.
-
-2007-10-02  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Display Property): Explain some display specs
-       don't let you move point in.
-
-       * frames.texi (Cursor Parameters):
-       Describe cursor-in-non-selected-windows here.  Explain more values.
-
-       * windows.texi (Basic Windows): Don't describe
-       cursor-in-non-selected-windows here.
-
-2007-10-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * processes.texi (Misc Network): Note that these functions are
-       supported only on some systems.
-
-2007-10-01  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Overlay Properties): Explain nil as priority.
-       Explain that conflicts are unpredictable if not resolved by
-       priorities.
-
-2007-09-23  Richard Stallman  <rms@gnu.org>
-
-       * macros.texi (Backquote): Minor clarification.
-
-2007-09-19  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Display Property): Explain multiple display specs.
-       Clarify when they work in parallel and when one overrides.
-       Fix error in example.
-
-2007-09-06  Glenn Morris  <rgm@gnu.org>
-
-       Move from lispref/ to doc/lispref/.  Change all setfilename
-       commands to use ../../info.
-       * Makefile.in (infodir): Go up one more level.
-       (usermanualdir): Change from ../man to ../emacs.
-       (miscmanualdir): New.
-       (dist): Use new variable miscmanualdir.
-       * makefile.w32-in (infodir, texinputdir): Go up one more level.
-       (usermanualdir): Change from ../man to ../emacs.
-
-2007-08-30  Martin Rudalics  <rudalics@gmx.at>
-
-       * commands.texi (Command Loop Info): Advise against changing
-       most variables described here.  Explain new variable
-       last-repeatable-command.
-
-2007-08-29  Glenn Morris  <rgm@gnu.org>
-
-       * elisp.texi (EMACSVER): Increase to 23.0.50.
-
-2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * frames.texi (Basic Parameters): Add display-environment-variable
-       and term-environment-variable.
-
-2007-08-28  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Image Formats, Other Image Types): Add SVG.
-
-2007-08-28  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Images): Move formats-related text to new node
-       "Image Formats".
-       (Image Formats): New node.
-
-2007-08-27  Richard Stallman  <rms@gnu.org>
-
-       * windows.texi (Window Configurations): Clarify what
-       a window configuration saves.
-
-2007-08-25  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Images): Delete redundant @findex.
-
-2007-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * text.texi (Change Hooks): (after|before)-change-functions are no
-       longer bound to nil while running; rather inhibit-modification-hooks
-       is t.
-
-2007-08-16  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Asynchronous Processes):
-       Clarify doc of start-file-process.
-
-2007-08-08  Martin Rudalics  <rudalics@gmx.at>
-
-       * modes.texi (Example Major Modes): Fix typo.
-
-2007-08-08  Glenn Morris  <rgm@gnu.org>
-
-       * intro.texi (nil and t): Do not use `iff' in documentation.
-
-       * tips.texi (Documentation Tips): Recommend against `iff'.
-
-2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Image Cache): Document image-refresh.
-
-2007-08-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * windows.texi (Size of Window): Document window-full-width-p.
-
-2007-07-25  Glenn Morris  <rgm@gnu.org>
-
-       * gpl.texi (GPL): Replace license with GPLv3.
-
-       * Relicense all FSF files to GPLv3 or later.
-
-2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
-
-       * processes.texi (Synchronous Processes):
-       Add `process-file-shell-command'.
-       (Asynchronous Processes): Mention restricted use of
-       `process-filter' and `process-sentinel' in
-       `start-file-process'.  Add `start-file-process-shell-command'.
-
-2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Introduce optional parameter
-       IDENTIFICATION for `file-remote-p'.
-
-2007-07-16  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Faces): Fix previous change.
-
-2007-07-14  Richard Stallman  <rms@gnu.org>
-
-       * control.texi (Handling Errors): Document `debug' in handler list.
-
-2007-07-10  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Faces): Explain C-M-x feature for defface.
-
-2007-07-09  Richard Stallman  <rms@gnu.org>
-
-       * files.texi (Magic File Names): Rewrite previous change.
-
-2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Introduce optional parameter
-       CONNECTED for `file-remote-p'.
-
-2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       * processes.texi (Asynchronous Processes):
-       * files.texi (Magic File Names): Add `start-file-process'.
-
-2007-06-27  Richard Stallman  <rms@gnu.org>
-
-       * files.texi (Format Conversion Piecemeal):
-       Clarify `after-insert-file-functions' calling convention.
-
-2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Remove `dired-call-process'.
-       Add `process-file'.
-
-2007-06-27  Kenichi Handa  <handa@m17n.org>
-
-       * text.texi (Special Properties): Fix description about
-       `composition' property.
-
-2007-06-26  Kenichi Handa  <handa@m17n.org>
-
-       * nonascii.texi (Default Coding Systems): Document about the
-       return value `undecided'.
-
-2007-06-25  David Kastrup  <dak@gnu.org>
-
-       * keymaps.texi (Active Keymaps): Document new POSITION argument of
-       `current-active-maps'.
-
-2007-06-24  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text.
-
-2007-06-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Overlay Arrow): Doc fix.
-
-2007-06-14  Karl Berry  <karl@tug.org>
-
-       * anti.texi (Antinews): Typo.
-
-2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Image Cache): Document image-refresh.
-
-2007-06-12  Karl Berry  <karl@gnu.org>
-
-       * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update.
-       * two-volume.make: New file.
-       * .cvsignore: Ignore two-volume files.
-
-2007-06-12  Tom Tromey  <tromey@redhat.com>
-
-       * os.texi (Init File): Document user-emacs-directory.
-
-2007-06-03  Nick Roberts  <nickrob@snap.net.nz>
-
-       * commands.texi (Click Events): Describe width and height when
-       object is nil.
-
-2007-05-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * commands.texi (Click Events): Layout more logically.
-       Describe width and height.
-       (Drag Events, Motion Events): Update to new format for position.
-
-2007-06-02  Richard Stallman  <rms@gnu.org>
-
-       * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
-
-2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Version 22.1 released.
-
-2007-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * text.texi (Special Properties): Correct meaning of fontified face.
-
-2007-05-30  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Add link to Adjusting Point.
-
-2007-05-12  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Margins): indent-to-left-margin is not the default.
-       (Mode-Specific Indent): For indent-line-function, the default
-       is indent-relative.
-
-       * modes.texi (Example Major Modes): Explain last line of text-mode
-       is redundant.
-
-2007-05-10  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Scanning Keymaps): Update where-is-internal example.
-
-       * help.texi (Keys in Documentation): Add reference to
-       Documentation Tips.
-
-       * files.texi (Format Conversion): TO-FN gets three arguments.
-
-       * modes.texi (Auto Major Mode): Document file-start-mode-alist.
-
-2007-05-10  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * elisp.texi (Top): Remove "Saving Properties" from detailed menu.
-       * files.texi (Format Conversion): Expand intro; add menu.
-       (Format Conversion Overview, Format Conversion Round-Trip)
-       (Format Conversion Piecemeal): New nodes/subsections.
-       * hooks.texi: Xref "Format Conversion" , not "Saving Properties".
-       * text.texi (Text Properties): Remove "Saving Properties" from menu.
-       (Saving Properties): Delete node/subsection.
-
-2007-05-07  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi (EMACSVER): Back to 22.
-
-2007-05-06  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Accepting Output): Revert most of previous change.
-
-2007-05-05  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Accepting Output): accept-process-output
-       uses microseconds, not milliseconds.  But that arg is obsolete.
-
-2007-05-04  Karl Berry  <karl@tug.org>
-
-       * elisp.texi (EMACSVER) [smallbook]: 22.1, not 22.
-
-2007-05-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * tips.texi (Documentation Tips): Rearrange items to place the
-       more important ones first.  Add an index entry for hyperlinks.
-
-2007-05-03  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing.
-       (EMACSVER) [smallbook]: 22 for printed version.
-
-       * control.texi (Signaling Errors) <signal>: texinfo.tex is fixed,
-       so restore anchor to normal position after defun.  Found by Kevin Ryde.
-
-2007-04-26  Glenn Morris  <rgm@gnu.org>
-
-       * elisp.texi (EMACSVER): Increase to 22.1.50.
-
-2007-04-28  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi: Improve line breaks on copyright page,
-       similar layout to emacs manual, 8.5x11 by default.
-
-2007-04-24  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Add xref to Overlay Properties.
-
-       * display.texi (Overlay Properties): Add xref to Special Properties.
-
-2007-04-22  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Extended Menu Items): Move the info about
-       format with cached keyboard binding.
-
-2007-04-21  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Clarify previous change.
-
-       * files.texi (File Name Expansion): Clarify previous change.
-
-       * display.texi (Attribute Functions): Fix example for
-       face-attribute-relative-p.
-
-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"
-       setups.
-       (Display Feature Testing): Note that display refers to all
-       physical monitors for multi-monitor setups.
-
-2007-04-14  Richard Stallman  <rms@gnu.org>
-
-       * lists.texi (Sets And Lists): Clarify `delete' examples.
-       Remove spurious xref to same node.
-       Clarify xref for add-to-list.
-
-2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
-
-       * keymaps.texi (Format of Keymaps): Remove spurious ")" from
-       value of lisp-mode-map.
-
-2007-04-11  Karl Berry  <karl@gnu.org>
-
-       * anti.texi (Antinews):
-       * display.texi (Overlay Properties, Defining Images):
-       * processes.texi (Synchronous Processes, Sentinels):
-       * syntax.texi (Syntax Table Internals):
-       * searching.texi (Regexp Special):
-       * nonascii.texi (Default Coding Systems):
-       * text.texi (Special Properties):
-       * minibuf.texi (Basic Completion): Wording to improve breaks in
-       8.5x11 format.
-       * elisp.texi (smallbook): New @set to more easily switch between
-       smallbook and 8.5x11.
-
-2007-04-11  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Lazy Properties): Minor fix.
-
-2007-04-08  Karl Berry  <karl@gnu.org>
-
-       * symbols.texi (Plists and Alists): Period after "vs" in index entries.
-       * macros.texi (Backquote): Downcase Backquote in index entries for
-       consistency.
-
-2007-04-08  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Adaptive Fill): Just describe default,
-       don't show it (since it contains non-ASCII chars).
-
-2007-04-07  Karl Berry  <karl@gnu.org>
-
-       * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in
-       adaptive-fill-regexp's value, since they are not in the standard
-       TeX fonts.
-
-2007-04-07  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * display.texi (Defining Faces): Fix example.
-
-2007-04-07  Karl Berry  <karl@gnu.org>
-
-       * display.texi (Button Buffer Commands): Improve page break.
-
-2007-04-07  Richard Stallman  <rms@gnu.org>
-
-       * advice.texi (Activation of Advice): Remove redundant index entry.
-
-       * backups.texi: Improve index entries.  Remove redundant ones.
-
-       * compile.texi (Byte Compilation): Improve index entry.
-
-       * hash.texi (Creating Hash): Improve index entry.
-
-       * symbols.texi (Definitions): Improve index entry.
-
-       * edebug.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * maps.texi (Standard Keymaps): Remove useless index entry.
-
-       * help.texi (Documentation Basics): Remove redundant index entries.
-
-       * customize.texi: Improve index entries.
-       Remove redundant/useless ones.
-
-       * locals.texi (Standard Buffer-Local Variables): Clarify intro text.
-
-       * streams.texi (Output Variables): Improve index entry.
-
-       * abbrevs.texi (Abbrevs): Remove useless index entry.
-
-       * macros.texi (Expansion): Remove useless index entry.
-
-       * text.texi: Improve index entries.  Remove redundant/useless ones.
-       (Text Properties, Examining Properties)
-       (Special Properties): Use "property category" instead of "category"
-       to refer to the `category' property.
-
-       * positions.texi: Improve index entries.  Remove useless one.
-
-       * lists.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * os.texi: Improve index entries.
-       (Timers): Fix previous change.
-
-       * buffers.texi: Improve index entries.
-       (Modification Time): Get rid of term "obsolete buffer".
-
-       * debugging.texi: Improve index entries.
-       (Test Coverage): Add xref to other test coverage ftr.
-
-       * eval.texi: Improve index entry.  Remove redundant ones.
-
-       * numbers.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * files.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * objects.texi: Improve index entries.
-
-       * processes.texi: Improve index entries.
-
-       * modes.texi: Improve index entry.  Remove redundant one.
-
-       * nonascii.texi: Improve index entries.
-
-       * internals.texi: Improve index entries.
-
-       * syntax.texi: Improve index entries.
-
-       * keymaps.texi (Active Keymaps): Improve index entries.
-
-       * commands.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * frames.texi: Improve index entries.  Remove redundant/useless ones.
-
-       * markers.texi: Improve index entries.  Remove redundant ones.
-
-       * tips.texi: Improve index entries.
-
-       * loading.texi (Unloading): Improve index entry.
-
-       * variables.texi: Improve index entries.  Remove redundant one.
-
-       * sequences.texi: Improve index entry.
-
-       * display.texi: Improve index entries.  Remove redundant ones.
-
-       * windows.texi: Improve index entries.
-
-       * searching.texi: Improve index entries.  Remove redundant one.
-
-       * strings.texi (Case Tables): Improve last change.
-
-2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * strings.texi (Case Tables): Document with-case-table and
-       ascii-case-table.
-
-2007-04-03  Karl Berry  <karl@gnu.org>
-
-       * processes.texi (Network): Reword to improve page break.
-
-2007-04-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * functions.texi (Inline Functions): Describe more disadvantages
-       of defsubst, and make advice against it stronger.
-
-2007-04-02  Karl Berry  <karl@gnu.org>
-
-       * backups.texi (Backup Names): Avoid widow words.
-       * modes.texi (Example Major Modes): Align last comment.
-
-2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Remapping Commands): Document new arg to
-       command-remapping.
-
-2007-04-01  Karl Berry  <karl@gnu.org>
-
-       * processes.texi (Low-Level Network): Typo.
-       * loading.texi (Hooks for Loading): Avoid double "the".
-       * keymaps.texi (Key Sequences): No double "and".
-       (Changing Key Bindings): Shorten to improve line break.
-
-2007-03-31  Glenn Morris  <rgm@gnu.org>
-
-       * os.texi (Timers): Fix description of run-at-time TIME formats.
-
-2007-03-31  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Invisible Text): Correct buffer-invisibility-spec
-       regarding ellipsis.
-
-2007-03-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * intro.texi (nil and t):
-       * symbols.texi (Plists and Alists):
-       * variables.texi (Variable Aliases, Constant Variables):
-       * functions.texi (Defining Functions):
-       * advice.texi (Advising Primitives):
-       * debugging.texi (Syntax Errors, Compilation Errors):
-       * minibuf.texi (Minibuffer Windows):
-       * commands.texi (Adjusting Point):
-       * modes.texi (Syntactic Font Lock, Faces for Font Lock)
-       (Auto Major Mode, Major Mode Conventions):
-       * help.texi (Describing Characters):
-       * files.texi (Create/Delete Dirs, Information about Files)
-       (File Locks, Writing to Files, Reading from Files)
-       (Saving Buffers):
-       * windows.texi (Resizing Windows, Cyclic Window Ordering):
-       * frames.texi (Finding All Frames):
-       * positions.texi (Buffer End, Motion):
-       * markers.texi (The Region):
-       * text.texi (Deletion, Near Point):
-       * display.texi (Displaying Messages, Truncation):
-       * os.texi (Processor Run Time):
-       * tips.texi (Key Binding Conventions, Programming Tips)
-       (Warning Tips, Documentation Tips, Comment Tips):
-       * internals.texi (Memory Usage): Improve indexing.
-
-       * variables.texi (Frame-Local Variables):
-       * functions.texi (Argument List):
-       * loading.texi (Library Search):
-       * streams.texi (Output Variables):
-       * keymaps.texi (Translation Keymaps, Searching Keymaps):
-       * searching.texi (Replacing Match, Search and Replace):
-       * processes.texi (Byte Packing, Decoding Output)
-       (Accepting Output, Network Servers, Shell Arguments):
-       * display.texi (Abstract Display, Image Cache, Scroll Bars):
-       * windows.texi (Window Point, Window Start):
-       * frames.texi (Management Parameters, Frame Parameters, Frame Titles):
-       * commands.texi (Reading Input, Keyboard Events):
-       * minibuf.texi (Reading File Names, Minibuffer Completion)
-       (Recursive Mini):
-       * positions.texi (List Motion):
-       * hash.texi (Hash Tables, Creating Hash, Defining Hash):
-       * numbers.texi (Arithmetic Operations, Math Functions)
-       (Predicates on Numbers, Comparison of Numbers):
-       (Numeric Conversions):
-       * locals.texi (Standard Buffer-Local Variables):
-       * maps.texi (Standard Keymaps):
-       * os.texi (User Identification, System Environment, Recording Input)
-       (X11 Keysyms):
-       * nonascii.texi (Non-ASCII Characters, Splitting Characters):
-       * backups.texi (Backups and Auto-Saving):
-       * customize.texi (Customization, Group Definitions)
-       (Variable Definitions):
-       * compile.texi (Byte Compilation): Improve index entries.
-
-2007-03-31  Karl Berry  <karl@gnu.org>
-
-       * macros.texi (Defining Macros): Avoid widow syllable.
-
-2007-03-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Postscript -> PostScript.
-
-       * display.texi (Images, Postscript Images): Postscript -> PostScript.
-
-2007-03-31  Markus Triska  <markus.triska@gmx.at>
-
-       * internals.texi (Writing Emacs Primitives): Untabify `For'.
-
-2007-03-30  Karl Berry  <karl@gnu.org>
-
-       * lists.texi (List-related Predicates): Remove spurious @need.
-       (Setcdr): Use @smallexample to improve page break.
-       (Association Lists) <assoc>: Reword to improve page break.
-
-       * strings.texi (String Conversion): Insert blank line to improve
-       page break.
-
-       * numbers.texi (Random Numbers): Use @minus{}.
-       (Math Functions): Use @minus{}.
-
-       * intro.texi (Acknowledgements): Avoid line breaks before middle
-       initials.
-
-2007-03-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * errors.texi (Standard Errors): Add an index entry.
-
-2007-03-19  Richard Stallman  <rms@gnu.org>
-
-       * os.texi (Recording Input): recent-keys now gives 300 keys.
-
-2007-03-12  Glenn Morris  <rgm@gnu.org>
-
-       * os.texi: Replace "daylight savings" with "daylight saving"
-       throughout.
-
-2007-03-05  Richard Stallman  <rms@gnu.org>
-
-       * variables.texi (File Local Variables):
-       Update enable-local-variables values.
-
-2007-03-04  Richard Stallman  <rms@gnu.org>
-
-       * syntax.texi (Control Parsing): Minor clarification.
-
-       * strings.texi (Formatting Strings): Clarify width, precision, flags.
-
-       * sequences.texi (Sequence Functions): Move string-bytes away,
-       add xref.
-
-       * nonascii.texi (Text Representations): Move string-bytes here.
-
-       * modes.texi (Major Mode Conventions): Fundamental mode is exception.
-
-       * minibuf.texi (Basic Completion): Minor clarification.
-
-       * markers.texi (The Mark): Clarify existence vs activation of mark.
-       Other cleanup.
-
-       * display.texi (Finding Overlays): Write better example.
-
-       * compile.texi (Eval During Compile): Clarify putting macros
-       in eval-when-compile.
-
-2007-02-25  Vinicius Jose Latorre  <viniciusjl@ig.com.br>  (tiny change)
-
-       * loading.texi (How Programs Do Loading): Fix anchor position at
-       load-read-function definition doc.
-
-2007-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * strings.texi (Text Comparison): Mention that assoc-string
-       converts symbols to strings before testing.
-
-2007-02-17  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Bindat Spec): Vector types can have optional
-       element type.
-       (Bindat Examples): Fix example.  Add vector with element type.
-
-2007-02-16  Andreas Schwab  <schwab@suse.de>
-
-       * strings.texi (Formatting Strings): Document '+' flag.
-
-2007-02-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * strings.texi (Modifying Strings): Clarify that `clear-string'
-       always converts the string to unibyte.
-
-2007-02-14  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Glyphs): Add make-glyph-code, glyph-char, glyph-face.
-       Rewrite glyph code description to refer to these functions.
-       Remove details of encoding face number and char into integer code.
-
-2007-02-03  Alan Mackenzie  <acm@muc.de>
-
-       * loading.texi (Hooks for Loading): Make the description of
-       `eval-after-load' more detailed, and amend the description of
-       after-load-alist, in accordance with changes from 2006-05.
-
-2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Defining Minor Modes): Document that a :require
-       keyword or similar may be required to make saved customization
-       variables work.
-
-2007-02-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Make the detailed menu headers compliant with
-       Texinfo guidelines and with what texnfo-upd.el expects.
-       Add comments to prevent people from inadvertently modifying the key
-       parts needed by `texinfo-multiple-files-update'.
-
-2007-02-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Update the top-level menus.
-
-       * syntax.texi (Categories): Add index entries.
-
-2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * display.texi (Attribute Functions): Fix name and description of
-       the UNDERLINE arg of `set-face-underline-p'.
-
-2007-01-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * elisp.texi (Top): Add "Standard Errors", "Standard Buffer-Local
-       Variables", and "Standard Keymaps" to the detailed menu.
-
-       * variables.texi (Future Local Variables): Add index entry.
-
-2007-01-28  Richard Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Clarify the tip about macros
-       that define a function or a variable.
-
-       * files.texi (File Attributes): UID and GID can be floats.
-       (Magic File Names): Explain why deferring all operations to
-       the standard handler does not work.
-
-2007-01-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * backups.texi (Reverting): Use "buffer" instead of "file"
-       when talking about major and minor modes.
-
-2007-01-21  Richard Stallman  <rms@gnu.org>
-
-       * help.texi (Documentation): Add xref to Documentation Tips.
-
-2007-01-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * tips.texi (Coding Conventions): Fix typos.
-
-2007-01-05  Richard Stallman  <rms@gnu.org>
-
-       * modes.texi (Defining Minor Modes): Fix previous change.
-
-2007-01-03  Richard Stallman  <rms@gnu.org>
-
-       * customize.texi (Variable Definitions, Customization Types):
-       Don't use * in doc string for defcustom.
-
-2007-01-02  Richard Stallman  <rms@gnu.org>
-
-       * variables.texi (Variable Aliases): Clarify that aliases vars
-       always have the same value.
-
-       * processes.texi (Bindat Spec): Fix Texinfo usage.
-
-       * modes.texi (Defining Minor Modes): Explain effect of command
-       defined with define-global-minor-mode on new buffers.
-
-2006-12-30  Kim F. Storm  <storm@cua.dk>
-
-       * keymaps.texi (Tool Bar): Describe `grow-only' value of
-       `auto-resize-tool-bars'.
-
-2006-12-30  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Active Keymaps): Fix previous change.
-
-2006-12-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * keymaps.texi (Active Keymaps): Make xref to lookup-key.
-
-2006-12-30  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Bindat Spec): Clarify using field names in
-       length specifications.
-
-2006-12-29  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Bindat Spec): Explain eval forms and lengths better.
-       Add count and index variables for eval forms in repeat blocks.
-
-2006-12-24  Richard Stallman  <rms@gnu.org>
-
-       * customize.texi (Variable Definitions):
-       Document new name custom-add-frequent-value.
-
-2006-12-19  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Misc Events): User signals now result in sigusr1
-       and sigusr2 events which are handled through special-event-map.
-       (Special Events): User signals and drag-n-drop are special.
-
-2006-12-17  Richard Stallman  <rms@gnu.org>
-
-       * loading.texi (Named Features): Explain subfeatures better.
-
-       * customize.texi: Use "option" only for user options.
-       For the keyword values inside defcustom etc, say "keywords".
-       For :options value's elements, say "elements".
-       :group should not be omitted.
-
-       * syntax.texi (Parsing Expressions): Split up node.
-       (Motion via Parsing, Position Parse, Parser State)
-       (Low-Level Parsing, Control Parsing): New subnodes.
-       (Parser State): Document syntax-ppss-toplevel-pos.
-
-       * positions.texi (List Motion): Punctuation fix.
-
-       * files.texi (File Name Completion): Document PREDICATE arg
-       to file-name-completion.
-
-2006-12-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * internals.texi (Building Emacs, Writing Emacs Primitives):
-       Add index entries.
-
-2006-12-11  Richard Stallman  <rms@gnu.org>
-
-       * modes.texi (Font Lock Basics): Explain how nil for font-lock-defaults
-       affects face menu.  Explain how to make it non-nil without enabling
-       any fontification.
-
-2006-12-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Font Lock Basics): Document nil value of
-       font-lock-defaults.
-
-2006-12-10  Glenn Morris  <rgm@gnu.org>
-
-       * abbrevs.texi (Defining Abbrevs): Mention `define-abbrev' 'force
-       value for system-flag argument.  Abbrev tables may not be empty
-       when major modes are loaded.
-
-2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in (maintainer-clean): Partially revert last
-       change; delete "elisp-?" and "elisp-??" instead of "elisp-*"
-       to protect elisp-covers.texi.
-
-2006-12-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in (maintainer-clean): Depend on `distclean'.
-       Don't remove elisp* info files; they are already deleted by the
-       `clean' and `distclean' targets, and they are in the $(infodir)
-       directory, not the current one.
-
-2006-12-04  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Misc Events): Update signal events.
-       (Event Examples): Add signal example.
-
-2006-11-29  Richard Stallman  <rms@gnu.org>
-
-       * frames.texi (Visibility of Frames): Explain visible windows
-       can be covered by others.  Add xref for raise-frame.
-
-2006-11-28  Richard Stallman  <rms@gnu.org>
-
-       * searching.texi (Regexp Special): Update when ^ is special.
-
-2006-11-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * customize.texi (Customization, Common Keywords)
-       (Group Definitions, Variable Definitions, Composite Types)
-       (Type Keywords, Customization Types): Add index entries for
-       various customization keywords.
-
-2006-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Multiline Font Lock): Rephrase some parts for clarity.
-
-2006-11-10  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * frames.texi (Window System Selections): Remove clipboard from
-       description of selection-coding-system.
-
-2006-11-06  Richard Stallman  <rms@gnu.org>
-
-       * lists.texi (List Variables): Document COMPARE-FN.
-
-       * keymaps.texi: Avoid use of "binding" to mean a relation;
-       use it only to refer to the meaning associated with a key.
-       (Keymaps): Change menu node description.
-
-       * elisp.texi (Top): Change menu node description.
-
-       * display.texi (Managing Overlays): Document overlay-recenter.
-
-2006-10-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Makefile.in: Use relative paths to avoid advertising filesystem
-       contents during compilation.
-
-2006-10-23  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Event Input Misc): Update unread-command-events.
-
-2006-10-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * lists.texi (Sets And Lists): Fix typos.
-
-2006-10-18  Juanma Barranquero  <lekktu@gmail.com>
-
-       * control.texi (Processing of Errors): Use @var for an argument,
-       not @code.
-
-2006-10-16  Richard Stallman  <rms@gnu.org>
-
-       * edebug.texi (Edebug Recursive Edit): Minor cleanup.
-
-       * keymaps.texi (Format of Keymaps): Show all the keymap element
-       patterns that result from menu items.
-       (Key Lookup): Minor cleanups.
-
-       * modes.texi (Precalculated Fontification): Don't say that
-       not setting font-lock-defaults avoids loading font-lock.
-
-       * help.texi (Documentation): Move xref to Emacs Manual here.
-       (Documentation Basics): From here.
-       Also doc emacs-lisp-docstring-fill-column.
-
-       * elisp.texi: Update version and ISBN.
-
-       * commands.texi (Interactive Call): Clarify KEYS arg to
-       call-interactively is a vector.
-       (Command Loop Info): Delete anchor in this-command-keys.
-       Add anchor in this-command-keys-vector.
-       (Recursive Editing): Document how recursive-edit
-       handles the current buffer.
-
-2006-10-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frames.texi (Frame Titles): %c and %l are ignored in
-       frame-title-format.
-
-2006-10-11  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Key Sequences): Clarify use of kbd.
-
-2006-10-10  Kim F. Storm  <storm@cua.dk>
-
-       * lists.texi (Sets And Lists): Add memql.
-
-2006-10-03  Richard Stallman  <rms@gnu.org>
-
-       * searching.texi (Char Classes): Document :multibyte: and :unibyte:.
-       Clarify :ascii: and :nonascii:.
-
-2006-09-29  Juri Linkov  <juri@jurta.org>
-
-       * modes.texi (%-Constructs): Reorder coding systems in the
-       documentation of %z to the real order displayed in the modeline.
-
-2006-09-25  Richard Stallman  <rms@gnu.org>
-
-       * os.texi (Timers): Describe timer-max-repeats.
-
-2006-09-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Timers): Mention with-local-quit.
-
-2006-09-24  Richard Stallman  <rms@gnu.org>
-
-       * searching.texi (Searching and Matching): Mention property search.
-
-       * commands.texi (Command Loop Info): Explain how read-event affects
-       this-command-keys.
-
-2006-09-20  Richard Stallman  <rms@gnu.org>
-
-       * os.texi (Timers): Clarify about REPEAT when timer is delayed.
-
-       * windows.texi (Window Start): Minor cleanups.
-
-2006-09-20  Kim F. Storm  <storm@cua.dk>
-
-       * windows.texi (Window Start): pos-visible-in-window-p allows
-       specifying t for position to mean "end of window".
-       Add window-line-height.
-
-       * anti.texi (Antinews): Mention window-line-height.
-
-2006-09-19  David Kastrup  <dak@gnu.org>
-
-       * keymaps.texi (Searching Keymaps): Small clarification.
-
-2006-09-18  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Creating Keymaps): Explain that keymap prompt strings
-       cause keyboard menus.
-       (Menu Keymaps): Likewise.
-       (Defining Menus, Keyboard Menus): Clarify.
-
-       * text.texi (Fields): Clarify explanation of constrain-to-field.
-
-2006-09-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * variables.texi (Tips for Defining): Fix a typo.
-
-2006-09-15  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Remapping Commands, Searching Keymaps)
-       (Active Keymaps): Clean up previous change.
-
-2006-09-15  Jay Belanger  <belanger@truman.edu>
-
-       * gpl.texi: Replace "Library Public License" by "Lesser Public
-       License" throughout.
-
-2006-09-15  David Kastrup  <dak@gnu.org>
-
-       * keymaps.texi (Active Keymaps): Adapt description to use
-       `get-char-property' instead `get-text-property'.  Explain how
-       mouse events change this.  Explain the new optional argument of
-       `key-binding' and its mouse-dependent lookup.
-       (Searching Keymaps): Adapt description similarly.
-       (Remapping Commands): Explain the new optional argument of
-       `command-remapping'.
-
-2006-09-14  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Searching Keymaps): Clarification.
-       (Active Keymaps): Refer to Searching Keymaps instead of duplication.
-
-2006-09-13  Richard Stallman  <rms@gnu.org>
-
-       * objects.texi (Character Type): Node split.
-       Add xref to Describing Characters.
-       (Basic Char Syntax, General Escape Syntax)
-       (Ctl-Char Syntax, Meta-Char Syntax): New subnodes.
-
-2006-09-11  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Display Table Format): Wording clarification.
-       (Glyphs): Clarifications.
-
-2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Active Keymaps): Mention that key-binding checks
-       local maps.
-
-2006-09-10  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Forcing Redisplay): Document return value of
-       function redisplay.
-
-2006-09-09  Richard Stallman  <rms@gnu.org>
-
-       * windows.texi (Window Hooks): Explain limits of
-       window-scroll-functions.
-
-       * display.texi (Fringe Indicators): Update for last change in
-       indicate-buffer-boundaries.
-
-2006-09-08  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Bindat Spec): Suggest names ending in -bindat-spec.
-
-2006-09-06  Kim F. Storm  <storm@cua.dk>
-
-       * frames.texi (Display Feature Testing): display-mm-dimensions-alist.
-
-       * windows.texi (Window Start): Update pos-visible-in-window-p.
-
-2006-09-04  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Accepting Output): Explain SECONDS=0 for
-       accept-process-output.
-
-       * os.texi (Idle Timers): Explain why timer functions should not
-       loop until (input-pending-p).
-
-2006-09-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (usermanualdir): New variable.
-       (elisp.dvi): Use it.
-
-2006-09-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * buffers.texi (Buffer Modification): Fix last change.
-
-2006-09-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * buffers.texi (Buffer Modification):
-       Document buffer-chars-modified-tick.
-
-2006-08-31  Richard Stallman  <rms@gnu.org>
-
-       * modes.texi (Syntactic Font Lock): Mention specific faces once again.
-
-2006-08-31  Richard Bielawski  <RBielawski@moneygram.com>  (tiny change)
-
-       * modes.texi (Syntactic Font Lock):
-       Mention font-lock-syntactic-face-function
-       instead of specific faces.
-
-2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Images): Add xrref to display-images-p.
-
-2006-08-28  Kenichi Handa  <handa@m17n.org>
-
-       * nonascii.texi (Lisp and Coding Systems): Fix description of
-       detect-coding-region.
-
-2006-08-27  Michael Olson  <mwolson@gnu.org>
-
-       * processes.texi (Transaction Queues): Remove stray quote
-       character.
-
-2006-08-25  Richard Stallman  <rms@gnu.org>
-
-       * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value.
-       Add xref.
-
-2006-08-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Timers): Avoid waiting inside timers.
-
-2006-08-21  Lute Kamstra  <lute@gnu.org>
-
-       * Makefile.in: Use ../man/texinfo.tex to build elisp.dvi.
-
-2006-08-20  Richard Stallman  <rms@gnu.org>
-
-       * os.texi (Idle Timers): New node, split out from Timers.
-       Document current-idle-time.
-       * commands.texi (Reading One Event): Update xref.
-       * elisp.texi (Top): Update subnode menu.
-
-2006-08-16  Richard Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Extended Menu Items): Show format of cached
-       bindings in extended menu items.
-
-       * customize.texi (Variable Definitions): Explain when the
-       standard value expression is evaluated.
-
-2006-08-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Reading One Event): Explain idleness in
-       `read-event'.
-
-2006-08-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Near Point): Say "cursor" not "terminal cursor".
-       (Commands for Insertion): Remove split-line since it's not
-       relevant for Lisp programming.
-       (Yank Commands): Rewrite introduction.
-       (Undo): Clarify.
-       (Maintaining Undo): Clarify.  Document undo-ask-before-discard.
-       (Filling): Remove redundant comment.  Clarify return value of
-       current-justification.
-       (Margins): Minor clarifications.
-       (Adaptive Fill): Update default value of adaptive-fill-regexp.
-       (Sorting): Update definition of sort-lines.
-       (Columns): Clarify behavior of sort-columns.
-       (Indent Tabs): Link to Tab Stops in Emacs manual.
-       (Special Properties): Clarify.
-       (Clickable Text): Mention Buttons package.
-
-2006-08-12  Kevin Ryde  <user42@zip.com.au>
-
-       * os.texi (Time Parsing): Add %z to description of
-       format-time-string, as per docstring.  Add cross reference to
-       glibc manual for strftime.
-
-2006-08-08  Richard Stallman  <rms@gnu.org>
-
-       * modes.texi: Clean up wording in previous change.
-
-2006-08-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * modes.texi (Hooks): Clarify.
-       (Major Mode Basics): Mention define-derived-mode explicitly.
-       (Major Mode Conventions): Rebinding RET is OK for some modes.
-       Mention change-major-mode-hook and after-change-major-mode-hook.
-       (Example Major Modes): Move to end of Modes section.
-       (Mode Line Basics): Clarify.
-       (Mode Line Data): Mention help-echo and local-map in strings.
-       Explain reason for treatment of non-risky variables.
-       (Properties in Mode): Clarify.
-       (Faces for Font Lock): Add font-lock-negation-char-face.
-
-2006-08-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * strings.texi (Formatting Strings): Warn against arbitrary
-       strings as first arg to `format'.
-
-2006-07-31  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * text.texi (Clickable Text): Mention `help-echo' text property.
-       Update intro, examples and associated explanations.
-
-2006-07-31  Richard Stallman  <rms@gnu.org>
-
-       * commands.texi: Update xrefs.
-       (Event Mod): New node, cut out from old Translating Input.
-
-       * maps.texi: Update xrefs.
-
-       * keymaps.texi (Translation Keymaps): New node.
-       Update xrefs from Translating Input to Translation Keymaps.
-
-       * elisp.texi (Top): Update subnode menu.
-
-       * display.texi (Face Functions): Fix explanations of FRAME=t or nil.
-
-       * os.texi (System Interface): Fix menu descriptions of some nodes.
-       (Translating Input): Node deleted.
-
-2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
-
-       * modes.texi (Minor Mode Conventions): Update xref for add-to-list.
-
-       * lists.texi (Sets And Lists): Likewise.
-
-2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * text.texi (Fields): Mention POS
-       requirement when narrowing is in effect.
-
-2006-07-28  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Face Attributes): Simplify wording.
-       (Attribute Functions): Clarify meaning of new-frame default
-       attribute settings.
-
-       * customize.texi (Common Keywords): Document how to use
-       :package-version in a package not in Emacs.
-
-2006-07-28  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Reading One Event): Fix last change.
-
-2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Reading One Event): Document SECONDS argument for
-       read-event, read-char, and read-char-exclusive.
-
-2006-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Multiline Font Lock): Can't use jit-lock-defer-multiline
-       to ensure correct identification.
-
-2006-07-24  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Clickable Text): Clarify.
-
-       * sequences.texi (Vector Functions): Delete duplicate xref.
-
-       * objects.texi (Function Type): Clarify.
-
-       * modes.texi (Keymaps and Minor Modes): List punct chars for minor
-       modes.
-
-       * lists.texi (List Variables): New node.
-       Material moved from other nodes.
-
-       * variables.texi (Setting Variables): add-to-list and
-       add-to-ordered-list moved to List Variables node.
-
-2006-07-23  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * text.texi (Links and Mouse-1):
-       For mouse-on-link-p, expand on arg POS.
-
-2006-07-21  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Forcing Redisplay): Don't mention systems which
-       don't support sub-second timers for redisplay-preemption-period.
-
-       * os.texi (Terminal Output): Clarify text vs graphical terminal.
-
-2006-07-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * frames.texi (Input Focus): Document that focus-follows-mouse has
-       no effect on MS-Windows.
-
-2006-07-18  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Forcing Redisplay): Cleanups in previous change.
-
-       * processes.texi (Low-Level Network): Make menu more convenient.
-
-2006-07-18  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Forcing Redisplay): redisplay-preemption-period
-       only used on window systems.  Add xref to Terminal Output.
-
-       * os.texi (Terminal Output): baud-rate only controls preemption on
-       non-window systems.  Add xref to Forcing Redisplay.
-
-       * processes.texi (Low-Level Network): Rename node "Make Network"
-       to "Network Processes".
-
-2006-07-18  Karl Berry  <karl@gnu.org>
-
-       * variables.texi, functions.texi, customize.texi, loading.texi:
-       * edebug.texi, minibuf.texi: Fix page breaks through chapter 20.
-
-2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * commands.texi (Waiting): Document batch-mode sit-for behavior.
-
-2006-07-17  Richard Stallman  <rms@gnu.org>
-
-       * eval.texi, elisp.texi, text.texi: Use real doublequote inside menus.
-       Put period and comma inside quotes.
-
-       * loading.texi, markers.texi: Use real doublequote inside menus.
-
-       * windows.texi: Put point and comma inside quotes.
-       (Textual Scrolling): Use @samp for error message.
-
-       * variables.texi, tips.texi, syntax.texi, symbols.texi:
-       * strings.texi, streams.texi, processes.texi, os.texi:
-       * objects.texi, numbers.texi, modes.texi, minibuf.texi:
-       * lists.texi, keymaps.texi, intro.texi, hash.texi, internals.texi:
-       * gpl.texi, functions.texi, files.texi, frames.texi, doclicense.texi:
-       * display.texi, control.texi, commands.texi, buffers.texi, anti.texi:
-       Put point and comma inside quotes.
-
-       * control.texi (Processing of Errors): Add command-error-function.
-
-       * variables.texi (File Local Variables): Clarify that
-       file local variables make buffer-local bindings.
-
-       * modes.texi (Syntactic Font Lock): Give default for
-       font-lock-syntax-table.
-
-2006-07-17  Nick Roberts  <nickrob@snap.net.nz>
-
-       * text.texi (Special Properties): Clean up previous change.
-
-2006-07-16  Karl Berry  <karl@gnu.org>
-
-       * objects.texi, numbers.texi, strings.texi, lists.texi, hash.texi:
-       * control.texi: Fix bad page breaks through chapter 10 (control).
-
-       * anti.texi (Antinews): Reorder face-attribute fns to avoid
-       underfull hbox.
-
-2006-07-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * text.texi (Special Properties): Describe fontified text property
-       in relation to a character (not text).
-
-2006-07-15  Kim F. Storm  <storm@cua.dk>
-
-       * maps.texi (Standard Keymaps): Add xref for minibuffer maps.
-       Add apropos-mode-map, custom-mode-map, esc-map, global-map,
-       grep-mode-map, help-map, help-mode-map, kmacro-map, and tool-bar-map.
-
-       * anti.texi (Antinews): Mention redisplay function.
-       The kbd macro existed, but was not documented, before 22.x.
-       Function pos-visible-in-window-p is not new in 22.x, just enhanced.
-
-2006-07-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * display.texi (Displaying Messages): Add anchor.
-
-       * frames.texi (Dialog Boxes): Use it.
-
-2006-07-12  Richard Stallman  <rms@gnu.org>
-
-       * objects.texi (Frame Type): Explain nature of frames better.
-
-       * frames.texi (Frames): Explain nature of frames better.
-
-2006-07-12  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * tips.texi (Coding Conventions): Explain why use cl at compile time.
-
-2006-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frames.texi (Window System Selections): Mention scrap support for Mac.
-       Default value of x-select-enable-clipboard is t on Mac.
-
-       * os.texi (Getting Out): Suspending is not allowed on Mac, either.
-
-2006-07-11  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Forcing Redisplay): Add `redisplay' function.
-       Don't mention (sit-for -1) -- use (redisplay t) instead.
-
-       * commands.texi (Waiting): (sit-for -1) is no longer special.
-       (sit-for 0) is equivalent to (redisplay).
-       Iconifying/deiconifying no longer makes sit-for return.
-
-2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * display.texi (Buttons): Fix typo.
-
-       * index.texi, elisp.texi (New Symbols): Comment node out.
-
-2006-07-09  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Truncation): Clean up previous change.
-
-2006-07-08  Richard Stallman  <rms@gnu.org>
-
-       * commands.texi (Interactive Call): Use 3 as prefix in example
-       for execute-extended-command.
-
-       * display.texi (Attribute Functions): Move paragraph about
-       compatibility with Emacs < 21.
-
-2006-07-09  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Refresh Screen): Clarify force-window-update.
-       (Truncation): "Normally" indicated by fringe arrows.
-
-2006-07-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * windows.texi (Textual Scrolling, Resizing Windows):
-       * variables.texi (Constant Variables):
-       * text.texi (Buffer Contents, Deletion, Changing Properties)
-       (Property Search, Special Properties, Sticky Properties)
-       (Links and Mouse-1, Fields, Change Hooks):
-       * syntax.texi (Syntax Table Functions, Parsing Expressions)
-       (Categories):
-       * symbols.texi (Other Plists):
-       * streams.texi (Output Variables):
-       * processes.texi (Input to Processes, Query Before Exit):
-       * positions.texi (Word Motion, Text Lines, List Motion):
-       * os.texi (Init File, System Environment, Sound Output)
-       (Session Management):
-       * nonascii.texi (Text Representations, Character Sets)
-       (Chars and Bytes, Locales):
-       * modes.texi (Defining Minor Modes, Header Lines):
-       * minibuf.texi (Minibuffer Contents):
-       * markers.texi (Information from Markers):
-       * lists.texi (List Elements, Building Lists, Association Lists):
-       * keymaps.texi (Tool Bar):
-       * hash.texi (Creating Hash, Hash Access, Defining Hash, Other Hash):
-       * functions.texi (What Is a Function, Mapping Functions):
-       * frames.texi (Creating Frames, Parameter Access, Pointer Shape)
-       (Color Names, Text Terminal Colors, Display Feature Testing):
-       * files.texi (Visiting Functions, File Name Components)
-       (Unique File Names, Contents of Directories):
-       * display.texi (Forcing Redisplay, Displaying Messages)
-       (Temporary Displays, Font Selection, Auto Faces)
-       (Font Lookup, Fringe Indicators, Display Margins)
-       (Image Descriptors, Showing Images, Image Cache, Button Types)
-       (Making Buttons, Manipulating Buttons, Button Buffer Commands)
-       (Display Table Format, Glyphs):
-       * control.texi (Iteration):
-       * commands.texi (Command Loop Info, Adjusting Point):
-       * backups.texi (Making Backups, Auto-Saving):
-       Remove @tindex entries.
-
-2006-07-07  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Fringe Cursors): Fix typo.
-       (Customizing Bitmaps): Fix define-fringe-bitmap entry.
-       (Overlay Arrow): Default is overlay-arrow fringe indicator.
-
-2006-07-05  Richard Stallman  <rms@gnu.org>
-
-       * text.texi (Buffer Contents): Add example of text props
-       in result of buffer-substring.
-       (Text Properties): Explain better about use of specific property names.
-       (Property Search): Some cleanups; reorder some functions.
-
-       * keymaps.texi (Changing Key Bindings): Cleanup.
-       Add xref to Key Binding Conventions.
-
-       * display.texi (Attribute Functions): Add examples for
-       face-attribute-relative-p.
-
-       * tips.texi (Coding Conventions): Cleanup last change.
-
-2006-07-05  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi: Use @fonttextsize 10pt, a la emacs.texi.
-       Remove @setchapternewpage odd.
-       Result is 1013 pages, down from 1100.
-
-       * anti.texi, customize.texi, display.texi, internals.texi:
-       * minibuf.texi, modes.texi, tips.texi:
-       Fix overfull/underfull boxes.
-
-2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * edebug.texi (Instrumenting):
-       Add Edebug-specific findex for eval-buffer.
-       * loading.texi (Loading):
-       Replace eval-current-buffer with eval-buffer.
-
-2006-06-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * locals.texi (Standard Buffer-Local Variables): Update the list
-       of variables.
-
-2006-06-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * files.texi (File Name Completion): Point user to the node
-       "Reading File Names".
-
-2006-06-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (Contents of Directories): Document case-insensitive
-       behavior on respective filesystems.
-
-       * objects.texi (Character Type): Document that Emacs signals an
-       error for unsupported Unicode characters specified as \uNNNN.
-
-2006-06-19  Richard Stallman  <rms@gnu.org>
-
-       * processes.texi (Bindat Spec): Clarify previous change.
-
-2006-06-16  Richard Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Better explain conventions
-       for definition constructs.
-
-       * text.texi (Special Properties): String value of `read-only'
-       serves as the error message.
-
-       * objects.texi (Character Type): Clarify prev. change.
-       (Non-ASCII in Strings): Mention \u and \U.
-
-       * commands.texi (Using Interactive): Explain problem of
-       markers, etc., in command-history.
-
-2006-06-14  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Waiting): Negative arg to sit-for forces
-       redisplay even if input is pending.
-
-       * display.texi (Forcing Redisplay): Use (sit-for -1) to force a
-       redisplay.  Remove incorrect example of binding redisplay-dont-pause
-       around (sit-for 0).
-
-2006-06-13  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Forcing Redisplay): Clarify previous change.
-
-2006-06-13  Romain Francoise  <romain@orebokech.com>
-
-       * display.texi (Forcing Redisplay): Fix typo.
-
-2006-06-13  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Forcing Redisplay): Add redisplay-preemption-period.
-
-2006-06-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Coding Conventions): Add `@end itemize'.
-
-2006-06-10  Richard Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Explain use of coding systems
-       to ensure one decoding for strings.
-
-2006-06-09  Aidan Kehoe  <kehoea@parhasard.net>
-
-       * objects.texi (Character Type): Describe the \uABCD and \U00ABCDEF
-       syntax.
-
-2006-06-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * display.texi (Font Selection): Remove description of
-       clear-face-cache.
-
-       * compile.texi (Eval During Compile): Fix a typo.  Add index
-       entries for possible uses of eval-when-compile.
-
-2006-06-04  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * display.texi (Abstract Display): Fix typo.
-
-2006-06-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * minibuf.texi (Minibuffer History) <history-add-new-input>:
-       Reword variable's description.
-
-2006-06-01  Richard Stallman  <rms@gnu.org>
-
-       * windows.texi (Splitting Windows): Clarify splitting nonselected
-       window.
-
-2006-05-31  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Minibuffer History): Add history-add-new-input.
-
-2006-05-30  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Line Height): Fix errors in description of
-       default line height and line-height property.
-
-       * nonascii.texi (Default Coding Systems): Further clarification.
-
-2006-05-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * internals.texi (Pure Storage): Mention that an overflow in pure
-       space causes a memory leak.
-       (Garbage Collection): If there was an overflow in pure space,
-       `garbage-collect' returns nil.
-
-2006-05-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Default Coding Systems): Fix it some more.
-
-2006-05-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * nonascii.texi (Default Coding Systems): Fix last change.
-
-2006-05-29  Kenichi Handa  <handa@m17n.org>
-
-       * nonascii.texi (find-operation-coding-system): Describe the new
-       argument format (FILENAME . BUFFER).
-
-2006-05-28  Richard Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Better explain reasons not to
-       advise other packages or use `eval-after-load'.
-
-2006-05-29  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Bindat Functions): Rename `pos' and `raw-data' to
-       `bindat-idx' and `bindat-raw' for clarity.
-
-2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * processes.texi (Bindat Spec): Expand on `repeat' handler.
-
-       * display.texi (Display): Add "Abstract Display" to menu.
-       (Abstract Display, Abstract Display Functions)
-       (Abstract Display Example): New nodes.
-       * elisp.texi (Top): Add "Abstract Display" to menu.
-
-2006-05-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Key Sequences): Link to input events definition.
-       (Format of Keymaps): Delete material duplicated in Keymap Basics.
-
-       * files.texi (Changing Files): Document updated argument list for
-       copy-file.
-
-2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * processes.texi (Bindat Functions): Explain term "total length".
-       Use it in bindat-length and bindat-pack descriptions.
-
-2006-05-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * tips.texi (Coding Conventions): Advise against using
-       eval-after-load in packages.  Add an index entry.
-
-2006-05-25  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Text from Minibuffer): Undocument keep-all.
-
-       * modes.texi (%-Constructs): Add %e, %z, %Z.
-
-2006-05-25  Richard Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode menu.
-
-       * keymaps.texi (Keymap Basics): New node, split out of Key Sequences.
-       (Keymaps): Update menu.
-
-2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Key Sequences): Some clarifications.
-
-2006-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * processes.texi (Bindat Functions): Say "unibyte string"
-       explicitly for bindat-unpack and bindat-pack descriptions.
-       (Bindat Examples): Don't call `string-make-unibyte' in example.
-
-2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymaps.texi (Key Sequences): Rename from Keymap Terminology.
-       Explain string and vector representations of key sequences.
-
-       * keymaps.texi (Changing Key Bindings):
-       * commands.texi (Interactive Codes):
-       * help.texi (Describing Characters): Refer to it.
-
-2006-05-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * frames.texi (Pointer Shape): @end table -> @end defvar.
-
-2006-05-22  Richard Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode menus.
-
-       * frames.texi (Pointer Shape): Node renamed from Pointer Shapes.
-       Contents rewritten; material from old Pointer Shape node moved here.
-
-       * display.texi (Pointer Shape): Node deleted.
-       (Image Descriptors): Minor cleanup.
-
-2006-05-21  Richard Stallman  <rms@gnu.org>
-
-       * syntax.texi (Parsing Expressions): Update info on which STATE
-       elements are ignored.
-
-2006-05-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * hooks.texi (Standard Hooks): Correct typo.
-
-       * gpl.texi (GPL): ifinfo -> ifnottex.
-
-2006-05-19  Michael Ernst  <mernst@alum.mit.edu>  (tiny change)
-
-       * searching.texi (Simple Match Data): Warn about match data being
-       set anew by every search.
-
-2006-05-17  Richard Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Minibuffer History): Clarify.
-
-       * searching.texi (Regexp Special): Clarify nested regexp warning.
-
-2006-05-16  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.texi (Minibuffer History): Update add-to-history.
-
-2006-05-15  Oliver Scholz  <epameinondas@gmx.de>  (tiny change)
-
-       * nonascii.texi (Explicit Encoding):
-       Fix typo (encoding<->decoding).
-
-2006-05-14  Richard Stallman  <rms@gnu.org>
-
-       * buffers.texi (Creating Buffers): Cleanup.
-
-       * files.texi (Visiting Functions): Rewrite in find-file-noselect.
-
-2006-05-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * buffers.texi (Current Buffer): Document that with-temp-buffer
-       disables undo.
-
-       * os.texi (Terminal-Specific): More accurate description of how
-       Emacs searches for the terminal-specific libraries.
-
-2006-05-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to
-       emacs-xtra to @inforef's.
-
-       * text.texi (Undo): Document that undo is turned off in buffers
-       whose names begin with a space.
-
-       * buffers.texi (Buffer Names): Add index entries for buffers whose
-       names begin with a space.
-       (Creating Buffers): Document that undo is turned off in buffers
-       whose names begin with a space.
-
-       * files.texi (Visiting Functions, Reading from Files)
-       (Saving Buffers): Mention code and EOL conversions by file I/O
-       primitives and subroutines.
-
-       * nonascii.texi (Lisp and Coding Systems): Document
-       coding-system-eol-type.  Add index entries for eol conversion.
-
-       * display.texi (Defining Faces): Mention `mac', and add an xref to
-       where window-system is described.
-
-2006-05-10  Richard Stallman  <rms@gnu.org>
-
-       * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules.
-
-2006-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * variables.texi (File Local Variables): Recommend to quote lambda
-       expressions in safe-local-variable property.
-
-2006-05-09  Richard Stallman  <rms@gnu.org>
-
-       * variables.texi (File Local Variables):
-       Document safe-local-eval-forms and safe-local-eval-function.
-
-2006-05-07  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.texi (Minibuffer History): Remove keep-dups arg
-       from add-to-history.
-
-2006-05-07  Romain Francoise  <romain@orebokech.com>
-
-       * commands.texi (Event Input Misc):
-       * compile.texi (Eval During Compile):
-       * internals.texi (Buffer Internals):
-       * minibuf.texi (Initial Input):
-       * nonascii.texi (Scanning Charsets):
-       * numbers.texi (Comparison of Numbers):
-       * windows.texi (Textual Scrolling, Vertical Scrolling):
-       Fix various typos.
-
-2006-05-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * hooks.texi (Standard Hooks): Replace inforef to emacs-xtra by
-       conditional xref's to either emacs or emacs-xtra, depending on
-       @iftex/@ifnottex.
-
-       * minibuf.texi (Minibuffer History): Document add-to-history.
-
-2006-05-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * internals.texi (Pure Storage): Mention the pure overflow message
-       at startup.
-
-2006-05-05  Johan Bockgård  <bojohan@dd.chalmers.se>
-
-       * keymaps.texi (Active Keymaps): Fix pseudo-Lisp syntax.
-       (Searching Keymaps): Fix pseudo-Lisp description of keymap
-       search.
-
-2006-05-01  Richard Stallman  <rms@gnu.org>
-
-       * intro.texi (nil and t): Clarify.
-
-       * variables.texi (File Local Variables): Suggest using booleanp.
-
-2006-05-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * objects.texi (Type Predicates): Fix typos.
-
-2006-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * intro.texi (nil and t): Add booleanp.
-
-       * objects.texi (Type Predicates): Add links for booleanp and
-       string-or-null-p.
-
-2006-04-29  Richard Stallman  <rms@gnu.org>
-
-       * modes.texi (Multiline Font Lock): Rename from
-       Multi line Font Lock Elements.  Much clarification.
-       (Font Lock Multiline, Region to Fontify): Much clarification.
-
-2006-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * variables.texi (File Local Variables): Remove the special case t for
-       safe-local-variable.
-
-2006-04-26  Richard Stallman  <rms@gnu.org>
-
-       * syntax.texi (Parsing Expressions): Minor cleanup.
-
-2006-04-18  Richard Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Explain when the package's
-       prefix should appear later on (not at the start of the name).
-
-       * searching.texi (String Search): Clarify effect of NOERROR.
-
-       * modes.texi (Imenu): Clarify what special items do.
-
-       * hooks.texi (Standard Hooks): Delete text about old hook names.
-
-2006-04-17  Romain Francoise  <romain@orebokech.com>
-
-       * variables.texi (Local Variables): Update the default value of
-       `max-specpdl-size'.
-
-2006-04-15  Michael Olson  <mwolson@gnu.org>
-
-       * processes.texi (Transaction Queues): Mention the new optional
-       `delay-question' argument for `tq-enqueue'.
-
-2006-04-13  Bill Wohler  <wohler@newt.com>
-
-       * customize.texi (Common Keywords): Use dotted notation for
-       :package-version value.  Specify its values.  Improve documentation
-       for customize-package-emacs-version-alist.
-
-2006-04-12  Bill Wohler  <wohler@newt.com>
-
-       * customize.texi (Common Keywords): Move description of
-       customize-package-emacs-version-alist to @defvar.
-
-2006-04-10  Bill Wohler  <wohler@newt.com>
-
-       * customize.texi (Common Keywords): Add :package-version.
-
-2006-04-10  Kim F. Storm  <storm@cua.dk>
-
-       * text.texi (Buffer Contents): Add NOPROPS arg to
-       filter-buffer-substring.
-
-2006-04-08  Kevin Ryde  <user42@zip.com.au>
-
-       * os.texi (Command-Line Arguments): Update xref to emacs manual
-       "Command Arguments" -> "Emacs Invocation", per change there.
-
-2006-04-08  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * display.texi (Other Display Specs): Arrange a @code{DOTTED-LIST} to
-       be on one line to help makeinfo not render two spaces after the dot.
-
-2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * strings.texi (Predicates for Strings): Add string-or-null-p.
-
-2006-03-28  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Accepting Output): Remove obsolete (and incorrect)
-       remarks about systems that don't support fractional seconds.
-
-2006-03-25  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi: Use @copyright{} instead of (C), and do not indent
-       the year list.
-
-2006-03-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * display.texi (Fringe Indicators): Fix typos.
-
-2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Documentation Tips): One can now also write `program'
-       in front of a quoted symbol in a docstring to prevent making a
-       hyperlink.
-
-2006-03-19  Alan Mackenzie  <acm@muc.de>
-
-       * text.texi (Special Properties): Clarify `fontified' property.
-
-2006-03-16  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Images): Minor cleanup.
-
-2006-03-16  Bill Wohler  <wohler@newt.com>
-
-       * display.texi (Defining Images): In image-load-path-for-library,
-       prefer user's images.
-
-2006-03-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Region to Fontify): Remove font-lock-lines-before.
-
-2006-03-15  Bill Wohler  <wohler@newt.com>
-
-       * display.texi (Defining Images): Fix example in
-       image-load-path-for-library by not recommending that one binds
-       image-load-path.  Just defvar it to placate compiler and only use
-       it if previously defined.
-
-2006-03-14  Bill Wohler  <wohler@newt.com>
-
-       * display.texi (Defining Images): In image-load-path-for-library,
-       always return list of directories.  Update example.
-
-2006-03-14  Alan Mackenzie  <acm@muc.de>
-
-       * modes.texi: New node, "Region to Fontify" (for Font Lock).
-       This describes font-lock-extend-region-function.
-       ("Other Font Lock Variables"): Move "font-lock-lines-before" to
-       the new node "Region to Fontify".
-
-2006-03-13  Richard Stallman  <rms@gnu.org>
-
-       * display.texi (Invisible Text): The impossible position is
-       now before the invisible text, not after.
-       (Defining Images): Clean up last change.
-
-2006-03-11  Bill Wohler  <wohler@newt.com>
-
-       * display.texi (Defining Images): Add image-load-path-for-library.
-
-2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * text.texi (Adaptive Fill): Fix Texinfo usage.
-
-       * strings.texi (Creating Strings): Fix Texinfo usage.
-
-       * searching.texi (Regexp Special): Use @samp for regular
-       expressions that are not in Lisp syntax.
-
-2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * searching.texi (Regexp Special): Put remark between parentheses
-       to avoid misreading.
-
-2006-03-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * searching.texi (Syntax of Regexps): More accurately describe
-       which characters are special in which situations.
-       (Regexp Special): Recommend _not_ to quote `]' or `-' when they
-       are not special.  Describe in detail when `[' and `]' are special.
-       (Regexp Backslash): Plenty of regexps with unbalanced square
-       brackets are valid, so reword that statement.
-
-2006-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * keymaps.texi (Tool Bar): Add tool-bar-border.
-
-2006-02-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * loading.texi (Load Suffixes): Rephrase last paragraph.  Fix typos.
-
-2006-02-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * elisp.texi (Top): Include "Load Suffixes" in the detailed menu.
-
-       * files.texi (Locating Files): Suggest additional values for the
-       SUFFIXES arg of `locate-file'.  Update pxref.
-
-       * loading.texi (Loading): Include new node "Load Suffixes" in menu.
-       (How Programs Do Loading): Discuss the effects of Auto Compression
-       mode on `load'.
-       (Load Suffixes): New node.
-       (Library Search): Delete description of `load-suffixes'; it was
-       moved to "Load Suffixes".
-       (Autoload, Named Features): Mention `load-suffixes'.
-
-2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * display.texi (Fringe Indicators, Fringe Cursors): Fix typos.
-
-       * windows.texi (Window Tree): Fix typo.
-
-2006-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Fringe Indicators): New section.
-       Move indicate-empty-lines, indicate-buffer-boundaries, and
-       default-indicate-buffer-boundaries here.
-       Add fringe-indicator-alist and default-fringes-indicator-alist.
-       Add list of logical fringe indicator symbols.
-       Update list of standard bitmap names.
-       (Fringe Cursors): New section.
-       Move overflow-newline-into-fringe here.
-       Add fringe-cursor-alist and default-fringes-cursor-alist.
-       Add list of fringe cursor symbols.
-
-2006-02-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * commands.texi (Using Interactive): Fix reference to node
-       "Minibuffers".
-
-2006-02-19  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (High-Level Completion):
-       Add xref to read-input-method-name.
-
-       * files.texi (Relative File Names): Move file-relative-name here.
-       (File Name Expansion): From here.  Minor clarifications.
-
-       * commands.texi (Using Interactive): Add xrefs about reading input.
-       Clarify remarks about that moving point and mark.
-       Put string case before list case.
-
-2006-02-16  Johan Bockgård  <bojohan@dd.chalmers.se>
-
-       * display.texi (Other Display Specs, Image Descriptors):
-       Revert erroneous changes.  The previous description of
-       image-descriptors as `(image . PROPS)' was correct.
-
-2006-02-14  Richard M. Stallman  <rms@gnu.org>
-
-       * variables.texi (File Local Variables): Clarifications.
-
-2006-02-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * variables.texi (File Local Variables): Use @code for a cons
-       cell, not @var.
-
-2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * variables.texi (File Local Variables): Document new file local
-       variable behavior.
-
-2006-02-10  Kim F. Storm  <storm@cua.dk>
-
-       * eval.texi (Function Indirection): Add NOERROR to indirect-function.
-
-2006-02-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * modes.texi (%-Constructs): Remove obsolete info about
-       `global-mode-string'.
-
-2006-02-07  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Prefix Command Arguments): Minor cleanup.
-
-       * display.texi: "Graphical display", not window system.
-
-       * functions.texi (What Is a Function): Fix xref.
-
-       * keymaps.texi (Key Lookup): Clarify wrt commands vs other functions.
-       (Changing Key Bindings): Clarify when remapping is better than
-       substitute-key-definition.
-
-2006-02-02  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Basic Completion): Completion alists are risky.
-
-       * keymaps.texi (Active Keymaps): Clarifications.
-       (Searching Keymaps): New node.
-       (Keymaps): Update menu.
-
-       * frames.texi (Layout Parameters): Minor clarification.
-       (Drag and Drop): New node.
-       (Frames): Update menu.
-
-2006-01-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Other Display Specs, Image Descriptors):
-       Image description is a list, not a cons cell.
-
-2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Cons Cells): Minor correction (the cdr of a dotted
-       list is not necessarily a list).
-
-2006-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * frames.texi (Layout Parameters): border-width and
-       internal-border-width belong to the frame, not the window.
-
-2006-01-19  Richard M. Stallman  <rms@gnu.org>
-
-       * nonascii.texi (Translation of Characters): Search cmds use
-       translation-table-for-input.  Automatically made local.
-
-       * markers.texi (Overview of Markers): Count insertion type
-       as one of a marker's attributes.
-
-       * keymaps.texi (Controlling Active Maps): New node, split out of
-       Active Keymaps.
-       (Keymaps): Menu updated.
-       (Active Keymaps): Give pseudocode to explain how the active
-       maps are searched.  current-active-maps and key-binding moved here.
-       (Functions for Key Lookup): current-active-maps and key-binding moved.
-       Clarifications.
-       (Searching the Keymaps): New subnode.
-
-       * elisp.texi (Top): Menu clarification.
-
-       * display.texi (Other Display Specs): Delete duplicate entry for
-       just a string as display spec.  Move text about recursive display
-       specs on such a string.
-
-       * commands.texi (Key Sequence Input): Clarify.
-       Move num-nonmacro-input-events out.
-       (Reading One Event): num-nonmacro-input-events moved here.
-
-2006-01-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * advice.texi (Simple Advice): Update example to fit argument
-       change in previous-line.
-
-2006-01-05  Richard M. Stallman  <rms@gnu.org>
-
-       * markers.texi (The Mark): Fix in `mark'.
-
-2006-01-04  Richard M. Stallman  <rms@gnu.org>
-
-       * processes.texi (Misc Network, Make Network): Minor cleanups.
-
-2006-01-04  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Make Network): Add IPv6 addresses and handling.
-       (Network Feature Testing): Mention (:family ipv6).
-       (Misc Network): Add IPv6 formats to format-network-address.
-
-2005-12-30  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Changing Properties):
-       Don't use return value of set-text-properties.
-
-2005-12-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * modes.texi (Mode Line Format): Correct typo in menu.
-
-2005-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Mode Line Top): New node.
-       (Mode Line Data): Some text moved to new node.
-       Explain the data structure more concretely.
-       (Mode Line Basics): Clarifications.
-       (Mode Line Variables): Clarify intro paragraph.
-       (%-Constructs): Clarify intro paragraph.
-       (Mode Line Format): Update menu.
-
-2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.texi (Basic Completion): Update lazy-completion-table
-       examples for removal of ARGS argument.
-
-2005-12-23  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Undo): Restore some explanation from the version
-       that was deleted.
-
-2005-12-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * text.texi (Undo): Remove duplicate descriptions of `apply
-       funname' and `apply delta' elements of the undo list.
-
-2005-12-20  Richard M. Stallman  <rms@gnu.org>
-
-       * help.texi (Help Functions): Update documentation of `apropos'.
-
-2005-12-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * customize.texi (Type Keywords): Delete xref to "Text help-echo",
-       because it is confusing.  If the :help-echo keyword is a function,
-       it is not directly used as the :help-echo overlay property, as the
-       xref seems to suggest (it does not take the appropriate args).
-
-2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * customize.texi (Common Keywords): Fix Texinfo usage.
-       (Group Definitions, Variable Definitions): Update for new
-       conventions for using `*' in docstrings.
-
-       * tips.texi (Documentation Tips): Update for new conventions for
-       using `*' in docstrings.
-
-2005-12-16  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Minibuffer Contents): Minor cleanup.
-
-2005-12-16  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Minibuffer Contents): Add minibuffer-completion-contents.
-
-2005-12-14  Romain Francoise  <romain@orebokech.com>
-
-       * modes.texi (Customizing Keywords): Rename `append' to `how'.
-       Fix typo.
-
-2005-12-11  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Completion Commands): Add mention of read-file-name
-       for filename completion keymaps.
-       (Reading File Names): Add mention of filename completion keymaps
-       for read-file-name and xref to `Completion Commands'.
-
-2005-12-10  Richard M. Stallman  <rms@gnu.org>
-
-       * customize.texi (Common Keywords): State caveats for use of :tag.
-
-2005-12-08  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Intro to Minibuffers): Replace list of local maps
-       with xrefs and better explanation.
-       (Completion Commands): Add the filename completion maps.
-
-       * objects.texi (Character Type): Clarify that \s is not space
-       if a dash follows.
-
-2005-12-05  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Resizing Windows): Delete preserve-before args.
-
-2005-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymaps.texi (Format of Keymaps): Remove mention of a quirk
-       in full keymaps, since the quirk has been fixed.
-
-2005-12-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * hooks.texi (Standard Hooks): Add index entries.
-       Mention `compilation-finish-functions'.
-
-2005-11-27  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Resizing Windows): Add adjust-window-trailing-edge.
-
-2005-11-21  Juri Linkov  <juri@jurta.org>
-
-       * customize.texi (Common Keywords): Update links types
-       custom-manual and url-link.  Add link types emacs-library-link,
-       file-link, function-link, variable-link, custom-group-link.
-
-2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi: Revert 2005-11-20 change.
-
-2005-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * processes.texi (Bindat Functions):
-       Say "third" to refer to zero-based index "2".
-
-2005-11-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * loading.texi (Library Search): Update the default value of
-       `load-suffixes'.
-
-2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Attribute Functions): Mention :ignore-defface.
-
-2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode.
-       (Minor Mode Conventions): Mention the use of a hook.
-
-2005-11-06  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Magic File Names): find-file-name-handler checks the
-       `operations' property of the handler.
-
-2005-11-03  Richard M. Stallman  <rms@gnu.org>
-
-       * variables.texi (Frame-Local Variables): Small clarification.
-
-2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * os.texi (Init File): Document ~/.emacs.d/init.el.
-
-2005-10-29  Richard M. Stallman  <rms@gnu.org>
-
-       * internals.texi (Garbage Collection): Document memory-full.
-
-2005-10-28  Bill Wohler  <wohler@newt.com>
-
-       * tips.texi (Documentation Tips): Help mode now creates hyperlinks
-       for URLs.
-
-2005-10-28  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Completion Commands): Clean up prev change.
-
-2005-10-26  Kevin Ryde  <user42@zip.com.au>
-
-       * compile.texi (Eval During Compile): Explain recommended uses
-       of eval-when-compile and eval-and-compile.
-
-2005-10-27  Masatake YAMATO  <jet@gyve.org>
-
-       * minibuf.texi (Completion Commands):
-       Write about new optional argument for `display-completion-list'.
-
-2005-10-23  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Overlay Arrow): Clarify about local bindings of
-       overlay-arrow-position.
-
-2005-10-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * internals.texi (Building Emacs): Fix last change.
-
-2005-10-22  Richard M. Stallman  <rms@gnu.org>
-
-       * internals.texi (Building Emacs): Document eval-at-startup.
-
-2005-10-21  Richard M. Stallman  <rms@gnu.org>
-
-       * loading.texi (Where Defined): load-history contains abs file names.
-       symbol-file returns abs file names.
-
-2005-10-19  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Showing Images): Add max-image-size integer value.
-
-2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Showing Images): Document max-image-size.
-
-2005-10-17  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Quitting): Minor clarification.
-
-       * processes.texi (Sentinels): Clarify about output and quitting.
-       (Filter Functions): Mention with-local-quit.
-
-2005-10-17  Juri Linkov  <juri@jurta.org>
-
-       * buffers.texi (Current Buffer):
-       * commands.texi (Event Input Misc):
-       * compile.texi (Eval During Compile, Compiler Errors):
-       * customize.texi (Group Definitions):
-       * display.texi (Progress, Defining Faces):
-       * files.texi (Writing to Files):
-       * modes.texi (Mode Hooks, Defining Minor Modes):
-       * streams.texi (Output Functions):
-       * syntax.texi (Syntax Table Functions):
-       * text.texi (Change Hooks):
-       Replace `...' with `@dots{}' in `@defmac' and `@defspec'.
-
-       * commands.texi (Quitting): Replace arg `forms' with `body' in
-       `with-local-quit'.
-
-       * positions.texi (Excursions): Replace arg `forms' with `body' in
-       `save-excursion'.
-
-2005-10-08  Kim F. Storm  <storm@cua.dk>
-
-       * windows.texi (Window Tree): Rename window-split-tree to window-tree.
-       Rename manual section accordingly.
-
-2005-10-04  Kim F. Storm  <storm@cua.dk>
-
-       * windows.texi (Window Split Tree): New section describing
-       new function window-split-tree function.
-
-2005-10-03  Nick Roberts  <nickrob@snap.net.nz>
-
-       * display.texi (Fringe Size/Pos): Simplify and add detail.
-
-2005-09-30  Romain Francoise  <romain@orebokech.com>
-
-       * minibuf.texi (High-Level Completion): Explain that the prompt
-       given to `read-buffer' should end with a colon and a space.
-       Update usage examples.
-
-2005-09-29  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Displaying Messages): Rename argument name
-       `string' to `format-string' in functions `message', `message-box',
-       `message-or-box'.
-
-2005-09-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * errors.texi (Standard Errors): Correct xrefs.
-
-2005-09-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Defining Images): Update documentation for
-       `image-load-path'.
-
-2005-09-17  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Images): Clean up previous change.
-
-2005-09-16  Romain Francoise  <romain@orebokech.com>
-
-       * elisp.texi: Specify GFDL version 1.2.
-
-       * doclicense.texi (GNU Free Documentation License): Update to
-       version 1.2.
-
-2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Defining Images): Document `image-load-path'.
-
-2005-09-15  Richard M. Stallman  <rms@gnu.org>
-
-       * objects.texi (Printed Representation): Minor cleanup.
-       (Box Diagrams): Minor fix.
-       (Cons Cell Type): Move (...) index item here.
-       (Box Diagrams): From here.
-       (Array Type): Minor fix.
-       (Type Predicates): Delete index "predicates".
-       (Hash Table Type): Clarify xref.
-       (Dotted Pair Notation): Minor fix.
-
-2005-09-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.texi (Saving Buffers): Fix typo.
-
-2005-09-08  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Programming Tips): Correct the "default" prompt spec.
-
-2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * locals.texi (Standard Buffer-Local Variables): Don't include
-       mode variables for minor modes.
-       Fix xrefs for buffer-display-count, buffer-display-table,
-       buffer-offer-save, buffer-saved-size, cache-long-line-scans,
-       enable-multibyte-characters, fill-column, header-line-format,
-       left-fringe-width, left-margin, and right-fringe-width.
-
-       * hooks.texi (Standard Hooks): All hooks should conform to the
-       standard naming convention now.
-       Fix xref for `echo-area-clear-hook'.
-
-       * display.texi (Usual Display): Note that indicate-empty-lines and
-       tab-width are buffer-local.
-
-       * files.texi (Saving Buffers): Add xref to `Killing Buffers'.
-
-       * modes.texi (Mode Help): Note that major-mode is buffer-local.
-
-       * nonascii.texi (Encoding and I/O): Note that
-       buffer-file-coding-system is buffer-local.
-
-       * positions.texi (List Motion): Note that defun-prompt-regexp is
-       buffer-local.
-
-       * text.texi (Auto Filling): Note that auto-fill-function is
-       buffer-local.
-       (Undo): Note that buffer-undo-list is buffer-local.
-
-       * windows.texi (Buffers and Windows):
-       Document buffer-display-count.
-
-2005-09-06  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Sometimes it is ok to put the
-       package prefix elsewhere than at the start of the name.
-
-2005-09-03  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Programming Tips): Add conventions for minibuffer
-       questions and prompts.
-
-2005-09-03  Joshua Varner  <jlvarner@gmail.com>  (tiny change)
-
-       * intro.texi (nil and t): Minor cleanup.
-       Delete spurious mention of keyword symbols.
-       (Evaluation Notation): Add index entry.
-       (A Sample Function Description): Minor cleanup.
-       (A Sample Variable Description): Not all vars can be set.
-
-2005-09-03  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * text.texi (Buffer Contents): Use "\n" in examples' result strings.
-
-       (Insertion): Document precise type of `insert-char' arg COUNT.
-
-2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * modes.texi (Other Font Lock Variables): Sync the default of
-       font-lock-lines-before.
-
-2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Add `make-auto-save-file-name'.
-
-2005-08-29  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode menu.
-
-       * searching.texi (Searching and Matching): Move node.
-       Rearrange contents and add overall explanation.
-       (Searching and Case): Move node.
-       (Searching and Matching): Update menu.
-
-2005-08-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * os.texi (Startup Summary): Fix the description of the initial
-       startup message display.
-
-2005-08-25  Richard M. Stallman  <rms@gnu.org>
-
-       * searching.texi (Search and Replace): Add replace-regexp-in-string.
-
-2005-08-25  Emilio C. Lopes  <eclig@gmx.net>
-
-       * display.texi (Finding Overlays): Fix `find-overlay-prop' in
-       `next-overlay-change' example.
-
-2005-08-22  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Attribute Functions): Add set-face-inverse-video-p.
-       Fix invert-face.  Fix args of face-background.
-
-       * display.texi (Standard Faces): Delete node.
-       (Faces): Add xref to `(emacs)Standard Faces'.
-       (Displaying Faces): Fix xref to `Standard Faces'.
-
-       * modes.texi (Mode Line Data): Fix xref to Standard Faces.
-
-2005-08-20  Alan Mackenzie  <acm@muc.de>
-
-       * buffers.texi (The Buffer List): Clarify the manipulation of the
-       buffer list.
-
-2005-08-14  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Auto Major Mode): interpreter-mode-alist key is not
-       a regexp.
-
-2005-08-11  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode lists.
-
-       * display.texi (Inverse Video): Node deleted.
-
-       * tips.texi (Key Binding Conventions, Programming Tips, Warning Tips):
-       New nodes split out of Coding Conventions.
-
-       * searching.texi (Regular Expressions): Document re-builder.
-
-       * os.texi (Time Parsing): New node split out of Time Conversion.
-
-       * processes.texi (Misc Network, Network Feature Testing)
-       (Network Options, Make Network): New nodes split out of
-       Low-Level Network.
-
-2005-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * frames.texi (Geometry): New node, split from Size and Position.
-       (Frame Parameters): Refer to Geometry.
-
-       * buffers.texi (The Buffer List): Fix xrefs.
-
-       * windows.texi (Splitting Windows): Fix xref.
-
-       * frames.texi (Layout Parameters): Add xref.
-
-       * display.texi (Line Height, Scroll Bars): Fix xrefs.
-
-       * keymaps.texi (Menu Bar): Fix xref.
-
-       * locals.texi (Standard Buffer-Local Variables): Fix xref.
-
-       * modes.texi (%-Constructs): Fix xref.
-
-       * frames.texi (Window Frame Parameters): Node split up.
-       (Basic Parameters, Position Parameters, Size Parameters)
-       (Layout Parameters, Buffer Parameters, Management Parameters)
-       (Cursor Parameters, Color Parameters): New subnodes.
-
-2005-08-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * positions.texi (Screen Lines): Update xref for previous change
-       in minibuf.texi.
-
-       * minibuf.texi (Intro to Minibuffers): Update pxref for previous
-       change in minibuf.texi.
-
-2005-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Minor cleanup.
-
-       * modes.texi (Defining Minor Modes): Explain when init-value
-       can be non-nil.
-
-       * elisp.texi (Top): Update submenu for Minibuffer.
-
-       * minibuf.texi (Minibuffer Misc): Node split up.
-       (Minibuffer Commands, Minibuffer Windows, Minibuffer Contents)
-       (Recursive Mini): New nodes split out from Minibuffer Misc.
-       (Minibuffer Misc): Document max-mini-window-height.
-
-       * hash.texi (Defining Hash): Delete stray paren in example.
-
-       * display.texi (Echo Area Customization): Don't define
-       max-mini-window-height here; xref instead.
-
-       * commands.texi (Event Input Misc): Update while-no-input.
-
-       * advice.texi (Advising Functions): Explain when to use advice
-       and when to use a hook.
-
-2005-07-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (info): Don't run install-info.
-       ($(infodir)/dir): New target, produced by running install-info.
-
-2005-07-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * modes.texi (Defining Minor Modes): The keyword for the initial
-       value is :init-value, not :initial-value.
-
-2005-07-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * loading.texi (Autoload): Make the `doctor' example be consistent
-       with what's in current loaddefs.el.  Describe the "fn" magic in
-       the usage portion of the doc string.
-
-2005-07-22  Richard M. Stallman  <rms@gnu.org>
-
-       * internals.texi (Garbage Collection): Clarify previous change.
-
-2005-07-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * internals.texi (Garbage Collection): Add gc-cons-percentage.
-
-2005-07-18  Juri Linkov  <juri@jurta.org>
-
-       * commands.texi (Accessing Events):
-       * frames.texi (Text Terminal Colors, Resources):
-       * markers.texi (The Mark):
-       * modes.texi (Defining Minor Modes):
-       Delete duplicate duplicate words.
-
-2005-07-16  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Managing Overlays): Clarify make-overlay
-       args for insertion types.
-
-2005-07-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * customize.texi (Variable Definitions):
-       Add `custom-initialize-safe-set' and `custom-initialize-safe-default'.
-       `standard-value' is a list too.
-       (Defining New Types): Use @key{RET} instead of @key{ret}.
-
-2005-07-13  Francis Litterio  <franl@world.std.com>  (tiny change)
-
-       * os.texi (Translating Input): Fix typo.
-
-2005-07-08  Richard M. Stallman  <rms@gnu.org>
-
-       * README: Update edition number and size estimate.
-
-       * elisp.texi (VERSION): Set to 2.9.
-
-2005-07-07  Richard M. Stallman  <rms@gnu.org>
-
-       * book-spine.texinfo: Update Emacs version.
-
-       * display.texi (Inverse Video): Delete mode-line-inverse-video.
-
-2005-07-06  Richard M. Stallman  <rms@gnu.org>
-
-       * searching.texi (Regexp Search): Clarify what re-search-forward
-       does when the search fails.
-
-2005-07-05  Lute Kamstra  <lute@gnu.org>
-
-       * Update FSF's address in GPL notices.
-
-       * doclicense.texi (GNU Free Documentation License):
-       * gpl.texi (GPL):
-       * tips.texi (Coding Conventions, Library Headers):
-       * vol1.texi:
-       * vol2.texi: Update FSF's address.
-
-2005-07-04  Richard M. Stallman  <rms@gnu.org>
-
-       * hooks.texi (Standard Hooks): Add occur-hook.
-
-2005-07-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi (The Echo Area): Correct menu.
-
-2005-07-03  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode menu for Display.
-
-       * display.texi (Displaying Messages): New node, with most
-       of what was in The Echo Area.
-       (Progress): Move under The Echo Area.
-       (Logging Messages): New node with new text.
-       (Echo Area Customization): New node, the rest of what was
-       in The Echo Area.  Document message-truncate-lines with @defvar.
-       (Display): Update menu.
-
-       * windows.texi (Textual Scrolling): Doc 3 values for
-       scroll-preserve-screen-position.
-
-       * text.texi (Special Properties): Change hook functions
-       should bind inhibit-modification-hooks around altering buffer text.
-
-       * keymaps.texi (Key Binding Commands): Call binding BINDING
-       rather than DEFINITION.
-
-2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * variables.texi (Defining Variables): `user-variable-p' returns t
-       for aliases of user options, nil for alias loops.
-
-2005-06-28  Richard M. Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
-       make-keymap.
-
-2005-06-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * variables.texi (Setting Variables): Correct and clarify
-       description of `add-to-ordered-list'.
-
-2005-06-26  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Faces): Minor cleanup.
-
-2005-06-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi (Faces): `facep' returns t for strings that are
-       face names.
-
-2005-06-25  Richard M. Stallman  <rms@gnu.org>
-
-       * objects.texi (Equality Predicates): Clarify meaning of equal.
-
-       * windows.texi (Selecting Windows): save-selected-window
-       and with-selected-window save and restore the current buffer.
-
-2005-06-24  Richard M. Stallman  <rms@gnu.org>
-
-       * numbers.texi (Float Basics): Explain how to test for NaN,
-       and printing the sign of NaNs.
-
-2005-06-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (MAKEINFO): Use --force.
-
-2005-06-23  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Face Functions): Correct Texinfo usage.
-
-2005-06-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Rings): `ring-elements' now returns the elements of
-       RING in order.
-
-2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * markers.texi (The Mark): Texinfo usage fix.
-
-2005-06-23  Kim F. Storm  <storm@cua.dk>
-
-       * searching.texi (Entire Match Data): Remove evaporate option for
-       match-data.  Do not mention evaporate option for set-match-data.
-
-2005-06-22  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * display.texi (Face Functions): Mention face aliases.
-
-2005-06-21  Richard M. Stallman  <rms@gnu.org>
-
-       * anti.texi (Antinews): Texinfo usage fix.
-
-2005-06-21  Karl Berry  <karl@gnu.org>
-
-       * elisp.texi: Use @copying.
-
-       * elisp.texi: Put @summarycontents and @contents before the Top
-       node, instead of the end of the file, so that the contents appear
-       in the right place in the dvi/pdf output.
-
-2005-06-21  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Defining Faces): Add `customized-face'.
-
-2005-06-20  Kim F. Storm  <storm@cua.dk>
-
-       * variables.texi (Setting Variables): Any type of element can be
-       given order in add-to-ordered-list.  Compare elements with eq.
-
-       * lists.texi (Rearrangement): Sort predicate may just return non-nil.
-
-2005-06-20  Karl Berry  <karl@gnu.org>
-
-       * syntax.texi (Syntax Flags): Make last column very slightly wider
-       to avoid "generic comment" breaking on two lines and causing an
-       underfull box.
-
-2005-06-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Rings): Various minor clarifications and corrections.
-
-2005-06-18  Richard M. Stallman  <rms@gnu.org>
-
-       * functions.texi (Obsolete Functions): Simplify.
-
-       * variables.texi (Variable Aliases): Simplify.
-
-       * anti.texi, backups.texi, compile.texi, customization.texi:
-       * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi:
-       * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi:
-       * os.texi, processes.texi, searching.texi, strings.texi, text.texi:
-       * variables.texi: Fix formatting ugliness.
-
-       * elisp.texi: Add links to Rings and Byte Packing.
-       Update version and copyright years.
-
-       * minibuf.texi: Fix formatting ugliness.
-       (Completion Commands): Move keymap vars to the end
-       and vars completing-read binds to the top.
-
-2005-06-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * processes.texi: Fix typos.
-       (Bindat Spec): Correct Texinfo error.
-       (Byte Packing): Fix ungrammatical sentence.
-
-2005-06-17  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * lists.texi (Rings): New node.
-       (Lists): Add it to menu.
-
-       * processes.texi (Byte Packing): New node.
-       (Processes): Add it to menu.
-
-2005-06-17  Richard M. Stallman  <rms@gnu.org>
-
-       * syntax.texi (Parsing Expressions): Fix texinfo usage.
-
-       * help.texi (Documentation Basics): Explain the xref to
-       Documentation Tips.
-
-       * debugging.texi (Debugger Commands): Minor fix.
-
-2005-06-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * edebug.texi (Instrumenting): Eliminate duplicate link.
-       (Specification List): Replace references to "below", referring to
-       a later node, with one @ref to that node.
-
-       * os.texi (Timers): Timers should save and restore the match data
-       if they change it.
-
-       * debugging.texi (Debugger Commands): Mention that the Lisp
-       debugger can not step through primitive functions.
-
-2005-06-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * functions.texi (Obsolete Functions): Update argument names of
-       `make-obsolete' and `define-obsolete-function-alias'.
-
-       * variables.texi (Variable Aliases): Update argument names of
-       `defvaralias', `make-obsolete-variable' and
-       `define-obsolete-variable-alias'.
-
-2005-06-15  Kim F. Storm  <storm@cua.dk>
-
-       * searching.texi (Entire Match Data): Rephrase warnings about
-       evaporate arg to match-data and set-match-data.
-
-2005-06-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * elisp.texi (Top): Update detailed menu.
-
-       * edebug.texi (Edebug): Update menu.
-       (Instrumenting): Update xrefs.
-       (Edebug Execution Modes): Correct xref.
-       (Jumping): Clarify description of `h' command.
-       Eliminate redundant @ref.
-       (Breaks): New node.
-       (Breakpoints): Is now a subsubsection.
-       (Global Break Condition): Mention `C-x X X'.
-       (Edebug Views): Clarify `v' and `p'.  Mention `C-x X w'.
-       (Trace Buffer): Clarify STRING arg of `edebug-tracing'.
-       (Edebug Display Update): Correct pxref.
-       (Edebug and Macros): New node.
-       (Instrumenting Macro Calls): Is now a subsubsection.
-       Neither arg of `def-edebug-spec' is evaluated.
-       (Instrumenting Macro Calls): Mention `edebug-eval-macro-args'.
-       (Specification Examples): Fix typo.
-
-2005-06-14  Lute Kamstra  <lute@gnu.org>
-
-       * debugging.texi (Function Debugging): Primitives can break on
-       entry too.
-
-2005-06-14  Kim F. Storm  <storm@cua.dk>
-
-       * variables.texi (Setting Variables): Add add-to-ordered-list.
-
-2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.texi (Parsing Expressions): Document aux functions and vars of
-       syntax-ppss: syntax-ppss-flush-cache and syntax-begin-function.
-
-2005-06-13  Lute Kamstra  <lute@gnu.org>
-
-       * text.texi (Special Properties): Fix cross reference.
-
-2005-06-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * debugging.texi (Function Debugging): Delete mention of empty
-       string argument to `cancel-debug-on-entry'.  Delete inaccurate
-       description of the return value of that command.
-
-2005-06-11  Alan Mackenzie  <acm@muc.de>
-
-       * text.texi (Adaptive Fill): Amplify the description of
-       fill-context-prefix.
-
-2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * syntax.texi (Parsing Expressions): Fix Texinfo error.
-
-2005-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.texi (Parsing Expressions): Document syntax-ppss.
-
-2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * debugging.texi (Error Debugging): Minor rewording.
-       (Function Debugging): FUNCTION-NAME arg to `cancel-debug-on-entry'
-       is optional.
-
-2005-06-10  Lute Kamstra  <lute@gnu.org>
-
-       * elisp.texi: Use EMACSVER to refer to the current version of Emacs.
-       (Top): Give it a title.  Correct version number.  Give the
-       detailed node listing a more prominent header.
-       * intro.texi: Don't set VERSION here a second time.
-       Mention Emacs's version too.
-       * anti.texi (Antinews): Use EMACSVER to refer to the current
-       version of Emacs.
-
-2005-06-09  Kim F. Storm  <storm@cua.dk>
-
-       * searching.texi (Entire Match Data): Explain new `reseat' argument to
-       match-data and set-match-data.
-
-2005-06-08  Richard M. Stallman  <rms@gnu.org>
-
-       * searching.texi (Entire Match Data): Clarify when match-data
-       returns markers and when integers.
-
-       * display.texi (Defining Faces): Explain that face name should not
-       end in `-face'.
-
-       * modes.texi (Mode Line Data): Minor cleanup.
-       (Customizing Keywords): Node split out of Search-based Fontification.
-       Add example of using font-lock-add-keywords from a hook.
-       Clarify when MODE should be non-nil, and when nil.
-
-2005-06-06  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Mode Line Data): Explain what happens when the car
-       of a list is a void symbol.
-       (Search-based Fontification): Explain MODE arg to
-       font-lock-add-keywords and warn about calls from major modes.
-
-2005-06-08  Juri Linkov  <juri@jurta.org>
-
-       * display.texi (Standard Faces): Add `shadow' face.
-
-2005-05-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * modes.texi (Major Mode Conventions): A derived mode only needs
-       to put the call to the parent mode inside `delay-mode-hooks'.
-
-2005-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook is
-       new, and what that implies.  Clarify.
-
-       * files.texi (Locating Files): Clean up the text.
-
-       * frames.texi (Window Frame Parameters): Document user-size.
-       Shorten entry for top by referring to left.
-
-2005-05-26  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook
-       is new, and what the implications are.  Other clarifications.
-
-2005-05-24  Richard M. Stallman  <rms@gnu.org>
-
-       * frames.texi (Dialog Boxes): Minor fixes.
-
-2005-05-25  Masatake YAMATO  <jet@gyve.org>
-
-       * display.texi (Standard Faces): Write about `mode-line-highlight'.
-
-2005-05-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * frames.texi (Dialog Boxes): HEADER argument to `x-popup-dialog'
-       is optional.
-
-2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * frames.texi (Dialog Boxes): Describe new optional argument.
-
-2005-05-23  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Font Lock Basics, Syntactic Font Lock): Recommend
-       syntax-begin-function over font-lock-beginning-of-syntax-function.
-
-2005-05-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.texi (Reading File Names): Update description of
-       `read-directory-name'.
-
-       * modes.texi (Derived Modes): Clarify :group keyword.
-
-2005-05-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.texi (Locating Files): New subsection.
-       Describe locate-file and executable-find.
-
-2005-05-21  Kevin Ryde  <user42@zip.com.au>
-
-       * frames.texi (Initial Parameters): Update cross reference to
-       "Emacs Invocation".
-
-2005-05-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymaps.texi (Active Keymaps): Add anchor.
-
-       * modes.texi (Hooks): Delete confusing and unnecessary sentence.
-       (Major Mode Conventions): Refer to `Auto Major Mode' in more
-       appropriate place.
-       (Derived Modes): Small clarifications.
-       (Minor Mode Conventions, Keymaps and Minor Modes):
-       Replace references to nodes with references to anchors.
-       (Mode Line Data): Warn that `(:eval FORM)' should not load any files.
-       Clarify description of lists whose first element is an integer.
-       (Mode Line Variables): Add anchor.
-       (%-Constructs): Clarify description of integer after %.
-       (Emulating Mode Line): Describe nil value for FACE.
-
-2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * modes.texi (Derived Modes): Correct references to non-existing
-       variable standard-syntax-table.
-
-2005-05-17  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Defining Minor Modes): Mention the mode hook.
-
-2005-05-15  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Network): Remove open-network-stream-nowait.
-       (Network Servers): Remove open-network-stream-server.
-
-2005-05-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * elisp.texi (Top): Update detailed menu.
-
-       * variables.texi: Reorder nodes.
-       (Variables): Update menu.
-       (File Local Variables): Do not refer to the `-*-' line as
-       a "local variables list".  Add pxref.
-
-2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * elisp.texi (Top): Update detailed menu for node changes.
-
-       * modes.texi (Modes): Update Menu.
-       (Hooks): Move to beginning of chapter.
-       Most minor modes run mode hooks too.
-       `add-hook' can handle void hooks or hooks whose value is a single
-       function.
-       (Major Modes): Update Menu.
-       (Major Mode Basics): New node, split off from `Major Modes'.
-       (Major Mode Conventions): Correct xref.  Explain how to handle
-       auto-mode-alist if the major mode command has an autoload cookie.
-       (Auto Major Mode): Major update.  Add magic-mode-alist.
-       (Derived Modes): Major update.
-       (Mode Line Format): Update Menu.
-       (Mode Line Basics): New node, split off from `Mode Line Format'.
-
-       * loading.texi (Autoload): Mention `autoload cookie' as synonym
-       for `magic autoload comment'.  Add index entries and anchor.
-
-2005-05-14  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Explain how important it is
-       that just loading certain files not change Emacs behavior.
-
-       * modes.texi (Defining Minor Modes): Define define-global-minor-mode.
-
-2005-05-12  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Generic Modes): Update.
-       (Major Modes): Refer to node "Generic Modes".
-
-       * elisp.texi (Top): Update to the current structure of the manual.
-       * processes.texi (Processes): Add menu description.
-       * customize.texi (Customization): Add menu descriptions.
-
-2005-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * processes.texi (Signals to Processes)
-       (Low-Level Network): Fix typos.
-
-2005-05-11  Lute Kamstra  <lute@gnu.org>
-
-       * elisp.texi (Top): Add some nodes from the chapter "Major and
-       Minor Modes" to the detailed node listing.
-
-2005-05-10  Richard M. Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Extended Menu Items): Menu item filter functions
-       can be called at any time.
-
-2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * variables.texi (File Local Variables): `(hack-local-variables t)'
-       now also checks whether a mode is specified in the local variables
-       list.
-
-2005-05-05  Kevin Ryde  <user42@zip.com.au>
-
-       * display.texi (The Echo Area): Correct format function cross
-       reference.
-
-2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * variables.texi (Variable Aliases): Change description of
-       `define-obsolete-variable-alias'.
-
-       * functions.texi (Functions): Add "Obsolete Functions" to menu.
-       (Defining Functions): Add xref.
-       (Obsolete Functions): New node.
-       (Function Safety): Standardize capitalization of section title.
-
-       * frames.texi (Pop-Up Menus): Complete description of `x-popup-menu'.
-       (Dialog Boxes): Complete description of `x-popup-dialog'.
-
-2005-05-04  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Interactive Codes): Fix Texinfo usage.
-       Document U more clearly.
-
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * variables.texi (Variable Aliases): `make-obsolete-variable' is a
-       function and not a macro.
-
-       * frames.texi (Pop-Up Menus): Correct and clarify description of
-       `x-popup-menu'.
-       (Dialog Boxes): Clarify description of `x-popup-dialog'.
-
-2005-05-01  Richard M. Stallman  <rms@gnu.org>
-
-       * edebug.texi (Checking Whether to Stop): Fix previous change.
-
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi: Fix typos and Texinfo usage.
-
-       * edebug.texi (Checking Whether to Stop): executing-macro ->
-       executing-kbd-macro.
-
-2005-05-01  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Invisible Text): Correct add-to-invisibility-spec.
-
-2005-04-30  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Magic File Names): Document `operations' property.
-
-2005-04-29  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Generic Modes): New node.
-       (Major Modes): Add it to the menu.
-       (Derived Modes): Add "derived mode" to concept index.
-
-2005-04-28  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Defining Minor Modes): Fix previous change.
-       (Font Lock Mode): Simplify.
-       (Font Lock Basics): Say that font-lock-defaults is buffer-local
-       when set and that some parts are optional.  Add cross references.
-       (Search-based Fontification): Say how to specify font-lock-keywords.
-       Add cross references.  Add font-lock-multiline to index.
-       Move font-lock-keywords-case-fold-search here from node "Other Font
-       Lock Variables".  Document font-lock-add-keywords and
-       font-lock-remove-keywords.
-       (Other Font Lock Variables): Move font-lock-keywords-only,
-       font-lock-syntax-table, font-lock-beginning-of-syntax-function,
-       and font-lock-syntactic-face-function to node "Syntactic Font
-       Lock".  Move font-lock-keywords-case-fold-search to node
-       "Search-based Fontification".  Document font-lock-inhibit-thing-lock
-       and font-lock-{,un}fontify-{buffer,region}-function.
-       (Precalculated Fontification): Remove reference to deleted variable
-       font-lock-core-only.
-       (Faces for Font Lock): Add font-lock-comment-delimiter-face.
-       (Syntactic Font Lock): Add intro.  Move font-lock-keywords-only,
-       font-lock-syntax-table, font-lock-beginning-of-syntax-function,
-       and font-lock-syntactic-face-function here from node "Other Font
-       Lock Variables".  Move font-lock-syntactic-keywords to "Setting
-       Syntax Properties".  Add cross references.
-       (Setting Syntax Properties): New node.
-       Move font-lock-syntactic-keywords here from "Syntactic Font Lock".
-       * syntax.texi (Syntax Properties): Add cross reference.
-       * hooks.texi (Standard Hooks): Add Font-Lock hooks.
-
-2005-04-26  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Faces):
-       Document `default' elements of defface spec.
-
-       * modes.texi (Major Mode Conventions): Explain customizing ElDoc mode.
-
-       * variables.texi (Variable Aliases): Clarify text.
-
-2005-04-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * windows.texi (Window Hooks): Remove reference to obsolete Lazy Lock.
-
-2005-04-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * hooks.texi (Standard Hooks): Most minor modes have mode hooks too.
-
-2005-04-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * syntax.texi (Syntax Table Internals): Elaborate documentation of
-       syntax-after and syntax-class.
-
-       * files.texi (Changing Files): Fix last change's cross-reference.
-       (Unique File Names): Don't mention "numbers" in the documentation
-       of make-temp-file and make-temp-name.
-
-2005-04-23  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Changing Files): Document MUSTBENEW arg in copy-file.
-
-2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * windows.texi (Cyclic Window Ordering): Clarify window-list.
-
-2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * variables.texi (Variable Aliases): Describe make-obsolete-variable
-       and define-obsolete-variable-alias.
-
-2005-04-22  Kim F. Storm  <storm@cua.dk>
-
-       * symbols.texi (Symbol Plists): Remove safe-get, as get is now safe.
-       (Other Plists): Remove safe-plist-get, as plist-get is now safe.
-
-2005-04-21  Lute Kamstra  <lute@gnu.org>
-
-       * lists.texi (Association Lists): Document rassq-delete-all.
-
-2005-04-19  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Search-based Fontification): Explain that
-       facespec is an expression to be evaluated.
-
-2005-04-19  Kevin Ryde  <user42@zip.com.au>
-
-       * streams.texi (Output Functions): Fix xref.
-       * strings.texi (String Conversion): Fix xref.
-
-2005-04-19  Kim F. Storm  <storm@cua.dk>
-
-       * symbols.texi (Symbol Plists): Add safe-get.
-       Mention that `get' may signal an error.
-
-2005-04-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * customize.texi (Variable Definitions): Replace tooltip-mode
-       example with save-place.
-
-2005-04-17  Richard M. Stallman  <rms@gnu.org>
-
-       * buffers.texi (Indirect Buffers): Clarify.
-
-       * positions.texi (Positions): Clarify converting marker to integer.
-
-       * strings.texi (String Basics): Mention string-match; clarify.
-
-2005-04-08  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Search-based Fontification): Fix cross references.
-       Use consistent terminology.  Document anchored highlighting.
-
-2005-04-05  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Defining Minor Modes): Document :group keyword
-       argument and its default value.
-
-2005-04-03  Lute Kamstra  <lute@gnu.org>
-
-       * hooks.texi (Standard Hooks): Add some hooks.  Add cross
-       references and/or descriptions.  Delete major mode hooks; mention
-       them as a category instead.  Rename or delete obsolete hooks.
-
-2005-04-02  Richard M. Stallman  <rms@gnu.org>
-
-       * nonascii.texi (Coding System Basics): Another wording cleanup.
-
-2005-04-01  Richard M. Stallman  <rms@gnu.org>
-
-       * nonascii.texi (Coding System Basics): Clarify previous change.
-
-2005-04-01  Kenichi Handa  <handa@m17n.org>
-
-       * nonascii.texi (Coding System Basics): Describe about roundtrip
-       identity of coding systems.
-
-2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Buffer Contents): Add filter-buffer-substring and
-       buffer-substring-filters.
-
-2005-03-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * anti.texi (Antinews): Mention `G' interactive code.
-
-       * tips.texi (Compilation Tips): Mention benchmark.el.
-
-2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * modes.texi (Other Font Lock Variables): `font-lock-fontify-block'
-       is now bound to M-o M-o.
-
-       * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o.
-
-2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * calendar.texi: Delete file (and move contents to emacs-xtra.texi
-       in the Emacs Manual).
-       * Makefile.in (srcs): Remove calendar.texi.
-       * makefile.w32-in (srcs): Remove calendar.texi.
-       * display.texi (Display): Change name of next node.
-       * os.texi (System In): Change name of previous node.
-       * elisp.texi (Top): Remove Calendar references.
-       * vol1.texi (Top): Remove Calendar references.
-       * vol2.texi (Top): Remove Calendar references.
-
-2005-03-25  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps):
-       Cleanup previous change.
-
-2005-03-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Face Attributes): Faces earlier in an :inherit
-       list take precedence.
-       (Scroll Bars): Fix description of vertical-scroll-bars.
-       Document frame-current-scroll-bars and window-current-scroll-bars.
-
-       * markers.texi (The Mark): Document temporary Transient Mark mode.
-
-       * minibuf.texi (Reading File Names):
-       Document read-file-name-completion-ignore-case.
-
-       * positions.texi (Screen Lines): Document nil for width argument
-       to compute-motion.
-
-2005-03-23  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Standard Faces): Other faces used in the fringe
-       implicitly inherits from the fringe face.
-       (Fringe Bitmaps): FACE in right-fringe and left-fringe display
-       properties implicitly inherits from fringe face.
-       (Customizing Bitmaps): Likewise for set-fringe-bitmap-face.
-
-2005-03-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * display.texi (Invisible Text): State default value of
-       line-move-ignore-invisible.
-       (Managing Overlays): Document remove-overlays.
-       (Standard Faces): Document escape-glyph face.
-
-       * minibuf.texi (Reading File Names): Document read-file-name-function.
-
-       * modes.texi (Other Font Lock Variables):
-       Document font-lock-lines-before.
-
-       * positions.texi (Skipping Characters): skip-chars-forward allows
-       character classes.
-
-2005-03-18  Lute Kamstra  <lute@gnu.org>
-
-       * edebug.texi (Instrumenting Macro Calls): Fix another typo.
-
-2005-03-17  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Undo): Document extensible undo entries.
-
-       * searching.texi (String Search, Regexp Search): Cleanups.
-
-       * nonascii.texi (Character Codes): Minor fix.
-
-       * display.texi (Display Property): Explain the significance
-       of having text properties that are eq.
-       (Other Display Specs): Explain string as display spec.
-
-       * commands.texi (Interactive Codes): Document G option.
-
-2005-03-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * text.texi (Filling): Add sentence-end-without-period and
-       sentence-end-without-space.
-       (Changing Properties): Minor fix.
-
-       * anti.texi: Total rewrite.
-
-2005-03-15  Lute Kamstra  <lute@gnu.org>
-
-       * edebug.texi (Instrumenting Macro Calls): Fix typos.
-
-2005-03-08  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Specified Space): Property :width is support on
-       non-graphic terminals, :height is not.
-
-2005-03-07  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps):
-       Now subnodes of Fringes.
-       (Overlay Arrow): Document overlay-arrow-variable-list.
-       (Fringe Size/Pos): New node, broken out of Fringes.
-       (Display): Explain clearing vs redisplay better.
-       (Truncation): Clarify use of bitmaps.
-       (The Echo Area): Clarify the uses of the echo area.
-       Add max-mini-window-height.
-       (Progress): Clarify.
-       (Invisible Text): Explain that main loop moves point out.
-       (Selective Display): Say "hidden", not "invisible".
-       (Managing Overlays): Move up.  Describe relation to Undo here.
-       (Overlay Properties): Clarify intro.
-       (Finding Overlays): Explain return values when nothing found.
-       (Width): truncate-string-to-width has added arg.
-       (Displaying Faces): Clarify and update mode line face handling.
-       (Face Functions): Minor cleanup.
-       (Conditional Display): Merge into Other Display Specs.
-       (Pixel Specification, Other Display Specs): Minor cleanups.
-       (Images, Image Descriptors): Minor cleanups.
-       (GIF Images): Patents have expired.
-       (Showing Images): Explain default text for insert-image.
-       (Manipulating Button Types): Merge into Manipulating Buttons.
-       (Making Buttons): Explain return values.
-       (Button Buffer Commands): Add xref.
-       (Inverse Video): Update mode-line-inverse-video.
-       (Display Table Format): Clarify.
-       (Active Display Table): Give defaults for window-display-table.
-
-       * calendar.texi (Calendar Customizing): calendar-holiday-marker
-       and calendar-today-marker are strings, not chars.
-       (Holiday Customizing): Minor fix.
-
-       * internals.texi (Writing Emacs Primitives): Update `or' example.
-       Update limit on # args of subr.
-
-       * edebug.texi (Using Edebug): Arrow is in fringe.
-       (Instrumenting): Arg to eval-defun works without loading edebug.
-       (Edebug Execution Modes): Add xref.
-
-       * customize.texi (Common Keywords): Clarify :require.
-       Mention :version here.
-       (Variable Definitions, Group Definitions): Not here.
-       (Variable Definitions): Clarify symbol arg to :initialize and :set fns.
-
-2005-03-07  Chong Yidong  <cyd@stupidchicken.com>
-       * nonascii.texi (Text Representations): Clarify position-bytes.
-       (Character Sets): Add list-charset-chars.
-       (Scanning Charsets): Add charset-after.
-       (Encoding and I/O): Minor fix.
-
-2005-03-06  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Vertical Scrolling): Get rid of "Emacs 21".
-       (Resizing Windows): Likewise.
-
-       * text.texi (Change Hooks): Get rid of "Emacs 21".
-
-       * strings.texi (Formatting Strings): Get rid of "Emacs 21".
-
-       * streams.texi (Output Variables): Get rid of "Emacs 21".
-
-       * searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21".
-
-       * os.texi (Translating Input): Replace flow-control example
-       with a less obsolete example that uses `keyboard-translate'.
-
-       * objects.texi (Hash Table Type, Circular Objects):
-       Get rid of "Emacs 21".
-
-       * modes.texi (Mode Line Format): Get rid of "Emacs 21".
-       (Mode Line Data, Properties in Mode, Header Lines): Likewise.
-
-       * minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21".
-
-       * lists.texi (List Elements, Building Lists): Get rid of "Emacs 21".
-
-       * keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21".
-       (Menu Bar): Fix when menu-bar-update-hook is called.
-
-       * hash.texi (Hash Tables): Get rid of "Emacs 21".
-
-       * frames.texi (Text Terminal Colors): Get rid of "Emacs 21",
-       and make it read better.
-
-       * files.texi (Writing to Files): Get rid of "Emacs 21".
-       (Unique File Names): Likewise.
-
-       * elisp.texi: Update Emacs version to 22.
-
-       * display.texi (Forcing Redisplay): Get rid of "Emacs 21".
-       (Overlay Properties, Face Attributes): Likewise.
-       (Managing Overlays): Fix punctuation.
-       (Attribute Functions): Clarify set-face-font; get rid of
-       info about old Emacs versions.
-       (Auto Faces, Font Lookup, Display Property, Images):
-       Get rid of "Emacs 21".
-
-       * calendar.texi (Calendar Customizing): Get rid of "Emacs 21".
-
-2005-03-05  Richard M. Stallman  <rms@gnu.org>
-
-       * debugging.texi (Error Debugging): Remove stack-trace-on-error.
-
-2005-03-04  Lute Kamstra  <lute@gnu.org>
-
-       * debugging.texi (Error Debugging): Document stack-trace-on-error.
-
-2005-03-03  Lute Kamstra  <lute@gnu.org>
-
-       * edebug.texi (Instrumenting Macro Calls): Fix typo.
-
-2005-03-01  Lute Kamstra  <lute@gnu.org>
-
-       * debugging.texi (Debugger Commands): Update `j'.
-
-2005-02-28  Lute Kamstra  <lute@gnu.org>
-
-       * debugging.texi (Debugging): Fix typo.
-       (Error Debugging): Document eval-expression-debug-on-error.
-       (Function Debugging): Update example.
-       (Using Debugger): Mention starred stack frames.
-       (Debugger Commands): Document `j' and `l'.
-       (Invoking the Debugger): `d' and `j' exit recursive edit too.
-       Update the messages that the debugger displays.
-       (Internals of Debugger): Add cross reference.  Update example.
-       (Excess Open): Minor improvement.
-       (Excess Close): Minor improvement.
-
-2005-02-26  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Clarify.
-       Put all the major mode key reservations together.
-       Mention the Mouse-1 => Mouse-2 conventions.
-
-       * syntax.texi (Syntax Class Table): Clarify.
-       (Syntax Table Functions): syntax-after moved from here.
-       (Syntax Table Internals): syntax-after moved to here.
-       (Parsing Expressions): Update info on number of values
-       and what's meaningful in the STATE argument.
-       (Categories): Fix typo.
-
-       * sequences.texi (Arrays): Cleanup.
-       (Char-Tables): Clarify.
-
-       * processes.texi (Deleting Processes): Cleanups, add xref.
-       (Subprocess Creation): Explain nil in exec-path.  Cleanup.
-       (Process Information): set-process-coding-system, some args optional.
-       (Input to Processes): Explain various types for PROCESS args.
-       Rename them from PROCESS-NAME to PROCESS.
-       (Signals to Processes): Likewise.
-       (Decoding Output): Cleanup.
-       (Query Before Exit): Clarify.
-
-       * os.texi (Startup Summary): Correct the options; add missing ones.
-       (Terminal Output, Batch Mode): Clarify.
-       (Flow Control): Node deleted.
-
-       * markers.texi (The Mark): Clarify.
-
-       * macros.texi (Expansion): Cleanup.
-       (Indenting Macros): indent-spec allows ints, not floats.
-
-       * keymaps.texi (Keymaps): Clarify.
-       (Format of Keymaps): Update lisp-mode-map example.
-       (Active Keymaps, Key Lookup): Clarify.
-       (Changing Key Bindings): Add xref to `kbd'.
-       (Key Binding Commands, Simple Menu Items): Clarify.
-       (Mouse Menus, Menu Bar): Clarify.
-       (Menu Example): Replace print example with menu-bar-replace-menu.
-
-       * help.texi (Documentation Basics): Add function-documentation prop.
-
-       * elisp.texi (Top): Don't refer to Flow Control node.
-
-       * commands.texi (Command Overview): Improve xrefs.
-       (Adjusting Point): Adjusting point applies to intangible and invis.
-       (Key Sequence Input): Doc extra read-key-sequence args.
-       Likewise for read-key-sequence-vector.
-
-       * backups.texi (Rename or Copy): Minor fix.
-       (Numbered Backups): For version-control, say the default.
-       (Auto-Saving): make-auto-save-file-name example is simplified.
-
-       * advice.texi (Advising Functions): Don't imply one part of Emacs
-       should advise another part.  Markup changes.
-       (Defining Advice): Move transitional para.
-       (Activation of Advice): Cleanup.
-       Explain if COMPILE is nil or negative.
-
-       * abbrevs.texi (Abbrev Expansion): Clarify, fix typo.
-
-2005-02-24  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Defining Minor Modes): Explain that INIT-VALUE,
-       LIGHTER, and KEYMAP can be omitted when KEYWORD-ARGS are used.
-
-2005-02-23  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Defining Minor Modes): define-minor-mode can be used
-       to define global minor modes as well.
-
-       * display.texi (Managing Overlays): overlay-buffer returns nil for
-       deleted overlays.
-
-2005-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.texi (Basic Completion): Allow symbols in addition to
-       strings in try-completion and all-completions.
-
-2005-02-14  Lute Kamstra  <lute@gnu.org>
-
-       * elisp.texi (Top): Remove reference to deleted node.
-
-       * lists.texi (Lists): Remove reference to deleted node.
-       (Cons Cells): Fix typo.
-
-       * loading.texi (Where Defined): Fix typo.
-
-2005-02-14  Richard M. Stallman  <rms@gnu.org>
-
-       * variables.texi (Creating Buffer-Local): change-major-mode-hook
-       is useful for discarding some minor modes.
-
-       * symbols.texi (Symbol Components): Reorder examples.
-
-       * streams.texi (Input Functions): State standard-input default.
-       (Output Variables): State standard-output default.
-
-       * objects.texi (Printed Representation): Clarify read syntax vs print.
-       (Floating Point Type): Explain meaning better.
-       (Symbol Type): Explain uniqueness better.
-       (Cons Cell Type): Explain empty list sooner.  CAR and CDR later.
-       List examples sooner.
-       (Box Diagrams): New subnode broken out.
-       Some examples moved from old Lists as Boxes node.
-       (Dotted Pair Notation): Clarify intro.
-       (Array Type): Clarify.
-       (Type Predicates): Add hash-table-p.
-
-       * numbers.texi (Integer Basics): Clarify radix explanation.
-       (Predicates on Numbers): Minor clarification.
-       (Comparison of Numbers): Minor clarification.  Clarify eql.
-       Typos in min, max.
-       (Math Functions): Clarify overflow in expt.
-
-       * minibuf.texi (Text from Minibuffer): Minor clarification.
-       Mention arrow keys.
-
-       * loading.texi (Autoload): defun's doc string overrides autoload's
-       doc string.
-       (Repeated Loading): Modernize "add to list" examples.
-       (Where Defined): Finish updating table of load-history elts.
-
-       * lists.texi (List-related Predicates): Minor wording improvement.
-       (Lists as Boxes): Node deleted.
-       (Building Lists): Explain trivial cases of number-sequence.
-
-       * hash.texi (Hash Tables): Add desc to menu items.
-       (Creating Hash): Explain "full" means "make larger".
-       (Hash Access): Any object can be a key.
-       State value of maphash.
-
-       * functions.texi (What Is a Function): Wording cleanup.
-       (Function Documentation): Minor cleanup.
-       Explain purpose of calling convention at end of doc string.
-       (Function Names): Wording cleanup.
-       (Calling Functions): Wording cleanup.
-       Explain better how funcall calls the function.
-       (Function Cells): Delete example of saving and redefining function.
-
-       * control.texi (Combining Conditions): Wording cleanup.
-       (Iteration): dolist and dotimes bind VAR locally.
-       (Cleanups): Xref to Atomic Changes.
-
-       * compile.texi (Byte Compilation): Delete 19.29 info.
-       (Compilation Functions): Macros' difficulties don't affect defsubst.
-       (Docs and Compilation): Delete 19.29 info.
-
-2005-02-10  Richard M. Stallman  <rms@gnu.org>
-
-       * objects.texi (Symbol Type): Minor correction.
-
-2005-02-06  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Example Major Modes): Fix typos.
-
-2005-02-06  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Margins): fill-nobreak-predicate can be one function.
-
-       * strings.texi (Modifying Strings): clear-string can make unibyte.
-       (Formatting Strings): format gives error if values missing.
-
-       * positions.texi (Character Motion): Mention default arg
-       for forward-char.  backward-char refers to forward-char.
-       (Word Motion): Mention default arg for forward-word.
-       (Buffer End Motion): Mention default arg for beginning-of-buffer.
-       Simplify end-of-buffer.
-       (Text Lines): Mention default arg for forward-line.
-       (List Motion): Mention default arg for beginning/end-of-defun.
-       (Skipping Characters): Minor fixes in explaining character-set.
-
-       * modes.texi (Major Mode Conventions): Mention "system abbrevs".
-       Mode inheritance applies only when default-major-mode is nil.
-       Clarifications.
-       (Example Major Modes): Update Text mode and Lisp mode examples.
-       (Minor Mode Conventions): Mention define-minor-mode at top.
-       (Defining Minor Modes): In Hungry example, don't define C-M-DEL.
-       (Mode Line Format): Update mode line face display info.
-       (Properties in Mode): Mention effect of risky vars.
-       (Imenu): Define imenu-add-to-menubar.
-       (Font Lock Mode): Add descriptions to menu lines.
-       (Faces for Font Lock): Add font-lock-doc-face.
-
-2005-02-05  Lute Kamstra  <lute@gnu.org>
-
-       * text.texi (Maintaining Undo): Remove obsolete function.
-
-2005-02-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * frames.texi (Color Names): Add pointer to the X docs about RGB
-       color specifications.  Improve indexing.
-       (Text Terminal Colors): Replace the description of RGB values by
-       an xref to "Color Names".
-
-2005-02-03  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Basic Windows): Add cursor-in-non-selected-windows.
-       Clarify.
-       (Selecting Windows): Clarify save-selected-window.
-       (Cyclic Window Ordering): Clarify walk-windows.
-       (Window Point): Clarify.
-       (Window Start): Add comment to example.
-       (Resizing Windows): Add `interactive' specs in examples.
-       Document fit-window-to-buffer.
-
-       * text.texi (User-Level Deletion): just-one-space takes numeric arg.
-       (Undo, Maintaining Undo): Clarify last change.
-       (Sorting): In sort-numeric-fields, explain about octal and hex.
-       Mention sort-numeric-base.
-       (Format Properties): Add xref for hard newlines.
-
-       * frames.texi (Window Frame Parameters): Explain pixel=char on tty.
-       (Pop-Up Menus): Fix typo.
-       (Color Names): Explain all types of color names.
-       Explain color-values on B&W terminal.
-       (Text Terminal Colors): Explain "rgb values" are lists.  Fix arg names.
-
-       * files.texi (File Locks): Not supported on MS systems.
-       (Testing Accessibility): Clarify.
-
-       * edebug.texi (Printing in Edebug): Fix edebug-print-circle.
-       (Coverage Testing): Fix typo.
-
-       * commands.texi (Misc Events): Remove stray space.
-
-       * buffers.texi (Buffer Names): Clarify generate-new-buffer-name.
-       (Modification Time): Clarify when visited-file-modtime returns 0.
-       (The Buffer List): Clarify bury-buffer.
-       (Killing Buffers): Clarify.
-       (Indirect Buffers): Add clone-indirect-buffer.
-
-2005-02-02  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * edebug.texi (Printing in Edebug): Fix default value of
-       edebug-print-circle.
-       (Coverage Testing): Fix displayed frequency count data.
-
-2005-02-02  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * text.texi (Maintaining Undo): Add `undo-outer-limit'.
-
-2005-02-02  Kim F. Storm  <storm@cua.dk>
-
-       * text.texi (Undo) <buffer-undo-list>: Describe `apply' elements.
-
-2005-01-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * commands.texi (Misc Events): Describe the help-echo event.
-
-       * text.texi (Special Properties) <help-echo>: Use `pos'
-       consistently in description of the help-echo property.
-       Use @code{nil} instead of @var{nil}.
-
-       * display.texi (Overlay Properties): Fix the index entry for
-       help-echo overlay property.
-
-       * customize.texi (Type Keywords): Uncomment the xref to the
-       help-echo property documentation.
-
-2005-01-23  Kim F. Storm  <storm@cua.dk>
-
-       * windows.texi (Window Start): Fix `pos-visible-in-window-p'
-       return value.  Third element FULLY replaced by PARTIAL which
-       specifies number of invisible pixels if row is only partially visible.
-       (Textual Scrolling): Mention auto-window-vscroll.
-       (Vertical Scrolling): New defvar auto-window-vscroll.
-
-2005-01-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymaps.texi (Changing Key Bindings): `suppress-keymap' now uses
-       command remapping.
-
-2005-01-15  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Defining Images): Mention DATA-P arg of create-image.
-
-2005-01-14  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Accessing Events): Add WHOLE arg to posn-at-x-y.
-
-       * text.texi (Links and Mouse-1): Fix string and vector item.
-
-2005-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Active Keymaps): Rewrite the text, and update the
-       descriptions of overriding-local-map and overriding-terminal-local-map.
-
-       * text.texi (Links and Mouse-1): Clarify text.
-
-2005-01-13  Kim F. Storm  <storm@cua.dk>
-
-       * modes.texi (Emulating Mode Line): Update format-mode-line entry.
-
-2005-01-13  Francis Litterio  <franl@world.std.com>  (tiny change)
-
-       * keymaps.texi (Active Keymaps): Fix overriding-local-map description.
-
-2005-01-12  Kim F. Storm  <storm@cua.dk>
-
-       * text.texi (Links and Mouse-1): Rename section from Enabling
-       Mouse-1 to Following Links.  Change xrefs.
-       Add examples for define-button-type and define-widget.
-
-       * display.texi (Button Properties, Button Buffer Commands):
-       Clarify mouse-1 and follow-link functionality.
-
-2005-01-12  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Enabling Mouse-1 to Follow Links): Redo prev. change.
-
-       * display.texi (Beeping): Fix Texinfo usage.
-
-       * modes.texi (Emulating Mode Line): Doc FACE arg in format-header-line.
-
-2005-01-11  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Button Properties, Button Buffer Commands):
-       Mention mouse-1 binding.  Add follow-link keyword.
-
-       * text.texi (Text Properties): Add "Enable Mouse-1" to submenu.
-       (Enabling Mouse-1 to Follow Links): New subsection.
-
-2005-01-06  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Minor change.
-
-       * os.texi (Timers): Clarify previous change.
-
-       * modes.texi (Emulating Mode Line): format-mode-line requires 1 arg.
-
-2005-01-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi (Face Attributes): Correct xref to renamed node.
-
-2005-01-01  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Face Attributes): Describe hex color specs.
-
-2004-12-31  Richard M. Stallman  <rms@gnu.org>
-
-       * os.texi (Timers): Update previous change.
-
-2004-12-30  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Line Height): Total line-height is now specified
-       in line-height property of form (HEIGHT TOTAL).  Swap (FACE . RATIO)
-       in cons cells.  (nil . RATIO) is relative to actual line height.
-       Use line-height `t' instead of `0' to get minimum height.
-
-2004-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * os.texi (Timers): Discuss timers vs editing the buffer and undo.
-
-2004-12-28  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Quitting): Clarify value of with-local-quit.
-
-       * elisp.texi (Top): Fix previous change.
-
-       * loading.texi (Loading): Fix previous change.
-
-2004-12-27  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (MAKEINFO): Specify --force.
-
-       * buffers.texi (Killing Buffers): Add buffer-save-without-query.
-
-       * modes.texi (Emulating Mode Line): Document format's BUFFER arg.
-
-       * display.texi (Line Height): Further clarify.
-
-       * elisp.texi (Top): Update Loading submenu.
-
-       * loading.texi (Where Defined): New node.
-       (Unloading): load-history moved to Where Defined.
-
-2004-12-21  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Event Input Misc): Add while-no-input.
-
-2004-12-11  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Line Height): Rewrite text for clarity.
-
-2004-12-11  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Display): Add node "Line Height" to menu.
-       (Line Height): New node.  Move full description of line-spacing
-       and line-height text properties here from text.texi.
-       (Scroll Bars): Add vertical-scroll-bar variable.
-
-       * frames.texi (Window Frame Parameters): Remove line-height defvar.
-
-       * locals.texi (Standard Buffer-Local Variables): Fix xref for
-       line-spacing and vertical-scroll-bar.
-
-       * text.texi (Special Properties): Just mention line-spacing and
-       line-height here, add xref to new "Line Height" node.
-
-2004-12-09  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * frames.texi (Window Frame Parameters): New @defvar for `line-spacing'.
-
-       * locals.texi (Standard Buffer-Local Variables):
-       Add @xref for `line-spacing'.
-
-2004-12-05  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (maintainer-clean): Remove the info files
-       in $(infodir) where they are created.
-
-2004-12-03  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Selecting Windows): get-lru-window and
-       get-largest-window don't consider dedicated windows.
-
-       * text.texi (Undo): Document undo-in-progress.
-
-2004-11-26  Richard M. Stallman  <rms@gnu.org>
-
-       * locals.texi (Standard Buffer-Local Variables): Undo prev change.
-       Remove a few vars that are not always buffer-local.
-
-2004-11-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locals.texi (Standard Buffer-Local Variables): Comment out
-       xref's to non-existent node `Yet to be written'.
-
-2004-11-24  Richard M. Stallman  <rms@gnu.org>
-
-       * processes.texi (Synchronous Processes): Grammar fix.
-
-       * numbers.texi (Comparison of Numbers): Add eql.
-
-       * locals.texi (Standard Buffer-Local Variables): Add many vars.
-
-       * intro.texi (Printing Notation): Fix previous change.
-
-       * display.texi (Customizing Bitmaps): Move indicate-buffer-boundaries
-       and default-indicate-buffer-boundaries from here.
-       (Usual Display): To here.
-       (Scroll Bars): Add scroll-bar-mode and scroll-bar-width.
-       (Usual Display): Move tab-width up.
-
-       * customize.texi (Variable Definitions):
-       Replace show-paren-mode example with tooltip-mode.
-       (Simple Types, Composite Types, Defining New Types):
-       Minor cleanups.
-
-2004-11-21  Jesper Harder  <harder@ifa.au.dk>
-
-       * processes.texi (Synchronous Processes, Output from Processes):
-       Markup fix.
-
-2004-11-20  Richard M. Stallman  <rms@gnu.org>
-
-       * positions.texi (Skipping Characters): skip-chars-forward
-       now handles char classes.
-
-       * intro.texi (Printing Notation): Avoid confusion of `print'
-       when explaining @print.
-
-       * macros.texi (Argument Evaluation): Fix 1st `for' expansion example.
-
-       * display.texi (Display Table Format): Minor fix.
-
-       * streams.texi (Output Functions): Fix print example.
-
-       * Makefile.in (elisp): New target.
-       (dist): Depend on $(infodir)/elisp, not elisp.
-       Copy the info files from $(infodir).
-
-       * minibuf.texi (Text from Minibuffer): Document KEEP-ALL arg in
-       read-from-minibuffer.
-
-       * searching.texi (Regexp Search): Rename that to search-spaces-regexp.
-
-2004-11-19  Richard M. Stallman  <rms@gnu.org>
-
-       * searching.texi (Regexp Search): Add search-whitespace-regexp.
-
-2004-11-19  CHENG Gao  <chenggao@gmail.com>  (tiny change)
-
-       * tips.texi (Coding Conventions): Fix typo.
-
-2004-11-16  Richard M. Stallman  <rms@gnu.org>
-
-       * tips.texi (Coding Conventions): Separate defvar and require
-       methods to avoid warnings.  Use require only when there are many
-       functions and variables from that package.
-
-       * minibuf.texi (Minibuffer Completion): When ignoring case,
-       predicate must not be case-sensitive.
-
-       * debugging.texi (Function Debugging, Explicit Debug): Clarified.
-       (Test Coverage): Don't talk about "splotches".  Clarified.
-
-2004-11-16  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * frames.texi (Window Frame Parameters): Fix typo.
-
-2004-11-15  Kim F. Storm  <storm@cua.dk>
-
-       * symbols.texi (Other Plists): Note that plist-get may signal error.
-       Add safe-plist-get.
-
-2004-11-15  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * modes.texi (Font Lock Basics): Fix typo.
-
-2004-11-08  Richard M. Stallman  <rms@gnu.org>
-
-       * syntax.texi (Syntax Table Functions): Add syntax-after.
-
-2004-11-06  Lars Brinkhoff  <lars@nocrew.org>
-
-       * os.texi (Processor Run Time): New section documenting
-       get-internal-run-time.
-
-2004-11-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as
-       it nukes elisp-cover.texi.
-       (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no
-       elisp-0 etc.
-
-2004-11-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * commands.texi (Keyboard Macros): Document `append' return value
-       of `defining-kbd-macro'.
-
-2004-11-01  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Interactive Call): Add called-interactively-p.
-
-2004-10-29  Simon Josefsson  <jas@extundo.com>
-
-       * minibuf.texi (Reading a Password): Revert.
-
-2004-10-28  Richard M. Stallman  <rms@gnu.org>
-
-       * frames.texi (Display Feature Testing): Explain about "vendor".
-
-2004-10-27  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Interactive Codes): `N' uses numeric prefix,
-       not raw.  Clarify `n'.
-       (Interactive Call): Rewrite interactive-p, focusing on when
-       and how to use it.
-       (Misc Events): Clarify previous change.
-
-       * advice.texi (Simple Advice): Clarify what job the example does.
-       (Around-Advice): Clarify ad-do-it.
-       (Activation of Advice): An option of ad-default-compilation-action
-       is `never', not `nil'.
-
-2004-10-26  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Interactive Codes): Add U code letter.
-
-2004-10-25  Simon Josefsson  <jas@extundo.com>
-
-       * minibuf.texi (Reading a Password): Add.
-
-2004-10-24  Jason Rumney  <jasonr@gnu.org>
-
-       * commands.texi (Misc Events): Remove mouse-wheel.  Add wheel-up
-       and wheel-down.
-
-2004-10-24  Kai Grossjohann  <kai.grossjohann@gmx.net>
-
-       * processes.texi (Synchronous Processes): Document process-file.
-
-2004-10-22  Kenichi Handa  <handa@m17n.org>
-
-       * text.texi (translate-region): Document that it accepts also a
-       char-table.
-
-2004-10-22  David Ponce  <david@dponce.com>
-
-       * windows.texi (Resizing Windows): Document the `preserve-before'
-       argument of the functions `enlarge-window' and `shrink-window'.
-
-2004-10-19  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in (elisp): Change order of arguments to makeinfo.
-
-2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * text.texi (Filling): Add anchor for definition of
-       `sentence-end-double-space'.
-
-       * searching.texi (Regexp Example): Update description of how
-       Emacs currently recognizes the end of a sentence.
-       (Standard Regexps): Update definition of the variable
-       `sentence-end'.  Add definition of the function `sentence-end'.
-
-2004-10-08  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * display.texi (Progress): New node.
-
-2004-10-05  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
-
-2004-09-29  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Fringe Bitmaps): Use symbols rather than numbers
-       to identify bitmaps.  Remove -fringe-bitmap suffix for standard
-       fringe bitmap symbols, as they now have their own namespace.
-       (Customizing Bitmaps) <define-fringe-bitmap>: Clarify bit ordering
-       vs. pixels.  Signal error if no free bitmap slots.
-       (Pixel Specification): Change IMAGE to @var{image}.
-
-2004-09-28  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Clarify line-spacing and line-height.
-
-       * searching.texi (Regexp Search): Add looking-back.
-
-2004-09-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi: Correct typos.
-       (Image Descriptors): Correct xref's.
-
-2004-09-25  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Special Properties): Cleanups in `cursor'.
-       Rewrites in `line-height' and `line-spacing'; exchange them.
-
-       * display.texi (Fringes): Rewrite previous change.
-       (Fringe Bitmaps): Merge text from Display Fringe Bitmaps.  Rewrite.
-       (Display Fringe Bitmaps): Node deleted, text moved.
-       (Customizing Bitmaps): Split off from Fringe Bitmaps.  Rewrite.
-       (Scroll Bars): Clarify set-window-scroll-bars.
-       (Pointer Shape): Rewrite.
-       (Specified Space): Clarify :align-to, etc.
-       (Pixel Specification): Use @var.  Clarify new text.
-       (Other Display Specs): Clarify `slice'.
-       (Image Descriptors): Cleanups.
-       (Showing Images): Cleanups.
-
-2004-09-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'.
-
-       * modes.texi: Various minor changes in addition to:
-       (Major Mode Conventions): Final call to `run-mode-hooks' should
-       not be inside the `delay-mode-hooks' form.
-       (Mode Hooks): New node.
-       (Hooks): Delete obsolete example.
-       Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new
-       node "Mode Hooks".
-
-2004-09-22  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi: Correct various typos.
-       (Display): Rename node "Pointer Shapes" to "Pointer
-       Shape".  (There is already a node called "Pointer Shapes" in
-       frames.texi.)
-       (Images): Remove non-existent node "Image Slices" from menu.
-
-2004-09-23  Kim F. Storm  <storm@cua.dk>
-
-       * text.texi (Special Properties): Add `cursor', `pointer',
-       `line-height', and `line-spacing' properties.
-
-       * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer
-       Shapes' to menu.
-       (Standard Faces): Doc fix for fringe face.
-       (Fringes): Add `overflow-newline-into-fringe' and
-       'indicate-buffer-boundaries'.
-       (Fringe Bitmaps, Pointer Shapes): New nodes.
-       (Display Property): Add 'Pixel Specification' and 'Display Fringe
-       Bitmaps' to menu.
-       (Specified Space): Describe pixel width and height.
-       (Pixel Specification): New node.
-       (Other Display Specs): Add `slice' property.
-       (Display Fringe Bitmaps): New node.
-       (Images): Add 'Image Slices' to menu.
-       (Image Descriptors): Add `:pointer' and `:map' properties.
-       (Showing Images): Add slice arg to `insert-image'.
-       Add 'insert-sliced-image'.
-
-2004-09-20  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Key Sequence Input):
-       Clarify downcasing in read-key-sequence.
-
-2004-09-08  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'.
-
-2004-09-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locals.texi (Standard Buffer-Local Variables):
-       Add `buffer-auto-save-file-format'.
-       * internals.texi (Buffer Internals): Describe new
-       auto_save_file_format field of the buffer structure.
-       * files.texi (Format Conversion): `auto-save-file-format' has been
-       renamed `buffer-auto-save-file-format'.
-
-2004-08-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be
-       an integer or a marker.
-       (Abbrev Expansion): Replace example for `pre-abbrev-expand-hook'.
-
-2004-08-22  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Major Mode Conventions): Discuss rebinding of
-       standard key bindings.
-
-2004-08-18  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Accepting Output): Add `just-this-one' arg to
-       `accept-process-output'.
-       (Output from Processes): New var `process-adaptive-read-buffering'.
-
-2004-08-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymaps.texi: Various changes in addition to:
-       (Keymap Terminology): `kbd' uses same syntax as Edit Macro mode.
-       Give more varied examples for `kbd'.
-       (Creating Keymaps): Char tables have slots for all characters
-       without modifiers.
-       (Active Keymaps): `overriding-local-map' and
-       `overriding-terminal-local-map' also override text property and
-       overlay keymaps.
-       (Functions for Key Lookup): Mention OLP arg to `current-active-maps'.
-       (Scanning Keymaps): `accessible-keymaps' uses `[]' instead of `""'
-       to denote a prefix of no events.
-       `map-keymap' includes parent's bindings _recursively_.
-       Clarify and correct description of `where-is-internal'.
-       Mention BUFFER-OR-NAME arg to `describe-bindings'.
-       (Menu Example): For menus intended for use with the keyboard, the
-       menu items should be bound to characters or real function keys.
-
-2004-08-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * objects.texi (Character Type): Reposition `@anchor' to prevent
-       double space inside sentence in Info.
-
-       * hooks.texi (Standard Hooks): `disabled-command-hook' has been
-       renamed to `disabled-command-function'.
-       * commands.texi (Key Sequence Input): Remove unnecessary anchor.
-       (Command Loop Info): Replace reference to it.
-       (Disabling Commands): `disabled-command-hook' has been renamed to
-       `disabled-command-function'.
-
-2004-08-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * os.texi (Translating Input): Only non-prefix bindings in
-       `key-translation-map' override actual key bindings.  Warn about
-       possible indirect effect of actual key bindings on non-prefix
-       bindings in `key-translation-map'.
-
-2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.texi (High-Level Completion): Add anchor for definition
-       of `read-variable'.
-
-       * commands.texi: Various changes in addition to:
-       (Using Interactive): Clarify description of `interactive-form'.
-       (Interactive Call): Mention default for KEYS argument to
-       `call-interactively'.
-       (Command Loop Info): Clarify description of `this-command-keys'.
-       Mention KEEP-RECORD argument to `clear-this-command-keys'.
-       Value of `last-event-frame' can be `macro'.
-       (Repeat Events): `double-click-fuzz' is also used to distinguish
-       clicks and drags.
-       (Classifying Events): Clarify descriptions of `event-modifiers'
-       `event-basic-type' and `event-convert-list'.
-       (Accessing Events): `posn-timestamp' takes POSITION argument.
-       (Quoted Character Input): Clarify description of
-       `read-quoted-char' and fix example.
-       (Quitting): Add `with-local-quit'.
-       (Disabling Commands): Correct and clarify descriptions of
-       `enable-command' and `disable-command'.
-       Mention what happens if `disabled-command-hook' is nil.
-       (Keyboard Macros): Mention LOOPFUNC arg to `execute-kbd-macro'.
-       Describe `executing-kbd-macro' instead of obsolete `executing-macro'.
-
-2004-07-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * frames.texi: Various changes in addition to:
-       (Creating Frames): Expand and clarify description of `make-frame'.
-       (Window Frame Parameters): Either none or both of the `icon-left'
-       and `icon-top' parameters must be specified.  Put descriptions of
-       `menu-bar-lines' and `toolbar-lines' closer together and change
-       them accordingly.
-       (Frame Titles): `multiple-frames' is not guaranteed to be accurate
-       except while processing `frame-title-format' or `icon-title-format'.
-       (Deleting Frames): Correct description of `delete-frame'.
-       Non-nil return values of `frame-live-p' are like those of `framep'.
-       (Frames and Windows): Mention return value of
-       `set-frame-selected-window'.
-       (Visibility of Frames): Mention `force' argument to
-       `make-frame-invisible'.  `frame-visible-p' returns t for all
-       frames on text-only terminals.
-       (Frame Configurations): Restoring a frame configuration does not
-       restore deleted frames.
-       (Window System Selections): `x-set-selection' returns DATA.
-       (Resources): Add example.
-       (Display Feature Testing): Clarify descriptions of
-       `display-pixel-height', `display-pixel-width', `x-server-version'
-       and `x-server-vendor'.
-
-       * windows.texi (Choosing Window): Add anchor.
-       * minibuf.texi (Minibuffer Misc): Add anchor.
-
-2004-07-23  John Paul Wallington  <jpw@gnu.org>
-
-       * macros.texi (Defining Macros): Declaration keyword for setting
-       Edebug spec is `debug' not `edebug'.
-
-2004-07-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * windows.texi: Various small changes in addition to:
-       (Window Point): Mention return value of `set-window-point'.
-       (Window Start): `pos-visible-in-window-p' disregards horizontal
-       scrolling.  Explain return value if PARTIALLY is non-nil.
-       (Vertical Scrolling): Mention PIXELS-P argument to `window-vscroll'
-       and `set-window-vscroll'.
-       (Size of Window): The argument WINDOW to `window-inside-edges',
-       `window-pixel-edges' and `window-inside-pixel-edges' is optional.
-       (Resizing Windows): Explain return value of
-       `shrink-window-if-larger-than-buffer'.
-       `window-size-fixed' automatically becomes buffer local when set.
-       (Window Configurations): Explain return value of
-       `set-window-configuration'.
-
-       * minibuf.texi (Minibuffer Misc): Add anchor for
-       `minibuffer-scroll-window'.
-
-       * positions.texi (Text Lines): Add anchor for `count-lines'.
-
-2004-07-17  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Overlay Properties): Adding `evaporate' prop
-       deletes empty overlay immediately.
-
-       * abbrevs.texi (Abbrev Expansion): Clarify pre-abbrev-expand-hook,
-       fix example.
-
-2004-07-16  Jim Blandy  <jimb@redhat.com>
-
-       * searching.texi (Regexp Backslash): Document new \_< and \_>
-       operators.
-
-2004-07-16  Juanma Barranquero  <lektu@terra.es>
-
-       * display.texi (Images): Fix Texinfo usage.
-
-2004-07-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffers.texi (Modification Time): `visited-file-modtime' now
-       returns a list of two integers, instead of a cons.
-
-2004-07-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * windows.texi: Various changes in addition to:
-       (Splitting Windows): Add `split-window-keep-point'.
-
-2004-07-09  Richard M. Stallman  <rms@gnu.org>
-
-       * frames.texi (Input Focus): Minor fix.
-
-2004-07-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * frames.texi (Input Focus): Clarify descriptions of
-       `select-frame-set-input-focus' and `select-frame'.
-
-2004-07-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * os.texi: Various small changes in addition to:
-       (Killing Emacs): Expand and clarify description of
-       `kill-emacs-query-functions' and `kill-emacs-hook'.
-       (System Environment): Expand and clarify description of `getenv'
-       and `setenv'.
-       (Timers): Clarify description of `run-at-time'.
-       (Translating Input): Correct description of
-       `extra-keyboard-modifiers'.
-       (Flow Control): Correct description of `enable-flow-control'.
-
-2004-07-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * os.texi: Update copyright.
-       (Session Management): Grammar fix.
-       Clarify which Emacs does the restarting.
-       Use @samp for *scratch* buffer.
-
-2004-07-04  Alan Mackenzie  <acm@muc.de>
-
-       * frames.texi (Input Focus): Add documentation for
-       `select-frame-set-input-focus'.  Replace refs to non-existent
-       `switch-frame' with `select-frame'.  Minor corrections and tidying
-       up of text-only terminal stuff.
-
-2004-07-02  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Saving Buffers): Cleanup write-contents-function.
-       (Magic File Names): Cleanup file-remote-p.
-
-2004-07-02  Kai Großjohann  <kai@emptydomain.de>
-
-       * files.texi (Magic File Names): `file-remote-p' returns an
-       identifier of the remote system, not just t.
-
-2004-07-02  David Kastrup  <dak@gnu.org>
-
-       * searching.texi (Entire Match Data): Add explanation about new
-       match-data behavior when @var{integers} is non-nil.
-
-2004-06-24  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.texi (Misc Events): Describe usr1-signal, usr2-signal event.
-
-       * customize.texi (Variable Definitions): Note about doc strings
-       and :set.
-
-       * keymaps.texi (Keymap Terminology): Document `kbd'.
-       (Changing Key Bindings, Key Binding Commands): Use kbd in examples.
-
-       * display.texi (Invisible Text): Setting buffer-invisibility-spec
-       makes it buffer-local.
-
-       * files.texi (Saving Buffers): Correct previous change.
-
-       * commands.texi (Accessing Events):
-       Clarify posn-col-row and posn-actual-col-row.
-
-2004-06-24  David Ponce  <david.ponce@wanadoo.fr>
-
-       * commands.texi (Accessing Events): New functions
-       posn-at-point and posn-at-x-y.  Add example to posn-x-y.
-
-2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi, files.texi, processes.texi, macros.texi, hash.texi:
-       * frames.texi, buffers.texi, backups.texi, variables.texi:
-       * loading.texi, eval.texi, functions.texi, control.texi:
-       * symbols.texi, minibuf.texi: Reposition @anchor's.
-
-       * help.texi: Various small changes in addition to the following.
-       (Describing Characters): Describe PREFIX argument to
-       `key-description'.  Correct and clarify definition of
-       `text-char-description'.  Describe NEED-VECTOR argument to
-       `read-kbd-macro'.
-       (Help Functions): Clarify definition of `apropos'.
-
-2004-06-23  Lars Hansen  <larsh@math.ku.dk>
-
-       * files.texi (Saving Buffers): Correct description of
-       `write-contents-functions'.
-
-2004-06-21  Juanma Barranquero  <lektu@terra.es>
-
-       * display.texi (Images): Remove redundant @vindex directives.
-       Rewrite `image-library-alist' doc in active voice.
-
-2004-06-14  Juanma Barranquero  <lektu@terra.es>
-
-       * display.texi (Images): Document new delayed library loading,
-       variable `image-library-alist' and (existing but undocumented)
-       function `image-type-available-p'.
-
-2004-06-05  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Minibuffer Completion): For INITIAL arg,
-       refer the user to the Initial Input node.
-       (Text from Minibuffer): Likewise.
-       (Initial Input): New node.  Document this feature
-       and say it is mostly deprecated.
-
-2004-05-30  Richard M. Stallman  <rms@gnu.org>
-
-       * loading.texi (Named Features): Clarify return value
-       and meaning of NOERROR.
-
-       * variables.texi (File Local Variables): Minor cleanup.
-
-2004-05-30  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.texi (Magic File Names): Add `file-remote-p' as operation
-       of file name handlers.
-
-2004-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Minor Mode Conventions): (-) has no special meaning
-       as arg to a minor mode command.
-
-2004-05-22  Richard M. Stallman  <rms@gnu.org>
-
-       * syntax.texi (Syntax Class Table): Word syntax not just for English.
-
-       * streams.texi (Output Variables): Doc float-output-format.
-
-       * searching.texi (Regexp Special): Nested repetition can be infloop.
-
-       * eval.texi (Eval): Increasing max-lisp-eval-depth can cause
-       real stack overflow.
-
-       * compile.texi: Minor cleanups.
-
-2004-05-22  Luc Teirlinck  <teirllm@dms.auburn.edu>
-
-       * lists.texi (Cons Cells): Explain dotted lists, true lists,
-       circular lists.
-       (List Elements): Explain handling of circular and dotted lists.
-
-2004-05-19  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * modes.texi (Search-based Fontification): Fix typo.
-
-2004-05-10  Juanma Barranquero  <lektu@terra.es>
-
-       * modes.texi (Mode Line Variables): Fix description of
-       global-mode-string, which is now after which-func-mode, not the
-       buffer name.
-
-2004-05-07  Lars Hansen  <larsh@math.ku.dk>
-
-       * modes.texi (Desktop Save Mode): Add.
-       (Modes): Add menu entry Desktop Save Mode.
-
-       * hooks.texi: Add desktop-after-read-hook,
-       desktop-no-desktop-file-hook and desktop-save-hook.
-
-       * locals.texi: Add desktop-save-buffer.
-
-2004-04-30  Jesper Harder  <harder@ifa.au.dk>
-
-       * display.texi: emacs -> Emacs.
-
-2004-04-27  Matthew Mundell  <matt@mundell.ukfsn.org>
-
-       * files.texi (Changing Files): Document set-file-times.
-
-2004-04-23  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in: Add "-*- makefile -*-" mode tag.
-
-2004-04-18  Jesper Harder  <harder@ifa.au.dk>
-
-       * tips.texi (Coding Conventions): defopt -> defcustom.
-
-2004-04-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * sequences.texi: Various clarifications.
-
-2004-04-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffers.texi (Read Only Buffers): Mention optional ARG to
-       `toggle-read-only'.
-
-2004-04-14  Nick Roberts  <nick@nick.uklinux.net>
-
-       * windows.texi (Selecting Windows): Note that get-lru-window
-       returns a full-width window if possible.
-
-2004-04-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffers.texi: Various changes in addition to:
-       (Buffer File Name): Add `find-buffer-visiting'.
-       (Buffer Modification): Mention optional ARG to `not-modified'.
-       (Indirect Buffers): Mention optional CLONE argument to
-       `make-indirect-buffer'.
-
-       * files.texi: Various changes in addition to:
-       (Visiting Functions): `find-file-hook' is now a normal hook.
-       (File Name Expansion): Explain difference between the way that
-       `expand-file-name' and `file-truename' treat `..'.
-       (Contents of Directories): Mention optional ID-FORMAT argument to
-       `directory-files-and-attributes'.
-       (Format Conversion): Mention new optional CONFIRM argument to
-       `format-write-file'.
-
-2004-04-12  Miles Bader  <miles@gnu.org>
-
-       * macros.texi (Expansion): Add description of `macroexpand-all'.
-
-2004-04-05  Jesper Harder  <harder@ifa.au.dk>
-
-       * variables.texi (Variable Aliases):
-       Mention cyclic-variable-indirection.
-
-       * errors.texi (Standard Errors): Ditto.
-
-2004-04-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * backups.texi: Various small changes in addition to:
-       (Making Backups): Mention return value of `backup-buffer'.
-       (Auto-Saving): Mention optional FORCE argument to
-       `delete-auto-save-file-if-necessary'.
-       (Reverting): Mention optional PRESERVE-MODES argument to
-       `revert-buffer'.  Correct description of `revert-buffer-function'.
-
-2004-03-22  Juri Linkov  <juri@jurta.org>
-
-       * sequences.texi (Sequence Functions): Replace xref to `Vectors'
-       with `Vector Functions'.
-
-       * text.texi (Sorting): Add missing quote.
-
-2004-03-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * intro.texi (Lisp History): Replace xref to `cl' manual with
-       inforef.
-
-2004-03-12  Richard M. Stallman  <rms@gnu.org>
-
-       * intro.texi (Version Info): Add arg to emacs-version.
-       (Lisp History): Change xref to CL manual.
-
-2004-03-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.texi (Completion Commands): Add xref to Emacs manual
-       for Partial Completion mode.
-
-2004-03-07  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * customize.texi: Fix typo.  Remove eol whitespace.
-
-2004-03-04  Richard M. Stallman  <rms@gnu.org>
-
-       * processes.texi: Fix typos.
-
-       * lists.texi (Building Lists): Minor clarification.
-
-       * hash.texi (Creating Hash): Correct the meaning of t for WEAK
-       in make-hash-table.
-
-2004-02-29  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of
-       rm, and ignore exit code.
-
-2004-02-27  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * display.texi (Defining Faces): Add description for min-colors.
-       Update example.
-
-2004-02-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * abbrevs.texi: Various corrections and clarifications in addition
-       to the following:
-       (Abbrev Tables): Delete add-abbrev (as suggested by RMS).
-
-2004-02-22  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
-
-       * calendar.texi (Holiday Customizing): Quote arg of holiday-sexp.
-
-2004-02-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * text.texi: Various small changes in addition to the following:
-       (User-Level Deletion): Mention optional BACKWARD-ONLY argument
-       to delete-horizontal-space.
-       (Kill Functions, Yanking, Low-Level Kill Ring): Clarify and correct
-       description of yank-handler text property at various places.
-
-       * frames.texi (Window System Selections): Add anchor.
-
-       * syntax.texi (Syntax Table Functions): Clarify and correct
-       descriptions of make-syntax-table and copy-syntax-table.
-       (Motion and Syntax): Clarify SYNTAXES argument to
-       skip-syntax-forward.
-       (Parsing Expressions): Mention that the return value of
-       parse-partial-sexp is currently a list of ten rather than nine
-       elements.
-       (Categories): Various corrections and clarifications.
-
-2004-02-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * markers.texi (Marker Insertion Types): Minor change.
-
-       * locals.texi (Standard Buffer-Local Variables):
-       * commands.texi (Interactive Codes, Using Interactive):
-       * functions.texi (Related Topics): Fix xrefs.
-
-2004-02-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Sets And Lists): Update description of delete-dups.
-
-2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
-
-       * keymaps.texi (Tool Bar): tool-bar-item => tool-bar-button.
-
-2004-02-16  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * frames.texi (Parameter Access): frame-parameters arg is optional.
-       modify-frame-parameters handles nil for FRAME.
-       (Window Frame Parameters): menu-bar-lines and tool-bar-lines
-       are all-or-nothing for certain toolkits.
-       Mention parameter wait-for-wm.
-       (Frames and Windows): In frame-first-window and frame-selected-window
-       the arg is optional.
-       (Input Focus): In redirect-frame-focus the second arg is optional.
-       (Window System Selections): Mention selection type CLIPBOARD.
-       Mention data-type UTF8_STRING.
-       Mention numbering of cut buffers.
-       (Resources): Describe x-resource-name.
-
-2004-02-16  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Buffers and Windows): Delete false table
-       about all-frames.
-
-       * syntax.texi (Parsing Expressions): Delete old caveat
-       about parse-sexp-ignore-comments.
-
-       * streams.texi (Output Variables): Add print-quoted.
-
-       * lists.texi (Building Lists): Minor cleanup.
-
-       * hash.texi (Creating Hash): Correct and clarify doc of WEAK values.
-
-       * display.texi (Overlays): Explain overlays use markers.
-       (Managing Overlays): Explain front-advance and rear-advance
-       in more detail.
-
-       * loading.texi (Unloading): Document unload-feature-special-hooks.
-       Get rid of fns-NNN.el file.
-
-2004-02-16  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
-
-       * help.texi (Describing Characters): Fix text-char-description
-       example output.
-
-       * edebug.texi (Using Edebug): Fix example.
-
-       * debugging.texi (Internals of Debugger): Fix return value.
-
-       * files.texi (Changing Files): Fix argname.
-
-       * calendar.texi: Fix parens, and default values.
-
-       * display.texi, frames.texi, internals.texi, modes.texi: Minor fixes.
-       * nonascii.texi, objects.texi, os.texi: Minor fixes.
-       * searching.texi, text.texi, tips.texi, windows.texi: Minor fixes.
-
-       * positions.texi (Text Lines): Don't add -1 in current-line.
-
-2004-02-16  Richard M. Stallman  <rms@gnu.org>
-
-       * compile.texi (Compiler Errors): if-boundp feature applies to cond.
-
-2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
-
-       * processes.texi (Low-Level Network): Fix a typo.
-
-2004-02-12  Kim F. Storm  <storm@cua.dk>
-
-       * display.texi (Fringes): Use consistent wording.
-       Note that window-fringe's window arg is optional.
-       (Scroll Bars): Use consistent wording.
-
-2004-02-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Comment Tips): Document the new conventions for
-       commenting out code.
-
-2004-02-07  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * positions.texi (Text Lines): Add missing end defun.
-
-2004-02-07  Kim F. Storm  <storm@cua.dk>
-
-       * positions.texi (Text Lines): Add line-number-at-pos.
-
-2004-02-06  John Paul Wallington  <jpw@gnu.org>
-
-       * display.texi (Button Properties, Button Buffer Commands):
-       mouse-2 invokes button, not down-mouse-1.
-
-2004-02-04  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in: Sync with Makefile.in changes.
-
-2004-02-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.texi (Text from Minibuffer): Various corrections and
-       clarifications.
-       (Object from Minibuffer): Correct Lisp description of
-       read-minibuffer.
-       (Minibuffer History): Clarify description of cons values for
-       HISTORY arguments.
-       (Basic Completion): Various corrections and clarifications.
-       Add completion-regexp-list.
-       (Minibuffer Completion): Correct and clarify description of
-       completing-read.
-       (Completion Commands): Mention Partial Completion mode.
-       Various other minor changes.
-       (High-Level Completion): Various corrections and clarifications.
-       (Reading File Names): Ditto.
-       (Minibuffer Misc): Ditto.
-
-2004-01-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * strings.texi (Text Comparison): assoc-string also matches
-       elements of alists that are strings instead of conses.
-       (Formatting Strings): Standardize Texinfo usage.  Update index
-       entries.
-
-2004-01-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Sets And Lists): Add delete-dups.
-
-2004-01-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * edebug.texi (Instrumenting Macro Calls): `declare' is not a
-       special form.
-       * macros.texi (Defining Macros): Update description of `declare',
-       which now is a macro.
-       (Wrong Time): Fix typos.
-
-2004-01-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * compile.texi (Compilation Functions): Expand descriptions of
-       `compile-defun', `byte-compile-file', `byte-recompile-directory'
-       and `batch-byte-compile'.  In particular, mention and describe
-       all optional arguments.
-       (Disassembly): Correct and clarify the description of `disassemble'.
-
-2004-01-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * searching.texi: Various small changes in addition to the
-       following.
-       (Regexp Example): Adapt to new value of `sentence-end'.
-       (Regexp Functions): The PAREN argument to `regexp-opt' can be
-       `words'.
-       (Search and Replace): Add usage note for `perform-replace'.
-       (Entire Match Data): Mention INTEGERS and REUSE arguments to
-       `match-data'.
-       (Standard Regexps): Update for new values of `paragraph-start'
-       and `sentence-end'.
-
-2004-01-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * files.texi (Saving Buffers): Clarify descriptions of
-       `write-contents-functions' and `before-save-hook'.
-       Make the defvar's for `before-save-hook' and `after-save-hook'
-       into defopt's.
-
-2004-01-07  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Click Events): Describe new image and
-       width/height elements of click events.
-       (Accessing Events): Add posn-string, posn-image, and
-       posn-object-width-height.  Change posn-object to return either
-       image or string object.
-
-2004-01-01  Simon Josefsson  <jas@extundo.com>
-
-       * hooks.texi (Standard Hooks): Add before-save-hook.
-       * files.texi (Saving Buffers): Likewise.
-
-2004-01-03  Richard M. Stallman  <rms@gnu.org>
-
-       * frames.texi (Frames and Windows): Delete frame-root-window.
-
-2004-01-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * eval.texi, hash.texi, help.texi, symbols.texi: Add anchors.
-
-       * functions.texi: Various small changes in addition to the
-       following.
-       (What Is a Function): `functionp' returns nil for macros.
-       Clarify behavior of this and following functions for symbol arguments.
-       (Function Documentation): Add `\' in front of (fn @var{arglist})
-       and explain why.
-       (Defining Functions): Mention DOCSTRING argument to `defalias'.
-       Add anchor.
-       (Mapping Functions): Add anchor.  Unquote nil in mapcar* example.
-
-2004-01-01  Miles Bader  <miles@gnu.org>
-
-       * display.texi (Buttons): New section.
-
-2003-12-31  Andreas Schwab  <schwab@suse.de>
-
-       * numbers.texi (Math Functions): sqrt reports a domain-error
-       error.
-       (Float Basics): Use `(/ 0.0 0.0)' instead of `(sqrt -1.0)'.
-
-2003-12-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Documentation Tips): Update item on hyperlinks in
-       documentation strings.
-
-       * errors.texi (Standard Errors): Various small corrections and
-       additions.
-
-       * control.texi: Various small changes in addition to the
-       following.
-       (Signaling Errors): Provide some more details on how `signal'
-       constructs the error message.  Add anchor to the definition of
-       `signal'.
-       (Error Symbols): Describe special treatment of `quit'.
-       (Cleanups): Rename BODY argument of `unwind-protect' to BODY-FORM
-       to emphasize that it has to be a single form.
-
-       * buffers.texi: Add anchor.
-
-2003-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Choosing Window): Add same-window-p, special-display-p.
-       (Window Configurations): Add window-configuration-frame.
-
-       * variables.texi (Creating Buffer-Local): Add local-variable-if-set-p.
-
-       * text.texi (Examining Properties): Add get-char-property-and-overlay.
-       Change arg name in get-char-property.
-       (Special Properties): Update handling of keymap property.
-
-       * strings.texi (Modifying Strings): Add clear-string.
-       (Text Comparison): Add assoc-string and remove
-       assoc-ignore-case, assoc-ignore-representation.
-
-       * os.texi (Time of Day): Add set-time-zone-rule.
-
-       * numbers.texi (Math Functions): asin, acos, log, log10
-       report domain-error errors.
-
-       * nonascii.texi (Converting Representations):
-       Add multibyte-char-to-unibyte and unibyte-char-to-multibyte.
-       (Encoding and I/O): Add file-name-coding-system.
-
-       * modes.texi (Search-based Fontification): Explain that
-       face specs are symbols with face names as values.
-
-       * minibuf.texi (Minibuffer Misc): Add set-minibuffer-window.
-
-       * lists.texi (Building Lists): remq moved elsewhere.
-       (Sets And Lists): remq moved here.
-       (Association Lists): Refer to assoc-string.
-
-       * internals.texi (Garbage Collection): Add memory-use-counts.
-
-       * frames.texi (Frames and Windows): Add set-frame-selected-window
-       and frame-root-window.
-
-       * files.texi (Contents of Directories):
-       Add directory-files-and-attributes.
-
-       * display.texi (Refresh Screen): Add force-window-update.
-       (Invisible Text): Explain about moving point out of invis text.
-       (Overlay Properties): Add overlay-properties.
-       (Managing Overlays): Add overlayp.
-       (GIF Images): Invalid image number displays a hollow box.
-
-       * buffers.texi (Buffer Modification): Add restore-buffer-modified-p.
-       (Killing Buffers): Add buffer-live-p.
-
-2003-12-25  Markus Rost  <rost@mathematik.uni-bielefeld.de>
-
-       * display.texi (Fringes): Fix typo "set-buffer-window".
-
-2003-12-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi, eval.texi, help.texi, internals.texi, loading.texi:
-       * nonascii.texi, processes.texi, tips.texi, variables.texi:
-       Add or change various xrefs and anchors.
-
-       * commands.texi: Replace all occurrences of @acronym{CAR} with
-       @sc{car}, for consistency with the rest of the Elisp manual.
-       `car' and `cdr' are historically acronyms, but are no longer
-       widely thought of as such.
-
-       * internals.texi (Pure Storage): Mention that `purecopy' does not
-       copy text properties.
-       (Object Internals): Now 29 bits are used (in most implementations)
-       to address Lisp objects.
-
-       * variables.texi (Variables with Restricted Values): New node.
-
-       * objects.texi (Lisp Data Types): Mention that certain variables
-       can only take on a restricted set of values and add an xref to
-       the new node "Variables with Restricted Values".
-
-       * eval.texi (Function Indirection): Describe the errors that
-       `indirect-function' can signal.
-       (Eval): Clarify the descriptions of `eval-region' and `values'.
-       Describe `eval-buffer' instead of `eval-current-buffer' and
-       mention `eval-current-buffer' as an alias for `current-buffer'.
-       Correct the description and mention all optional arguments.
-
-       * nonascii.texi: Various small changes in addition to the
-       following.
-       (Converting Representations): Clarify behavior of
-       `string-make-multibyte' and `string-to-multibyte' for unibyte all
-       ASCII arguments.
-       (Character Sets): Document the variable `charset-list' and adapt
-       the definition of the function `charset-list' accordingly.
-       (Translation of Characters): Clarify use of generic characters in
-       `make-translation-table'.  Clarify and correct the description of
-       the use of translation tables in encoding and decoding.
-       (User-Chosen Coding Systems): Correct and clarify the description
-       of `select-safe-coding-system'.
-       (Default Coding Systems): Clarify description of
-       `file-coding-system-alist'.
-
-2003-11-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * strings.texi (Text Comparison): Correctly describe when two
-       strings are `equal'.  Combine and clarify descriptions of
-       `assoc-ignore-case' and `assoc-ignore-representation'.
-
-       * objects.texi (Non-ASCII in Strings): Clarify description of
-       when a string is unibyte or multibyte.
-       (Bool-Vector Type): Update examples.
-       (Equality Predicates): Correctly describe when two strings are
-       `equal'.
-
-2003-11-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lists.texi (Building Lists): `append' no longer accepts integer
-       arguments.  Update the description of `number-sequence' to reflect
-       recent changes.
-       (Sets And Lists): Describe `member-ignore-case' after `member'.
-
-2003-11-27  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Click Events): Click object may be an images.
-       Describe (dx . dy) element of click positions.
-       (Accessing Events): Remove duplicate posn-timestamp.
-       New functions posn-object and posn-object-x-y.
-
-2003-11-23  Kim F. Storm  <storm@cua.dk>
-
-       * commands.texi (Click Events): Describe enhancements to event
-       position lists, including new text-pos and (col . row) items.
-       Mention left-fringe and right-fringe area events.
-       (Accessing Events): New functions posn-area and
-       posn-actual-col-row.  Mention posn-timestamp.  Mention that
-       posn-point in non-text area still returns buffer position.
-       Clarify posn-col-row.
-
-2003-11-21  Lars Hansen  <larsh@math.ku.dk>
-
-       * files.texi (File Attributes): Describe new parameter ID-FORMAT.
-       * anti.texi (File Attributes): Describe removed parameter
-       ID-FORMAT.
-
-2003-11-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * positions.texi (Positions): Mention that, if a marker is used as
-       a position, its buffer is ignored.
-
-       * markers.texi (Overview of Markers): Mention it here too.
-
-2003-11-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * numbers.texi (Numeric Conversions): Not just `floor', but also
-       `truncate', `ceiling' and `round' accept optional argument DIVISOR.
-
-2003-11-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * markers.texi (Creating Markers): Specify insertion type of
-       created markers.  Add xref to `Marker Insertion Types'.
-       Second argument to `copy-marker' is optional.
-       (Marker Insertion Types): Mention that most markers are created
-       with insertion type nil.
-       (The Mark): Correctly describe when `mark' signals an error.
-       (The Region): Correctly describe when `region-beginning' and
-       `region-end' signal an error.
-
-2003-11-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * hash.texi (Creating Hash): Clarify description of `eql'.
-       `makehash' is obsolete.
-       (Hash Access): Add Common Lisp notes for `remhash' and `clrhash'.
-
-       * positions.texi (Point): Change description of `buffer-end', so
-       that it is also correct for floating point arguments.
-       (List Motion): Correct argument lists of `beginning-of-defun' and
-       `end-of-defun'.
-       (Excursions): Add xref to `Marker Insertion Types'.
-       (Narrowing): Argument to `narrow-to-page' is optional.
-
-2003-11-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * streams.texi (Output Streams): Clarify behavior of point for
-       marker output streams.
-
-2003-11-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * variables.texi (Defining Variables): Second argument to
-       `defconst' is not optional.
-       (Setting Variables): Mention optional argument APPEND to
-       `add-to-list'.
-       (Creating Buffer-Local): Expand description of
-       `make-variable-buffer-local'.
-       (Frame-Local Variables): Expand description of
-       `make-variable-frame-local'.
-       (Variable Aliases): Correct description of optional argument
-       DOCSTRING to `defvaralias'.  Mention return value of
-       `defvaralias'.
-       (File Local Variables): Add xref to `File variables' in Emacs
-       Manual.  Correct description of `hack-local-variables'.  Mention
-       `safe-local-variable' property.  Mention optional second argument
-       to `risky-local-variable-p'.
-
-2003-11-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * symbols.texi (Symbol Plists): Mention return value of `setplist'.
-
-2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
-
-       * lispref/anti.texi, lispref/backups.texi, lispref/commands.texi
-       lispref/customize.texi, lispref/display.texi, lispref/files.texi,
-       lispref/internals.texi, lispref/keymaps.texi, lispref/loading.texi,
-       lispref/modes.texi, lispref/nonascii.texi, lispref/numbers.texi,
-       lispref/objects.texi, lispref/os.texi, lispref/positions.texi,
-       lispref/processes.texi, lispref/searching.texi,
-       lispref/sequences.texi, lispref/streams.texi, lispref/strings.texi,
-       lispref/syntax.texi, lispref/text.texi: Replace @sc{foo} with
-       @acronym{FOO}.
-
-2003-10-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * strings.texi (Creating Strings): Argument START to `substring'
-       can not be `nil'.  Expand description of
-       `substring-no-properties'.  Correct description of `split-string',
-       especially with respect to empty matches.  Prevent very bad line
-       break in definition of `split-string-default-separators'.
-       (Text Comparison): `string=' and `string<' also accept symbols as
-       arguments.
-       (String Conversion): More completely describe argument BASE in
-       `string-to-number'.
-       (Formatting Strings): `%s' and `%S' in `format' do require
-       corresponding object.  Clarify behavior of numeric prefix after
-       `%' in `format'.
-       (Case Conversion): The argument to `upcase-initials' can be a
-       character.
-
-2003-10-27  Kenichi Handa  <handa@m17n.org>
-
-       * display.texi (Fontsets): Fix texinfo usage.
-
-2003-10-25  Kenichi Handa  <handa@m17n.org>
-
-       * display.texi (Fontsets): Add description of the function
-       set-fontset-font.
-
-2003-10-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * display.texi (Temporary Displays): Add xref to `Documentation
-       Tips'.
-
-       * functions.texi (Function Safety): Use inforef instead of pxref
-       for SES.
-
-2003-10-23  Andreas Schwab  <schwab@suse.de>
-
-       * Makefile.in (TEX, texinputdir): Don't define.
-       (TEXI2DVI): Define.
-       (srcs): Remove $(srcdir)/index.perm and $(srcdir)/index.unperm,
-       add $(srcdir)/index.texi.
-       ($(infodir)/elisp): Remove index.texi dependency.
-       (elisp.dvi): Likewise.  Use $(TEXI2DVI).
-       (index.texi): Remove target.
-       (dist): Don't link $(srcdir)/permute-index.
-       (clean): Don't remove index.texi.
-
-       * permute-index, index.perm: Remove.
-       * index.texi: Rename from index.unperm.
-
-2003-10-22  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Documentation Tips): Document new behavior for face
-       and variable hyperlinks in Help mode.
-
-2003-10-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * objects.texi (Integer Type): Update for extra bit of integer range.
-       (Character Type): Ditto.
-
-2003-10-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * numbers.texi (Integer Basics): Add index entries for reading
-       numbers in hex, octal, and binary.
-
-2003-10-16  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Mode Line Format): Mention force-mode-line-update's
-       argument.
-
-2003-10-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * windows.texi (Choosing Window): Fix typo.
-       * edebug.texi (Edebug Execution Modes): Fix typo.
-
-2003-10-13  Richard M. Stallman  <rms@gnu.org>
-
-       * windows.texi (Basic Windows): A window has fringe settings,
-       display margins and scroll-bar settings.
-       (Splitting Windows): Doc split-window return value.
-       Clean up one-window-p.
-       (Selecting Windows): Fix typo.
-       (Cyclic Window Ordering): Explain frame as ALL-FRAMES in next-window.
-       (Buffers and Windows): In set-window-buffer, explain effect
-       on fringe settings and scroll bar settings.
-       (Displaying Buffers): In pop-to-buffer, explain nil as buffer arg.
-       (Choosing Window): Use defopt for pop-up-frame-function.
-       For special-display-buffer-names, explain same-window and same-frame.
-       Clarify window-dedicated-p return value.
-       (Textual Scrolling): scroll-up and scroll-down can get an error.
-       (Horizontal Scrolling): Clarify auto-hscroll-mode.
-       Clarify set-window-hscroll.
-       (Size of Window): Don't mention tool bar in window-height.
-       (Coordinates and Windows): Explain what coordinates-in-window-p
-       returns for fringes and display margins.
-       (Window Configurations): Explain saving fringes, etc.
-
-       * tips.texi (Library Headers): Clean up Documentation.
-
-       * syntax.texi (Parsing Expressions): Clean up forward-comment
-       and parse-sexp-lookup-properties.
-
-       * sequences.texi (Sequence Functions): sequencep accepts bool-vectors.
-
-       * os.texi (System Environment): Clean up text for load-average errors.
-
-       * modes.texi (Hooks): Don't explain local hook details at front.
-       Clarify run-hooks and run-hook-with-args a little.
-       Clean up add-hook and remove-hook.
-
-       * edebug.texi (Edebug Execution Modes): Clarify t.
-       Document edebug-sit-for-seconds.
-       (Coverage Testing): Document C-x X = and =.
-       (Instrumenting Macro Calls): Fix typo.
-       (Specification List): Don't index the specification keywords.
-
-2003-10-10  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Network): Introduce make-network-process.
-
-2003-10-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * tips.texi (Library Headers): Fix typo.
-
-2003-10-07  Juri Linkov  <juri@jurta.org>
-
-       * modes.texi (Imenu): Mention imenu-create-index-function's
-       default value.  Explain submenus better.
-
-2003-10-07  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Faces for Font Lock): Fix typo.
-       (Hooks): Explain how buffer-local hook variables can refer to
-       global hook variables.
-       Various minor clarifications.
-
-2003-10-06  Lute Kamstra  <lute@gnu.org>
-
-       * tips.texi (Coding Conventions): Mention naming conventions for
-       hooks.
-
-2003-10-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * loading.texi (Library Search): Correct default value of
-       load-suffixes.
-       (Named Features): Fix typo.
-
-2003-10-05  Richard M. Stallman  <rms@gnu.org>
-
-       * loading.texi (Named Features): In `provide',
-       say how to test for subfeatures.
-       (Unloading): In unload-feature, use new var name
-       unload-feature-special-hooks.
-
-2003-10-03  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Major Mode Conventions): Mention third way to set up
-       Imenu.
-       (Imenu): A number of small fixes.
-       Delete documentation of internal variable imenu--index-alist.
-       Document the return value format of imenu-create-index-function
-       functions.
-
-2003-09-30  Richard M. Stallman  <rms@gnu.org>
-
-       * processes.texi (Network): Say what stopped datagram connections do.
-
-       * lists.texi (Association Lists): Clarify `assq-delete-all'.
-
-       * display.texi (Overlay Properties): Clarify `evaporate' property.
-
-2003-09-29  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Mode Line Data): Explain when symbols in mode-line
-       constructs should be marked as risky.
-       Change cons cell into proper list.
-       (Mode Line Variables): Change cons cell into proper list.
-
-2003-09-26  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (Mode Line Data): Document the :propertize construct.
-       (Mode Line Variables): Reorder the descriptions of the variables
-       to match their order in the default mode-line-format.
-       Describe the new variables mode-line-position and mode-line-modes.
-       Update the default values of mode-line-frame-identification,
-       minor-mode-alist, and default-mode-line-format.
-       (Properties in Mode): Mention the :propertize construct.
-
-2003-09-26  Richard M. Stallman  <rms@gnu.org>
-
-       * buffers.texi, commands.texi, debugging.texi, eval.texi:
-       * loading.texi, minibuf.texi, text.texi, variables.texi:
-       Avoid @strong{Note:}.
-
-2003-09-26  Richard M. Stallman  <rms@gnu.org>
-
-       * keymaps.texi (Remapping Commands): Fix typo.
-
-2003-09-23  Luc Teirlinck  <teirllm@mail.auburn.edu>
-
-       * processes.texi (Low-Level Network): Fix typo.
-
-2003-09-23  Kim F. Storm  <storm@cua.dk>
-
-       * processes.texi (Network, Network Servers): Fix typos.
-       (Low-Level Network): Add timeout value for :server keyword.
-       Add new option keywords to make-network-process.
-       Add set-network-process-options.
-       Explain how to test availability of network options.
-
-2003-09-19  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Motion by Indent): Arg to
-       backward-to-indentation and forward-to-indentation is optional.
-
-       * strings.texi (Creating Strings): Add substring-no-properties.
-
-       * processes.texi
-       (Process Information): Add list-processes arg QUERY-ONLY.
-       Delete process-contact from here.
-       Add new status values for process-status.
-       Add process-get, process-put, process-plist, set-process-plist.
-       (Synchronous Processes): Add call-process-shell-command.
-       (Signals to Processes): signal-process allows process objects.
-       (Network): Complete rewrite.
-       (Network Servers, Datagrams, Low-Level Network): New nodes.
-
-       * positions.texi (Word Motion): forward-word, backward-word
-       arg is optional.  Reword.
-
-       * abbrevs.texi (Defining Abbrevs): Index no-self-insert.
-
-       * variables.texi (Creating Buffer-Local):
-       Delete duplicate definition of buffer-local-value.
-       (File Local Variables): Explain about discarding text props.
-
-2003-09-11  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Intro to Minibuffers): Explain that the minibuffer
-       changes variables that record input events.
-       (Minibuffer Misc): Add minibuffer-selected-window.
-
-       * lists.texi (Building Lists): Add copy-tree.
-
-       * display.texi (Fontsets): Add char-displayable-p.
-       (Scroll Bars): New node.
-
-2003-09-08  Lute Kamstra  <lute@gnu.org>
-
-       * modes.texi (%-Constructs): Document new `%i' and `%I'
-       constructs.
-
-2003-09-03  Peter Runestig  <peter@runestig.com>
-
-       * makefile.w32-in: New file.
-
-2003-08-29  Richard M. Stallman  <rms@gnu.org>
-
-       * display.texi (Overlay Properties): Clarify how priorities
-       affect use of the properties.
-
-2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
-
-       * customize.texi (Type Keywords): Correct the description of
-       `:help-echo' in the case where `motion-doc' is a function.
-
-2003-08-14  John Paul Wallington  <jpw@gnu.org>
-
-       * modes.texi (Emulating Mode Line): Subsection, not section.
-
-2003-08-13  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi (Top): Update subnode lists in menu.
-
-       * text.texi (Insertion): Add insert-buffer-substring-no-properties.
-       (Kill Functions): kill-region has new arg yank-handler.
-       (Yanking): New node.
-       (Yank Commands): Add yank-undo-function.
-       (Low-Level Kill Ring):
-       kill-new and kill-append have new arg yank-handler.
-       (Changing Properties): Add remove-list-of-text-properties.
-       (Atomic Changes): New node.
-
-       * symbols.texi (Other Plists): Add lax-plist-get, lax-plist-put.
-
-       * streams.texi (Output Variables): Add eval-expression-print-length
-       and eval-expression-print-level.
-
-       * os.texi (Time Conversion): For encode-time, explain limits on year.
-
-       * objects.texi (Character Type): Define anchor "modifier bits".
-
-       * modes.texi (Emulating Mode Line): New node.
-       (Search-based Fontification): Font Lock uses font-lock-face property.
-       (Other Font Lock Variables): Likewise.
-
-       * keymaps.texi (Format of Keymaps): Keymaps contain char tables,
-       not vectors.
-       (Active Keymaps): Add emulation-mode-map-alists.
-       (Functions for Key Lookup): key-binding has new arg no-remap.
-       (Remapping Commands): New node.
-       (Scanning Keymaps): where-is-internal has new arg no-remap.
-       (Tool Bar): Add tool-bar-local-item-from-menu.
-       Clarify when to use tool-bar-add-item-from-menu.
-
-       * commands.texi (Interactive Call): commandp has new arg.
-       (Command Loop Info): Add this-original-command.
-
-2003-08-06  John Paul Wallington  <jpw@gnu.org>
-
-       * compile.texi (Compiler Errors): Say `@end defmac' after `@defmac'.
-
-       * display.texi (Warning Basics): Fix typo.
-       (Fringes): Add closing curly bracket and fix typo.
-
-       * elisp.texi (Top): Fix typo.
-
-2003-08-05  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi: Update lists of subnodes.
-
-       * windows.texi (Buffers and Windows): set-window-buffer has new arg.
-
-       * variables.texi (Local Variables): Use lc for example variable names.
-
-       * tips.texi (Library Headers): Explain where to put -*-.
-
-       * strings.texi (Creating Strings): Fix xref for vconcat.
-
-       * sequences.texi (Vector Functions):
-       vconcat no longer allows integer args.
-
-       * minibuf.texi (Reading File Names): read-file-name has new
-       arg PREDICATE.  New function read-directory-name.
-
-       * macros.texi (Defining Macros): Give definition of `declare'.
-       (Indenting Macros): New node.
-
-       * frames.texi (Parameter Access): Add modify-all-frames-parameters.
-       (Window Frame Parameters): Make separate table of parameters
-       that are coupled with specific face attributes.
-       (Deleting Frames): delete-frame-hooks renamed to
-       delete-frame-functions.
-
-       * files.texi (Magic File Names): Add file-remote-p.
-       Clarify file-local-copy.
-
-       * edebug.texi (Instrumenting Macro Calls): Don't define `declare'
-       here; instead xref Defining Macros.
-
-       * display.texi (Warnings): New node, and subnodes.
-       (Fringes): New node.
-
-       * debugging.texi (Test Coverage): New node.
-
-       * compile.texi (Compiler Errors): Explain with-no-warnings
-       and other ways to suppress warnings.
-
-       * commands.texi (Interactive Call): Minor clarification.
-
-       * buffers.texi (Buffer File Name): set-visited-file-name
-       renames the buffer too.
-
-       * abbrevs.texi (Abbrev Tables): Add copy-abbrev-table.
-
-2003-07-24  Markus Rost  <rost@math.ohio-state.edu>
-
-       * abbrevs.texi (Abbrev Expansion): Use \s syntax in example.
-
-2003-07-22  Markus Rost  <rost@math.ohio-state.edu>
-
-       * internals.texi (Garbage Collection): Fix previous change.
-
-2003-07-22  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Truenames): Add LIMIT arg to file-chase-links.
-
-       * display.texi (Width): Use \s syntax in example.
-       (Font Selection): Add face-font-rescale-alist.
-
-       * modes.texi (Imenu): Add xref to Emacs Manual node on Imenu.
-       Remove spurious indent in example.
-
-       * lists.texi (Building Lists): Add number-sequence.
-
-       * internals.texi (Garbage Collection): Add gcs-done, gc-elapsed.
-
-       * functions.texi (Function Documentation): Explain how to
-       show calling convention explicitly in the doc string.
-
-       * windows.texi (Selecting Windows): save-selected-window saves
-       selected window of each frame.
-       (Window Configurations): Minor change.
-
-       * syntax.texi (Syntax Table Functions): Use \s syntax in examples.
-
-       * streams.texi (Output Variables): Add print-continuous-numbering
-       and print-number-table.
-
-       * processes.texi (Decoding Output): New node.
-
-       * os.texi (Time Conversion): decode-time arg is optional.
-
-       * objects.texi (Character Type): Don't use space as example for \.
-       Make list of char names and \-sequences correspond.
-       Explain that \s is not used in strings.  `\ ' needs space after.
-
-       * nonascii.texi (Converting Representations): Add string-to-multibyte.
-       (Translation of Characters): Add translation-table-for-input.
-       (Default Coding Systems): Add auto-coding-functions.
-       (Explicit Encoding): Add decode-coding-inserted-region.
-       (Locales): Add locale-info.
-
-       * minibuf.texi (Basic Completion): Describe test-completion.
-       Collections can be lists of strings.
-       Clean up lazy-completion-table.
-       (Programmed Completion): Mention test-completion.
-       Clarify why lambda expressions are not accepted.
-       (Minibuffer Misc): Describe minibufferp.
-
-2003-07-14  Richard M. Stallman  <rms@gnu.org>
-
-       * buffers.texi (Killing Buffers): kill-buffer-hook is perm local.
-
-       * windows.texi (Selecting Windows): New arg to select-window.
-       (Selecting Windows): Add with-selected-window.
-       (Size of Window): Add window-inside-edges, etc.
-
-       * internals.texi (Garbage Collection): Add post-gc-hook.
-
-       * processes.texi (Subprocess Creation): Add exec-suffixes.
-
-       * keymaps.texi (Functions for Key Lookup): Add current-active-maps.
-       (Scanning Keymaps): Add map-keymaps.
-       (Defining Menus): Add keymap-prompt.
-
-       * numbers.texi (Integer Basics): Add most-positive-fixnum,
-       most-negative-fixnum.
-
-       * compile.texi (Byte Compilation): Explain no-byte-compile.
-       (Compiler Errors): New node.
-
-       * os.texi (User Identification): user-uid, user-real-uid
-       can return float.
-
-       * modes.texi (Major Mode Conventions): Explain about run-mode-hooks
-       and about derived modes.
-       (Minor Modes): Add minor-mode-list.
-       (Defining Minor Modes): Keyword args for define-minor-mode.
-       (Search-based Fontification): Explain managing other properties.
-       (Other Font Lock Variables): Add font-lock-extra-managed-props.
-       (Faces for Font Lock): Add font-lock-preprocessor-face.
-       (Hooks): Add run-mode-hooks and delay-mode-hooks.
-
-       * variables.texi (Creating Buffer-Local): Add buffer-local-value.
-       (Variable Aliases): Clarify defvaralias.
-
-       * loading.texi (Library Search): Add load-suffixes.
-
-       * minibuf.texi (Basic Completion): Add lazy-completion-table.
-       (Programmed Completion): Add dynamic-completion-table.
-
-       * files.texi (Changing Files): copy-file allows dir as NEWNAME.
-       (Magic File Names): Specify precedence order of handlers.
-
-       * commands.texi (Command Overview): Emacs server runs pre-command-hook
-       and post-command-hook.
-       (Waiting): New calling convention for sit-for.
-
-       * text.texi (Special Properties): local-map and keymap properties
-       apply based on their stickiness.
-
-2003-07-07  Richard M. Stallman  <rms@gnu.org>
-
-       * modes.texi (Minor Mode Conventions): Specify only some kinds
-       of list values as args to minor modes.
-
-       * files.texi (File Name Expansion): Warn about iterative use
-       of substitute-in-file-name.
-
-       * advice.texi (Activation of Advice): Clean up previous change.
-
-2003-07-06  Markus Rost  <rost@math.ohio-state.edu>
-
-       * advice.texi (Activation of Advice): Note that ad-start-advice is
-       turned on by default.
-
-2003-06-30  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Buffer Contents): Document current-word.
-       (Change Hooks): Not called for *Messages*.
-
-       * functions.texi (Defining Functions): Explain about redefining
-       primitives.
-       (Function Safety): Renamed.  Minor changes.
-       Comment out the detailed criteria for what is safe.
-
-2003-06-22  Andreas Schwab  <schwab@suse.de>
-
-       * objects.texi (Symbol Type): Fix description of examples.
-
-2003-06-16  Andreas Schwab  <schwab@suse.de>
-
-       * hash.texi (Creating Hash): Fix description of :weakness.
-
-2003-06-13  Kai Großjohann  <kai.grossjohann@gmx.net>
-
-       * files.texi (Changing Files): copy-file copies file modes, too.
-
-2003-05-28  Richard M. Stallman  <rms@gnu.org>
-
-       * strings.texi (Creating Strings): Clarify split-string.
-
-2003-05-22  Stephen J. Turnbull  <stephen@xemacs.org>
-
-       * strings.texi (Creating Strings): Update split-string specification
-       and examples.
-
-2003-05-19  Richard M. Stallman  <rms@gnu.org>
-
-       * elisp.texi: Correct invariant section names.
-
-2003-04-20  Richard M. Stallman  <rms@gnu.org>
-
-       * os.texi (Timers): Explain about timers and quitting.
-
-2003-04-19  Richard M. Stallman  <rms@gnu.org>
-
-       * internals.texi (Writing Emacs Primitives): Strings are
-       no longer special for GCPROs.  Mention GCPRO5, GCPRO6.
-       Explain GCPRO convention for varargs function args.
-
-2003-04-16  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.texi (Minibuffer Misc): Document fn minibuffer-message.
-
-2003-04-08  Richard M. Stallman  <rms@gnu.org>
-
-       * files.texi (Kinds of Files): Correct return value of file-symlink-p.
-
-2003-02-13  Kim F. Storm  <storm@cua.dk>
-
-       * objects.texi (Character Type): New \s escape for space.
-
-2003-01-31  Joe Buehler  <jhpb@draco.hekimian.com>
-
-       * os.texi (System Environment): Add cygwin system-type.
-
-2003-01-25  Richard M. Stallman  <rms@gnu.org>
-
-       * keymaps.texi: Document that a symbol can act as a keymap.
-
-2003-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * text.texi (Changing Properties): Say string indices are origin-0.
-
-       * positions.texi (Screen Lines) <compute-motion>:
-       Correct order of elts in return value.
-
-       * keymaps.texi (Changing Key Bindings) <define-key>: Mention
-       how to define a default binding.
-
-2002-12-07  Markus Rost  <rost@math.ohio-state.edu>
-
-       * loading.texi (Unloading): Fix recent change for load-history.
-
-       * customize.texi (Simple Types): Clarify description of custom
-       type 'number.  Describe new custom type 'float.
-
-2002-12-04  Markus Rost  <rost@math.ohio-state.edu>
-
-       * variables.texi (File Local Variables): Fix typo.
-
-2002-10-23  Kai Großjohann  <kai.grossjohann@uni-duisburg.de>
-
-       From Michael Albinus <Michael.Albinus@alcatel.de>.
-
-       * README: Target for Info file is `make info'.
-
-       * files.texi (File Name Components): Fix typos in
-       `file-name-sans-extension'.
-       (Magic File Names): Complete list of operations for magic file
-       name handlers.
-
-2002-09-16  Jonathan Yavner  <jyavner@engineer.com>
-
-       * variables.texi (File Local Variables): New function
-       risky-local-variable-p.
-
-2002-09-15  Jonathan Yavner  <jyavner@engineer.com>
-
-       * functions.texi (Function safety): New node about unsafep.
-
-2002-08-05  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * customize.texi (Splicing into Lists): Fix example.
-       Reported by Fabrice Bauzac <fabrice.bauzac@wanadoo.fr>.
-
-2002-06-17  Juanma Barranquero  <lektu@terra.es>
-
-       * frames.texi (Display Feature Testing): Fix typo.
-
-2002-06-12  Andreas Schwab  <schwab@suse.de>
-
-       * frames.texi (Initial Parameters, Resources): Fix references to
-       the Emacs manual.
-
-2002-05-13  Kim F. Storm  <storm@cua.dk>
-
-       * variables.texi (Intro to Buffer-Local): Updated warning and
-       example relating to changing buffer inside let.
-
-2002-03-10  Jan Djärv  <jan.h.d@swipnet.se>
-
-       * os.texi (Session Management): New node about X Session management.
-
-2002-01-18  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * elisp.texi (VERSION): Set to 2.9.  Update the version of Emacs
-       to which the manual corresponds, and the copyright years.
-
-       * Makefile.in (VERSION): Set to 2.9.
-
-2001-11-29  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * elisp.texi: Change the category in @dircategory to "Emacs", to
-       make it consistent with info/dir.
-
-2001-11-25  Miles Bader  <miles@gnu.org>
-
-       * text.texi (Fields): Describe new `limit' arg in
-       field-beginning/field-end.
-
-2001-11-17  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * permute-index: Don't depend on csh-specific features.
-       Replace the interpreter name with /bin/sh.
-
-       * two-volume-cross-refs.txt: New file.
-       * two.el: New file.
-       * spellfile: New file.
-
-2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * permute-index: New file.
-
-       * vol1.texi, vol2.texi: Renamed from elisp-vol1.texi and
-       elisp-vol2.texi, respectively, to avoid file-name clashes in DOS
-       8+3 restricted namespace.
-
-       * Makefile.in (infodir): Define relative to $(srcdir).
-       ($(infodir)/elisp): Don't chdir into $(srcdir), but add it to the
-       include directories list via -I switch to makeinfo.
-       (index.texi): Use cp if both hard and symbolic links fail.
-
-2001-11-10  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (distclean): Add.
-
-       The following changes make ELisp manual part of the Emacs
-       distribution:
-
-       * Makefile.in: Add Copyright notice.
-       (prefix): Remove.
-       (infodir): Change value to "../info".
-       (VPATH): New variable.
-       (MAKE): Don't define.
-       (texmacrodir): Don't define.
-       (texinputdir): Append the existing value of TEXINPUTS.
-       ($(infodir)/elisp): Instead of just "elisp".  Reformat the
-       command to be compatible with man/Makefile.in, and to put the
-       output into ../info.
-       (info): Add target.
-       (installall): Target removed.
-
-2001-10-31  Pavel Janík  <Pavel@Janik.cz>
-
-       * tips.texi (Coding Conventions): Fix typo.
-
-2001-10-23  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (srcs): Add gpl.texi and doclicense.texi.
-
-2001-10-22  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * files.texi (File Name Components): Update the description of
-       file-name-sans-extension and file-name-extension, as they now
-       ignore leading dots.
-
-2001-10-20  Gerd Moellmann  <gerd@gnu.org>
-
-       * (Version 21.1 released.)
-
-2001-10-19  Miles Bader  <miles@gnu.org>
-
-       * positions.texi (Text Lines): Describe behavior of
-       `beginning-of-line'/`end-of-line' in the presence of field properties.
-
-2001-10-17  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (VERSION): Set to 2.8.
-       (manual): Use `manual-21'.
-
-       * elisp.texi (VERSION): Add and use it where the version
-       number was used.  Set it to 2.8.
-
-       * intro.texi: Likewise.
-
-2001-10-13  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * files.texi (File Name Completion): Document the significance of
-       a trailing slash in elements of completion-ignored-extensions.
-
-2001-10-06  Miles Bader  <miles@gnu.org>
-
-       * variables.texi (Variable Aliases): It's `@defmac', not `@defmacro'.
-
-2001-10-04  Gerd Moellmann  <gerd@gnu.org>
-
-       * variables.texi (Variable Aliases): New node.
-
-2001-10-04  Gerd Moellmann  <gerd@gnu.org>
-
-       * Branch for 21.1.
-
-2001-10-02  Miles Bader  <miles@gnu.org>
-
-       * minibuf.texi (Minibuffer Misc): Add entries for
-       `minibuffer-contents', `minibuffer-contents-no-properties', and
-       `delete-minibuffer-contents'.
-       Correct description for `minibuffer-prompt-end'.
-
-       * text.texi (Property Search): Correct descriptions of
-       `next-char-property-change' and `previous-char-property-change'.
-       Add entries for `next-single-char-property-change' and
-       `previous-single-char-property-change'.
-       Make operand names a bit more consistent.
-
-2001-09-30  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * frames.texi (Finding All Frames): Document that next-frame and
-       previous-frame are local to current terminal.
-
-2001-09-26  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * keymaps.texi (Creating Keymaps): Fix the description of the
-       result of make-keymap.
-
-2001-09-23  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * display.texi (Font Lookup, Attribute Functions)
-       (Image Descriptors): Add cross-references to the definition of
-       selected frame.
-
-       * buffers.texi (The Buffer List): Add cross-references to the
-       definition of selected frame.
-
-       * frames.texi (Input Focus): Clarify which frame is _the_ selected
-       frame at any given time.
-       (Multiple Displays, Size and Position): Add a cross-reference to
-       the definition of the selected frame.
-
-2001-09-08  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * strings.texi (String Conversion) <string-to-number>: Document
-       that a float is returned for integers that are too large.
-
-       * frames.texi (Mouse Position): Document mouse-position-function.
-       (Display Feature Testing): Document display-images-p.
-       (Window Frame Parameters): Document the cursor-type variable.
-
-       * numbers.texi (Integer Basics): Document CL style read syntax for
-       integers in bases other than 10.
-
-       * positions.texi (List Motion):
-       Document open-paren-in-column-0-is-defun-start.
-
-       * lists.texi (Sets And Lists): Document member-ignore-case.
-
-       * internals.texi (Garbage Collection): Document the used and free
-       strings report.
-       (Memory Usage): Document strings-consed.
-
-       * os.texi (Time of Day): Document float-time.
-       (Recording Input): Document that clear-this-command-keys clears
-       the vector to be returned by recent-keys.
-
-       * keymaps.texi (Scanning Keymaps) <where-is-internal>: The
-       argument keymap can be a list.
-
-       * nonascii.texi (User-Chosen Coding Systems)
-       <select-safe-coding-system>: Document the new argument
-       accept-default-p and the variable
-       select-safe-coding-system-accept-default-p.  Tell what happens if
-       buffer-file-coding-system is undecided.
-       (Default Coding Systems): Document auto-coding-regexp-alist.
-
-       * display.texi (The Echo Area) <message>: Document
-       message-truncate-lines.
-       (Glyphs): Document that the glyph table is unused on windowed
-       displays.
-
-       * help.texi (Describing Characters) <single-key-description>:
-       Document the new argument no-angles.
-       (Accessing Documentation) <documentation-property>: Document that
-       a non-string property is evaluated.
-       <documentation>: Document that the function-documentation property
-       is looked for.
-
-       * windows.texi (Selecting Windows): Document some-window.
-
-       * text.texi (MD5 Checksum): New node, documents the md5 primitive.
-
-       * hooks.texi (Standard Hooks): Add kbd-macro-termination-hook and
-       apropos-mode-hook.
-
-       * commands.texi (Using Interactive): Document interactive-form.
-       (Keyboard Macros): Document kbd-macro-termination-hook.
-       (Command Loop Info): Document that clear-this-command-keys clears
-       the vector to be returned by recent-keys.
-
-2001-09-04  Werner LEMBERG  <wl@gnu.org>
-
-       * Makefile.in (srcdir, texinputdir): New variables.
-       (srcs, index.texi, install): Use $(srcdir).
-       (.PHONY): Remove elisp.dvi.
-       (elisp): Use -I switch for makeinfo.
-       (elisp.dvi): Use $(srcdir) and $(texinputdir).
-       (installall, dist): Use $(srcdir).
-       Fix path to texinfo.tex.
-       (maintainer-clean): Add elisp.dvi and elisp.oaux.
-
-2001-08-30  Gerd Moellmann  <gerd@gnu.org>
-
-       * display.texi (Conditional Display): Adjust to API change.
-
-       * configure: New file.
-
-2001-07-30  Gerd Moellmann  <gerd@gnu.org>
-
-       * commands.texi (Repeat Events): Add description of
-       double-click-fuzz.
-
-2001-05-08  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * syntax.texi (Syntax Class Table): Add the missing designator for
-       comment and string fences.
-       (Syntax Properties): Add a xref to syntax table internals.
-       (Syntax Table Internals): Document string-to-syntax.
-
-2001-05-07  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (install): Use install-info command line options
-       like in Emacs' Makefile.in.
-
-2000-12-09  Miles Bader  <miles@gnu.org>
-
-       * windows.texi (Window Start): Update documentation for
-       `pos-visible-in-window-p'.
-
-2000-11-12  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lists.texi (Building Lists): Add footnote to explain how to add
-       to the end of a list.
-
-2000-10-25  Gerd Moellmann  <gerd@gnu.org>
-
-       * files.texi (Visiting Functions): Typos.
-
-2000-10-25  Kenichi Handa  <handa@etl.go.jp>
-
-       * files.texi (Visiting Functions): Return value of
-       find-file-noselect may be a list of buffers if wildcards are used.
-
-2000-10-24  Miles Bader  <miles@lsi.nec.co.jp>
-
-       * display.texi (Defining Faces): Document `graphic' display type
-       in face specs.
-
-2000-10-18  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
-
-       * hooks.texi (Standard Hooks): Replace obsolete
-       `after-make-frame-hook' with `after-make-frame-functions'.
-
-       * frames.texi (Creating Frames): Ditto.
-
-       * variables.texi (Future Local Variables): Ditto.
-
-2000-10-16  Gerd Moellmann  <gerd@gnu.org>
-
-       * display.texi (Other Image Types): Add description of :foreground
-       and :background properties of mono PBM images.
-
-2000-08-17  Werner LEMBERG  <wl@gnu.org>
-
-       * .cvsignore: New file.
-
-2000-01-05  Gerd Moellmann  <gerd@gnu.org>
-
-       * tindex.pl: New script.
-
-1999-12-03  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (MAKEINFO): New parameter.
-
-1999-09-17  Richard Stallman  <rms@gnu.org>
-
-       * Makefile.in (srcs): Add hash.texi.
-       (VERSION): Update to 20.6.
-
-1999-09-13  Richard Stallman  <rms@gnu.org>
-
-       * Makefile.in (index.texi): If cannot make a symlink, make a hard link.
-
-1998-08-29  Karl Heuer  <kwzh@gnu.org>
-
-       * configure.in: New file.
-       * Makefile.in: Renamed from Makefile.
-       (prefix, infodir): Use value obtained from configure.
-       (emacslibdir): Obsolete variable deleted.
-       (dist): Distribute configure.in, configure, Makefile.in.
-
-1998-06-12  Richard Stallman  <rms@psilocin.ai.mit.edu>
-
-       * Makefile (INSTALL_INFO): New variable.
-       (install): Run install-info.
-
-1998-05-09  Richard Stallman  <rms@psilocin.ai.mit.edu>
-
-       * Makefile (elisp.dvi): Add missing backslash.
-
-1998-05-02  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile (elisp.dvi): Don't depend on texindex or on elisp.tps.
-       Run texindex without `./'.  Always run texindex on elisp.tp.
-       (elisp.tps): Target deleted.
-
-1998-04-05  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile (srcs): Add nonascii.texi and customize.texi.
-       (dist): Start by deleting `temp'.
-
-1998-02-17  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile (makeinfo, texindex): Targets deleted.
-       (makeinfo.o, texindex.o): Targets deleted.
-       (clean, dist): Don't do anything with them or with getopt*.
-
-1998-01-30  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile (SHELL): Defined.
-
-1998-01-27  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile (elisp.tps): New target.
-       (elisp.dvi): Depend on elisp.tps.
-
-1996-04-03  Karl Heuer  <kwzh@gnu.ai.mit.edu>
-
-       * README: Update phone number.
-
-       * Makefile (elisp): Make this be the default target.
-       Depend on makeinfo.c instead of makeinfo.
-       (install): Don't depend on elisp.dvi, since we don't install that.
-       Use mkinstalldirs.
-       (dist): Add mkinstalldirs.
-
-1995-06-19  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * Makefile (VERSION): Update version number.
-       (maintainer-clean): Rename from realclean.
-
-1995-06-07  Karl Heuer  <kwzh@nutrimat.gnu.ai.mit.edu>
-
-       * Makefile (realclean): New target.
-       (elisp): Remove any old elisp-* files first.
-
-1993-11-23  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)
-
-       * Makefile (VERSION): New variable.
-       (dist): Make packaged directory name `elisp-manual-19-$(VERSION)'.
-       Compressed file suffix should be `.gz', not `.z'.
-
-1993-11-22  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (elisp): Depend on makeinfo.
-
-1993-11-19  Noah Friedman  (friedman@gnu.ai.mit.edu)
-
-       * Makefile (srcs): Add anti.texi.
-
-1993-05-28  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (infodir, prefix): New vars.
-       (install): Use infodir.
-       (emacsinfodir): Deleted.
-
-1993-05-27  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (srcs): Add calendar.texi.
-
-       * Makefile (dist): Copy texindex.c and makeinfo.c.
-       Limit elisp-* files to those with one or two digits.
-
-1993-05-16  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
-
-       * Makefile (dist): Changed to use Gzip instead of compress.
-
-1993-04-23  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
-
-       * loading.texi (Unloading): define-function changed back to
-       defalias.  It may not stay this way, but at least it's
-       consistent with the known-good version of the code patch.
-
-1993-03-26  Eric S. Raymond  (eric@geech.gnu.ai.mit.edu)
-
-       * modes.texi (Hooks): Document new optional arg of add-hook.
-
-1993-03-17  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
-
-       * variables.texi: Document nil initial value of buffer-local variables.
-
-       * tips.texi: Add new section on standard library headers.
-
-1993-02-27  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
-
-       * Makefile (srcs): Add frame.texi to the list of sources.
-
-1993-02-23  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
-
-       * Makefile (dist): Don't bother excluding autosave files; they'll
-       never make it into the temp directory anyway, and the hash marks
-       in the name are problematic for make and the Bourne shell.
-       (srcs):
-
-1993-02-12  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
-
-       * Makefile (dist): Don't include backup files or autosave files in
-       the distribution tar file.
-
-1991-11-26  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (srcs): Add index.perm.
-       (elisp.dvi): Remove erroneous shell comment.
-       Expect output of permute-index in permuted.fns.
-       Save old elisp.aux in elisp.oaux.
-       (clean): Add index.texi to be deleted.
-
-1990-08-11  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
-
-       * Makefile (elisp.dvi, index.texi): Use shell if instead of ifdef.
-
-1990-06-26  David Lawrence  (tale@geech)
-
-       * files.texi: Noted that completion-ignored-extensions is ignored
-       when making *Completions*.
-
-1990-06-08  Jay Fenlason  (hack@ai.mit.edu)
-
-       * Makefile  make dist now depends on elisp.dvi, since it tries
-       to include it in the dist file.
-
-1990-03-28  Jim Kingdon  (kingdon@mole.ai.mit.edu)
-
-       * functions.texinfo (Mapping Functions): Add missing quote.
-
-1989-06-19  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
-
-       * texinfo.tex (frenchspacing): Use decimal codes for char to be set.
-       (defunargs): Turn off \hyphenchar of \sl font temporarily.
-
-1989-05-10  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
-
-       * @result{}, @expansion{}, @print{}, @quiv{}, @point{},
-       and @error{} are the terms now being used.  The files in the
-       directory have been changed to reflect this.
-
-       * All instances of @indentedresultt{} have been changed to
-       `     @result{}', using 5 spaces at the begining of the line.
-
-1989-04-24  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
-
-       * @result{}, @expandsto{}, @prints{}, @quiv{}, @error{}, and the
-       experimental @indentedresult{}, @indentedexpandsto{} are part of
-       the texinfo.tex in this directory.  These TeX macros are not
-       stable yet.
-
-1989-04-17  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
-
-       * texinfo.tex: Temporarily added
-               \let\result=\dblarrow
-               \def\error{{\it ERROR} \longdblarrow}
-       We need to do this better soon.
-
-1989-04-11  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
-
-       * Applied Karl Berry's patches to *.texinfo files, but not to
-       texinfo.tex; those diffs are in `berry-texinfo-tex-diffs'.  (Karl's
-       new title page format is also not applied, since it requires
-       texinfo.tex changes.)
-
-       * Cleaned up `Makefile' and defined the `emacslibdir' directory
-       for the Project GNU development environment.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
-
-  Copyright (C) 1998-2011  Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  GNU Emacs is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+2011-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>\r
+\r
+       * variables.texi (Scope): Mention the availability of lexical scoping.\r
+       (Lexical Binding): New node.\r
+       * eval.texi (Eval): Add `eval's new `lexical' arg.\r
+\r
+2011-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>\r
+\r
+       * vol2.texi (Top):\r
+       * vol1.texi (Top):\r
+       * objects.texi (Programming Types, Funvec Type, Type Predicates):\r
+       * functions.texi (Functions, What Is a Function, Function Currying):\r
+       * elisp.texi (Top): Remove mentions of funvec and curry.\r
+\r
+;; Local Variables:\r
+;; coding: utf-8\r
+;; End:\r
+\r
+  Copyright (C) 2011  Free Software Foundation, Inc.\r
+\r
+  This file is part of GNU Emacs.\r
+\r
+  GNU Emacs is free software: you can redistribute it and/or modify\r
+  it under the terms of the GNU General Public License as published by\r
+  the Free Software Foundation, either version 3 of the License, or\r
+  (at your option) any later version.\r
+\r
+  GNU Emacs is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.\r
diff --git a/doc/lispref/ChangeLog.trunk b/doc/lispref/ChangeLog.trunk
new file mode 100644 (file)
index 0000000..5d28a90
--- /dev/null
@@ -0,0 +1,9032 @@
+2011-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * package.texi (Packaging, Packaging Basics, Simple Packages)
+       (Multi-file Packages): Expand and clarify.
+       (Package Archives): Temporary placeholder node.
+
+       * elisp.texi (Top): Update node listing.
+
+       * Makefile.in (srcs): Add package.texi.
+
+2011-03-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * processes.texi (Synchronous Processes): Minor clarification
+       (Bug#8149).
+
+2011-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * files.texi (Truenames): Minor clarification.  (Bug#2341)
+
+2011-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * variables.texi (Directory Local Variables):
+       Mention `(subdirs . nil)' alist element.
+
+2011-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * variables.texi (Directory Local Variables): Mention the optional
+       mtime argument of dir-locals-set-directory-class.  (Bug#3577)
+
+2011-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Minibuffer History): Clarify discussion of
+       minibuffer history lists (Bug#8085).
+
+2011-02-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi: Sync @dircategory with ../../info/dir.
+
+       * files.texi (Visiting Functions): Document find-file-literally,
+       both the command and the variable.
+
+       * variables.texi (Creating Buffer-Local): Explain the meaning of
+       permanent local variables.
+
+       * files.texi (Visiting Functions): Document find-file-literally,
+       both the command and the variable.
+
+       * variables.texi (Creating Buffer-Local): Explain the meaning of
+       permanent local variables.
+
+2011-02-19  Glenn Morris  <rgm@gnu.org>
+
+       * keymaps.texi (Remapping Commands): Mention how to undo it.
+
+2011-02-09  Reuben Thomas  <rrt@sc3d.org>
+
+       * loading.texi (Hooks for Loading): Remove unnecessary advice
+       about eval-after-load (Bug#7986).
+
+2011-02-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Accessing Mouse): Note that a header line is not
+       included in the row of posn-col-row.
+
+2011-02-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Major Mode Conventions): Add face guidelines.
+       (Faces for Font Lock): List faces in order of prominence.
+
+2011-02-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       format-time-string now supports subsecond time stamp resolution
+       * os.texi (Time Parsing): Document %N.
+
+2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * vol1.texi (Top):
+       * vol2.texi (Top):
+       * elisp.texi (Top):
+       * display.texi (Display Property): Shorten the menu description of
+       the "Other Display Specs" node (Bug#7816).
+
+       * keymaps.texi (Defining Menus): Add "menu item" and "extended
+       menu item" concept index entries (Bug#7805).
+
+2011-01-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (texinfodir): New variable.
+       (usermanualdir): Remove as redundant with $(emacsdir).
+       (MAKEINFO): Remove options, leave only program name.
+       (MAKEINFO_OPTS): New variable.
+       (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
+
+2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
+            Richard Kim  <emacs18@gmail.com>
+
+       * loading.texi (Library Search): Document list-load-path-shadows
+       (Bug#7757).
+
+2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * searching.texi (Regexp Special): Remove outdated discussion of
+       character sets (Bug#7780).
+
+       * frames.texi (Pop-Up Menus): Document where menu title comes
+       from (Bug#7684).
+
+2011-01-25  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Making Buttons): Mention limitation of text buttons.
+
+2011-01-23  Werner Lemberg  <wl@gnu.org>
+
+       * Makefile.in (MAKEINFO): Now controlled by `configure'.
+       (MAKEINFO_OPTS): New variable.  Use it where appropriate.
+       (ENVADD): New variable to control texi2dvi and texi2pdf.
+
+2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.texi (Directory Names): Move directory-abbrev-alist doc to
+       Emacs manual.
+
+2011-01-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (Directory Names): Explain why FROM in
+       directory-abbrev-alist should begin with \`.  (Bug#7777)
+
+2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * loading.texi (Hooks for Loading): Adjust doc of eval-after-load.
+
+2011-01-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * modes.texi (Emulating Mode Line): Fix last change.
+
+2011-01-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * modes.texi (Emulating Mode Line): Update documentation of
+       format-mode-line according to changes that fixed bug #7587.
+
+2010-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Derived Modes): Mention prog-mode.
+
+       * keymaps.texi (Simple Menu Items, Extended Menu Items): Remove mention
+       of the key-binding-data cache since we don't use it any more.
+
+2010-12-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Shell Arguments):
+       * strings.texi (Creating Strings): Don't mention "shell commands";
+       make it explicit that `split-string-and-unquote' and
+       `combine-and-quote-strings' are mainly for working with arguments
+       to call-process and start-process.
+
+       * processes.texi (Shell Arguments): Fix documentation of
+       `split-string-and-unquote'.  Add indexing.  (Bug#7563)
+
+2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Auto-Indentation): New section to document SMIE.
+       (Major Mode Conventions):
+       * text.texi (Mode-Specific Indent): Refer to it.
+
+2010-12-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Other Display Specs): Document left-fringe and
+       right-fringe display specs.
+
+2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * backups.texi (Making Backups):
+       * modes.texi (Example Major Modes): Use recommended coding style.
+       (Major Mode Basics, Derived Modes): Encourge more strongly use of
+       define-derived-mode.  Mention completion-at-point-functions.
+
+2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nonascii.texi (Converting Representations):
+       Document byte-to-string.
+
+2010-12-08  Glenn Morris  <rgm@gnu.org>
+
+       * buffers.texi (Modification Time):
+       verify-visited-file-modtime now defaults to the current buffer.
+
+2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nonascii.texi (Converting Representations): Document byte-to-string.
+
+       * strings.texi (Creating Strings): Don't mention semi-obsolete
+       function char-to-string.
+       (String Conversion): Shorten discussion of semi-obsolete function
+       string-to-char.  Link to Converting Representations.
+
+       * objects.texi (Symbol Type):
+       * text.texi (Near Point):
+       * help.texi (Help Functions):
+       * functions.texi (Mapping Functions): Use string instead of
+       char-to-string in examples.
+
+2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Kill Functions, Kill Functions)
+       (Low-Level Kill Ring, Low-Level Kill Ring): Remove obsolete
+       YANK-HANDLER args.
+
+       * symbols.texi (Creating Symbols): Using unintern without an
+       obarray arg is now obsolete.
+
+       * numbers.texi (Float Basics): Document float-e and float-pi.
+
+       * variables.texi (Defining Variables): Change "pi" example to
+       "float-pi".
+
+2010-11-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * commands.texi (Click Events): Document the values of X, Y and
+       COL, ROW in the event's position, when the click is on the header
+       or mode line, on the fringes, or in the margins.
+
+2010-11-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * customize.texi (Composite Types): Lower-case index entry.
+
+       * loading.texi (How Programs Do Loading):
+       Document load-file-name.  (Bug#7346)
+
+2010-11-17  Glenn Morris  <rgm@gnu.org>
+
+       * text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
+
+2010-11-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Usual Display): Characters with no fonts are not
+       necessarily displayed as empty boxes.
+
+2010-10-31  Glenn Morris  <rgm@gnu.org>
+
+       * maps.texi (Standard Keymaps): Update File menu description.
+
+2010-10-28  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
+
+2010-10-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Window Systems): Deprecate use of window-system as
+       a predicate.
+
+2010-10-23  Glenn Morris  <rgm@gnu.org>
+
+       * help.texi (Documentation Basics): Remove mentions of digest-doc and
+       sorted-doc.
+
+2010-10-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * os.texi (Dynamic Libraries): New node, with slightly modified
+       text deleted from "Image Formats".
+       (System Interface): Add @menu entry for "Dynamic Libraries".
+
+       * display.texi (Image Formats): Remove description of
+       image-library-alist.  (Renamed in 2010-10-13T14:50:06Z!lekktu@gmail.com.)
+
+2010-10-12  Glenn Morris  <rgm@gnu.org>
+
+       * book-spine.texinfo: Rename to book-spine.texi.
+
+2010-10-11  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
+
+       * Makefile.in (DVIPS): New variable.
+       (.PHONY): Add html, ps.
+       (html, elisp.html, ps, elisp.ps): New targets.
+       (clean): Delete html, ps files.
+       ($(infodir)/elisp): Remove unnecessary includes.
+
+2010-10-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (emacsdir): New variable.
+       (srcs): Add emacsver.texi.
+       ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
+
+2010-10-09  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (VPATH): Remove.
+       (infodir): Make it absolute.
+       (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
+
+       * Makefile.in (dist): Anchor regexps.
+
+       * Makefile.in (srcs): Put elisp.texi first.
+       ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
+
+       * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+       * Makefile.in ($(infodir)): Delete rule.
+       (mkinfodir): New.
+       ($(infodir)/elisp): Use $mkinfodir instead of infodir.
+
+       * Makefile.in (dist): Remove reference to emacsver.texi.in.
+       Also copy emacsver.texi, and edit $emacsdir.
+
+2010-10-09  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (emacsdir): New variable.
+       (MAKEINFO): Add -I $emacsdir.
+       (dist): Copy emacsver.texi.
+       (srcs): Add emacsver.texi.
+
+       * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
+       Set EMACSVER by including emacsver.texi.
+
+       * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
+
+2010-10-07  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (version): New, set by configure.
+       (clean): Delete dist tar file.
+       (dist): Use version in tar name.
+
+2010-10-06  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in: Rearrange to more closely resemble doc/emacs/Makefile.
+       (INSTALL_INFO): Remove unused variable.
+       (mostlyclean, infoclean, dist): New rules.
+       (clean): Delete dvi and pdf files.
+       (maintainer-clean): Remove elisp.oaux, use infoclean.
+       ($(infodir)): Add parallel build workaround.
+
+2010-10-04  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (dvi, pdf, $(infodir)): New targets.
+       ($(infodir)/elisp): Ensure target directory exists.  Use $@.
+       Fix -I typo.
+       (clean): No 'make.out' or 'core' files.
+       (.PHONY): Declare clean rules.
+       (maintainer-clean): Delete pdf file.  Guard against cd failures.
+
+2010-10-03  Glenn Morris  <rgm@gnu.org>
+
+       * files.texi (File Name Components): Remove ignored section about
+       deleted variable directory-sep-char.
+
+2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): New defopt
+       remote-file-name-inhibit-cache.
+
+2010-10-02  Glenn Morris  <rgm@gnu.org>
+
+       * os.texi (Killing Emacs): Hook now runs in batch mode.
+
+2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * text.texi (Special Properties): Clarify when modification-hooks run.
+
+2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.texi (Syntax Flags): Document new `c' flag.
+
+2010-09-09  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (ImageMagick Images): General cleanup.
+
+2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
+
+       * files.texi (Directory Names): Use \` rather than ^.
+
+2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * text.texi (Low-Level Kill Ring):
+       * frames.texi (Window System Selections): Remove cut buffer
+       documentation.
+
+2010-08-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Fringe Size/Pos): Add a cross-reference to "Layout
+       Parameters", where the default fringe width is described.
+
+       * frames.texi (Window Frame Parameters, Basic Parameters)
+       (Position Parameters, Layout Parameters, Management Parameters)
+       (Cursor Parameters, Font and Color Parameters): Add indexing for
+       frame parameters.  (Bug#6929)
+
+2010-08-25  Tom Tromey  <tromey@redhat.com>
+
+       * vol2.texi (Top): Update.
+       * vol1.texi (Top): Update.
+       * tips.texi (Library Headers): Mention Package-Version and
+       Package-Requires.
+       * package.texi: New file.
+       * os.texi (System Interface): Update pointers.
+       * elisp.texi (Top): Link to new nodes.  Include package.texi.
+       * anti.texi (Antinews): Update pointers.
+
+2010-08-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Filter Functions): Fix last change.
+
+2010-08-24  Markus Triska  <triska@gmx.at>
+
+       * processes.texi (Filter Functions): Use `buffer-live-p' instead
+       of `buffer-name' in the main text as well as in the example
+       (Bug#3098).
+
+2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nonascii.texi (Text Representations):
+       * loading.texi (Loading Non-ASCII):
+       * compile.texi (Byte Compilation): Don't mention obsolete
+       --unibyte command-line argument.
+
+2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Defining Minor Modes): Doc fix (Bug#6880).
+
+2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * objects.texi (Bool-Vector Type): Minor definition tweak (Bug#6878).
+
+2010-08-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * commands.texi (Misc Events): Add cross-references to where
+       POSITION of a mouse event is described in detail.
+
+2010-08-08  Christoph  <cschol2112@googlemail.com>
+
+       * control.texi (Handling Errors) <error-message-string>: Fix arg name.
+
+2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * modes.texi (Defining Minor Modes): Use C-backspace, not C-delete.
+       Suggested by Štěpán Němec <stepnem@gmail.com>.
+
+2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.texi (High-Level Completion): Document args of
+       `read-buffer-function' (bug#5625).
+
+2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * frames.texi (Layout Parameters): Add doc for tool-bar-position.
+
+2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Process Information): Explain process property
+       `remote-tty'.
+
+2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * modes.texi (Defining Minor Modes): Use C-delete in examples,
+       instead of "\C-\^?" (bug#6334).
+
+       * text.texi (Special Properties): Fix typo.
+
+2010-07-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * internals.texi (Writing Emacs Primitives): Adapt to ANSI C
+       calling sequences, which are now the standard.
+
+2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Undo): Clarify command loop behavior (Bug#2433).
+
+       * commands.texi (Command Overview): Mention undo-boundary call.
+
+2010-06-23  Glenn Morris  <rgm@gnu.org>
+
+       * abbrevs.texi, commands.texi, compile.texi, debugging.texi:
+       * display.texi, edebug.texi, elisp.texi, eval.texi, files.texi:
+       * frames.texi, functions.texi, internals.texi, keymaps.texi:
+       * loading.texi, minibuf.texi, numbers.texi, os.texi, processes.texi:
+       * searching.texi, sequences.texi, strings.texi, syntax.texi:
+       * text.texi, tips.texi, vol1.texi, vol2.texi, windows.texi:
+       Untabify Texinfo files.
+
+2010-06-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Minor Mode Conventions): Fix typo (Bug#6477).
+
+2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * errors.texi (Standard Errors): Remove unnecessary markup (Bug#6461).
+
+2010-06-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * searching.texi (Regexp Special): Remove obsolete information
+       about matching non-ASCII characters, and suggest using char
+       classes (Bug#6283).
+
+2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.texi (Basic Completion): Add missing "@end defun".
+
+2010-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.texi (Basic Completion): Document completion-boundaries.
+       (Programmed Completion): Document the new fourth method for boundaries.
+
+2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Image Cache): Update documentation about image caching.
+
+2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
+
+       * windows.texi (Textual Scrolling):
+       * tips.texi (Coding Conventions):
+       * minibuf.texi (Minibuffer History):
+       * maps.texi (Standard Keymaps):
+       * loading.texi (Where Defined):
+       * edebug.texi (Instrumenting): Fix typos.
+
+2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Menu Bar): Document :advertised-binding property.
+
+       * functions.texi (Obsolete Functions):
+       Document set-advertised-calling-convention.
+
+       * minibuf.texi (Basic Completion): Document completion-in-region.
+       (Programmed Completion): Document completion-annotate-function.
+
+       * commands.texi (Reading One Event): Document read-key.
+       (Distinguish Interactive): Document KIND arg to
+       called-interactively-p.  Delete obsolete interactive-p.
+
+       * elisp.texi (Top): Update node description.
+
+2010-05-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Character Properties):
+       Document unicode-category-table.  Add an index entry for Unicode
+       general category.
+
+2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Version 23.2 released.
+
+2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * locals.texi (Standard Buffer-Local Variables):
+       Remove @ignore'd reference to `direction-reversed'.
+
+2010-04-14  Juri Linkov  <juri@jurta.org>
+
+       Fix @deffn without category.
+
+       * abbrevs.texi (Abbrev Expansion): Replace @deffn with @defun
+       for `abbrev-insert'.
+
+       * buffers.texi (Indirect Buffers): Add category `Command'
+       to @deffn of `clone-indirect-buffer'.
+
+       * windows.texi (Cyclic Window Ordering): Replace @deffn with @defun
+       for `next-window' and `previous-window'.  Add category `Command'
+       to @deffn of `pop-to-buffer'.
+
+2010-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nonascii.texi (Text Representations): Don't mark
+       enable-multibyte-characters as a user option.
+
+2010-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * control.texi (Handling Errors): How to re-throw a signal caught
+       by condition-case.
+
+2010-03-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * loading.texi (Hooks for Loading): Document after-load-functions.
+       Copyedits.
+
+2010-03-24  Arni Magnusson  <arnima@hafro.is>  (tiny change)
+
+       * frames.texi (Cursor Parameters): Fix typo.  (Bug#5760)
+
+2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * processes.texi (Network Processes): Document seqpacket type.
+
+2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi (System Environment): Do not mention lynxos.
+
+2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Branch for 23.2.
+
+2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * objects.texi (Integer Type): Take note of the read syntax
+       exception for numbers that cannot fit in the integer type.
+
+2010-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * numbers.texi (Integer Basics, Bitwise Operations):
+       * objects.texi (Integer Type): Update for integers now being 30-bit.
+
+2010-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Low-Level Font): Document :otf font-spec property.
+
+2010-02-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * display.texi (Line Height): Avoid obsolete special default variables
+       like default-major-mode.
+
+2010-01-28  Alan Mackenzie  <acm@muc.de>
+
+       * display.texi (Auto Faces): Say fontification-functions is called
+       whether or not Font Lock is enabled.  Tidy up the wording a bit.
+
+2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * elisp.texi: Remove duplicate edition information (Bug#5407).
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * two.el (volume-header-toc-markup): Fix typos in docstring.
+
+2010-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Avoid dubious uses of save-excursions.
+       * positions.texi (Excursions): Recommend the use of
+       save-current-buffer if applicable.
+       * text.texi (Clickable Text): Fix the example code which used
+       save-excursion in a naive way which sometimes preserves point and
+       sometimes not.
+       * variables.texi (Creating Buffer-Local):
+       * os.texi (Session Management):
+       * display.texi (GIF Images):
+       * control.texi (Cleanups): Use (save|with)-current-buffer.
+
+2010-01-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * modes.texi (Example Major Modes): Fix indentation.  (Bug#5195)
+
+2010-01-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nonascii.texi (Text Representations, Character Codes)
+       (Converting Representations, Explicit Encoding)
+       (Translation of Characters): Use hex notation consistently.
+       (Character Sets): Fix map-charset-chars doc (Bug#5197).
+
+2010-01-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * loading.texi (Where Defined): Make it clearer that these are
+       loaded files (Bug#5068).
+
+2009-12-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Completion Styles): Document `initials' style.
+
+2009-12-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Resources): Describe inhibit-x-resources.
+       (Size Parameters): Copyedit.
+
+       * hash.texi (Creating Hash):
+       * objects.texi (Hash Table Type): Document the new hash table
+       printed representation.
+
+       * minibuf.texi (Basic Completion): 4th arg to all-completions is
+       obsolete.
+
+       * processes.texi (Process Buffers):
+       Document process-kill-buffer-query-function.
+
+2009-12-05  Glenn Morris  <rgm@gnu.org>
+
+       * hooks.texi (Standard Hooks): Remove diary-display-hook, replaced by
+       diary-display-function, and no longer recommended to be a hook.
+       Update for changes in the names of calendar and diary hooks.
+       diary-print-entries-hook has changed section.
+
+2009-11-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * text.texi (Special Properties): More accurate description of
+       what the `cursor' property does.
+
+2009-11-26  Kevin Ryde  <user42@zip.com.au>
+
+       * commands.texi (Misc Events): vindex mouse-wheel-up-event and
+       mouse-wheel-down-event, the closest thing to a definition for them.
+       * os.texi (Startup Summary): vindex inhibit-startup-message and
+       inhibit-splash-screen.
+       (Command-Line Arguments): vindex argv.
+       (Suspending Emacs): vindex suspend-tty-functions and
+       resume-tty-functions.  Don't want to index every hook, but having
+       the programming ones is helpful.
+
+2009-11-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Motion Events): Fix typo (Bug#4907).
+
+2009-11-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * searching.texi (Char Classes): Note that [:upper:] and [:lower:]
+       are affected by case-fold-search (Bug#4483).
+
+2009-11-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Reading File Names): Note that read-file-name may
+       use a graphical file dialog.
+
+2009-10-31  Glenn Morris  <rgm@gnu.org>
+
+       * nonascii.texi (User-Chosen Coding Systems): Minor reword.  (Bug#4817)
+
+2009-10-16  Kevin Ryde  <user42@zip.com.au>
+
+       * files.texi (Magic File Names): Add @vindex file-name-handler-alist,
+       in particular so `info-lookup-symbol' can find its docs.
+
+2009-10-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * variables.texi (Constant Variables): Distinguish from defconst
+       variables.
+       (Defining Variables): Add cindex.
+
+2009-10-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Time of Day): Clarify that the microsecond part is
+       ignored (Bug#4637).
+
+2009-10-11  Glenn Morris  <rgm@gnu.org>
+
+       * frames.texi (Size and Position): Clarify what is included in the frame
+       height.  (Bug#4535)
+
+2009-10-10  Glenn Morris  <rgm@gnu.org>
+
+       * windows.texi (Size of Window): The relationship between window and
+       frame heights is not so simple.  (Bug#4535)
+       Mention window-full-height-p.
+
+2009-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * positions.texi (Text Lines): Remove goto-line, since it shouldn't be
+       used from Lisp.
+
+2009-10-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (Directory Names) <abbreviate-file-name>:
+       Document that root home directories are not replaced with "~".
+
+2009-10-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * text.texi (Special Properties): Document the meaning of the
+       `cursor' text property whose value is an integer.
+
+2009-10-05  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Add `copy-directory'.
+
+2009-10-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (File Attributes): Fix description of file
+       attributes.  (Bug#4638) Update attributes of files.texi example to
+       be more representative.
+
+2009-10-05  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Create/Delete Dirs): New command copy-directory.
+
+2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * anti.texi (Antinews):
+       * macros.texi (Indenting Macros):
+       * strings.texi (Creating Strings, Case Conversion):
+       Remove duplicate words.
+
+2009-10-01  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Create/Delete Dirs): delete-directory has an
+       optional parameter RECURSIVE.
+
+2009-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffers.texi (Swapping Text): Minor clarification.
+
+2009-10-01  Glenn Morris  <rgm@gnu.org>
+
+       * functions.texi (Declaring Functions): Mention that we also search for
+       ".m" files in the src/ directory.
+
+2009-09-25  David Engster  <deng@randomsample.de>
+
+       * display.texi (Managing Overlays): Document copy-overlay (Bug#4549).
+
+2009-09-22  Glenn Morris  <rgm@gnu.org>
+
+       * internals.texi (Building Emacs): Mention preloaded-file-list.
+
+2009-09-14  Alan Mackenzie  <acm@muc.de>
+
+       * os.texi (Terminal Output): Put "@code{}" around "stdout".
+
+2009-09-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * functions.texi (Anonymous Functions): Rearrange discussion,
+       giving usage of unquoted lambda forms first.  Mention that
+       `function' and `#'' are no longer required (Bug#4290).
+
+2009-09-11  Alan Mackenzie  <acm@muc.de>
+
+       * os.texi (Terminal Output): Document `send-string-to-terminal' in
+       batch mode.
+
+2009-09-01  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Face Functions): Mention define-obsolete-face-alias.
+
+2009-08-26  Ulrich Mueller  <ulm@gentoo.org>
+
+       * nonascii.texi (Character Codes): Fix typos.
+
+2009-08-25  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Synchronous Processes): New defvar
+       process-file-side-effects.
+
+2009-08-25  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Fontsets): Fix typo.
+
+       * files.texi (Format Conversion Round-Trip): Mention nil regexp.
+
+2009-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * processes.texi (Asynchronous Processes): Adjust arglist of
+       start-process-shell-command and start-file-process-shell-command.
+
+2009-08-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * advice.texi (Argument Access in Advice): Note that argument
+       positions are zero-based (Bug#3932).
+
+       * commands.texi (Distinguish Interactive): Minor copyedit.
+
+       * display.texi (Face Attributes): Add xref to Displaying Faces for
+       explanation of "underlying face".
+
+       * customize.texi (Common Keywords): Add xref to Loading.
+
+       * loading.texi (How Programs Do Loading): Add xref to Lisp
+       Libraries node in the Emacs manual.
+
+2009-08-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * objects.texi (Meta-Char Syntax): Add xref to Strings of Events.
+
+2009-07-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * processes.texi (Shell Arguments): Copyedits.
+
+2009-07-18  Glenn Morris  <rgm@gnu.org>
+
+       * loading.texi (Repeated Loading): Fix typo.
+
+2009-07-16  Richard Stallman  <rms@gnu.org>
+
+       * buffers.texi (Swapping Text): Recommend setting
+       write-region-annotate-functions and buffer-saved-size.
+
+       * backups.texi (Auto-Saving): Document buffer-saved-size = -2.
+
+2009-07-15  Glenn Morris  <rgm@gnu.org>
+
+       * edebug.texi: Minor re-phrasings throughout.
+       (Edebug Execution Modes): Sit-for affects continue mode too.
+       (Jumping): Use `forward-sexp' rather than its keybinding.
+       (Edebug Misc): Fix Q binding.
+       (Edebug Eval): Remove cl version.
+       (Printing in Edebug): Clarify print-length etc.
+       (Instrumenting Macro Calls): Defopt edebug-eval-macro-args.
+       (Specification List): Remove edebug-unwrap findex entry.
+       (Specification Examples): defmacro is actually not the same as defun.
+       Escape "`" in example.
+
+2009-07-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * markers.texi (The Mark): Document optional arg to
+       deactivate-mark.
+
+2009-07-11  Kevin Ryde  <user42@zip.com.au>
+
+       * hooks.texi (Standard Hooks): Fix cross-references.
+
+       * loading.texi (Named Features): Refer to eval-after-load.
+
+2009-07-11  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (TEXI2PDF): New.
+       (elisp.pdf): New target.
+
+       * searching.texi (Regexp Backslash): Fix typo.
+
+       * elisp.texi (Top): Display copyright notice at start of non-TeX.
+
+2009-07-10  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi, vol1.texi, vol2.texi: Update @detailmenu.
+
+       * customize.texi (Customization Types):
+       * display.texi (Abstract Display):
+       * objects.texi (Character Type, String Type):
+       Merge in some menu descriptions from elisp.texi.
+
+       * hash.texi (Hash Tables):
+       * modes.texi (Multiline Font Lock):
+       End menu description with period.
+
+2009-07-09  Glenn Morris  <rgm@gnu.org>
+
+       * back.texi: Don't hard-code texinfo location.
+
+       * two-volume.make (texinfodir): New, with location of texinfo.tex.
+       (tex): Add texinfodir to TEXINPUTS.
+       (elisp1med-init, elisp2med-init): Use texinfodir.
+
+       * Makefile.in (texinfodir): Rename from usermanualdir, and update.
+       (clean): Add two-volume.make intermediate files.
+
+       * elisp.texi, vol1.texi, vol2.texi:
+       Use a DATE variable with the publication date, and update it.
+       Fix antinews menu description.
+
+       * vol1.texi, vol2.texi: Update VERSION to match elisp.texi.
+       Update the detailed node listing to match elisp.texi.
+
+       * README: Update edition to match elisp.texi.
+
+       * objects.texi (General Escape Syntax):
+       * nonascii.texi (Character Sets):
+       Use consistent case for "Unicode Standard".
+
+       * anti.texi (Antinews):
+       * customize.texi (Variable Definitions):
+       * functions.texi (Declaring Functions):
+       * nonascii.texi (Character Properties):
+       * processes.texi (Serial Ports):
+       * text.texi (Special Properties):
+       * tips.texi (Coding Conventions):
+       Minor rearrangements to improve TeX line-filling.
+
+       * commands.texi (Using Interactive): Fix cross-reference.
+
+2009-07-01  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * frames.texi (Management Parameters): Mention sticky.
+
+2009-07-01  Andreas Schwab  <aschwab@redhat.com>
+
+       * help.texi (Help Functions): Fix description of help-buffer and
+       help-setup-xref to use @defun instead of @deffn.
+
+2009-07-01  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * frames.texi (Size Parameters): Mention maximized for fullscreen.
+
+2009-06-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Window Systems): Add ns to the list.
+
+2009-06-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Branch for 23.1.
+
+2009-06-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Dedicated Windows): Fix typo.
+       (Resizing Windows): Replace @defun by @deffn.
+
+2009-06-17  Glenn Morris  <rgm@gnu.org>
+
+       * variables.texi (Directory Local Variables):
+       Update for 2009-04-11 name-change of dir-locals-directory-alist.
+
+2009-06-09  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (Character Sets): State clearly that FROM and TO
+       are codepoints of CHARSET.
+
+2009-06-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Reading File Names): Fix introductory text.
+       Suggested by stan@derbycityprints.com.
+       (High-Level Completion): Fix typo.
+
+2009-05-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Text Terminal Colors): Multi-tty is already
+       implemented, but tty-local colors are not.
+
+2009-05-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hooks.texi (Standard Hooks): Remove mention of obsolete
+       redisplay-end-trigger-functions.
+
+       * internals.texi (Window Internals): Remove mention of obsolete
+       redisplay-end-trigger-functions.
+
+2009-05-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * abbrevs.texi (Abbrev Mode): abbrev-mode is an option.
+
+       * backups.texi (Making Backups): backup-directory-alist and
+       make-backup-file-name-function are options.
+       (Auto-Saving): auto-save-list-file-prefix is an option.
+
+       * buffers.texi (Killing Buffers): buffer-offer-save is an
+       option.
+
+       * display.texi (Refresh Screen): no-redraw-on-reenter is an
+       option.
+       (Echo Area Customization): echo-keystrokes is an option.
+       (Selective Display): selective-display-ellipses is an option.
+       (Temporary Displays): temp-buffer-show-function is an option.
+       (Face Attributes): underline-minimum-offset and x-bitmap-file-path
+       are options.
+       (Font Selection): face-font-family-alternatives,
+       face-font-selection-order, face-font-registry-alternatives, and
+       scalable-fonts-allowed are options.
+       (Fringe Indicators): indicate-buffer-boundaries is an option.
+       (Fringe Cursors): overflow-newline-into-fringe is an option.
+       (Scroll Bars): scroll-bar-mode is an option.
+
+       * eval.texi (Eval): max-lisp-eval-depth is an option.
+
+       * files.texi (Visiting Functions): find-file-hook is an option.
+       (Directory Names): directory-abbrev-alist is an option.
+       (Unique File Names): temporary-file-directory and
+       small-temporary-file-directory are options.
+
+       * frames.texi (Initial Parameters): initial-frame-alist,
+       minibuffer-frame-alist and default-frame-alist are options.
+       (Cursor Parameters): blink-cursor-alist and
+       cursor-in-non-selected-windows ar options.
+       (Window System Selections): selection-coding-system is an
+       option.
+       (Display Feature Testing): display-mm-dimensions-alist is an
+       option.
+
+       * help.texi (Help Functions): help-char and help-event-list are
+       options.
+
+       * keymaps.texi (Functions for Key Lookup): meta-prefix-char is
+       an option.
+
+       * minibuf.texi (Minibuffer History): history-length and
+       history-delete-duplicates are options.
+       (High-Level Completion): read-buffer-function and
+       read-buffer-completion-ignore-case are options.
+       (Reading File Names): read-file-name-completion-ignore-case is
+       an option.
+
+       * modes.texi (Mode Line Top): mode-line-format is an option.
+       (Mode Line Variables): mode-line-position and mode-line-modes
+       are options.
+
+       * nonascii.texi (Text Representations):
+       enable-multibyte-characters is an option.
+       (Default Coding Systems): auto-coding-regexp-alist,
+       file-coding-system-alist, auto-coding-alist and
+       auto-coding-functions are options.
+       (Specifying Coding Systems): inhibit-eol-conversion is an
+       option.
+
+       * os.texi (Init File): site-run-file is an option.
+       (System Environment): mail-host-address is an option.
+       (User Identification): user-mail-address is an option.
+       (Terminal Output): baud-rate is an option.
+
+       * positions.texi (Word Motion): words-include-escapes is an
+       option.
+
+       * searching.texi (Standard Regexps): page-delimiter,
+       paragraph-separate, paragraph-separate and sentence-end are
+       options.
+
+       * text.texi (Margins): left-margin and fill-nobreak-predicate
+       are options.
+
+       * variables.texi (Local Variables): max-specpdl-size is an
+       option.
+
+       * windows.texi (Choosing Window):
+       split-window-preferred-function, special-display-function and
+       display-buffer-function are options.
+
+2009-05-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       Fix errors spotted by Martin Rudalics.
+
+       * syntax.texi (Position Parse): Document rationale for ignored
+       arguments to syntax-ppss-flush-cache.
+
+       * processes.texi (Input to Processes): Mark PROCESS arg to
+       process-running-child-p as optional.
+       (Network Options): Document NO-ERROR arg to
+       set-network-process-option.
+
+       * buffers.texi (Indirect Buffers): Mark clone-indirect-buffer as a
+       command.
+
+       * searching.texi (POSIX Regexps): Mark posix-search-forward and
+       posix-search-backward as commands.
+
+       * os.texi (Killing Emacs): Mark kill-emacs as a command.
+       (Suspending Emacs): Mark suspend-emacs as a command.
+       (Processor Run Time): Mark emacs-uptime and emacs-init-time as
+       commands.
+       (Terminal Output): Remove obsolete function baud-rate.
+       Document TERMINAL arg for send-string-to-terminal.
+
+       * nonascii.texi (Terminal I/O Encoding): Document TERMINAL arg for
+       terminal-coding-system and set-terminal-coding-system.
+       (Explicit Encoding): Mark DESTINATION arg of decode-coding-region
+       as optional.
+       (Character Sets): Document RESTRICTION arg of char-charset.
+       (Character Codes): Mark POS argument to get-byte as optional.
+
+       * minibuf.texi (Minibuffer Misc): Document ARGS arg for
+       minibuffer-message.
+
+       * files.texi (Create/Delete Dirs): Mark make-directory and
+       delete-directory as commands.
+
+       * abbrevs.texi (Abbrev Tables): Fix arglist for make-abbrev-table.
+
+       * text.texi (Base 64): Mark base64-decode-string and
+       base64-encode-string as commands.
+       (Columns): Mark move-to-column as a command.
+       (Mode-Specific Indent): Document RIGID arg to
+       indent-for-tab-command.
+       (Region Indent): Mark TO-COLUMN arg to indent-region as optional.
+       Mark indent-code-rigidly as a command.
+       (Substitution): Mark translate-region as a command.
+
+       * frames.texi (Size and Position): Remove obsolete functions
+       screen-height and screen-width.
+
+2009-05-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * windows.texi (Cyclic Window Ordering, Cyclic Window Ordering)
+       (Displaying Buffers, Resizing Windows): Correct mistakes;
+       next-window, previous-window, and pop-to-buffer are not commands,
+       and fit-window-to-buffer" is a command.  (Pointed out by Martin
+       Rudalics.)
+
+2009-05-17  Richard M Stallman  <rms@gnu.org>
+
+       * modes.texi (Precalculated Fontification): Clarify text.
+
+2009-05-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Selecting Windows): Clarify descriptions of
+       with-selected-window and get-lru-window.
+       (Cyclic Window Ordering): Refer to particular frame when talking
+       about how splitting affects the ordering.
+       (Displaying Buffers): Fix descriptions of switch-to-buffer and
+       switch-to-buffer-other-window.  Explain how setting of
+       display-buffer-reuse-frames affects pop-to-buffer.
+       (Choosing Window): Clarify some details in descriptions of
+       display-buffer-reuse-frames, pop-up-frames, and
+       pop-up-frame-function.
+       (Dedicated Windows): Clarify some details.
+       (Textual Scrolling): Replace term vscroll by term vertical
+       scroll position.
+       (Vertical Scrolling): Fix typo.
+       (Window Hooks): Relate text on jit-lock-register to window
+       scrolling and size changes.
+
+2009-05-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Initial Parameters): Clarify what the initial
+       minibuffer frame is.
+       (Buffer Parameters): Note that the minibuffer parameter can not be
+       altered.
+
+       * anti.texi (Antinews): Copyedits.  Rearrange some entries.
+       Document display-buffer changes.
+
+2009-05-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * anti.texi (Antinews): Rewrite for Emacs 22.
+
+       * abbrevs.texi (Abbrevs): Add xref to Creating Symbols when
+       obarrays are first mentioned.  Define "system abbrev" more
+       prominently, and add it to the index.
+       (Abbrev Mode, Abbrev Tables, Defining Abbrevs, Abbrev Properties):
+       Copyedits.
+       (Abbrev Expansion): Document abbrev-insert.
+
+2009-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Font and Color Parameters): Rename from Color
+       Parameters.  Document font-backend parameter.
+
+       * vol2.texi (Top): Update node listing.
+       * vol1.texi (Top): Update node listing.
+       * elisp.texi (Top): Update node listing.
+
+2009-05-11  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Choosing Window): Don't explicitly refer to
+       split-window-sensibly's window argument in descriptions of
+       split-height-threshold and split-width-threshold.
+
+2009-05-10  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Choosing Window): Fix rewrite of window
+       splitting section.
+
+2009-05-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Default Coding Systems): Document
+       find-auto-coding, set-auto-coding, and auto-coding-alist.
+       Add indexing.
+       (Lisp and Coding Systems): Add index entries.
+
+2009-05-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Choosing Window): Describe split-window-sensibly
+       and rewrite section on window splitting accordingly.
+       (Textual Scrolling): Replace `...' by @code{...}.
+
+2009-05-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hooks.texi (Standard Hooks): Add abbrev-expand-functions.
+       Remove obsoleted pre-abbrev-expand-hook.
+
+       * locals.texi (Standard Buffer-Local Variables): Consolidate table
+       entries.
+
+       * internals.texi (Object Internals): Don't assume 32-bit machines
+       are the norm.
+       (Buffer Internals): Consolidate table entries for readability.
+       (Window Internals): Synch field names to window.h.
+       (Process Internals): Synch field names to process.h.
+
+2009-04-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * variables.texi (File Local Variables): Note that read-circle is
+       bound to nil when reading file-local variables.
+
+       * streams.texi (Input Functions): Document read-circle.
+       (Output Variables): Add xref to Circular Objects.
+
+2009-04-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * tips.texi (Coding Conventions): Copyedits.  Add xref to Named
+       Features and Coding System Basics.  Node that "p" stands for
+       "predicate".  Recommend utf-8-emacs instead of emacs-mule.
+       (Key Binding Conventions): Emacs does use S-down-mouse-1, for
+       mouse-appearance-menu.
+       (Programming Tips): Add xref to Progress.
+
+2009-04-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Command-Line Arguments):
+       Document command-line-args-left.
+       (Suspending Emacs): Adapt text to multi-tty case.  Document use of
+       terminal objects for tty arguments.
+       (Startup Summary): Add xref to Session Management.
+       (Session Management): Mention emacs-session-restore.  Copyedits.
+
+2009-04-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Startup Summary): Copyedits.  The init file is not
+       necessarily named .emacs now.  Document initial-buffer-choice and
+       initial-scratch-message.  Note where Emacs exits in batch mode.
+       Document inhibit-splash-screen as an alias.
+       (Init File): Be neutral about which init file name to use.
+
+2009-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (System Interface): Fix Texinfo usage.
+
+2009-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * searching.texi (Regexp Backslash): Also refer to shy groups as
+       non-capturing or unnumbered groups.
+       (Regexp Functions): Add cross-reference to Regexp Backslash.
+
+       * display.texi (Truncation): Overlays can use line-prefix and
+       wrap-prefix too.
+       (Overlay Properties): Document wrap-prefix and line-prefix.
+       (Face Attributes): Document underline-minimum-offset.
+       (Face Remapping): Copyedits.
+       (Low-Level Font): Copyedits.
+       (Image Cache): Note that the image cache is shared between frames.
+       (Line Height): Emphasize that line-spacing only takes effect on
+       graphical terminals.
+
+2009-04-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Refresh Screen): Note that a passage about screen
+       refreshing is text terminal only.
+       (Forcing Redisplay): Delete misleading comment---sit-for calls
+       redisplay, not the other way around.
+       (Truncation): Note new values of truncate-partial-width-windows.
+       Copyedits.
+       (Invisible Text): Document invisible-p.
+
+2009-04-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Overlays): Overlays don't scale well.  See
+       http://lists.gnu.org/archive/html/emacs-devel/2009-04/msg00243.html.
+
+2009-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * syntax.texi (Syntax Table Functions): Document cons cell
+       argument for modify-syntax-entry.
+       (Categories): Document cons cell argument for
+       modify-category-entry.
+
+       * searching.texi (String Search): Document word-search-forward-lax
+       and word-search-backward-lax.
+       (Searching and Case): Describe isearch behavior more precisely.
+
+       * keymaps.texi (Tool Bar): Mention that some platforms do not
+       support multi-line toolbars.  Suggested by Stephen Eglen.
+
+       * frames.texi (Layout Parameters): Mention that Nextstep also
+       allows only one tool-bar line.  Suggested by Stephen Eglen.
+
+       * nonascii.texi (Text Representations): Copyedits.
+       (Coding System Basics): Also mention utf-8-emacs.
+       (Converting Representations, Selecting a Representation)
+       (Scanning Charsets, Translation of Characters, Encoding and I/O):
+       Copyedits.
+       (Character Codes): Mention role of codepoints 1114112 to 4194175.
+
+2009-04-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Yank Commands): Note that yank uses push-mark.
+       (Filling): Clarify REGION argument of fill-paragraph.
+       Document fill-forward-paragraph-function.
+       (Special Properties): Remove "new in Emacs 22" declaration.
+       (Clickable Text): Merge with Links and Mouse-1 node.
+
+       * display.texi (Button Properties, Button Buffer Commands):
+       Change xref to Clickable Text.
+
+       * tips.texi (Key Binding Conventions): Change xref to Clickable
+       Text.
+
+       * elisp.texi (Top): Update node listing.
+
+2009-04-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * markers.texi (The Mark): Copyedits.  Improve description of
+       handle-shift-selection.
+       (The Region): Move use-region-p here from The Mark.
+
+       * positions.texi (Screen Lines): Document (cols . lines) argument
+       for vertical-motion.
+
+2009-04-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Frames): Clean up introduction.  Document `ns'
+       return value for framep.
+       (Creating Frames): Note how the terminal is chosen.
+       (Multiple Terminals, Multiple Displays): Merge into a single node.
+       (Color Parameters): Fix typo.
+
+       * variables.texi (Local Variables, Buffer-Local Variables)
+       (Creating Buffer-Local): Change link to Multiple Terminals.
+
+       * os.texi (X11 Keysyms): Change link to Multiple Terminals.
+
+       * keymaps.texi (Controlling Active Maps): Change link to Multiple
+       Terminals.
+
+       * commands.texi (Command Loop Info, Keyboard Macros): Change link
+       to Multiple Terminals.
+
+       * elisp.texi (Top): Update node listing.
+       * vol2.texi (Top): Update node listing.
+       * vol1.texi (Top): Update node listing.
+
+       * buffers.texi (Current Buffer): Note that the append-to-buffer
+       example is no longer in synch with the latest code.  Tie the two
+       examples together.
+
+       * files.texi (File Attributes): Move note about MS-DOS from
+       Changing Files to File Attributes.
+       (Create/Delete Dirs): Note that mkdir is an alias for this.
+
+2009-04-01  Markus Triska  <triska@gmx.at>
+
+       * processes.texi (Filter Functions): Suggest how to handle output
+       batches.
+
+2009-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.texi (Accessing Documentation): Update example to use
+       help-setup-xref and with-help-window.
+       (Help Functions): Remove print-help-return-message, which is
+       semi-obsolete due to with-help-window.  Document help-buffer and
+       help-setup-xref.
+
+2009-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.texi (Accessing Documentation, Help Functions):
+       Remove information about long-obsolete Emacs versions.
+
+       * modes.texi (Mode Line Variables): The default values of the mode
+       line variables are now more complicated.
+
+2009-03-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Major Mode Conventions): Note that specialness is
+       inherited.
+       (Derived Modes): Note that define-derive-mode sets the mode-class
+       property.
+
+       * keymaps.texi (Prefix Keys): The M-g prefix key is now named
+       goto-map.  Add search-map to the list.
+
+2009-03-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * os.texi (System Environment): Update the list of system-type
+       values.
+
+       * markers.texi (The Mark) <handle-shift-selection>: Update for
+       removal of the optional argument DEACTIVATE.
+
+2009-03-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Focus Events): Most X window managers don't use
+       focus-follows-mouse nowadays.
+
+2009-03-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Defining Commands): Clarify introduction.
+       (Using Interactive): Not that interactive can be put in a symbol
+       property.
+       (Interactive Call): Note that a symbol with a non-nil
+       interactive-form property satisfies commandp.
+
+2009-03-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.texi (Intro to Minibuffers): Fix typos.
+
+2009-03-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Intro to Minibuffers): Remove long-obsolete info
+       about minibuffers in old Emacs versions.  Copyedits.
+       Emphasize that enable-recursive-minibuffers defaults to nil.
+       (Text from Minibuffer): Simplify introduction.
+
+2009-03-22  Alan Mackenzie  <acm@muc.de>
+
+       * commands.texi (Using Interactive): Clarify string argument to
+       `interactive' - even promptless elements need \n separators.
+
+2009-03-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Completion Styles): New node.
+
+       * elisp.texi (Top): Update node listing.
+
+2009-03-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.texi (Basic Completion): Note that
+       read-file-name-completion-ignore-case and
+       read-buffer-completion-ignore-case can override
+       completion-ignore-case.
+       (Minibuffer Completion): Document completing-read changes.
+       (Completion Commands): Avoid mentioning partial completion mode.
+       Document minibuffer-completion-confirm changes, and
+       minibuffer-confirm-exit-commands.
+       (High-Level Completion): Document new require-match behavior for
+       read-buffer.  Document read-buffer-completion-ignore-case.
+       (Reading File Names): Document new require-match behavior for
+       read-file-name.
+
+2009-03-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * debugging.texi (Error Debugging): Don't mislead the reader into
+       thinking that debug-on-error enters debugger for C-f at EOB.
+       (Error Debugging): Setting debug-on-init within the init file
+       works, and has for some time.
+
+2009-03-13  Kenichi Handa  <handa@m17n.org>
+
+       * display.texi (Fontsets): Update the description.
+
+2009-03-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * advice.texi (Advising Primitives): Link to What Is a Function.
+
+2009-03-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * compile.texi (Speed of Byte-Code): Update example.
+       (Disassembly): Update examples.
+
+       * loading.texi (Repeated Loading): Simplify examples.
+
+       * customize.texi (Common Keywords): It's not necessary to use :tag
+       to remove hyphens, as custom-unlispify-tag-name does it
+       automatically.
+       (Variable Definitions): Link to File Local Variables.
+       Document customized-value symbol property.
+       (Customization Types): Move menu to end of node.
+
+2009-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * macros.texi (Compiling Macros): Omit misleading sentence, which
+       implied that macros can only be used in the same file they are
+       defined.
+       (Backquote): Remove obsolete information about Emacs 19.
+
+2009-03-05  John Foerch  <jjfoerch@earthlink.net>  (tiny change)
+
+       * display.texi (Display Margins): Fix paren typo.
+
+2009-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * elisp.texi (Top): Update node listing.
+
+       * variables.texi (Variables): Clarify introduction.
+       (Global Variables): Mention that setq is a special form.
+       (Local Variables): Use active voice.
+       (Tips for Defining): Mention marking variables as safe.
+       (Buffer-Local Variables): Mention terminal-local and frame-local
+       variables together.
+       (File Local Variables): Copyedits.
+       (Frame-Local Variables): Note that they are not really useful.
+       (Future Local Variables): Node deleted.
+
+       * objects.texi (General Escape Syntax): Update explanation of
+       unicode escape syntax.
+
+2009-02-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * control.texi (Control Structures): Add cindex entry for "textual
+       order".
+
+       * eval.texi (Intro Eval): Copyedits.  Standardize on "form"
+       instead of "expression" throughout.
+       (Function Indirection): Copyedits.  Use active voice.
+       (Eval): The default value of max-lisp-eval-depth is now 400.
+
+2009-02-23  Miles Bader  <miles@gnu.org>
+
+       * processes.texi (System Processes): Rename `system-process-attributes'
+       to `process-attributes'.
+
+2009-02-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * symbols.texi (Property Lists): Emphasize that property lists are
+       not restricted to symbol cells.
+       (Other Plists): Copyedit.
+
+       * sequences.texi (Sequences Arrays Vectors): Make introduction
+       more concise.
+       (Arrays): Mention char-tables and bool-vectors too.
+       (Vectors): Don't repeat information given in Arrays node.  Link to
+       nodes that explain the vector usage examples.
+       (Char-Tables): Note that char-table elements can have arbitrary
+       type.  Explain effect of omitted char-table-extra-slots property.
+       Link to Property Lists node.
+
+2009-02-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * lists.texi (Building Lists): Remove obsolete Emacs 20 usage of
+       `append'.
+       (List Elements): Copyedits.
+
+       * sequences.texi (Vector Functions): Remove obsolete Emacs 20 use
+       of `vconcat'.
+
+       * strings.texi (Creating Strings): Copyedits.  Remove obsolete
+       Emacs 20 usage of `concat'.
+       (Case Conversion): Copyedits.
+
+2009-02-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * objects.texi (Lisp Data Types, Syntax for Strings, Buffer Type):
+       Minor edits.
+       (Frame Configuration Type): Emphasize that it is not primitive.
+       (Font Type): New node.
+       (Type Predicates): Add fontp; type-of now recognizes font object
+       types.
+
+       * intro.texi (Version Info): Update version numbers in examples.
+       (Acknowledgements): List more contributors.
+
+       * elisp.texi: Bump version number to 3.0.
+       (Top): Link to Font Type node.
+
+2009-02-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * modes.texi (Major Mode Conventions): Remove duplicate words.
+       (Customizing Keywords): Fix typo.
+
+2009-02-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (User-Chosen Coding Systems): Document that
+       select-safe-coding-system suggests raw-text if there are raw bytes
+       in the region.
+       (Explicit Encoding): Warn not to use `undecided' when encoding.
+
+2009-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * frames.texi (Visibility of Frames): Mention the effect multiple
+       workspaces/desktops can have on visibility.
+
+2009-02-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * text.texi (Commands for Insertion):
+       * commands.texi (Event Mod):
+       * keymaps.texi (Searching Keymaps):
+       * nonascii.texi (Translation of Characters):
+       Reinstate documentation of translation-table-for-input.
+       (Explicit Encoding): Document the `charset' text property produced
+       by decode-coding-region and decode-coding-string.
+
+2009-01-27  Alan Mackenzie  <acm@muc.de>
+
+       * modes.texi (Search-based Fontification): Correct a typo.
+
+2009-01-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * abbrevs.texi (Abbrev Table Properties): Fix typo.
+       Reported by Seweryn Kokot <sewkokot@gmail.com>.  (Bug#2039)
+
+2009-01-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Window Systems): Document the value of
+       `initial-window-system' under --daemon.
+
+       * os.texi (System Environment): Remove description of the
+       `environment' function which has been deleted.
+
+2009-01-22  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * frames.texi (Multiple Displays): Remove documentation for
+       removed function make-frame-on-tty.
+
+2009-01-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.texi (Format Conversion Piecemeal): Clarify behavior of
+       write-region-annotate-functions.
+       Document write-region-post-annotation-function.
+
+2009-01-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Font Lookup): Document WIDTH argument of
+       x-list-fonts.
+
+2009-01-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * maps.texi (Standard Keymaps): Rename function-key-map to
+       local-function-key-map.
+
+       * keymaps.texi (Translation Keymaps): Rename function-key-map to
+       local-function-key-map.
+
+       * nonascii.texi (Terminal I/O Encoding): `keyboard-coding-system'
+       and `set-keyboard-coding-system' now accept an optional terminal
+       argument.
+
+       * commands.texi (Event Mod): `keyboard-translate-table' is now
+       terminal-local.
+       (Function Keys): Rename function-key-map to
+       local-function-key-map.
+
+       * elisp.texi (Top): Make @detailmenu be consistent with changes in
+       frames.texi.
+
+       * hooks.texi (Standard Hooks): Document `delete-frame-functions'
+       `delete-terminal-functions', `suspend-tty-functions' and
+       `resume-tty-functions'.
+
+       * frames.texi (Frames): Document `frame-terminal' and
+       `terminal-live-p'.
+       (Multiple Displays): Document `make-frame-on-tty'.
+       (Multiple Terminals): Document `terminal-list', `delete-terminal',
+       `terminal-name', and `get-device-terminal'.
+       (Terminal Parameters): Document `terminal-parameters',
+       `terminal-parameter', and `set-terminal-parameter'.
+
+       * os.texi (System Environment): Document `environment' and
+       `initial-environment'.
+       (Suspending Emacs): Update for multi-tty; document
+       `suspend-tty', `resume-tty', and `controlling-tty-p'.
+
+       * nonascii.texi (Coding System Basics): More accurate description
+       of `raw-text'.
+
+2009-01-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Low-Level Font): Fix typo.
+
+2009-01-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * elisp.texi (Top): Update node listing.
+
+       * display.texi (PostScript Images): Node deleted.
+
+2009-01-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Decoding Output): Document that null bytes force
+       no-conversion for reading process output.
+
+       * files.texi (Reading from Files): Document that null bytes force
+       no-conversion when visiting files.
+
+       * processes.texi (Serial Ports): Improve wording, suggested by RMS.
+
+       * nonascii.texi (Lisp and Coding Systems):
+       Document inhibit-null-byte-detection and inhibit-iso-escape-detection.
+       (Character Properties): Improve wording.
+
+2009-01-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Font Lookup): Remove obsolete function
+       x-font-family-list.  x-list-fonts accepts Fontconfig/GTK syntax.
+       (Low-Level Font): Rename from Fonts, move to end of Faces section.
+       (Font Selection): Reorder order of variable descriptions.
+       Minor clarifications.
+
+       * elisp.texi (Top): Update node listing.
+
+2009-01-09  Glenn Morris  <rgm@gnu.org>
+
+       * commands.texi (Command Loop Info): Say that last-command-char and
+       last-input-char are obsolete aliases.
+
+       * edebug.texi (Edebug Recursive Edit): Remove separate references to
+       last-input-char and last-command-char, since they are just aliases for
+       last-input-event and last-command-event.
+
+       * minibuf.texi (Minibuffer Commands): Use last-command-event rather than
+       last-command-char.
+
+2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * elisp.texi: Update node listing.
+
+       * display.texi (Faces): Put Font Selection node after Auto Faces.
+       (Face Attributes): Don't link to Font Lookup.
+       Document font-family-list.
+       (Fonts): New node.
+
+2009-01-08  Jason Rumney  <jasonr@gnu.org>
+
+       * frames.texi (Pointer Shape): Clarify that only X supports
+       changing the standard pointer shapes.  (Bug#1485)
+
+2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Attribute Functions): Note that a function value
+       :height is relative, and that compatibility functions work by
+       calling set-face-attribute.
+       (Displaying Faces): Reorder list in order of increasing priority.
+       (Face Remapping): New node.  Content moved here from Displaying
+       Faces.
+       (Glyphs): Link to Face Functions.
+
+2009-01-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Faces): Don't discuss face id here.  facep does
+       not return t.
+       (Defining Faces): Minor clarification.
+       (Face Attributes): Rearrange items to match docstring of
+       set-face-attribute.  Add :foundry attribute.  Document new role of
+       :font attribute.  Texinfo usage fix.
+       (Attribute Functions): Copyedits.
+       (Face Functions): Note that face number is seldom used.
+
+2009-01-05  Richard M Stallman  <rms@gnu.org>
+
+       * strings.texi (Predicates for Strings): Minor clarification.
+
+       * functions.texi (Function Safety): Texinfo usage fix.
+
+2009-01-04  Eduard Wiebe  <usenet@pusto.de>  (tiny patch)
+
+       * objects.texi (General Escape Syntax): Fix typo.
+
+2009-01-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Choosing Window): Say that pop-up-frame-alist
+       works via the default value of pop-up-frame-function.
+
+2009-01-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (System Processes): Document the `time' and
+       `ctime' attributes of `system-process-attributes'.
+
+2009-01-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Face Attributes): Clarify :height attribute.
+
+2008-12-31  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffers.texi (The Buffer List): Clarify what moves a buffer to
+       the front of the buffer list.  Add entries for `last-buffer' and
+       `unbury-buffer'.
+
+2008-12-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Add @detailmenu items for "Multiple Terminals"
+       and its subsections.
+
+       * frames.texi (Multiple Terminals, Low-level Terminal)
+       (Terminal Parameters, Frames on Other TTY devices): New sections.
+       (Frames): Add an xref to "Multiple Terminals".
+
+       * elisp.texi (Top): Add @detailmenu item for "Terminal Type".
+
+       * objects.texi (Terminal Type): New node.
+       (Editing Types): Add it to the menu.
+
+       * elisp.texi (Top): Add a @detailmenu item for "Directory Local
+       Variables".
+
+       * variables.texi (Directory Local Variables): New node.
+       (Variables): Add a menu item for it.
+
+       * loading.texi (Autoload): Document `generate-autoload-cookie' and
+       `generated-autoload-file'.
+
+2008-12-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * os.texi (Startup Summary): Add xref to documentation of
+       `initial-window-system'.
+
+       * display.texi (Window Systems): Document `window-system' the
+       function.  The variable `window-system' is now frame-local.
+       Document `initial-window-system'.
+
+2008-12-19  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Windows): Rewrite description of
+       fit-window-to-buffer.
+
+2008-12-13  Glenn Morris  <rgm@gnu.org>
+
+       * modes.texi (Font Lock Basics): Fix level description.  (Bug#1534)
+       (Levels of Font Lock): Refer to font-lock-maximum-decoration.
+
+2008-12-12  Glenn Morris  <rgm@gnu.org>
+
+       * debugging.texi (Error Debugging): Refer forwards to
+       eval-expression-debug-on-error.
+
+2008-12-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * strings.texi (String Basics): Only unibyte strings that
+       represent key sequences hold 8-bit raw bytes.
+
+       * nonascii.texi (Coding System Basics): Rewrite @ignore'd
+       paragraph to speak about `undecided'.
+       (Character Properties): Don't explain the meaning of each
+       property; instead, identify their Unicode Standard names.
+       (Character Sets): Document `map-charset-chars'.
+
+2008-12-02  Glenn Morris  <rgm@gnu.org>
+
+       * files.texi (Format Conversion Round-Trip): Rewrite format-write-file
+       section yet again.
+
+2008-11-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Character Properties): New Section.
+       (Specifying Coding Systems): Document
+       `coding-system-priority-list', `set-coding-system-priority', and
+       `with-coding-priority'.
+       (Lisp and Coding Systems): Document `check-coding-systems-region'
+       and `coding-system-charset-list'.
+       (Coding System Basics): Document `coding-system-aliases'.
+
+       * elisp.texi (Top): Add a @detailmenu entry for "Character
+       Properties".
+
+       * objects.texi (Character Type): Correct the range of Emacs
+       characters.  Add an @xref to "Character Codes".
+
+       * strings.texi (String Basics): Add an @xref to "Character Codes".
+
+       * numbers.texi (Integer Basics): Add an @xref to `max-char'.
+
+       * nonascii.texi (Explicit Encoding): Update for Emacs 23.
+       (Character Codes): Document `max-char'.
+
+2008-11-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Text Representations, Converting Representations)
+       (Character Sets, Scanning Charsets, Translation of Characters):
+       Make text more accurate.
+
+2008-11-28  Glenn Morris  <rgm@gnu.org>
+
+       * files.texi (Format Conversion Round-Trip): Improve previous change.
+
+2008-11-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Auto Major Mode): Fix example.
+
+2008-11-25  Glenn Morris  <rgm@gnu.org>
+
+       * control.texi (Signaling Errors): Fix `wrong-type-argument' name.
+
+       * files.texi (Format Conversion Round-Trip):
+       Use active voice for previous change.
+
+2008-11-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Processor Run Time):
+       * processes.texi (Transaction Queues):
+       * markers.texi (The Mark):
+       * windows.texi (Choosing Window, Selecting Windows):
+       * files.texi (Changing Files, Magic File Names):
+       * commands.texi (Key Sequence Input):
+       * functions.texi (Declaring Functions):
+       * strings.texi (Predicates for Strings):
+       * intro.texi (nil and t): Fix typos (pointed out by Drew Adams).
+
+2008-11-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.texi (Accessing Documentation): Update example.
+
+       * variables.texi (Defining Variables): Note that `*' is not
+       necessary if defcustom is used.
+
+2008-11-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Remove "Chars and Bytes" and "Splitting
+       Characters" from @detailmenu.
+
+       * nonascii.texi (Character Codes, Character Sets)
+       (Scanning Charsets, Translation of Characters): Update for Emacs 23.
+       (Chars and Bytes, Splitting Characters): Sections removed.
+
+2008-11-22  Lute Kamstra  <lute@gnu.org>
+
+       * positions.texi (Text Lines): Update goto-line documentation.
+
+2008-11-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * frames.texi (Frames): Fix typo, add cross references, reword.
+       (Initial Parameters): Reword special-display-frame-alist text.
+       (Frames and Windows): Reword.  Describe argument norecord for
+       set-frame-selected-window.
+       (Input Focus): Describe argument norecord for select-frame.
+       Remove comment on MS-Windows behavior for focus-follows-mouse.
+       (Raising and Lowering): Mention windows-frames dichotomy in
+       metaphor.
+
+       * windows.texi (Displaying Buffers, Vertical Scrolling)
+       (Horizontal Scrolling): Fix indenting and rewording issues
+       introduced with 2008-11-07 change.
+
+2008-11-20  Glenn Morris  <rgm@gnu.org>
+
+       * files.texi (Format Conversion Round-Trip): Mention `preserve'
+       element of `format-alist'.
+
+2008-11-19  Glenn Morris  <rgm@gnu.org>
+
+       * doclicense.texi: Update to FDL 1.3.
+       * elisp.texi, vol1.texi, vol2.texi: Relicense under FDL 1.3 or later.
+
+2008-11-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * windows.texi (Window Hooks): Remove *-end-trigger-functions
+       vars, which are obsolete.  Mention jit-lock-register.
+
+       * modes.texi (Other Font Lock Variables):
+       Document jit-lock-register and jit-lock-unregister.
+
+       * frames.texi (Color Parameters): Document alpha parameter.
+
+2008-11-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Splitting Windows, Deleting Windows)
+       (Selecting Windows, Cyclic Window Ordering)
+       (Buffers and Windows, Displaying Buffers, Choosing Window)
+       (Dedicated Windows, Window Point, Window Start and End)
+       (Textual Scrolling, Vertical Scrolling, Horizontal Scrolling)
+       (Size of Window, Resizing Windows, Window Configurations)
+       (Window Parameters): Avoid @var at beginning of sentences and
+       reword accordingly.
+
+2008-11-11  Lute Kamstra  <lute@gnu.org>
+
+       * files.texi (File Name Components): Fix file-name-extension
+       documentation.
+
+2008-11-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frames.texi (Basic Parameters): Remove display-environment-variable
+       and term-environment-variable.
+
+2008-11-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * windows.texi (Basic Windows, Splitting Windows)
+       (Deleting Windows, Selecting Windows, Cyclic Window Ordering)
+       (Buffers and Windows, Displaying Buffers, Dedicated Windows)
+       (Resizing Windows, Window Configurations, Window Parameters):
+       Fix wording and markup.
+
+2008-11-07  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Windows): Update entries.
+       (Basic Windows): Remove listing of attributes.  Reword.
+       (Splitting Windows, Deleting Windows): Reword.
+       (Selecting Windows, Cyclic Window Ordering): Reword with special
+       emphasis on order of recently selected windows and buffer list.
+       (Buffers and Windows, Choosing Window): Reword with special
+       emphasis on dedicated windows.
+       (Displaying Buffers): Reword.  For switch-to-buffer mention that
+       it may fall back on pop-to-buffer.  For other-window try to
+       explain how it treats the cyclic ordering of windows.
+       (Dedicated Windows): New node and section discussing dedicated
+       windows and associated functions.
+       (Window Point): Add entry for window-point-insertion-type.  Reword.
+       (Window Start and End): Rename node and section title.  Reword.
+       (Textual Scrolling, Vertical Scrolling, Horizontal Scrolling):
+       Minor rewording.
+       (Size of Window): Reword, in particular text on window-width.
+       (Resizing Windows): Reword.  Add text on balancing windows.
+       (Window Configurations): Reword.  Mention window parameters.
+       (Window Parameters): New node and section on window parameters.
+       (Window Hooks): Reword.  Mention that
+       window-configuration-change-hook is run "buffer-locally".
+       * elisp.texi (Top): Update Windows entries in @detailmenu
+       section.
+
+2008-11-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * searching.texi (Regexp Search): Fix typo.
+
+2008-11-03  Seweryn Kokot  <sewkokot@gmail.com>  (tiny change)
+
+       * searching.texi (Regexp Search): Document GREEDY arg.
+       (Simple Match Data): Fix return value.
+
+2008-11-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Text Representations): Rewrite to make consistent
+       with Emacs 23 internal representation of characters.
+       Document `unibyte-string'.
+
+2008-10-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * processes.texi (Process Information): Note that process-status
+       does not accept buffer names.
+
+2008-10-27  Seweryn Kokot  <sewkokot@gmail.com>  (tiny change)
+
+       * positions.texi (Skipping Characters): Correct return value of
+       skip-chars-forward.
+
+2008-10-25  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Deleting Windows): Update documentation of
+       delete-windows-on.
+       (Buffers and Windows): Update documentations of
+       get-buffer-window and get-buffer-window-list.
+       (Displaying Buffers): Update documentation of
+       replace-buffer-in-windows.
+
+       * buffers.texi (Current Buffer): Reword set-buffer and
+       with-current-buffer documentations.
+       (Creating Buffers): Reword documentation of get-buffer-create.
+
+2008-10-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffers.texi (Current Buffer): Reword documentation of
+       set-buffer.
+       (Buffer Names): Reword documentation of buffer-name.
+       (The Buffer List): For bury-buffer explain what happens with the
+       buffer's window.
+       (Creating Buffers): Say that get-buffer-create's arg is called
+       buffer-or-name.
+
+2008-10-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * advice.texi (Computed Advice): Explain what DEFINITION is.
+
+       * nonascii.texi (Character Codes): Remove obsolete function
+       char-valid-p, and document characterp instead.
+
+2008-10-22  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Displaying Buffers): Reword documentation of
+       pop-to-buffer.
+       (Choosing Window): Rewrite documentation of display-buffer and
+       its options.
+
+       * buffers.texi (Killing Buffers): Update documentation of
+       kill-buffer.
+
+2008-10-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Serial Ports): Fix wording and improve markup.
+
+       * searching.texi (Regexp Search): Document `string-match-p' and
+       `looking-at-p'.
+       (POSIX Regexps): Add an xref for "non-greedy".
+       (Regexp Special): Add @cindex entry for "non-greedy".
+
+       * display.texi (Attribute Functions): Document `face-all-attributes'.
+       (Image Cache) <image-refresh>: Minor wording fixes.
+
+       * frames.texi (Color Names): Add an xref to `read-color'.
+
+       * minibuf.texi (High-Level Completion): Document `read-color'.
+
+       * elisp.texi (Top): Add "Swapping Text" to @detailmenu.
+
+       * positions.texi (Narrowing): Add an xref to "Swapping Text".
+
+       * buffers.texi (Swapping Text): New section, documents
+       `buffer-swap-text'.
+
+2008-10-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Resizing Windows): Minor wording fix.
+
+2008-10-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Shell Arguments): Document `split-string-and-unquote'
+       and `combine-and-quote-strings'.
+
+       * strings.texi (Creating Strings): Add xrefs for them.
+
+2008-10-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Make descriptive text for "Reading File Names"
+       match the corresponding menu in minibuf.texi.
+
+       * minibuf.texi (Reading File Names): Document `read-shell-command'
+       and `minibuffer-local-shell-command-map'.
+
+2008-10-19  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Resizing Windows): Remove var{} around "window" in
+       documentation of enlarge-window.
+       Rewrite documentation of window-min-height and window-min-width.
+
+2008-10-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * functions.texi (Calling Functions): Document `apply-partially'.
+
+       * hooks.texi (Standard Hooks): Mention
+       `before-hack-local-variables-hook' and `hack-local-variables-hook'.
+
+       * variables.texi (File Local Variables): Document
+       `file-local-variables-alist', `before-hack-local-variables-hook'
+       and `hack-local-variables-hook'.
+
+       * processes.texi (Synchronous Processes): Document `process-lines'.
+
+       * customize.texi (Variable Definitions):
+       Document `custom-reevaluate-setting'.
+
+2008-10-18  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Choosing Window, Deleting Windows)
+       (Displaying Buffers): Expand documentation of dedicated windows.
+
+2008-10-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (Changing Files): Document symbolic input of file
+       modes to `set-file-modes'.  Document `read-file-modes' and
+       `file-modes-symbolic-to-number'.
+
+       * maps.texi (Standard Keymaps): Document `multi-query-replace-map'
+       and `search-map'.
+
+       * searching.texi (Search and Replace):
+       Document `replace-search-function' and `replace-re-search-function'.
+       Document `multi-query-replace-map'.
+
+       * minibuf.texi (Text from Minibuffer): Document `read-regexp'.
+       (Completion Commands, Reading File Names):
+       Rename `minibuffer-local-must-match-filename-map' to
+       `minibuffer-local-filename-must-match-map'.
+       (Minibuffer Completion): The `require-match' argument to
+       `completing-read' can now have the value `confirm-only'.
+
+       * windows.texi (Displaying Buffers): Minor wording fix.
+       (Choosing Window): `split-height-threshold' can now be nil.
+       Document `split-width-threshold'.  `pop-up-frames' can have the
+       value `graphic-only'.
+
+2008-10-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * os.texi (Startup Summary): Document `before-init-time' and
+       `after-init-time'.  Document `initial-window-system' and
+       `window-system-initialization-alist'.  Document reading the
+       abbrevs file.  Document the call to `server-start' under --daemon.
+       Rearrange a bit to be consistent with the code flow.
+       (Processor Run Time): Document `emacs-uptime' and `emacs-init-time'.
+       (Time Parsing): Document `format-seconds'.
+
+2008-10-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Basic Windows, Splitting Windows): Fix whitespace
+       and reword.
+
+2008-10-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * markers.texi (The Mark): Document use-region-p.
+
+2008-10-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * internals.texi (Writing Emacs Primitives): The interactive spec
+       of a primitive can be a Lisp form.
+
+       * markers.texi (The Mark): Document the `lambda' and `(only . OLD)'
+       values of transient-mark-mode.  Document handle-shift-selection.
+
+       * commands.texi (Using Interactive, Interactive Codes): Document `^'.
+       (Interactive Examples): Show an example of `^'.
+       (Key Sequence Input): Document this-command-keys-shift-translated.
+       (Defining Commands, Using Interactive): The interactive-form of a
+       function can be added via its symbol's property.
+
+       * positions.texi (List Motion): beginning-of-defun-function can
+       now accept an argument.
+
+       * text.texi (Low-Level Kill Ring): interprogram-paste-function can
+       now return a list of strings.
+
+       * control.texi (Handling Errors): Document ignore-errors.
+
+       * frames.texi (Creating Frames): Document frame-inherited-parameters.
+       (Parameter Access): Document set-frame-parameter.
+
+       * variables.texi (Creating Buffer-Local): Add an xref to "Setting
+       Hooks" for the effect of kill-all-local-variables on local hook
+       functions.
+
+       * modes.texi (Major Mode Conventions, Mode Line Variables):
+       `mode-name' need not be a string.  xref to "Mode Line Data" for
+       details, and to "Emulating Mode Line" for computing a string
+       value.
+
+2008-10-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (System Processes): New section.
+       (Processes, Signals to Processes): Add xrefs to it.
+
+       * objects.texi (Editing Types): A `process' is a subprocess of
+       Emacs, not just any process running on the OS.
+
+       * elisp.texi (Top): Adjust the @detailmenu for the above two
+       changes.
+
+       * sequences.texi (Char-Tables): Remove documentation of
+       set-char-table-default, which has no effect since Emacs 23.
+       <char-table-range, set-char-table-range>: Don't mention generic
+       characters and charsets.  Add a cons cell as a possible argument.
+
+       * nonascii.texi (Splitting Characters)
+       (Translation of Characters): Don't mention generic characters.
+
+       * display.texi (Fontsets): Don't mention generic characters.
+
+       * sequences.texi (Char-Tables): `map-char-table' can now call its
+       argument FUNCTION with a cons cell as KEY.
+
+2008-10-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * objects.texi (Primitive Function Type): Move "@cindex special
+       forms" from here...
+
+       * eval.texi (Special Forms): ...to here.
+
+       * functions.texi (What Is a Function): `functionp' returns nil for
+       special forms.  Add an xref.
+
+       * elisp.texi (Top): Add a @detailmenu entry for "Frame-Local
+       Variables".
+
+       * variables.texi (Frame-Local Variables): New section.
+       (Buffer-Local Variables): Add an xref to it.
+       (Intro to Buffer-Local, Creating Buffer-Local): A variable cannot
+       have both frame-local and buffer-local binding.
+
+       * frames.texi (Frames): Mention multiple tty frames.
+       (Frame Parameters, Parameter Access): Mention frame-local variable
+       bindings.
+
+2008-09-20  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Defining Faces): Recommend against face variables.
+
+2008-09-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Echo Area Customization): Fix typo.
+
+2008-09-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * loading.texi (Where Defined): Add `defface' item.
+
+2008-09-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * loading.texi (Where Defined): Fix description of symbol-file.
+
+2008-08-26  Jason Rumney  <jasonr@gnu.org>
+
+       * display.texi (TIFF Images): New section describing :index property.
+
+2008-08-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Temporary Displays): Remove unnecessary comment
+       about usage of temp-buffer-show-hook.
+
+2008-08-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * symbols.texi (Other Plists): Fix incorrect example.
+       Suggested by Florian Beck.
+
+2008-07-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * os.texi: Fix previous change.
+
+2008-07-31  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi:
+       * intro.texi:
+       * files.texi: Remove VMS support.
+
+2008-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi:
+       * frames.texi:
+       * display.texi: Remove mentions of Mac Carbon.
+
+2008-07-01  Miles Bader  <miles@gnu.org>
+
+       * text.texi (Special Properties):
+       * display.texi (Truncation): Add wrap-prefix and line-prefix.
+
+2008-06-28  Johan Bockgård  <bojohan@gnu.org>
+
+       * display.texi (Other Image Types): Fix copy/paste error; say
+       "PBM", not "XBM".
+
+2008-06-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi: Remove references to obsolete systems.
+
+2008-06-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (distclean): Remove makefile.
+
+2008-06-17  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (emacsver, miscmanualdir, VERSION, manual, install)
+       (elisp, dist): Remove rules and variables that are obsolete now
+       the lisp manual is no longer distributed separately.
+
+2008-06-16  Glenn Morris  <rgm@gnu.org>
+
+       * configure, configure.in, mkinstalldirs: Remove unused files.
+
+       * book-spine.texinfo: Set version to 23.0.60.
+       * vol1.texi (EMACSVER):
+       * vol2.texi (EMACSVER): Set to 23.0.60.
+
+       * elisp.texi, vol1.texi, vol2.texi: Update Back-Cover Text
+       as per maintain.info.
+
+2008-06-15  Glenn Morris  <rgm@gnu.org>
+
+       * makefile.w32-in (manual): Use "23" rather than "21".
+
+       * Makefile.in (emacsver): New, set by configure.
+       (manual): Use emacsver.
+
+       * intro.texi: Report bugs using M-x report-emacs-bug.
+
+       * elisp.texi (EMACSVER): Remove duplicate, outdated setting.
+
+2008-06-13  Daniel Engeler  <engeler@gmail.com>
+
+       * elisp.texi, internals.texi, processes.texi: Add documentation
+       about serial port access.
+
+2008-06-05  Miles Bader  <miles@gnu.org>
+
+       * display.texi (Displaying Faces): Update to reflect function
+       renamings in face-remap.el.
+
+2008-06-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Fontsets): Fix typos.
+
+2008-06-03  Miles Bader  <miles@gnu.org>
+
+       * display.texi (Displaying Faces): Add add-relative-face-remapping,
+       remove-relative-face-remapping, set-base-face-remapping,
+       and set-default-base-face-remapping.
+
+2008-06-01  Miles Bader  <miles@gnu.org>
+
+       * display.texi (Displaying Faces): Add face-remapping-alist.
+
+2008-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * tips.texi (Coding Conventions): Do not encourage the use of "-flag"
+       variable names.
+
+2008-05-03  Eric S. Raymond  <esr@golux>
+
+       * keymaps.texi: Clarify that (current-local-map) and
+       (current-global-map) return references, not copies.
+
+2008-05-02  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Text from Minibuffer): Document a list of
+       default values for `read-from-minibuffer'.
+
+2008-04-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * nonascii.texi (Translation of Characters): Fix previous change.
+
+2008-04-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Overlay Properties): Clarify role of underlying
+       textprop and overlay keymaps for display strings.
+
+       * keymaps.texi (Active Keymaps): Ditto.
+
+2008-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.texi (Programmed Completion):
+       Replace dynamic-completion-table with the new completion-table-dynamic.
+
+2008-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * intro.texi (Some Terms): Change "fonts in this manual" index
+       entry to "typographic conventions".
+
+2008-04-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * objects.texi (Text Props and Strings): Add indexing for read
+       syntax of text properties.
+
+2008-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * processes.texi (Decoding Output): Remove process-filter-multibyte
+       functions.
+
+2008-03-15  Martin Rudalics  <rudalics@gmx.at>
+
+       * display.texi (Finding Overlays): Say that empty overlays at
+       the end of the buffer are reported too.
+
+2008-03-13  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi (EMACSVER): Set to 23.0.60.
+
+2008-02-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * strings.texi (Formatting Strings): Treat - and 0 as flag characters.
+
+2008-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * frames.texi (Position Parameters): Clarify the description of
+       `left' and `top', using information from "Geometry".
+       (Geometry): Give a pointer to "Position Parameters", rather than
+       repeating information.
+
+2008-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * objects.texi (Equality Predicates): No longer talk about "two"
+       functions.
+
+2008-02-11  Lawrence Mitchell  <wence@gmx.li>  (tiny change)
+
+       * objects.texi (Equality Predicates): Add defun for
+       equal-including-properties.
+
+2008-02-10  Glenn Morris  <rgm@gnu.org>
+
+       * 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ärv  <jan.h.d@swipnet.se>
+
+       * keymaps.texi (Tool Bar): Document rtl property.
+
+2008-01-27  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * display.texi (Button Types):
+       For define-button-type, clarify type of NAME.
+
+2008-01-19  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffers.texi (Buffer Modification): Fix typo.
+
+2008-01-06  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi (System Environment): Remove references to OSes that are
+       not supported anymore.
+
+2008-01-05  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * os.texi (System Environment): Remove mention for Masscomp.
+
+2008-01-04  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Faces): Don't talk about internal face vector as arg
+       to facep.
+
+       * customize.texi (Type Keywords): Fix previous change.
+
+       * text.texi (Links and Mouse-1): Fix xref for commands.texi change.
+       * elisp.texi (Top): Fix menu for commands.texi change.
+
+2007-12-30  Richard Stallman  <rms@gnu.org>
+
+       * commands.texi (Accessing Mouse): Rename from Accessing Events.
+       (Accessing Scroll): New node broken out of Accessing Mouse.
+
+2007-12-28  Richard Stallman  <rms@gnu.org>
+
+       * frames.texi (Size Parameters): Fix typo.
+       (Basic Parameters): For `title', refer to title bar.
+       (Size and Position): Explain meaning of frame pixel width and height.
+
+2007-12-23  Richard Stallman  <rms@gnu.org>
+
+       * customize.texi (Type Keywords): Uncomment :validate and clarify it.
+       Improve some of the commented-out keywords' text too.
+
+2007-12-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * nonascii.texi (Encoding and I/O): Reword to avoid saying
+       "visit the current buffer".
+
+       * os.texi (System Interface): Fix typo.
+
+2007-12-04  Richard Stallman  <rms@gnu.org>
+
+       * objects.texi (Symbol Type): Fix typo.
+
+2007-12-03  Richard Stallman  <rms@gnu.org>
+
+       * hooks.texi (Standard Hooks): Add link to Hooks for Loading.
+
+2007-12-01  Glenn Morris  <rgm@gnu.org>
+
+       * functions.texi (Declaring Functions): Improve previous change.
+
+2007-11-30  Glenn Morris  <rgm@gnu.org>
+
+       * functions.texi (Declaring Functions): Add optional fourth
+       argument of declare-function, and setting third argument to `t'.
+
+2007-11-29  Richard Stallman  <rms@gnu.org>
+
+       * customize.texi (Composite Types): Document `group' type.
+
+2007-11-29  Glenn Morris  <rgm@gnu.org>
+
+       * functions.texi (Declaring Functions): Add findex.
+       Mention `external' files.
+
+2007-11-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * functions.texi (Declaring Functions): Fix directive.
+
+2007-11-25  Richard Stallman  <rms@gnu.org>
+
+       * help.texi (Help Functions): Clean up last change.
+
+       * advice.texi (Preactivation, Activation of Advice): Minor cleanup.
+
+       * loading.texi (Named Features): Minor cleanup.
+
+       * macros.texi (Eval During Expansion): Minor cleanup.
+
+       * variables.texi (Variable Aliases): Minor cleanup.
+
+2007-11-24  Richard Stallman  <rms@gnu.org>
+
+       * functions.texi (Declaring Functions): Clarify previous change.
+
+       * compile.texi (Compiler Errors): Clarify previous change.
+
+2007-11-24  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Refresh Screen, Forcing Redisplay):
+       Clarify the text and move items around.
+
+2007-11-24  Glenn Morris  <rgm@gnu.org>
+
+       * functions.texi (Declaring Functions): New section.
+       * compile.texi (Compiler Errors): Mention declaring functions,
+       defvar with no initvalue, and byte-compile-warnings.
+
+2007-11-15  Martin Rudalics  <rudalics@gmx.at>
+
+       * vol1.texi (Top): Remove Frame-Local Variables from Node Listing.
+       * vol2.texi (Top): Remove Frame-Local Variables from Node Listing.
+
+2007-11-13  Martin Rudalics  <rudalics@gmx.at>
+
+       * help.texi (Help Functions): Document new macro `with-help-window'.
+
+2007-11-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * searching.texi (Replacing Match): Describe new
+       `match-substitute-replacement'.
+
+2007-10-31  Richard Stallman  <rms@gnu.org>
+
+       * strings.texi (Creating Strings): Null strings from concat not unique.
+
+2007-10-26  Richard Stallman  <rms@gnu.org>
+
+       * objects.texi (Equality Predicates): Null strings are uniquified.
+
+       * minibuf.texi: Minor clarifications in previous change.
+
+2007-10-25  Glenn Morris  <rgm@gnu.org>
+
+       * customize.texi (Variable Definitions): Add :risky and :safe keywords.
+
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Delete Frame-Local Variables from subnode menu.
+
+       * variables.texi (Frame-Local Variables): Node deleted.
+       (Variables): Delete Frame-Local Variables from menu.
+       (Local Variables, Buffer-Local Variables, Intro to Buffer-Local)
+       (Default Value): Don't mention frame-local vars.
+
+       * os.texi (Idle Timers): current-idle-time returns nil if not idle.
+
+       * loading.texi (Unloading): Document FEATURE-unload-function
+       instead of FEATURE-unload-hook.
+
+       * frames.texi (Multiple Displays): Don't mention frame-local vars.
+
+2007-10-22  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Text from Minibuffer, Minibuffer Completion)
+       (High-Level Completion): Document a list of default value strings
+       in the DEFAULT argument, for which minibuffer functions return the
+       first element.
+
+2007-10-17  Juri Linkov  <juri@jurta.org>
+
+       * text.texi (Filling): Update arguments of fill-paragraph.
+       fill-paragraph operates on the active region in Transient Mark mode.
+       Remove fill-paragraph-or-region.
+
+2007-10-13  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi (@dircategory): Move to after @copying,
+       since we want @copying as close as possible to the beginning of
+       the output.
+
+2007-10-12  Richard Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Add Distinguish Interactive to subnode menu.
+
+       * commands.texi (Distinguish Interactive): New node,
+       broken out from Interactive Call and rewritten.
+       (Command Loop): Put Distinguish Interactive in menu.
+
+2007-10-09  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Examining Properties): Mention overlay priority.
+
+       * display.texi (Display Margins): Correct the description
+       of margin display specifications.
+       (Replacing Specs): New subnode broken out of Display Property.
+
+2007-10-06  Juri Linkov  <juri@jurta.org>
+
+       * text.texi (Filling): Document fill-paragraph-or-region.
+
+2007-10-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Auto Faces): Fix typo.
+
+2007-10-02  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Display Property): Explain some display specs
+       don't let you move point in.
+
+       * frames.texi (Cursor Parameters):
+       Describe cursor-in-non-selected-windows here.  Explain more values.
+
+       * windows.texi (Basic Windows): Don't describe
+       cursor-in-non-selected-windows here.
+
+2007-10-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * processes.texi (Misc Network): Note that these functions are
+       supported only on some systems.
+
+2007-10-01  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Properties): Explain nil as priority.
+       Explain that conflicts are unpredictable if not resolved by
+       priorities.
+
+2007-09-23  Richard Stallman  <rms@gnu.org>
+
+       * macros.texi (Backquote): Minor clarification.
+
+2007-09-19  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Display Property): Explain multiple display specs.
+       Clarify when they work in parallel and when one overrides.
+       Fix error in example.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       Move from lispref/ to doc/lispref/.  Change all setfilename
+       commands to use ../../info.
+       * Makefile.in (infodir): Go up one more level.
+       (usermanualdir): Change from ../man to ../emacs.
+       (miscmanualdir): New.
+       (dist): Use new variable miscmanualdir.
+       * makefile.w32-in (infodir, texinputdir): Go up one more level.
+       (usermanualdir): Change from ../man to ../emacs.
+
+2007-08-30  Martin Rudalics  <rudalics@gmx.at>
+
+       * commands.texi (Command Loop Info): Advise against changing
+       most variables described here.  Explain new variable
+       last-repeatable-command.
+
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi (EMACSVER): Increase to 23.0.50.
+
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * frames.texi (Basic Parameters): Add display-environment-variable
+       and term-environment-variable.
+
+2007-08-28  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Image Formats, Other Image Types): Add SVG.
+
+2007-08-28  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Images): Move formats-related text to new node
+       "Image Formats".
+       (Image Formats): New node.
+
+2007-08-27  Richard Stallman  <rms@gnu.org>
+
+       * windows.texi (Window Configurations): Clarify what
+       a window configuration saves.
+
+2007-08-25  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Images): Delete redundant @findex.
+
+2007-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * text.texi (Change Hooks): (after|before)-change-functions are no
+       longer bound to nil while running; rather inhibit-modification-hooks
+       is t.
+
+2007-08-16  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Asynchronous Processes):
+       Clarify doc of start-file-process.
+
+2007-08-08  Martin Rudalics  <rudalics@gmx.at>
+
+       * modes.texi (Example Major Modes): Fix typo.
+
+2007-08-08  Glenn Morris  <rgm@gnu.org>
+
+       * intro.texi (nil and t): Do not use `iff' in documentation.
+
+       * tips.texi (Documentation Tips): Recommend against `iff'.
+
+2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Image Cache): Document image-refresh.
+
+2007-08-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Size of Window): Document window-full-width-p.
+
+2007-07-25  Glenn Morris  <rgm@gnu.org>
+
+       * gpl.texi (GPL): Replace license with GPLv3.
+
+       * Relicense all FSF files to GPLv3 or later.
+
+2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Synchronous Processes):
+       Add `process-file-shell-command'.
+       (Asynchronous Processes): Mention restricted use of
+       `process-filter' and `process-sentinel' in
+       `start-file-process'.  Add `start-file-process-shell-command'.
+
+2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Introduce optional parameter
+       IDENTIFICATION for `file-remote-p'.
+
+2007-07-16  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Faces): Fix previous change.
+
+2007-07-14  Richard Stallman  <rms@gnu.org>
+
+       * control.texi (Handling Errors): Document `debug' in handler list.
+
+2007-07-10  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Faces): Explain C-M-x feature for defface.
+
+2007-07-09  Richard Stallman  <rms@gnu.org>
+
+       * files.texi (Magic File Names): Rewrite previous change.
+
+2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Introduce optional parameter
+       CONNECTED for `file-remote-p'.
+
+2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Asynchronous Processes):
+       * files.texi (Magic File Names): Add `start-file-process'.
+
+2007-06-27  Richard Stallman  <rms@gnu.org>
+
+       * files.texi (Format Conversion Piecemeal):
+       Clarify `after-insert-file-functions' calling convention.
+
+2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Remove `dired-call-process'.
+       Add `process-file'.
+
+2007-06-27  Kenichi Handa  <handa@m17n.org>
+
+       * text.texi (Special Properties): Fix description about
+       `composition' property.
+
+2007-06-26  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (Default Coding Systems): Document about the
+       return value `undecided'.
+
+2007-06-25  David Kastrup  <dak@gnu.org>
+
+       * keymaps.texi (Active Keymaps): Document new POSITION argument of
+       `current-active-maps'.
+
+2007-06-24  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text.
+
+2007-06-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Overlay Arrow): Doc fix.
+
+2007-06-14  Karl Berry  <karl@tug.org>
+
+       * anti.texi (Antinews): Typo.
+
+2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Image Cache): Document image-refresh.
+
+2007-06-12  Karl Berry  <karl@gnu.org>
+
+       * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update.
+       * two-volume.make: New file.
+       * .cvsignore: Ignore two-volume files.
+
+2007-06-12  Tom Tromey  <tromey@redhat.com>
+
+       * os.texi (Init File): Document user-emacs-directory.
+
+2007-06-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * commands.texi (Click Events): Describe width and height when
+       object is nil.
+
+2007-05-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * commands.texi (Click Events): Layout more logically.
+       Describe width and height.
+       (Drag Events, Motion Events): Update to new format for position.
+
+2007-06-02  Richard Stallman  <rms@gnu.org>
+
+       * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
+
+2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Version 22.1 released.
+
+2007-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * text.texi (Special Properties): Correct meaning of fontified face.
+
+2007-05-30  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Add link to Adjusting Point.
+
+2007-05-12  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Margins): indent-to-left-margin is not the default.
+       (Mode-Specific Indent): For indent-line-function, the default
+       is indent-relative.
+
+       * modes.texi (Example Major Modes): Explain last line of text-mode
+       is redundant.
+
+2007-05-10  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Scanning Keymaps): Update where-is-internal example.
+
+       * help.texi (Keys in Documentation): Add reference to
+       Documentation Tips.
+
+       * files.texi (Format Conversion): TO-FN gets three arguments.
+
+       * modes.texi (Auto Major Mode): Document file-start-mode-alist.
+
+2007-05-10  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * elisp.texi (Top): Remove "Saving Properties" from detailed menu.
+       * files.texi (Format Conversion): Expand intro; add menu.
+       (Format Conversion Overview, Format Conversion Round-Trip)
+       (Format Conversion Piecemeal): New nodes/subsections.
+       * hooks.texi: Xref "Format Conversion" , not "Saving Properties".
+       * text.texi (Text Properties): Remove "Saving Properties" from menu.
+       (Saving Properties): Delete node/subsection.
+
+2007-05-07  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi (EMACSVER): Back to 22.
+
+2007-05-06  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Accepting Output): Revert most of previous change.
+
+2007-05-05  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Accepting Output): accept-process-output
+       uses microseconds, not milliseconds.  But that arg is obsolete.
+
+2007-05-04  Karl Berry  <karl@tug.org>
+
+       * elisp.texi (EMACSVER) [smallbook]: 22.1, not 22.
+
+2007-05-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * tips.texi (Documentation Tips): Rearrange items to place the
+       more important ones first.  Add an index entry for hyperlinks.
+
+2007-05-03  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing.
+       (EMACSVER) [smallbook]: 22 for printed version.
+
+       * control.texi (Signaling Errors) <signal>: texinfo.tex is fixed,
+       so restore anchor to normal position after defun.  Found by Kevin Ryde.
+
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi (EMACSVER): Increase to 22.1.50.
+
+2007-04-28  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi: Improve line breaks on copyright page,
+       similar layout to emacs manual, 8.5x11 by default.
+
+2007-04-24  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Add xref to Overlay Properties.
+
+       * display.texi (Overlay Properties): Add xref to Special Properties.
+
+2007-04-22  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Extended Menu Items): Move the info about
+       format with cached keyboard binding.
+
+2007-04-21  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Clarify previous change.
+
+       * files.texi (File Name Expansion): Clarify previous change.
+
+       * display.texi (Attribute Functions): Fix example for
+       face-attribute-relative-p.
+
+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"
+       setups.
+       (Display Feature Testing): Note that display refers to all
+       physical monitors for multi-monitor setups.
+
+2007-04-14  Richard Stallman  <rms@gnu.org>
+
+       * lists.texi (Sets And Lists): Clarify `delete' examples.
+       Remove spurious xref to same node.
+       Clarify xref for add-to-list.
+
+2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * keymaps.texi (Format of Keymaps): Remove spurious ")" from
+       value of lisp-mode-map.
+
+2007-04-11  Karl Berry  <karl@gnu.org>
+
+       * anti.texi (Antinews):
+       * display.texi (Overlay Properties, Defining Images):
+       * processes.texi (Synchronous Processes, Sentinels):
+       * syntax.texi (Syntax Table Internals):
+       * searching.texi (Regexp Special):
+       * nonascii.texi (Default Coding Systems):
+       * text.texi (Special Properties):
+       * minibuf.texi (Basic Completion): Wording to improve breaks in
+       8.5x11 format.
+       * elisp.texi (smallbook): New @set to more easily switch between
+       smallbook and 8.5x11.
+
+2007-04-11  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Lazy Properties): Minor fix.
+
+2007-04-08  Karl Berry  <karl@gnu.org>
+
+       * symbols.texi (Plists and Alists): Period after "vs" in index entries.
+       * macros.texi (Backquote): Downcase Backquote in index entries for
+       consistency.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Adaptive Fill): Just describe default,
+       don't show it (since it contains non-ASCII chars).
+
+2007-04-07  Karl Berry  <karl@gnu.org>
+
+       * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in
+       adaptive-fill-regexp's value, since they are not in the standard
+       TeX fonts.
+
+2007-04-07  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * display.texi (Defining Faces): Fix example.
+
+2007-04-07  Karl Berry  <karl@gnu.org>
+
+       * display.texi (Button Buffer Commands): Improve page break.
+
+2007-04-07  Richard Stallman  <rms@gnu.org>
+
+       * advice.texi (Activation of Advice): Remove redundant index entry.
+
+       * backups.texi: Improve index entries.  Remove redundant ones.
+
+       * compile.texi (Byte Compilation): Improve index entry.
+
+       * hash.texi (Creating Hash): Improve index entry.
+
+       * symbols.texi (Definitions): Improve index entry.
+
+       * edebug.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * maps.texi (Standard Keymaps): Remove useless index entry.
+
+       * help.texi (Documentation Basics): Remove redundant index entries.
+
+       * customize.texi: Improve index entries.
+       Remove redundant/useless ones.
+
+       * locals.texi (Standard Buffer-Local Variables): Clarify intro text.
+
+       * streams.texi (Output Variables): Improve index entry.
+
+       * abbrevs.texi (Abbrevs): Remove useless index entry.
+
+       * macros.texi (Expansion): Remove useless index entry.
+
+       * text.texi: Improve index entries.  Remove redundant/useless ones.
+       (Text Properties, Examining Properties)
+       (Special Properties): Use "property category" instead of "category"
+       to refer to the `category' property.
+
+       * positions.texi: Improve index entries.  Remove useless one.
+
+       * lists.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * os.texi: Improve index entries.
+       (Timers): Fix previous change.
+
+       * buffers.texi: Improve index entries.
+       (Modification Time): Get rid of term "obsolete buffer".
+
+       * debugging.texi: Improve index entries.
+       (Test Coverage): Add xref to other test coverage ftr.
+
+       * eval.texi: Improve index entry.  Remove redundant ones.
+
+       * numbers.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * files.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * objects.texi: Improve index entries.
+
+       * processes.texi: Improve index entries.
+
+       * modes.texi: Improve index entry.  Remove redundant one.
+
+       * nonascii.texi: Improve index entries.
+
+       * internals.texi: Improve index entries.
+
+       * syntax.texi: Improve index entries.
+
+       * keymaps.texi (Active Keymaps): Improve index entries.
+
+       * commands.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * frames.texi: Improve index entries.  Remove redundant/useless ones.
+
+       * markers.texi: Improve index entries.  Remove redundant ones.
+
+       * tips.texi: Improve index entries.
+
+       * loading.texi (Unloading): Improve index entry.
+
+       * variables.texi: Improve index entries.  Remove redundant one.
+
+       * sequences.texi: Improve index entry.
+
+       * display.texi: Improve index entries.  Remove redundant ones.
+
+       * windows.texi: Improve index entries.
+
+       * searching.texi: Improve index entries.  Remove redundant one.
+
+       * strings.texi (Case Tables): Improve last change.
+
+2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * strings.texi (Case Tables): Document with-case-table and
+       ascii-case-table.
+
+2007-04-03  Karl Berry  <karl@gnu.org>
+
+       * processes.texi (Network): Reword to improve page break.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * functions.texi (Inline Functions): Describe more disadvantages
+       of defsubst, and make advice against it stronger.
+
+2007-04-02  Karl Berry  <karl@gnu.org>
+
+       * backups.texi (Backup Names): Avoid widow words.
+       * modes.texi (Example Major Modes): Align last comment.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Remapping Commands): Document new arg to
+       command-remapping.
+
+2007-04-01  Karl Berry  <karl@gnu.org>
+
+       * processes.texi (Low-Level Network): Typo.
+       * loading.texi (Hooks for Loading): Avoid double "the".
+       * keymaps.texi (Key Sequences): No double "and".
+       (Changing Key Bindings): Shorten to improve line break.
+
+2007-03-31  Glenn Morris  <rgm@gnu.org>
+
+       * os.texi (Timers): Fix description of run-at-time TIME formats.
+
+2007-03-31  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Invisible Text): Correct buffer-invisibility-spec
+       regarding ellipsis.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * intro.texi (nil and t):
+       * symbols.texi (Plists and Alists):
+       * variables.texi (Variable Aliases, Constant Variables):
+       * functions.texi (Defining Functions):
+       * advice.texi (Advising Primitives):
+       * debugging.texi (Syntax Errors, Compilation Errors):
+       * minibuf.texi (Minibuffer Windows):
+       * commands.texi (Adjusting Point):
+       * modes.texi (Syntactic Font Lock, Faces for Font Lock)
+       (Auto Major Mode, Major Mode Conventions):
+       * help.texi (Describing Characters):
+       * files.texi (Create/Delete Dirs, Information about Files)
+       (File Locks, Writing to Files, Reading from Files)
+       (Saving Buffers):
+       * windows.texi (Resizing Windows, Cyclic Window Ordering):
+       * frames.texi (Finding All Frames):
+       * positions.texi (Buffer End, Motion):
+       * markers.texi (The Region):
+       * text.texi (Deletion, Near Point):
+       * display.texi (Displaying Messages, Truncation):
+       * os.texi (Processor Run Time):
+       * tips.texi (Key Binding Conventions, Programming Tips)
+       (Warning Tips, Documentation Tips, Comment Tips):
+       * internals.texi (Memory Usage): Improve indexing.
+
+       * variables.texi (Frame-Local Variables):
+       * functions.texi (Argument List):
+       * loading.texi (Library Search):
+       * streams.texi (Output Variables):
+       * keymaps.texi (Translation Keymaps, Searching Keymaps):
+       * searching.texi (Replacing Match, Search and Replace):
+       * processes.texi (Byte Packing, Decoding Output)
+       (Accepting Output, Network Servers, Shell Arguments):
+       * display.texi (Abstract Display, Image Cache, Scroll Bars):
+       * windows.texi (Window Point, Window Start):
+       * frames.texi (Management Parameters, Frame Parameters, Frame Titles):
+       * commands.texi (Reading Input, Keyboard Events):
+       * minibuf.texi (Reading File Names, Minibuffer Completion)
+       (Recursive Mini):
+       * positions.texi (List Motion):
+       * hash.texi (Hash Tables, Creating Hash, Defining Hash):
+       * numbers.texi (Arithmetic Operations, Math Functions)
+       (Predicates on Numbers, Comparison of Numbers):
+       (Numeric Conversions):
+       * locals.texi (Standard Buffer-Local Variables):
+       * maps.texi (Standard Keymaps):
+       * os.texi (User Identification, System Environment, Recording Input)
+       (X11 Keysyms):
+       * nonascii.texi (Non-ASCII Characters, Splitting Characters):
+       * backups.texi (Backups and Auto-Saving):
+       * customize.texi (Customization, Group Definitions)
+       (Variable Definitions):
+       * compile.texi (Byte Compilation): Improve index entries.
+
+2007-03-31  Karl Berry  <karl@gnu.org>
+
+       * macros.texi (Defining Macros): Avoid widow syllable.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Postscript -> PostScript.
+
+       * display.texi (Images, Postscript Images): Postscript -> PostScript.
+
+2007-03-31  Markus Triska  <markus.triska@gmx.at>
+
+       * internals.texi (Writing Emacs Primitives): Untabify `For'.
+
+2007-03-30  Karl Berry  <karl@gnu.org>
+
+       * lists.texi (List-related Predicates): Remove spurious @need.
+       (Setcdr): Use @smallexample to improve page break.
+       (Association Lists) <assoc>: Reword to improve page break.
+
+       * strings.texi (String Conversion): Insert blank line to improve
+       page break.
+
+       * numbers.texi (Random Numbers): Use @minus{}.
+       (Math Functions): Use @minus{}.
+
+       * intro.texi (Acknowledgements): Avoid line breaks before middle
+       initials.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * errors.texi (Standard Errors): Add an index entry.
+
+2007-03-19  Richard Stallman  <rms@gnu.org>
+
+       * os.texi (Recording Input): recent-keys now gives 300 keys.
+
+2007-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * os.texi: Replace "daylight savings" with "daylight saving"
+       throughout.
+
+2007-03-05  Richard Stallman  <rms@gnu.org>
+
+       * variables.texi (File Local Variables):
+       Update enable-local-variables values.
+
+2007-03-04  Richard Stallman  <rms@gnu.org>
+
+       * syntax.texi (Control Parsing): Minor clarification.
+
+       * strings.texi (Formatting Strings): Clarify width, precision, flags.
+
+       * sequences.texi (Sequence Functions): Move string-bytes away,
+       add xref.
+
+       * nonascii.texi (Text Representations): Move string-bytes here.
+
+       * modes.texi (Major Mode Conventions): Fundamental mode is exception.
+
+       * minibuf.texi (Basic Completion): Minor clarification.
+
+       * markers.texi (The Mark): Clarify existence vs activation of mark.
+       Other cleanup.
+
+       * display.texi (Finding Overlays): Write better example.
+
+       * compile.texi (Eval During Compile): Clarify putting macros
+       in eval-when-compile.
+
+2007-02-25  Vinicius Jose Latorre  <viniciusjl@ig.com.br>  (tiny change)
+
+       * loading.texi (How Programs Do Loading): Fix anchor position at
+       load-read-function definition doc.
+
+2007-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * strings.texi (Text Comparison): Mention that assoc-string
+       converts symbols to strings before testing.
+
+2007-02-17  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Bindat Spec): Vector types can have optional
+       element type.
+       (Bindat Examples): Fix example.  Add vector with element type.
+
+2007-02-16  Andreas Schwab  <schwab@suse.de>
+
+       * strings.texi (Formatting Strings): Document '+' flag.
+
+2007-02-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * strings.texi (Modifying Strings): Clarify that `clear-string'
+       always converts the string to unibyte.
+
+2007-02-14  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Glyphs): Add make-glyph-code, glyph-char, glyph-face.
+       Rewrite glyph code description to refer to these functions.
+       Remove details of encoding face number and char into integer code.
+
+2007-02-03  Alan Mackenzie  <acm@muc.de>
+
+       * loading.texi (Hooks for Loading): Make the description of
+       `eval-after-load' more detailed, and amend the description of
+       after-load-alist, in accordance with changes from 2006-05.
+
+2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Defining Minor Modes): Document that a :require
+       keyword or similar may be required to make saved customization
+       variables work.
+
+2007-02-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Make the detailed menu headers compliant with
+       Texinfo guidelines and with what texnfo-upd.el expects.
+       Add comments to prevent people from inadvertently modifying the key
+       parts needed by `texinfo-multiple-files-update'.
+
+2007-02-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Update the top-level menus.
+
+       * syntax.texi (Categories): Add index entries.
+
+2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Attribute Functions): Fix name and description of
+       the UNDERLINE arg of `set-face-underline-p'.
+
+2007-01-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * elisp.texi (Top): Add "Standard Errors", "Standard Buffer-Local
+       Variables", and "Standard Keymaps" to the detailed menu.
+
+       * variables.texi (Future Local Variables): Add index entry.
+
+2007-01-28  Richard Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Clarify the tip about macros
+       that define a function or a variable.
+
+       * files.texi (File Attributes): UID and GID can be floats.
+       (Magic File Names): Explain why deferring all operations to
+       the standard handler does not work.
+
+2007-01-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * backups.texi (Reverting): Use "buffer" instead of "file"
+       when talking about major and minor modes.
+
+2007-01-21  Richard Stallman  <rms@gnu.org>
+
+       * help.texi (Documentation): Add xref to Documentation Tips.
+
+2007-01-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * tips.texi (Coding Conventions): Fix typos.
+
+2007-01-05  Richard Stallman  <rms@gnu.org>
+
+       * modes.texi (Defining Minor Modes): Fix previous change.
+
+2007-01-03  Richard Stallman  <rms@gnu.org>
+
+       * customize.texi (Variable Definitions, Customization Types):
+       Don't use * in doc string for defcustom.
+
+2007-01-02  Richard Stallman  <rms@gnu.org>
+
+       * variables.texi (Variable Aliases): Clarify that aliases vars
+       always have the same value.
+
+       * processes.texi (Bindat Spec): Fix Texinfo usage.
+
+       * modes.texi (Defining Minor Modes): Explain effect of command
+       defined with define-global-minor-mode on new buffers.
+
+2006-12-30  Kim F. Storm  <storm@cua.dk>
+
+       * keymaps.texi (Tool Bar): Describe `grow-only' value of
+       `auto-resize-tool-bars'.
+
+2006-12-30  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Active Keymaps): Fix previous change.
+
+2006-12-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * keymaps.texi (Active Keymaps): Make xref to lookup-key.
+
+2006-12-30  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Bindat Spec): Clarify using field names in
+       length specifications.
+
+2006-12-29  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Bindat Spec): Explain eval forms and lengths better.
+       Add count and index variables for eval forms in repeat blocks.
+
+2006-12-24  Richard Stallman  <rms@gnu.org>
+
+       * customize.texi (Variable Definitions):
+       Document new name custom-add-frequent-value.
+
+2006-12-19  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Misc Events): User signals now result in sigusr1
+       and sigusr2 events which are handled through special-event-map.
+       (Special Events): User signals and drag-n-drop are special.
+
+2006-12-17  Richard Stallman  <rms@gnu.org>
+
+       * loading.texi (Named Features): Explain subfeatures better.
+
+       * customize.texi: Use "option" only for user options.
+       For the keyword values inside defcustom etc, say "keywords".
+       For :options value's elements, say "elements".
+       :group should not be omitted.
+
+       * syntax.texi (Parsing Expressions): Split up node.
+       (Motion via Parsing, Position Parse, Parser State)
+       (Low-Level Parsing, Control Parsing): New subnodes.
+       (Parser State): Document syntax-ppss-toplevel-pos.
+
+       * positions.texi (List Motion): Punctuation fix.
+
+       * files.texi (File Name Completion): Document PREDICATE arg
+       to file-name-completion.
+
+2006-12-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * internals.texi (Building Emacs, Writing Emacs Primitives):
+       Add index entries.
+
+2006-12-11  Richard Stallman  <rms@gnu.org>
+
+       * modes.texi (Font Lock Basics): Explain how nil for font-lock-defaults
+       affects face menu.  Explain how to make it non-nil without enabling
+       any fontification.
+
+2006-12-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Font Lock Basics): Document nil value of
+       font-lock-defaults.
+
+2006-12-10  Glenn Morris  <rgm@gnu.org>
+
+       * abbrevs.texi (Defining Abbrevs): Mention `define-abbrev' 'force
+       value for system-flag argument.  Abbrev tables may not be empty
+       when major modes are loaded.
+
+2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (maintainer-clean): Partially revert last
+       change; delete "elisp-?" and "elisp-??" instead of "elisp-*"
+       to protect elisp-covers.texi.
+
+2006-12-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (maintainer-clean): Depend on `distclean'.
+       Don't remove elisp* info files; they are already deleted by the
+       `clean' and `distclean' targets, and they are in the $(infodir)
+       directory, not the current one.
+
+2006-12-04  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Misc Events): Update signal events.
+       (Event Examples): Add signal example.
+
+2006-11-29  Richard Stallman  <rms@gnu.org>
+
+       * frames.texi (Visibility of Frames): Explain visible windows
+       can be covered by others.  Add xref for raise-frame.
+
+2006-11-28  Richard Stallman  <rms@gnu.org>
+
+       * searching.texi (Regexp Special): Update when ^ is special.
+
+2006-11-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * customize.texi (Customization, Common Keywords)
+       (Group Definitions, Variable Definitions, Composite Types)
+       (Type Keywords, Customization Types): Add index entries for
+       various customization keywords.
+
+2006-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Multiline Font Lock): Rephrase some parts for clarity.
+
+2006-11-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * frames.texi (Window System Selections): Remove clipboard from
+       description of selection-coding-system.
+
+2006-11-06  Richard Stallman  <rms@gnu.org>
+
+       * lists.texi (List Variables): Document COMPARE-FN.
+
+       * keymaps.texi: Avoid use of "binding" to mean a relation;
+       use it only to refer to the meaning associated with a key.
+       (Keymaps): Change menu node description.
+
+       * elisp.texi (Top): Change menu node description.
+
+       * display.texi (Managing Overlays): Document overlay-recenter.
+
+2006-10-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Makefile.in: Use relative paths to avoid advertising filesystem
+       contents during compilation.
+
+2006-10-23  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Event Input Misc): Update unread-command-events.
+
+2006-10-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * lists.texi (Sets And Lists): Fix typos.
+
+2006-10-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * control.texi (Processing of Errors): Use @var for an argument,
+       not @code.
+
+2006-10-16  Richard Stallman  <rms@gnu.org>
+
+       * edebug.texi (Edebug Recursive Edit): Minor cleanup.
+
+       * keymaps.texi (Format of Keymaps): Show all the keymap element
+       patterns that result from menu items.
+       (Key Lookup): Minor cleanups.
+
+       * modes.texi (Precalculated Fontification): Don't say that
+       not setting font-lock-defaults avoids loading font-lock.
+
+       * help.texi (Documentation): Move xref to Emacs Manual here.
+       (Documentation Basics): From here.
+       Also doc emacs-lisp-docstring-fill-column.
+
+       * elisp.texi: Update version and ISBN.
+
+       * commands.texi (Interactive Call): Clarify KEYS arg to
+       call-interactively is a vector.
+       (Command Loop Info): Delete anchor in this-command-keys.
+       Add anchor in this-command-keys-vector.
+       (Recursive Editing): Document how recursive-edit
+       handles the current buffer.
+
+2006-10-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frames.texi (Frame Titles): %c and %l are ignored in
+       frame-title-format.
+
+2006-10-11  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Key Sequences): Clarify use of kbd.
+
+2006-10-10  Kim F. Storm  <storm@cua.dk>
+
+       * lists.texi (Sets And Lists): Add memql.
+
+2006-10-03  Richard Stallman  <rms@gnu.org>
+
+       * searching.texi (Char Classes): Document :multibyte: and :unibyte:.
+       Clarify :ascii: and :nonascii:.
+
+2006-09-29  Juri Linkov  <juri@jurta.org>
+
+       * modes.texi (%-Constructs): Reorder coding systems in the
+       documentation of %z to the real order displayed in the modeline.
+
+2006-09-25  Richard Stallman  <rms@gnu.org>
+
+       * os.texi (Timers): Describe timer-max-repeats.
+
+2006-09-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Timers): Mention with-local-quit.
+
+2006-09-24  Richard Stallman  <rms@gnu.org>
+
+       * searching.texi (Searching and Matching): Mention property search.
+
+       * commands.texi (Command Loop Info): Explain how read-event affects
+       this-command-keys.
+
+2006-09-20  Richard Stallman  <rms@gnu.org>
+
+       * os.texi (Timers): Clarify about REPEAT when timer is delayed.
+
+       * windows.texi (Window Start): Minor cleanups.
+
+2006-09-20  Kim F. Storm  <storm@cua.dk>
+
+       * windows.texi (Window Start): pos-visible-in-window-p allows
+       specifying t for position to mean "end of window".
+       Add window-line-height.
+
+       * anti.texi (Antinews): Mention window-line-height.
+
+2006-09-19  David Kastrup  <dak@gnu.org>
+
+       * keymaps.texi (Searching Keymaps): Small clarification.
+
+2006-09-18  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Creating Keymaps): Explain that keymap prompt strings
+       cause keyboard menus.
+       (Menu Keymaps): Likewise.
+       (Defining Menus, Keyboard Menus): Clarify.
+
+       * text.texi (Fields): Clarify explanation of constrain-to-field.
+
+2006-09-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * variables.texi (Tips for Defining): Fix a typo.
+
+2006-09-15  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Remapping Commands, Searching Keymaps)
+       (Active Keymaps): Clean up previous change.
+
+2006-09-15  Jay Belanger  <belanger@truman.edu>
+
+       * gpl.texi: Replace "Library Public License" by "Lesser Public
+       License" throughout.
+
+2006-09-15  David Kastrup  <dak@gnu.org>
+
+       * keymaps.texi (Active Keymaps): Adapt description to use
+       `get-char-property' instead `get-text-property'.  Explain how
+       mouse events change this.  Explain the new optional argument of
+       `key-binding' and its mouse-dependent lookup.
+       (Searching Keymaps): Adapt description similarly.
+       (Remapping Commands): Explain the new optional argument of
+       `command-remapping'.
+
+2006-09-14  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Searching Keymaps): Clarification.
+       (Active Keymaps): Refer to Searching Keymaps instead of duplication.
+
+2006-09-13  Richard Stallman  <rms@gnu.org>
+
+       * objects.texi (Character Type): Node split.
+       Add xref to Describing Characters.
+       (Basic Char Syntax, General Escape Syntax)
+       (Ctl-Char Syntax, Meta-Char Syntax): New subnodes.
+
+2006-09-11  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Display Table Format): Wording clarification.
+       (Glyphs): Clarifications.
+
+2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Active Keymaps): Mention that key-binding checks
+       local maps.
+
+2006-09-10  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Forcing Redisplay): Document return value of
+       function redisplay.
+
+2006-09-09  Richard Stallman  <rms@gnu.org>
+
+       * windows.texi (Window Hooks): Explain limits of
+       window-scroll-functions.
+
+       * display.texi (Fringe Indicators): Update for last change in
+       indicate-buffer-boundaries.
+
+2006-09-08  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Bindat Spec): Suggest names ending in -bindat-spec.
+
+2006-09-06  Kim F. Storm  <storm@cua.dk>
+
+       * frames.texi (Display Feature Testing): display-mm-dimensions-alist.
+
+       * windows.texi (Window Start): Update pos-visible-in-window-p.
+
+2006-09-04  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Accepting Output): Explain SECONDS=0 for
+       accept-process-output.
+
+       * os.texi (Idle Timers): Explain why timer functions should not
+       loop until (input-pending-p).
+
+2006-09-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (usermanualdir): New variable.
+       (elisp.dvi): Use it.
+
+2006-09-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * buffers.texi (Buffer Modification): Fix last change.
+
+2006-09-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * buffers.texi (Buffer Modification):
+       Document buffer-chars-modified-tick.
+
+2006-08-31  Richard Stallman  <rms@gnu.org>
+
+       * modes.texi (Syntactic Font Lock): Mention specific faces once again.
+
+2006-08-31  Richard Bielawski  <RBielawski@moneygram.com>  (tiny change)
+
+       * modes.texi (Syntactic Font Lock):
+       Mention font-lock-syntactic-face-function
+       instead of specific faces.
+
+2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Images): Add xrref to display-images-p.
+
+2006-08-28  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (Lisp and Coding Systems): Fix description of
+       detect-coding-region.
+
+2006-08-27  Michael Olson  <mwolson@gnu.org>
+
+       * processes.texi (Transaction Queues): Remove stray quote
+       character.
+
+2006-08-25  Richard Stallman  <rms@gnu.org>
+
+       * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value.
+       Add xref.
+
+2006-08-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Timers): Avoid waiting inside timers.
+
+2006-08-21  Lute Kamstra  <lute@gnu.org>
+
+       * Makefile.in: Use ../man/texinfo.tex to build elisp.dvi.
+
+2006-08-20  Richard Stallman  <rms@gnu.org>
+
+       * os.texi (Idle Timers): New node, split out from Timers.
+       Document current-idle-time.
+       * commands.texi (Reading One Event): Update xref.
+       * elisp.texi (Top): Update subnode menu.
+
+2006-08-16  Richard Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Extended Menu Items): Show format of cached
+       bindings in extended menu items.
+
+       * customize.texi (Variable Definitions): Explain when the
+       standard value expression is evaluated.
+
+2006-08-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Reading One Event): Explain idleness in
+       `read-event'.
+
+2006-08-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Near Point): Say "cursor" not "terminal cursor".
+       (Commands for Insertion): Remove split-line since it's not
+       relevant for Lisp programming.
+       (Yank Commands): Rewrite introduction.
+       (Undo): Clarify.
+       (Maintaining Undo): Clarify.  Document undo-ask-before-discard.
+       (Filling): Remove redundant comment.  Clarify return value of
+       current-justification.
+       (Margins): Minor clarifications.
+       (Adaptive Fill): Update default value of adaptive-fill-regexp.
+       (Sorting): Update definition of sort-lines.
+       (Columns): Clarify behavior of sort-columns.
+       (Indent Tabs): Link to Tab Stops in Emacs manual.
+       (Special Properties): Clarify.
+       (Clickable Text): Mention Buttons package.
+
+2006-08-12  Kevin Ryde  <user42@zip.com.au>
+
+       * os.texi (Time Parsing): Add %z to description of
+       format-time-string, as per docstring.  Add cross reference to
+       glibc manual for strftime.
+
+2006-08-08  Richard Stallman  <rms@gnu.org>
+
+       * modes.texi: Clean up wording in previous change.
+
+2006-08-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi (Hooks): Clarify.
+       (Major Mode Basics): Mention define-derived-mode explicitly.
+       (Major Mode Conventions): Rebinding RET is OK for some modes.
+       Mention change-major-mode-hook and after-change-major-mode-hook.
+       (Example Major Modes): Move to end of Modes section.
+       (Mode Line Basics): Clarify.
+       (Mode Line Data): Mention help-echo and local-map in strings.
+       Explain reason for treatment of non-risky variables.
+       (Properties in Mode): Clarify.
+       (Faces for Font Lock): Add font-lock-negation-char-face.
+
+2006-08-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * strings.texi (Formatting Strings): Warn against arbitrary
+       strings as first arg to `format'.
+
+2006-07-31  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * text.texi (Clickable Text): Mention `help-echo' text property.
+       Update intro, examples and associated explanations.
+
+2006-07-31  Richard Stallman  <rms@gnu.org>
+
+       * commands.texi: Update xrefs.
+       (Event Mod): New node, cut out from old Translating Input.
+
+       * maps.texi: Update xrefs.
+
+       * keymaps.texi (Translation Keymaps): New node.
+       Update xrefs from Translating Input to Translation Keymaps.
+
+       * elisp.texi (Top): Update subnode menu.
+
+       * display.texi (Face Functions): Fix explanations of FRAME=t or nil.
+
+       * os.texi (System Interface): Fix menu descriptions of some nodes.
+       (Translating Input): Node deleted.
+
+2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * modes.texi (Minor Mode Conventions): Update xref for add-to-list.
+
+       * lists.texi (Sets And Lists): Likewise.
+
+2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * text.texi (Fields): Mention POS
+       requirement when narrowing is in effect.
+
+2006-07-28  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Face Attributes): Simplify wording.
+       (Attribute Functions): Clarify meaning of new-frame default
+       attribute settings.
+
+       * customize.texi (Common Keywords): Document how to use
+       :package-version in a package not in Emacs.
+
+2006-07-28  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Reading One Event): Fix last change.
+
+2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Reading One Event): Document SECONDS argument for
+       read-event, read-char, and read-char-exclusive.
+
+2006-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Multiline Font Lock): Can't use jit-lock-defer-multiline
+       to ensure correct identification.
+
+2006-07-24  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Clickable Text): Clarify.
+
+       * sequences.texi (Vector Functions): Delete duplicate xref.
+
+       * objects.texi (Function Type): Clarify.
+
+       * modes.texi (Keymaps and Minor Modes): List punct chars for minor
+       modes.
+
+       * lists.texi (List Variables): New node.
+       Material moved from other nodes.
+
+       * variables.texi (Setting Variables): add-to-list and
+       add-to-ordered-list moved to List Variables node.
+
+2006-07-23  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * text.texi (Links and Mouse-1):
+       For mouse-on-link-p, expand on arg POS.
+
+2006-07-21  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Forcing Redisplay): Don't mention systems which
+       don't support sub-second timers for redisplay-preemption-period.
+
+       * os.texi (Terminal Output): Clarify text vs graphical terminal.
+
+2006-07-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * frames.texi (Input Focus): Document that focus-follows-mouse has
+       no effect on MS-Windows.
+
+2006-07-18  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Forcing Redisplay): Cleanups in previous change.
+
+       * processes.texi (Low-Level Network): Make menu more convenient.
+
+2006-07-18  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Forcing Redisplay): redisplay-preemption-period
+       only used on window systems.  Add xref to Terminal Output.
+
+       * os.texi (Terminal Output): baud-rate only controls preemption on
+       non-window systems.  Add xref to Forcing Redisplay.
+
+       * processes.texi (Low-Level Network): Rename node "Make Network"
+       to "Network Processes".
+
+2006-07-18  Karl Berry  <karl@gnu.org>
+
+       * variables.texi, functions.texi, customize.texi, loading.texi:
+       * edebug.texi, minibuf.texi: Fix page breaks through chapter 20.
+
+2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * commands.texi (Waiting): Document batch-mode sit-for behavior.
+
+2006-07-17  Richard Stallman  <rms@gnu.org>
+
+       * eval.texi, elisp.texi, text.texi: Use real doublequote inside menus.
+       Put period and comma inside quotes.
+
+       * loading.texi, markers.texi: Use real doublequote inside menus.
+
+       * windows.texi: Put point and comma inside quotes.
+       (Textual Scrolling): Use @samp for error message.
+
+       * variables.texi, tips.texi, syntax.texi, symbols.texi:
+       * strings.texi, streams.texi, processes.texi, os.texi:
+       * objects.texi, numbers.texi, modes.texi, minibuf.texi:
+       * lists.texi, keymaps.texi, intro.texi, hash.texi, internals.texi:
+       * gpl.texi, functions.texi, files.texi, frames.texi, doclicense.texi:
+       * display.texi, control.texi, commands.texi, buffers.texi, anti.texi:
+       Put point and comma inside quotes.
+
+       * control.texi (Processing of Errors): Add command-error-function.
+
+       * variables.texi (File Local Variables): Clarify that
+       file local variables make buffer-local bindings.
+
+       * modes.texi (Syntactic Font Lock): Give default for
+       font-lock-syntax-table.
+
+2006-07-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * text.texi (Special Properties): Clean up previous change.
+
+2006-07-16  Karl Berry  <karl@gnu.org>
+
+       * objects.texi, numbers.texi, strings.texi, lists.texi, hash.texi:
+       * control.texi: Fix bad page breaks through chapter 10 (control).
+
+       * anti.texi (Antinews): Reorder face-attribute fns to avoid
+       underfull hbox.
+
+2006-07-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * text.texi (Special Properties): Describe fontified text property
+       in relation to a character (not text).
+
+2006-07-15  Kim F. Storm  <storm@cua.dk>
+
+       * maps.texi (Standard Keymaps): Add xref for minibuffer maps.
+       Add apropos-mode-map, custom-mode-map, esc-map, global-map,
+       grep-mode-map, help-map, help-mode-map, kmacro-map, and tool-bar-map.
+
+       * anti.texi (Antinews): Mention redisplay function.
+       The kbd macro existed, but was not documented, before 22.x.
+       Function pos-visible-in-window-p is not new in 22.x, just enhanced.
+
+2006-07-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * display.texi (Displaying Messages): Add anchor.
+
+       * frames.texi (Dialog Boxes): Use it.
+
+2006-07-12  Richard Stallman  <rms@gnu.org>
+
+       * objects.texi (Frame Type): Explain nature of frames better.
+
+       * frames.texi (Frames): Explain nature of frames better.
+
+2006-07-12  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * tips.texi (Coding Conventions): Explain why use cl at compile time.
+
+2006-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frames.texi (Window System Selections): Mention scrap support for Mac.
+       Default value of x-select-enable-clipboard is t on Mac.
+
+       * os.texi (Getting Out): Suspending is not allowed on Mac, either.
+
+2006-07-11  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Forcing Redisplay): Add `redisplay' function.
+       Don't mention (sit-for -1) -- use (redisplay t) instead.
+
+       * commands.texi (Waiting): (sit-for -1) is no longer special.
+       (sit-for 0) is equivalent to (redisplay).
+       Iconifying/deiconifying no longer makes sit-for return.
+
+2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * display.texi (Buttons): Fix typo.
+
+       * index.texi, elisp.texi (New Symbols): Comment node out.
+
+2006-07-09  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Truncation): Clean up previous change.
+
+2006-07-08  Richard Stallman  <rms@gnu.org>
+
+       * commands.texi (Interactive Call): Use 3 as prefix in example
+       for execute-extended-command.
+
+       * display.texi (Attribute Functions): Move paragraph about
+       compatibility with Emacs < 21.
+
+2006-07-09  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Refresh Screen): Clarify force-window-update.
+       (Truncation): "Normally" indicated by fringe arrows.
+
+2006-07-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * windows.texi (Textual Scrolling, Resizing Windows):
+       * variables.texi (Constant Variables):
+       * text.texi (Buffer Contents, Deletion, Changing Properties)
+       (Property Search, Special Properties, Sticky Properties)
+       (Links and Mouse-1, Fields, Change Hooks):
+       * syntax.texi (Syntax Table Functions, Parsing Expressions)
+       (Categories):
+       * symbols.texi (Other Plists):
+       * streams.texi (Output Variables):
+       * processes.texi (Input to Processes, Query Before Exit):
+       * positions.texi (Word Motion, Text Lines, List Motion):
+       * os.texi (Init File, System Environment, Sound Output)
+       (Session Management):
+       * nonascii.texi (Text Representations, Character Sets)
+       (Chars and Bytes, Locales):
+       * modes.texi (Defining Minor Modes, Header Lines):
+       * minibuf.texi (Minibuffer Contents):
+       * markers.texi (Information from Markers):
+       * lists.texi (List Elements, Building Lists, Association Lists):
+       * keymaps.texi (Tool Bar):
+       * hash.texi (Creating Hash, Hash Access, Defining Hash, Other Hash):
+       * functions.texi (What Is a Function, Mapping Functions):
+       * frames.texi (Creating Frames, Parameter Access, Pointer Shape)
+       (Color Names, Text Terminal Colors, Display Feature Testing):
+       * files.texi (Visiting Functions, File Name Components)
+       (Unique File Names, Contents of Directories):
+       * display.texi (Forcing Redisplay, Displaying Messages)
+       (Temporary Displays, Font Selection, Auto Faces)
+       (Font Lookup, Fringe Indicators, Display Margins)
+       (Image Descriptors, Showing Images, Image Cache, Button Types)
+       (Making Buttons, Manipulating Buttons, Button Buffer Commands)
+       (Display Table Format, Glyphs):
+       * control.texi (Iteration):
+       * commands.texi (Command Loop Info, Adjusting Point):
+       * backups.texi (Making Backups, Auto-Saving):
+       Remove @tindex entries.
+
+2006-07-07  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Fringe Cursors): Fix typo.
+       (Customizing Bitmaps): Fix define-fringe-bitmap entry.
+       (Overlay Arrow): Default is overlay-arrow fringe indicator.
+
+2006-07-05  Richard Stallman  <rms@gnu.org>
+
+       * text.texi (Buffer Contents): Add example of text props
+       in result of buffer-substring.
+       (Text Properties): Explain better about use of specific property names.
+       (Property Search): Some cleanups; reorder some functions.
+
+       * keymaps.texi (Changing Key Bindings): Cleanup.
+       Add xref to Key Binding Conventions.
+
+       * display.texi (Attribute Functions): Add examples for
+       face-attribute-relative-p.
+
+       * tips.texi (Coding Conventions): Cleanup last change.
+
+2006-07-05  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi: Use @fonttextsize 10pt, a la emacs.texi.
+       Remove @setchapternewpage odd.
+       Result is 1013 pages, down from 1100.
+
+       * anti.texi, customize.texi, display.texi, internals.texi:
+       * minibuf.texi, modes.texi, tips.texi:
+       Fix overfull/underfull boxes.
+
+2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * edebug.texi (Instrumenting):
+       Add Edebug-specific findex for eval-buffer.
+       * loading.texi (Loading):
+       Replace eval-current-buffer with eval-buffer.
+
+2006-06-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * locals.texi (Standard Buffer-Local Variables): Update the list
+       of variables.
+
+2006-06-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * files.texi (File Name Completion): Point user to the node
+       "Reading File Names".
+
+2006-06-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (Contents of Directories): Document case-insensitive
+       behavior on respective filesystems.
+
+       * objects.texi (Character Type): Document that Emacs signals an
+       error for unsupported Unicode characters specified as \uNNNN.
+
+2006-06-19  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Bindat Spec): Clarify previous change.
+
+2006-06-16  Richard Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Better explain conventions
+       for definition constructs.
+
+       * text.texi (Special Properties): String value of `read-only'
+       serves as the error message.
+
+       * objects.texi (Character Type): Clarify prev. change.
+       (Non-ASCII in Strings): Mention \u and \U.
+
+       * commands.texi (Using Interactive): Explain problem of
+       markers, etc., in command-history.
+
+2006-06-14  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Waiting): Negative arg to sit-for forces
+       redisplay even if input is pending.
+
+       * display.texi (Forcing Redisplay): Use (sit-for -1) to force a
+       redisplay.  Remove incorrect example of binding redisplay-dont-pause
+       around (sit-for 0).
+
+2006-06-13  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Forcing Redisplay): Clarify previous change.
+
+2006-06-13  Romain Francoise  <romain@orebokech.com>
+
+       * display.texi (Forcing Redisplay): Fix typo.
+
+2006-06-13  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Forcing Redisplay): Add redisplay-preemption-period.
+
+2006-06-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Coding Conventions): Add `@end itemize'.
+
+2006-06-10  Richard Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Explain use of coding systems
+       to ensure one decoding for strings.
+
+2006-06-09  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * objects.texi (Character Type): Describe the \uABCD and \U00ABCDEF
+       syntax.
+
+2006-06-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * display.texi (Font Selection): Remove description of
+       clear-face-cache.
+
+       * compile.texi (Eval During Compile): Fix a typo.  Add index
+       entries for possible uses of eval-when-compile.
+
+2006-06-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * display.texi (Abstract Display): Fix typo.
+
+2006-06-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * minibuf.texi (Minibuffer History) <history-add-new-input>:
+       Reword variable's description.
+
+2006-06-01  Richard Stallman  <rms@gnu.org>
+
+       * windows.texi (Splitting Windows): Clarify splitting nonselected
+       window.
+
+2006-05-31  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Minibuffer History): Add history-add-new-input.
+
+2006-05-30  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Line Height): Fix errors in description of
+       default line height and line-height property.
+
+       * nonascii.texi (Default Coding Systems): Further clarification.
+
+2006-05-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * internals.texi (Pure Storage): Mention that an overflow in pure
+       space causes a memory leak.
+       (Garbage Collection): If there was an overflow in pure space,
+       `garbage-collect' returns nil.
+
+2006-05-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Default Coding Systems): Fix it some more.
+
+2006-05-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * nonascii.texi (Default Coding Systems): Fix last change.
+
+2006-05-29  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (find-operation-coding-system): Describe the new
+       argument format (FILENAME . BUFFER).
+
+2006-05-28  Richard Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Better explain reasons not to
+       advise other packages or use `eval-after-load'.
+
+2006-05-29  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Bindat Functions): Rename `pos' and `raw-data' to
+       `bindat-idx' and `bindat-raw' for clarity.
+
+2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * processes.texi (Bindat Spec): Expand on `repeat' handler.
+
+       * display.texi (Display): Add "Abstract Display" to menu.
+       (Abstract Display, Abstract Display Functions)
+       (Abstract Display Example): New nodes.
+       * elisp.texi (Top): Add "Abstract Display" to menu.
+
+2006-05-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Key Sequences): Link to input events definition.
+       (Format of Keymaps): Delete material duplicated in Keymap Basics.
+
+       * files.texi (Changing Files): Document updated argument list for
+       copy-file.
+
+2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * processes.texi (Bindat Functions): Explain term "total length".
+       Use it in bindat-length and bindat-pack descriptions.
+
+2006-05-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * tips.texi (Coding Conventions): Advise against using
+       eval-after-load in packages.  Add an index entry.
+
+2006-05-25  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Text from Minibuffer): Undocument keep-all.
+
+       * modes.texi (%-Constructs): Add %e, %z, %Z.
+
+2006-05-25  Richard Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode menu.
+
+       * keymaps.texi (Keymap Basics): New node, split out of Key Sequences.
+       (Keymaps): Update menu.
+
+2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Key Sequences): Some clarifications.
+
+2006-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * processes.texi (Bindat Functions): Say "unibyte string"
+       explicitly for bindat-unpack and bindat-pack descriptions.
+       (Bindat Examples): Don't call `string-make-unibyte' in example.
+
+2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymaps.texi (Key Sequences): Rename from Keymap Terminology.
+       Explain string and vector representations of key sequences.
+
+       * keymaps.texi (Changing Key Bindings):
+       * commands.texi (Interactive Codes):
+       * help.texi (Describing Characters): Refer to it.
+
+2006-05-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * frames.texi (Pointer Shape): @end table -> @end defvar.
+
+2006-05-22  Richard Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode menus.
+
+       * frames.texi (Pointer Shape): Node renamed from Pointer Shapes.
+       Contents rewritten; material from old Pointer Shape node moved here.
+
+       * display.texi (Pointer Shape): Node deleted.
+       (Image Descriptors): Minor cleanup.
+
+2006-05-21  Richard Stallman  <rms@gnu.org>
+
+       * syntax.texi (Parsing Expressions): Update info on which STATE
+       elements are ignored.
+
+2006-05-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * hooks.texi (Standard Hooks): Correct typo.
+
+       * gpl.texi (GPL): ifinfo -> ifnottex.
+
+2006-05-19  Michael Ernst  <mernst@alum.mit.edu>  (tiny change)
+
+       * searching.texi (Simple Match Data): Warn about match data being
+       set anew by every search.
+
+2006-05-17  Richard Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Minibuffer History): Clarify.
+
+       * searching.texi (Regexp Special): Clarify nested regexp warning.
+
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.texi (Minibuffer History): Update add-to-history.
+
+2006-05-15  Oliver Scholz  <epameinondas@gmx.de>  (tiny change)
+
+       * nonascii.texi (Explicit Encoding):
+       Fix typo (encoding<->decoding).
+
+2006-05-14  Richard Stallman  <rms@gnu.org>
+
+       * buffers.texi (Creating Buffers): Cleanup.
+
+       * files.texi (Visiting Functions): Rewrite in find-file-noselect.
+
+2006-05-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * buffers.texi (Current Buffer): Document that with-temp-buffer
+       disables undo.
+
+       * os.texi (Terminal-Specific): More accurate description of how
+       Emacs searches for the terminal-specific libraries.
+
+2006-05-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to
+       emacs-xtra to @inforef's.
+
+       * text.texi (Undo): Document that undo is turned off in buffers
+       whose names begin with a space.
+
+       * buffers.texi (Buffer Names): Add index entries for buffers whose
+       names begin with a space.
+       (Creating Buffers): Document that undo is turned off in buffers
+       whose names begin with a space.
+
+       * files.texi (Visiting Functions, Reading from Files)
+       (Saving Buffers): Mention code and EOL conversions by file I/O
+       primitives and subroutines.
+
+       * nonascii.texi (Lisp and Coding Systems): Document
+       coding-system-eol-type.  Add index entries for eol conversion.
+
+       * display.texi (Defining Faces): Mention `mac', and add an xref to
+       where window-system is described.
+
+2006-05-10  Richard Stallman  <rms@gnu.org>
+
+       * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules.
+
+2006-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * variables.texi (File Local Variables): Recommend to quote lambda
+       expressions in safe-local-variable property.
+
+2006-05-09  Richard Stallman  <rms@gnu.org>
+
+       * variables.texi (File Local Variables):
+       Document safe-local-eval-forms and safe-local-eval-function.
+
+2006-05-07  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.texi (Minibuffer History): Remove keep-dups arg
+       from add-to-history.
+
+2006-05-07  Romain Francoise  <romain@orebokech.com>
+
+       * commands.texi (Event Input Misc):
+       * compile.texi (Eval During Compile):
+       * internals.texi (Buffer Internals):
+       * minibuf.texi (Initial Input):
+       * nonascii.texi (Scanning Charsets):
+       * numbers.texi (Comparison of Numbers):
+       * windows.texi (Textual Scrolling, Vertical Scrolling):
+       Fix various typos.
+
+2006-05-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * hooks.texi (Standard Hooks): Replace inforef to emacs-xtra by
+       conditional xref's to either emacs or emacs-xtra, depending on
+       @iftex/@ifnottex.
+
+       * minibuf.texi (Minibuffer History): Document add-to-history.
+
+2006-05-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * internals.texi (Pure Storage): Mention the pure overflow message
+       at startup.
+
+2006-05-05  Johan Bockgård  <bojohan@dd.chalmers.se>
+
+       * keymaps.texi (Active Keymaps): Fix pseudo-Lisp syntax.
+       (Searching Keymaps): Fix pseudo-Lisp description of keymap
+       search.
+
+2006-05-01  Richard Stallman  <rms@gnu.org>
+
+       * intro.texi (nil and t): Clarify.
+
+       * variables.texi (File Local Variables): Suggest using booleanp.
+
+2006-05-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * objects.texi (Type Predicates): Fix typos.
+
+2006-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * intro.texi (nil and t): Add booleanp.
+
+       * objects.texi (Type Predicates): Add links for booleanp and
+       string-or-null-p.
+
+2006-04-29  Richard Stallman  <rms@gnu.org>
+
+       * modes.texi (Multiline Font Lock): Rename from
+       Multi line Font Lock Elements.  Much clarification.
+       (Font Lock Multiline, Region to Fontify): Much clarification.
+
+2006-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * variables.texi (File Local Variables): Remove the special case t for
+       safe-local-variable.
+
+2006-04-26  Richard Stallman  <rms@gnu.org>
+
+       * syntax.texi (Parsing Expressions): Minor cleanup.
+
+2006-04-18  Richard Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Explain when the package's
+       prefix should appear later on (not at the start of the name).
+
+       * searching.texi (String Search): Clarify effect of NOERROR.
+
+       * modes.texi (Imenu): Clarify what special items do.
+
+       * hooks.texi (Standard Hooks): Delete text about old hook names.
+
+2006-04-17  Romain Francoise  <romain@orebokech.com>
+
+       * variables.texi (Local Variables): Update the default value of
+       `max-specpdl-size'.
+
+2006-04-15  Michael Olson  <mwolson@gnu.org>
+
+       * processes.texi (Transaction Queues): Mention the new optional
+       `delay-question' argument for `tq-enqueue'.
+
+2006-04-13  Bill Wohler  <wohler@newt.com>
+
+       * customize.texi (Common Keywords): Use dotted notation for
+       :package-version value.  Specify its values.  Improve documentation
+       for customize-package-emacs-version-alist.
+
+2006-04-12  Bill Wohler  <wohler@newt.com>
+
+       * customize.texi (Common Keywords): Move description of
+       customize-package-emacs-version-alist to @defvar.
+
+2006-04-10  Bill Wohler  <wohler@newt.com>
+
+       * customize.texi (Common Keywords): Add :package-version.
+
+2006-04-10  Kim F. Storm  <storm@cua.dk>
+
+       * text.texi (Buffer Contents): Add NOPROPS arg to
+       filter-buffer-substring.
+
+2006-04-08  Kevin Ryde  <user42@zip.com.au>
+
+       * os.texi (Command-Line Arguments): Update xref to emacs manual
+       "Command Arguments" -> "Emacs Invocation", per change there.
+
+2006-04-08  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * display.texi (Other Display Specs): Arrange a @code{DOTTED-LIST} to
+       be on one line to help makeinfo not render two spaces after the dot.
+
+2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * strings.texi (Predicates for Strings): Add string-or-null-p.
+
+2006-03-28  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Accepting Output): Remove obsolete (and incorrect)
+       remarks about systems that don't support fractional seconds.
+
+2006-03-25  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi: Use @copyright{} instead of (C), and do not indent
+       the year list.
+
+2006-03-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * display.texi (Fringe Indicators): Fix typos.
+
+2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Documentation Tips): One can now also write `program'
+       in front of a quoted symbol in a docstring to prevent making a
+       hyperlink.
+
+2006-03-19  Alan Mackenzie  <acm@muc.de>
+
+       * text.texi (Special Properties): Clarify `fontified' property.
+
+2006-03-16  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Images): Minor cleanup.
+
+2006-03-16  Bill Wohler  <wohler@newt.com>
+
+       * display.texi (Defining Images): In image-load-path-for-library,
+       prefer user's images.
+
+2006-03-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Region to Fontify): Remove font-lock-lines-before.
+
+2006-03-15  Bill Wohler  <wohler@newt.com>
+
+       * display.texi (Defining Images): Fix example in
+       image-load-path-for-library by not recommending that one binds
+       image-load-path.  Just defvar it to placate compiler and only use
+       it if previously defined.
+
+2006-03-14  Bill Wohler  <wohler@newt.com>
+
+       * display.texi (Defining Images): In image-load-path-for-library,
+       always return list of directories.  Update example.
+
+2006-03-14  Alan Mackenzie  <acm@muc.de>
+
+       * modes.texi: New node, "Region to Fontify" (for Font Lock).
+       This describes font-lock-extend-region-function.
+       ("Other Font Lock Variables"): Move "font-lock-lines-before" to
+       the new node "Region to Fontify".
+
+2006-03-13  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Invisible Text): The impossible position is
+       now before the invisible text, not after.
+       (Defining Images): Clean up last change.
+
+2006-03-11  Bill Wohler  <wohler@newt.com>
+
+       * display.texi (Defining Images): Add image-load-path-for-library.
+
+2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * text.texi (Adaptive Fill): Fix Texinfo usage.
+
+       * strings.texi (Creating Strings): Fix Texinfo usage.
+
+       * searching.texi (Regexp Special): Use @samp for regular
+       expressions that are not in Lisp syntax.
+
+2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * searching.texi (Regexp Special): Put remark between parentheses
+       to avoid misreading.
+
+2006-03-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * searching.texi (Syntax of Regexps): More accurately describe
+       which characters are special in which situations.
+       (Regexp Special): Recommend _not_ to quote `]' or `-' when they
+       are not special.  Describe in detail when `[' and `]' are special.
+       (Regexp Backslash): Plenty of regexps with unbalanced square
+       brackets are valid, so reword that statement.
+
+2006-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * keymaps.texi (Tool Bar): Add tool-bar-border.
+
+2006-02-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loading.texi (Load Suffixes): Rephrase last paragraph.  Fix typos.
+
+2006-02-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * elisp.texi (Top): Include "Load Suffixes" in the detailed menu.
+
+       * files.texi (Locating Files): Suggest additional values for the
+       SUFFIXES arg of `locate-file'.  Update pxref.
+
+       * loading.texi (Loading): Include new node "Load Suffixes" in menu.
+       (How Programs Do Loading): Discuss the effects of Auto Compression
+       mode on `load'.
+       (Load Suffixes): New node.
+       (Library Search): Delete description of `load-suffixes'; it was
+       moved to "Load Suffixes".
+       (Autoload, Named Features): Mention `load-suffixes'.
+
+2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * display.texi (Fringe Indicators, Fringe Cursors): Fix typos.
+
+       * windows.texi (Window Tree): Fix typo.
+
+2006-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Fringe Indicators): New section.
+       Move indicate-empty-lines, indicate-buffer-boundaries, and
+       default-indicate-buffer-boundaries here.
+       Add fringe-indicator-alist and default-fringes-indicator-alist.
+       Add list of logical fringe indicator symbols.
+       Update list of standard bitmap names.
+       (Fringe Cursors): New section.
+       Move overflow-newline-into-fringe here.
+       Add fringe-cursor-alist and default-fringes-cursor-alist.
+       Add list of fringe cursor symbols.
+
+2006-02-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * commands.texi (Using Interactive): Fix reference to node
+       "Minibuffers".
+
+2006-02-19  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (High-Level Completion):
+       Add xref to read-input-method-name.
+
+       * files.texi (Relative File Names): Move file-relative-name here.
+       (File Name Expansion): From here.  Minor clarifications.
+
+       * commands.texi (Using Interactive): Add xrefs about reading input.
+       Clarify remarks about that moving point and mark.
+       Put string case before list case.
+
+2006-02-16  Johan Bockgård  <bojohan@dd.chalmers.se>
+
+       * display.texi (Other Display Specs, Image Descriptors):
+       Revert erroneous changes.  The previous description of
+       image-descriptors as `(image . PROPS)' was correct.
+
+2006-02-14  Richard M. Stallman  <rms@gnu.org>
+
+       * variables.texi (File Local Variables): Clarifications.
+
+2006-02-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * variables.texi (File Local Variables): Use @code for a cons
+       cell, not @var.
+
+2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * variables.texi (File Local Variables): Document new file local
+       variable behavior.
+
+2006-02-10  Kim F. Storm  <storm@cua.dk>
+
+       * eval.texi (Function Indirection): Add NOERROR to indirect-function.
+
+2006-02-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * modes.texi (%-Constructs): Remove obsolete info about
+       `global-mode-string'.
+
+2006-02-07  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Prefix Command Arguments): Minor cleanup.
+
+       * display.texi: "Graphical display", not window system.
+
+       * functions.texi (What Is a Function): Fix xref.
+
+       * keymaps.texi (Key Lookup): Clarify wrt commands vs other functions.
+       (Changing Key Bindings): Clarify when remapping is better than
+       substitute-key-definition.
+
+2006-02-02  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Basic Completion): Completion alists are risky.
+
+       * keymaps.texi (Active Keymaps): Clarifications.
+       (Searching Keymaps): New node.
+       (Keymaps): Update menu.
+
+       * frames.texi (Layout Parameters): Minor clarification.
+       (Drag and Drop): New node.
+       (Frames): Update menu.
+
+2006-01-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Other Display Specs, Image Descriptors):
+       Image description is a list, not a cons cell.
+
+2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Cons Cells): Minor correction (the cdr of a dotted
+       list is not necessarily a list).
+
+2006-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * frames.texi (Layout Parameters): border-width and
+       internal-border-width belong to the frame, not the window.
+
+2006-01-19  Richard M. Stallman  <rms@gnu.org>
+
+       * nonascii.texi (Translation of Characters): Search cmds use
+       translation-table-for-input.  Automatically made local.
+
+       * markers.texi (Overview of Markers): Count insertion type
+       as one of a marker's attributes.
+
+       * keymaps.texi (Controlling Active Maps): New node, split out of
+       Active Keymaps.
+       (Keymaps): Menu updated.
+       (Active Keymaps): Give pseudocode to explain how the active
+       maps are searched.  current-active-maps and key-binding moved here.
+       (Functions for Key Lookup): current-active-maps and key-binding moved.
+       Clarifications.
+       (Searching the Keymaps): New subnode.
+
+       * elisp.texi (Top): Menu clarification.
+
+       * display.texi (Other Display Specs): Delete duplicate entry for
+       just a string as display spec.  Move text about recursive display
+       specs on such a string.
+
+       * commands.texi (Key Sequence Input): Clarify.
+       Move num-nonmacro-input-events out.
+       (Reading One Event): num-nonmacro-input-events moved here.
+
+2006-01-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * advice.texi (Simple Advice): Update example to fit argument
+       change in previous-line.
+
+2006-01-05  Richard M. Stallman  <rms@gnu.org>
+
+       * markers.texi (The Mark): Fix in `mark'.
+
+2006-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * processes.texi (Misc Network, Make Network): Minor cleanups.
+
+2006-01-04  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Make Network): Add IPv6 addresses and handling.
+       (Network Feature Testing): Mention (:family ipv6).
+       (Misc Network): Add IPv6 formats to format-network-address.
+
+2005-12-30  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Changing Properties):
+       Don't use return value of set-text-properties.
+
+2005-12-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * modes.texi (Mode Line Format): Correct typo in menu.
+
+2005-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Mode Line Top): New node.
+       (Mode Line Data): Some text moved to new node.
+       Explain the data structure more concretely.
+       (Mode Line Basics): Clarifications.
+       (Mode Line Variables): Clarify intro paragraph.
+       (%-Constructs): Clarify intro paragraph.
+       (Mode Line Format): Update menu.
+
+2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.texi (Basic Completion): Update lazy-completion-table
+       examples for removal of ARGS argument.
+
+2005-12-23  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Undo): Restore some explanation from the version
+       that was deleted.
+
+2005-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * text.texi (Undo): Remove duplicate descriptions of `apply
+       funname' and `apply delta' elements of the undo list.
+
+2005-12-20  Richard M. Stallman  <rms@gnu.org>
+
+       * help.texi (Help Functions): Update documentation of `apropos'.
+
+2005-12-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * customize.texi (Type Keywords): Delete xref to "Text help-echo",
+       because it is confusing.  If the :help-echo keyword is a function,
+       it is not directly used as the :help-echo overlay property, as the
+       xref seems to suggest (it does not take the appropriate args).
+
+2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * customize.texi (Common Keywords): Fix Texinfo usage.
+       (Group Definitions, Variable Definitions): Update for new
+       conventions for using `*' in docstrings.
+
+       * tips.texi (Documentation Tips): Update for new conventions for
+       using `*' in docstrings.
+
+2005-12-16  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Minibuffer Contents): Minor cleanup.
+
+2005-12-16  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Minibuffer Contents): Add minibuffer-completion-contents.
+
+2005-12-14  Romain Francoise  <romain@orebokech.com>
+
+       * modes.texi (Customizing Keywords): Rename `append' to `how'.
+       Fix typo.
+
+2005-12-11  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Completion Commands): Add mention of read-file-name
+       for filename completion keymaps.
+       (Reading File Names): Add mention of filename completion keymaps
+       for read-file-name and xref to `Completion Commands'.
+
+2005-12-10  Richard M. Stallman  <rms@gnu.org>
+
+       * customize.texi (Common Keywords): State caveats for use of :tag.
+
+2005-12-08  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Intro to Minibuffers): Replace list of local maps
+       with xrefs and better explanation.
+       (Completion Commands): Add the filename completion maps.
+
+       * objects.texi (Character Type): Clarify that \s is not space
+       if a dash follows.
+
+2005-12-05  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Resizing Windows): Delete preserve-before args.
+
+2005-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymaps.texi (Format of Keymaps): Remove mention of a quirk
+       in full keymaps, since the quirk has been fixed.
+
+2005-12-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * hooks.texi (Standard Hooks): Add index entries.
+       Mention `compilation-finish-functions'.
+
+2005-11-27  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Resizing Windows): Add adjust-window-trailing-edge.
+
+2005-11-21  Juri Linkov  <juri@jurta.org>
+
+       * customize.texi (Common Keywords): Update links types
+       custom-manual and url-link.  Add link types emacs-library-link,
+       file-link, function-link, variable-link, custom-group-link.
+
+2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi: Revert 2005-11-20 change.
+
+2005-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * processes.texi (Bindat Functions):
+       Say "third" to refer to zero-based index "2".
+
+2005-11-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loading.texi (Library Search): Update the default value of
+       `load-suffixes'.
+
+2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Attribute Functions): Mention :ignore-defface.
+
+2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode.
+       (Minor Mode Conventions): Mention the use of a hook.
+
+2005-11-06  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Magic File Names): find-file-name-handler checks the
+       `operations' property of the handler.
+
+2005-11-03  Richard M. Stallman  <rms@gnu.org>
+
+       * variables.texi (Frame-Local Variables): Small clarification.
+
+2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * os.texi (Init File): Document ~/.emacs.d/init.el.
+
+2005-10-29  Richard M. Stallman  <rms@gnu.org>
+
+       * internals.texi (Garbage Collection): Document memory-full.
+
+2005-10-28  Bill Wohler  <wohler@newt.com>
+
+       * tips.texi (Documentation Tips): Help mode now creates hyperlinks
+       for URLs.
+
+2005-10-28  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Completion Commands): Clean up prev change.
+
+2005-10-26  Kevin Ryde  <user42@zip.com.au>
+
+       * compile.texi (Eval During Compile): Explain recommended uses
+       of eval-when-compile and eval-and-compile.
+
+2005-10-27  Masatake YAMATO  <jet@gyve.org>
+
+       * minibuf.texi (Completion Commands):
+       Write about new optional argument for `display-completion-list'.
+
+2005-10-23  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Arrow): Clarify about local bindings of
+       overlay-arrow-position.
+
+2005-10-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * internals.texi (Building Emacs): Fix last change.
+
+2005-10-22  Richard M. Stallman  <rms@gnu.org>
+
+       * internals.texi (Building Emacs): Document eval-at-startup.
+
+2005-10-21  Richard M. Stallman  <rms@gnu.org>
+
+       * loading.texi (Where Defined): load-history contains abs file names.
+       symbol-file returns abs file names.
+
+2005-10-19  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Showing Images): Add max-image-size integer value.
+
+2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Showing Images): Document max-image-size.
+
+2005-10-17  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Quitting): Minor clarification.
+
+       * processes.texi (Sentinels): Clarify about output and quitting.
+       (Filter Functions): Mention with-local-quit.
+
+2005-10-17  Juri Linkov  <juri@jurta.org>
+
+       * buffers.texi (Current Buffer):
+       * commands.texi (Event Input Misc):
+       * compile.texi (Eval During Compile, Compiler Errors):
+       * customize.texi (Group Definitions):
+       * display.texi (Progress, Defining Faces):
+       * files.texi (Writing to Files):
+       * modes.texi (Mode Hooks, Defining Minor Modes):
+       * streams.texi (Output Functions):
+       * syntax.texi (Syntax Table Functions):
+       * text.texi (Change Hooks):
+       Replace `...' with `@dots{}' in `@defmac' and `@defspec'.
+
+       * commands.texi (Quitting): Replace arg `forms' with `body' in
+       `with-local-quit'.
+
+       * positions.texi (Excursions): Replace arg `forms' with `body' in
+       `save-excursion'.
+
+2005-10-08  Kim F. Storm  <storm@cua.dk>
+
+       * windows.texi (Window Tree): Rename window-split-tree to window-tree.
+       Rename manual section accordingly.
+
+2005-10-04  Kim F. Storm  <storm@cua.dk>
+
+       * windows.texi (Window Split Tree): New section describing
+       new function window-split-tree function.
+
+2005-10-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * display.texi (Fringe Size/Pos): Simplify and add detail.
+
+2005-09-30  Romain Francoise  <romain@orebokech.com>
+
+       * minibuf.texi (High-Level Completion): Explain that the prompt
+       given to `read-buffer' should end with a colon and a space.
+       Update usage examples.
+
+2005-09-29  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Displaying Messages): Rename argument name
+       `string' to `format-string' in functions `message', `message-box',
+       `message-or-box'.
+
+2005-09-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * errors.texi (Standard Errors): Correct xrefs.
+
+2005-09-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Defining Images): Update documentation for
+       `image-load-path'.
+
+2005-09-17  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Images): Clean up previous change.
+
+2005-09-16  Romain Francoise  <romain@orebokech.com>
+
+       * elisp.texi: Specify GFDL version 1.2.
+
+       * doclicense.texi (GNU Free Documentation License): Update to
+       version 1.2.
+
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Defining Images): Document `image-load-path'.
+
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+       * objects.texi (Printed Representation): Minor cleanup.
+       (Box Diagrams): Minor fix.
+       (Cons Cell Type): Move (...) index item here.
+       (Box Diagrams): From here.
+       (Array Type): Minor fix.
+       (Type Predicates): Delete index "predicates".
+       (Hash Table Type): Clarify xref.
+       (Dotted Pair Notation): Minor fix.
+
+2005-09-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.texi (Saving Buffers): Fix typo.
+
+2005-09-08  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Programming Tips): Correct the "default" prompt spec.
+
+2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * locals.texi (Standard Buffer-Local Variables): Don't include
+       mode variables for minor modes.
+       Fix xrefs for buffer-display-count, buffer-display-table,
+       buffer-offer-save, buffer-saved-size, cache-long-line-scans,
+       enable-multibyte-characters, fill-column, header-line-format,
+       left-fringe-width, left-margin, and right-fringe-width.
+
+       * hooks.texi (Standard Hooks): All hooks should conform to the
+       standard naming convention now.
+       Fix xref for `echo-area-clear-hook'.
+
+       * display.texi (Usual Display): Note that indicate-empty-lines and
+       tab-width are buffer-local.
+
+       * files.texi (Saving Buffers): Add xref to `Killing Buffers'.
+
+       * modes.texi (Mode Help): Note that major-mode is buffer-local.
+
+       * nonascii.texi (Encoding and I/O): Note that
+       buffer-file-coding-system is buffer-local.
+
+       * positions.texi (List Motion): Note that defun-prompt-regexp is
+       buffer-local.
+
+       * text.texi (Auto Filling): Note that auto-fill-function is
+       buffer-local.
+       (Undo): Note that buffer-undo-list is buffer-local.
+
+       * windows.texi (Buffers and Windows):
+       Document buffer-display-count.
+
+2005-09-06  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Sometimes it is ok to put the
+       package prefix elsewhere than at the start of the name.
+
+2005-09-03  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Programming Tips): Add conventions for minibuffer
+       questions and prompts.
+
+2005-09-03  Joshua Varner  <jlvarner@gmail.com>  (tiny change)
+
+       * intro.texi (nil and t): Minor cleanup.
+       Delete spurious mention of keyword symbols.
+       (Evaluation Notation): Add index entry.
+       (A Sample Function Description): Minor cleanup.
+       (A Sample Variable Description): Not all vars can be set.
+
+2005-09-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * text.texi (Buffer Contents): Use "\n" in examples' result strings.
+
+       (Insertion): Document precise type of `insert-char' arg COUNT.
+
+2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * modes.texi (Other Font Lock Variables): Sync the default of
+       font-lock-lines-before.
+
+2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Add `make-auto-save-file-name'.
+
+2005-08-29  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode menu.
+
+       * searching.texi (Searching and Matching): Move node.
+       Rearrange contents and add overall explanation.
+       (Searching and Case): Move node.
+       (Searching and Matching): Update menu.
+
+2005-08-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * os.texi (Startup Summary): Fix the description of the initial
+       startup message display.
+
+2005-08-25  Richard M. Stallman  <rms@gnu.org>
+
+       * searching.texi (Search and Replace): Add replace-regexp-in-string.
+
+2005-08-25  Emilio C. Lopes  <eclig@gmx.net>
+
+       * display.texi (Finding Overlays): Fix `find-overlay-prop' in
+       `next-overlay-change' example.
+
+2005-08-22  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Attribute Functions): Add set-face-inverse-video-p.
+       Fix invert-face.  Fix args of face-background.
+
+       * display.texi (Standard Faces): Delete node.
+       (Faces): Add xref to `(emacs)Standard Faces'.
+       (Displaying Faces): Fix xref to `Standard Faces'.
+
+       * modes.texi (Mode Line Data): Fix xref to Standard Faces.
+
+2005-08-20  Alan Mackenzie  <acm@muc.de>
+
+       * buffers.texi (The Buffer List): Clarify the manipulation of the
+       buffer list.
+
+2005-08-14  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Auto Major Mode): interpreter-mode-alist key is not
+       a regexp.
+
+2005-08-11  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode lists.
+
+       * display.texi (Inverse Video): Node deleted.
+
+       * tips.texi (Key Binding Conventions, Programming Tips, Warning Tips):
+       New nodes split out of Coding Conventions.
+
+       * searching.texi (Regular Expressions): Document re-builder.
+
+       * os.texi (Time Parsing): New node split out of Time Conversion.
+
+       * processes.texi (Misc Network, Network Feature Testing)
+       (Network Options, Make Network): New nodes split out of
+       Low-Level Network.
+
+2005-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * frames.texi (Geometry): New node, split from Size and Position.
+       (Frame Parameters): Refer to Geometry.
+
+       * buffers.texi (The Buffer List): Fix xrefs.
+
+       * windows.texi (Splitting Windows): Fix xref.
+
+       * frames.texi (Layout Parameters): Add xref.
+
+       * display.texi (Line Height, Scroll Bars): Fix xrefs.
+
+       * keymaps.texi (Menu Bar): Fix xref.
+
+       * locals.texi (Standard Buffer-Local Variables): Fix xref.
+
+       * modes.texi (%-Constructs): Fix xref.
+
+       * frames.texi (Window Frame Parameters): Node split up.
+       (Basic Parameters, Position Parameters, Size Parameters)
+       (Layout Parameters, Buffer Parameters, Management Parameters)
+       (Cursor Parameters, Color Parameters): New subnodes.
+
+2005-08-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * positions.texi (Screen Lines): Update xref for previous change
+       in minibuf.texi.
+
+       * minibuf.texi (Intro to Minibuffers): Update pxref for previous
+       change in minibuf.texi.
+
+2005-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Minor cleanup.
+
+       * modes.texi (Defining Minor Modes): Explain when init-value
+       can be non-nil.
+
+       * elisp.texi (Top): Update submenu for Minibuffer.
+
+       * minibuf.texi (Minibuffer Misc): Node split up.
+       (Minibuffer Commands, Minibuffer Windows, Minibuffer Contents)
+       (Recursive Mini): New nodes split out from Minibuffer Misc.
+       (Minibuffer Misc): Document max-mini-window-height.
+
+       * hash.texi (Defining Hash): Delete stray paren in example.
+
+       * display.texi (Echo Area Customization): Don't define
+       max-mini-window-height here; xref instead.
+
+       * commands.texi (Event Input Misc): Update while-no-input.
+
+       * advice.texi (Advising Functions): Explain when to use advice
+       and when to use a hook.
+
+2005-07-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (info): Don't run install-info.
+       ($(infodir)/dir): New target, produced by running install-info.
+
+2005-07-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * modes.texi (Defining Minor Modes): The keyword for the initial
+       value is :init-value, not :initial-value.
+
+2005-07-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * loading.texi (Autoload): Make the `doctor' example be consistent
+       with what's in current loaddefs.el.  Describe the "fn" magic in
+       the usage portion of the doc string.
+
+2005-07-22  Richard M. Stallman  <rms@gnu.org>
+
+       * internals.texi (Garbage Collection): Clarify previous change.
+
+2005-07-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * internals.texi (Garbage Collection): Add gc-cons-percentage.
+
+2005-07-18  Juri Linkov  <juri@jurta.org>
+
+       * commands.texi (Accessing Events):
+       * frames.texi (Text Terminal Colors, Resources):
+       * markers.texi (The Mark):
+       * modes.texi (Defining Minor Modes):
+       Delete duplicate duplicate words.
+
+2005-07-16  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Managing Overlays): Clarify make-overlay
+       args for insertion types.
+
+2005-07-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * customize.texi (Variable Definitions):
+       Add `custom-initialize-safe-set' and `custom-initialize-safe-default'.
+       `standard-value' is a list too.
+       (Defining New Types): Use @key{RET} instead of @key{ret}.
+
+2005-07-13  Francis Litterio  <franl@world.std.com>  (tiny change)
+
+       * os.texi (Translating Input): Fix typo.
+
+2005-07-08  Richard M. Stallman  <rms@gnu.org>
+
+       * README: Update edition number and size estimate.
+
+       * elisp.texi (VERSION): Set to 2.9.
+
+2005-07-07  Richard M. Stallman  <rms@gnu.org>
+
+       * book-spine.texinfo: Update Emacs version.
+
+       * display.texi (Inverse Video): Delete mode-line-inverse-video.
+
+2005-07-06  Richard M. Stallman  <rms@gnu.org>
+
+       * searching.texi (Regexp Search): Clarify what re-search-forward
+       does when the search fails.
+
+2005-07-05  Lute Kamstra  <lute@gnu.org>
+
+       * Update FSF's address in GPL notices.
+
+       * doclicense.texi (GNU Free Documentation License):
+       * gpl.texi (GPL):
+       * tips.texi (Coding Conventions, Library Headers):
+       * vol1.texi:
+       * vol2.texi: Update FSF's address.
+
+2005-07-04  Richard M. Stallman  <rms@gnu.org>
+
+       * hooks.texi (Standard Hooks): Add occur-hook.
+
+2005-07-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi (The Echo Area): Correct menu.
+
+2005-07-03  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode menu for Display.
+
+       * display.texi (Displaying Messages): New node, with most
+       of what was in The Echo Area.
+       (Progress): Move under The Echo Area.
+       (Logging Messages): New node with new text.
+       (Echo Area Customization): New node, the rest of what was
+       in The Echo Area.  Document message-truncate-lines with @defvar.
+       (Display): Update menu.
+
+       * windows.texi (Textual Scrolling): Doc 3 values for
+       scroll-preserve-screen-position.
+
+       * text.texi (Special Properties): Change hook functions
+       should bind inhibit-modification-hooks around altering buffer text.
+
+       * keymaps.texi (Key Binding Commands): Call binding BINDING
+       rather than DEFINITION.
+
+2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * variables.texi (Defining Variables): `user-variable-p' returns t
+       for aliases of user options, nil for alias loops.
+
+2005-06-28  Richard M. Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
+       make-keymap.
+
+2005-06-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * variables.texi (Setting Variables): Correct and clarify
+       description of `add-to-ordered-list'.
+
+2005-06-26  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Faces): Minor cleanup.
+
+2005-06-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi (Faces): `facep' returns t for strings that are
+       face names.
+
+2005-06-25  Richard M. Stallman  <rms@gnu.org>
+
+       * objects.texi (Equality Predicates): Clarify meaning of equal.
+
+       * windows.texi (Selecting Windows): save-selected-window
+       and with-selected-window save and restore the current buffer.
+
+2005-06-24  Richard M. Stallman  <rms@gnu.org>
+
+       * numbers.texi (Float Basics): Explain how to test for NaN,
+       and printing the sign of NaNs.
+
+2005-06-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (MAKEINFO): Use --force.
+
+2005-06-23  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Face Functions): Correct Texinfo usage.
+
+2005-06-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Rings): `ring-elements' now returns the elements of
+       RING in order.
+
+2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * markers.texi (The Mark): Texinfo usage fix.
+
+2005-06-23  Kim F. Storm  <storm@cua.dk>
+
+       * searching.texi (Entire Match Data): Remove evaporate option for
+       match-data.  Do not mention evaporate option for set-match-data.
+
+2005-06-22  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * display.texi (Face Functions): Mention face aliases.
+
+2005-06-21  Richard M. Stallman  <rms@gnu.org>
+
+       * anti.texi (Antinews): Texinfo usage fix.
+
+2005-06-21  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi: Use @copying.
+
+       * elisp.texi: Put @summarycontents and @contents before the Top
+       node, instead of the end of the file, so that the contents appear
+       in the right place in the dvi/pdf output.
+
+2005-06-21  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Defining Faces): Add `customized-face'.
+
+2005-06-20  Kim F. Storm  <storm@cua.dk>
+
+       * variables.texi (Setting Variables): Any type of element can be
+       given order in add-to-ordered-list.  Compare elements with eq.
+
+       * lists.texi (Rearrangement): Sort predicate may just return non-nil.
+
+2005-06-20  Karl Berry  <karl@gnu.org>
+
+       * syntax.texi (Syntax Flags): Make last column very slightly wider
+       to avoid "generic comment" breaking on two lines and causing an
+       underfull box.
+
+2005-06-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Rings): Various minor clarifications and corrections.
+
+2005-06-18  Richard M. Stallman  <rms@gnu.org>
+
+       * functions.texi (Obsolete Functions): Simplify.
+
+       * variables.texi (Variable Aliases): Simplify.
+
+       * anti.texi, backups.texi, compile.texi, customization.texi:
+       * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi:
+       * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi:
+       * os.texi, processes.texi, searching.texi, strings.texi, text.texi:
+       * variables.texi: Fix formatting ugliness.
+
+       * elisp.texi: Add links to Rings and Byte Packing.
+       Update version and copyright years.
+
+       * minibuf.texi: Fix formatting ugliness.
+       (Completion Commands): Move keymap vars to the end
+       and vars completing-read binds to the top.
+
+2005-06-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * processes.texi: Fix typos.
+       (Bindat Spec): Correct Texinfo error.
+       (Byte Packing): Fix ungrammatical sentence.
+
+2005-06-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * lists.texi (Rings): New node.
+       (Lists): Add it to menu.
+
+       * processes.texi (Byte Packing): New node.
+       (Processes): Add it to menu.
+
+2005-06-17  Richard M. Stallman  <rms@gnu.org>
+
+       * syntax.texi (Parsing Expressions): Fix texinfo usage.
+
+       * help.texi (Documentation Basics): Explain the xref to
+       Documentation Tips.
+
+       * debugging.texi (Debugger Commands): Minor fix.
+
+2005-06-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * edebug.texi (Instrumenting): Eliminate duplicate link.
+       (Specification List): Replace references to "below", referring to
+       a later node, with one @ref to that node.
+
+       * os.texi (Timers): Timers should save and restore the match data
+       if they change it.
+
+       * debugging.texi (Debugger Commands): Mention that the Lisp
+       debugger can not step through primitive functions.
+
+2005-06-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * functions.texi (Obsolete Functions): Update argument names of
+       `make-obsolete' and `define-obsolete-function-alias'.
+
+       * variables.texi (Variable Aliases): Update argument names of
+       `defvaralias', `make-obsolete-variable' and
+       `define-obsolete-variable-alias'.
+
+2005-06-15  Kim F. Storm  <storm@cua.dk>
+
+       * searching.texi (Entire Match Data): Rephrase warnings about
+       evaporate arg to match-data and set-match-data.
+
+2005-06-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * elisp.texi (Top): Update detailed menu.
+
+       * edebug.texi (Edebug): Update menu.
+       (Instrumenting): Update xrefs.
+       (Edebug Execution Modes): Correct xref.
+       (Jumping): Clarify description of `h' command.
+       Eliminate redundant @ref.
+       (Breaks): New node.
+       (Breakpoints): Is now a subsubsection.
+       (Global Break Condition): Mention `C-x X X'.
+       (Edebug Views): Clarify `v' and `p'.  Mention `C-x X w'.
+       (Trace Buffer): Clarify STRING arg of `edebug-tracing'.
+       (Edebug Display Update): Correct pxref.
+       (Edebug and Macros): New node.
+       (Instrumenting Macro Calls): Is now a subsubsection.
+       Neither arg of `def-edebug-spec' is evaluated.
+       (Instrumenting Macro Calls): Mention `edebug-eval-macro-args'.
+       (Specification Examples): Fix typo.
+
+2005-06-14  Lute Kamstra  <lute@gnu.org>
+
+       * debugging.texi (Function Debugging): Primitives can break on
+       entry too.
+
+2005-06-14  Kim F. Storm  <storm@cua.dk>
+
+       * variables.texi (Setting Variables): Add add-to-ordered-list.
+
+2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.texi (Parsing Expressions): Document aux functions and vars of
+       syntax-ppss: syntax-ppss-flush-cache and syntax-begin-function.
+
+2005-06-13  Lute Kamstra  <lute@gnu.org>
+
+       * text.texi (Special Properties): Fix cross reference.
+
+2005-06-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * debugging.texi (Function Debugging): Delete mention of empty
+       string argument to `cancel-debug-on-entry'.  Delete inaccurate
+       description of the return value of that command.
+
+2005-06-11  Alan Mackenzie  <acm@muc.de>
+
+       * text.texi (Adaptive Fill): Amplify the description of
+       fill-context-prefix.
+
+2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * syntax.texi (Parsing Expressions): Fix Texinfo error.
+
+2005-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.texi (Parsing Expressions): Document syntax-ppss.
+
+2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * debugging.texi (Error Debugging): Minor rewording.
+       (Function Debugging): FUNCTION-NAME arg to `cancel-debug-on-entry'
+       is optional.
+
+2005-06-10  Lute Kamstra  <lute@gnu.org>
+
+       * elisp.texi: Use EMACSVER to refer to the current version of Emacs.
+       (Top): Give it a title.  Correct version number.  Give the
+       detailed node listing a more prominent header.
+       * intro.texi: Don't set VERSION here a second time.
+       Mention Emacs's version too.
+       * anti.texi (Antinews): Use EMACSVER to refer to the current
+       version of Emacs.
+
+2005-06-09  Kim F. Storm  <storm@cua.dk>
+
+       * searching.texi (Entire Match Data): Explain new `reseat' argument to
+       match-data and set-match-data.
+
+2005-06-08  Richard M. Stallman  <rms@gnu.org>
+
+       * searching.texi (Entire Match Data): Clarify when match-data
+       returns markers and when integers.
+
+       * display.texi (Defining Faces): Explain that face name should not
+       end in `-face'.
+
+       * modes.texi (Mode Line Data): Minor cleanup.
+       (Customizing Keywords): Node split out of Search-based Fontification.
+       Add example of using font-lock-add-keywords from a hook.
+       Clarify when MODE should be non-nil, and when nil.
+
+2005-06-06  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Mode Line Data): Explain what happens when the car
+       of a list is a void symbol.
+       (Search-based Fontification): Explain MODE arg to
+       font-lock-add-keywords and warn about calls from major modes.
+
+2005-06-08  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Standard Faces): Add `shadow' face.
+
+2005-05-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * modes.texi (Major Mode Conventions): A derived mode only needs
+       to put the call to the parent mode inside `delay-mode-hooks'.
+
+2005-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook is
+       new, and what that implies.  Clarify.
+
+       * files.texi (Locating Files): Clean up the text.
+
+       * frames.texi (Window Frame Parameters): Document user-size.
+       Shorten entry for top by referring to left.
+
+2005-05-26  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook
+       is new, and what the implications are.  Other clarifications.
+
+2005-05-24  Richard M. Stallman  <rms@gnu.org>
+
+       * frames.texi (Dialog Boxes): Minor fixes.
+
+2005-05-25  Masatake YAMATO  <jet@gyve.org>
+
+       * display.texi (Standard Faces): Write about `mode-line-highlight'.
+
+2005-05-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * frames.texi (Dialog Boxes): HEADER argument to `x-popup-dialog'
+       is optional.
+
+2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * frames.texi (Dialog Boxes): Describe new optional argument.
+
+2005-05-23  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Font Lock Basics, Syntactic Font Lock): Recommend
+       syntax-begin-function over font-lock-beginning-of-syntax-function.
+
+2005-05-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.texi (Reading File Names): Update description of
+       `read-directory-name'.
+
+       * modes.texi (Derived Modes): Clarify :group keyword.
+
+2005-05-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.texi (Locating Files): New subsection.
+       Describe locate-file and executable-find.
+
+2005-05-21  Kevin Ryde  <user42@zip.com.au>
+
+       * frames.texi (Initial Parameters): Update cross reference to
+       "Emacs Invocation".
+
+2005-05-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymaps.texi (Active Keymaps): Add anchor.
+
+       * modes.texi (Hooks): Delete confusing and unnecessary sentence.
+       (Major Mode Conventions): Refer to `Auto Major Mode' in more
+       appropriate place.
+       (Derived Modes): Small clarifications.
+       (Minor Mode Conventions, Keymaps and Minor Modes):
+       Replace references to nodes with references to anchors.
+       (Mode Line Data): Warn that `(:eval FORM)' should not load any files.
+       Clarify description of lists whose first element is an integer.
+       (Mode Line Variables): Add anchor.
+       (%-Constructs): Clarify description of integer after %.
+       (Emulating Mode Line): Describe nil value for FACE.
+
+2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * modes.texi (Derived Modes): Correct references to non-existing
+       variable standard-syntax-table.
+
+2005-05-17  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Defining Minor Modes): Mention the mode hook.
+
+2005-05-15  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Network): Remove open-network-stream-nowait.
+       (Network Servers): Remove open-network-stream-server.
+
+2005-05-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * elisp.texi (Top): Update detailed menu.
+
+       * variables.texi: Reorder nodes.
+       (Variables): Update menu.
+       (File Local Variables): Do not refer to the `-*-' line as
+       a "local variables list".  Add pxref.
+
+2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * elisp.texi (Top): Update detailed menu for node changes.
+
+       * modes.texi (Modes): Update Menu.
+       (Hooks): Move to beginning of chapter.
+       Most minor modes run mode hooks too.
+       `add-hook' can handle void hooks or hooks whose value is a single
+       function.
+       (Major Modes): Update Menu.
+       (Major Mode Basics): New node, split off from `Major Modes'.
+       (Major Mode Conventions): Correct xref.  Explain how to handle
+       auto-mode-alist if the major mode command has an autoload cookie.
+       (Auto Major Mode): Major update.  Add magic-mode-alist.
+       (Derived Modes): Major update.
+       (Mode Line Format): Update Menu.
+       (Mode Line Basics): New node, split off from `Mode Line Format'.
+
+       * loading.texi (Autoload): Mention `autoload cookie' as synonym
+       for `magic autoload comment'.  Add index entries and anchor.
+
+2005-05-14  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Explain how important it is
+       that just loading certain files not change Emacs behavior.
+
+       * modes.texi (Defining Minor Modes): Define define-global-minor-mode.
+
+2005-05-12  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Generic Modes): Update.
+       (Major Modes): Refer to node "Generic Modes".
+
+       * elisp.texi (Top): Update to the current structure of the manual.
+       * processes.texi (Processes): Add menu description.
+       * customize.texi (Customization): Add menu descriptions.
+
+2005-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * processes.texi (Signals to Processes)
+       (Low-Level Network): Fix typos.
+
+2005-05-11  Lute Kamstra  <lute@gnu.org>
+
+       * elisp.texi (Top): Add some nodes from the chapter "Major and
+       Minor Modes" to the detailed node listing.
+
+2005-05-10  Richard M. Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Extended Menu Items): Menu item filter functions
+       can be called at any time.
+
+2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * variables.texi (File Local Variables): `(hack-local-variables t)'
+       now also checks whether a mode is specified in the local variables
+       list.
+
+2005-05-05  Kevin Ryde  <user42@zip.com.au>
+
+       * display.texi (The Echo Area): Correct format function cross
+       reference.
+
+2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * variables.texi (Variable Aliases): Change description of
+       `define-obsolete-variable-alias'.
+
+       * functions.texi (Functions): Add "Obsolete Functions" to menu.
+       (Defining Functions): Add xref.
+       (Obsolete Functions): New node.
+       (Function Safety): Standardize capitalization of section title.
+
+       * frames.texi (Pop-Up Menus): Complete description of `x-popup-menu'.
+       (Dialog Boxes): Complete description of `x-popup-dialog'.
+
+2005-05-04  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Interactive Codes): Fix Texinfo usage.
+       Document U more clearly.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * variables.texi (Variable Aliases): `make-obsolete-variable' is a
+       function and not a macro.
+
+       * frames.texi (Pop-Up Menus): Correct and clarify description of
+       `x-popup-menu'.
+       (Dialog Boxes): Clarify description of `x-popup-dialog'.
+
+2005-05-01  Richard M. Stallman  <rms@gnu.org>
+
+       * edebug.texi (Checking Whether to Stop): Fix previous change.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi: Fix typos and Texinfo usage.
+
+       * edebug.texi (Checking Whether to Stop): executing-macro ->
+       executing-kbd-macro.
+
+2005-05-01  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Invisible Text): Correct add-to-invisibility-spec.
+
+2005-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Magic File Names): Document `operations' property.
+
+2005-04-29  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Generic Modes): New node.
+       (Major Modes): Add it to the menu.
+       (Derived Modes): Add "derived mode" to concept index.
+
+2005-04-28  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Defining Minor Modes): Fix previous change.
+       (Font Lock Mode): Simplify.
+       (Font Lock Basics): Say that font-lock-defaults is buffer-local
+       when set and that some parts are optional.  Add cross references.
+       (Search-based Fontification): Say how to specify font-lock-keywords.
+       Add cross references.  Add font-lock-multiline to index.
+       Move font-lock-keywords-case-fold-search here from node "Other Font
+       Lock Variables".  Document font-lock-add-keywords and
+       font-lock-remove-keywords.
+       (Other Font Lock Variables): Move font-lock-keywords-only,
+       font-lock-syntax-table, font-lock-beginning-of-syntax-function,
+       and font-lock-syntactic-face-function to node "Syntactic Font
+       Lock".  Move font-lock-keywords-case-fold-search to node
+       "Search-based Fontification".  Document font-lock-inhibit-thing-lock
+       and font-lock-{,un}fontify-{buffer,region}-function.
+       (Precalculated Fontification): Remove reference to deleted variable
+       font-lock-core-only.
+       (Faces for Font Lock): Add font-lock-comment-delimiter-face.
+       (Syntactic Font Lock): Add intro.  Move font-lock-keywords-only,
+       font-lock-syntax-table, font-lock-beginning-of-syntax-function,
+       and font-lock-syntactic-face-function here from node "Other Font
+       Lock Variables".  Move font-lock-syntactic-keywords to "Setting
+       Syntax Properties".  Add cross references.
+       (Setting Syntax Properties): New node.
+       Move font-lock-syntactic-keywords here from "Syntactic Font Lock".
+       * syntax.texi (Syntax Properties): Add cross reference.
+       * hooks.texi (Standard Hooks): Add Font-Lock hooks.
+
+2005-04-26  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Faces):
+       Document `default' elements of defface spec.
+
+       * modes.texi (Major Mode Conventions): Explain customizing ElDoc mode.
+
+       * variables.texi (Variable Aliases): Clarify text.
+
+2005-04-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * windows.texi (Window Hooks): Remove reference to obsolete Lazy Lock.
+
+2005-04-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * hooks.texi (Standard Hooks): Most minor modes have mode hooks too.
+
+2005-04-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * syntax.texi (Syntax Table Internals): Elaborate documentation of
+       syntax-after and syntax-class.
+
+       * files.texi (Changing Files): Fix last change's cross-reference.
+       (Unique File Names): Don't mention "numbers" in the documentation
+       of make-temp-file and make-temp-name.
+
+2005-04-23  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Changing Files): Document MUSTBENEW arg in copy-file.
+
+2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * windows.texi (Cyclic Window Ordering): Clarify window-list.
+
+2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * variables.texi (Variable Aliases): Describe make-obsolete-variable
+       and define-obsolete-variable-alias.
+
+2005-04-22  Kim F. Storm  <storm@cua.dk>
+
+       * symbols.texi (Symbol Plists): Remove safe-get, as get is now safe.
+       (Other Plists): Remove safe-plist-get, as plist-get is now safe.
+
+2005-04-21  Lute Kamstra  <lute@gnu.org>
+
+       * lists.texi (Association Lists): Document rassq-delete-all.
+
+2005-04-19  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Search-based Fontification): Explain that
+       facespec is an expression to be evaluated.
+
+2005-04-19  Kevin Ryde  <user42@zip.com.au>
+
+       * streams.texi (Output Functions): Fix xref.
+       * strings.texi (String Conversion): Fix xref.
+
+2005-04-19  Kim F. Storm  <storm@cua.dk>
+
+       * symbols.texi (Symbol Plists): Add safe-get.
+       Mention that `get' may signal an error.
+
+2005-04-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * customize.texi (Variable Definitions): Replace tooltip-mode
+       example with save-place.
+
+2005-04-17  Richard M. Stallman  <rms@gnu.org>
+
+       * buffers.texi (Indirect Buffers): Clarify.
+
+       * positions.texi (Positions): Clarify converting marker to integer.
+
+       * strings.texi (String Basics): Mention string-match; clarify.
+
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Search-based Fontification): Fix cross references.
+       Use consistent terminology.  Document anchored highlighting.
+
+2005-04-05  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Defining Minor Modes): Document :group keyword
+       argument and its default value.
+
+2005-04-03  Lute Kamstra  <lute@gnu.org>
+
+       * hooks.texi (Standard Hooks): Add some hooks.  Add cross
+       references and/or descriptions.  Delete major mode hooks; mention
+       them as a category instead.  Rename or delete obsolete hooks.
+
+2005-04-02  Richard M. Stallman  <rms@gnu.org>
+
+       * nonascii.texi (Coding System Basics): Another wording cleanup.
+
+2005-04-01  Richard M. Stallman  <rms@gnu.org>
+
+       * nonascii.texi (Coding System Basics): Clarify previous change.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (Coding System Basics): Describe about roundtrip
+       identity of coding systems.
+
+2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Buffer Contents): Add filter-buffer-substring and
+       buffer-substring-filters.
+
+2005-03-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * anti.texi (Antinews): Mention `G' interactive code.
+
+       * tips.texi (Compilation Tips): Mention benchmark.el.
+
+2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * modes.texi (Other Font Lock Variables): `font-lock-fontify-block'
+       is now bound to M-o M-o.
+
+       * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o.
+
+2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar.texi: Delete file (and move contents to emacs-xtra.texi
+       in the Emacs Manual).
+       * Makefile.in (srcs): Remove calendar.texi.
+       * makefile.w32-in (srcs): Remove calendar.texi.
+       * display.texi (Display): Change name of next node.
+       * os.texi (System In): Change name of previous node.
+       * elisp.texi (Top): Remove Calendar references.
+       * vol1.texi (Top): Remove Calendar references.
+       * vol2.texi (Top): Remove Calendar references.
+
+2005-03-25  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps):
+       Cleanup previous change.
+
+2005-03-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Face Attributes): Faces earlier in an :inherit
+       list take precedence.
+       (Scroll Bars): Fix description of vertical-scroll-bars.
+       Document frame-current-scroll-bars and window-current-scroll-bars.
+
+       * markers.texi (The Mark): Document temporary Transient Mark mode.
+
+       * minibuf.texi (Reading File Names):
+       Document read-file-name-completion-ignore-case.
+
+       * positions.texi (Screen Lines): Document nil for width argument
+       to compute-motion.
+
+2005-03-23  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Standard Faces): Other faces used in the fringe
+       implicitly inherits from the fringe face.
+       (Fringe Bitmaps): FACE in right-fringe and left-fringe display
+       properties implicitly inherits from fringe face.
+       (Customizing Bitmaps): Likewise for set-fringe-bitmap-face.
+
+2005-03-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Invisible Text): State default value of
+       line-move-ignore-invisible.
+       (Managing Overlays): Document remove-overlays.
+       (Standard Faces): Document escape-glyph face.
+
+       * minibuf.texi (Reading File Names): Document read-file-name-function.
+
+       * modes.texi (Other Font Lock Variables):
+       Document font-lock-lines-before.
+
+       * positions.texi (Skipping Characters): skip-chars-forward allows
+       character classes.
+
+2005-03-18  Lute Kamstra  <lute@gnu.org>
+
+       * edebug.texi (Instrumenting Macro Calls): Fix another typo.
+
+2005-03-17  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Undo): Document extensible undo entries.
+
+       * searching.texi (String Search, Regexp Search): Cleanups.
+
+       * nonascii.texi (Character Codes): Minor fix.
+
+       * display.texi (Display Property): Explain the significance
+       of having text properties that are eq.
+       (Other Display Specs): Explain string as display spec.
+
+       * commands.texi (Interactive Codes): Document G option.
+
+2005-03-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * text.texi (Filling): Add sentence-end-without-period and
+       sentence-end-without-space.
+       (Changing Properties): Minor fix.
+
+       * anti.texi: Total rewrite.
+
+2005-03-15  Lute Kamstra  <lute@gnu.org>
+
+       * edebug.texi (Instrumenting Macro Calls): Fix typos.
+
+2005-03-08  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Specified Space): Property :width is support on
+       non-graphic terminals, :height is not.
+
+2005-03-07  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps):
+       Now subnodes of Fringes.
+       (Overlay Arrow): Document overlay-arrow-variable-list.
+       (Fringe Size/Pos): New node, broken out of Fringes.
+       (Display): Explain clearing vs redisplay better.
+       (Truncation): Clarify use of bitmaps.
+       (The Echo Area): Clarify the uses of the echo area.
+       Add max-mini-window-height.
+       (Progress): Clarify.
+       (Invisible Text): Explain that main loop moves point out.
+       (Selective Display): Say "hidden", not "invisible".
+       (Managing Overlays): Move up.  Describe relation to Undo here.
+       (Overlay Properties): Clarify intro.
+       (Finding Overlays): Explain return values when nothing found.
+       (Width): truncate-string-to-width has added arg.
+       (Displaying Faces): Clarify and update mode line face handling.
+       (Face Functions): Minor cleanup.
+       (Conditional Display): Merge into Other Display Specs.
+       (Pixel Specification, Other Display Specs): Minor cleanups.
+       (Images, Image Descriptors): Minor cleanups.
+       (GIF Images): Patents have expired.
+       (Showing Images): Explain default text for insert-image.
+       (Manipulating Button Types): Merge into Manipulating Buttons.
+       (Making Buttons): Explain return values.
+       (Button Buffer Commands): Add xref.
+       (Inverse Video): Update mode-line-inverse-video.
+       (Display Table Format): Clarify.
+       (Active Display Table): Give defaults for window-display-table.
+
+       * calendar.texi (Calendar Customizing): calendar-holiday-marker
+       and calendar-today-marker are strings, not chars.
+       (Holiday Customizing): Minor fix.
+
+       * internals.texi (Writing Emacs Primitives): Update `or' example.
+       Update limit on # args of subr.
+
+       * edebug.texi (Using Edebug): Arrow is in fringe.
+       (Instrumenting): Arg to eval-defun works without loading edebug.
+       (Edebug Execution Modes): Add xref.
+
+       * customize.texi (Common Keywords): Clarify :require.
+       Mention :version here.
+       (Variable Definitions, Group Definitions): Not here.
+       (Variable Definitions): Clarify symbol arg to :initialize and :set fns.
+
+2005-03-07  Chong Yidong  <cyd@stupidchicken.com>
+       * nonascii.texi (Text Representations): Clarify position-bytes.
+       (Character Sets): Add list-charset-chars.
+       (Scanning Charsets): Add charset-after.
+       (Encoding and I/O): Minor fix.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Vertical Scrolling): Get rid of "Emacs 21".
+       (Resizing Windows): Likewise.
+
+       * text.texi (Change Hooks): Get rid of "Emacs 21".
+
+       * strings.texi (Formatting Strings): Get rid of "Emacs 21".
+
+       * streams.texi (Output Variables): Get rid of "Emacs 21".
+
+       * searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21".
+
+       * os.texi (Translating Input): Replace flow-control example
+       with a less obsolete example that uses `keyboard-translate'.
+
+       * objects.texi (Hash Table Type, Circular Objects):
+       Get rid of "Emacs 21".
+
+       * modes.texi (Mode Line Format): Get rid of "Emacs 21".
+       (Mode Line Data, Properties in Mode, Header Lines): Likewise.
+
+       * minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21".
+
+       * lists.texi (List Elements, Building Lists): Get rid of "Emacs 21".
+
+       * keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21".
+       (Menu Bar): Fix when menu-bar-update-hook is called.
+
+       * hash.texi (Hash Tables): Get rid of "Emacs 21".
+
+       * frames.texi (Text Terminal Colors): Get rid of "Emacs 21",
+       and make it read better.
+
+       * files.texi (Writing to Files): Get rid of "Emacs 21".
+       (Unique File Names): Likewise.
+
+       * elisp.texi: Update Emacs version to 22.
+
+       * display.texi (Forcing Redisplay): Get rid of "Emacs 21".
+       (Overlay Properties, Face Attributes): Likewise.
+       (Managing Overlays): Fix punctuation.
+       (Attribute Functions): Clarify set-face-font; get rid of
+       info about old Emacs versions.
+       (Auto Faces, Font Lookup, Display Property, Images):
+       Get rid of "Emacs 21".
+
+       * calendar.texi (Calendar Customizing): Get rid of "Emacs 21".
+
+2005-03-05  Richard M. Stallman  <rms@gnu.org>
+
+       * debugging.texi (Error Debugging): Remove stack-trace-on-error.
+
+2005-03-04  Lute Kamstra  <lute@gnu.org>
+
+       * debugging.texi (Error Debugging): Document stack-trace-on-error.
+
+2005-03-03  Lute Kamstra  <lute@gnu.org>
+
+       * edebug.texi (Instrumenting Macro Calls): Fix typo.
+
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+       * debugging.texi (Debugger Commands): Update `j'.
+
+2005-02-28  Lute Kamstra  <lute@gnu.org>
+
+       * debugging.texi (Debugging): Fix typo.
+       (Error Debugging): Document eval-expression-debug-on-error.
+       (Function Debugging): Update example.
+       (Using Debugger): Mention starred stack frames.
+       (Debugger Commands): Document `j' and `l'.
+       (Invoking the Debugger): `d' and `j' exit recursive edit too.
+       Update the messages that the debugger displays.
+       (Internals of Debugger): Add cross reference.  Update example.
+       (Excess Open): Minor improvement.
+       (Excess Close): Minor improvement.
+
+2005-02-26  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Clarify.
+       Put all the major mode key reservations together.
+       Mention the Mouse-1 => Mouse-2 conventions.
+
+       * syntax.texi (Syntax Class Table): Clarify.
+       (Syntax Table Functions): syntax-after moved from here.
+       (Syntax Table Internals): syntax-after moved to here.
+       (Parsing Expressions): Update info on number of values
+       and what's meaningful in the STATE argument.
+       (Categories): Fix typo.
+
+       * sequences.texi (Arrays): Cleanup.
+       (Char-Tables): Clarify.
+
+       * processes.texi (Deleting Processes): Cleanups, add xref.
+       (Subprocess Creation): Explain nil in exec-path.  Cleanup.
+       (Process Information): set-process-coding-system, some args optional.
+       (Input to Processes): Explain various types for PROCESS args.
+       Rename them from PROCESS-NAME to PROCESS.
+       (Signals to Processes): Likewise.
+       (Decoding Output): Cleanup.
+       (Query Before Exit): Clarify.
+
+       * os.texi (Startup Summary): Correct the options; add missing ones.
+       (Terminal Output, Batch Mode): Clarify.
+       (Flow Control): Node deleted.
+
+       * markers.texi (The Mark): Clarify.
+
+       * macros.texi (Expansion): Cleanup.
+       (Indenting Macros): indent-spec allows ints, not floats.
+
+       * keymaps.texi (Keymaps): Clarify.
+       (Format of Keymaps): Update lisp-mode-map example.
+       (Active Keymaps, Key Lookup): Clarify.
+       (Changing Key Bindings): Add xref to `kbd'.
+       (Key Binding Commands, Simple Menu Items): Clarify.
+       (Mouse Menus, Menu Bar): Clarify.
+       (Menu Example): Replace print example with menu-bar-replace-menu.
+
+       * help.texi (Documentation Basics): Add function-documentation prop.
+
+       * elisp.texi (Top): Don't refer to Flow Control node.
+
+       * commands.texi (Command Overview): Improve xrefs.
+       (Adjusting Point): Adjusting point applies to intangible and invis.
+       (Key Sequence Input): Doc extra read-key-sequence args.
+       Likewise for read-key-sequence-vector.
+
+       * backups.texi (Rename or Copy): Minor fix.
+       (Numbered Backups): For version-control, say the default.
+       (Auto-Saving): make-auto-save-file-name example is simplified.
+
+       * advice.texi (Advising Functions): Don't imply one part of Emacs
+       should advise another part.  Markup changes.
+       (Defining Advice): Move transitional para.
+       (Activation of Advice): Cleanup.
+       Explain if COMPILE is nil or negative.
+
+       * abbrevs.texi (Abbrev Expansion): Clarify, fix typo.
+
+2005-02-24  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Defining Minor Modes): Explain that INIT-VALUE,
+       LIGHTER, and KEYMAP can be omitted when KEYWORD-ARGS are used.
+
+2005-02-23  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Defining Minor Modes): define-minor-mode can be used
+       to define global minor modes as well.
+
+       * display.texi (Managing Overlays): overlay-buffer returns nil for
+       deleted overlays.
+
+2005-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.texi (Basic Completion): Allow symbols in addition to
+       strings in try-completion and all-completions.
+
+2005-02-14  Lute Kamstra  <lute@gnu.org>
+
+       * elisp.texi (Top): Remove reference to deleted node.
+
+       * lists.texi (Lists): Remove reference to deleted node.
+       (Cons Cells): Fix typo.
+
+       * loading.texi (Where Defined): Fix typo.
+
+2005-02-14  Richard M. Stallman  <rms@gnu.org>
+
+       * variables.texi (Creating Buffer-Local): change-major-mode-hook
+       is useful for discarding some minor modes.
+
+       * symbols.texi (Symbol Components): Reorder examples.
+
+       * streams.texi (Input Functions): State standard-input default.
+       (Output Variables): State standard-output default.
+
+       * objects.texi (Printed Representation): Clarify read syntax vs print.
+       (Floating Point Type): Explain meaning better.
+       (Symbol Type): Explain uniqueness better.
+       (Cons Cell Type): Explain empty list sooner.  CAR and CDR later.
+       List examples sooner.
+       (Box Diagrams): New subnode broken out.
+       Some examples moved from old Lists as Boxes node.
+       (Dotted Pair Notation): Clarify intro.
+       (Array Type): Clarify.
+       (Type Predicates): Add hash-table-p.
+
+       * numbers.texi (Integer Basics): Clarify radix explanation.
+       (Predicates on Numbers): Minor clarification.
+       (Comparison of Numbers): Minor clarification.  Clarify eql.
+       Typos in min, max.
+       (Math Functions): Clarify overflow in expt.
+
+       * minibuf.texi (Text from Minibuffer): Minor clarification.
+       Mention arrow keys.
+
+       * loading.texi (Autoload): defun's doc string overrides autoload's
+       doc string.
+       (Repeated Loading): Modernize "add to list" examples.
+       (Where Defined): Finish updating table of load-history elts.
+
+       * lists.texi (List-related Predicates): Minor wording improvement.
+       (Lists as Boxes): Node deleted.
+       (Building Lists): Explain trivial cases of number-sequence.
+
+       * hash.texi (Hash Tables): Add desc to menu items.
+       (Creating Hash): Explain "full" means "make larger".
+       (Hash Access): Any object can be a key.
+       State value of maphash.
+
+       * functions.texi (What Is a Function): Wording cleanup.
+       (Function Documentation): Minor cleanup.
+       Explain purpose of calling convention at end of doc string.
+       (Function Names): Wording cleanup.
+       (Calling Functions): Wording cleanup.
+       Explain better how funcall calls the function.
+       (Function Cells): Delete example of saving and redefining function.
+
+       * control.texi (Combining Conditions): Wording cleanup.
+       (Iteration): dolist and dotimes bind VAR locally.
+       (Cleanups): Xref to Atomic Changes.
+
+       * compile.texi (Byte Compilation): Delete 19.29 info.
+       (Compilation Functions): Macros' difficulties don't affect defsubst.
+       (Docs and Compilation): Delete 19.29 info.
+
+2005-02-10  Richard M. Stallman  <rms@gnu.org>
+
+       * objects.texi (Symbol Type): Minor correction.
+
+2005-02-06  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Example Major Modes): Fix typos.
+
+2005-02-06  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Margins): fill-nobreak-predicate can be one function.
+
+       * strings.texi (Modifying Strings): clear-string can make unibyte.
+       (Formatting Strings): format gives error if values missing.
+
+       * positions.texi (Character Motion): Mention default arg
+       for forward-char.  backward-char refers to forward-char.
+       (Word Motion): Mention default arg for forward-word.
+       (Buffer End Motion): Mention default arg for beginning-of-buffer.
+       Simplify end-of-buffer.
+       (Text Lines): Mention default arg for forward-line.
+       (List Motion): Mention default arg for beginning/end-of-defun.
+       (Skipping Characters): Minor fixes in explaining character-set.
+
+       * modes.texi (Major Mode Conventions): Mention "system abbrevs".
+       Mode inheritance applies only when default-major-mode is nil.
+       Clarifications.
+       (Example Major Modes): Update Text mode and Lisp mode examples.
+       (Minor Mode Conventions): Mention define-minor-mode at top.
+       (Defining Minor Modes): In Hungry example, don't define C-M-DEL.
+       (Mode Line Format): Update mode line face display info.
+       (Properties in Mode): Mention effect of risky vars.
+       (Imenu): Define imenu-add-to-menubar.
+       (Font Lock Mode): Add descriptions to menu lines.
+       (Faces for Font Lock): Add font-lock-doc-face.
+
+2005-02-05  Lute Kamstra  <lute@gnu.org>
+
+       * text.texi (Maintaining Undo): Remove obsolete function.
+
+2005-02-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * frames.texi (Color Names): Add pointer to the X docs about RGB
+       color specifications.  Improve indexing.
+       (Text Terminal Colors): Replace the description of RGB values by
+       an xref to "Color Names".
+
+2005-02-03  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Basic Windows): Add cursor-in-non-selected-windows.
+       Clarify.
+       (Selecting Windows): Clarify save-selected-window.
+       (Cyclic Window Ordering): Clarify walk-windows.
+       (Window Point): Clarify.
+       (Window Start): Add comment to example.
+       (Resizing Windows): Add `interactive' specs in examples.
+       Document fit-window-to-buffer.
+
+       * text.texi (User-Level Deletion): just-one-space takes numeric arg.
+       (Undo, Maintaining Undo): Clarify last change.
+       (Sorting): In sort-numeric-fields, explain about octal and hex.
+       Mention sort-numeric-base.
+       (Format Properties): Add xref for hard newlines.
+
+       * frames.texi (Window Frame Parameters): Explain pixel=char on tty.
+       (Pop-Up Menus): Fix typo.
+       (Color Names): Explain all types of color names.
+       Explain color-values on B&W terminal.
+       (Text Terminal Colors): Explain "rgb values" are lists.  Fix arg names.
+
+       * files.texi (File Locks): Not supported on MS systems.
+       (Testing Accessibility): Clarify.
+
+       * edebug.texi (Printing in Edebug): Fix edebug-print-circle.
+       (Coverage Testing): Fix typo.
+
+       * commands.texi (Misc Events): Remove stray space.
+
+       * buffers.texi (Buffer Names): Clarify generate-new-buffer-name.
+       (Modification Time): Clarify when visited-file-modtime returns 0.
+       (The Buffer List): Clarify bury-buffer.
+       (Killing Buffers): Clarify.
+       (Indirect Buffers): Add clone-indirect-buffer.
+
+2005-02-02  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * edebug.texi (Printing in Edebug): Fix default value of
+       edebug-print-circle.
+       (Coverage Testing): Fix displayed frequency count data.
+
+2005-02-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * text.texi (Maintaining Undo): Add `undo-outer-limit'.
+
+2005-02-02  Kim F. Storm  <storm@cua.dk>
+
+       * text.texi (Undo) <buffer-undo-list>: Describe `apply' elements.
+
+2005-01-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * commands.texi (Misc Events): Describe the help-echo event.
+
+       * text.texi (Special Properties) <help-echo>: Use `pos'
+       consistently in description of the help-echo property.
+       Use @code{nil} instead of @var{nil}.
+
+       * display.texi (Overlay Properties): Fix the index entry for
+       help-echo overlay property.
+
+       * customize.texi (Type Keywords): Uncomment the xref to the
+       help-echo property documentation.
+
+2005-01-23  Kim F. Storm  <storm@cua.dk>
+
+       * windows.texi (Window Start): Fix `pos-visible-in-window-p'
+       return value.  Third element FULLY replaced by PARTIAL which
+       specifies number of invisible pixels if row is only partially visible.
+       (Textual Scrolling): Mention auto-window-vscroll.
+       (Vertical Scrolling): New defvar auto-window-vscroll.
+
+2005-01-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymaps.texi (Changing Key Bindings): `suppress-keymap' now uses
+       command remapping.
+
+2005-01-15  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Defining Images): Mention DATA-P arg of create-image.
+
+2005-01-14  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Accessing Events): Add WHOLE arg to posn-at-x-y.
+
+       * text.texi (Links and Mouse-1): Fix string and vector item.
+
+2005-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Active Keymaps): Rewrite the text, and update the
+       descriptions of overriding-local-map and overriding-terminal-local-map.
+
+       * text.texi (Links and Mouse-1): Clarify text.
+
+2005-01-13  Kim F. Storm  <storm@cua.dk>
+
+       * modes.texi (Emulating Mode Line): Update format-mode-line entry.
+
+2005-01-13  Francis Litterio  <franl@world.std.com>  (tiny change)
+
+       * keymaps.texi (Active Keymaps): Fix overriding-local-map description.
+
+2005-01-12  Kim F. Storm  <storm@cua.dk>
+
+       * text.texi (Links and Mouse-1): Rename section from Enabling
+       Mouse-1 to Following Links.  Change xrefs.
+       Add examples for define-button-type and define-widget.
+
+       * display.texi (Button Properties, Button Buffer Commands):
+       Clarify mouse-1 and follow-link functionality.
+
+2005-01-12  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Enabling Mouse-1 to Follow Links): Redo prev. change.
+
+       * display.texi (Beeping): Fix Texinfo usage.
+
+       * modes.texi (Emulating Mode Line): Doc FACE arg in format-header-line.
+
+2005-01-11  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Button Properties, Button Buffer Commands):
+       Mention mouse-1 binding.  Add follow-link keyword.
+
+       * text.texi (Text Properties): Add "Enable Mouse-1" to submenu.
+       (Enabling Mouse-1 to Follow Links): New subsection.
+
+2005-01-06  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Minor change.
+
+       * os.texi (Timers): Clarify previous change.
+
+       * modes.texi (Emulating Mode Line): format-mode-line requires 1 arg.
+
+2005-01-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi (Face Attributes): Correct xref to renamed node.
+
+2005-01-01  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Face Attributes): Describe hex color specs.
+
+2004-12-31  Richard M. Stallman  <rms@gnu.org>
+
+       * os.texi (Timers): Update previous change.
+
+2004-12-30  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Line Height): Total line-height is now specified
+       in line-height property of form (HEIGHT TOTAL).  Swap (FACE . RATIO)
+       in cons cells.  (nil . RATIO) is relative to actual line height.
+       Use line-height `t' instead of `0' to get minimum height.
+
+2004-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * os.texi (Timers): Discuss timers vs editing the buffer and undo.
+
+2004-12-28  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Quitting): Clarify value of with-local-quit.
+
+       * elisp.texi (Top): Fix previous change.
+
+       * loading.texi (Loading): Fix previous change.
+
+2004-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (MAKEINFO): Specify --force.
+
+       * buffers.texi (Killing Buffers): Add buffer-save-without-query.
+
+       * modes.texi (Emulating Mode Line): Document format's BUFFER arg.
+
+       * display.texi (Line Height): Further clarify.
+
+       * elisp.texi (Top): Update Loading submenu.
+
+       * loading.texi (Where Defined): New node.
+       (Unloading): load-history moved to Where Defined.
+
+2004-12-21  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Event Input Misc): Add while-no-input.
+
+2004-12-11  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Line Height): Rewrite text for clarity.
+
+2004-12-11  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Display): Add node "Line Height" to menu.
+       (Line Height): New node.  Move full description of line-spacing
+       and line-height text properties here from text.texi.
+       (Scroll Bars): Add vertical-scroll-bar variable.
+
+       * frames.texi (Window Frame Parameters): Remove line-height defvar.
+
+       * locals.texi (Standard Buffer-Local Variables): Fix xref for
+       line-spacing and vertical-scroll-bar.
+
+       * text.texi (Special Properties): Just mention line-spacing and
+       line-height here, add xref to new "Line Height" node.
+
+2004-12-09  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * frames.texi (Window Frame Parameters): New @defvar for `line-spacing'.
+
+       * locals.texi (Standard Buffer-Local Variables):
+       Add @xref for `line-spacing'.
+
+2004-12-05  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (maintainer-clean): Remove the info files
+       in $(infodir) where they are created.
+
+2004-12-03  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Selecting Windows): get-lru-window and
+       get-largest-window don't consider dedicated windows.
+
+       * text.texi (Undo): Document undo-in-progress.
+
+2004-11-26  Richard M. Stallman  <rms@gnu.org>
+
+       * locals.texi (Standard Buffer-Local Variables): Undo prev change.
+       Remove a few vars that are not always buffer-local.
+
+2004-11-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locals.texi (Standard Buffer-Local Variables): Comment out
+       xref's to non-existent node `Yet to be written'.
+
+2004-11-24  Richard M. Stallman  <rms@gnu.org>
+
+       * processes.texi (Synchronous Processes): Grammar fix.
+
+       * numbers.texi (Comparison of Numbers): Add eql.
+
+       * locals.texi (Standard Buffer-Local Variables): Add many vars.
+
+       * intro.texi (Printing Notation): Fix previous change.
+
+       * display.texi (Customizing Bitmaps): Move indicate-buffer-boundaries
+       and default-indicate-buffer-boundaries from here.
+       (Usual Display): To here.
+       (Scroll Bars): Add scroll-bar-mode and scroll-bar-width.
+       (Usual Display): Move tab-width up.
+
+       * customize.texi (Variable Definitions):
+       Replace show-paren-mode example with tooltip-mode.
+       (Simple Types, Composite Types, Defining New Types):
+       Minor cleanups.
+
+2004-11-21  Jesper Harder  <harder@ifa.au.dk>
+
+       * processes.texi (Synchronous Processes, Output from Processes):
+       Markup fix.
+
+2004-11-20  Richard M. Stallman  <rms@gnu.org>
+
+       * positions.texi (Skipping Characters): skip-chars-forward
+       now handles char classes.
+
+       * intro.texi (Printing Notation): Avoid confusion of `print'
+       when explaining @print.
+
+       * macros.texi (Argument Evaluation): Fix 1st `for' expansion example.
+
+       * display.texi (Display Table Format): Minor fix.
+
+       * streams.texi (Output Functions): Fix print example.
+
+       * Makefile.in (elisp): New target.
+       (dist): Depend on $(infodir)/elisp, not elisp.
+       Copy the info files from $(infodir).
+
+       * minibuf.texi (Text from Minibuffer): Document KEEP-ALL arg in
+       read-from-minibuffer.
+
+       * searching.texi (Regexp Search): Rename that to search-spaces-regexp.
+
+2004-11-19  Richard M. Stallman  <rms@gnu.org>
+
+       * searching.texi (Regexp Search): Add search-whitespace-regexp.
+
+2004-11-19  CHENG Gao  <chenggao@gmail.com>  (tiny change)
+
+       * tips.texi (Coding Conventions): Fix typo.
+
+2004-11-16  Richard M. Stallman  <rms@gnu.org>
+
+       * tips.texi (Coding Conventions): Separate defvar and require
+       methods to avoid warnings.  Use require only when there are many
+       functions and variables from that package.
+
+       * minibuf.texi (Minibuffer Completion): When ignoring case,
+       predicate must not be case-sensitive.
+
+       * debugging.texi (Function Debugging, Explicit Debug): Clarified.
+       (Test Coverage): Don't talk about "splotches".  Clarified.
+
+2004-11-16  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * frames.texi (Window Frame Parameters): Fix typo.
+
+2004-11-15  Kim F. Storm  <storm@cua.dk>
+
+       * symbols.texi (Other Plists): Note that plist-get may signal error.
+       Add safe-plist-get.
+
+2004-11-15  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * modes.texi (Font Lock Basics): Fix typo.
+
+2004-11-08  Richard M. Stallman  <rms@gnu.org>
+
+       * syntax.texi (Syntax Table Functions): Add syntax-after.
+
+2004-11-06  Lars Brinkhoff  <lars@nocrew.org>
+
+       * os.texi (Processor Run Time): New section documenting
+       get-internal-run-time.
+
+2004-11-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as
+       it nukes elisp-cover.texi.
+       (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no
+       elisp-0 etc.
+
+2004-11-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * commands.texi (Keyboard Macros): Document `append' return value
+       of `defining-kbd-macro'.
+
+2004-11-01  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Interactive Call): Add called-interactively-p.
+
+2004-10-29  Simon Josefsson  <jas@extundo.com>
+
+       * minibuf.texi (Reading a Password): Revert.
+
+2004-10-28  Richard M. Stallman  <rms@gnu.org>
+
+       * frames.texi (Display Feature Testing): Explain about "vendor".
+
+2004-10-27  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Interactive Codes): `N' uses numeric prefix,
+       not raw.  Clarify `n'.
+       (Interactive Call): Rewrite interactive-p, focusing on when
+       and how to use it.
+       (Misc Events): Clarify previous change.
+
+       * advice.texi (Simple Advice): Clarify what job the example does.
+       (Around-Advice): Clarify ad-do-it.
+       (Activation of Advice): An option of ad-default-compilation-action
+       is `never', not `nil'.
+
+2004-10-26  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Interactive Codes): Add U code letter.
+
+2004-10-25  Simon Josefsson  <jas@extundo.com>
+
+       * minibuf.texi (Reading a Password): Add.
+
+2004-10-24  Jason Rumney  <jasonr@gnu.org>
+
+       * commands.texi (Misc Events): Remove mouse-wheel.  Add wheel-up
+       and wheel-down.
+
+2004-10-24  Kai Grossjohann  <kai.grossjohann@gmx.net>
+
+       * processes.texi (Synchronous Processes): Document process-file.
+
+2004-10-22  Kenichi Handa  <handa@m17n.org>
+
+       * text.texi (translate-region): Document that it accepts also a
+       char-table.
+
+2004-10-22  David Ponce  <david@dponce.com>
+
+       * windows.texi (Resizing Windows): Document the `preserve-before'
+       argument of the functions `enlarge-window' and `shrink-window'.
+
+2004-10-19  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.w32-in (elisp): Change order of arguments to makeinfo.
+
+2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * text.texi (Filling): Add anchor for definition of
+       `sentence-end-double-space'.
+
+       * searching.texi (Regexp Example): Update description of how
+       Emacs currently recognizes the end of a sentence.
+       (Standard Regexps): Update definition of the variable
+       `sentence-end'.  Add definition of the function `sentence-end'.
+
+2004-10-08  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * display.texi (Progress): New node.
+
+2004-10-05  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
+
+2004-09-29  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Fringe Bitmaps): Use symbols rather than numbers
+       to identify bitmaps.  Remove -fringe-bitmap suffix for standard
+       fringe bitmap symbols, as they now have their own namespace.
+       (Customizing Bitmaps) <define-fringe-bitmap>: Clarify bit ordering
+       vs. pixels.  Signal error if no free bitmap slots.
+       (Pixel Specification): Change IMAGE to @var{image}.
+
+2004-09-28  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Clarify line-spacing and line-height.
+
+       * searching.texi (Regexp Search): Add looking-back.
+
+2004-09-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi: Correct typos.
+       (Image Descriptors): Correct xref's.
+
+2004-09-25  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Special Properties): Cleanups in `cursor'.
+       Rewrites in `line-height' and `line-spacing'; exchange them.
+
+       * display.texi (Fringes): Rewrite previous change.
+       (Fringe Bitmaps): Merge text from Display Fringe Bitmaps.  Rewrite.
+       (Display Fringe Bitmaps): Node deleted, text moved.
+       (Customizing Bitmaps): Split off from Fringe Bitmaps.  Rewrite.
+       (Scroll Bars): Clarify set-window-scroll-bars.
+       (Pointer Shape): Rewrite.
+       (Specified Space): Clarify :align-to, etc.
+       (Pixel Specification): Use @var.  Clarify new text.
+       (Other Display Specs): Clarify `slice'.
+       (Image Descriptors): Cleanups.
+       (Showing Images): Cleanups.
+
+2004-09-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'.
+
+       * modes.texi: Various minor changes in addition to:
+       (Major Mode Conventions): Final call to `run-mode-hooks' should
+       not be inside the `delay-mode-hooks' form.
+       (Mode Hooks): New node.
+       (Hooks): Delete obsolete example.
+       Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new
+       node "Mode Hooks".
+
+2004-09-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi: Correct various typos.
+       (Display): Rename node "Pointer Shapes" to "Pointer
+       Shape".  (There is already a node called "Pointer Shapes" in
+       frames.texi.)
+       (Images): Remove non-existent node "Image Slices" from menu.
+
+2004-09-23  Kim F. Storm  <storm@cua.dk>
+
+       * text.texi (Special Properties): Add `cursor', `pointer',
+       `line-height', and `line-spacing' properties.
+
+       * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer
+       Shapes' to menu.
+       (Standard Faces): Doc fix for fringe face.
+       (Fringes): Add `overflow-newline-into-fringe' and
+       'indicate-buffer-boundaries'.
+       (Fringe Bitmaps, Pointer Shapes): New nodes.
+       (Display Property): Add 'Pixel Specification' and 'Display Fringe
+       Bitmaps' to menu.
+       (Specified Space): Describe pixel width and height.
+       (Pixel Specification): New node.
+       (Other Display Specs): Add `slice' property.
+       (Display Fringe Bitmaps): New node.
+       (Images): Add 'Image Slices' to menu.
+       (Image Descriptors): Add `:pointer' and `:map' properties.
+       (Showing Images): Add slice arg to `insert-image'.
+       Add 'insert-sliced-image'.
+
+2004-09-20  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Key Sequence Input):
+       Clarify downcasing in read-key-sequence.
+
+2004-09-08  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'.
+
+2004-09-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locals.texi (Standard Buffer-Local Variables):
+       Add `buffer-auto-save-file-format'.
+       * internals.texi (Buffer Internals): Describe new
+       auto_save_file_format field of the buffer structure.
+       * files.texi (Format Conversion): `auto-save-file-format' has been
+       renamed `buffer-auto-save-file-format'.
+
+2004-08-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be
+       an integer or a marker.
+       (Abbrev Expansion): Replace example for `pre-abbrev-expand-hook'.
+
+2004-08-22  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Major Mode Conventions): Discuss rebinding of
+       standard key bindings.
+
+2004-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Accepting Output): Add `just-this-one' arg to
+       `accept-process-output'.
+       (Output from Processes): New var `process-adaptive-read-buffering'.
+
+2004-08-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymaps.texi: Various changes in addition to:
+       (Keymap Terminology): `kbd' uses same syntax as Edit Macro mode.
+       Give more varied examples for `kbd'.
+       (Creating Keymaps): Char tables have slots for all characters
+       without modifiers.
+       (Active Keymaps): `overriding-local-map' and
+       `overriding-terminal-local-map' also override text property and
+       overlay keymaps.
+       (Functions for Key Lookup): Mention OLP arg to `current-active-maps'.
+       (Scanning Keymaps): `accessible-keymaps' uses `[]' instead of `""'
+       to denote a prefix of no events.
+       `map-keymap' includes parent's bindings _recursively_.
+       Clarify and correct description of `where-is-internal'.
+       Mention BUFFER-OR-NAME arg to `describe-bindings'.
+       (Menu Example): For menus intended for use with the keyboard, the
+       menu items should be bound to characters or real function keys.
+
+2004-08-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * objects.texi (Character Type): Reposition `@anchor' to prevent
+       double space inside sentence in Info.
+
+       * hooks.texi (Standard Hooks): `disabled-command-hook' has been
+       renamed to `disabled-command-function'.
+       * commands.texi (Key Sequence Input): Remove unnecessary anchor.
+       (Command Loop Info): Replace reference to it.
+       (Disabling Commands): `disabled-command-hook' has been renamed to
+       `disabled-command-function'.
+
+2004-08-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * os.texi (Translating Input): Only non-prefix bindings in
+       `key-translation-map' override actual key bindings.  Warn about
+       possible indirect effect of actual key bindings on non-prefix
+       bindings in `key-translation-map'.
+
+2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.texi (High-Level Completion): Add anchor for definition
+       of `read-variable'.
+
+       * commands.texi: Various changes in addition to:
+       (Using Interactive): Clarify description of `interactive-form'.
+       (Interactive Call): Mention default for KEYS argument to
+       `call-interactively'.
+       (Command Loop Info): Clarify description of `this-command-keys'.
+       Mention KEEP-RECORD argument to `clear-this-command-keys'.
+       Value of `last-event-frame' can be `macro'.
+       (Repeat Events): `double-click-fuzz' is also used to distinguish
+       clicks and drags.
+       (Classifying Events): Clarify descriptions of `event-modifiers'
+       `event-basic-type' and `event-convert-list'.
+       (Accessing Events): `posn-timestamp' takes POSITION argument.
+       (Quoted Character Input): Clarify description of
+       `read-quoted-char' and fix example.
+       (Quitting): Add `with-local-quit'.
+       (Disabling Commands): Correct and clarify descriptions of
+       `enable-command' and `disable-command'.
+       Mention what happens if `disabled-command-hook' is nil.
+       (Keyboard Macros): Mention LOOPFUNC arg to `execute-kbd-macro'.
+       Describe `executing-kbd-macro' instead of obsolete `executing-macro'.
+
+2004-07-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * frames.texi: Various changes in addition to:
+       (Creating Frames): Expand and clarify description of `make-frame'.
+       (Window Frame Parameters): Either none or both of the `icon-left'
+       and `icon-top' parameters must be specified.  Put descriptions of
+       `menu-bar-lines' and `toolbar-lines' closer together and change
+       them accordingly.
+       (Frame Titles): `multiple-frames' is not guaranteed to be accurate
+       except while processing `frame-title-format' or `icon-title-format'.
+       (Deleting Frames): Correct description of `delete-frame'.
+       Non-nil return values of `frame-live-p' are like those of `framep'.
+       (Frames and Windows): Mention return value of
+       `set-frame-selected-window'.
+       (Visibility of Frames): Mention `force' argument to
+       `make-frame-invisible'.  `frame-visible-p' returns t for all
+       frames on text-only terminals.
+       (Frame Configurations): Restoring a frame configuration does not
+       restore deleted frames.
+       (Window System Selections): `x-set-selection' returns DATA.
+       (Resources): Add example.
+       (Display Feature Testing): Clarify descriptions of
+       `display-pixel-height', `display-pixel-width', `x-server-version'
+       and `x-server-vendor'.
+
+       * windows.texi (Choosing Window): Add anchor.
+       * minibuf.texi (Minibuffer Misc): Add anchor.
+
+2004-07-23  John Paul Wallington  <jpw@gnu.org>
+
+       * macros.texi (Defining Macros): Declaration keyword for setting
+       Edebug spec is `debug' not `edebug'.
+
+2004-07-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * windows.texi: Various small changes in addition to:
+       (Window Point): Mention return value of `set-window-point'.
+       (Window Start): `pos-visible-in-window-p' disregards horizontal
+       scrolling.  Explain return value if PARTIALLY is non-nil.
+       (Vertical Scrolling): Mention PIXELS-P argument to `window-vscroll'
+       and `set-window-vscroll'.
+       (Size of Window): The argument WINDOW to `window-inside-edges',
+       `window-pixel-edges' and `window-inside-pixel-edges' is optional.
+       (Resizing Windows): Explain return value of
+       `shrink-window-if-larger-than-buffer'.
+       `window-size-fixed' automatically becomes buffer local when set.
+       (Window Configurations): Explain return value of
+       `set-window-configuration'.
+
+       * minibuf.texi (Minibuffer Misc): Add anchor for
+       `minibuffer-scroll-window'.
+
+       * positions.texi (Text Lines): Add anchor for `count-lines'.
+
+2004-07-17  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Properties): Adding `evaporate' prop
+       deletes empty overlay immediately.
+
+       * abbrevs.texi (Abbrev Expansion): Clarify pre-abbrev-expand-hook,
+       fix example.
+
+2004-07-16  Jim Blandy  <jimb@redhat.com>
+
+       * searching.texi (Regexp Backslash): Document new \_< and \_>
+       operators.
+
+2004-07-16  Juanma Barranquero  <lektu@terra.es>
+
+       * display.texi (Images): Fix Texinfo usage.
+
+2004-07-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffers.texi (Modification Time): `visited-file-modtime' now
+       returns a list of two integers, instead of a cons.
+
+2004-07-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * windows.texi: Various changes in addition to:
+       (Splitting Windows): Add `split-window-keep-point'.
+
+2004-07-09  Richard M. Stallman  <rms@gnu.org>
+
+       * frames.texi (Input Focus): Minor fix.
+
+2004-07-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * frames.texi (Input Focus): Clarify descriptions of
+       `select-frame-set-input-focus' and `select-frame'.
+
+2004-07-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * os.texi: Various small changes in addition to:
+       (Killing Emacs): Expand and clarify description of
+       `kill-emacs-query-functions' and `kill-emacs-hook'.
+       (System Environment): Expand and clarify description of `getenv'
+       and `setenv'.
+       (Timers): Clarify description of `run-at-time'.
+       (Translating Input): Correct description of
+       `extra-keyboard-modifiers'.
+       (Flow Control): Correct description of `enable-flow-control'.
+
+2004-07-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * os.texi: Update copyright.
+       (Session Management): Grammar fix.
+       Clarify which Emacs does the restarting.
+       Use @samp for *scratch* buffer.
+
+2004-07-04  Alan Mackenzie  <acm@muc.de>
+
+       * frames.texi (Input Focus): Add documentation for
+       `select-frame-set-input-focus'.  Replace refs to non-existent
+       `switch-frame' with `select-frame'.  Minor corrections and tidying
+       up of text-only terminal stuff.
+
+2004-07-02  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Saving Buffers): Cleanup write-contents-function.
+       (Magic File Names): Cleanup file-remote-p.
+
+2004-07-02  Kai Großjohann  <kai@emptydomain.de>
+
+       * files.texi (Magic File Names): `file-remote-p' returns an
+       identifier of the remote system, not just t.
+
+2004-07-02  David Kastrup  <dak@gnu.org>
+
+       * searching.texi (Entire Match Data): Add explanation about new
+       match-data behavior when @var{integers} is non-nil.
+
+2004-06-24  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.texi (Misc Events): Describe usr1-signal, usr2-signal event.
+
+       * customize.texi (Variable Definitions): Note about doc strings
+       and :set.
+
+       * keymaps.texi (Keymap Terminology): Document `kbd'.
+       (Changing Key Bindings, Key Binding Commands): Use kbd in examples.
+
+       * display.texi (Invisible Text): Setting buffer-invisibility-spec
+       makes it buffer-local.
+
+       * files.texi (Saving Buffers): Correct previous change.
+
+       * commands.texi (Accessing Events):
+       Clarify posn-col-row and posn-actual-col-row.
+
+2004-06-24  David Ponce  <david.ponce@wanadoo.fr>
+
+       * commands.texi (Accessing Events): New functions
+       posn-at-point and posn-at-x-y.  Add example to posn-x-y.
+
+2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi, files.texi, processes.texi, macros.texi, hash.texi:
+       * frames.texi, buffers.texi, backups.texi, variables.texi:
+       * loading.texi, eval.texi, functions.texi, control.texi:
+       * symbols.texi, minibuf.texi: Reposition @anchor's.
+
+       * help.texi: Various small changes in addition to the following.
+       (Describing Characters): Describe PREFIX argument to
+       `key-description'.  Correct and clarify definition of
+       `text-char-description'.  Describe NEED-VECTOR argument to
+       `read-kbd-macro'.
+       (Help Functions): Clarify definition of `apropos'.
+
+2004-06-23  Lars Hansen  <larsh@math.ku.dk>
+
+       * files.texi (Saving Buffers): Correct description of
+       `write-contents-functions'.
+
+2004-06-21  Juanma Barranquero  <lektu@terra.es>
+
+       * display.texi (Images): Remove redundant @vindex directives.
+       Rewrite `image-library-alist' doc in active voice.
+
+2004-06-14  Juanma Barranquero  <lektu@terra.es>
+
+       * display.texi (Images): Document new delayed library loading,
+       variable `image-library-alist' and (existing but undocumented)
+       function `image-type-available-p'.
+
+2004-06-05  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Minibuffer Completion): For INITIAL arg,
+       refer the user to the Initial Input node.
+       (Text from Minibuffer): Likewise.
+       (Initial Input): New node.  Document this feature
+       and say it is mostly deprecated.
+
+2004-05-30  Richard M. Stallman  <rms@gnu.org>
+
+       * loading.texi (Named Features): Clarify return value
+       and meaning of NOERROR.
+
+       * variables.texi (File Local Variables): Minor cleanup.
+
+2004-05-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Add `file-remote-p' as operation
+       of file name handlers.
+
+2004-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Minor Mode Conventions): (-) has no special meaning
+       as arg to a minor mode command.
+
+2004-05-22  Richard M. Stallman  <rms@gnu.org>
+
+       * syntax.texi (Syntax Class Table): Word syntax not just for English.
+
+       * streams.texi (Output Variables): Doc float-output-format.
+
+       * searching.texi (Regexp Special): Nested repetition can be infloop.
+
+       * eval.texi (Eval): Increasing max-lisp-eval-depth can cause
+       real stack overflow.
+
+       * compile.texi: Minor cleanups.
+
+2004-05-22  Luc Teirlinck  <teirllm@dms.auburn.edu>
+
+       * lists.texi (Cons Cells): Explain dotted lists, true lists,
+       circular lists.
+       (List Elements): Explain handling of circular and dotted lists.
+
+2004-05-19  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * modes.texi (Search-based Fontification): Fix typo.
+
+2004-05-10  Juanma Barranquero  <lektu@terra.es>
+
+       * modes.texi (Mode Line Variables): Fix description of
+       global-mode-string, which is now after which-func-mode, not the
+       buffer name.
+
+2004-05-07  Lars Hansen  <larsh@math.ku.dk>
+
+       * modes.texi (Desktop Save Mode): Add.
+       (Modes): Add menu entry Desktop Save Mode.
+
+       * hooks.texi: Add desktop-after-read-hook,
+       desktop-no-desktop-file-hook and desktop-save-hook.
+
+       * locals.texi: Add desktop-save-buffer.
+
+2004-04-30  Jesper Harder  <harder@ifa.au.dk>
+
+       * display.texi: emacs -> Emacs.
+
+2004-04-27  Matthew Mundell  <matt@mundell.ukfsn.org>
+
+       * files.texi (Changing Files): Document set-file-times.
+
+2004-04-23  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in: Add "-*- makefile -*-" mode tag.
+
+2004-04-18  Jesper Harder  <harder@ifa.au.dk>
+
+       * tips.texi (Coding Conventions): defopt -> defcustom.
+
+2004-04-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * sequences.texi: Various clarifications.
+
+2004-04-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffers.texi (Read Only Buffers): Mention optional ARG to
+       `toggle-read-only'.
+
+2004-04-14  Nick Roberts  <nick@nick.uklinux.net>
+
+       * windows.texi (Selecting Windows): Note that get-lru-window
+       returns a full-width window if possible.
+
+2004-04-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffers.texi: Various changes in addition to:
+       (Buffer File Name): Add `find-buffer-visiting'.
+       (Buffer Modification): Mention optional ARG to `not-modified'.
+       (Indirect Buffers): Mention optional CLONE argument to
+       `make-indirect-buffer'.
+
+       * files.texi: Various changes in addition to:
+       (Visiting Functions): `find-file-hook' is now a normal hook.
+       (File Name Expansion): Explain difference between the way that
+       `expand-file-name' and `file-truename' treat `..'.
+       (Contents of Directories): Mention optional ID-FORMAT argument to
+       `directory-files-and-attributes'.
+       (Format Conversion): Mention new optional CONFIRM argument to
+       `format-write-file'.
+
+2004-04-12  Miles Bader  <miles@gnu.org>
+
+       * macros.texi (Expansion): Add description of `macroexpand-all'.
+
+2004-04-05  Jesper Harder  <harder@ifa.au.dk>
+
+       * variables.texi (Variable Aliases):
+       Mention cyclic-variable-indirection.
+
+       * errors.texi (Standard Errors): Ditto.
+
+2004-04-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * backups.texi: Various small changes in addition to:
+       (Making Backups): Mention return value of `backup-buffer'.
+       (Auto-Saving): Mention optional FORCE argument to
+       `delete-auto-save-file-if-necessary'.
+       (Reverting): Mention optional PRESERVE-MODES argument to
+       `revert-buffer'.  Correct description of `revert-buffer-function'.
+
+2004-03-22  Juri Linkov  <juri@jurta.org>
+
+       * sequences.texi (Sequence Functions): Replace xref to `Vectors'
+       with `Vector Functions'.
+
+       * text.texi (Sorting): Add missing quote.
+
+2004-03-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * intro.texi (Lisp History): Replace xref to `cl' manual with
+       inforef.
+
+2004-03-12  Richard M. Stallman  <rms@gnu.org>
+
+       * intro.texi (Version Info): Add arg to emacs-version.
+       (Lisp History): Change xref to CL manual.
+
+2004-03-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.texi (Completion Commands): Add xref to Emacs manual
+       for Partial Completion mode.
+
+2004-03-07  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * customize.texi: Fix typo.  Remove eol whitespace.
+
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * processes.texi: Fix typos.
+
+       * lists.texi (Building Lists): Minor clarification.
+
+       * hash.texi (Creating Hash): Correct the meaning of t for WEAK
+       in make-hash-table.
+
+2004-02-29  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of
+       rm, and ignore exit code.
+
+2004-02-27  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * display.texi (Defining Faces): Add description for min-colors.
+       Update example.
+
+2004-02-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * abbrevs.texi: Various corrections and clarifications in addition
+       to the following:
+       (Abbrev Tables): Delete add-abbrev (as suggested by RMS).
+
+2004-02-22  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
+
+       * calendar.texi (Holiday Customizing): Quote arg of holiday-sexp.
+
+2004-02-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * text.texi: Various small changes in addition to the following:
+       (User-Level Deletion): Mention optional BACKWARD-ONLY argument
+       to delete-horizontal-space.
+       (Kill Functions, Yanking, Low-Level Kill Ring): Clarify and correct
+       description of yank-handler text property at various places.
+
+       * frames.texi (Window System Selections): Add anchor.
+
+       * syntax.texi (Syntax Table Functions): Clarify and correct
+       descriptions of make-syntax-table and copy-syntax-table.
+       (Motion and Syntax): Clarify SYNTAXES argument to
+       skip-syntax-forward.
+       (Parsing Expressions): Mention that the return value of
+       parse-partial-sexp is currently a list of ten rather than nine
+       elements.
+       (Categories): Various corrections and clarifications.
+
+2004-02-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * markers.texi (Marker Insertion Types): Minor change.
+
+       * locals.texi (Standard Buffer-Local Variables):
+       * commands.texi (Interactive Codes, Using Interactive):
+       * functions.texi (Related Topics): Fix xrefs.
+
+2004-02-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Sets And Lists): Update description of delete-dups.
+
+2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
+
+       * keymaps.texi (Tool Bar): tool-bar-item => tool-bar-button.
+
+2004-02-16  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * frames.texi (Parameter Access): frame-parameters arg is optional.
+       modify-frame-parameters handles nil for FRAME.
+       (Window Frame Parameters): menu-bar-lines and tool-bar-lines
+       are all-or-nothing for certain toolkits.
+       Mention parameter wait-for-wm.
+       (Frames and Windows): In frame-first-window and frame-selected-window
+       the arg is optional.
+       (Input Focus): In redirect-frame-focus the second arg is optional.
+       (Window System Selections): Mention selection type CLIPBOARD.
+       Mention data-type UTF8_STRING.
+       Mention numbering of cut buffers.
+       (Resources): Describe x-resource-name.
+
+2004-02-16  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Buffers and Windows): Delete false table
+       about all-frames.
+
+       * syntax.texi (Parsing Expressions): Delete old caveat
+       about parse-sexp-ignore-comments.
+
+       * streams.texi (Output Variables): Add print-quoted.
+
+       * lists.texi (Building Lists): Minor cleanup.
+
+       * hash.texi (Creating Hash): Correct and clarify doc of WEAK values.
+
+       * display.texi (Overlays): Explain overlays use markers.
+       (Managing Overlays): Explain front-advance and rear-advance
+       in more detail.
+
+       * loading.texi (Unloading): Document unload-feature-special-hooks.
+       Get rid of fns-NNN.el file.
+
+2004-02-16  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
+
+       * help.texi (Describing Characters): Fix text-char-description
+       example output.
+
+       * edebug.texi (Using Edebug): Fix example.
+
+       * debugging.texi (Internals of Debugger): Fix return value.
+
+       * files.texi (Changing Files): Fix argname.
+
+       * calendar.texi: Fix parens, and default values.
+
+       * display.texi, frames.texi, internals.texi, modes.texi: Minor fixes.
+       * nonascii.texi, objects.texi, os.texi: Minor fixes.
+       * searching.texi, text.texi, tips.texi, windows.texi: Minor fixes.
+
+       * positions.texi (Text Lines): Don't add -1 in current-line.
+
+2004-02-16  Richard M. Stallman  <rms@gnu.org>
+
+       * compile.texi (Compiler Errors): if-boundp feature applies to cond.
+
+2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
+
+       * processes.texi (Low-Level Network): Fix a typo.
+
+2004-02-12  Kim F. Storm  <storm@cua.dk>
+
+       * display.texi (Fringes): Use consistent wording.
+       Note that window-fringe's window arg is optional.
+       (Scroll Bars): Use consistent wording.
+
+2004-02-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Comment Tips): Document the new conventions for
+       commenting out code.
+
+2004-02-07  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * positions.texi (Text Lines): Add missing end defun.
+
+2004-02-07  Kim F. Storm  <storm@cua.dk>
+
+       * positions.texi (Text Lines): Add line-number-at-pos.
+
+2004-02-06  John Paul Wallington  <jpw@gnu.org>
+
+       * display.texi (Button Properties, Button Buffer Commands):
+       mouse-2 invokes button, not down-mouse-1.
+
+2004-02-04  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.w32-in: Sync with Makefile.in changes.
+
+2004-02-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.texi (Text from Minibuffer): Various corrections and
+       clarifications.
+       (Object from Minibuffer): Correct Lisp description of
+       read-minibuffer.
+       (Minibuffer History): Clarify description of cons values for
+       HISTORY arguments.
+       (Basic Completion): Various corrections and clarifications.
+       Add completion-regexp-list.
+       (Minibuffer Completion): Correct and clarify description of
+       completing-read.
+       (Completion Commands): Mention Partial Completion mode.
+       Various other minor changes.
+       (High-Level Completion): Various corrections and clarifications.
+       (Reading File Names): Ditto.
+       (Minibuffer Misc): Ditto.
+
+2004-01-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * strings.texi (Text Comparison): assoc-string also matches
+       elements of alists that are strings instead of conses.
+       (Formatting Strings): Standardize Texinfo usage.  Update index
+       entries.
+
+2004-01-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Sets And Lists): Add delete-dups.
+
+2004-01-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * edebug.texi (Instrumenting Macro Calls): `declare' is not a
+       special form.
+       * macros.texi (Defining Macros): Update description of `declare',
+       which now is a macro.
+       (Wrong Time): Fix typos.
+
+2004-01-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * compile.texi (Compilation Functions): Expand descriptions of
+       `compile-defun', `byte-compile-file', `byte-recompile-directory'
+       and `batch-byte-compile'.  In particular, mention and describe
+       all optional arguments.
+       (Disassembly): Correct and clarify the description of `disassemble'.
+
+2004-01-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * searching.texi: Various small changes in addition to the
+       following.
+       (Regexp Example): Adapt to new value of `sentence-end'.
+       (Regexp Functions): The PAREN argument to `regexp-opt' can be
+       `words'.
+       (Search and Replace): Add usage note for `perform-replace'.
+       (Entire Match Data): Mention INTEGERS and REUSE arguments to
+       `match-data'.
+       (Standard Regexps): Update for new values of `paragraph-start'
+       and `sentence-end'.
+
+2004-01-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.texi (Saving Buffers): Clarify descriptions of
+       `write-contents-functions' and `before-save-hook'.
+       Make the defvar's for `before-save-hook' and `after-save-hook'
+       into defopt's.
+
+2004-01-07  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Click Events): Describe new image and
+       width/height elements of click events.
+       (Accessing Events): Add posn-string, posn-image, and
+       posn-object-width-height.  Change posn-object to return either
+       image or string object.
+
+2004-01-01  Simon Josefsson  <jas@extundo.com>
+
+       * hooks.texi (Standard Hooks): Add before-save-hook.
+       * files.texi (Saving Buffers): Likewise.
+
+2004-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * frames.texi (Frames and Windows): Delete frame-root-window.
+
+2004-01-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * eval.texi, hash.texi, help.texi, symbols.texi: Add anchors.
+
+       * functions.texi: Various small changes in addition to the
+       following.
+       (What Is a Function): `functionp' returns nil for macros.
+       Clarify behavior of this and following functions for symbol arguments.
+       (Function Documentation): Add `\' in front of (fn @var{arglist})
+       and explain why.
+       (Defining Functions): Mention DOCSTRING argument to `defalias'.
+       Add anchor.
+       (Mapping Functions): Add anchor.  Unquote nil in mapcar* example.
+
+2004-01-01  Miles Bader  <miles@gnu.org>
+
+       * display.texi (Buttons): New section.
+
+2003-12-31  Andreas Schwab  <schwab@suse.de>
+
+       * numbers.texi (Math Functions): sqrt reports a domain-error
+       error.
+       (Float Basics): Use `(/ 0.0 0.0)' instead of `(sqrt -1.0)'.
+
+2003-12-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Documentation Tips): Update item on hyperlinks in
+       documentation strings.
+
+       * errors.texi (Standard Errors): Various small corrections and
+       additions.
+
+       * control.texi: Various small changes in addition to the
+       following.
+       (Signaling Errors): Provide some more details on how `signal'
+       constructs the error message.  Add anchor to the definition of
+       `signal'.
+       (Error Symbols): Describe special treatment of `quit'.
+       (Cleanups): Rename BODY argument of `unwind-protect' to BODY-FORM
+       to emphasize that it has to be a single form.
+
+       * buffers.texi: Add anchor.
+
+2003-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Choosing Window): Add same-window-p, special-display-p.
+       (Window Configurations): Add window-configuration-frame.
+
+       * variables.texi (Creating Buffer-Local): Add local-variable-if-set-p.
+
+       * text.texi (Examining Properties): Add get-char-property-and-overlay.
+       Change arg name in get-char-property.
+       (Special Properties): Update handling of keymap property.
+
+       * strings.texi (Modifying Strings): Add clear-string.
+       (Text Comparison): Add assoc-string and remove
+       assoc-ignore-case, assoc-ignore-representation.
+
+       * os.texi (Time of Day): Add set-time-zone-rule.
+
+       * numbers.texi (Math Functions): asin, acos, log, log10
+       report domain-error errors.
+
+       * nonascii.texi (Converting Representations):
+       Add multibyte-char-to-unibyte and unibyte-char-to-multibyte.
+       (Encoding and I/O): Add file-name-coding-system.
+
+       * modes.texi (Search-based Fontification): Explain that
+       face specs are symbols with face names as values.
+
+       * minibuf.texi (Minibuffer Misc): Add set-minibuffer-window.
+
+       * lists.texi (Building Lists): remq moved elsewhere.
+       (Sets And Lists): remq moved here.
+       (Association Lists): Refer to assoc-string.
+
+       * internals.texi (Garbage Collection): Add memory-use-counts.
+
+       * frames.texi (Frames and Windows): Add set-frame-selected-window
+       and frame-root-window.
+
+       * files.texi (Contents of Directories):
+       Add directory-files-and-attributes.
+
+       * display.texi (Refresh Screen): Add force-window-update.
+       (Invisible Text): Explain about moving point out of invis text.
+       (Overlay Properties): Add overlay-properties.
+       (Managing Overlays): Add overlayp.
+       (GIF Images): Invalid image number displays a hollow box.
+
+       * buffers.texi (Buffer Modification): Add restore-buffer-modified-p.
+       (Killing Buffers): Add buffer-live-p.
+
+2003-12-25  Markus Rost  <rost@mathematik.uni-bielefeld.de>
+
+       * display.texi (Fringes): Fix typo "set-buffer-window".
+
+2003-12-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi, eval.texi, help.texi, internals.texi, loading.texi:
+       * nonascii.texi, processes.texi, tips.texi, variables.texi:
+       Add or change various xrefs and anchors.
+
+       * commands.texi: Replace all occurrences of @acronym{CAR} with
+       @sc{car}, for consistency with the rest of the Elisp manual.
+       `car' and `cdr' are historically acronyms, but are no longer
+       widely thought of as such.
+
+       * internals.texi (Pure Storage): Mention that `purecopy' does not
+       copy text properties.
+       (Object Internals): Now 29 bits are used (in most implementations)
+       to address Lisp objects.
+
+       * variables.texi (Variables with Restricted Values): New node.
+
+       * objects.texi (Lisp Data Types): Mention that certain variables
+       can only take on a restricted set of values and add an xref to
+       the new node "Variables with Restricted Values".
+
+       * eval.texi (Function Indirection): Describe the errors that
+       `indirect-function' can signal.
+       (Eval): Clarify the descriptions of `eval-region' and `values'.
+       Describe `eval-buffer' instead of `eval-current-buffer' and
+       mention `eval-current-buffer' as an alias for `current-buffer'.
+       Correct the description and mention all optional arguments.
+
+       * nonascii.texi: Various small changes in addition to the
+       following.
+       (Converting Representations): Clarify behavior of
+       `string-make-multibyte' and `string-to-multibyte' for unibyte all
+       ASCII arguments.
+       (Character Sets): Document the variable `charset-list' and adapt
+       the definition of the function `charset-list' accordingly.
+       (Translation of Characters): Clarify use of generic characters in
+       `make-translation-table'.  Clarify and correct the description of
+       the use of translation tables in encoding and decoding.
+       (User-Chosen Coding Systems): Correct and clarify the description
+       of `select-safe-coding-system'.
+       (Default Coding Systems): Clarify description of
+       `file-coding-system-alist'.
+
+2003-11-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * strings.texi (Text Comparison): Correctly describe when two
+       strings are `equal'.  Combine and clarify descriptions of
+       `assoc-ignore-case' and `assoc-ignore-representation'.
+
+       * objects.texi (Non-ASCII in Strings): Clarify description of
+       when a string is unibyte or multibyte.
+       (Bool-Vector Type): Update examples.
+       (Equality Predicates): Correctly describe when two strings are
+       `equal'.
+
+2003-11-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lists.texi (Building Lists): `append' no longer accepts integer
+       arguments.  Update the description of `number-sequence' to reflect
+       recent changes.
+       (Sets And Lists): Describe `member-ignore-case' after `member'.
+
+2003-11-27  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Click Events): Click object may be an images.
+       Describe (dx . dy) element of click positions.
+       (Accessing Events): Remove duplicate posn-timestamp.
+       New functions posn-object and posn-object-x-y.
+
+2003-11-23  Kim F. Storm  <storm@cua.dk>
+
+       * commands.texi (Click Events): Describe enhancements to event
+       position lists, including new text-pos and (col . row) items.
+       Mention left-fringe and right-fringe area events.
+       (Accessing Events): New functions posn-area and
+       posn-actual-col-row.  Mention posn-timestamp.  Mention that
+       posn-point in non-text area still returns buffer position.
+       Clarify posn-col-row.
+
+2003-11-21  Lars Hansen  <larsh@math.ku.dk>
+
+       * files.texi (File Attributes): Describe new parameter ID-FORMAT.
+       * anti.texi (File Attributes): Describe removed parameter
+       ID-FORMAT.
+
+2003-11-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * positions.texi (Positions): Mention that, if a marker is used as
+       a position, its buffer is ignored.
+
+       * markers.texi (Overview of Markers): Mention it here too.
+
+2003-11-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * numbers.texi (Numeric Conversions): Not just `floor', but also
+       `truncate', `ceiling' and `round' accept optional argument DIVISOR.
+
+2003-11-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * markers.texi (Creating Markers): Specify insertion type of
+       created markers.  Add xref to `Marker Insertion Types'.
+       Second argument to `copy-marker' is optional.
+       (Marker Insertion Types): Mention that most markers are created
+       with insertion type nil.
+       (The Mark): Correctly describe when `mark' signals an error.
+       (The Region): Correctly describe when `region-beginning' and
+       `region-end' signal an error.
+
+2003-11-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * hash.texi (Creating Hash): Clarify description of `eql'.
+       `makehash' is obsolete.
+       (Hash Access): Add Common Lisp notes for `remhash' and `clrhash'.
+
+       * positions.texi (Point): Change description of `buffer-end', so
+       that it is also correct for floating point arguments.
+       (List Motion): Correct argument lists of `beginning-of-defun' and
+       `end-of-defun'.
+       (Excursions): Add xref to `Marker Insertion Types'.
+       (Narrowing): Argument to `narrow-to-page' is optional.
+
+2003-11-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * streams.texi (Output Streams): Clarify behavior of point for
+       marker output streams.
+
+2003-11-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * variables.texi (Defining Variables): Second argument to
+       `defconst' is not optional.
+       (Setting Variables): Mention optional argument APPEND to
+       `add-to-list'.
+       (Creating Buffer-Local): Expand description of
+       `make-variable-buffer-local'.
+       (Frame-Local Variables): Expand description of
+       `make-variable-frame-local'.
+       (Variable Aliases): Correct description of optional argument
+       DOCSTRING to `defvaralias'.  Mention return value of
+       `defvaralias'.
+       (File Local Variables): Add xref to `File variables' in Emacs
+       Manual.  Correct description of `hack-local-variables'.  Mention
+       `safe-local-variable' property.  Mention optional second argument
+       to `risky-local-variable-p'.
+
+2003-11-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * symbols.texi (Symbol Plists): Mention return value of `setplist'.
+
+2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
+
+       * lispref/anti.texi, lispref/backups.texi, lispref/commands.texi
+       lispref/customize.texi, lispref/display.texi, lispref/files.texi,
+       lispref/internals.texi, lispref/keymaps.texi, lispref/loading.texi,
+       lispref/modes.texi, lispref/nonascii.texi, lispref/numbers.texi,
+       lispref/objects.texi, lispref/os.texi, lispref/positions.texi,
+       lispref/processes.texi, lispref/searching.texi,
+       lispref/sequences.texi, lispref/streams.texi, lispref/strings.texi,
+       lispref/syntax.texi, lispref/text.texi: Replace @sc{foo} with
+       @acronym{FOO}.
+
+2003-10-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * strings.texi (Creating Strings): Argument START to `substring'
+       can not be `nil'.  Expand description of
+       `substring-no-properties'.  Correct description of `split-string',
+       especially with respect to empty matches.  Prevent very bad line
+       break in definition of `split-string-default-separators'.
+       (Text Comparison): `string=' and `string<' also accept symbols as
+       arguments.
+       (String Conversion): More completely describe argument BASE in
+       `string-to-number'.
+       (Formatting Strings): `%s' and `%S' in `format' do require
+       corresponding object.  Clarify behavior of numeric prefix after
+       `%' in `format'.
+       (Case Conversion): The argument to `upcase-initials' can be a
+       character.
+
+2003-10-27  Kenichi Handa  <handa@m17n.org>
+
+       * display.texi (Fontsets): Fix texinfo usage.
+
+2003-10-25  Kenichi Handa  <handa@m17n.org>
+
+       * display.texi (Fontsets): Add description of the function
+       set-fontset-font.
+
+2003-10-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * display.texi (Temporary Displays): Add xref to `Documentation
+       Tips'.
+
+       * functions.texi (Function Safety): Use inforef instead of pxref
+       for SES.
+
+2003-10-23  Andreas Schwab  <schwab@suse.de>
+
+       * Makefile.in (TEX, texinputdir): Don't define.
+       (TEXI2DVI): Define.
+       (srcs): Remove $(srcdir)/index.perm and $(srcdir)/index.unperm,
+       add $(srcdir)/index.texi.
+       ($(infodir)/elisp): Remove index.texi dependency.
+       (elisp.dvi): Likewise.  Use $(TEXI2DVI).
+       (index.texi): Remove target.
+       (dist): Don't link $(srcdir)/permute-index.
+       (clean): Don't remove index.texi.
+
+       * permute-index, index.perm: Remove.
+       * index.texi: Rename from index.unperm.
+
+2003-10-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Documentation Tips): Document new behavior for face
+       and variable hyperlinks in Help mode.
+
+2003-10-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * objects.texi (Integer Type): Update for extra bit of integer range.
+       (Character Type): Ditto.
+
+2003-10-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * numbers.texi (Integer Basics): Add index entries for reading
+       numbers in hex, octal, and binary.
+
+2003-10-16  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Mode Line Format): Mention force-mode-line-update's
+       argument.
+
+2003-10-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * windows.texi (Choosing Window): Fix typo.
+       * edebug.texi (Edebug Execution Modes): Fix typo.
+
+2003-10-13  Richard M. Stallman  <rms@gnu.org>
+
+       * windows.texi (Basic Windows): A window has fringe settings,
+       display margins and scroll-bar settings.
+       (Splitting Windows): Doc split-window return value.
+       Clean up one-window-p.
+       (Selecting Windows): Fix typo.
+       (Cyclic Window Ordering): Explain frame as ALL-FRAMES in next-window.
+       (Buffers and Windows): In set-window-buffer, explain effect
+       on fringe settings and scroll bar settings.
+       (Displaying Buffers): In pop-to-buffer, explain nil as buffer arg.
+       (Choosing Window): Use defopt for pop-up-frame-function.
+       For special-display-buffer-names, explain same-window and same-frame.
+       Clarify window-dedicated-p return value.
+       (Textual Scrolling): scroll-up and scroll-down can get an error.
+       (Horizontal Scrolling): Clarify auto-hscroll-mode.
+       Clarify set-window-hscroll.
+       (Size of Window): Don't mention tool bar in window-height.
+       (Coordinates and Windows): Explain what coordinates-in-window-p
+       returns for fringes and display margins.
+       (Window Configurations): Explain saving fringes, etc.
+
+       * tips.texi (Library Headers): Clean up Documentation.
+
+       * syntax.texi (Parsing Expressions): Clean up forward-comment
+       and parse-sexp-lookup-properties.
+
+       * sequences.texi (Sequence Functions): sequencep accepts bool-vectors.
+
+       * os.texi (System Environment): Clean up text for load-average errors.
+
+       * modes.texi (Hooks): Don't explain local hook details at front.
+       Clarify run-hooks and run-hook-with-args a little.
+       Clean up add-hook and remove-hook.
+
+       * edebug.texi (Edebug Execution Modes): Clarify t.
+       Document edebug-sit-for-seconds.
+       (Coverage Testing): Document C-x X = and =.
+       (Instrumenting Macro Calls): Fix typo.
+       (Specification List): Don't index the specification keywords.
+
+2003-10-10  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Network): Introduce make-network-process.
+
+2003-10-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * tips.texi (Library Headers): Fix typo.
+
+2003-10-07  Juri Linkov  <juri@jurta.org>
+
+       * modes.texi (Imenu): Mention imenu-create-index-function's
+       default value.  Explain submenus better.
+
+2003-10-07  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Faces for Font Lock): Fix typo.
+       (Hooks): Explain how buffer-local hook variables can refer to
+       global hook variables.
+       Various minor clarifications.
+
+2003-10-06  Lute Kamstra  <lute@gnu.org>
+
+       * tips.texi (Coding Conventions): Mention naming conventions for
+       hooks.
+
+2003-10-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loading.texi (Library Search): Correct default value of
+       load-suffixes.
+       (Named Features): Fix typo.
+
+2003-10-05  Richard M. Stallman  <rms@gnu.org>
+
+       * loading.texi (Named Features): In `provide',
+       say how to test for subfeatures.
+       (Unloading): In unload-feature, use new var name
+       unload-feature-special-hooks.
+
+2003-10-03  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Major Mode Conventions): Mention third way to set up
+       Imenu.
+       (Imenu): A number of small fixes.
+       Delete documentation of internal variable imenu--index-alist.
+       Document the return value format of imenu-create-index-function
+       functions.
+
+2003-09-30  Richard M. Stallman  <rms@gnu.org>
+
+       * processes.texi (Network): Say what stopped datagram connections do.
+
+       * lists.texi (Association Lists): Clarify `assq-delete-all'.
+
+       * display.texi (Overlay Properties): Clarify `evaporate' property.
+
+2003-09-29  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Mode Line Data): Explain when symbols in mode-line
+       constructs should be marked as risky.
+       Change cons cell into proper list.
+       (Mode Line Variables): Change cons cell into proper list.
+
+2003-09-26  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (Mode Line Data): Document the :propertize construct.
+       (Mode Line Variables): Reorder the descriptions of the variables
+       to match their order in the default mode-line-format.
+       Describe the new variables mode-line-position and mode-line-modes.
+       Update the default values of mode-line-frame-identification,
+       minor-mode-alist, and default-mode-line-format.
+       (Properties in Mode): Mention the :propertize construct.
+
+2003-09-26  Richard M. Stallman  <rms@gnu.org>
+
+       * buffers.texi, commands.texi, debugging.texi, eval.texi:
+       * loading.texi, minibuf.texi, text.texi, variables.texi:
+       Avoid @strong{Note:}.
+
+2003-09-26  Richard M. Stallman  <rms@gnu.org>
+
+       * keymaps.texi (Remapping Commands): Fix typo.
+
+2003-09-23  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * processes.texi (Low-Level Network): Fix typo.
+
+2003-09-23  Kim F. Storm  <storm@cua.dk>
+
+       * processes.texi (Network, Network Servers): Fix typos.
+       (Low-Level Network): Add timeout value for :server keyword.
+       Add new option keywords to make-network-process.
+       Add set-network-process-options.
+       Explain how to test availability of network options.
+
+2003-09-19  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Motion by Indent): Arg to
+       backward-to-indentation and forward-to-indentation is optional.
+
+       * strings.texi (Creating Strings): Add substring-no-properties.
+
+       * processes.texi
+       (Process Information): Add list-processes arg QUERY-ONLY.
+       Delete process-contact from here.
+       Add new status values for process-status.
+       Add process-get, process-put, process-plist, set-process-plist.
+       (Synchronous Processes): Add call-process-shell-command.
+       (Signals to Processes): signal-process allows process objects.
+       (Network): Complete rewrite.
+       (Network Servers, Datagrams, Low-Level Network): New nodes.
+
+       * positions.texi (Word Motion): forward-word, backward-word
+       arg is optional.  Reword.
+
+       * abbrevs.texi (Defining Abbrevs): Index no-self-insert.
+
+       * variables.texi (Creating Buffer-Local):
+       Delete duplicate definition of buffer-local-value.
+       (File Local Variables): Explain about discarding text props.
+
+2003-09-11  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Intro to Minibuffers): Explain that the minibuffer
+       changes variables that record input events.
+       (Minibuffer Misc): Add minibuffer-selected-window.
+
+       * lists.texi (Building Lists): Add copy-tree.
+
+       * display.texi (Fontsets): Add char-displayable-p.
+       (Scroll Bars): New node.
+
+2003-09-08  Lute Kamstra  <lute@gnu.org>
+
+       * modes.texi (%-Constructs): Document new `%i' and `%I'
+       constructs.
+
+2003-09-03  Peter Runestig  <peter@runestig.com>
+
+       * makefile.w32-in: New file.
+
+2003-08-29  Richard M. Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Properties): Clarify how priorities
+       affect use of the properties.
+
+2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * customize.texi (Type Keywords): Correct the description of
+       `:help-echo' in the case where `motion-doc' is a function.
+
+2003-08-14  John Paul Wallington  <jpw@gnu.org>
+
+       * modes.texi (Emulating Mode Line): Subsection, not section.
+
+2003-08-13  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi (Top): Update subnode lists in menu.
+
+       * text.texi (Insertion): Add insert-buffer-substring-no-properties.
+       (Kill Functions): kill-region has new arg yank-handler.
+       (Yanking): New node.
+       (Yank Commands): Add yank-undo-function.
+       (Low-Level Kill Ring):
+       kill-new and kill-append have new arg yank-handler.
+       (Changing Properties): Add remove-list-of-text-properties.
+       (Atomic Changes): New node.
+
+       * symbols.texi (Other Plists): Add lax-plist-get, lax-plist-put.
+
+       * streams.texi (Output Variables): Add eval-expression-print-length
+       and eval-expression-print-level.
+
+       * os.texi (Time Conversion): For encode-time, explain limits on year.
+
+       * objects.texi (Character Type): Define anchor "modifier bits".
+
+       * modes.texi (Emulating Mode Line): New node.
+       (Search-based Fontification): Font Lock uses font-lock-face property.
+       (Other Font Lock Variables): Likewise.
+
+       * keymaps.texi (Format of Keymaps): Keymaps contain char tables,
+       not vectors.
+       (Active Keymaps): Add emulation-mode-map-alists.
+       (Functions for Key Lookup): key-binding has new arg no-remap.
+       (Remapping Commands): New node.
+       (Scanning Keymaps): where-is-internal has new arg no-remap.
+       (Tool Bar): Add tool-bar-local-item-from-menu.
+       Clarify when to use tool-bar-add-item-from-menu.
+
+       * commands.texi (Interactive Call): commandp has new arg.
+       (Command Loop Info): Add this-original-command.
+
+2003-08-06  John Paul Wallington  <jpw@gnu.org>
+
+       * compile.texi (Compiler Errors): Say `@end defmac' after `@defmac'.
+
+       * display.texi (Warning Basics): Fix typo.
+       (Fringes): Add closing curly bracket and fix typo.
+
+       * elisp.texi (Top): Fix typo.
+
+2003-08-05  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi: Update lists of subnodes.
+
+       * windows.texi (Buffers and Windows): set-window-buffer has new arg.
+
+       * variables.texi (Local Variables): Use lc for example variable names.
+
+       * tips.texi (Library Headers): Explain where to put -*-.
+
+       * strings.texi (Creating Strings): Fix xref for vconcat.
+
+       * sequences.texi (Vector Functions):
+       vconcat no longer allows integer args.
+
+       * minibuf.texi (Reading File Names): read-file-name has new
+       arg PREDICATE.  New function read-directory-name.
+
+       * macros.texi (Defining Macros): Give definition of `declare'.
+       (Indenting Macros): New node.
+
+       * frames.texi (Parameter Access): Add modify-all-frames-parameters.
+       (Window Frame Parameters): Make separate table of parameters
+       that are coupled with specific face attributes.
+       (Deleting Frames): delete-frame-hooks renamed to
+       delete-frame-functions.
+
+       * files.texi (Magic File Names): Add file-remote-p.
+       Clarify file-local-copy.
+
+       * edebug.texi (Instrumenting Macro Calls): Don't define `declare'
+       here; instead xref Defining Macros.
+
+       * display.texi (Warnings): New node, and subnodes.
+       (Fringes): New node.
+
+       * debugging.texi (Test Coverage): New node.
+
+       * compile.texi (Compiler Errors): Explain with-no-warnings
+       and other ways to suppress warnings.
+
+       * commands.texi (Interactive Call): Minor clarification.
+
+       * buffers.texi (Buffer File Name): set-visited-file-name
+       renames the buffer too.
+
+       * abbrevs.texi (Abbrev Tables): Add copy-abbrev-table.
+
+2003-07-24  Markus Rost  <rost@math.ohio-state.edu>
+
+       * abbrevs.texi (Abbrev Expansion): Use \s syntax in example.
+
+2003-07-22  Markus Rost  <rost@math.ohio-state.edu>
+
+       * internals.texi (Garbage Collection): Fix previous change.
+
+2003-07-22  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Truenames): Add LIMIT arg to file-chase-links.
+
+       * display.texi (Width): Use \s syntax in example.
+       (Font Selection): Add face-font-rescale-alist.
+
+       * modes.texi (Imenu): Add xref to Emacs Manual node on Imenu.
+       Remove spurious indent in example.
+
+       * lists.texi (Building Lists): Add number-sequence.
+
+       * internals.texi (Garbage Collection): Add gcs-done, gc-elapsed.
+
+       * functions.texi (Function Documentation): Explain how to
+       show calling convention explicitly in the doc string.
+
+       * windows.texi (Selecting Windows): save-selected-window saves
+       selected window of each frame.
+       (Window Configurations): Minor change.
+
+       * syntax.texi (Syntax Table Functions): Use \s syntax in examples.
+
+       * streams.texi (Output Variables): Add print-continuous-numbering
+       and print-number-table.
+
+       * processes.texi (Decoding Output): New node.
+
+       * os.texi (Time Conversion): decode-time arg is optional.
+
+       * objects.texi (Character Type): Don't use space as example for \.
+       Make list of char names and \-sequences correspond.
+       Explain that \s is not used in strings.  `\ ' needs space after.
+
+       * nonascii.texi (Converting Representations): Add string-to-multibyte.
+       (Translation of Characters): Add translation-table-for-input.
+       (Default Coding Systems): Add auto-coding-functions.
+       (Explicit Encoding): Add decode-coding-inserted-region.
+       (Locales): Add locale-info.
+
+       * minibuf.texi (Basic Completion): Describe test-completion.
+       Collections can be lists of strings.
+       Clean up lazy-completion-table.
+       (Programmed Completion): Mention test-completion.
+       Clarify why lambda expressions are not accepted.
+       (Minibuffer Misc): Describe minibufferp.
+
+2003-07-14  Richard M. Stallman  <rms@gnu.org>
+
+       * buffers.texi (Killing Buffers): kill-buffer-hook is perm local.
+
+       * windows.texi (Selecting Windows): New arg to select-window.
+       (Selecting Windows): Add with-selected-window.
+       (Size of Window): Add window-inside-edges, etc.
+
+       * internals.texi (Garbage Collection): Add post-gc-hook.
+
+       * processes.texi (Subprocess Creation): Add exec-suffixes.
+
+       * keymaps.texi (Functions for Key Lookup): Add current-active-maps.
+       (Scanning Keymaps): Add map-keymaps.
+       (Defining Menus): Add keymap-prompt.
+
+       * numbers.texi (Integer Basics): Add most-positive-fixnum,
+       most-negative-fixnum.
+
+       * compile.texi (Byte Compilation): Explain no-byte-compile.
+       (Compiler Errors): New node.
+
+       * os.texi (User Identification): user-uid, user-real-uid
+       can return float.
+
+       * modes.texi (Major Mode Conventions): Explain about run-mode-hooks
+       and about derived modes.
+       (Minor Modes): Add minor-mode-list.
+       (Defining Minor Modes): Keyword args for define-minor-mode.
+       (Search-based Fontification): Explain managing other properties.
+       (Other Font Lock Variables): Add font-lock-extra-managed-props.
+       (Faces for Font Lock): Add font-lock-preprocessor-face.
+       (Hooks): Add run-mode-hooks and delay-mode-hooks.
+
+       * variables.texi (Creating Buffer-Local): Add buffer-local-value.
+       (Variable Aliases): Clarify defvaralias.
+
+       * loading.texi (Library Search): Add load-suffixes.
+
+       * minibuf.texi (Basic Completion): Add lazy-completion-table.
+       (Programmed Completion): Add dynamic-completion-table.
+
+       * files.texi (Changing Files): copy-file allows dir as NEWNAME.
+       (Magic File Names): Specify precedence order of handlers.
+
+       * commands.texi (Command Overview): Emacs server runs pre-command-hook
+       and post-command-hook.
+       (Waiting): New calling convention for sit-for.
+
+       * text.texi (Special Properties): local-map and keymap properties
+       apply based on their stickiness.
+
+2003-07-07  Richard M. Stallman  <rms@gnu.org>
+
+       * modes.texi (Minor Mode Conventions): Specify only some kinds
+       of list values as args to minor modes.
+
+       * files.texi (File Name Expansion): Warn about iterative use
+       of substitute-in-file-name.
+
+       * advice.texi (Activation of Advice): Clean up previous change.
+
+2003-07-06  Markus Rost  <rost@math.ohio-state.edu>
+
+       * advice.texi (Activation of Advice): Note that ad-start-advice is
+       turned on by default.
+
+2003-06-30  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Buffer Contents): Document current-word.
+       (Change Hooks): Not called for *Messages*.
+
+       * functions.texi (Defining Functions): Explain about redefining
+       primitives.
+       (Function Safety): Renamed.  Minor changes.
+       Comment out the detailed criteria for what is safe.
+
+2003-06-22  Andreas Schwab  <schwab@suse.de>
+
+       * objects.texi (Symbol Type): Fix description of examples.
+
+2003-06-16  Andreas Schwab  <schwab@suse.de>
+
+       * hash.texi (Creating Hash): Fix description of :weakness.
+
+2003-06-13  Kai Großjohann  <kai.grossjohann@gmx.net>
+
+       * files.texi (Changing Files): copy-file copies file modes, too.
+
+2003-05-28  Richard M. Stallman  <rms@gnu.org>
+
+       * strings.texi (Creating Strings): Clarify split-string.
+
+2003-05-22  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * strings.texi (Creating Strings): Update split-string specification
+       and examples.
+
+2003-05-19  Richard M. Stallman  <rms@gnu.org>
+
+       * elisp.texi: Correct invariant section names.
+
+2003-04-20  Richard M. Stallman  <rms@gnu.org>
+
+       * os.texi (Timers): Explain about timers and quitting.
+
+2003-04-19  Richard M. Stallman  <rms@gnu.org>
+
+       * internals.texi (Writing Emacs Primitives): Strings are
+       no longer special for GCPROs.  Mention GCPRO5, GCPRO6.
+       Explain GCPRO convention for varargs function args.
+
+2003-04-16  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.texi (Minibuffer Misc): Document fn minibuffer-message.
+
+2003-04-08  Richard M. Stallman  <rms@gnu.org>
+
+       * files.texi (Kinds of Files): Correct return value of file-symlink-p.
+
+2003-02-13  Kim F. Storm  <storm@cua.dk>
+
+       * objects.texi (Character Type): New \s escape for space.
+
+2003-01-31  Joe Buehler  <jhpb@draco.hekimian.com>
+
+       * os.texi (System Environment): Add cygwin system-type.
+
+2003-01-25  Richard M. Stallman  <rms@gnu.org>
+
+       * keymaps.texi: Document that a symbol can act as a keymap.
+
+2003-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * text.texi (Changing Properties): Say string indices are origin-0.
+
+       * positions.texi (Screen Lines) <compute-motion>:
+       Correct order of elts in return value.
+
+       * keymaps.texi (Changing Key Bindings) <define-key>: Mention
+       how to define a default binding.
+
+2002-12-07  Markus Rost  <rost@math.ohio-state.edu>
+
+       * loading.texi (Unloading): Fix recent change for load-history.
+
+       * customize.texi (Simple Types): Clarify description of custom
+       type 'number.  Describe new custom type 'float.
+
+2002-12-04  Markus Rost  <rost@math.ohio-state.edu>
+
+       * variables.texi (File Local Variables): Fix typo.
+
+2002-10-23  Kai Großjohann  <kai.grossjohann@uni-duisburg.de>
+
+       From Michael Albinus <Michael.Albinus@alcatel.de>.
+
+       * README: Target for Info file is `make info'.
+
+       * files.texi (File Name Components): Fix typos in
+       `file-name-sans-extension'.
+       (Magic File Names): Complete list of operations for magic file
+       name handlers.
+
+2002-09-16  Jonathan Yavner  <jyavner@engineer.com>
+
+       * variables.texi (File Local Variables): New function
+       risky-local-variable-p.
+
+2002-09-15  Jonathan Yavner  <jyavner@engineer.com>
+
+       * functions.texi (Function safety): New node about unsafep.
+
+2002-08-05  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * customize.texi (Splicing into Lists): Fix example.
+       Reported by Fabrice Bauzac <fabrice.bauzac@wanadoo.fr>.
+
+2002-06-17  Juanma Barranquero  <lektu@terra.es>
+
+       * frames.texi (Display Feature Testing): Fix typo.
+
+2002-06-12  Andreas Schwab  <schwab@suse.de>
+
+       * frames.texi (Initial Parameters, Resources): Fix references to
+       the Emacs manual.
+
+2002-05-13  Kim F. Storm  <storm@cua.dk>
+
+       * variables.texi (Intro to Buffer-Local): Updated warning and
+       example relating to changing buffer inside let.
+
+2002-03-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * os.texi (Session Management): New node about X Session management.
+
+2002-01-18  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * elisp.texi (VERSION): Set to 2.9.  Update the version of Emacs
+       to which the manual corresponds, and the copyright years.
+
+       * Makefile.in (VERSION): Set to 2.9.
+
+2001-11-29  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * elisp.texi: Change the category in @dircategory to "Emacs", to
+       make it consistent with info/dir.
+
+2001-11-25  Miles Bader  <miles@gnu.org>
+
+       * text.texi (Fields): Describe new `limit' arg in
+       field-beginning/field-end.
+
+2001-11-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * permute-index: Don't depend on csh-specific features.
+       Replace the interpreter name with /bin/sh.
+
+       * two-volume-cross-refs.txt: New file.
+       * two.el: New file.
+       * spellfile: New file.
+
+2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * permute-index: New file.
+
+       * vol1.texi, vol2.texi: Renamed from elisp-vol1.texi and
+       elisp-vol2.texi, respectively, to avoid file-name clashes in DOS
+       8+3 restricted namespace.
+
+       * Makefile.in (infodir): Define relative to $(srcdir).
+       ($(infodir)/elisp): Don't chdir into $(srcdir), but add it to the
+       include directories list via -I switch to makeinfo.
+       (index.texi): Use cp if both hard and symbolic links fail.
+
+2001-11-10  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (distclean): Add.
+
+       The following changes make ELisp manual part of the Emacs
+       distribution:
+
+       * Makefile.in: Add Copyright notice.
+       (prefix): Remove.
+       (infodir): Change value to "../info".
+       (VPATH): New variable.
+       (MAKE): Don't define.
+       (texmacrodir): Don't define.
+       (texinputdir): Append the existing value of TEXINPUTS.
+       ($(infodir)/elisp): Instead of just "elisp".  Reformat the
+       command to be compatible with man/Makefile.in, and to put the
+       output into ../info.
+       (info): Add target.
+       (installall): Target removed.
+
+2001-10-31  Pavel Janík  <Pavel@Janik.cz>
+
+       * tips.texi (Coding Conventions): Fix typo.
+
+2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (srcs): Add gpl.texi and doclicense.texi.
+
+2001-10-22  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * files.texi (File Name Components): Update the description of
+       file-name-sans-extension and file-name-extension, as they now
+       ignore leading dots.
+
+2001-10-20  Gerd Moellmann  <gerd@gnu.org>
+
+       * (Version 21.1 released.)
+
+2001-10-19  Miles Bader  <miles@gnu.org>
+
+       * positions.texi (Text Lines): Describe behavior of
+       `beginning-of-line'/`end-of-line' in the presence of field properties.
+
+2001-10-17  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (VERSION): Set to 2.8.
+       (manual): Use `manual-21'.
+
+       * elisp.texi (VERSION): Add and use it where the version
+       number was used.  Set it to 2.8.
+
+       * intro.texi: Likewise.
+
+2001-10-13  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * files.texi (File Name Completion): Document the significance of
+       a trailing slash in elements of completion-ignored-extensions.
+
+2001-10-06  Miles Bader  <miles@gnu.org>
+
+       * variables.texi (Variable Aliases): It's `@defmac', not `@defmacro'.
+
+2001-10-04  Gerd Moellmann  <gerd@gnu.org>
+
+       * variables.texi (Variable Aliases): New node.
+
+2001-10-04  Gerd Moellmann  <gerd@gnu.org>
+
+       * Branch for 21.1.
+
+2001-10-02  Miles Bader  <miles@gnu.org>
+
+       * minibuf.texi (Minibuffer Misc): Add entries for
+       `minibuffer-contents', `minibuffer-contents-no-properties', and
+       `delete-minibuffer-contents'.
+       Correct description for `minibuffer-prompt-end'.
+
+       * text.texi (Property Search): Correct descriptions of
+       `next-char-property-change' and `previous-char-property-change'.
+       Add entries for `next-single-char-property-change' and
+       `previous-single-char-property-change'.
+       Make operand names a bit more consistent.
+
+2001-09-30  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * frames.texi (Finding All Frames): Document that next-frame and
+       previous-frame are local to current terminal.
+
+2001-09-26  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * keymaps.texi (Creating Keymaps): Fix the description of the
+       result of make-keymap.
+
+2001-09-23  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * display.texi (Font Lookup, Attribute Functions)
+       (Image Descriptors): Add cross-references to the definition of
+       selected frame.
+
+       * buffers.texi (The Buffer List): Add cross-references to the
+       definition of selected frame.
+
+       * frames.texi (Input Focus): Clarify which frame is _the_ selected
+       frame at any given time.
+       (Multiple Displays, Size and Position): Add a cross-reference to
+       the definition of the selected frame.
+
+2001-09-08  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * strings.texi (String Conversion) <string-to-number>: Document
+       that a float is returned for integers that are too large.
+
+       * frames.texi (Mouse Position): Document mouse-position-function.
+       (Display Feature Testing): Document display-images-p.
+       (Window Frame Parameters): Document the cursor-type variable.
+
+       * numbers.texi (Integer Basics): Document CL style read syntax for
+       integers in bases other than 10.
+
+       * positions.texi (List Motion):
+       Document open-paren-in-column-0-is-defun-start.
+
+       * lists.texi (Sets And Lists): Document member-ignore-case.
+
+       * internals.texi (Garbage Collection): Document the used and free
+       strings report.
+       (Memory Usage): Document strings-consed.
+
+       * os.texi (Time of Day): Document float-time.
+       (Recording Input): Document that clear-this-command-keys clears
+       the vector to be returned by recent-keys.
+
+       * keymaps.texi (Scanning Keymaps) <where-is-internal>: The
+       argument keymap can be a list.
+
+       * nonascii.texi (User-Chosen Coding Systems)
+       <select-safe-coding-system>: Document the new argument
+       accept-default-p and the variable
+       select-safe-coding-system-accept-default-p.  Tell what happens if
+       buffer-file-coding-system is undecided.
+       (Default Coding Systems): Document auto-coding-regexp-alist.
+
+       * display.texi (The Echo Area) <message>: Document
+       message-truncate-lines.
+       (Glyphs): Document that the glyph table is unused on windowed
+       displays.
+
+       * help.texi (Describing Characters) <single-key-description>:
+       Document the new argument no-angles.
+       (Accessing Documentation) <documentation-property>: Document that
+       a non-string property is evaluated.
+       <documentation>: Document that the function-documentation property
+       is looked for.
+
+       * windows.texi (Selecting Windows): Document some-window.
+
+       * text.texi (MD5 Checksum): New node, documents the md5 primitive.
+
+       * hooks.texi (Standard Hooks): Add kbd-macro-termination-hook and
+       apropos-mode-hook.
+
+       * commands.texi (Using Interactive): Document interactive-form.
+       (Keyboard Macros): Document kbd-macro-termination-hook.
+       (Command Loop Info): Document that clear-this-command-keys clears
+       the vector to be returned by recent-keys.
+
+2001-09-04  Werner LEMBERG  <wl@gnu.org>
+
+       * Makefile.in (srcdir, texinputdir): New variables.
+       (srcs, index.texi, install): Use $(srcdir).
+       (.PHONY): Remove elisp.dvi.
+       (elisp): Use -I switch for makeinfo.
+       (elisp.dvi): Use $(srcdir) and $(texinputdir).
+       (installall, dist): Use $(srcdir).
+       Fix path to texinfo.tex.
+       (maintainer-clean): Add elisp.dvi and elisp.oaux.
+
+2001-08-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * display.texi (Conditional Display): Adjust to API change.
+
+       * configure: New file.
+
+2001-07-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * commands.texi (Repeat Events): Add description of
+       double-click-fuzz.
+
+2001-05-08  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.texi (Syntax Class Table): Add the missing designator for
+       comment and string fences.
+       (Syntax Properties): Add a xref to syntax table internals.
+       (Syntax Table Internals): Document string-to-syntax.
+
+2001-05-07  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (install): Use install-info command line options
+       like in Emacs' Makefile.in.
+
+2000-12-09  Miles Bader  <miles@gnu.org>
+
+       * windows.texi (Window Start): Update documentation for
+       `pos-visible-in-window-p'.
+
+2000-11-12  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lists.texi (Building Lists): Add footnote to explain how to add
+       to the end of a list.
+
+2000-10-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * files.texi (Visiting Functions): Typos.
+
+2000-10-25  Kenichi Handa  <handa@etl.go.jp>
+
+       * files.texi (Visiting Functions): Return value of
+       find-file-noselect may be a list of buffers if wildcards are used.
+
+2000-10-24  Miles Bader  <miles@lsi.nec.co.jp>
+
+       * display.texi (Defining Faces): Document `graphic' display type
+       in face specs.
+
+2000-10-18  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * hooks.texi (Standard Hooks): Replace obsolete
+       `after-make-frame-hook' with `after-make-frame-functions'.
+
+       * frames.texi (Creating Frames): Ditto.
+
+       * variables.texi (Future Local Variables): Ditto.
+
+2000-10-16  Gerd Moellmann  <gerd@gnu.org>
+
+       * display.texi (Other Image Types): Add description of :foreground
+       and :background properties of mono PBM images.
+
+2000-08-17  Werner LEMBERG  <wl@gnu.org>
+
+       * .cvsignore: New file.
+
+2000-01-05  Gerd Moellmann  <gerd@gnu.org>
+
+       * tindex.pl: New script.
+
+1999-12-03  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (MAKEINFO): New parameter.
+
+1999-09-17  Richard Stallman  <rms@gnu.org>
+
+       * Makefile.in (srcs): Add hash.texi.
+       (VERSION): Update to 20.6.
+
+1999-09-13  Richard Stallman  <rms@gnu.org>
+
+       * Makefile.in (index.texi): If cannot make a symlink, make a hard link.
+
+1998-08-29  Karl Heuer  <kwzh@gnu.org>
+
+       * configure.in: New file.
+       * Makefile.in: Renamed from Makefile.
+       (prefix, infodir): Use value obtained from configure.
+       (emacslibdir): Obsolete variable deleted.
+       (dist): Distribute configure.in, configure, Makefile.in.
+
+1998-06-12  Richard Stallman  <rms@psilocin.ai.mit.edu>
+
+       * Makefile (INSTALL_INFO): New variable.
+       (install): Run install-info.
+
+1998-05-09  Richard Stallman  <rms@psilocin.ai.mit.edu>
+
+       * Makefile (elisp.dvi): Add missing backslash.
+
+1998-05-02  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile (elisp.dvi): Don't depend on texindex or on elisp.tps.
+       Run texindex without `./'.  Always run texindex on elisp.tp.
+       (elisp.tps): Target deleted.
+
+1998-04-05  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile (srcs): Add nonascii.texi and customize.texi.
+       (dist): Start by deleting `temp'.
+
+1998-02-17  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile (makeinfo, texindex): Targets deleted.
+       (makeinfo.o, texindex.o): Targets deleted.
+       (clean, dist): Don't do anything with them or with getopt*.
+
+1998-01-30  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile (SHELL): Defined.
+
+1998-01-27  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile (elisp.tps): New target.
+       (elisp.dvi): Depend on elisp.tps.
+
+1996-04-03  Karl Heuer  <kwzh@gnu.ai.mit.edu>
+
+       * README: Update phone number.
+
+       * Makefile (elisp): Make this be the default target.
+       Depend on makeinfo.c instead of makeinfo.
+       (install): Don't depend on elisp.dvi, since we don't install that.
+       Use mkinstalldirs.
+       (dist): Add mkinstalldirs.
+
+1995-06-19  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile (VERSION): Update version number.
+       (maintainer-clean): Rename from realclean.
+
+1995-06-07  Karl Heuer  <kwzh@nutrimat.gnu.ai.mit.edu>
+
+       * Makefile (realclean): New target.
+       (elisp): Remove any old elisp-* files first.
+
+1993-11-23  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)
+
+       * Makefile (VERSION): New variable.
+       (dist): Make packaged directory name `elisp-manual-19-$(VERSION)'.
+       Compressed file suffix should be `.gz', not `.z'.
+
+1993-11-22  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (elisp): Depend on makeinfo.
+
+1993-11-19  Noah Friedman  (friedman@gnu.ai.mit.edu)
+
+       * Makefile (srcs): Add anti.texi.
+
+1993-05-28  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (infodir, prefix): New vars.
+       (install): Use infodir.
+       (emacsinfodir): Deleted.
+
+1993-05-27  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (srcs): Add calendar.texi.
+
+       * Makefile (dist): Copy texindex.c and makeinfo.c.
+       Limit elisp-* files to those with one or two digits.
+
+1993-05-16  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Makefile (dist): Changed to use Gzip instead of compress.
+
+1993-04-23  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
+
+       * loading.texi (Unloading): define-function changed back to
+       defalias.  It may not stay this way, but at least it's
+       consistent with the known-good version of the code patch.
+
+1993-03-26  Eric S. Raymond  (eric@geech.gnu.ai.mit.edu)
+
+       * modes.texi (Hooks): Document new optional arg of add-hook.
+
+1993-03-17  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
+
+       * variables.texi: Document nil initial value of buffer-local variables.
+
+       * tips.texi: Add new section on standard library headers.
+
+1993-02-27  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Makefile (srcs): Add frame.texi to the list of sources.
+
+1993-02-23  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Makefile (dist): Don't bother excluding autosave files; they'll
+       never make it into the temp directory anyway, and the hash marks
+       in the name are problematic for make and the Bourne shell.
+       (srcs):
+
+1993-02-12  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Makefile (dist): Don't include backup files or autosave files in
+       the distribution tar file.
+
+1991-11-26  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (srcs): Add index.perm.
+       (elisp.dvi): Remove erroneous shell comment.
+       Expect output of permute-index in permuted.fns.
+       Save old elisp.aux in elisp.oaux.
+       (clean): Add index.texi to be deleted.
+
+1990-08-11  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
+
+       * Makefile (elisp.dvi, index.texi): Use shell if instead of ifdef.
+
+1990-06-26  David Lawrence  (tale@geech)
+
+       * files.texi: Noted that completion-ignored-extensions is ignored
+       when making *Completions*.
+
+1990-06-08  Jay Fenlason  (hack@ai.mit.edu)
+
+       * Makefile  make dist now depends on elisp.dvi, since it tries
+       to include it in the dist file.
+
+1990-03-28  Jim Kingdon  (kingdon@mole.ai.mit.edu)
+
+       * functions.texinfo (Mapping Functions): Add missing quote.
+
+1989-06-19  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
+
+       * texinfo.tex (frenchspacing): Use decimal codes for char to be set.
+       (defunargs): Turn off \hyphenchar of \sl font temporarily.
+
+1989-05-10  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
+
+       * @result{}, @expansion{}, @print{}, @quiv{}, @point{},
+       and @error{} are the terms now being used.  The files in the
+       directory have been changed to reflect this.
+
+       * All instances of @indentedresultt{} have been changed to
+       `     @result{}', using 5 spaces at the begining of the line.
+
+1989-04-24  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
+
+       * @result{}, @expandsto{}, @prints{}, @quiv{}, @error{}, and the
+       experimental @indentedresult{}, @indentedexpandsto{} are part of
+       the texinfo.tex in this directory.  These TeX macros are not
+       stable yet.
+
+1989-04-17  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
+
+       * texinfo.tex: Temporarily added
+               \let\result=\dblarrow
+               \def\error{{\it ERROR} \longdblarrow}
+       We need to do this better soon.
+
+1989-04-11  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
+
+       * Applied Karl Berry's patches to *.texinfo files, but not to
+       texinfo.tex; those diffs are in `berry-texinfo-tex-diffs'.  (Karl's
+       new title page format is also not applied, since it requires
+       texinfo.tex changes.)
+
+       * Cleaned up `Makefile' and defined the `emacslibdir' directory
+       for the Project GNU development environment.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
+  Copyright (C) 1998-2011  Free Software Foundation, Inc.
+
+  This file is part of GNU Emacs.
+
+  GNU Emacs is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  GNU Emacs is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
index a9664a4e1977542f2f4db1b9c1fd2c96b69d09fe..d5427f6e477bd20f7e112ec080e9b14861eb5a19 100644 (file)
@@ -80,6 +80,7 @@ srcs = \
   $(srcdir)/numbers.texi \
   $(srcdir)/objects.texi \
   $(srcdir)/os.texi \
+  $(srcdir)/package.texi \
   $(srcdir)/positions.texi \
   $(srcdir)/processes.texi \
   $(srcdir)/searching.texi \
index cc3ceb8003cf7d3b809dc438d968f60e9caab7c7..fc06652661425f8a61b2c1f7b1ab16abf18bdd5a 100644 (file)
@@ -1399,6 +1399,7 @@ Preparing Lisp code for distribution
 * Packaging Basics::        The basic concepts of Emacs Lisp packages.
 * Simple Packages::         How to package a single .el file.
 * Multi-file Packages::     How to package multiple files.
+* Package Archives::        Maintaining package archives.
 
 Starting Up Emacs
 
index 3697f18baddac3959ffbc301c3b33f56b761ee76..e3bdebd28a1cc8097710e80dc24d21b42e563930 100644 (file)
@@ -1041,7 +1041,8 @@ because they eliminate symbolic links as a cause of name variation.
 
 @defun file-truename filename
 The function @code{file-truename} returns the truename of the file
-@var{filename}.  The argument must be an absolute file name.
+@var{filename}.  If the argument is not an absolute file name,
+this function first expands it against @code{default-directory}.
 
 This function does not expand environment variables.  Only
 @code{substitute-in-file-name} does that.  @xref{Definition of
index 50324a91f5f423b05f10d9394b4479cdd5dae1a7..07975e64b3552e676dabae2b101d18c50c78ff20 100644 (file)
@@ -433,18 +433,17 @@ expression, thus moving point forward one word.
 @cindex minibuffer history
 @cindex history list
 
-  A @dfn{minibuffer history list} records previous minibuffer inputs so
-the user can reuse them conveniently.  A history list is actually a
-symbol, not a list; it is a variable whose value is a list of strings
-(previous inputs), most recent first.
-
-  There are many separate history lists, used for different kinds of
-inputs.  It's the Lisp programmer's job to specify the right history
-list for each use of the minibuffer.
-
-  You specify the history list with the optional @var{hist} argument
-to either @code{read-from-minibuffer} or @code{completing-read}.  Here
-are the possible values for it:
+  A @dfn{minibuffer history list} records previous minibuffer inputs
+so the user can reuse them conveniently.  It is a variable whose value
+is a list of strings (previous inputs), most recent first.
+
+  There are many separate minibuffer history lists, used for different
+kinds of inputs.  It's the Lisp programmer's job to specify the right
+history list for each use of the minibuffer.
+
+  You specify a minibuffer history list with the optional @var{hist}
+argument to @code{read-from-minibuffer} or @code{completing-read}.
+Here are the possible values for it:
 
 @table @asis
 @item @var{variable}
index 373e1e2b5c7ac8aeeb215daf33c82c142c1781ab..4de44fe165df7fb783861356f1de563030d7f3c7 100644 (file)
 @chapter Preparing Lisp code for distribution
 @cindex packaging
 
-  Emacs provides a standard way for Emacs Lisp code to be distributed
-to users.  This approach lets users easily download, install,
-uninstall, and upgrade Lisp code that they might want to use.
+  Emacs provides a standard way to distribute Emacs Lisp code to
+users.  A @dfn{package} is a collection of one or more files,
+formatted and bundled in such a way that users can easily download,
+install, uninstall, and upgrade it.
 
-  A @dfn{package} is simply one or more files, formatted and bundled
-in a particular way.  Typically a package includes primarily Emacs
-Lisp code, but it is possible to create other kinds of packages as
-well.
+  The following sections describe how to create a package, and how to
+put it in a @dfn{package archive} for others to download.
 
 @menu
 * Packaging Basics::        The basic concepts of Emacs Lisp packages.
 * Simple Packages::         How to package a single .el file.
 * Multi-file Packages::     How to package multiple files.
+* Package Archives::        Maintaining package archives.
 @end menu
 
 @node Packaging Basics
 @section Packaging Basics
 @cindex packaging basics
-
-  A package has a few attributes:
 @cindex package attributes
 
+  A package is either a @dfn{simple package} or a @dfn{multi-file
+package}.  A simple package is stored in a package archive as a single
+Emacs Lisp file, while a multi-file package is stored as a tar file
+(containing multiple Lisp files, and possibly non-Lisp files such as a
+manual).
+
+  In ordinary usage, the difference between simple packages and
+multi-file packages is relatively unimportant; the Package Menu
+interface makes no distinction between them.  However, the procedure
+for creating them differs, as explained in the following sections.
+
+  Each package (whether simple or multi-file) has certain
+@dfn{attributes}:
+
 @table @asis
 @item Name
-A string, the name of the package.  This attribute is mandatory.  If
-it does not exist, the package cannot be installed by the package
-manager.
+A short word (e.g. @samp{auctex}).  This is usually also the symbol
+prefix used in the program (@pxref{Coding Conventions}).
 
 @item Version
-A version number, which is anything that can be parsed by
-@code{version-to-list}.  This attribute is mandatory.  If it does not
-exist, the package cannot be installed by the package manager.
+A version number, in a form that the function @code{version-to-list}
+understands (e.g. @samp{11.86}).  Each release of a package should be
+accompanied by an increase in the version number.
 
 @item Brief description
-This is shown to the user in the package menu buffer.  It is just a
-single line.  On a terminal with 80 characters per line, there are
-only 36 characters available in the package menu mode for showing the
-brief description, so it is best to keep it very brief.  If no brief
-name is given, an empty string is used.
+This is shown when the package is listed in the Package Menu.  It
+should occupy a single line, ideally in 36 characters or less.
 
 @item Long description
-This can be a @file{README} file or the like.  This is available to
-the user before the package is installed, via the package menu.  It
-should more fully describe the package and its capabilities, so a user
-can read it to decide whether he wants to install the package.  This
-attribute is optional.
+This is shown in the buffer created by @kbd{C-h P}
+(@code{describe-package}), following the package's brief description
+and installation status.  It normally spans multiple lines, and should
+fully describe the package and its capabilities.
 
 @item Dependencies
-This is a list of other packages and their minimal acceptable
-versions.  This is used both at download time (to make sure all the
-needed code is available) and at activation time (to ensure a package
-is only activated if all its dependencies have been successfully
-activated).  This attribute is optional.
-
-@item Manual
-A package can optionally include an Info manual.
+A list of other packages (possibly including minimal acceptable
+version numbers) on which this package depends.  The list may be
+empty, meaning this package has no dependencies.  Otherwise,
+installing this package also automatically installs its dependencies;
+if any dependency cannot be found, the package cannot be installed.
 @end table
 
-  Conceptually, a package goes through several state transitions (in
-reality some of these transitions are grouped together):
+  Installing a package, either via the Package Menu, or via the
+command @code{package-install-file}, creates a subdirectory of
+@code{package-user-dir} named @file{@var{name}-@var{version}}, where
+@var{name} is the package's name and @var{version} its version
+(e.g. @file{~/.emacs.d/elpa/auctex-11.86/}).  We call this the
+package's @dfn{content directory}.  It is where Emacs puts the
+package's contents (the single Lisp file for a simple package, or the
+files extracted from a multi-file package).
+
+  Emacs then searches every Lisp file in the content directory for
+autoload magic comments (@pxref{Autoload}).  These autoload
+definitions are saved to a file named @file{@var{name}-autoloads.el}
+in the content directory.  They are typically used to autoload the
+principal user commands defined in the package, but they can also
+perform other tasks, such as adding an element to
+@code{auto-mode-alist} (@pxref{Auto Major Mode}).  During this time,
+Emacs will also byte-compile the Lisp files.
+
+  After installation, and (by default) each time Emacs is started, the
+installed package is @dfn{activated}.  During activation, Emacs adds
+the package's content directory to @code{load-path}, and evaluates the
+autoload definitions in @file{@var{name}-autoloads.el}.
+
+  Note that a package typically does @emph{not} autoload every
+function and variable defined within it---only the handful of commands
+typically called to begin using the package.
 
-@table @asis
-@item Download
-Fetch the package from somewhere.
+@node Simple Packages
+@section Simple Packages
+@cindex single file packages
 
-@item Install
-Unpack the package, or write a @file{.el} file into the appropriate
-install directory.  This step also includes extracting autoloads and
-byte-compiling the Emacs Lisp code.
+  A simple package consists of a single Emacs Lisp source file.  The
+file must conform to the Emacs Lisp library header conventions
+(@pxref{Library Headers}).  The package's attributes are taken from
+the various headers, as illustrated by the following example:
 
-@item Activate
-Update @code{load-path} and @code{Info-directory-list} and evaluate
-the autoloads, so that the package is ready for the user to use.
-@end table
+@example
+@group
+;;; superfrobnicator.el --- Frobnicate and bifurcate flanges
 
-  It is best for users if packages do not do too much work at
-activation time.  The best approach is to have activation consist of
-some autoloads and little more.
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+@end group
 
-@node Simple Packages
-@section Simple Packages
-@cindex single file packages
+;; Author: J. R. Hacker <jrh@@example.com>
+;; Version: 1.3
+;; Package-Requires: ((flange "1.0"))
+;; Keywords: frobnicate
 
-  The simplest package consists of a single Emacs Lisp source file.
-In this case, all the attributes of the package (@pxref{Packaging
-Basics}) are taken from this file.
+@dots{}
 
-  The package system expects this @file{.el} file to conform to the
-Emacs Lisp library header conventions.  @xref{Library Headers}.
+;;; Commentary:
 
-  The name of the package is the same as the base name of the
-@file{.el} file, as written in the first comment line.  For example,
-given the header line:
+;; This package provides a minor mode to frobnicate and/or
+;; bifurcate any flanges you desire.  To activate it, just type
+@dots{}
 
-@smallexample
-;;; superfrobnicator.el --- frobnicate and bifurcate flanges
-@end smallexample
+;;;###autoload
+(define-minor-mode superfrobnicator-mode
+@dots{}
+@end example
 
-the package name will be @samp{superfrobnicator}.
+  The name of the package is the same as the base name of the file, as
+written on the first line.  Here, it is @samp{superfrobnicator}.
 
-  The short description of the package is also taken from the first
-line of the file.
+  The brief description is also taken from the first line.  Here, it
+is @samp{Frobnicate and bifurcate flanges}.
 
-  If the file has a ``Commentary'' header, then it is used as the long
-description.
+  The version number comes from the @samp{Package-Version} header, if
+it exists, or from the @samp{Version} header otherwise.  One or the
+other @emph{must} be present.  Here, the version number is 1.3.
 
-  The version of the package comes either from the ``Package-Version''
-header, if it exists, or from the ``Version'' header.  A package is
-required to have a version number.  Each release of a package must be
-accompanied by an increase in the version number.
+  If the file has a @samp{;;; Commentary:} section, this section is
+used as the long description.  (When displaying the description, Emacs
+omits the @samp{;;; Commentary:} line, as well as the leading comment
+characters in the commentary itself.)
 
-  If the file has a ``Package-Requires'' header, then that is used as
-the package dependencies.  Otherwise, the package is assumed not to
-have any dependencies.
+  If the file has a @samp{Package-Requires} header, that is used as
+the package dependencies.  In the above example, the package depends
+on the @samp{flange} package, version 1.0 or higher.  @xref{Library
+Headers}, for a description of the @samp{Package-Requires} header.  If
+the header is omitted, the package has no dependencies.
 
-  A single-file package cannot have an Info manual.
+  The file ought to also contain one or more autoload magic comments,
+as explained in @ref{Packaging Basics}.  In the above example, a magic
+comment autoloads @code{superfrobnicator-mode}.
 
-  The file will be scanned for autoload cookies at install time.
-@xref{Autoload}.
+  @xref{Package Archives}, for a explanation of how to add a
+single-file package to a package archive.
 
 @node Multi-file Packages
 @section Multi-file Packages
 @cindex multi-file packages
 
-  A multi-file package is just a @file{.tar} file.  While less
-convenient to create than a single-file package, a multi-file package
-also offers more features: it can include an Info manual, multiple
-Emacs Lisp files, and also other data files needed by a package.
-
-  The contents of the @file{.tar} file must all appear beneath a
-single directory, named after the package and version.  Files can
-appear in subdirectories of this top-most directory, but Emacs Lisp
-code will only be found (and thus byte-compiled) at the top-most
-level.  Also, the @file{.tar} file is typically also given this same
-name.  For example, if you are distributing version 1.3 of the
-superfrobnicator, the package file would be named
-``superfrobnicator-1.3.tar'' and the contents would all appear in the
-directory @file{superfrobnicator-1.3} in that @file{.tar}.
-
-  The package must include a @file{-pkg.el} file, named after the
-package.  In our example above, this file would be called
-@file{superfrobnicator-pkg.el}.  This file must have a single form in
-it, a call to @code{define-package}.  The package dependencies and
-brief description are taken from this form.
+  A multi-file package is less convenient to create than a single-file
+package, but it offers more features: it can include multiple Emacs
+Lisp files, an Info manual, and other file types (such as images).
+
+  Prior to installation, a multi-file package is stored in a package
+archive as a tar file.  The tar file must be named
+@file{@var{name}-@var{version}.tar}, where @var{name} is the package
+name and @var{version} is the version number.  Its contents, once
+extracted, must all appear in a directory named
+@file{@var{name}-@var{version}}, the @dfn{content directory}
+(@pxref{Packaging Basics}).  Files may also extract into
+subdirectories of the content directory.
+
+  One of the files in the content directory must be named
+@file{@var{name}-pkg.el}.  It must contain a single Lisp form,
+consisting of a call to the function @code{define-package}, described
+below.  This defines the package's version, brief description, and
+requirements.
+
+  For example, if we distribute version 1.3 of the superfrobnicator as
+a multi-file package, the tar file would be
+@file{superfrobnicator-1.3.tar}.  Its contents would extract into the
+directory @file{superfrobnicator-1.3}, and one of these would be the
+file @file{superfrobnicator-pkg.el}.
 
 @defun define-package name version &optional docstring requirements
-Define a package.  @var{name} is the name of the package, a string.
-@var{version} is the package's version, a string.  It must be in a
-form that can be understood by @code{version-to-list}.
-@var{docstring} is the short description of the package.
+This function defines a package.  @var{name} is the package name, a
+string.  @var{version} is the version, as a string of a form that can
+be understood by the function @code{version-to-list}.  @var{docstring}
+is the brief description.
+
 @var{requirements} is a list of required packages and their versions.
+Each element in this list should have the form @code{(@var{dep-name}
+@var{dep-version})}, where @var{dep-name} is a symbol whose name is
+the dependency's package name, and @var{dep-version} is the
+dependency's version (a string).
 @end defun
 
-  If a @file{README} file exists in the content directory, then it is
-used as the long description.
+  If the content directory contains a file named @file{README}, this
+file is used as the long description.
 
-  If the package has an Info manual, you should distribute the needed
-info files, plus a @file{dir} file made with @command{install-info}.
+  If the content directory contains a file named @file{dir}, this is
+assumed to be an Info directory file made with @command{install-info}.
 @xref{Invoking install-info, Invoking install-info, Invoking
-install-info, texinfo, Texinfo}.
-
-  Do not include any @file{.elc} files in the package.  Those will be
-created at install time.  Note that there is no way to control the
-order in which files are byte-compiled; your package must be robust
-here.
+install-info, texinfo, Texinfo}.  The Info files listed in this
+directory file should also be present in the content directory.  In
+this case, Emacs will automatically add the content directory to
+@code{Info-directory-list} when the package is activated.
 
-  The installation process will scan all the @file{.el} files in the
-package for autoload cookies.  @xref{Autoload}.  They are extracted
-into a @file{-autoloads.el} file (e.g.,
-@file{superfrobnicator-autoloads.el}), so do not include a file of
-that name in your package.
+  Do not include any @file{.elc} files in the package.  Those are
+created when the package is installed.  Note that there is no way to
+control the order in which files are byte-compiled.
 
-  Any other files in the @file{.tar} file are simply unpacked when the
-package is installed.  This can be useful if your package needs
-auxiliary data files --- e.g., icons or sounds.
+  Do not include any file named @file{@var{name}-autoloads.el}.  This
+file is reserved for the package's autoload definitions
+(@pxref{Packaging Basics}).  It is created automatically when the
+package is installed, by searching all the Lisp files in the package
+for autoload magic comments.
 
-  Emacs Lisp code installed via the package manager must take special
-care to be location-independent.  One easy way to do this is to make
-references to auxiliary data files relative to @var{load-file-name}.
-For example:
+  If the multi-file package contains auxiliary data files (such as
+images), the package's Lisp code can refer to these files via the
+variable @code{load-file-name} (@pxref{Loading}).  Here is an example:
 
 @smallexample
 (defconst superfrobnicator-base (file-name-directory load-file-name))
@@ -194,3 +231,8 @@ For example:
 (defun superfrobnicator-fetch-image (file)
   (expand-file-name file superfrobnicator-base))
 @end smallexample
+
+@node Package Archives
+@section Creating and Maintaining Package Archives
+
+To be done.
index 8a8de0e7fa8e20a8cb479dac52a1bc49ec2ea070..dc9fed580763baca93a2da5fc82695bc5954270b 100644 (file)
@@ -266,10 +266,9 @@ subprocess by @code{call-process-region} is encoded using a coding
 system, much like text written into a file.  @xref{Coding Systems}.
 
 @defun call-process program &optional infile destination display &rest args
-This function calls @var{program} in a separate process and waits for
-it to finish.
+This function calls @var{program} and waits for it to finish.
 
-The standard input for the process comes from file @var{infile} if
+The standard input for the new process comes from file @var{infile} if
 @var{infile} is not @code{nil}, and from the null device otherwise.
 The argument @var{destination} says where to put the process output.
 Here are the possibilities:
@@ -488,10 +487,10 @@ inputinput@point{}
 @end defun
 
 @defun call-process-shell-command command &optional infile destination display &rest args
-This function executes the shell command @var{command} synchronously
-in a separate process.  The final arguments @var{args} are additional
-arguments to add at the end of @var{command}.  The other arguments
-are handled as in @code{call-process}.
+This function executes the shell command @var{command} synchronously.
+The final arguments @var{args} are additional arguments to add at the
+end of @var{command}.  The other arguments are handled as in
+@code{call-process}.
 @end defun
 
 @defun process-file-shell-command command &optional infile destination display &rest args
@@ -506,12 +505,12 @@ then returns the command's output as a string.
 @end defun
 
 @defun process-lines program &rest args
-This function runs @var{program} in a separate process, waits for it
-to finish, and returns its output as a list of strings.  Each string
-in the list holds a single line of text output by the program; the
-end-of-line characters are stripped from each line.  The arguments
-beyond @var{program}, @var{args}, are strings that specify
-command-line arguments with which to run the program.
+This function runs @var{program}, waits for it to finish, and returns
+its output as a list of strings.  Each string in the list holds a
+single line of text output by the program; the end-of-line characters
+are stripped from each line.  The arguments beyond @var{program},
+@var{args}, are strings that specify command-line arguments with which
+to run the program.
 
 If @var{program} exits with a non-zero exit status, this function
 signals an error.
index edffb4742ecae0e1bbdb8e63bc06fc8543ebb956..27ec4831cbe32e5b3d973bda7ffc29afe2203467 100644 (file)
@@ -1767,7 +1767,8 @@ directory-local variables.  The name of the file is
 The MS-DOS version of Emacs uses @file{_dir-locals.el} instead, due to
 limitations of the DOS filesystems.
 }.  A file by that name in a directory causes Emacs to apply its
-settings to any file in that directory or any of its subdirectories.
+settings to any file in that directory or any of its subdirectories
+(optionally, you can exclude subdirectories; see below).
 If some of the subdirectories have their own @file{.dir-locals.el}
 files, Emacs uses the settings from the deepest file it finds starting
 from the file's directory and moving up the directory tree.  The file
@@ -1798,7 +1799,10 @@ file's buffer turns on a mode that is derived from @var{major-mode},
 then the all the variables in the associated @var{alist} are applied;
 @var{alist} should be of the form @code{(@var{name} . @var{value})}.
 A special value @code{nil} for @var{major-mode} means the settings are
-applicable to any mode.
+applicable to any mode.  In @var{alist}, you can use a special
+@var{name}: @code{subdirs}.  If the associated value is
+@code{nil}, the alist is only applied to files in the relevant
+directory, not to those in any subdirectories.
 
 With the second form of @var{variables}, if @var{directory} is the
 initial substring of the file's directory, then @var{list} is applied
@@ -1806,12 +1810,19 @@ recursively by following the above rules; @var{list} should be of one
 of the two forms accepted by this function in @var{variables}.
 @end defun
 
-@defun dir-locals-set-directory-class directory class
+@defun dir-locals-set-directory-class directory class &optional mtime
 This function assigns @var{class} to all the files in @code{directory}
 and its subdirectories.  Thereafter, all the variable settings
 specified for @var{class} will be applied to any visited file in
 @var{directory} and its children.  @var{class} must have been already
-defined by @code{dir-locals-set-class-variables}
+defined by @code{dir-locals-set-class-variables}.
+
+Emacs uses this function internally when it loads directory variables
+from a @code{.dir-locals.el} file.  In that case, the optional
+argument @var{mtime} holds the file modification time (as returned by
+@code{file-attributes}).  Emacs uses this time to check stored
+local variables are still valid.  If you are assigning a class
+directly, not via a file, this argument should be @code{nil}.
 @end defun
 
 @defvar dir-locals-class-alist
@@ -1821,8 +1832,9 @@ settings.  It is updated by @code{dir-locals-set-class-variables}.
 
 @defvar dir-locals-directory-cache
 This alist holds directory names, their assigned class names, and
-modification times of the associated directory local variables file.
-It is updated by @code{dir-locals-set-directory-class}.
+modification times of the associated directory local variables file
+(if there is one).  The function @code{dir-locals-set-directory-class}
+updates this list.
 @end defvar
 
 @node Frame-Local Variables
index 7d32b16790e90b6a697241f6f0390e39dae02588..2c5f998737a28624bffc323294db5fa6237971cc 100644 (file)
@@ -1,3 +1,73 @@
+2011-03-06  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel
+       and calc-logunits-nplevel to calc-dblevel and calc-nplevel,
+       respectively.
+       (Musical Notes): New section.
+       (Customizing Calc): Mention the customizable variable
+       calc-note-threshold.
+
+2011-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * url.texi (Dealing with HTTP documents): Remove reference to
+       function url-decode-text-part; never seems to have existed.  (Bug#6038)
+       (Configuration): Update url-configuration-directory description.
+
+2011-03-02  Glenn Morris  <rgm@gnu.org>
+
+       * dired-x.texi (Multiple Dired Directories): Remove mentions
+       of dired-default-directory-alist and dired-default-directory.
+       Move dired-smart-shell-command here...
+       (Miscellaneous Commands): ... from here.
+
+2011-03-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * texinfo.tex: Update to version 2011-02-24.09.
+
+2011-03-02  Glenn Morris  <rgm@gnu.org>
+
+       * dired-x.texi (Omitting Variables): Refer to add-dir-local-variable
+       instead of the obsoleted dired-omit-here-always.
+
+2011-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Frequently Asked Questions): Add Emacs 24 to
+       supported systems.
+
+2011-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * dbus.texi (Type Conversion): Grammar fix.
+
+2011-02-23  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi: Use consistently "Emacs" (instead of "GNU Emacs") and
+       "Debian GNU/Linux".
+
+       * trampver.texi [xemacs]: Set emacsothername to "Emacs".
+
+2011-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * dired-x.texi (Features): Minor rephrasing.
+       (Local Variables): Fix typos.
+
+       * edt.texi, erc.texi, gnus.texi, idlwave.texi, mh-e.texi:
+       Standardize some Emacs/XEmacs terminology.
+
+       * dired-x.texi (Features): Don't advertise obsolete local variables.
+       Simplify layout.
+       (Omitting Variables): Update local variables example.
+       (Local Variables): Say this is obsolete.  Fix description of
+       dired-enable-local-variables possible values.
+
+2011-02-22  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth.texi (Help for users): Mention ~/.netrc is also searched by
+       default now.
+
+2011-02-21  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Article Date): Clarify gnus-article-update-date-headers.
+
 2011-02-20  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * gnus.texi (Window Layout): Document layout names.
index 27c6691dfa86ffc83477ea98b8c812fa495d3a51..23ac23dce5b72ded35b20256d21f492a670a00e6 100644 (file)
@@ -127,8 +127,8 @@ you will be pwned as the kids say.
 
 ``Netrc'' files are usually called @code{.authinfo} or @code{.netrc};
 nowadays @code{.authinfo} seems to be more popular and the auth-source
-library encourages this confusion by making it the default, as you'll
-see later.
+library encourages this confusion by accepting both, as you'll see
+later.
 
 If you have problems with the search, set @code{auth-source-debug} to
 @code{t} and see what host, port, and user the library is checking in
@@ -159,7 +159,7 @@ and simplest configuration is:
 ;;; mostly equivalent (see below about fallbacks) but shorter:
 (setq auth-sources '((:source "~/.authinfo.gpg")))
 ;;; even shorter and the @emph{default}:
-(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo"))
+(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc"))
 ;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API})
 (setq auth-sources '("secrets:Login"))
 @end lisp
@@ -184,8 +184,8 @@ the defaults: any host and any port are looked up in the netrc
 file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file
 (@pxref{GnuPG and EasyPG Assistant Configuration}).  
 
-If that fails, the unencrypted netrc file @code{~/.authinfo} will
-be used.
+If that fails, the unencrypted netrc files @code{~/.authinfo} and
+@code{~/.netrc} will be used.
 
 The typical netrc line example is without a port.
 
index b9d4f8c4a2343d2103858d1c122c862ea6767ba8..88103fc00340ce6400014c2132693319d70532d3 100644 (file)
@@ -27676,6 +27676,7 @@ begin with the @kbd{u} prefix key.
 * Predefined Units::
 * User-Defined Units::
 * Logarithmic Units::
+* Musical Notes::
 @end menu
 
 @node Basic Operations on Units, The Units Table, Units, Units
@@ -28121,7 +28122,7 @@ was already a set of user-defined units in your Calc init file, it
 is replaced by the new set.  (@xref{General Mode Commands}, for a way to
 tell Calc to use a different file for the Calc init file.)
 
-@node Logarithmic Units,  , User-Defined Units, Units
+@node Logarithmic Units, Musical Notes, User-Defined Units, Units
 @section Logarithmic Units
 
 The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic
@@ -28251,18 +28252,18 @@ The @kbd{H l q} [@code{fieldquant}] command behaves like @kbd{l q} but
 computes field quantities instead of power quantities.
 
 @kindex l d
-@pindex calc-logunits-dblevel
+@pindex calc-dblevel
 @tindex dbpowerlevel
 @tindex dbfieldlevel
 @kindex l n
-@pindex calc-logunits-nplevel
+@pindex calc-nplevel
 @tindex nppowerlevel
 @tindex npfieldlevel
-The @kbd{l d} (@code{calc-logunits-dblevel}) [@code{dbpowerlevel}]
+The @kbd{l d} (@code{calc-dblevel}) [@code{dbpowerlevel}]
 command will compute the decibel level of a power quantity using the
 default reference level; @kbd{H l d} [@code{dbfieldlevel}] will
 compute the decibel level of a field quantity.  The commands @kbd{l n} 
-(@code{calc-logunits-nplevel}) [@code{nppowerlevel}] and @kbd{H l n} 
+(@code{calc-nplevel}) [@code{nppowerlevel}] and @kbd{H l n} 
 [@code{npfieldlevel}] will similarly compute neper levels.  With the
 capital @kbd{O} prefix these commands will read a reference level
 from the stack; in an algebraic formula the reference level can be
@@ -28363,6 +28364,76 @@ a logarithmic unit by a number; the @kbd{l /}
 logarithmic unit by a number. Note that the reference quantities don't
 play a role in this arithmetic. 
 
+@node Musical Notes, , Logarithmic Units, Units
+@section Musical Notes
+
+Calc can convert between musical notes and their associated
+frequencies.  Notes can be given using either scientific pitch
+notation or midi numbers.  Since these note systems are basically
+logarithmic scales, Calc uses the @kbd{l} prefix for functions
+operating on notes.
+
+Scientific pitch notation refers to a note by giving a letter
+A through G, possibly followed by a flat or sharp) with a subscript
+indicating an octave number.  Each octave starts with C and ends with
+B and 
+@c increasing each note by a semitone will result
+@c in the sequence @expr{C}, @expr{C} sharp, @expr{D}, @expr{E} flat, @expr{E},
+@c @expr{F}, @expr{F} sharp, @expr{G}, @expr{A} flat, @expr{A}, @expr{B}
+@c flat and @expr{B}.  
+the octave numbered 0 was chosen to correspond to the lowest
+audible frequency.  Using this system, middle C (about 261.625 Hz)
+corresponds to the note @expr{C} in octave 4 and is denoted
+@expr{C_4}.  Any frequency can be described by giving a note plus an
+offset in cents (where a cent is a ratio of frequencies so that a
+semitone consists of 100 cents). 
+
+The midi note number system assigns numbers to notes so that
+@expr{C_(-1)} corresponds to the midi note number 0 and @expr{G_9}
+corresponds to the midi note number 127.   A midi controller can have
+up to 128 keys and each midi note number from  0 to 127 corresponds to
+a possible key. 
+
+@kindex l s
+@pindex calc-spn
+@tindex spn
+The @kbd{l s} (@code{calc-spn}) [@code{spn}] command converts either
+a frequency or a midi number to scientific pitch notation.  For
+example, @code{500 Hz} gets converted to 
+@code{B_4 + 21.3094853649 cents} and @code{84} to @code{C_6}. 
+
+
+@kindex l m
+@pindex calc-midi
+@tindex midi
+The @kbd{l m} (@code{calc-midi}) [@code{midi}] command converts either
+a frequency or a note given in scientific pitch notation to the
+corresponding midi number. For example, @code{C_6} gets converted to 84
+and @code{440 Hz} to 69.
+
+@kindex l f
+@pindex calc-freq
+@tindex freq
+The @kbd{l f} (@code{calc-freq}) [@code{freq}] command converts either
+either a midi number or a note given in scientific pitch notation to
+the corresponding frequency. For example, @code{Asharp_2 + 30 cents}
+gets converted to @code{118.578040134 Hz} and @code{55} to
+@code{195.99771799 Hz}.
+
+Since the frequencies of notes are not usually given exactly (and are
+typically irrational), the customizable variable
+@code{calc-note-threshold} determines how close (in cents) a frequency
+needs to be to a note to be recognized as that note
+(@pxref{Customizing Calc}).  This variable has a default value of
+@code{1}.  For example, middle @var{C} is approximately
+@expr{261.625565302 Hz}; this frequency is often shortened to
+@expr{261.625 Hz}.  Without @code{calc-note-threshold} (or a value of
+@expr{0}), Calc would convert @code{261.625 Hz} to scientific pitch
+notation @code{B_3 + 99.9962592773 cents}; with the default value of
+@code{1}, Calc converts @code{261.625 Hz} to @code{C_4}.
+
+
+
 @node Store and Recall, Graphics, Units, Top
 @chapter Storing and Recalling
 
@@ -35481,6 +35552,15 @@ and the default value of @code{calc-logunits-field-reference} is
 @code{"20 uPa"}.  
 @end defvar
 
+@defvar calc-note-threshold
+See @ref{Musical Notes}.@*
+The variable @code{calc-note-threshold} is a number (written as a
+string) which determines how close (in cents) a frequency needs to be
+to a note to be recognized as that note.
+
+The default value of @code{calc-note-threshold} is 1.
+@end defvar
+
 @defvar calc-highlight-selections-with-faces
 @defvarx calc-selected-face
 @defvarx calc-nonselected-face
@@ -36129,26 +36209,29 @@ keystrokes are not listed in this summary.
 @r{    v x@:    I k T   @:             @:        @:ltpt@:(x,v)}
 
 @c
-@r{    a b@:      l +   @:             @:     2  @:lupoweradd@:(a,b)}
-@r{    a b@:    H l +   @:             @:     2  @:lufieldadd@:(a,b)}
-@r{    a b@:      l -   @:             @:     2  @:lupowersub@:(a,b)}
-@r{    a b@:    H l -   @:             @:     2  @:lufieldsub@:(a,b)}
-@r{    a b@:      l *   @:             @:     2  @:lupowermul@:(a,b)}
-@r{    a b@:    H l *   @:             @:     2  @:lufieldmul@:(a,b)}
-@r{    a b@:      l /   @:             @:     2  @:lupowerdiv@:(a,b)}
-@r{    a b@:    H l /   @:             @:     2  @:lufielddiv@:(a,b)}
-@r{      a@:      l d   @:             @:     1  @:dbpowerlevel@:(a)}
-@r{    a b@:    O l d   @:             @:     2  @:dbpowerlevel@:(a,b)}
-@r{      a@:    H l d   @:             @:     1  @:dbfieldlevel@:(a)}
-@r{    a b@:  O H l d   @:             @:     2  @:dbfieldlevel@:(a,b)}
-@r{      a@:      l n   @:             @:     1  @:nppowerlevel@:(a)}
-@r{    a b@:    O l n   @:             @:     2  @:nppowerlevel@:(a,b)}
-@r{      a@:    H l n   @:             @:     1  @:npfieldlevel@:(a)}
-@r{    a b@:  O H l n   @:             @:     2  @:npfieldlevel@:(a,b)}
-@r{      a@:      l q   @:             @:     1  @:powerquant@:(a)}
-@r{    a b@:    O l q   @:             @:     2  @:powerquant@:(a,b)}
-@r{      a@:    H l q   @:             @:     1  @:fieldquant@:(a)}
-@r{    a b@:  O H l q   @:             @:     2  @:fieldquant@:(a,b)}
+@r{    a b@:      l +   @:             @:        @:lupoweradd@:(a,b)}
+@r{    a b@:    H l +   @:             @:        @:lufieldadd@:(a,b)}
+@r{    a b@:      l -   @:             @:        @:lupowersub@:(a,b)}
+@r{    a b@:    H l -   @:             @:        @:lufieldsub@:(a,b)}
+@r{    a b@:      l *   @:             @:        @:lupowermul@:(a,b)}
+@r{    a b@:    H l *   @:             @:        @:lufieldmul@:(a,b)}
+@r{    a b@:      l /   @:             @:        @:lupowerdiv@:(a,b)}
+@r{    a b@:    H l /   @:             @:        @:lufielddiv@:(a,b)}
+@r{      a@:      l d   @:             @:        @:dbpowerlevel@:(a)}
+@r{    a b@:    O l d   @:             @:        @:dbpowerlevel@:(a,b)}
+@r{      a@:    H l d   @:             @:        @:dbfieldlevel@:(a)}
+@r{    a b@:  O H l d   @:             @:        @:dbfieldlevel@:(a,b)}
+@r{      a@:      l n   @:             @:        @:nppowerlevel@:(a)}
+@r{    a b@:    O l n   @:             @:        @:nppowerlevel@:(a,b)}
+@r{      a@:    H l n   @:             @:        @:npfieldlevel@:(a)}
+@r{    a b@:  O H l n   @:             @:        @:npfieldlevel@:(a,b)}
+@r{      a@:      l q   @:             @:        @:powerquant@:(a)}
+@r{    a b@:    O l q   @:             @:        @:powerquant@:(a,b)}
+@r{      a@:    H l q   @:             @:        @:fieldquant@:(a)}
+@r{    a b@:  O H l q   @:             @:        @:fieldquant@:(a,b)}
+@r{      a@:      l s   @:             @:        @:spn@:(a)}
+@r{      a@:      l m   @:             @:        @:midi@:(a)}
+@r{      a@:      l f   @:             @:        @:freq@:(a)}
 
 @c
 @r{       @:      m a   @:             @: 12,13  @:calc-algebraic-mode@:}
index ad202f963aa1ceac366fc56354251ce19c9f7501..e6fb00d34823032a3ee03af7d71f643bdc442b88 100644 (file)
@@ -893,10 +893,10 @@ applied, when the corresponding D-Bus message is created:
 @end example
 
 Other Lisp objects, like symbols or hash tables, are not accepted as
-input parameter.
+input parameters.
 
 If it is necessary to use another D-Bus type, a corresponding type
-symbol can be preceeded to the corresponding Lisp object. Basic D-Bus
+symbol can be prepended to the corresponding Lisp object.  Basic D-Bus
 types are represented by the type symbols @code{:byte},
 @code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32},
 @code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double},
index 003046d5a7cf2836358d8a5d8ea4ac0ad67575d4..eb79778992240c0376f8c8ac7542d8c303c7d87b 100644 (file)
@@ -129,48 +129,33 @@ original @file{dired-x.el}).
 @section Features
 @cindex Features
 
-Some features provided by Dired Extra
+Some features provided by Dired Extra:
 
 @enumerate
 @item
-Omitting uninteresting files from Dired listing.
-@itemize @bullet
-@xref{Omitting Files in Dired}.
-@end itemize
+Omitting uninteresting files from Dired listing
+(@pxref{Omitting Files in Dired}).
 @item
-Local variables for Dired directories.
-@itemize @bullet
-@xref{Local Variables}.
-@end itemize
+Guessing shell commands in Dired buffers
+(@pxref{Shell Command Guessing}).
 @item
-Guessing shell commands in Dired buffers.
-@itemize @bullet
-@xref{Shell Command Guessing}.
-@end itemize
-@item
-Running Dired command in non-Dired buffers.
-@itemize @bullet
-@xref{Virtual Dired}.
-@end itemize
+Running Dired command in non-Dired buffers
+(@pxref{Virtual Dired}).
 @item
 Finding a file mentioned in a buffer
-@itemize @bullet
-@xref{Find File At Point}.
-@end itemize
+(@pxref{Find File At Point}).
 @item
-Commands using file marking.
-@itemize @bullet
-@xref{Advanced Mark Commands}.
-@end itemize
+Commands using file marking
+(@pxref{Advanced Mark Commands}).
 @end enumerate
 
 @noindent
 @file{dired-x.el} binds some functions to keys in Dired Mode (@pxref{Key
 Index}) and also binds @kbd{C-x C-j} and @kbd{C-x 4 C-j} @emph{globally} to
-@code{dired-jump} (@pxref{Miscellaneous Commands}).  It may also bind @kbd{C-x
-C-f} and @kbd{C-x 4 C-f} to @code{dired-x-find-file} and
-@code{dired-x-find-file-other-window}, respectively (@pxref{Find File At
-Point}).
+@code{dired-jump} (@pxref{Miscellaneous Commands}).  Optionally, it
+also binds @kbd{C-x C-f} and @kbd{C-x 4 C-f} to
+@code{dired-x-find-file} and @code{dired-x-find-file-other-window},
+respectively (@pxref{Find File At Point}).
 
 @node Technical Details, , Features, Introduction
 @section Technical Details
@@ -351,28 +336,17 @@ inside your @code{dired-mode-hook} to have omitting initially turned on in
 @emph{every} Dired buffer (@pxref{Installation}).  You can then use @kbd{M-o} to
 unomit in that buffer.
 
-To enable omitting automatically only in certain directories one can use Dired
-Local Variables and put
+To enable omitting automatically only in certain directories you can add
+a directory local setting
+(@pxref{Directory Variables,,,emacs,The Gnu Emacs manual}) for Dired mode
 
 @example
-Local Variables:
-dired-omit-mode: t
-End:
+((dired-mode . ((dired-omit-mode . t))))
 @end example
 
 @noindent
-into a file @file{.dired} (the default value of
-@code{dired-local-variables-file}) in that directory (@pxref{Local Variables}).
-
-@table @code
-@findex dired-omit-here-always
-@item dired-omit-here-always
-
-This is an interactive function that creates a local variables file exactly
-like the example above (if it does not already exist) in the file
-@code{dired-local-variables-file} in the current directory and then refreshes
-the directory listing (@pxref{Local Variables}).
-@end table
+to a @file{.dir-locals.el} file in that directory.  You can use the
+command @code{add-dir-local-variable} to do this.
 
 @vindex dired-omit-files
 @item dired-omit-files
@@ -490,7 +464,6 @@ Loading @file{dired-x.el} will install Dired Omit by putting
 call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup}
 in your @code{dired-mode-hook}.
 
-@c FIXME does the standard dir-locals mechanism obsolete this?
 @node Local Variables, Shell Command Guessing, Omitting Files in Dired, Top
 @chapter Local Variables for Dired Directories
 
@@ -498,10 +471,15 @@ in your @code{dired-mode-hook}.
 @vindex dired-local-variables-file
 @vindex dired-enable-local-variables
 @noindent
-When Dired visits a directory, it looks for a file whose name is the value of
-variable @code{dired-local-variables-file} (default: @file{.dired}).  If such
-a file is found, Dired will temporarily insert it into the Dired buffer and
-run @code{hack-local-variables}.
+This Dired-X feature is obsolete as of Emacs 24.1.  The standard Emacs
+directory local variables mechanism (@pxref{Directory
+Variables,,,emacs,The Gnu Emacs manual}) replaces it.  For an example of
+the new mechanims, @pxref{Omitting Variables}.
+
+When Dired visits a directory, it looks for a file whose name is the
+value of variable @code{dired-local-variables-file} (default: @file{.dired}).
+If such a file is found, Dired will temporarily insert it into the Dired
+buffer and run @code{hack-local-variables}.
 
 @noindent
 For example, if the user puts
@@ -527,7 +505,7 @@ omitted automatically
 @noindent
 You can set @code{dired-local-variables-file} to @code{nil} to suppress this.
 The value of @code{dired-enable-local-variables} controls if and how these
-local variables are read.  This variable exists so that if may override the
+local variables are read.  This variable exists so that it may override the
 default value of @code{enable-local-variables}.
 
 @noindent
@@ -551,12 +529,10 @@ into the Dired buffer and run @code{hack-local-variables}.
 @item dired-enable-local-variables
 Default: @code{t}
 
-Controls the use of local-variables lists in Dired.  The value can be @code{t},
-@code{nil}, or something else.  A value of @code{t} means local-variables
-lists are obeyed in the @code{dired-local-variables-file}; @code{nil} means
-they are ignored; anything else means query.  This variable temporarily
-overrides the value of @code{enable-local-variables} when the Dired Local
-Variables are hacked.
+Controls the use of local-variables lists in Dired.  This variable
+temporarily overrides the value of @code{enable-local-variables} when
+the Dired Local Variables are hacked.  It takes the same values as that
+variable.  A value of @code{nil} means to ignore any Dired Local Variables.
 @end table
 
 @node Shell Command Guessing, Virtual Dired, Local Variables, Top
@@ -891,24 +867,12 @@ some commands it is appropriate that they use the current Dired
 directory instead of @code{default-directory}, e.g., @code{find-file} and
 @code{compile}.
 
-A general mechanism is provided for special handling of the working
-directory in special major modes:
-
-@table @code
-@item dired-default-directory-alist
-@vindex dired-default-directory-alist
-Default: @code{((dired-mode . (dired-current-directory)))}
-
-Alist of major modes and their notion of @code{default-directory}, as a
-Lisp expression to evaluate.  A resulting value of @code{nil} is ignored
-in favor of @code{default-directory}.
-
-@item dired-default-directory
-@findex dired-default-directory
-Use this function like you would use the variable
-@code{default-directory}, except that @code{dired-default-directory}
-also consults the variable @code{dired-default-directory-alist}.
-@end table
+@findex dired-smart-shell-command
+@findex shell-command
+@kindex M-!
+The command @code{dired-smart-shell-command}, bound to @kbd{M-!} in
+Dired buffers, is like @code{shell-command}, but it runs with
+@code{default-directory} bound to the current Dired directory.
 
 @node Find File At Point, Miscellaneous Commands, Multiple Dired Directories, Top
 @section Find File At Point
@@ -1017,12 +981,6 @@ inserted subdirectories.
 @end table
 
 @table @code
-@item dired-smart-shell-command
-@findex dired-smart-shell-command
-@findex shell-command
-@kindex M-!
-Like function @code{shell-command}, but in the current Dired directory.
-Bound to @kbd{M-!} in Dired buffers.
 
 @item dired-jump
 @findex dired-jump
index 377bb6ee8c57e7d54628b83f937ef1da21427a85..8f9f8fc03a2f66deb928ef3b71e091ba41b5a681 100644 (file)
@@ -87,7 +87,7 @@ informing you that the emulation has been enabled: ``Default EDT keymap
 active''.
 
    You can have the EDT Emulation start up automatically, each time you
-initiate a GNU Emacs session, by adding the following line to your
+initiate an Emacs session, by adding the following line to your
 @file{.emacs} file:
 
 @example
@@ -218,7 +218,7 @@ user quits without saving those buffers.
 
 @item
 Emulate EDT Keypad Mode commands closely so that current EDT users will
-find that it easy and comfortable to use GNU Emacs with a small learning
+find that it easy and comfortable to use Emacs with a small learning
 curve.
 
 @item
@@ -237,7 +237,7 @@ Provide an easy way to restore @strong{all} original Emacs key bindings,
 just as they existed before the EDT emulation was first invoked.
 
 @item
-Support GNU Emacs 19 and higher.  XEmacs 19, and above, is also supported.
+Support Emacs and XEmacs 19 and higher.
 
 @item
 Supports highlighting of marked text within the EDT emulation on all
@@ -285,13 +285,13 @@ apply to you.
 @node Starting emulation
 @chapter How to Get Started
 
-Start up GNU Emacs and enter @kbd{M-x edt-emulation-on} to begin the
+Start up Emacs and enter @kbd{M-x edt-emulation-on} to begin the
 emulation.  After initialization is complete, the following message will
 appear below the status line informing you that the emulation has been
 enabled: ``Default EDT keymap active''.
 
 You can have the EDT Emulation start up automatically, each time you
-initiate a GNU Emacs session, by adding the following line to your
+initiate an Emacs session, by adding the following line to your
 @file{.emacs} file:
 
 @example
@@ -306,7 +306,7 @@ in the EDT Default Mode).
 It is easy to customize key bindings in the EDT Emulation
 (@pxref{Customizing}).  Customizations are placed in a file called
 @file{edt-user.el}.  The Emacs @file{etc/} directory contains an
-example.  If @file{edt-user.el} is found in your GNU Emacs load path
+example.  If @file{edt-user.el} is found in your Emacs load path
 during EDT Emulation initialization, then the following message will
 appear below the status line indicating that the emulation has been
 enabled, enhanced by your own customizations: ``User EDT custom keymap
@@ -321,8 +321,8 @@ restores the original key bindings in effect just prior to invoking the
 emulation.
 
 Emacs binds keys to @acronym{ASCII} control characters and so does the
-real EDT.  Where EDT key bindings and GNU Emacs key bindings conflict,
-the default GNU Emacs key bindings are retained by the EDT emulation by
+real EDT.  Where EDT key bindings and Emacs key bindings conflict,
+the default Emacs key bindings are retained by the EDT emulation by
 default.  If you are a diehard EDT user you may not like this.  The
 @ref{Control keys} section explains how to change this so that the EDT
 bindings to @acronym{ASCII} control characters override the default
@@ -364,7 +364,7 @@ older SunOS release configured with a Sun Type 5 keyboard:
 @example
 ! File:  .xmodmaprc
 !
-! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation
+! Set up Sun Type 5 keypad for use with the Emacs EDT Emulation
 !
 keycode  53 = KP_Divide
 keycode  54 = KP_Multiply
@@ -436,7 +436,7 @@ things up nicely.
 @example
 ! File:  .xmodmaprc
 !
-! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
+! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
 !
 clear  mod2
 keycode  77 = F12
@@ -518,7 +518,7 @@ assign Num_Lock back to mod2.
 @example
 ! File:  .xmodmaprc
 !
-! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
+! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
 !
 clear  mod2
 keycode  77 = F12
@@ -541,7 +541,7 @@ In general, you will find that this emulation of EDT replicates most,
 but not all, of EDT's most used Keypad Mode editing functions and
 behavior.  It is not perfect, but most EDT users who have tried the
 emulation agree that it is quite good enough to make it easy for
-die-hard EDT users to move over to using GNU Emacs.
+die-hard EDT users to move over to using Emacs.
 
 Here's a list of the most important differences between EDT and this GNU
 Emacs EDT Emulation.  The list is short but you must be aware of these
@@ -783,7 +783,7 @@ terminals on the same system, you need not look at @file{edt-user.el2}.
 @end ignore
 
 First, you need to have your own private lisp directory, say
-@file{~/lisp}, and you should add it to the GNU Emacs load path.
+@file{~/lisp}, and you should add it to the Emacs load path.
 
 @strong{Please note:} A few sites have different load-path requirements,
 so the above directions may need some modification if your site has such
@@ -898,8 +898,8 @@ Here are some examples:
 @node Control keys
 @section Enabling EDT Control Key Sequence Bindings
 
-Where EDT key bindings and GNU Emacs key bindings conflict, the default
-GNU Emacs key bindings are retained by default.  Some diehard EDT users
+Where EDT key bindings and Emacs key bindings conflict, the default
+Emacs key bindings are retained by default.  Some diehard EDT users
 may not like this.  So, if the variable
 @code{edt-use-EDT-control-key-bindings} is set to true in a user's
 @file{.emacs} file, then the default EDT Emulation mode will enable most
index 463a14f08d2ef14adc6004737eb46b4afff53870..b46748a08f9351579632ea8b772ccf30aed0829c 100644 (file)
@@ -36,7 +36,7 @@ and modified without restriction.
 @titlepage
 @title ERC manual
 @subtitle a full-featured IRC client
-@subtitle for GNU Emacs and XEmacs
+@subtitle for Emacs and XEmacs
 
 @c The following two commands
 @c start the copyright page.
index a9a5e4dc6eb1c0108dca201c966b5d423d1e101b..7528abca58d44ff74e1451148a5734a91ebaa997 100644 (file)
@@ -1042,11 +1042,11 @@ Emacs now supports using both X displays and ttys in the same session
 @item
 Emacs can be started as a daemon in the background.
 
-@cindex NeXTSTEP port
+@cindex NeXTstep port
 @cindex GNUstep port
 @cindex Mac OS X Cocoa
 @item
-There is a new NeXTSTEP port of Emacs.  This supports GNUstep and Mac OS
+There is a new NeXTstep port of Emacs.  This supports GNUstep and Mac OS
 X (via the Cocoa libraries).  The Carbon port of Emacs, which supported
 Mac OS X in Emacs 22, has been removed.
 
index d40522a44d5c7e386c9b668aa8df4f20d1763064..b55452cfa8276b5232eab037e0f3b50e8e846790 100644 (file)
@@ -9502,8 +9502,11 @@ Say how much time has elapsed between the article was posted and now
 Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
 @end example
 
-This line is updated continually by default.  If you wish to switch
-that off, say:
+This line is updated continually by default.  The frequency (in
+seconds) is controlled by the @code{gnus-article-update-date-headers}
+variable.
+
+If you wish to switch updating off, say:
 
 @vindex gnus-article-update-date-headers
 @lisp
@@ -22495,7 +22498,7 @@ variables should be either strings or symbols naming functions that
 return a string.  When the mouse passes over text with this property
 set, a balloon window will appear and display the string.  Please
 refer to @ref{Tooltips, ,Tooltips, emacs, The Emacs Manual},
-(in GNU Emacs) or the doc string of @code{balloon-help-mode} (in
+(in Emacs) or the doc string of @code{balloon-help-mode} (in
 XEmacs) for more information on this.  (For technical reasons, the
 guillemets have been approximated as @samp{<<} and @samp{>>} in this
 paragraph.)
@@ -27763,7 +27766,7 @@ to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
 the second parameter.
 
 @file{make.bat} has been rewritten from scratch, it now features
-automatic recognition of XEmacs and GNU Emacs, generates
+automatic recognition of XEmacs and Emacs, generates
 @file{gnus-load.el}, checks if errors occur while compilation and
 generation of info files and reports them at the end of the build
 process.  It now uses @code{makeinfo} if it is available and falls
index 94aeb612df70822f0159d9a8530b2c8e1c894b97..8e172301915eb92da54635328c7a357353f04fd0 100644 (file)
@@ -4275,7 +4275,7 @@ browse-url-browser-function} or similar when attempting to load IDLWAVE
 under XEmacs.}
 
 You don't have the @samp{browse-url} (or other required) XEmacs package.
-Unlike GNU Emacs, XEmacs distributes many packages separately from the
+Unlike Emacs, XEmacs distributes many packages separately from the
 main program.  IDLWAVE is actually among these, but is not always the
 most up to date.  When installing IDLWAVE as an XEmacs package, it
 should prompt you for required additional packages.  When installing it
index 59da631c6ead1787a79c88d71d4aff5fd71d9b0b..43d7bc745539dac0f41998f2915237e7385c7823 100644 (file)
@@ -211,9 +211,9 @@ However, MH-E was the tip of the iceberg, and I discovered more and
 more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
 them.
 
-The MH-E package is distributed with GNU Emacs@footnote{Version
-@value{VERSION} of MH-E appeared in GNU Emacs 23.1. It is supported
-in GNU Emacs 21 and 22, as well as XEmacs 21 (except for versions
+The MH-E package is distributed with Emacs@footnote{Version
+@value{VERSION} of MH-E appeared in Emacs 23.1. It is supported
+in Emacs 21 and 22, as well as XEmacs 21 (except for versions
 21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher,
 all versions of nmh, and GNU mailutils 1.0 and higher.}, so you
 shouldn't have to do anything special to use it. Gnus is also
index 52434f4a6e4c85a4027590e599805695ec4a3073..f3f11d29f172771cf2777e89cf0e3f42610bbf52 100644 (file)
@@ -64,7 +64,7 @@ developing GNU and promoting software freedom.''
 @macro obsolete{old,new}
 @sp 1
 @strong{Compatibility}:
-@code{\new\} introduced in @semantic{} version 2.0 supercedes
+@code{\new\} introduced in @semantic{} version 2.0 supersedes
 @code{\old\} which is now obsolete.
 @end macro
 
index 4467c1e860f90463110c7c3a8c113bd0eff14223..7b943897de209b691a162dcc8cae3f37ca6a7d7e 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2011-02-14.11}
+\def\texinfoversion{2011-02-24.09}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
   \tracingmacros2
   \tracingrestores1
   \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\undefined\else % etex gives us more logging
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
     \tracingscantokens1
     \tracingifs1
     \tracinggroups1
   \else\ifx\temp\offword \plainnonfrenchspacing
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
   \fi\fi
 }
 
@@ -1082,9 +1082,8 @@ where each line of input produces a line of output.}
 \newif\ifpdfmakepagedest
 
 % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
 \else
   \ifx\pdfoutput\relax
   \else
@@ -1516,7 +1515,7 @@ output) for that.)}
 % if we are producing pdf, and we have \pdffontattr, then define cmaps.
 % (\pdffontattr was introduced many years ago, but people still run
 % older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
   \begingroup
     \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
     \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1783,7 +1782,7 @@ end
 % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix
 % before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
 \def\fontprefix{cm}
 \fi
 % Support font families that don't use the same naming scheme as CM.
@@ -2297,12 +2296,11 @@ end
 
 \let\markupsetuplqkbd \markupsetnoligaturesquoteleft
 
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report.  xpdf does work with the
-% regular 0x27.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report.  xpdf does work with the regular 0x27.
 %
 \def\codequoteright{%
   \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
@@ -2326,6 +2324,36 @@ end
   \else \char'22 \fi
 }
 
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
 % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
 \def\noligaturesquoteleft{\relax\lq}
 
@@ -2527,7 +2555,7 @@ end
     \allowcodebreaksfalse
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
   \fi\fi
 }
 
@@ -3109,7 +3137,7 @@ end
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
 % so we'll define it if necessary.
 %
-\ifx\Orb\undefined
+\ifx\Orb\thisisundefined
 \def\Orb{\mathhexbox20D}
 \fi
 
@@ -3384,7 +3412,7 @@ end
 % This produces Day Month Year style of output.
 % Only define if not already defined, in case a txi-??.tex file has set
 % up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
 \def\today{%
   \number\day\space
   \ifcase\month
@@ -6465,7 +6493,7 @@ end
 %
 \def\Equotation{%
   \par
-  \ifx\quotationauthor\undefined\else
+  \ifx\quotationauthor\thisisundefined\else
     % indent a bit.
     \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
   \fi
@@ -7000,7 +7028,7 @@ end
 
 % To do this right we need a feature of e-TeX, \scantokens,
 % which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
   \newwrite\macscribble
   \def\scantokens#1{%
     \toks0={#1}%
@@ -7422,6 +7450,27 @@ end
   \fi
 }
 
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+
 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
 % node name, #4 the name of the Info file, #5 the name of the printed
@@ -7438,7 +7487,7 @@ end
   \setbox0=\hbox{\printedrefname\unskip}%
   \ifdim \wd0 = 0pt
     % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
       % Use the node name inside the square brackets.
       \def\printedrefname{\ignorespaces #1}%
     \else
@@ -7908,7 +7957,7 @@ end
   it from ftp://tug.org/tex/epsf.tex.}
 %
 \def\image#1{%
-  \ifx\epsfbox\undefined
+  \ifx\epsfbox\thisiundefined
     \ifwarnednoepsf \else
       \errhelp = \noepsfhelp
       \errmessage{epsf.tex not found, images will be ignored}%
index 346354b317085436ec1124d0a2fe212a5d478b33..bdbba437af7153a1e5cdf5e650c6c87ca3ab8694 100644 (file)
@@ -369,13 +369,12 @@ behind the scenes when you open a file with @value{tramp}.
 @cindex obtaining Tramp
 
 @value{tramp} is freely available on the Internet and the latest
-release may be downloaded from
-@uref{ftp://ftp.gnu.org/gnu/tramp/}.  This release includes the full
-documentation and code for @value{tramp}, suitable for installation.
-But GNU Emacs (22 or later) includes @value{tramp} already, and there
-is a @value{tramp} package for XEmacs, as well.  So maybe it is easier
-to just use those.  But if you want the bleeding edge, read
-on@dots{...}
+release may be downloaded from @uref{ftp://ftp.gnu.org/gnu/tramp/}.
+This release includes the full documentation and code for
+@value{tramp}, suitable for installation.  But Emacs (22 or later)
+includes @value{tramp} already, and there is a @value{tramp} package
+for XEmacs, as well.  So maybe it is easier to just use those.  But if
+you want the bleeding edge, read on@dots{...}
 
 For the especially brave, @value{tramp} is available from CVS.  The CVS
 version is the latest version of the code and may contain incomplete
@@ -445,10 +444,10 @@ GVFS integration started in February 2009.
 @end ifset
 
 In December 2001, @value{tramp} has been added to the XEmacs package
-repository.  Being part of the GNU Emacs repository happened in June
-2002, the first release including @value{tramp} was GNU Emacs 22.1.
+repository.  Being part of the Emacs repository happened in June 2002,
+the first release including @value{tramp} was Emacs 22.1.
 
-@value{tramp} is also a GNU/Linux Debian package since February 2001.
+@value{tramp} is also a Debian GNU/Linux package since February 2001.
 
 
 @c Installation chapter is necessary only in case of standalone
@@ -1704,9 +1703,10 @@ By default, this is set to a reasonable set of defaults for most
 machines.  The symbol @code{tramp-default-remote-path} is a place
 holder, it is replaced by the list of directories received via the
 command @command{getconf PATH} on your remote machine.  For example,
-on GNU Debian this is @file{/bin:/usr/bin}, whereas on Solaris this is
-@file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}.  It is
-recommended to apply this symbol on top of @code{tramp-remote-path}.
+on Debian GNU/Linux this is @file{/bin:/usr/bin}, whereas on Solaris
+this is @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}.
+It is recommended to apply this symbol on top of
+@code{tramp-remote-path}.
 
 It is possible, however, that your local (or remote ;) system
 administrator has put the tools you want in some obscure local
@@ -2740,8 +2740,8 @@ There is also a Savannah project page.
 @item
 Which systems does it work on?
 
-The package has been used successfully on GNU Emacs 22, GNU Emacs 23,
-XEmacs 21 (starting with 21.4), and SXEmacs 22.
+The package has been used successfully on Emacs 22, Emacs 23, Emacs
+24, XEmacs 21 (starting with 21.4), and SXEmacs 22.
 
 The package was intended to work on Unix, and it really expects a
 Unix-like system on the remote end (except the @option{smb} method),
@@ -3583,9 +3583,9 @@ printed and deleted.
 But I have decided that this is too fragile to reliably work, so on some
 systems you'll have to do without the uuencode methods.
 
-@item The @value{tramp} filename syntax differs between GNU Emacs and XEmacs.
+@item The @value{tramp} filename syntax differs between Emacs and XEmacs.
 
-The GNU Emacs maintainers wish to use a unified filename syntax for
+The Emacs maintainers wish to use a unified filename syntax for
 Ange-FTP and @value{tramp} so that users don't have to learn a new
 syntax.  It is sufficient to learn some extensions to the old syntax.
 
index ff5641fb4b40418e48faa84b406ae7a87cbb552f..437b1372c11d1c061e9edecd157940bd2f6dc3da 100644 (file)
@@ -63,7 +63,7 @@
 @set postfixhop         /
 @set ipv6prefix
 @set ipv6postfix
-@set emacsothername     GNU Emacs
+@set emacsothername     Emacs
 @set emacsotherdir      emacs
 @set emacsotherfilename tramp-emacs.html
 @end ifset
index 2bde54a8dea55e1668c4e5f6b94859d938767ebd..42594457ab111ff62d62440fa796a6d2b1b57f18 100644 (file)
@@ -116,7 +116,10 @@ The meaning of the @var{path} component depends on the service.
 @cindex @file{~/.url}
 @cindex configuration files
 The directory in which URL configuration files, the cache etc.,
-reside.  Default @file{~/.url}.
+reside.  The old default was @file{~/.url}, and this directory
+is still used if it exists.  The new default is a @file{url/}
+directory in @code{user-emacs-directory}, which is normally
+@file{~/.emacs.d}.
 @end defvar
 
 @node Parsed URLs
@@ -383,20 +386,7 @@ Currently this is just the raw header contents.
 HTTP URLs are retrieved into a buffer containing the HTTP headers
 followed by the body.  Since the headers are quasi-MIME, they may be
 processed using the MIME library.  @xref{Top,, Emacs MIME,
-emacs-mime, The Emacs MIME Manual}.  The URL package provides a
-function to do this in general:
-
-@defun url-decode-text-part handle &optional coding
-This function decodes charset-encoded text in the current buffer.  In
-Emacs, the buffer is expected to be unibyte initially and is set to
-multibyte after decoding.
-HANDLE is the MIME handle of the original part.  CODING is an explicit
-coding to use, overriding what the MIME headers specify.
-The coding system used for the decoding is returned.
-
-Note that this function doesn't deal with @samp{http-equiv} charset
-specifications in HTML @samp{<meta>} elements.
-@end defun
+emacs-mime, The Emacs MIME Manual}.
 
 @node file/ftp
 @section file and ftp
index 74787c3de3b4c774368a843340072689036a6286..13f99b466a302d887bff68cc663937a6c81f9af4 100644 (file)
@@ -1,3 +1,7 @@
+2011-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * srecode/el.srt: Fix typo.
+
 2011-02-21  Chong Yidong  <cyd@stupidchicken.com>
 
        * themes/tango-dark-theme.el: Tweak background on low-color
 
        * NEWS: Mention new Tramp method "ksu".
 
-2010-12-13  W. Martin Borgert <debacle@debian.org>  (tiny change)
+2010-12-13  W. Martin Borgert  <debacle@debian.org>  (tiny change)
 
        * schema/schemas.xml: Add DocBook (Bug#7491).
 
index 96cc97ac79550373d751ee3342f5e6753b87f1f2..ac7fdcbab0cd3dee70574a9bf8f234a4257fac68 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -71,6 +71,9 @@ from load-path.  -Q now implies this.
 client frame in parent X window ID, via XEmbed.  This works like the
 --parent-id argument to Emacs.
 
++++
+*** New emacsclient argument -q/--quiet suppresses some status messages.
+
 *** If emacsclient shuts down as a result of Emacs signalling an
 error, its exit status is 1.
 
@@ -176,6 +179,8 @@ higher-resolution time stamps.
 and SIGHUP, and upon SIGINT in batch mode.
 
 ** kill-emacs-hook is now also run in batch mode.
+If you have code that adds something to kill-emacs-hook, you should
+consider if it is still appropriate to add it in the noninteractive case.
 
 ** New scrolling commands `scroll-up-command' and `scroll-down-command'
 (bound to C-v/[next] and M-v/[prior]) does not signal errors at top/bottom
@@ -242,6 +247,15 @@ replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'.
 \f
 * Editing Changes in Emacs 24.1
 
+** Search changes
+
++++
+*** C-y in Isearch is now bound to isearch-yank-kill, instead of
+isearch-yank-line.
+
++++
+*** M-s C-e in Isearch is now bound to isearch-yank-line.
+
 +++
 ** There is a new command `count-words-region', which does what you expect.
 
@@ -330,7 +344,7 @@ prompts for a number to count from and for a format string.
 ** The Landmark game is now invoked with `landmark', not `lm'.
 
 ** Prolog mode has been completely revamped, with lots of additional
-functionality such as more intelligent indentation, electricty, support for
+functionality such as more intelligent indentation, electricity, support for
 more variants, including Mercury, and a lot more.
 
 ** shell-mode can track your cwd by reading it from your prompt.
@@ -347,6 +361,17 @@ Just set shell-dir-cookie-re to an appropriate regexp.
 ** browse-url has gotten a new variable that is used for mailto: URLs,
    `browse-url-mailto-function', which defaults to `browse-url-mail'.
 
+** Directory local variables can apply to file-less buffers, in certain modes
+(eg dired, vc-dir, log-edit).  For example, adding
+"(diff-mode . ((mode . whitespace)))" to your .dir-locals.el file,
+will turn on `whitespace-mode' for *vc-diff* buffers.  Modes should
+call `hack-dir-local-variables-non-file-buffer' to support this.
+
++++
+** You can prevent directory local variables from applying to subdirectories.
+Add an element (subdirs . nil) to the alist portion of any variables
+settings to indicate said section should not be applied to subdirectories.
+
 ** ERC changes
 
 *** New vars `erc-autojoin-timing' and `erc-autojoin-delay'.
@@ -380,6 +405,8 @@ You can get a comparable behavior with:
 
 ** Calendar, Diary, and Appt
 
+*** New function `diary-hebrew-birthday'.
+
 ---
 *** The obsolete (since Emacs 22.1) method of enabling the appt package
 by adding appt-make-list to diary-hook has been removed.  Use appt-activate.
@@ -412,16 +439,12 @@ choose a color via list-colors-display.
 *** dired-jump and dired-jump-other-window called with a prefix argument
 read a file name from the minibuffer instead of using buffer-file-name.
 
-** Directory local variables can apply to file-less buffers.
-For example, adding "(diff-mode . ((mode . whitespace)))" to your
-.dir-locals.el file, will turn on `whitespace-mode' for *vc-diff* buffers.
++++
+*** The `dired local variables' feature provided by Dired-x is obsolete.
+The standard directory local variables feature replaces it.
 
 ** SQL Mode enhancements.
 
-*** Several variables have been marked as safe local variables.  The
-variables `sql-product', `sql-user', `sql-server', `sql-database' and
-`sql-port' can now be safely used as local variables.
-
 *** `sql-dialect' is a synonym for `sql-product'.
 
 *** Added ability to login with a port on MySQL and Postgres.
@@ -530,7 +553,7 @@ objects shown and the details available are product specific.
 **** List all objects.
 Using `M-x sql-list-all', `C-c C-l a' or selecting "SQL->List all
 objects" will list all the objects in the database.  At a minimum it
-lists the tables and views in the database.  Preceeding the command by
+lists the tables and views in the database.  Preceding the command by
 universal argument may provide additional details or extend the
 listing to include other schemas objects.  The list will appear in a
 separate window in view-mode.
@@ -538,7 +561,7 @@ separate window in view-mode.
 **** List Table details.
 Using `M-x sql-list-table', `C-c C-l t' or selecting "SQL->List Table
 details" will ask for the name of a database table or view and display
-the list of columns in the relation.  Preceeding the comand with the
+the list of columns in the relation.  Preceding the command with the
 universal argument may provide additional details about each column.
 The list will appear in a separate window in view-mode.
 
@@ -553,7 +576,7 @@ In general, the SQL*Plus option SCAN should always be set OFF under
 SQL interactive mode and this option used in its place.
 
 *** SQL interactive mode will replace tabs with spaces.
-This prevents the comand interpretter for MySQL and Postgres from
+This prevents the command interpreter for MySQL and Postgres from
 listing object name completions when being sent text via
 `sql-send-*' functions.
 
@@ -562,7 +585,7 @@ listing object name completions when being sent text via
 ** sregex.el is now obsolete, since rx.el is a strict superset.
 
 ** s-region.el and pc-select are now declared obsolete,
-superceded by shift-select-mode enabled by default in 23.1.
+superseded by shift-select-mode enabled by default in 23.1.
 ** pc-mode.el is also declared obsolete.
 ** gdb-mi
 
@@ -642,6 +665,8 @@ Notifications API.  It requires D-Bus for communication.
 ** soap-client.el supports access to SOAP web services from Emacs.
 soap-inspect.el is an interactive inspector for SOAP WSDL structures.
 
+** xmodmap-generic-mode for xmodmap files.
+
 \f
 * Incompatible Lisp Changes in Emacs 24.1
 
@@ -710,6 +735,7 @@ sc.el, x-menu.el, rnews.el, rnewspost.el
 \f
 * Lisp changes in Emacs 24.1
 
+** byte-compile-disable-print-circle is obsolete.
 ** Removed the stack-trace-on-error variable.
 Also the debugger can now "continue" from an error, which means it will jump
 to the error handler as if the debugger had not been invoked instead of
@@ -800,10 +826,9 @@ displayed with a "spinning bar".
 runtime checks.
 
 ** New configure.bat option --distfiles to specify files to be
-   included in binary distribution
+included in binary distribution
 
-** New make target `dist' to create binary disttribution for Windows
-   platform
+** New make target `dist' to create binary distribution for MS Windows
 
 \f
 ----------------------------------------------------------------------
index 6b6cbe48328c667684d86fea7e970ca12481624c..3e7a364ffd0b773f237f038e1b054452ba8b8a72 100644 (file)
@@ -129,7 +129,7 @@ starting from the first line of text below the header line.
 \f
 * Changes in Emacs 23.3 on non-free operating systems
 
-** The nextstep port can have different modifiers for the left and right
+** The NeXTstep port can have different modifiers for the left and right
 alt/option key by customizing the value for ns-right-alternate-modifier.
 
 \f
@@ -697,7 +697,7 @@ a GIF library.
 
 *** Emacs now supports multi-page TIFF images.
 
-** New NeXTSTEP-based port.
+** New NeXTstep-based port.
 This provides support for GNUstep (via the GNUstep libraries) and Mac
 OS X (via the Cocoa libraries).
 
@@ -707,7 +707,7 @@ other emacsen (e.g. X11 build) use --disable-ns-self-contained.  See
 nextstep/README and nextstep/INSTALL in the Emacs source directory.
 
 ** Mac OS X is no longer supported via Carbon.
-Use the NeXTSTEP port, described above.
+Use the NeXTstep port, described above.
 
 ** The new configuration option "--with-dbus" enables D-Bus language
 bindings for Emacs.
@@ -1746,7 +1746,7 @@ directories in which `ffap-rfc' will first search for RFCs.
 *** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
 See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
 
-*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
+*** `icomplete-prospects-height' now supersedes `icomplete-prospects-length'.
 
 *** Info displays breadcrumbs in the header of the page.
 See Info-breadcrumbs-depth to control it.
index b63d560582c77a4d26786ef73112bc655d2d8672..6117e72be2a3333f44b6ff862ba0c0a73baa7f0a 100644 (file)
@@ -261,7 +261,7 @@ template defgroup :indent :blank
 ----
 (defgroup $?MODESYM$-mode nil
   "$MODESYM$ group."
-  :group 'langauges)
+  :group 'languages)
 ----
 bind "g"
 
index 6f55095aac7c9287e0810a7117c322d994fa0544..7334fa991c9f94907a7fafe1f57d6ba37434d8d2 100644 (file)
@@ -1,3 +1,7 @@
+2011-02-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * quail/ethiopic.el ("ethiopic"): Fix tpo in docstring.
+
 2011-01-28  Paul Eggert  <eggert@cs.ucla.edu>
 
        Redo spelling of Makefile variables to conform to POSIX.
@@ -27,8 +31,8 @@
 
 2010-08-28  Kenichi Handa  <handa@m17n.org>
 
-       * quail/japanese.el (quail-japanese-update-translation): Fix
-       handling of invalid key.
+       * quail/japanese.el (quail-japanese-update-translation):
+       Fix handling of invalid key.
 
 2010-08-15  Andreas Schwab  <schwab@linux-m68k.org>
 
@@ -46,8 +50,7 @@
 
 2010-08-13  Kenichi Handa  <handa@m17n.org>
 
-       * quail/greek.el ("greek-postfix"): Add rules for Greek style
-       quotes.
+       * quail/greek.el ("greek-postfix"): Add rules for Greek style quotes.
 
 2010-08-09  Kenichi Handa  <handa@m17n.org>
 
index b4aa921d56aa36621be777e874d90d5e24898a6f..19caea49629a85349f97d213c7e2e3bfbab6b0e8 100644 (file)
@@ -1,6 +1,6 @@
-;;; ja-dic.el --- dictionary for Japanese input method -*-coding: euc-japan; byte-compile-disable-print-circle:t; -*-
+;;; ja-dic.el --- dictionary for Japanese input method -*-coding: euc-japan; -*-
 ;;     Generated by the command `skkdic-convert'
-;;     Date: Tue Feb 16 15:59:19 2010
+;;     Date: Sat Feb 26 10:26:11 2011
 ;;     Original SKK dictionary file: ../SKK-DIC/SKK-JISYO.L
 
 ;; This file is part of GNU Emacs.
 
 ;; Setting okuri-nasi entries.
 (skkdic-set-okuri-nasi
-"¤ò¤ó¤Ê ½÷"
 "¡¼ ¡Á"
 "¤¢ ÓË ÌÀ °Â ë¨ Ò÷ °£ Ûó Ð³ °¢ áÞ Õ´ °¤ È࠸㠰¡"
 "¤¢¡¼¤¯¤È¤¦ ¥¢¡¼¥¯Åô"
index 7eaaab4aebc71804ed48d7d791fc32d0e43aab24..824048534e0094226b3ec68ad592f24fa85a78d6 100644 (file)
@@ -39,7 +39,7 @@
 ;; This was `cyrillic-jcuken'.  Alexander Mikhailian
 ;; <mikhailian@altern.org> says:  "cyrillic-jcuken" is actually
 ;; russian.  It is ok but a bit outdated.  This layout has been used
-;; in typewriters for ages but it has been superceeded on desktops by
+;; in typewriters for ages but it has been superseded on desktops by
 ;; a variation of this layout, implemented in M$ Windows software.
 ;; The Windows layout is greatly preferred because of the comma and
 ;; period being placed more conviniently and, of course, because of
index bdbb214723e3cf4525d936c16da17a299b24e6b1..210aeea7e62e6f216bd2dc34bd2e81a3eeae93bd 100644 (file)
@@ -62,7 +62,7 @@ S-SPC or `M-x ethio-insert-ethio-space'
 
 C-' or `M-x ethio-gemination'
   Compose the character before the point with the Ethiopic gemination mark.
-  If the characater is already composed, decompose it and remove the
+  If the character is already composed, decompose it and remove the
   gemination mark."
 
  ;; The following keys should work as defined in lisp/language/ethio-util,
index 01352adf4e30109a3c05c6a7187178e3c579a567..4b50b2dddebed54e678d01d20d3ebc51174d3863 100644 (file)
@@ -1,3 +1,118 @@
+2011-03-03  Drake Wilson  <drake@begriffli.ch>  (tiny change)
+
+       * emacsclient.c (longopts): Add quiet.
+       (decode_options): Handle q/quiet.
+       (print_help_and_exit): Add q/quiet.
+       (main): Suppress some messages if quiet option is used.
+
+2011-02-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (fakemail${EXEEXT}): Depend on lib/ignore-value.h.
+
+       * emacsclient.c (xstrdup) [WINDOWSNT]: Function added back.
+       (w32_getenv): Use xstrdup to return all values in malloc'ed
+       storage.
+
+2011-02-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * ebrowse.c (parse_qualified_param_ident_or_type): Make it clear
+       to reader (and to the compiler) that the loop always executes at
+       least once.  This prevents a warning with recent GCC.
+       (BROWSE_STRUCT): Remove unused macro.
+
+       * fakemail.c: Include <ignore-value.h>.
+       (put_line): Explicitly ignore fwrite return value, for benefit of
+       recent glibc + gcc.
+       (close_the_streams): Diagnose output errors instead of merely
+       exiting with nonzero status.
+       (my_fclose, main): Diagnose input errors, and exit with nonzero status.
+       Formerly, input errors were silently ignored.
+
+       * ebrowse.c (putstr): Rename from PUTSTR and turn into a function.
+       All callers changed.  This is cleaner, and avoids GCC warnings about
+       passing NULL to fputs.
+       (insert_keyword): Rename parameter to avoid shadowing diagnostic.
+
+2011-02-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * emacsclient.c (main): Avoid dangling 'if'.
+       (xstrdup): Remove; no longer needed.
+       (get_current_dir_name, w32_getenv, get_server_config, find_tty):
+       (set_local_socket, main):
+       Use const char *, not char *, for pointers that are not assigned
+       through.
+       (IF_LINT): New macro.
+       (set_local_socket, main): Use it to suppress warnings with
+       GCC -Wuninitialized.
+
+       * emacsclient.c: Redo local variables to avoid shadowing problems.
+       (message, socket_status, start_daemon_and_retry_set_socket):
+       Rename locals.
+       (main): Move decl of "i".
+
+       * etags.c (ISUPPER): Move to inside the only #ifdef where it's used.
+       This avoids an unused-macro warning with some GCC settings.
+
+       * make-docfile.c (write_globals): Change char * to char const *
+       to avoid a GCC "assignment discards qualifiers" diagnostic
+       in some configurations.
+       (scan_c_file): Refactor local variable decls to make their scope
+       more accurate and to avoid a GCC -Wuninitialized diagnostic.
+
+2011-02-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * etags.c (canonicalize_filename, ISUPPER): Fix last change.
+
+       * makefile.w32-in ($(BLD)/ebrowse.$(O), $(BLD)/pop.$(O)): Depend
+       on ../lib/min-max.h.
+
+2011-02-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       etags: Downcase drive letters, for consistency with Emacs proper.
+       * etags.c (upcase): Remove; no longer used.
+       (canonicalize_filename): Downcase drive letters.
+
+       Assume S_ISLNK etc. work, since gnulib supports this.
+       * etags.c (S_ISREG): Remove.
+
+2011-02-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume S_ISLNK etc. work, since gnulib supports this.
+       * etags.c (S_ISREG): Remove.
+
+2011-02-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (obj): Remove filemode.o.
+
+2011-02-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       New file "lib/min-max.h".
+       * ebrowse.c (min, max): Define them by including <min-max.h>
+       instead of defining it ourselves.
+       * pop.c (min): Likewise.
+       * Makefile.in (ebrowse${EXEEXT}, pop.o): Depend on min-max.h.
+
+       * movemail.c (popmail): Report fchown failure instead of ignoring it.
+       But if the file already has the right ownership, don't worry about it.
+
+       * make-docfile.c (input_buffer): Rename variables to avoid shadowing.
+       * test-distrib.c (buf): Make this local, to avoid shadowing.
+
+       * movemail.c (main, pop_retr): Rename locals to avoid shadowing.
+       (progname, sfi, sfo, ibuffer, obuffer): Remove unused vars.
+       (DONE): Remove unused macro.
+       (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_FROM_LINE):
+       Define these macros only in the contexts that need them.
+       * pop.c (index): Remove unused macro.
+       (KPOP_PORT): Define only if KERBEROS is defined.
+
+       Declare file-scope functions and variables static if not exported.
+       This is more consistent, and is nicer with gcc -Wstrict-prototypes.
+       * ebrowse.c, emacsclient.c, fakemail.c, make-docfile.c, movemail.c:
+       * profile.c, test-distrib.c, update-game-score.c:
+       Declare non-'main' functions and variables to be static.
+       * ebrowse.c: Omit redundant function prototypes.
+
 2011-02-21  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in ($(BLD)/ctags.$(O), $(BLD)/emacsclient.$(O))
 
 2011-02-05  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * emacsclient.c: conform to C89 pointer rules
+       * emacsclient.c: Conform to C89 pointer rules.
        (file_name_absolute_p): Accept const char *, not const unsigned
        char *, to satisfy C89 rules.
 
        * test-distrib.c (cool_read):
        * movemail.c (main, concat):
        * make-docfile.c (scan_file, write_c_args):
-       * emacsclient.c (get_server_config): Fix -Wconversion warning.
+       * emacsclient.c (get_server_config): Fix -Wconversion warning.
        (egetenv): Move conditional definition earlier.
        (progname): Use const.
        * sorted-doc.c (xstrdup): Use const.
        autoconf, not cpp.
        (ALL_CFLAGS): Use them as make variables.
 
-2010-04-07  Christoph  <cschol2112@googlemail.com>  (tiny change)
+2010-04-07  Christoph Scholtes  <cschol2112@googlemail.com>
 
        * makefile.w32-in (OTHER_PLATFORM_SUPPORT): Use parenthesis
        for macros for nmake compatibility.
index 96975613104373ce05ed9fe141e712cf8dc530c7..d622233efb44493c7e558547686db48ecda03cf9 100644 (file)
@@ -325,7 +325,7 @@ etags${EXEEXT}: ${srcdir}/etags.c $(REGEXPDEPS) ../src/config.h
          -DVERSION="\"${version}\"" ${srcdir}/etags.c \
          $(REGEXPOBJ) $(LOADLIBES) -o etags
 
-ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ../src/config.h
+ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h ../src/config.h
        $(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
          ${srcdir}/ebrowse.c $(LOADLIBES) -o ebrowse
 
@@ -350,10 +350,10 @@ movemail${EXEEXT}: movemail.o pop.o
 movemail.o: ${srcdir}/movemail.c ../src/config.h
        $(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c
 
-pop.o: ${srcdir}/pop.c  ../src/config.h
+pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h ../src/config.h
        $(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c
 
-fakemail${EXEEXT}: ${srcdir}/fakemail.c ../src/config.h
+fakemail${EXEEXT}: ${srcdir}/fakemail.c ${srcdir}/../lib/ignore-value.h ../src/config.h
        $(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail
 
 emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h
index 59a1dde76347a3b625d431b6c2ffd7dc932cc30b..113b6fdfe403346d130db07a2b402fcf628019a1 100644 (file)
@@ -41,12 +41,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define streq(X, Y) (*(X) == *(Y) && strcmp ((X) + 1, (Y) + 1) == 0)
 
-/* The ubiquitous `max' and `min' macros.  */
-
-#ifndef max
-#define max(X, Y)      ((X) > (Y) ? (X) : (Y))
-#define min(X, Y)      ((X) < (Y) ? (X) : (Y))
-#endif
+#include <min-max.h>
 
 /* Files are read in chunks of this number of bytes.  */
 
@@ -82,7 +77,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define TREE_HEADER_STRUCT     "[ebrowse-hs "
 #define TREE_STRUCT            "[ebrowse-ts "
 #define MEMBER_STRUCT          "[ebrowse-ms "
-#define BROWSE_STRUCT          "[ebrowse-bs "
 #define CLASS_STRUCT           "[ebrowse-cs "
 
 /* The name of the symbol table entry for global functions, variables,
@@ -465,59 +459,16 @@ struct search_path *search_path_tail;
 
 /* Function prototypes.  */
 
-int yylex (void);
-void yyparse (void);
-void re_init_parser (void);
-const char *token_string (int);
-char *matching_regexp (void);
-void init_sym (void);
-struct sym *add_sym (const char *, struct sym *);
-void add_link (struct sym *, struct sym *);
-void add_member_defn (struct sym *, char *, char *,
-                      int, unsigned, int, int, int);
-void add_member_decl (struct sym *, char *, char *, int,
-                      unsigned, int, int, int, int);
-void dump_roots (FILE *);
-void *xmalloc (int);
-void xfree (void *);
-void add_global_defn (char *, char *, int, unsigned, int, int, int);
-void add_global_decl (char *, char *, int, unsigned, int, int, int);
-void add_define (char *, char *, int);
-void mark_inherited_virtual (void);
-void leave_namespace (void);
-void enter_namespace (char *);
-void register_namespace_alias (char *, struct link *);
-void insert_keyword (const char *, int);
-void re_init_scanner (void);
-void init_scanner (void);
-void process_file (char *);
-void add_search_path (char *);
-FILE *open_file (char *);
-int process_pp_line (void);
-int dump_members (FILE *, struct member *);
-void dump_sym (FILE *, struct sym *);
-int dump_tree (FILE *, struct sym *);
-struct member *find_member (struct sym *, char *, int, int, unsigned);
-struct member *add_member (struct sym *, char *, int, int, unsigned);
-void mark_virtual (struct sym *);
-struct sym *make_namespace (char *, struct sym *);
-char *sym_scope (struct sym *);
-char *sym_scope_1 (struct sym *);
-int skip_to (int);
-void skip_matching (void);
-void member (struct sym *, int);
-void class_body (struct sym *, int);
-void class_definition (struct sym *, int, int, int);
-void declaration (int);
-unsigned parm_list (int *);
-char *operator_name (int *);
-struct sym *parse_classname (void);
-struct sym *parse_qualified_ident_or_type (char **);
-void parse_qualified_param_ident_or_type (char **);
-int globals (int);
-void yyerror (const char *, const char *);
-void usage (int) NO_RETURN;
-void version (void) NO_RETURN;
+static char *matching_regexp (void);
+static struct sym *add_sym (const char *, struct sym *);
+static void add_global_defn (char *, char *, int, unsigned, int, int, int);
+static void add_global_decl (char *, char *, int, unsigned, int, int, int);
+static struct member *add_member (struct sym *, char *, int, int, unsigned);
+static void class_definition (struct sym *, int, int, int);
+static char *operator_name (int *);
+static void parse_qualified_param_ident_or_type (char **);
+static void usage (int) NO_RETURN;
+static void version (void) NO_RETURN;
 
 
 \f
@@ -528,7 +479,7 @@ void version (void) NO_RETURN;
 /* Print an error in a printf-like style with the current input file
    name and line number.  */
 
-void
+static void
 yyerror (const char *format, const char *s)
 {
   fprintf (stderr, "%s:%d: ", filename, yyline);
@@ -540,7 +491,7 @@ yyerror (const char *format, const char *s)
 /* Like malloc but print an error and exit if not enough memory is
    available.  */
 
-void *
+static void *
 xmalloc (int nbytes)
 {
   void *p = malloc (nbytes);
@@ -555,7 +506,7 @@ xmalloc (int nbytes)
 
 /* Like realloc but print an error and exit if out of memory.  */
 
-void *
+static void *
 xrealloc (void *p, int sz)
 {
   p = realloc (p, sz);
@@ -571,7 +522,7 @@ xrealloc (void *p, int sz)
 /* Like strdup, but print an error and exit if not enough memory is
    available..  If S is null, return null.  */
 
-char *
+static char *
 xstrdup (char *s)
 {
   if (s)
@@ -588,7 +539,7 @@ xstrdup (char *s)
 /* Initialize the symbol table.  This currently only sets up the
    special symbol for globals (`*Globals*').  */
 
-void
+static void
 init_sym (void)
 {
   global_symbols = add_sym (GLOBALS_NAME, NULL);
@@ -602,7 +553,7 @@ init_sym (void)
    If a symbol for NAME already exists, return that.  Otherwise
    create a new symbol and set it to default values.  */
 
-struct sym *
+static struct sym *
 add_sym (const char *name, struct sym *nested_in_class)
 {
   struct sym *sym;
@@ -643,7 +594,7 @@ add_sym (const char *name, struct sym *nested_in_class)
 
 /* Add links between superclass SUPER and subclass SUB.  */
 
-void
+static void
 add_link (struct sym *super, struct sym *sub)
 {
   struct link *lnk, *lnk2, *p, *prev;
@@ -683,7 +634,7 @@ add_link (struct sym *super, struct sym *sub)
    parameter types of functions.  Value is a pointer to the member
    found or null if not found.  */
 
-struct member *
+static struct member *
 find_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
 {
   struct member **list;
@@ -733,7 +684,7 @@ find_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
    a bit set giving additional information about the member (see the
    F_* defines).  */
 
-void
+static void
 add_member_decl (struct sym *cls, char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int vis, int flags)
 {
   struct member *m;
@@ -781,7 +732,7 @@ add_member_decl (struct sym *cls, char *name, char *regexp, int pos, unsigned in
    a bit set giving additional information about the member (see the
    F_* defines).  */
 
-void
+static void
 add_member_defn (struct sym *cls, char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
 {
   struct member *m;
@@ -823,7 +774,7 @@ add_member_defn (struct sym *cls, char *name, char *regexp, int pos, unsigned in
    REGEXP is a regular expression matching the define in the source,
    if it is non-null.  POS is the position in the file.  */
 
-void
+static void
 add_define (char *name, char *regexp, int pos)
 {
   add_global_defn (name, regexp, pos, 0, 1, SC_FRIEND, F_DEFINE);
@@ -841,7 +792,7 @@ add_define (char *name, char *regexp, int pos)
    a bit set giving additional information about the member (see the
    F_* defines).  */
 
-void
+static void
 add_global_defn (char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
 {
   int i;
@@ -872,7 +823,7 @@ add_global_defn (char *name, char *regexp, int pos, unsigned int hash, int var,
    a bit set giving additional information about the member (see the
    F_* defines).  */
 
-void
+static void
 add_global_decl (char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
 {
   /* Add declaration only if not already declared.  Header files must
@@ -911,7 +862,7 @@ add_global_decl (char *name, char *regexp, int pos, unsigned int hash, int var,
    member.  HASH is a hash code for the parameter types of a function.
    Value is a pointer to the member's structure.  */
 
-struct member *
+static struct member *
 add_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
 {
   struct member *m = (struct member *) xmalloc (sizeof *m + strlen (name));
@@ -982,7 +933,7 @@ add_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
    recursively, marking functions as virtual that are declared virtual
    in base classes.  */
 
-void
+static void
 mark_virtual (struct sym *r)
 {
   struct link *p;
@@ -1006,7 +957,7 @@ mark_virtual (struct sym *r)
 /* For all roots of the class tree, mark functions as virtual that
    are virtual because of a virtual declaration in a base class.  */
 
-void
+static void
 mark_inherited_virtual (void)
 {
   struct sym *r;
@@ -1021,7 +972,7 @@ mark_inherited_virtual (void)
 
 /* Create and return a symbol for a namespace with name NAME.  */
 
-struct sym *
+static struct sym *
 make_namespace (char *name, struct sym *context)
 {
   struct sym *s = (struct sym *) xmalloc (sizeof *s + strlen (name));
@@ -1036,7 +987,7 @@ make_namespace (char *name, struct sym *context)
 
 /* Find the symbol for namespace NAME.  If not found, retrun NULL */
 
-struct sym *
+static struct sym *
 check_namespace (char *name, struct sym *context)
 {
   struct sym *p = NULL;
@@ -1053,7 +1004,7 @@ check_namespace (char *name, struct sym *context)
 /* Find the symbol for namespace NAME.  If not found, add a new symbol
    for NAME to all_namespaces.  */
 
-struct sym *
+static struct sym *
 find_namespace (char *name, struct sym *context)
 {
   struct sym *p = check_namespace (name, context);
@@ -1067,7 +1018,7 @@ find_namespace (char *name, struct sym *context)
 
 /* Find namespace alias with name NAME. If not found return NULL. */
 
-struct link *
+static struct link *
 check_namespace_alias (char *name)
 {
   struct link *p = NULL;
@@ -1091,7 +1042,7 @@ check_namespace_alias (char *name)
 
 /* Register the name NEW_NAME as an alias for namespace list OLD_NAME.  */
 
-void
+static void
 register_namespace_alias (char *new_name, struct link *old_name)
 {
   unsigned h;
@@ -1119,7 +1070,7 @@ register_namespace_alias (char *new_name, struct link *old_name)
 
 /* Enter namespace with name NAME.  */
 
-void
+static void
 enter_namespace (char *name)
 {
   struct sym *p = find_namespace (name, current_namespace);
@@ -1140,7 +1091,7 @@ enter_namespace (char *name)
 
 /* Leave the current namespace.  */
 
-void
+static void
 leave_namespace (void)
 {
   assert (namespace_sp > 0);
@@ -1156,22 +1107,23 @@ leave_namespace (void)
 /* Write string S to the output file FP in a Lisp-readable form.
    If S is null, write out `()'.  */
 
-#define PUTSTR(s, fp)                          \
-  do {                                         \
-    if (!s)                                    \
-      {                                                \
-        putc ('(', fp);                                \
-        putc (')', fp);                                \
-        putc (' ', fp);                                \
-      }                                                \
-    else                                       \
-      {                                                \
-        putc ('"', fp);                                \
-        fputs (s, fp);                         \
-        putc ('"', fp);                                \
-        putc (' ', fp);                                \
-      }                                                \
-   } while (0)
+static inline void
+putstr (const char *s, FILE *fp)
+{
+  if (!s)
+    {
+      putc ('(', fp);
+      putc (')', fp);
+      putc (' ', fp);
+    }
+  else
+    {
+      putc ('"', fp);
+      fputs (s, fp);
+      putc ('"', fp);
+      putc (' ', fp);
+    }
+}
 
 /* A dynamically allocated buffer for constructing a scope name.  */
 
@@ -1182,7 +1134,7 @@ int scope_buffer_len;
 
 /* Make sure scope_buffer has enough room to add LEN chars to it.  */
 
-void
+static void
 ensure_scope_buffer_room (int len)
 {
   if (scope_buffer_len + len >= scope_buffer_size)
@@ -1198,7 +1150,7 @@ ensure_scope_buffer_room (int len)
    namespaces to scope_buffer.  Value is a pointer to the complete
    scope name constructed.  */
 
-char *
+static char *
 sym_scope_1 (struct sym *p)
 {
   int len;
@@ -1232,7 +1184,7 @@ sym_scope_1 (struct sym *p)
 /* Return the scope of symbol P in printed representation, i.e.
    as it would appear in a C*+ source file.  */
 
-char *
+static char *
 sym_scope (struct sym *p)
 {
   if (!scope_buffer)
@@ -1254,7 +1206,7 @@ sym_scope (struct sym *p)
 /* Dump the list of members M to file FP.  Value is the length of the
    list.  */
 
-int
+static int
 dump_members (FILE *fp, struct member *m)
 {
   int n;
@@ -1264,16 +1216,16 @@ dump_members (FILE *fp, struct member *m)
   for (n = 0; m; m = m->next, ++n)
     {
       fputs (MEMBER_STRUCT, fp);
-      PUTSTR (m->name, fp);
-      PUTSTR (NULL, fp);               /* FIXME? scope for globals */
+      putstr (m->name, fp);
+      putstr (NULL, fp);               /* FIXME? scope for globals */
       fprintf (fp, "%u ", (unsigned) m->flags);
-      PUTSTR (m->filename, fp);
-      PUTSTR (m->regexp, fp);
+      putstr (m->filename, fp);
+      putstr (m->regexp, fp);
       fprintf (fp, "%u ", (unsigned) m->pos);
       fprintf (fp, "%u ", (unsigned) m->vis);
       putc (' ', fp);
-      PUTSTR (m->def_filename, fp);
-      PUTSTR (m->def_regexp, fp);
+      putstr (m->def_filename, fp);
+      putstr (m->def_regexp, fp);
       fprintf (fp, "%u", (unsigned) m->def_pos);
       putc (']', fp);
       putc ('\n', fp);
@@ -1287,24 +1239,24 @@ dump_members (FILE *fp, struct member *m)
 
 /* Dump class ROOT to stream FP.  */
 
-void
+static void
 dump_sym (FILE *fp, struct sym *root)
 {
   fputs (CLASS_STRUCT, fp);
-  PUTSTR (root->name, fp);
+  putstr (root->name, fp);
 
   /* Print scope, if any.  */
   if (root->namesp)
-    PUTSTR (sym_scope (root), fp);
+    putstr (sym_scope (root), fp);
   else
-    PUTSTR (NULL, fp);
+    putstr (NULL, fp);
 
   /* Print flags.  */
   fprintf (fp, "%u", root->flags);
-  PUTSTR (root->filename, fp);
-  PUTSTR (root->regexp, fp);
+  putstr (root->filename, fp);
+  putstr (root->regexp, fp);
   fprintf (fp, "%u", (unsigned) root->pos);
-  PUTSTR (root->sfilename, fp);
+  putstr (root->sfilename, fp);
   putc (']', fp);
   putc ('\n', fp);
 }
@@ -1313,7 +1265,7 @@ dump_sym (FILE *fp, struct sym *root)
 /* Dump class ROOT and its subclasses to file FP.  Value is the
    number of classes written.  */
 
-int
+static int
 dump_tree (FILE *fp, struct sym *root)
 {
   struct link *lk;
@@ -1360,7 +1312,7 @@ dump_tree (FILE *fp, struct sym *root)
 
 /* Dump the entire class tree to file FP.  */
 
-void
+static void
 dump_roots (FILE *fp)
 {
   int i, n = 0;
@@ -1371,7 +1323,7 @@ dump_roots (FILE *fp)
   if (!f_append)
     {
       fputs (TREE_HEADER_STRUCT, fp);
-      PUTSTR (EBROWSE_FILE_VERSION, fp);
+      putstr (EBROWSE_FILE_VERSION, fp);
 
       putc ('\"', fp);
       if (!f_structs)
@@ -1434,7 +1386,7 @@ do {                                              \
 /* Process a preprocessor line.  Value is the next character from the
    input buffer not consumed.  */
 
-int
+static int
 process_pp_line (void)
 {
   int in_comment = 0, in_string = 0;
@@ -1505,7 +1457,7 @@ process_pp_line (void)
 
 /* Value is the next token from the input buffer.  */
 
-int
+static int
 yylex (void)
 {
   int c;
@@ -1927,7 +1879,7 @@ static char *matching_regexp_buffer, *matching_regexp_end_buf;
    position in the input buffer, or maybe a bit more if that string is
    shorter than min_regexp.  */
 
-char *
+static char *
 matching_regexp (void)
 {
   char *p;
@@ -1978,7 +1930,7 @@ matching_regexp (void)
 
 /* Return a printable representation of token T.  */
 
-const char *
+static const char *
 token_string (int t)
 {
   static char b[3];
@@ -2095,7 +2047,7 @@ token_string (int t)
 
 /* Reinitialize the scanner for a new input file.  */
 
-void
+static void
 re_init_scanner (void)
 {
   in = inbuffer;
@@ -2110,11 +2062,11 @@ re_init_scanner (void)
 }
 
 
-/* Insert a keyword NAME with token value TK into the keyword hash
+/* Insert a keyword NAME with token value TKV into the keyword hash
    table.  */
 
-void
-insert_keyword (const char *name, int tk)
+static void
+insert_keyword (const char *name, int tkv)
 {
   const char *s;
   unsigned h = 0;
@@ -2125,7 +2077,7 @@ insert_keyword (const char *name, int tk)
 
   h %= KEYWORD_TABLE_SIZE;
   k->name = name;
-  k->tk = tk;
+  k->tk = tkv;
   k->next = keyword_table[h];
   keyword_table[h] = k;
 }
@@ -2134,7 +2086,7 @@ insert_keyword (const char *name, int tk)
 /* Initialize the scanner for the first file.  This sets up the
    character class vectors and fills the keyword hash table.  */
 
-void
+static void
 init_scanner (void)
 {
   int i;
@@ -2278,7 +2230,7 @@ init_scanner (void)
 /* Skip forward until a given token TOKEN or YYEOF is seen and return
    the current lookahead token after skipping.  */
 
-int
+static int
 skip_to (int token)
 {
   while (!LOOKING_AT2 (YYEOF, token))
@@ -2289,7 +2241,7 @@ skip_to (int token)
 /* Skip over pairs of tokens (parentheses, square brackets,
    angle brackets, curly brackets) matching the current lookahead.  */
 
-void
+static void
 skip_matching (void)
 {
   int open, close, n;
@@ -2332,7 +2284,7 @@ skip_matching (void)
     }
 }
 
-void
+static void
 skip_initializer (void)
 {
   for (;;)
@@ -2359,7 +2311,7 @@ skip_initializer (void)
 
 /* Build qualified namespace alias (A::B::c) and return it. */
 
-struct link *
+static struct link *
 match_qualified_namespace_alias (void)
 {
   struct link *head = NULL;
@@ -2396,7 +2348,7 @@ match_qualified_namespace_alias (void)
 
 /* Re-initialize the parser by resetting the lookahead token.  */
 
-void
+static void
 re_init_parser (void)
 {
   tk = -1;
@@ -2409,7 +2361,7 @@ re_init_parser (void)
    Returns a hash code for the parameter types.  This value is used to
    distinguish between overloaded functions.  */
 
-unsigned
+static unsigned
 parm_list (int *flags)
 {
   unsigned hash = 0;
@@ -2522,7 +2474,7 @@ parm_list (int *flags)
 
 /* Print position info to stdout.  */
 
-void
+static void
 print_info (void)
 {
   if (info_position >= 0 && BUFFER_POS () <= info_position)
@@ -2537,7 +2489,7 @@ print_info (void)
    the access specifier for the member (private, protected,
    public).  */
 
-void
+static void
 member (struct sym *cls, int vis)
 {
   char *id = NULL;
@@ -2746,7 +2698,7 @@ member (struct sym *cls, int vis)
 /* Parse the body of class CLS.  TAG is the tag of the class (struct,
    union, class).  */
 
-void
+static void
 class_body (struct sym *cls, int tag)
 {
   int vis = tag == CLASS ? PRIVATE : PUBLIC;
@@ -2807,7 +2759,7 @@ class_body (struct sym *cls, int tag)
    qualified ident has the form `X<..>::Y<...>::T<...>.  Returns a
    symbol for that class.  */
 
-struct sym *
+static struct sym *
 parse_classname (void)
 {
   struct sym *last_class = NULL;
@@ -2837,7 +2789,7 @@ parse_classname (void)
    implicitly static operator has been parsed.  Value is a pointer to
    a static buffer holding the constructed operator name string.  */
 
-char *
+static char *
 operator_name (int *sc)
 {
   static int id_size = 0;
@@ -2927,7 +2879,7 @@ operator_name (int *sc)
    `X::Y::z'.  This IDENT is returned in LAST_ID.  Value is the
    symbol structure for the ident.  */
 
-struct sym *
+static struct sym *
 parse_qualified_ident_or_type (char **last_id)
 {
   struct sym *cls = NULL;
@@ -2992,14 +2944,16 @@ parse_qualified_ident_or_type (char **last_id)
    `X::Y::z'.  This IDENT is returned in LAST_ID.  Value is the
    symbol structure for the ident.  */
 
-void
+static void
 parse_qualified_param_ident_or_type (char **last_id)
 {
   struct sym *cls = NULL;
   static char *id = NULL;
   static int id_size = 0;
 
-  while (LOOKING_AT (IDENT))
+  assert (LOOKING_AT (IDENT));
+
+  do
     {
       int len = strlen (yytext) + 1;
       if (len > id_size)
@@ -3022,6 +2976,7 @@ parse_qualified_param_ident_or_type (char **last_id)
       else
        break;
     }
+  while (LOOKING_AT (IDENT));
 }
 
 
@@ -3034,7 +2989,7 @@ parse_qualified_param_ident_or_type (char **last_id)
 
    Current lookahead is the class name.  */
 
-void
+static void
 class_definition (struct sym *containing, int tag, int flags, int nested)
 {
   struct sym *current;
@@ -3131,7 +3086,7 @@ class_definition (struct sym *containing, int tag, int flags, int nested)
    the storage class of *ID.  FLAGS is a bit set giving additional
    information about the member (see the F_* defines).  */
 
-void
+static void
 add_declarator (struct sym **cls, char **id, int flags, int sc)
 {
   if (LOOKING_AT2 (';', ','))
@@ -3174,7 +3129,7 @@ add_declarator (struct sym **cls, char **id, int flags, int sc)
 
 /* Parse a declaration.  */
 
-void
+static void
 declaration (int flags)
 {
   char *id = NULL;
@@ -3328,7 +3283,7 @@ declaration (int flags)
    parsing in an `extern "C"' block.  Value is 1 if EOF is reached, 0
    otherwise.  */
 
-int
+static int
 globals (int start_flags)
 {
   int anonymous;
@@ -3446,7 +3401,7 @@ globals (int start_flags)
 
 /* Parse the current input file.  */
 
-void
+static void
 yyparse (void)
 {
   while (globals (0) == 0)
@@ -3462,7 +3417,7 @@ yyparse (void)
 /* Add the list of paths PATH_LIST to the current search path for
    input files.  */
 
-void
+static void
 add_search_path (char *path_list)
 {
   while (*path_list)
@@ -3497,7 +3452,7 @@ add_search_path (char *path_list)
    opened.  Try to find FILE in search_path first, then try the
    unchanged file name.  */
 
-FILE *
+static FILE *
 open_file (char *file)
 {
   FILE *fp = NULL;
@@ -3556,7 +3511,7 @@ Usage: ebrowse [options] {files}\n\
       --version                        display version info\n\
 "
 
-void
+static void
 usage (int error)
 {
   puts (USAGE);
@@ -3571,7 +3526,7 @@ usage (int error)
 # define VERSION "21"
 #endif
 
-void
+static void
 version (void)
 {
   /* Makes it easier to update automatically. */
@@ -3587,7 +3542,7 @@ version (void)
 /* Parse one input file FILE, adding classes and members to the symbol
    table.  */
 
-void
+static void
 process_file (char *file)
 {
   FILE *fp;
@@ -3642,7 +3597,7 @@ process_file (char *file)
    containing its contents without the terminating newline.  Value
    is null when EOF is reached.  */
 
-char *
+static char *
 read_line (FILE *fp)
 {
   static char *buffer;
index 3670e68e3b3263568e6a70b32c72fda7c4107f0a..abc9aee37c186571ce8315c29d0fd10875138721 100644 (file)
@@ -112,6 +112,13 @@ char *(getcwd) (char *, size_t);
 /* Additional space when allocating buffers for filenames, etc.  */
 #define EXTRA_SPACE 100
 
+/* Use this to suppress gcc's `...may be used before initialized' warnings. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
 \f
 /* Name used to invoke this program.  */
 const char *progname;
@@ -122,6 +129,9 @@ char **main_argv;
 /* Nonzero means don't wait for a response from Emacs.  --no-wait.  */
 int nowait = 0;
 
+/* Nonzero means don't print messages for successful operations.  --quiet. */
+int quiet = 0;
+
 /* Nonzero means args are expressions to be evaluated.  --eval.  */
 int eval = 0;
 
@@ -150,13 +160,14 @@ const char *server_file = NULL;
 /* PID of the Emacs server process.  */
 int emacs_pid = 0;
 
-void print_help_and_exit (void) NO_RETURN;
-void fail (void) NO_RETURN;
+static void print_help_and_exit (void) NO_RETURN;
+static void fail (void) NO_RETURN;
 
 
 struct option longopts[] =
 {
   { "no-wait", no_argument,       NULL, 'n' },
+  { "quiet",   no_argument,       NULL, 'q' },
   { "eval",    no_argument,       NULL, 'e' },
   { "help",    no_argument,       NULL, 'H' },
   { "version", no_argument,       NULL, 'V' },
@@ -178,7 +189,7 @@ struct option longopts[] =
 \f
 /* Like malloc but get fatal error if memory is exhausted.  */
 
-long *
+static long *
 xmalloc (unsigned int size)
 {
   long *result = (long *) malloc (size);
@@ -190,20 +201,6 @@ xmalloc (unsigned int size)
   return result;
 }
 
-/* Like strdup but get a fatal error if memory is exhausted. */
-
-char *
-xstrdup (const char *s)
-{
-  char *result = strdup (s);
-  if (result == NULL)
-    {
-      perror ("strdup");
-      exit (EXIT_FAILURE);
-    }
-  return result;
-}
-
 /* From sysdep.c */
 #if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
 
@@ -233,7 +230,7 @@ char*
 get_current_dir_name (void)
 {
   char *buf;
-  char *pwd;
+  const char *pwd;
   struct stat dotstat, pwdstat;
   /* If PWD is accurate, use it instead of calling getwd.  PWD is
      sometimes a nicer name, and using it may avoid a fatal error if a
@@ -300,6 +297,20 @@ get_current_dir_name (void)
 
 #ifdef WINDOWSNT
 
+/* Like strdup but get a fatal error if memory is exhausted. */
+
+char *
+xstrdup (const char *s)
+{
+  char *result = strdup (s);
+  if (result == NULL)
+    {
+      perror ("strdup");
+      exit (EXIT_FAILURE);
+    }
+  return result;
+}
+
 #define REG_ROOT "SOFTWARE\\GNU\\Emacs"
 
 /* Retrieve an environment variable from the Emacs subkeys of the registry.
@@ -335,9 +346,11 @@ w32_get_resource (HKEY predefined, char *key, LPDWORD type)
 /*
   getenv wrapper for Windows
 
-  This is needed to duplicate Emacs's behavior, which is to look for environment
-  variables in the registry if they don't appear in the environment.
-*/
+  Value is allocated on the heap, and can be free'd.
+
+  This is needed to duplicate Emacs's behavior, which is to look for
+  environment variables in the registry if they don't appear in the
+  environment.  */
 char *
 w32_getenv (char *envvar)
 {
@@ -345,8 +358,9 @@ w32_getenv (char *envvar)
   DWORD dwType;
 
   if (value = getenv (envvar))
-    /* Found in the environment.  */
-    return value;
+    /* Found in the environment.  strdup it, because values returned
+       by getenv cannot be free'd.  */
+    return xstrdup (value);
 
   if (! (value = w32_get_resource (HKEY_CURRENT_USER, envvar, &dwType)) &&
       ! (value = w32_get_resource (HKEY_LOCAL_MACHINE, envvar, &dwType)))
@@ -473,14 +487,14 @@ ttyname (int fd)
 
 /* Display a normal or error message.
    On Windows, use a message box if compiled as a Windows app.  */
-void
-message (int is_error, const char *message, ...)
+static void
+message (int is_error, const char *format, ...)
 {
   char msg[2048];
   va_list args;
 
-  va_start (args, message);
-  vsprintf (msg, message, args);
+  va_start (args, format);
+  vsprintf (msg, format, args);
   va_end (args);
 
 #ifdef WINDOWSNT
@@ -504,7 +518,7 @@ message (int is_error, const char *message, ...)
 /* Decode the options from argv and argc.
    The global variable `optind' will say how many arguments we used up.  */
 
-void
+static void
 decode_options (int argc, char **argv)
 {
   alternate_editor = egetenv ("ALTERNATE_EDITOR");
@@ -513,9 +527,9 @@ decode_options (int argc, char **argv)
     {
       int opt = getopt_long_only (argc, argv,
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
-                            "VHnea:s:f:d:tc",
+                            "VHneqa:s:f:d:tc",
 #else
-                            "VHnea:f:d:tc",
+                            "VHneqa:f:d:tc",
 #endif
                             longopts, 0);
 
@@ -559,6 +573,10 @@ decode_options (int argc, char **argv)
          eval = 1;
          break;
 
+       case 'q':
+         quiet = 1;
+         break;
+
        case 'V':
          message (FALSE, "emacsclient %s\n", VERSION);
          exit (EXIT_SUCCESS);
@@ -630,7 +648,7 @@ an empty string");
 }
 
 \f
-void
+static void
 print_help_and_exit (void)
 {
   /* Spaces and tabs are significant in this message; they're chosen so the
@@ -650,6 +668,7 @@ The following OPTIONS are accepted:\n\
                        use the current Emacs frame\n\
 -e, --eval             Evaluate the FILE arguments as ELisp expressions\n\
 -n, --no-wait          Don't wait for the server to return\n\
+-q, --quiet            Don't display messages on success\n\
 -d DISPLAY, --display=DISPLAY\n\
                        Visit the file in the given display\n\
 --parent-id=ID          Open in parent window ID, via XEmbed\n"
@@ -675,7 +694,7 @@ Report bugs with M-x report-emacs-bug.\n", progname);
   defined-- exit with an errorcode.
   Uses argv, but gets it from the global variable main_argv.
 */
-void
+static void
 fail (void)
 {
   if (alternate_editor)
@@ -718,7 +737,7 @@ HSOCKET emacs_socket = 0;
 
 /* On Windows, the socket library was historically separate from the standard
    C library, so errors are handled differently.  */
-void
+static void
 sock_err_message (const char *function_name)
 {
 #ifdef WINDOWSNT
@@ -742,7 +761,7 @@ sock_err_message (const char *function_name)
    - the data ends in "\n", or
    - the buffer is full (but this shouldn't happen)
    Otherwise, we just accumulate it.  */
-void
+static void
 send_to_emacs (HSOCKET s, const char *data)
 {
   while (data)
@@ -781,7 +800,7 @@ send_to_emacs (HSOCKET s, const char *data)
    return value never contains a space.
 
    Does not change the string.  Outputs the result to S.  */
-void
+static void
 quote_argument (HSOCKET s, const char *str)
 {
   char *copy = (char *) xmalloc (strlen (str) * 2 + 1);
@@ -822,7 +841,7 @@ quote_argument (HSOCKET s, const char *str)
 /* The inverse of quote_argument.  Removes quoting in string STR by
    modifying the string in place.   Returns STR. */
 
-char *
+static char *
 unquote_argument (char *str)
 {
   char *p, *q;
@@ -853,7 +872,7 @@ unquote_argument (char *str)
 }
 
 \f
-int
+static int
 file_name_absolute_p (const char *filename)
 {
   /* Sanity check, it shouldn't happen.  */
@@ -907,7 +926,7 @@ initialize_sockets (void)
  * Read the information needed to set up a TCP comm channel with
  * the Emacs server: host, port, and authentication string.
  */
-int
+static int
 get_server_config (struct sockaddr_in *server, char *authentication)
 {
   char dotted[32];
@@ -918,7 +937,7 @@ get_server_config (struct sockaddr_in *server, char *authentication)
     config = fopen (server_file, "rb");
   else
     {
-      char *home = egetenv ("HOME");
+      const char *home = egetenv ("HOME");
 
       if (home)
         {
@@ -965,7 +984,7 @@ get_server_config (struct sockaddr_in *server, char *authentication)
   return TRUE;
 }
 
-HSOCKET
+static HSOCKET
 set_tcp_socket (void)
 {
   HSOCKET s;
@@ -976,7 +995,7 @@ set_tcp_socket (void)
   if (! get_server_config (&server, auth_string))
     return INVALID_SOCKET;
 
-  if (server.sin_addr.s_addr != inet_addr ("127.0.0.1"))
+  if (server.sin_addr.s_addr != inet_addr ("127.0.0.1") && !quiet)
     message (FALSE, "%s: connected to remote socket at %s\n",
              progname, inet_ntoa (server.sin_addr));
 
@@ -1024,11 +1043,11 @@ strprefix (const char *prefix, const char *string)
    and the name in TTY_NAME, and return 1.  Otherwise, fail if NOABORT
    is zero, or return 0 if NOABORT is non-zero.  */
 
-int
-find_tty (char **tty_type, char **tty_name, int noabort)
+static int
+find_tty (const char **tty_type, const char **tty_name, int noabort)
 {
-  char *type = egetenv ("TERM");
-  char *name = ttyname (fileno (stdout));
+  const char *type = egetenv ("TERM");
+  const char *name = ttyname (fileno (stdout));
 
   if (!name)
     {
@@ -1080,11 +1099,11 @@ find_tty (char **tty_type, char **tty_name, int noabort)
    0 - success: none of the above */
 
 static int
-socket_status (char *socket_name)
+socket_status (char *name)
 {
   struct stat statbfr;
 
-  if (stat (socket_name, &statbfr) == -1)
+  if (stat (name, &statbfr) == -1)
     return 2;
 
   if (statbfr.st_uid != geteuid ())
@@ -1097,7 +1116,7 @@ socket_status (char *socket_name)
 /* A signal handler that passes the signal to the Emacs process.
    Useful for SIGWINCH.  */
 
-SIGTYPE
+static SIGTYPE
 pass_signal_to_emacs (int signalnum)
 {
   int old_errno = errno;
@@ -1112,7 +1131,7 @@ pass_signal_to_emacs (int signalnum)
 /* Signal handler for SIGCONT; notify the Emacs process that it can
    now resume our tty frame.  */
 
-SIGTYPE
+static SIGTYPE
 handle_sigcont (int signalnum)
 {
   int old_errno = errno;
@@ -1138,7 +1157,7 @@ handle_sigcont (int signalnum)
    reality, we may get a SIGTSTP on C-z.  Handling this signal and
    notifying Emacs about it should get things under control again. */
 
-SIGTYPE
+static SIGTYPE
 handle_sigtstp (int signalnum)
 {
   int old_errno = errno;
@@ -1162,7 +1181,7 @@ handle_sigtstp (int signalnum)
 
 /* Set up signal handlers before opening a frame on the current tty.  */
 
-void
+static void
 init_signals (void)
 {
   /* Set up signal handlers. */
@@ -1182,7 +1201,7 @@ init_signals (void)
 }
 
 
-HSOCKET
+static HSOCKET
 set_local_socket (void)
 {
   HSOCKET s;
@@ -1205,7 +1224,7 @@ set_local_socket (void)
     int default_sock = !socket_name;
     int saved_errno = 0;
     const char *server_name = "server";
-    const char *tmpdir;
+    const char *tmpdir IF_LINT ( = NULL);
 
     if (socket_name && !strchr (socket_name, '/')
        && !strchr (socket_name, '\\'))
@@ -1260,10 +1279,10 @@ set_local_socket (void)
           associated with the name.  This is reminiscent of the logic
           that init_editfns uses to set the global Vuser_full_name.  */
 
-       char *user_name = (char *) egetenv ("LOGNAME");
+       const char *user_name = egetenv ("LOGNAME");
 
        if (!user_name)
-         user_name = (char *) egetenv ("USER");
+         user_name = egetenv ("USER");
 
        if (user_name)
          {
@@ -1331,7 +1350,7 @@ To start the server in Emacs, type \"M-x server-start\".\n",
 }
 #endif /* ! NO_SOCKETS_IN_FILE_SYSTEM */
 
-HSOCKET
+static HSOCKET
 set_socket (int no_exit_if_error)
 {
   HSOCKET s;
@@ -1447,7 +1466,7 @@ w32_give_focus (void)
 
 /* Start the emacs daemon and try to connect to it.  */
 
-void
+static void
 start_daemon_and_retry_set_socket (void)
 {
 #ifndef WINDOWSNT
@@ -1483,8 +1502,8 @@ start_daemon_and_retry_set_socket (void)
   else
     {
       char emacs[] = "emacs";
-      char daemon[] = "--daemon";
-      char *d_argv[] = {emacs, daemon, 0 };
+      char daemon_option[] = "--daemon";
+      char *d_argv[] = {emacs, daemon_option, 0 };
       if (socket_name != NULL)
        {
          /* Pass  --daemon=socket_name as argument.  */
@@ -1504,10 +1523,12 @@ start_daemon_and_retry_set_socket (void)
 int
 main (int argc, char **argv)
 {
-  int i, rl, needlf = 0;
+  int rl, needlf = 0;
   char *cwd, *str;
   char string[BUFSIZ+1];
-  int null_socket_name, null_server_file, start_daemon_if_needed;
+  int null_socket_name IF_LINT ( = 0);
+  int null_server_file IF_LINT ( = 0);
+  int start_daemon_if_needed;
   int exit_status = EXIT_SUCCESS;
 
   main_argv = argv;
@@ -1543,21 +1564,21 @@ main (int argc, char **argv)
       null_server_file = (server_file == NULL);
     }
 
-  if ((emacs_socket = set_socket (alternate_editor
-                                 || start_daemon_if_needed)) == INVALID_SOCKET)
-    if (start_daemon_if_needed)
-      {
-       /* Reset socket_name and server_file if they were NULL
-          before the set_socket call.  */
-       if (null_socket_name)
-         socket_name = NULL;
-       if (null_server_file)
-         server_file = NULL;
-
-       start_daemon_and_retry_set_socket ();
-      }
-    else
-      fail ();
+  emacs_socket = set_socket (alternate_editor || start_daemon_if_needed);
+  if (emacs_socket == INVALID_SOCKET)
+    {
+      if (! start_daemon_if_needed)
+       fail ();
+
+      /* Reset socket_name and server_file if they were NULL
+        before the set_socket call.  */
+      if (null_socket_name)
+       socket_name = NULL;
+      if (null_server_file)
+       server_file = NULL;
+
+      start_daemon_and_retry_set_socket ();
+    }
 
   cwd = get_current_dir_name ();
   if (cwd == 0)
@@ -1615,7 +1636,7 @@ main (int argc, char **argv)
      frame is available.  */
   if (tty || (current_frame && !eval))
     {
-      char *tty_type, *tty_name;
+      const char *tty_type, *tty_name;
 
       if (find_tty (&tty_type, &tty_name, !tty))
        {
@@ -1635,6 +1656,7 @@ main (int argc, char **argv)
 
   if ((argc - optind > 0))
     {
+      int i;
       for (i = optind; i < argc; i++)
        {
 
@@ -1699,7 +1721,7 @@ main (int argc, char **argv)
   send_to_emacs (emacs_socket, "\n");
 
   /* Wait for an answer. */
-  if (!eval && !tty && !nowait)
+  if (!eval && !tty && !nowait && !quiet)
     {
       printf ("Waiting for Emacs...");
       needlf = 2;
@@ -1722,7 +1744,7 @@ main (int argc, char **argv)
 
       if (rl <= 0)
         break;
-      
+
       string[rl] = '\0';
 
       p = string + strlen (string) - 1;
index 9471c0fe29fe60d05ced13d6d3c77c923ccd97a8..385e4cc9721268bbc42a3e2fc4b06bd5cfb0b1d6 100644 (file)
@@ -190,10 +190,6 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
 # define assert(x) ((void) 0)
 #endif
 
-#if !defined (S_ISREG) && defined (S_IFREG)
-# define S_ISREG(m)    (((m) & S_IFMT) == S_IFREG)
-#endif
-
 #ifdef NO_LONG_OPTIONS         /* define this if you don't have GNU getopt */
 # define NO_LONG_OPTIONS TRUE
 # define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr)
@@ -243,7 +239,6 @@ If you want regular expression support, you should delete this notice and
 #define ISLOWER(c)     islower (CHAR(c))
 
 #define lowcase(c)     tolower (CHAR(c))
-#define upcase(c)      toupper (CHAR(c))
 
 
 /*
@@ -5327,7 +5322,7 @@ prolog_skip_comment (linebuffer *plb, FILE *inf)
  */
 static int
 prolog_pr (char *s, char *last)
-             
+
                                /* Name of last clause. */
 {
   int pos;
@@ -5484,7 +5479,7 @@ Erlang_functions (FILE *inf)
  */
 static int
 erlang_func (char *s, char *last)
-             
+
                                /* Name of last clause. */
 {
   int pos;
@@ -6642,7 +6637,7 @@ filename_is_absolute (char *fn)
          );
 }
 
-/* Upcase DOS drive letter and collapse separators into single slashes.
+/* Downcase DOS drive letter and collapse separators into single slashes.
    Works in place. */
 static void
 canonicalize_filename (register char *fn)
@@ -6652,8 +6647,9 @@ canonicalize_filename (register char *fn)
 
 #ifdef DOS_NT
   /* Canonicalize drive letter case.  */
-  if (fn[0] != '\0' && fn[1] == ':' && ISLOWER (fn[0]))
-    fn[0] = upcase (fn[0]);
+# define ISUPPER(c)    isupper (CHAR(c))
+  if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0]))
+    fn[0] = lowcase (fn[0]);
 
   sep = '\\';
 #endif
index 4289e009e44d7bdff10a93a72446e5dd1ecfb4bc..780a104b40508d549c217fa8f48d48e806626691 100644 (file)
@@ -62,6 +62,8 @@ main ()
 
 /* This is to declare cuserid.  */
 #include <unistd.h>
+
+#include <ignore-value.h>
 \f
 /* Type definitions */
 
@@ -198,7 +200,7 @@ xrealloc (long int *ptr, int size)
 \f
 /* Initialize a linebuffer for use */
 
-void
+static void
 init_linebuffer (struct linebuffer *linebuffer)
 {
   linebuffer->size = INITIAL_LINE_SIZE;
@@ -208,7 +210,7 @@ init_linebuffer (struct linebuffer *linebuffer)
 /* Read a line of text from `stream' into `linebuffer'.
    Return the length of the line.  */
 
-long
+static long
 readline (struct linebuffer *linebuffer, FILE *stream)
 {
   char *buffer = linebuffer->buffer;
@@ -243,7 +245,7 @@ readline (struct linebuffer *linebuffer, FILE *stream)
 
    If there is no keyword, return NULL and don't alter *REST.  */
 
-char *
+static char *
 get_keyword (register char *field, char **rest)
 {
   static char keyword[KEYWORD_SIZE];
@@ -268,7 +270,7 @@ get_keyword (register char *field, char **rest)
 
 /* Nonzero if the string FIELD starts with a colon-terminated keyword.  */
 
-boolean
+static boolean
 has_keyword (char *field)
 {
   char *ignored;
@@ -285,7 +287,7 @@ has_keyword (char *field)
    We don't pay attention to overflowing WHERE;
    the caller has to make it big enough.  */
 
-char *
+static char *
 add_field (line_list the_list, register char *field, register char *where)
 {
   register char c;
@@ -341,7 +343,7 @@ add_field (line_list the_list, register char *field, register char *where)
   return where;
 }
 \f
-line_list
+static line_list
 make_file_preface (void)
 {
   char *the_string, *temp;
@@ -385,7 +387,7 @@ make_file_preface (void)
   return result;
 }
 
-void
+static void
 write_line_list (register line_list the_list, FILE *the_stream)
 {
   for ( ;
@@ -398,20 +400,20 @@ write_line_list (register line_list the_list, FILE *the_stream)
   return;
 }
 \f
-int
+static int
 close_the_streams (void)
 {
   register stream_list rem;
   for (rem = the_streams;
        rem != ((stream_list) NULL);
        rem = rem->rest_streams)
-    no_problems = (no_problems &&
-                  ((*rem->action) (rem->handle) == 0));
+    if (no_problems && (*rem->action) (rem->handle) != 0)
+      error ("output error", NULL);
   the_streams = ((stream_list) NULL);
   return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
-void
+static void
 add_a_stream (FILE *the_stream, int (*closing_action) (FILE *))
 {
   stream_list old = the_streams;
@@ -422,15 +424,17 @@ add_a_stream (FILE *the_stream, int (*closing_action) (FILE *))
   return;
 }
 
-int
+static int
 my_fclose (FILE *the_file)
 {
   putc ('\n', the_file);
   fflush (the_file);
+  if (ferror (the_file))
+    return EOF;
   return fclose (the_file);
 }
 
-boolean
+static boolean
 open_a_file (char *name)
 {
   FILE *the_stream = fopen (name, "a");
@@ -445,7 +449,7 @@ open_a_file (char *name)
   return false;
 }
 
-void
+static void
 put_string (char *s)
 {
   register stream_list rem;
@@ -456,7 +460,7 @@ put_string (char *s)
   return;
 }
 
-void
+static void
 put_line (const char *string)
 {
   register stream_list rem;
@@ -496,7 +500,7 @@ put_line (const char *string)
                }
            }
          /* Output that much, then break the line.  */
-         fwrite (s, 1, breakpos - s, rem->handle);
+         ignore_value (fwrite (s, 1, breakpos - s, rem->handle));
          column = 8;
 
          /* Skip whitespace and prepare to print more addresses.  */
@@ -516,7 +520,7 @@ put_line (const char *string)
    the header name), and THE_LIST holds the continuation lines if any.
    Call open_a_file for each file.  */
 
-void
+static void
 setup_files (register line_list the_list, register char *field)
 {
   register char *start;
@@ -552,7 +556,7 @@ setup_files (register line_list the_list, register char *field)
 /* Compute the total size of all recipient names stored in THE_HEADER.
    The result says how big to make the buffer to pass to parse_header.  */
 
-int
+static int
 args_size (header the_header)
 {
   register header old = the_header;
@@ -583,7 +587,7 @@ args_size (header the_header)
 
    Also, if the header has any FCC fields, call setup_files for each one.  */
 
-void
+static void
 parse_header (header the_header, register char *where)
 {
   register header old = the_header;
@@ -615,7 +619,7 @@ parse_header (header the_header, register char *where)
    one for each line in that field.
    Continuation lines are grouped in the headers they continue.  */
 
-header
+static header
 read_header (void)
 {
   register header the_header = ((header) NULL);
@@ -669,7 +673,7 @@ read_header (void)
   return the_header->next;
 }
 \f
-void
+static void
 write_header (header the_header)
 {
   register header old = the_header;
@@ -729,6 +733,9 @@ main (int argc, char **argv)
       put_string (buf);
     }
 
+  if (no_problems && (ferror (stdin) || fclose (stdin) != 0))
+    error ("input error", NULL);
+
   exit (close_the_streams ());
 }
 
index 1f370555051e1743e586c971860166e99e8f41bc..f900ea42e91cf8731a564c3c82cf71e124865fe5 100644 (file)
@@ -66,12 +66,12 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
 #endif
 
-int scan_file (char *filename);
-int scan_lisp_file (const char *filename, const char *mode);
-int scan_c_file (char *filename, const char *mode);
-void fatal (const char *s1, const char *s2) NO_RETURN;
-void start_globals (void);
-void write_globals (void);
+static int scan_file (char *filename);
+static int scan_lisp_file (const char *filename, const char *mode);
+static int scan_c_file (char *filename, const char *mode);
+static void fatal (const char *s1, const char *s2) NO_RETURN;
+static void start_globals (void);
+static void write_globals (void);
 
 #ifdef MSDOS
 /* s/msdos.h defines this as sys_chdir, but we're not linking with the
@@ -93,7 +93,7 @@ int generate_globals;
 /* Print error message.  `s1' is printf control string, `s2' is arg for it.  */
 
 /* VARARGS1 */
-void
+static void
 error (const char *s1, const char *s2)
 {
   fprintf (stderr, "%s: ", progname);
@@ -104,7 +104,7 @@ error (const char *s1, const char *s2)
 /* Print error message and exit.  */
 
 /* VARARGS1 */
-void
+static void
 fatal (const char *s1, const char *s2)
 {
   error (s1, s2);
@@ -113,7 +113,7 @@ fatal (const char *s1, const char *s2)
 
 /* Like malloc but get fatal error if memory is exhausted.  */
 
-void *
+static void *
 xmalloc (unsigned int size)
 {
   void *result = (void *) malloc (size);
@@ -124,7 +124,7 @@ xmalloc (unsigned int size)
 
 /* Like realloc but get fatal error if memory is exhausted.  */
 
-void *
+static void *
 xrealloc (void *arg, unsigned int size)
 {
   void *result = (void *) realloc (arg, size);
@@ -212,7 +212,7 @@ main (int argc, char **argv)
 }
 
 /* Add a source file name boundary marker in the output file.  */
-void
+static void
 put_filename (char *filename)
 {
   char *tmp;
@@ -231,7 +231,7 @@ put_filename (char *filename)
 /* Read file FILENAME and output its doc strings to outfile.  */
 /* Return 1 if file is not found, 0 if it is found.  */
 
-int
+static int
 scan_file (char *filename)
 {
 
@@ -247,7 +247,7 @@ scan_file (char *filename)
     return scan_c_file (filename, READ_TEXT);
 }
 
-void
+static void
 start_globals (void)
 {
   fprintf (outfile, "/* This file was auto-generated by make-docfile.  */\n");
@@ -255,7 +255,7 @@ start_globals (void)
   fprintf (outfile, "struct emacs_globals {\n");
 }
 \f
-char buf[128];
+static char input_buffer[128];
 
 /* Some state during the execution of `read_c_string_or_comment'.  */
 struct rcsoc_state
@@ -388,14 +388,14 @@ scan_keyword_or_put_char (int ch, struct rcsoc_state *state)
    at the beginning of a line will be removed, and *SAW_USAGE set to
    true if any were encountered.  */
 
-int
+static int
 read_c_string_or_comment (FILE *infile, int printflag, int comment, int *saw_usage)
 {
   register int c;
   struct rcsoc_state state;
 
   state.in_file = infile;
-  state.buf_ptr = (printflag < 0 ? buf : 0);
+  state.buf_ptr = (printflag < 0 ? input_buffer : 0);
   state.out_file = (printflag > 0 ? outfile : 0);
   state.pending_spaces = 0;
   state.pending_newlines = 0;
@@ -476,7 +476,7 @@ read_c_string_or_comment (FILE *infile, int printflag, int comment, int *saw_usa
 /* Write to file OUT the argument names of function FUNC, whose text is in BUF.
    MINARGS and MAXARGS are the minimum and maximum number of arguments.  */
 
-void
+static void
 write_c_args (FILE *out, char *func, char *buf, int minargs, int maxargs)
 {
   register char *p;
@@ -610,14 +610,14 @@ compare_globals (const void *a, const void *b)
   return strcmp (ga->name, gb->name);
 }
 
-void
+static void
 write_globals (void)
 {
   int i;
   qsort (globals, num_globals, sizeof (struct global), compare_globals);
   for (i = 0; i < num_globals; ++i)
     {
-      char *type;
+      char const *type;
 
       switch (globals[i].type)
        {
@@ -652,18 +652,14 @@ write_globals (void)
    Looks for DEFUN constructs such as are defined in ../src/lisp.h.
    Accepts any word starting DEF... so it finds DEFSIMPLE and DEFPRED.  */
 
-int
+static int
 scan_c_file (char *filename, const char *mode)
 {
   FILE *infile;
   register int c;
   register int commas;
-  register int defunflag;
-  register int defvarperbufferflag;
-  register int defvarflag;
   int minargs, maxargs;
   int extension = filename[strlen (filename) - 1];
-  enum global_type type;
 
   if (extension == 'o')
     filename[strlen (filename) - 1] = 'c';
@@ -693,6 +689,10 @@ scan_c_file (char *filename, const char *mode)
   while (!feof (infile))
     {
       int doc_keyword = 0;
+      int defunflag = 0;
+      int defvarperbufferflag = 0;
+      int defvarflag = 0;
+      enum global_type type = INVALID;
 
       if (c != '\n' && c != '\r')
        {
@@ -726,7 +726,6 @@ scan_c_file (char *filename, const char *mode)
            continue;
 
          defvarflag = 1;
-         defunflag = 0;
 
          c = getc (infile);
          defvarperbufferflag = (c == 'P');
@@ -738,8 +737,6 @@ scan_c_file (char *filename, const char *mode)
                type = LISP_OBJECT;
              else if (c == 'B')
                type = BOOLEAN;
-             else
-               type = INVALID;
            }
 
          c = getc (infile);
@@ -758,8 +755,6 @@ scan_c_file (char *filename, const char *mode)
            continue;
          c = getc (infile);
          defunflag = c == 'U';
-         defvarflag = 0;
-         defvarperbufferflag = 0;
        }
       else continue;
 
@@ -795,15 +790,15 @@ scan_c_file (char *filename, const char *mode)
          /* Read in the identifier.  */
          do
            {
-             buf[i++] = c;
+             input_buffer[i++] = c;
              c = getc (infile);
            }
          while (! (c == ',' || c == ' ' || c == '\t' ||
                    c == '\n' || c == '\r'));
-         buf[i] = '\0';
+         input_buffer[i] = '\0';
 
          name = xmalloc (i + 1);
-         memcpy (name, buf, i + 1);
+         memcpy (name, input_buffer, i + 1);
          add_global (type, name);
          continue;
        }
@@ -888,7 +883,7 @@ scan_c_file (char *filename, const char *mode)
 
          putc (037, outfile);
          putc (defvarflag ? 'V' : 'F', outfile);
-         fprintf (outfile, "%s\n", buf);
+         fprintf (outfile, "%s\n", input_buffer);
 
          if (comment)
            getc (infile);      /* Skip past `*' */
@@ -931,11 +926,12 @@ scan_c_file (char *filename, const char *mode)
              *p = '\0';
              /* Output them.  */
              fprintf (outfile, "\n\n");
-             write_c_args (outfile, buf, argbuf, minargs, maxargs);
+             write_c_args (outfile, input_buffer, argbuf, minargs, maxargs);
            }
          else if (defunflag && maxargs == -1 && !saw_usage)
            /* The DOC should provide the usage form.  */
-           fprintf (stderr, "Missing `usage' for function `%s'.\n", buf);
+           fprintf (stderr, "Missing `usage' for function `%s'.\n",
+                    input_buffer);
        }
     }
  eof:
@@ -979,7 +975,7 @@ scan_c_file (char *filename, const char *mode)
  An entry is output only if DOCSTRING has \ newline just after the opening "
  */
 
-void
+static void
 skip_white (FILE *infile)
 {
   char c = ' ';
@@ -988,7 +984,7 @@ skip_white (FILE *infile)
   ungetc (c, infile);
 }
 
-void
+static void
 read_lisp_symbol (FILE *infile, char *buffer)
 {
   char c;
@@ -1016,7 +1012,7 @@ read_lisp_symbol (FILE *infile, char *buffer)
   skip_white (infile);
 }
 
-int
+static int
 scan_lisp_file (const char *filename, const char *mode)
 {
   FILE *infile;
index bc7b1b27bafec52573818e1b0cc24d8db1184b2b..f09ede06900e63d3313cca9fc544ed27ac26f21a 100644 (file)
@@ -135,7 +135,7 @@ obj =   dosfns.o msdos.o \
        cm.o term.o terminal.o xfaces.o \
        emacs.o keyboard.o macros.o keymap.o sysdep.o \
        buffer.o filelock.o insdel.o marker.o \
-       minibuf.o fileio.o dired.o filemode.o \
+       minibuf.o fileio.o dired.o \
        cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
        alloc.o data.o doc.o editfns.o callint.o \
        eval.o floatfns.o fns.o print.o lread.o \
@@ -381,6 +381,13 @@ $(BLD)/ctags.$(O) : \
        $(SRC)/ntlib.h \
        $(EMACS_ROOT)/lib/getopt.h
 
+$(BLD)/ebrowse.$(O) : \
+       $(SRC)/ebrowse.c \
+       $(EMACS_ROOT)/lib/min-max.h \
+       $(EMACS_ROOT)/src/s/ms-w32.h \
+       $(EMACS_ROOT)/src/m/intel386.h \
+       $(EMACS_ROOT)/lib-src/../src/config.h
+
 $(BLD)/emacsclient.$(O) : \
        $(SRC)/emacsclient.c \
        $(EMACS_ROOT)/nt/inc/sys/stat.h \
@@ -447,6 +454,7 @@ $(BLD)/ntlib.$(O) : \
 $(BLD)/pop.$(O) : \
        $(SRC)/pop.c \
        $(SRC)/pop.h \
+       $(EMACS_ROOT)/lib/min-max.h \
        $(SRC)/ntlib.h
 
 $(BLD)/profile.$(O) : \
index 682aa10aa39a91820c610c875a760dbda4eec50b..4a894c1cba1a450648b153b0d4e4a6632a095449 100644 (file)
@@ -80,13 +80,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #undef access
 #endif /* MSDOS */
 
-#ifndef DIRECTORY_SEP
-#define DIRECTORY_SEP '/'
-#endif
-#ifndef IS_DIRECTORY_SEP
-#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
-#endif
-
 #ifdef WINDOWSNT
 #include "ntlib.h"
 #undef access
@@ -161,7 +154,7 @@ static int mbx_delimit_end (FILE *mbf);
 #endif
 
 /* Nonzero means this is name of a lock file to delete on fatal error.  */
-char *delete_lockname;
+static char *delete_lockname;
 
 int
 main (int argc, char **argv)
@@ -169,7 +162,7 @@ main (int argc, char **argv)
   char *inname, *outname;
   int indesc, outdesc;
   ssize_t nread;
-  int status;
+  int wait_status;
   int c, preserve_mail = 0;
 
 #ifndef MAIL_USE_SYSTEM_LOCK
@@ -269,6 +262,13 @@ main (int argc, char **argv)
   if (! spool_name)
 #endif
     {
+      #ifndef DIRECTORY_SEP
+       #define DIRECTORY_SEP '/'
+      #endif
+      #ifndef IS_DIRECTORY_SEP
+       #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
+      #endif
+
       /* Use a lock file named after our first argument with .lock appended:
         If it exists, the mail file is locked.  */
       /* Note: this locking mechanism is *required* by the mailer
@@ -527,11 +527,11 @@ main (int argc, char **argv)
       exit (EXIT_SUCCESS);
     }
 
-  wait (&status);
-  if (!WIFEXITED (status))
+  wait (&wait_status);
+  if (!WIFEXITED (wait_status))
     exit (EXIT_FAILURE);
-  else if (WRETCODE (status) != 0)
-    exit (WRETCODE (status));
+  else if (WRETCODE (wait_status) != 0)
+    exit (WRETCODE (wait_status));
 
 #if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
 #ifdef MAIL_USE_MAILLOCK
@@ -670,14 +670,8 @@ xmalloc (unsigned int size)
 
 #define NOTOK (-1)
 #define OK 0
-#define DONE 1
-
-char *progname;
-FILE *sfi;
-FILE *sfo;
-char ibuffer[BUFSIZ];
-char obuffer[BUFSIZ];
-char Errmsg[200];              /* POP errors, at least, can exceed
+
+static char Errmsg[200];       /* POP errors, at least, can exceed
                                   the original length of 80.  */
 
 /*
@@ -736,7 +730,18 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
       error ("Error in open: %s, %s", strerror (errno), outfile);
       return EXIT_FAILURE;
     }
-  fchown (mbfi, getuid (), -1);
+
+  if (fchown (mbfi, getuid (), -1) != 0)
+    {
+      int fchown_errno = errno;
+      struct stat st;
+      if (fstat (mbfi, &st) != 0 || st.st_uid != getuid ())
+       {
+         pop_close (server);
+         error ("Error in fchown: %s, %s", strerror (fchown_errno), outfile);
+         return EXIT_FAILURE;
+       }
+    }
 
   if ((mbf = fdopen (mbfi, "wb")) == NULL)
     {
@@ -828,10 +833,10 @@ pop_retr (popserver server, int msgno, FILE *arg)
 
   if (pop_retrieve_first (server, msgno, &line))
     {
-      char *error = concat ("Error from POP server: ", pop_error, "");
-      strncpy (Errmsg, error, sizeof (Errmsg));
+      char *msg = concat ("Error from POP server: ", pop_error, "");
+      strncpy (Errmsg, msg, sizeof (Errmsg));
       Errmsg[sizeof (Errmsg)-1] = '\0';
-      free(error);
+      free (msg);
       return (NOTOK);
     }
 
@@ -850,27 +855,26 @@ pop_retr (popserver server, int msgno, FILE *arg)
 
   if (ret)
     {
-      char *error = concat ("Error from POP server: ", pop_error, "");
-      strncpy (Errmsg, error, sizeof (Errmsg));
+      char *msg = concat ("Error from POP server: ", pop_error, "");
+      strncpy (Errmsg, msg, sizeof (Errmsg));
       Errmsg[sizeof (Errmsg)-1] = '\0';
-      free(error);
+      free (msg);
       return (NOTOK);
     }
 
   return (OK);
 }
 
-/* Do this as a macro instead of using strcmp to save on execution time. */
-#define IS_FROM_LINE(a) ((a[0] == 'F') \
-                        && (a[1] == 'r') \
-                        && (a[2] == 'o') \
-                        && (a[3] == 'm') \
-                        && (a[4] == ' '))
-
 static int
 mbx_write (char *line, int len, FILE *mbf)
 {
 #ifdef MOVEMAIL_QUOTE_POP_FROM_LINES
+  /* Do this as a macro instead of using strcmp to save on execution time. */
+  # define IS_FROM_LINE(a) ((a[0] == 'F')      \
+                           && (a[1] == 'r')    \
+                           && (a[2] == 'o')    \
+                           && (a[3] == 'm')    \
+                           && (a[4] == ' '))
   if (IS_FROM_LINE (line))
     {
       if (fputc ('>', mbf) == EOF)
index a3fda09d44ff4b440788274e6764f44c36c5cb50..426b39bd1fb4c34aef01161b16317ada6a9a37df 100644 (file)
@@ -67,7 +67,6 @@ extern struct servent *hes_getservbyname (/* char *, char * */);
 #include <stdio.h>
 #ifdef STDC_HEADERS
 #include <string.h>
-#define index strchr
 #endif
 #include <unistd.h>
 
@@ -91,6 +90,8 @@ extern struct servent *hes_getservbyname (/* char *, char * */);
 # endif
 #endif /* KERBEROS */
 
+#include <min-max.h>
+
 #ifdef KERBEROS
 #ifndef KERBEROS5
 extern int krb_sendauth (/* long, int, KTEXT, char *, char *, char *,
@@ -122,19 +123,15 @@ static char *find_crlf (char *, int);
                                   to be bigger than the original
                                   value of 80 */
 #define POP_PORT 110
-#define KPOP_PORT 1109
 #define POP_SERVICE "pop3"     /* we don't want the POP2 port! */
 #ifdef KERBEROS
+#define KPOP_PORT 1109
 #define KPOP_SERVICE "kpop"    /* never used: look for 20060515 to see why */
 #endif
 
 char pop_error[ERROR_MAX];
 int pop_debug = 0;
 
-#ifndef min
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
 /*
  * Function: pop_open (char *host, char *username, char *password,
  *                    int flags)
index 9ce9993f4b1b1bbf950b6f4f77899f36bf39003d..086d8cc3e9d4f8f26f286dcb546d3ae6de30d44a 100644 (file)
@@ -38,7 +38,7 @@ static char time_string[30];
 
 /* Reset the stopwatch to zero.  */
 
-void
+static void
 reset_watch (void)
 {
   EMACS_GET_TIME (TV1);
@@ -49,7 +49,7 @@ reset_watch (void)
    is returned as a string with the format  <seconds>.<micro-seconds>
    If reset_watch was not called yet, exit.  */
 
-char *
+static char *
 get_time (void)
 {
   if (watch_not_started)
index acfb147325b92250d693682e3c0a600c51cfdba4..5ad19201118ad9423891539f75256b7fdf8cabe2 100644 (file)
@@ -26,18 +26,16 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Break string in two parts to avoid buggy C compilers that ignore characters
    after nulls in strings.  */
 
-char string1[] = "Testing distribution of nonprinting chars:\n\
+static char string1[] = "Testing distribution of nonprinting chars:\n\
 Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\
 Should be 0000: ";
 
-char string2[] = ".\n\
+static char string2[] = ".\n\
 This file is read by the `test-distribution' program.\n\
 If you change it, you will make that program fail.\n";
 
-char buf[300];
-
 /* Like `read' but keeps trying until it gets SIZE bytes or reaches eof.  */
-int
+static int
 cool_read (int fd, char *buf, size_t size)
 {
   ssize_t num;
@@ -57,6 +55,7 @@ int
 main (int argc, char **argv)
 {
   int fd;
+  char buf[300];
 
   if (argc != 2)
     {
index 9466bf7b1496707ac84a45ba2f526df89bdaeb8c..70b79a64f91ca2878f5dcc9ed7f072a0878dc0e6 100644 (file)
@@ -57,7 +57,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 extern char *optarg;
 extern int optind, opterr;
 
-int usage (int err) NO_RETURN;
+static int usage (int err) NO_RETURN;
 
 #define MAX_ATTEMPTS 5
 #define MAX_SCORES 200
@@ -68,7 +68,7 @@ int usage (int err) NO_RETURN;
 #define difftime(t1, t0) (double)((t1) - (t0))
 #endif
 
-int
+static int
 usage (int err)
 {
   fprintf (stdout, "Usage: update-game-score [-m MAX ] [ -r ] game/scorefile SCORE DATA\n");
@@ -80,8 +80,8 @@ usage (int err)
   exit (err);
 }
 
-int lock_file (const char *filename, void **state);
-int unlock_file (const char *filename, void *state);
+static int lock_file (const char *filename, void **state);
+static int unlock_file (const char *filename, void *state);
 
 struct score_entry
 {
@@ -90,24 +90,24 @@ struct score_entry
   char *data;
 };
 
-int read_scores (const char *filename, struct score_entry **scores,
-                 int *count);
-int push_score (struct score_entry **scores, int *count,
-                int newscore, char *username, char *newdata);
-void sort_scores (struct score_entry *scores, int count, int reverse);
-int write_scores (const char *filename, const struct score_entry *scores,
-                  int count);
+static int read_scores (const char *filename, struct score_entry **scores,
+                       int *count);
+static int push_score (struct score_entry **scores, int *count,
+                      int newscore, char *username, char *newdata);
+static void sort_scores (struct score_entry *scores, int count, int reverse);
+static int write_scores (const char *filename,
+                        const struct score_entry *scores, int count);
 
-void lose (const char *msg) NO_RETURN;
+static void lose (const char *msg) NO_RETURN;
 
-void
+static void
 lose (const char *msg)
 {
   fprintf (stderr, "%s\n", msg);
   exit (EXIT_FAILURE);
 }
 
-void lose_syserr (const char *msg) NO_RETURN;
+static void lose_syserr (const char *msg) NO_RETURN;
 
 /* Taken from sysdep.c.  */
 #ifndef HAVE_STRERROR
@@ -126,14 +126,14 @@ strerror (errnum)
 #endif /* not WINDOWSNT */
 #endif /* ! HAVE_STRERROR */
 
-void
+static void
 lose_syserr (const char *msg)
 {
   fprintf (stderr, "%s: %s\n", msg, strerror (errno));
   exit (EXIT_FAILURE);
 }
 
-char *
+static char *
 get_user_id (void)
 {
   char *name;
@@ -154,7 +154,7 @@ get_user_id (void)
   return buf->pw_name;
 }
 
-const char *
+static const char *
 get_prefix (int running_suid, const char *user_prefix)
 {
   if (!running_suid && user_prefix == NULL)
@@ -258,7 +258,7 @@ main (int argc, char **argv)
   exit (EXIT_SUCCESS);
 }
 
-int
+static int
 read_score (FILE *f, struct score_entry *score)
 {
   int c;
@@ -342,7 +342,7 @@ read_score (FILE *f, struct score_entry *score)
   return 0;
 }
 
-int
+static int
 read_scores (const char *filename, struct score_entry **scores, int *count)
 {
   int readval, scorecount, cursize;
@@ -375,7 +375,7 @@ read_scores (const char *filename, struct score_entry **scores, int *count)
   return 0;
 }
 
-int
+static int
 score_compare (const void *a, const void *b)
 {
   const struct score_entry *sa = (const struct score_entry *) a;
@@ -383,7 +383,7 @@ score_compare (const void *a, const void *b)
   return (sb->score > sa->score) - (sb->score < sa->score);
 }
 
-int
+static int
 score_compare_reverse (const void *a, const void *b)
 {
   const struct score_entry *sa = (const struct score_entry *) a;
@@ -407,14 +407,14 @@ push_score (struct score_entry **scores, int *count, int newscore, char *usernam
   return 0;
 }
 
-void
+static void
 sort_scores (struct score_entry *scores, int count, int reverse)
 {
   qsort (scores, count, sizeof (struct score_entry),
        reverse ? score_compare_reverse : score_compare);
 }
 
-int
+static int
 write_scores (const char *filename, const struct score_entry *scores, int count)
 {
   FILE *f;
@@ -443,7 +443,7 @@ write_scores (const char *filename, const struct score_entry *scores, int count)
   return 0;
 }
 
-int
+static int
 lock_file (const char *filename, void **state)
 {
   int fd;
@@ -484,7 +484,7 @@ lock_file (const char *filename, void **state)
   return 0;
 }
 
-int
+static int
 unlock_file (const char *filename, void *state)
 {
   char *lockpath = (char *) state;
index b16587bbddc9c3b2e3dc931983cf2f5fe37c3a95..04ee541a09c897b1ade669bfdbafcabef8d73d49 100644 (file)
@@ -24,7 +24,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr filemode getloadavg getopt-gnu ignore-value mktime strftime
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr filemode getloadavg getopt-gnu ignore-value lstat mktime readlink strftime symlink sys_stat
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
@@ -55,11 +55,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gl-comp.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/longlong.m4 \
-       $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/mktime.m4 \
-       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
+       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/md5.m4 \
+       $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/multiarch.m4 \
+       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
        $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
        $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \
        $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.in
@@ -179,6 +181,7 @@ GNULIB_LINKAT = @GNULIB_LINKAT@
 GNULIB_LSEEK = @GNULIB_LSEEK@
 GNULIB_LSTAT = @GNULIB_LSTAT@
 GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
 GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
 GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
 GNULIB_MKFIFO = @GNULIB_MKFIFO@
@@ -225,6 +228,7 @@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
 GNULIB_WRITE = @GNULIB_WRITE@
 GNULIB__EXIT = @GNULIB__EXIT@
 GNU_OBJC_CFLAGS = @GNU_OBJC_CFLAGS@
@@ -452,6 +456,7 @@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
 REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
 REPLACE_MKDIR = @REPLACE_MKDIR@
 REPLACE_MKFIFO = @REPLACE_MKFIFO@
 REPLACE_MKNOD = @REPLACE_MKNOD@
@@ -478,6 +483,7 @@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
 REPLACE_USLEEP = @REPLACE_USLEEP@
 REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
 REPLACE_WRITE = @REPLACE_WRITE@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
@@ -598,10 +604,11 @@ BUILT_SOURCES = arg-nonnull.h c++defs.h $(GETOPT_H) $(STDBOOL_H) \
        $(STDDEF_H) $(STDINT_H) stdlib.h sys/stat.h time.h unistd.h \
        warn-on-use.h
 EXTRA_DIST = $(top_srcdir)/./arg-nonnull.h $(top_srcdir)/./c++defs.h \
-       md5.c md5.h ftoastr.c ftoastr.h filemode.c filemode.h \
-       getloadavg.c getopt.c getopt.in.h getopt1.c getopt_int.h \
-       intprops.h mktime-internal.h mktime.c stdbool.in.h stddef.in.h \
-       stdint.in.h stdlib.in.h strftime.c strftime.h sys_stat.in.h \
+       md5.c md5.h dosname.h ftoastr.c ftoastr.h filemode.c \
+       filemode.h getloadavg.c getopt.c getopt.in.h getopt1.c \
+       getopt_int.h intprops.h lstat.c mktime-internal.h mktime.c \
+       readlink.c stat.c stdbool.in.h stddef.in.h stdint.in.h \
+       stdlib.in.h strftime.c strftime.h symlink.c sys_stat.in.h \
        time.in.h time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h
 MOSTLYCLEANDIRS = sys
 MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \
@@ -615,7 +622,8 @@ libgnu_a_SOURCES = dtoastr.c gettext.h ignore-value.h
 libgnu_a_LIBADD = $(gl_LIBOBJS)
 libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
 EXTRA_libgnu_a_SOURCES = md5.c ftoastr.c filemode.c getloadavg.c \
-       getopt.c getopt1.c mktime.c strftime.c time_r.c
+       getopt.c getopt1.c lstat.c mktime.c readlink.c stat.c \
+       strftime.c symlink.c time_r.c
 ARG_NONNULL_H = arg-nonnull.h
 CXXDEFS_H = c++defs.h
 WARN_ON_USE_H = warn-on-use.h
@@ -674,9 +682,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
 
 .c.o:
@@ -1001,6 +1013,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
              -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
              -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_MBTOWC''@|$(GNULIB_MBTOWC)|g' \
              -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
@@ -1019,6 +1032,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
              -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
              -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''GNULIB_WCTOMB''@|$(GNULIB_WCTOMB)|g' \
              < $(srcdir)/stdlib.in.h | \
          sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
              -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
@@ -1047,6 +1061,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
              -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+             -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
              -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
@@ -1054,6 +1069,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
              -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
              -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+             -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
diff --git a/lib/dosname.h b/lib/dosname.h
new file mode 100644 (file)
index 0000000..acdd03b
--- /dev/null
@@ -0,0 +1,53 @@
+/* File names on MS-DOS/Windows systems.
+
+   Copyright (C) 2000-2001, 2004-2006, 2009-2011 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+   From Paul Eggert and Jim Meyering.  */
+
+#ifndef _DOSNAME_H
+#define _DOSNAME_H
+
+#if (defined _WIN32 || defined __WIN32__ ||     \
+     defined __MSDOS__ || defined __CYGWIN__ || \
+     defined __EMX__ || defined __DJGPP__)
+   /* This internal macro assumes ASCII, but all hosts that support drive
+      letters use ASCII.  */
+# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a'  \
+                              <= 'z' - 'a')
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+          (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
+# ifndef __CYGWIN__
+#  define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1
+# endif
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
+#endif
+
+#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+#  define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
+# else
+#  define IS_ABSOLUTE_FILE_NAME(F)                              \
+     (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0)
+#endif
+#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
+
+#endif /* DOSNAME_H_ */
index 7a01a6aa422dae5bb722b155f1fc7de4e408e9cf..9f0c7131a142a229de2cc245a2286b8988218eef 100644 (file)
@@ -108,7 +108,7 @@ struct _getopt_data
 #if defined _LIBC && defined USE_NONOPTION_FLAGS
   int __nonoption_flags_max_len;
   int __nonoption_flags_len;
-# endif
+#endif
 };
 
 /* The initializer is necessary to set OPTIND and OPTERR to their
index bdba2e9c1bbcc484a82494ac08d7b256d2b54929..b5fd4a358db61c7b6a20f06fab21681031494d5d 100644 (file)
@@ -9,7 +9,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr filemode getloadavg getopt-gnu ignore-value mktime strftime
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr filemode getloadavg getopt-gnu ignore-value lstat mktime readlink strftime symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -78,6 +78,13 @@ EXTRA_libgnu_a_SOURCES += md5.c
 
 ## end   gnulib module crypto/md5
 
+## begin gnulib module dosname
+
+
+EXTRA_DIST += dosname.h
+
+## end   gnulib module dosname
+
 ## begin gnulib module dtoastr
 
 libgnu_a_SOURCES += dtoastr.c
@@ -151,6 +158,15 @@ EXTRA_DIST += intprops.h
 
 ## end   gnulib module intprops
 
+## begin gnulib module lstat
+
+
+EXTRA_DIST += lstat.c
+
+EXTRA_libgnu_a_SOURCES += lstat.c
+
+## end   gnulib module lstat
+
 ## begin gnulib module mktime
 
 
@@ -160,6 +176,24 @@ EXTRA_libgnu_a_SOURCES += mktime.c
 
 ## end   gnulib module mktime
 
+## begin gnulib module readlink
+
+
+EXTRA_DIST += readlink.c
+
+EXTRA_libgnu_a_SOURCES += readlink.c
+
+## end   gnulib module readlink
+
+## begin gnulib module stat
+
+
+EXTRA_DIST += stat.c
+
+EXTRA_libgnu_a_SOURCES += stat.c
+
+## end   gnulib module stat
+
 ## begin gnulib module stdbool
 
 BUILT_SOURCES += $(STDBOOL_H)
@@ -267,6 +301,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
              -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
              -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_MBTOWC''@|$(GNULIB_MBTOWC)|g' \
              -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
@@ -285,6 +320,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
              -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
              -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''GNULIB_WCTOMB''@|$(GNULIB_WCTOMB)|g' \
              < $(srcdir)/stdlib.in.h | \
          sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
              -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
@@ -313,6 +349,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
              -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+             -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
              -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
@@ -320,6 +357,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
              -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
              -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+             -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
@@ -340,6 +378,15 @@ EXTRA_libgnu_a_SOURCES += strftime.c
 
 ## end   gnulib module strftime
 
+## begin gnulib module symlink
+
+
+EXTRA_DIST += symlink.c
+
+EXTRA_libgnu_a_SOURCES += symlink.c
+
+## end   gnulib module symlink
+
 ## begin gnulib module sys_stat
 
 BUILT_SOURCES += sys/stat.h
diff --git a/lib/lstat.c b/lib/lstat.c
new file mode 100644 (file)
index 0000000..b26065e
--- /dev/null
@@ -0,0 +1,91 @@
+/* Work around a bug of lstat on some systems
+
+   Copyright (C) 1997-2006, 2008-2011 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#if !HAVE_LSTAT
+/* On systems that lack symlinks, our replacement <sys/stat.h> already
+   defined lstat as stat, so there is nothing further to do other than
+   avoid an empty file.  */
+typedef int dummy;
+#else /* HAVE_LSTAT */
+
+/* Get the original definition of lstat.  It might be defined as a macro.  */
+# define __need_system_sys_stat_h
+# include <sys/types.h>
+# include <sys/stat.h>
+# undef __need_system_sys_stat_h
+
+static inline int
+orig_lstat (const char *filename, struct stat *buf)
+{
+  return lstat (filename, buf);
+}
+
+/* Specification.  */
+# include <sys/stat.h>
+
+# include <string.h>
+# include <errno.h>
+
+/* lstat works differently on Linux and Solaris systems.  POSIX (see
+   `pathname resolution' in the glossary) requires that programs like
+   `ls' take into consideration the fact that FILE has a trailing slash
+   when FILE is a symbolic link.  On Linux and Solaris 10 systems, the
+   lstat function already has the desired semantics (in treating
+   `lstat ("symlink/", sbuf)' just like `lstat ("symlink/.", sbuf)',
+   but on Solaris 9 and earlier it does not.
+
+   If FILE has a trailing slash and specifies a symbolic link,
+   then use stat() to get more info on the referent of FILE.
+   If the referent is a non-directory, then set errno to ENOTDIR
+   and return -1.  Otherwise, return stat's result.  */
+
+int
+rpl_lstat (const char *file, struct stat *sbuf)
+{
+  size_t len;
+  int lstat_result = orig_lstat (file, sbuf);
+
+  if (lstat_result != 0)
+    return lstat_result;
+
+  /* This replacement file can blindly check against '/' rather than
+     using the ISSLASH macro, because all platforms with '\\' either
+     lack symlinks (mingw) or have working lstat (cygwin) and thus do
+     not compile this file.  0 len should have already been filtered
+     out above, with a failure return of ENOENT.  */
+  len = strlen (file);
+  if (file[len - 1] != '/' || S_ISDIR (sbuf->st_mode))
+    return 0;
+
+  /* At this point, a trailing slash is only permitted on
+     symlink-to-dir; but it should have found information on the
+     directory, not the symlink.  Call stat() to get info about the
+     link's referent.  Our replacement stat guarantees valid results,
+     even if the symlink is not pointing to a directory.  */
+  if (!S_ISLNK (sbuf->st_mode))
+    {
+      errno = ENOTDIR;
+      return -1;
+    }
+  return stat (file, sbuf);
+}
+
+#endif /* HAVE_LSTAT */
diff --git a/lib/min-max.h b/lib/min-max.h
new file mode 100644 (file)
index 0000000..997cdd1
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef min
+# define min(a,b) ((a) < (b) ? (a) : (b))
+#endif
+#ifndef max
+# define max(a,b) ((a) > (b) ? (a) : (b))
+#endif
diff --git a/lib/readlink.c b/lib/readlink.c
new file mode 100644 (file)
index 0000000..35d045b
--- /dev/null
@@ -0,0 +1,74 @@
+/* Stub for readlink().
+   Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#if !HAVE_READLINK
+
+/* readlink() substitute for systems that don't have a readlink() function,
+   such as DJGPP 2.03 and mingw32.  */
+
+ssize_t
+readlink (const char *name, char *buf _GL_UNUSED,
+          size_t bufsize _GL_UNUSED)
+{
+  struct stat statbuf;
+
+  /* In general we should use lstat() here, not stat().  But on platforms
+     without symbolic links, lstat() - if it exists - would be equivalent to
+     stat(), therefore we can use stat().  This saves us a configure check.  */
+  if (stat (name, &statbuf) >= 0)
+    errno = EINVAL;
+  return -1;
+}
+
+#else /* HAVE_READLINK */
+
+# undef readlink
+
+/* readlink() wrapper that uses correct types, for systems like cygwin
+   1.5.x where readlink returns int, and which rejects trailing slash,
+   for Solaris 9.  */
+
+ssize_t
+rpl_readlink (const char *name, char *buf, size_t bufsize)
+{
+# if READLINK_TRAILING_SLASH_BUG
+  size_t len = strlen (name);
+  if (len && name[len - 1] == '/')
+    {
+      /* Even if name without the slash is a symlink to a directory,
+         both lstat() and stat() must resolve the trailing slash to
+         the directory rather than the symlink.  We can therefore
+         safely use stat() to distinguish between EINVAL and
+         ENOTDIR/ENOENT, avoiding extra overhead of rpl_lstat().  */
+      struct stat st;
+      if (stat (name, &st) == 0)
+        errno = EINVAL;
+      return -1;
+    }
+# endif /* READLINK_TRAILING_SLASH_BUG */
+  return readlink (name, buf, bufsize);
+}
+
+#endif /* HAVE_READLINK */
diff --git a/lib/stat.c b/lib/stat.c
new file mode 100644 (file)
index 0000000..cbc9100
--- /dev/null
@@ -0,0 +1,105 @@
+/* Work around platform bugs in stat.
+   Copyright (C) 2009-2011 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+/* Get the original definition of stat.  It might be defined as a macro.  */
+#define __need_system_sys_stat_h
+#include <sys/types.h>
+#include <sys/stat.h>
+#undef __need_system_sys_stat_h
+
+static inline int
+orig_stat (const char *filename, struct stat *buf)
+{
+  return stat (filename, buf);
+}
+
+/* Specification.  */
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <string.h>
+#include "dosname.h"
+
+/* Store information about NAME into ST.  Work around bugs with
+   trailing slashes.  Mingw has other bugs (such as st_ino always
+   being 0 on success) which this wrapper does not work around.  But
+   at least this implementation provides the ability to emulate fchdir
+   correctly.  */
+
+int
+rpl_stat (char const *name, struct stat *st)
+{
+  int result = orig_stat (name, st);
+#if REPLACE_FUNC_STAT_FILE
+  /* Solaris 9 mistakenly succeeds when given a non-directory with a
+     trailing slash.  */
+  if (result == 0 && !S_ISDIR (st->st_mode))
+    {
+      size_t len = strlen (name);
+      if (ISSLASH (name[len - 1]))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+    }
+#endif /* REPLACE_FUNC_STAT_FILE */
+#if REPLACE_FUNC_STAT_DIR
+  if (result == -1 && errno == ENOENT)
+    {
+      /* Due to mingw's oddities, there are some directories (like
+         c:\) where stat() only succeeds with a trailing slash, and
+         other directories (like c:\windows) where stat() only
+         succeeds without a trailing slash.  But we want the two to be
+         synonymous, since chdir() manages either style.  Likewise, Mingw also
+         reports ENOENT for names longer than PATH_MAX, when we want
+         ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR.
+         Fortunately, mingw PATH_MAX is small enough for stack
+         allocation.  */
+      char fixed_name[PATH_MAX + 1] = {0};
+      size_t len = strlen (name);
+      bool check_dir = false;
+      if (PATH_MAX <= len)
+        errno = ENAMETOOLONG;
+      else if (len)
+        {
+          strcpy (fixed_name, name);
+          if (ISSLASH (fixed_name[len - 1]))
+            {
+              check_dir = true;
+              while (len && ISSLASH (fixed_name[len - 1]))
+                fixed_name[--len] = '\0';
+              if (!len)
+                fixed_name[0] = '/';
+            }
+          else
+            fixed_name[len++] = '/';
+          result = orig_stat (fixed_name, st);
+          if (result == 0 && check_dir && !S_ISDIR (st->st_mode))
+            {
+              result = -1;
+              errno = ENOTDIR;
+            }
+        }
+    }
+#endif /* REPLACE_FUNC_STAT_DIR */
+  return result;
+}
index 62d18c6281167879067e8b036befb2eb6bd5f090..2697a4bd1dbd3687f270eb33210bd164958f3916 100644 (file)
@@ -274,6 +274,21 @@ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
                  "use gnulib module malloc-posix for portability");
 #endif
 
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBTOWC@
+# if @REPLACE_MBTOWC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef mbtowc
+#   define mbtowc rpl_mbtowc
+#  endif
+_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# else
+_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# endif
+_GL_CXXALIASWARN (mbtowc);
+#endif
+
 #if @GNULIB_MKDTEMP@
 /* Create a unique temporary directory from TEMPLATE.
    The last six characters of TEMPLATE must be "XXXXXX";
@@ -723,6 +738,21 @@ _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
 # endif
 #endif
 
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCTOMB@
+# if @REPLACE_WCTOMB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wctomb
+#   define wctomb rpl_wctomb
+#  endif
+_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
+_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
+# else
+_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
+# endif
+_GL_CXXALIASWARN (wctomb);
+#endif
+
 
 #endif /* _GL_STDLIB_H */
 #endif /* _GL_STDLIB_H */
diff --git a/lib/symlink.c b/lib/symlink.c
new file mode 100644 (file)
index 0000000..2896cc9
--- /dev/null
@@ -0,0 +1,57 @@
+/* Stub for symlink().
+   Copyright (C) 2009-2011 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+
+#if HAVE_SYMLINK
+
+# undef symlink
+
+/* Create a symlink, but reject trailing slash.  */
+int
+rpl_symlink (char const *contents, char const *name)
+{
+  size_t len = strlen (name);
+  if (len && name[len - 1] == '/')
+    {
+      struct stat st;
+      if (lstat (name, &st) == 0)
+        errno = EEXIST;
+      return -1;
+    }
+  return symlink (contents, name);
+}
+
+#else /* !HAVE_SYMLINK */
+
+/* The system does not support symlinks.  */
+int
+symlink (char const *contents _GL_UNUSED,
+         char const *name _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#endif /* !HAVE_SYMLINK */
index 83ee20fa497d1dffc705da7f3eaa0ba998365f6f..1c2f2b5b01558e2377bdd630dcb26adf2ee01f98 100644 (file)
 
        * viper-cmd.el (viper-change-state): Got rid of make-local-hook.
        (viper-special-read-and-insert-char): Make C-m work right in the r
-       comand.
+       command.
        (viper-buffer-search-enable): Fixed format string.
 
        * viper-ex.el (ex-token-alist): Use ex-set-visited-file-name
index d2f7cab27f0c2095b52d4fe2d43e121ffb1f4499..35572bd6105cc220215145789dd202290e3cec22 100644 (file)
        output of the next command.  Reported by M Jared Finder
        <jared@hpalace.com>.
 
-       * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
-       for `process-file', in order to let it work for older Emacsen too.
-
 2006-04-17  Ralf Angeli  <angeli@iwi.uni-sb.de>
 
        * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
        make underlining work for wide characters.
        (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind
        TAB to `org-cycle', to make sure that no binding in
-       `outline-mode-map' can supercede it.
+       `outline-mode-map' can supersede it.
 
 2006-03-14  Ken Manheimer  <ken.manheimer@gmail.com>
 
        * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
        pgg-decrypt-region.
        (pgg-pending-timers): A new hash for tracking the passphrase cache
-       timers, so that new ones supercede old ones.
+       timers, so that new ones supersede old ones.
        (pgg-add-passphrase-to-cache): Rename from
        `pgg-add-passphrase-cache' to reduce confusion (all callers
        changed).  Modified to cancel old timers when new ones are added.
        * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
        pgg-decrypt-region.
        (pgg-pending-timers): A new hash for tracking the passphrase cache
-       timers, so that new ones supercede old ones.
+       timers, so that new ones supersede old ones.
        (pgg-add-passphrase-to-cache): Rename from
        `pgg-add-passphrase-cache' to reduce confusion (all callers
        changed).  Modified to cancel old timers when new ones are added.
index b54580ff0bc83e39446ea0c5a6f66ad507a8a7d4..8cafac2c0c4df922703a50f26dd263c25006847b 100644 (file)
        * two-column.el: Doc fixes.
 
        * loaddefs.el (function-keymap): Definition deleted; this has been
-       superceded by function-key-map.
+       superseded by function-key-map.
 
        * gomoku.el (gomoku-mode-map): Use function key symbols, instead
        of the keypad.el facilities.
        and `fill-column'.  Code now actually sets `left-margin' and
        `fill-column', as advertised.
        * text-mode.el (change-log-mode): Function deleted, since it's
-       been superceded by the one in add-log.el.
+       been superseded by the one in add-log.el.
 
 1992-06-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1992-06-12  Jim Blandy  (jimb@pogo.cs.oberlin.edu)
 
-       * isearch-mode.el: New package, which will probably supercede
+       * isearch-mode.el: New package, which will probably supersede
        isearch.el.
        (isearch-mode-map, isearch-mode-meta-map): When initializing
        these, remember that vectors are no longer keymaps.
        display-time-string.
        (rmail-pop-up): Default display-time-hook to automatically retrieve
        new mail if the variable rmail-pop-up is non-nil.
-       (add-clock-handler): Removed; superceded by timer.el.
+       (add-clock-handler): Removed; superseded by timer.el.
 
        * loaddefs.el: Removed add-clock-handler.
 
 
        * loaddefs.el: Autoload for diff.
 
-       * files.el (diff): Superceded by diff.el.
+       * files.el (diff): Superseded by diff.el.
        (diff-switches-function): Still needs to be merged into diff.el.
 
        * diff.el: New file.
index 05c765e08818a986bf21cd5da8de75804648f4d8..e4d402afa76f81c07f2c216b486c3fe6fe7dc6fc 100644 (file)
@@ -1,3 +1,530 @@
+2011-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * isearch.el (isearch-mode-map): Bind C-y to isearch-yank-kill,
+       and move isearch-yank-line to M-s C-e (Bug#8183).
+
+2011-03-06  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Reindent.
+       (c-guess-basic-syntax): Move CASE 19 to a different place,
+       correctly to process template-args-cont lines.
+
+2011-03-06  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-ext.el (calc-init-extensions): Rename
+       calc-logunits-dblevel and calc-logunits-nplevel to calc-dblevel
+       and calc-nplevel, respectively.  Add keybindings for calc-spn,
+       calc-midi and calc-freq.  Add autoloads for calcFunc-spn,
+       calcFunc-midi, calcFunc-freq, calc-spn, calc-midi and calc-freq.
+
+       * calc/calc-units.el (calc-dblevel): Rename from
+       calc-logunits-dblevel.
+       (calc-nplevel): Rename from calc-logunits-nplevel.
+       (math-midi-round, math-freqp, math-midip, math-spnp)
+       (math-spn-to-midi, math-midi-to-spn, math-freq-to-spn)
+       (math-midi-to-freq, math-spn-to-freq, calcFunc-spn, calcFunc-midi)
+       (calcFunc-freq, calc-freq, calc-midi, calc-spn): New functions.
+       (math-notes): New variable.
+
+       * calc/calc.el (calc-note-threshold): New variable.
+
+2011-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/package.el (package-archives): Accept either ordinary
+       directory names, in addition to HTTP URLs.
+       (package--with-work-buffer): New macro.   Handle normal directories.
+       (package-handle-response): Don't display the failing buffer.
+       (package-download-single, package-download-tar)
+       (package--download-one-archive): Use package--with-work-buffer.
+       (package-archive-base): Rename from package-archive-url.
+
+2011-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * generic-x.el (generic-unix-modes): Add xmodmap-generic-mode.
+       (xmodmap-generic-mode): Respect generic-extras-enable-list.
+
+2011-03-06  Daniel Clemente  <dcl441-bugs@yahoo.com>  (tiny change)
+
+       * generic-x.el (xmodmap-generic-mode): New.  (Bug#2065)
+
+2011-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * allout.el (allout-init, allout-prefixed-keybindings)
+       (allout-unprefixed-keybindings):
+       * progmodes/prolog.el (prolog-find-term):
+       Fix typos in docstrings.
+
+2011-03-06  Nikolaj Schumacher  <me@nschum.de>  (tiny change)
+
+       * emacs-lisp/elp.el (elp-results): Fix off-by-one in header.  (Bug#2746)
+
+2011-03-06  Kevin Ryde  <user42@zip.com.au>
+
+       * textmodes/sgml-mode.el (sgml-fill-nobreak): Give it a doc.  (Bug#5326)
+
+2011-03-06  Michael Shields  <shields@msrl.com>  (tiny change)
+
+       * window.el (one-window-p, walk-windows, display-buffer):
+       Doc fixes.  (Bug#5567)
+
+2011-03-06  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * cus-edit.el (custom-prompt-variable): Use the `custom-get' property
+       of the variable if it exists.
+
+2011-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bookmark.el:
+       * desktop.el:
+       * emacs-lock.el:
+       * ps-print.el:
+       * saveplace.el:
+       * net/tramp-cache.el:
+       * obsolete/fast-lock.el:
+       * textmodes/reftex.el:
+       Don't set `kill-emacs-hook' on noninteractive sessions (bug#8137).
+
+2011-03-05  Antoine Levitt  <antoine.levitt@gmail.com>
+
+       * files.el (delete-directory, copy-directory, list-directory):
+       Use read-directory-name.
+
+       * find-file.el (ff-find-the-other-file):
+       * net/ange-ftp.el (ange-ftp-make-directory):
+       * printing.el (pr-interactive-dir):
+       * progmodes/ada-prj.el (ada-prj-load-directory):
+       * progmodes/ebnf2ps.el (ebnf-print-directory)
+       (ebnf-spool-directory, ebnf-eps-directory)
+       (ebnf-syntax-directory):
+       * shell.el (shell):
+       * speedbar.el (speedbar-create-directory):
+       * vc/emerge.el (emerge-merge-directories):
+       * vc/vc-dir.el (vc-dir):
+       * vc/vc.el (vc-create-tag, vc-retrieve-tag): Likewise.
+
+2011-03-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help-mode.el (help-buffer): If we are to return the current
+       buffer, signal an error if it's not in Help mode (Bug#8147).
+
+2011-03-05  Reuben Thomas  <rrt@sc3d.org>
+
+       * files.el (file-name-version-regexp): Handle backup files of the
+       form `foo.js.~HEAD~1~' (Bug#8159).
+
+2011-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * eshell/esh-var.el: Don't require esh-test when compiling.
+       * eshell/em-banner.el, eshell/esh-cmd.el, eshell/esh-mode.el:
+       * eshell/esh-var.el, eshell/eshell.el: Move tests to esh-test.
+       * eshell/esh-test.el: Move to ../../test/eshell.el.
+
+2011-03-05  David Engster  <deng@randomsample.de>
+
+       * files.el (save-some-buffers): Report the names of buffers saved
+       automatically due to buffer-save-without-query (Bug#8134).
+
+2011-03-05  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
+
+       * net/rcirc.el: Add QuakeNet authentication support.
+       (rcirc-authinfo, rcirc-check-auth-status)
+       (rcirc-authenticate): Support QuakeNet.
+
+2011-03-05  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
+
+       * net/rcirc.el: Add functionality to authenticate before
+       autojoining channels.
+       (rcirc-authenticate-before-join): New option.
+       (rcirc-authenticated-hook): New variable.
+       (rcirc-connect): Make local variable rcirc-user-authenticated.
+       (rcirc-handler-001): Respect rcirc-authenticate-before-join.
+       (rcirc-check-auth-status, rcirc-join-channels-post-auth):
+       New functions.
+       (rcirc-handler-PRIVMSG, rcirc-handler-NOTICE):
+       Call rcirc-check-auth-status.
+
+2011-03-05  Alex Harsanyi  <AlexHarsanyi@gmail.com>
+
+       * net/soap-client.el (soap-namespace-put-link): Check if the target
+       name is fully qualified -- use only the name part.
+       (soap-parse-complex-type, soap-parse-sequence): Recognize xsd:all
+       types, treated the same as xsd:sequence.  (Bug#8166)
+
+2011-03-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.el (find-file-noselect): Don't ask about re-visiting
+       non-literally if the file is already visited in image-mode.
+       (Bug#8177)
+
+2011-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * eshell/esh-mode.el (eshell-kill-buffer-function): New function.
+       (eshell-mode): Use eshell-kill-buffer-function.
+       Run the -initialize functions independently of the -load-hooks.
+       * eshell/esh-proc.el (eshell-kill-process-function): New function.
+       (eshell-gather-process-output, eshell-sentinel)
+       (eshell-interrupt-process, eshell-kill-process, eshell-quit-process):
+       Use eshell-kill-process-function.
+       * eshell/em-alias.el (eshell-alias-load-hook):
+       * eshell/em-banner.el (eshell-banner-load-hook):
+       * eshell/em-cmpl.el (eshell-cmpl-load-hook):
+       * eshell/em-dirs.el (eshell-dirs-load-hook):
+       * eshell/em-glob.el (eshell-glob-load-hook):
+       * eshell/em-hist.el (eshell-hist-load-hook):
+       * eshell/em-pred.el (eshell-pred-load-hook):
+       * eshell/em-prompt.el (eshell-prompt-load-hook):
+       * eshell/em-rebind.el (eshell-rebind-load-hook):
+       * eshell/em-script.el (eshell-script-load-hook):
+       * eshell/em-smart.el (eshell-smart-load-hook):
+       * eshell/em-term.el (eshell-term-load-hook):
+       * eshell/em-unix.el (eshell-unix-load-hook):
+       * eshell/esh-arg.el (eshell-arg-load-hook):
+       * eshell/esh-cmd.el (eshell-cmd-load-hook):
+       * eshell/esh-ext.el (eshell-ext-load-hook):
+       * eshell/esh-io.el (eshell-io-load-hook):
+       * eshell/esh-mode.el (eshell-exit-hook):
+       * eshell/esh-proc.el (eshell-proc-load-hook, eshell-kill-hook):
+       * eshell/esh-var.el (eshell-var-load-hook):
+       Set default hook values to nil.  (Bug#5375)
+
+       * eshell/esh-module.el (eshell-module-unload-hook)
+       (eshell-modules-list): Remove leading * from defcustom docs.
+
+       * eshell/esh-util.el (eshell-for): Make it obsolete.
+       * eshell/em-alias.el (eshell/alias, eshell-alias-completions):
+       * eshell/em-dirs.el (eshell-save-some-last-dir):
+       * eshell/em-hist.el (eshell-save-some-history)
+       (eshell-hist-parse-modifier):
+       * eshell/em-ls.el (eshell-ls-dir, eshell-ls-files)
+       (eshell-ls-entries):
+       * eshell/em-unix.el (eshell/cat, eshell/du, eshell/su):
+       * eshell/esh-cmd.el (eshell-invoke-directly, eshell-do-eval)
+       (eshell/which):
+       * eshell/esh-ext.el (eshell-find-interpreter):
+       * eshell/esh-mode.el (eshell-mode):
+       * eshell/esh-module.el (eshell-unload-extension-modules):
+       * eshell/esh-proc.el (eshell-process-interact):
+       * eshell/esh-test.el (eshell-test):
+       * eshell/esh-util.el (eshell-flatten-list, eshell-winnow-list):
+       * eshell/esh-var.el (eshell/env, eshell-environment-variables)
+       (eshell-variables-list):
+       * eshell/eshell.el (eshell-unload-all-modules):
+       Replace eshell-for with dolist.
+
+2011-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0.  (Bug#8170)
+
+2011-03-04  Tom Tromey  <tromey@redhat.com>
+
+       * progmodes/gud.el (gdb-script-mode): Derive from prog-mode.
+
+2011-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * outline.el (outline-regexp): No longer allow nil.
+       (outline-heading-end-regexp): Add safety predicate.  (Bug#7619)
+
+       * net/browse-url.el (browse-url):
+       Handle deleted default-directory.  (Bug#6077)
+
+       * recentf.el (recentf-include-p): In case of a buggy predicate,
+       err on the side of including, not excluding.  (Bug#5843)
+
+2011-03-04  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-units.el (math-to-standard-rec): Don't treat subscripted
+       variables as units.
+
+2011-03-04  Bob Rogers  <rogers@rgrjr.dyndns.org>
+
+       * emacs-lisp/ewoc.el (ewoc-goto-next): Give a more explicit error
+       if there is no node.  (Bug#3261)
+
+2011-03-04  Leo  <sdl.web@gmail.com>
+
+       * vc/diff-mode.el (diff-mode): Fix whitespace-style.  (Bug#8139)
+
+       * time.el (display-time-world-list): Fix typo.  (Bug#7571)
+
+2011-03-04  Zachary Kanfer  <zkanfer@gmail.com>  (tiny change)
+
+       * cus-edit.el (custom-buffer-create-internal):
+       Split search string before passing it to `customize-apropos' (bug#8136).
+
+2011-03-04  Drew Adams  <drew.adams@oracle.com>
+
+       * image-dired.el (image-dired-cmd-read-exif-data-options):
+       Fix typo in docstring (bug#8156).
+
+2011-03-03  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
+
+       * net/rcirc.el (rcirc-cmd-join): Accept comma-separated input.
+
+2011-03-03  Christian Ohler  <ohler@gnu.org>
+
+       * emacs-lisp/ert.el (ert--explain-equal): New function.
+       (ert--explain-equal-rec): Renamed from `ert--explain-not-equal'.
+       All callers changed.
+       (ert--explain-equal-including-properties): Renamed from
+       `ert--explain-not-equal-including-properties'.  All callers
+       changed.
+
+2011-03-03  Christian Ohler  <ohler@gnu.org>
+
+       * emacs-lisp/ert.el (ert--stats-set-test-and-result)
+       (ert-char-for-test-result, ert-string-for-test-result)
+       (ert-run-tests-batch, ert--print-test-for-ewoc):
+       Handle `ert-test-quit'.
+
+2011-03-03  David Abrahams  <dave@boostpro.com>  (tiny change)
+
+       * vc/ediff-init.el (ediff-use-faces, ediff-highlight-all-diffs):
+       Move ediff-defvar-local calls after defcustoms.  (Bug#1821)
+
+2011-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (file-truename): Doc fix.  (Bug#2341)
+
+2011-03-03  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
+
+       * vc/vc-dir.el (vc-dir-mode-map): Bind vc-dir-find-file to e (Bug#7349).
+
+2011-03-03  Vagn Johansen  <gonz808@hotmail.com>  (tiny change)
+
+       * vc/vc-svn.el (vc-svn-after-dir-status): Some MS Windows svn client
+       programs output backslashes.  (Bug#7663)
+
+2011-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * mail/sendmail.el (mail-mode-map): Remove mail-sent-via.
+       (mail-mode): Remove mail-sent-via from the doc.
+       (mail-sent-via): Make it obsolete.  (Bug#1776)
+
+       * progmodes/grep.el (grep-highlight-matches): Doc fix.
+       (grep-process-setup): No highlighting without font-lock.  (Bug#8084)
+
+       * vc/vc-bzr.el (vc-bzr-state-heuristic): Handle dirstate entries
+       with no parents.  (Bug#8025)
+
+2011-03-02  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * password-cache.el (password-in-cache-p): Add autoload.
+
+2011-03-02  Glenn Morris  <rgm@gnu.org>
+
+       * man.el (Man-support-local-filenames): Also handle Red Hat's man.
+       * dired-x.el (Man-support-local-filenames): Autoload it.
+       (dired-guess-shell-alist-default): Also handle Red Hat's man.
+
+       * dired-x.el (dired-default-directory-alist, dired-default-directory):
+       Mark as obsolete.
+       (dired-smart-shell-command): Just call dired-current-directory.
+
+       * dired-x.el (dired-jump-other-window): Add autoload.
+       (dired-default-directory-alist, dired-default-directory): Doc fixes.
+       (dired-default-directory-alist): Mark as risky.
+
+       * dired-x.el (dired-omit-here-always): Make it obsolete.
+
+2011-03-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * textmodes/artist.el (artist-curr-go): Default to pen-line.
+       (artist-select-op-pen-line): New function.
+       (artist-menu-map): New variable.
+       (artist-mode-map): Add a menu to the menu-bar.
+
+2011-03-02  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-math.el (calcFunc-log10): Check for symbolic mode
+       when evaluating.
+
+       * calc/calc-units.el (math-conditional-apply, math-conditional-pow):
+       New function.
+       (math-logunits-add, math-logunits-mul, math-logunits-divide):
+       (math-logunits-quant, math-logunits-level):
+       Use `math-conditional-apply' and `math-conditional-pow' to evaluate
+       functions.
+       (math-logunits-level): Extract units from ratio.
+
+2011-03-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring.
+
+2011-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-hebrew.el (calendar-hebrew-birthday)
+       (diary-hebrew-birthday): Rename and rework functions added
+       in previous change.
+
+2011-03-01  Ed Reingold  <reingold@emr.cs.iit.edu>
+
+       * calendar/cal-hebrew.el (hebrew-calendar-birthday)
+       (diary-hebrew-birthday): New functions.
+
+2011-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * dired.el (dired-safe-switches-p): Beef it up.
+       (dired-actual-switches): Use it for the safe-local prop.  (Bug#3230)
+
+2011-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dired.el (dired-safe-switches-p): New function.
+
+2011-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (dir-locals-collect-variables):
+       Add the ability to exclude subdirectories.  (Bug#8100)
+
+       * dired-x.el (dired-omit-here-always): Add `(subdirs . nil)' to locals.
+
+2011-02-28  Christoph Scholtes  <cschol2112@googlemail.com>
+
+       * ido.el (ido-everywhere): Doc fix.
+       (ido-mode): Doc fix.
+
+2011-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * dired-x.el (dired-guess-shell-alist-default): Use \\', not $.
+
+2011-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-cmds.el (tramp-append-tramp-buffers): Dump load-path
+       shadows.
+
+2011-02-28  Antoine Levitt  <antoine.levitt@gmail.com>
+
+       * dired-x.el (dired-guess-shell-alist-default): Add rar and 7z.
+
+2011-02-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1):
+       Fix typos in docstrings.
+
+2011-02-28  Stephen Berman  <stephen.berman@gmx.net>
+
+       * dired-aux.el (dired-update-file-line):
+       Fix 2010-11-09 change.  (Bug#8131)
+
+2011-02-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/mule-cmds.el (set-default-coding-systems): Use the
+       -unix variant of encoding in default-keyboard-coding-system.
+       (Bug#8122)
+
+2011-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * facemenu.el (list-colors-display): Use with-help-window (Bug#8048).
+
+2011-02-27  Prestoo Ten  <prestooten@gmail.com>  (tiny change)
+
+       * term/screen.el: New file (Bug#2650).
+
+2011-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/pcase.el (pcase--if): Try to invert test to reduce depth.
+       (pcase-mutually-exclusive-predicates): New var.
+       (pcase--split-consp, pcase--split-pred): Use it.
+       (pcase--split-equal, pcase--split-member): When splitting against
+       a pure predicate, run it to know the outcome.
+       (pcase--u1): Mark vars that are actually used.
+       (pcase--q1): Avoid introducing unused vars.
+
+2011-02-27  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-ext.el (calc-init-extensions):
+       Autoload `calc-l-prefix-help' instead of `calc-ul-prefix-help'.
+
+       * calc/calc-math.el (calcFunc-log10): Don't signal an error in
+       symbolic mode.
+
+       * calc/calc-vec.el (calcFunc-subscr): Return nil if the first
+       argument is a variable.
+
+2011-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/assoc.el: Remove misleading `sort' (bug#8126).
+       (aput, adelete, amake): Replace `eval' -> `symbol-value'.
+       Suggested by Michael Heerdegen <michael_heerdegen@web.de>.
+
+2011-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * password-cache.el (password-in-cache-p): Convenience function to
+       check if a key is in the cache, even if the value is nil.
+
+2011-02-25  Jambunathan K  <kjambunathan@gmail.com>
+
+       * emacs-lisp/package-x.el (package--archive-contents-from-url)
+       (package--archive-contents-from-file): New functions.
+       (package-update-news-on-upload): New var.
+       (package-upload-buffer-internal): Extract archive-contents from
+       package-archive-upload-base if it is not found at archive-url.
+       Obey package-update-news-on-upload.
+       (package-upload-buffer, package-upload-file): Doc fix.
+
+2011-02-24  Glenn Morris  <rgm@gnu.org>
+
+       * files-x.el (modify-dir-local-variable): Handle dir-locals from
+       the cache, and from non-file sources.
+
+       * help-fns.el (describe-variable): Return consistent results when a
+       dir-local from a file came from the cache or did not.  (Bug#8095)
+       If a dir-local has no associated file, say it came from a "directory".
+
+       * files.el (hack-dir-local-variables): Fix setting of `dir-name'.
+       (hack-local-variables-confirm, hack-local-variables-filter): Doc fix.
+
+       * files.el (dir-locals-find-file): Doc fix.
+       Fix the check for cache elements that have no associated file,
+       and the mtime check for those that do.  (Bug#8095)
+
+       * dired-x.el (dired-hack-local-variables):
+       Handle interrupts during hacking local variables.  (Bug#5216)
+
+       * emacs-lisp/autoload.el (autoload-save-buffers)
+       (autoload-find-destination, update-directory-autoloads):
+       Avoid prompts when updating autoloads.
+
+2011-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle): Obsolete.
+
+2011-02-23  Kenichi Handa  <handa@m17n.org>
+
+       * mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an
+       error when a multipart boundary in the nested multipart is found.
+
+       * mail/rmail.el (rmail-start-mail): Decode "encoded-words" of
+       header components.
+
+2011-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * dired.el (dired-mode): Call hack-dir-local-variables-non-file-buffer.
+       * dired-x.el (dired-omit-mode): Safe if boolean.
+       (dired-enable-local-variables): Fix doc and custom type.
+       (dired-enable-local-variables, dired-local-variables-file)
+       (dired-hack-local-variables): Make obsolete.
+       (dired-omit-here-always): Use dir-locals.el instead.
+
+       * files.el (safe-local-eval-forms): Add the write-file-hooks version.
+
+2011-02-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * help-fns.el (describe-function-1): Don't signal an error just because
+       the DOC file disappeared.
+
+2011-02-22  Seppo Sade  <sepposade1@gmail.com>  (tiny change)
+
+       * eshell/esh-ext.el (eshell-external-command): Do not restrict
+       remote check to "ftp".  (Bug#8089)
+
+2011-02-21  Alan Mackenzie  <acm@muc.de>
+
+       Fix bug #7930.
+       * progmodes/cc-engine.el (c-state-literal-at): Prevent positions
+       in macros finding their way into c-state-nonlit-pos-cache.
+       Strengthen the comments.
+       (c-state-dump): New commented out diagnostic routine.
+
 2011-02-21  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (tramp-rfn-eshadow-setup-minibuffer): Do not use
 
        * faces.el (color-values): Use cond for clarity.  Doc fix.
 
-       * facemenu.el (color-rgb-to-hsv): Deleted; use the version in
+       * facemenu.el (color-rgb-to-hsv): Delete; use the version in
        color.el instead.
-       (list-colors-sort-key, list-colors-print): Use
-       color-normalized-values.
+       (list-colors-sort-key, list-colors-print):
+       Use color-normalized-values.
 
 2011-02-20  Drew Adams  <drew.adams@oracle.com>
 
        * autorevert.el (auto-revert-mode, auto-revert-tail-mode)
        (global-auto-revert-ignore-buffer): Remove leading "*" from docs.
 
-2011-02-19  Dmitry Bolshakov <dmitry.bolshakov@bridge-quest.com>
-            Dima Kogan <dkogan@cds.caltech.edu>  (tiny change)
+2011-02-19  Dmitry Bolshakov  <dmitry.bolshakov@bridge-quest.com>
+            Dima Kogan  <dkogan@cds.caltech.edu>  (tiny change)
 
        * progmodes/hideshow.el (hs-find-block-beginning)
        (hs-hide-level-recursive): Ignore comments when parsing braces
        (vc-bzr-error-regex-alist): New var.
        (vc-bzr-merge-branch): Use it to highlight the pull/merge buffer.
 
-       * vc/vc-dispatcher.el (vc-do-async-command): Bind
-       inhibit-read-only to t.
+       * vc/vc-dispatcher.el (vc-do-async-command):
+       Bind inhibit-read-only to t.
 
        * progmodes/compile.el (compilation--flush-directory-cache):
        Handle the case where cdr of compilation--flush-directory-cache
        * apropos.el (apropos-print): Call apropos-mode before setting up
        buffer variables.  Use inhibit-read-only.
 
-       * emacs-lisp/package.el (package--list-packages): Call
-       package-menu-mode before setting up buffer variables.
+       * emacs-lisp/package.el (package--list-packages):
+       Call package-menu-mode before setting up buffer variables.
 
        * play/solitaire.el (solitaire): Call solitaire-mode before
        setting up buffer variables.  Use inhibit-read-only.
 
 2011-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
 
-       * lisp/allout-widgets.el: (allout-widgets-icons-light-subdir)
+       * lisp/allout-widgets.el (allout-widgets-icons-light-subdir)
        (allout-widgets-icons-dark-subdir): Track relocations of icons
        * lisp/allout.el: Remove commentary about remove encryption
        passphrase mnemonic support and verification.
-       (allout-encrypt-string): (allout-encrypt-string): Recognize epg
-       failure to decrypt gpg2 armored text using gpg1, and indicate that
-       the gpg version *might* be the problem in the error message.
+       (allout-encrypt-string): Recognize epg failure to decrypt gpg2
+       armored text using gpg1, and indicate that the gpg version *might*
+       be the problem in the error message.
 
 2011-02-17  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 
 
 2011-02-11  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 
-       * net/rcirc.el (defun-rcirc-join): Accept multiple channels.
+       * net/rcirc.el (rcirc-cmd-join): Accept multiple channels.
 
 2011-02-11  Glenn Morris  <rgm@gnu.org>
 
        * play/pong.el (pong-mode-map):
        * play/handwrite.el (menu-bar-handwrite-map):
        * play/gametree.el (gametree-mode-map):
-       * net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map
+       * net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map)
        (rcirc-multiline-minor-mode-map, rcirc-track-minor-mode-map):
        * net/newst-plainview.el (newsticker-menu, newsticker-mode-map)
        (newsticker--url-keymap):
        auto-activation is controlled solely by customization
        `allout-auto-activation'.
 
-       (allout-auto-activation-helper) (allout-setup): New autoloads
+       (allout-auto-activation-helperallout-setup): New autoloads
        implement new custom set procedure for allout-auto-activation.
        Also, explicitly invoke
        (allout-setup) after allout-auto-activation is custom-defined, to
        allout-auto-activation, and mark obsolete.
        (allout-mode): Respect string values for allout-auto-activation.
        Run allout-after-copy-or-kill-hook without any args.
-       (allout-mode) (allout-layout) (allout-default-layout)
+       (allout-mode, allout-layout, allout-default-layout)
        (outlineify-sticky): Adjust docstring for new scheme.
        (allout-after-copy-or-kill-hook): No arguments - hook implementers
        should concentrate on the kill ring.
        extension-specific processing of killed text.
        (allout-mode): Include new allout-after-copy-or-kill-hook among
        mentioned hooks.
-       (allout-kill-line) (allout-kill-topic): Ensure that processing
+       (allout-kill-lineallout-kill-topic): Ensure that processing
        after kill happens even if barf-if-buffer-read-only is raised.
        Include new allout-after-copy-or-kill-hook among that subsequent
        processing.
        * calc/calc.el (calc-logunits-field-reference): Rename from
        `calc-default-field-reference-level'.
        (calc-logunits-power-reference): Rename from
-       `calc-default-power-reference-level'
+       `calc-default-power-reference-level'.
 
        * calc/calc-units.el (math-logunits-quant): Rename from
        `math-logunits-level'
        (math-logunits-plus): Rename from math-logcombine.
        (calcFunc-luplus, calcFunc-luminus calc-luplus, calc-luminus): Remove.
        (calcFunc-lufieldadd, calcFunc-lupoweradd, calcFunc-lufieldsub)
-       (calcFunc-lufieldsub,calc-logunits-add calc-logunits-sub):
+       (calcFunc-lufieldsub, calc-logunits-add, calc-logunits-sub):
        New functions.
        (calcFunc-fieldquant): Rename from `calcFunc-fieldlevel'.
        (calcFunc-powerquant): Rename from `calcFunc-powerlevel'.
        (calc-logunits-quantity): Rename from `calc-level'.
        (calcFunc-dbfieldlevel, calcFunc-dbpowerlevel, calcFunc-npfieldlevel)
-       (calcFunc-nppowerlevel,calc-logunits-dblevel, calc-logunits-nplevel)
+       (calcFunc-nppowerlevel, calc-logunits-dblevel, calc-logunits-nplevel)
        (math-logunits-mul, calcFunc-lufieldmul, calcFunc-lupowermul)
        (calc-logunits-mul, math-logunits-divide, calcFunc-lufielddiv)
-       (calcFunc-lupowerdiv,calc-logunits-divide,math-logunits-level):
+       (calcFunc-lupowerdiv, calc-logunits-divide, math-logunits-level):
        New functions.
 
        * calc/calc-help.el (calc-u-prefix-help): Remove "L" reference.
        (allout-institute-keymap): Take over the "setup" part of the former
        allout-setup-mode-map.  Reassign allout-mode-map-value value and
        update the defalias.
-       (allout-command-prefix) (allout-prefixed-keybindings)
+       (allout-command-prefixallout-prefixed-keybindings)
        (allout-unprefixed-keybindings):
        Use allout-compose-and-institute-keymap to process the bindings.
-       (allout-unprefixed-keybindings): Remove extraneous '?' question
-       marks.
+       (allout-unprefixed-keybindings): Remove extraneous '?' question marks.
        (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
        user can customize if they want to use that binding.
        Bind allout-copy-topic-as-kill to (prefixed) \M-k.
        (allout-hotspot-key-handler): Remove attempt to resolve the key
        through the literal key-string lookup on allout-keybindings-list.
        That probably hasn't worked for a Long Time, and removal of
-       allout-keybindings-list further simplifies the keybindings
-       situation.
+       allout-keybindings-list further simplifies the keybindings situation.
        (allout-pre-command-business): Use allout-mode-map-value instead
        of allout-mode-map.
        (allout-preempt-trailing-ctrl-h): Remove.  The user can customize
        the bindings if they want to use a keybinding having a trailing
-       \C-h.  No deprecation needed since this feature was never in a
-       release.
+       \C-h.  No deprecation needed since this feature was never in a release.
        (allout-keybindings-list): Remove.  It's not been useful for a
        while.  (See allout-hotspot-key-handler changes, above.)
        (produce-allout-mode-map): Remove.  Consolidate into
        * loadup.el (symbol-file-load-history-loaded): Remove; unused.
 
 2010-12-15  Jari Aalto  <jari.aalto@cante.net>
-            Scott Evans <gse@antisleep.com>
+            Scott Evans  <gse@antisleep.com>
 
        * rect.el (rectange--default-line-number-format)
        (rectangle-number-line-callback): New functions.
        * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil
        (Bug#7533).
 
-2010-12-13  W. Martin Borgert <debacle@debian.org>  (tiny change)
+2010-12-13  W. Martin Borgert  <debacle@debian.org>  (tiny change)
 
        * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode.
        (Bug#7491).
        this original name from `bookmark-name-from-record' reverting part
        of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm.
        As Drew Adams pointed out, there was no reason to cause churn for
-       third-party callers.
+       third-party callers.  (Bug#7609)
 
 2010-12-12  Alan Mackenzie  <acm@muc.de>
 
 
        * net/tramp-cmds.el: Remove solved todo item.
 
-       * net/tramp-efs.el:
        * net/tramp-ftp.el:
        * net/tramp-gvfs.el:
        * net/tramp-gw.el:
          describe-prefix-bindings
        - adapt to new version of called-interactively-p, while
          maintaining backwards compatibility with old version
-       - fix hotspot navigation so i works properly with meta-modified keys
+       - fix hotspot navigation so i works properly with meta-modified keys.
 
        * allout.el (allout-keybindings, allout-bind-keys)
        (allout-keybindings-binding, allout-prefixed-keybindings)
 2010-11-12  Glenn Morris  <rgm@gnu.org>
 
        * emacs-lisp/bytecomp.el (byte-compile-log-buffer): New constant.
-       Use it to replace all instances of "*Compile-Log*"
+       Use it to replace all instances of "*Compile-Log*".
 
 2010-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 
 2010-10-24  Michael McNamara  <mac@mail.brushroad.com>
 
-       * verilog-mode.el (verilog-directive-re): Make this variable
+       * progmodes/verilog-mode.el (verilog-directive-re): Make this variable
        auto-built for efficiency of execution and updating.
        (verilog-extended-complete-re): Support 'pure' fucntion & task
        declarations (these have no bodies).
 
 2010-10-24  Wilson Snyder  <wsnyder@wsnyder.org>
 
-       * verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
+       * progmodes/verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
        (verilog-gate-keywords, verilog-read-sub-decls)
        (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios)
        (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support
 
 2010-10-03  Glenn Morris  <rgm@gnu.org>
 
-       * obsolete/x-menu.el: Remove file, obsolete since 21.1
+       * obsolete/x-menu.el: Remove file, obsolete since 21.1.
 
        * textmodes/rst.el (rst-font-lock-keywords-function):
        Drop Emacs 20 code.
        Use `tramp-compat-funcall'.
 
        * net/tramp.el (tramp-process-actions):
-       * net/tramp-gvfs.el (tramp-handle-vc-registered):
-       * net/tramp-sh.el (tramp-gvfs-handler-askquestion)
+       * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion):
+       * net/tramp-sh.el (tramp-handle-vc-registered)
        (tramp-get-remote-stat, tramp-get-remote-readlink):
        Use `tramp-compat-with-temp-message'.
 
 
 2010-09-14  Sascha Wilde  <wilde@sha-bang.de>
 
-       * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
+       * vc/vc-hg.el (vc-hg-state, vc-hg-working-revision):
        Replace setting HGRCPATH to "" by some less invasive --config options.
 
 2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * whitespace.el (whitespace-style): Adjust type declaration.
 
-2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
-
-       * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
-       empty argument to gvfs-copy.
-
-2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
-       handle new TRASH arg of `delete-file'.
-
-2010-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
-
-       * net/tramp.el (tramp-handle-insert-directory): Don't use
-       `forward-word', its default syntax could be changed.
-
-2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
-            Michael Albinus  <michael.albinus@gmx.de>
-
-       Implement compression for inline methods.
-
-       * net/tramp.el (tramp-inline-compress-start-size): New defcustom.
-       (tramp-copy-size-limit): Allow also nil.
-       (tramp-inline-compress-commands): New defconst.
-       (tramp-find-inline-compress, tramp-get-inline-compress)
-       (tramp-get-inline-coding): New defuns.
-       (tramp-get-remote-coding, tramp-get-local-coding): Remove,
-       replaced by `tramp-get-inline-coding'.
-       (tramp-handle-file-local-copy, tramp-handle-write-region)
-       (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
-
-2010-08-26  Noah Lavine  <noah549@gmail.com>  (tiny change)
-
-       Detect ssh 'ControlMaster' argument automatically in some cases.
-
-       * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
-       (tramp-default-method): Use it.
-
-2010-08-26  Karel Klíč  <kklic@redhat.com>
-
-       * net/tramp.el (tramp-file-name-for-operation):
-       Add file-selinux-context.
-
 2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 
        * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 
        Sync with Tramp 2.1.19.
 
-       * net/tramp-cmds.el (tramp-cleanup-all-connections)
-       (tramp-reporter-dump-variable, tramp-load-report-modules)
-       (tramp-append-tramp-buffers): Use `tramp-compat-funcall'.
-       (tramp-bug): Recommend setting of `tramp-verbose' to 9.
-
-       * net/tramp-compat.el (top): Do not autoload
-       `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
-       only when `start-file-process' is not bound.
-       (byte-compile-not-obsolete-vars): Define if not bound.
-       (tramp-compat-funcall): New defmacro.
-       (tramp-compat-line-beginning-position)
-       (tramp-compat-line-end-position)
-       (tramp-compat-temporary-file-directory)
-       (tramp-compat-make-temp-file, tramp-compat-file-attributes)
-       (tramp-compat-copy-file, tramp-compat-copy-directory)
-       (tramp-compat-delete-file, tramp-compat-delete-directory)
-       (tramp-compat-number-sequence, tramp-compat-process-running-p):
-       Use it.
-       (tramp-advice-file-expand-wildcards): Do not use
-       `tramp-handle-file-remote-p'.
-       (tramp-compat-make-temp-file): Simplify fallback implementation.
-       (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
-       (tramp-compat-copy-tree): Remove function.
-       (tramp-compat-delete-file): New defun.
-       (tramp-compat-delete-directory): Provide implementation for older
-       Emacsen.
-       (tramp-compat-file-attributes): Handle only
-       `wrong-number-of-arguments' error.
-
-       * net/tramp-fish.el (tramp-fish-handle-copy-file):
-       Add PRESERVE_SELINUX_CONTEXT.
-       (tramp-fish-handle-delete-file): Add TRASH arg.
-       (tramp-fish-handle-directory-files-and-attributes):
-       Do not use `tramp-fish-handle-file-attributes.
-       (tramp-fish-handle-file-local-copy)
-       (tramp-fish-handle-insert-file-contents)
-       (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
-
-       * net/tramp-gvfs.el (top): Require url-util.
-       (tramp-gvfs-mount-point): Remove.
-       (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
-       and `set-file-selinux-context'.
-       (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
-       (tramp-gvfs-handle-file-selinux-context)
-       (tramp-gvfs-handle-set-file-selinux-context): New defuns.
-       (with-tramp-dbus-call-method): Format trace message.
-       (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
-       (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
-       Implement backup call, when operation on local files fails.
-       Use progress reporter.  Flush properties of changed files.
-       (tramp-gvfs-handle-delete-file): Add TRASH arg.
-       Use `tramp-compat-delete-file'.
-       (tramp-gvfs-handle-expand-file-name): Expand "~/".
-       (tramp-gvfs-handle-make-directory): Make more traces.
-       (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
-       (tramp-gvfs-url-file-name): Hexify file name in url.
-       (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
-       into account for the resulting file name.
-       (tramp-gvfs-handler-askquestion): Preserve current message, in
-       order to let progress reporter continue afterwards.  (Bug#6257)
-       Return dummy mountpoint, when the answer is "no".
-       See `tramp-gvfs-maybe-open-connection'.
-       (tramp-gvfs-handler-mounted-unmounted)
-       (tramp-gvfs-connection-mounted-p): Test also for new mountspec
-       attribute "default_location".  Set "prefix" property.
-       Handle default-location.
-       (tramp-gvfs-mount-spec): Return both prefix and mountspec.
-       (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
-       exists.  Raise an error, if not (due to a corresponding answer
-       "no" in interactive questions, for example).
-       Use `tramp-compat-funcall'.
-
-       * net/tramp-imap.el (top): Autoload `epg-make-context'.
-       (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
-       (tramp-imap-do-copy-or-rename-file)
-       (tramp-imap-handle-insert-file-contents)
-       (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
-       (tramp-imap-handle-delete-file): Add TRASH arg.
-
-       * net/tramp-smb.el (tramp-smb-handle-copy-file):
-       Add PRESERVE-SELINUX-CONTEXT.
-       (tramp-smb-handle-copy-file)
-       (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
-       (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
-       Use `with-progress-reporter'.
-       (tramp-smb-handle-delete-file): Add TRASH arg.
+       * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Protect
+       deleting tmpfile.
+       (tramp-gvfs-maybe-open-connection): Use `tramp-compat-funcall'.
 
-       * net/tramp.el (tramp-methods): Move hostname to the end in all
-       ssh `tramp-login-args'.  Add `tramp-async-args' attribute where
-       appropriate.
-       (tramp-verbose): Describe verbose level 9.
-       (tramp-completion-function-alist)
-       (tramp-file-name-regexp, tramp-chunksize)
-       (tramp-local-coding-commands, tramp-remote-coding-commands)
-       (with-connection-property, tramp-completion-mode-p)
-       (tramp-action-process-alive, tramp-action-out-of-band)
-       (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
-       (tramp-exists-file-name-handler): Fix docstring.
-       (tramp-remote-process-environment): Use `format' instead of
-       `concat'.  Protect version string by apostroph.
-       (tramp-shell-prompt-pattern): Do not use a shy group in case of
-       XEmacs.
-       (tramp-file-name-regexp-unified)
-       (tramp-completion-file-name-regexp-unified): On W32 systems, do
-       not regard the volume letter as remote filename.  (Bug#5447)
-       (tramp-perl-file-attributes)
-       (tramp-perl-directory-files-and-attributes): Don't pass "$3".
-       (tramp-vc-registered-read-file-names): Read input as
-       here-document, otherwise the command could exceed maximum length
-       of command line.
-       (tramp-file-name-handler-alist): Add `file-selinux-context' and
-       `set-file-selinux-context'.
-       (tramp-debug-message): Add `tramp-compat-funcall' to ignored
-       backtrace functions.
-       (tramp-error-with-buffer): Don't show the connection buffer when
-       we are in completion mode.
-       (tramp-progress-reporter-update, tramp-remote-selinux-p)
-       (tramp-handle-file-selinux-context)
-       (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
-       (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
-       New defuns.
-       (with-progress-reporter): New defmacro.
-       (tramp-debug-outline-regexp): New defconst.
-       (top, tramp-rfn-eshadow-setup-minibuffer)
-       (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
-       (tramp-handle-dired-compress-file, tramp-handle-shell-command)
-       (tramp-completion-mode-p, tramp-check-for-regexp)
-       (tramp-open-connection-setup-interactive-shell)
-       (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
-       (tramp-time-diff, tramp-coding-system-change-eol-conversion)
-       (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
-       Use `tramp-compat-funcall'.
-       (tramp-handle-make-symbolic-link): Flush file properties.
-       (tramp-handle-load, tramp-handle-file-local-copy)
-       (tramp-handle-insert-file-contents, tramp-handle-write-region)
-       (tramp-handle-vc-registered, tramp-maybe-send-script)
-       (tramp-find-shell): Use `with-progress-reporter'.
-       (tramp-do-file-attributes-with-stat): Add space in format string,
-       in order to work around a bug in pdksh.  Reported by Gilles Pion
-       <gpion@lfdj.com>.
-       (tramp-handle-verify-visited-file-modtime): Do not send a command
-       when the connection is not established.
-       (tramp-handle-set-file-times): Simplify the check for utc.
-       (tramp-handle-directory-files-and-attributes)
-       (tramp-get-remote-path): Use `copy-tree'.
-       (tramp-completion-handle-file-name-all-completions): Ensure, that
-       non remote files are still checked.  Oops.
-       (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
-       Handle PRESERVE-SELINUX-CONTEXT.
-       (tramp-do-copy-or-rename-file): Add progress reporter.
-       (tramp-do-copy-or-rename-file-directly): Do not use
-       `tramp-handle-file-remote-p'.
-       (tramp-do-copy-or-rename-file-out-of-band):
-       Use `tramp-compat-delete-directory'.
-       (tramp-do-copy-or-rename-file-out-of-band)
-       (tramp-compute-multi-hops, tramp-maybe-open-connection):
-       Use `format-spec-make'.
-       (tramp-handle-delete-file): Add TRASH arg.
-       (tramp-handle-dired-uncache): Flush directory cache, not only file
-       cache.
-       (tramp-handle-expand-file-name)
+       * net/tramp.el (tramp-handle-expand-file-name)
        (tramp-completion-handle-file-name-all-completions)
        (tramp-completion-handle-file-name-completion):
        Use `tramp-connectable-p'.
-       (tramp-handle-start-file-process): Set connection property "vec".
-       Use it, in order to invalidate file caches.  Check only for
-       `remote-tty' process property.
-       Implement tty setting.  (Bug#4604, Bug#6360)
-       (tramp-file-name-for-operation): Add `call-process-region' and
-       `set-file-selinux-context'.
-       (tramp-find-foreign-file-name-handler)
-       (tramp-advice-make-auto-save-file-name)
-       (tramp-set-auto-save-file-modes): Remove superfluous check for
-       `stringp'.  This is done inside `tramp-tramp-file-p'.
-       (tramp-file-name-handler): Trace 'quit.  Catch the error for some
-       operations when we are in completion mode.  This gives the user
-       the chance to correct the file name in the minibuffer.
-       (tramp-completion-mode-p): Use `non-essential'.
-       (tramp-handle-file-name-all-completions): Backward/ XEmacs
-       compatibility: Use `completion-ignore-case' if
-       `read-file-name-completion-ignore-case' does not exist.
-       (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
-       (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
-       `tramp-open-shell'.
-       (tramp-action-password): Hide password prompt before next run.
-       (tramp-process-actions): Widen connection buffer for the trace.
-       (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
-       process property.  Trace stty settings if `tramp-verbose' >= 9.
-       Apply workaround for IRIX64 bug.  Move argument of last
-       `tramp-send-command' where it belongs to.
-       (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
-       front of `login-args'.
-       (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
-       on "/dev/null" instead of "/".
-       (tramp-get-ls-command-with-dired): Make test for "--dired"
-       stronger.
-       (tramp-set-auto-save-file-modes): Adapt version check.
-       (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
-       (tramp-handle-process-file): Call the program in a subshell, in
-       order to preserve working directory.
-       (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
-       `tramp-remote-sh' from `tramp-methods'.
-       (tramp-get-ls-command): Make test for "--color=never" stronger.
-       (tramp-check-for-regexp): Use (forward-line 1).
 
        * net/trampver.el: Update release number.
 
 
        * net/dbus.el: Accept UNIX domain sockets as bus address.
        (top): Don't initialize `dbus-registered-objects-table' anymore,
-       this is done in dbusbind,c.
+       this is done in dbusbind.c.
        (dbus-check-event): Adapt test for bus.
        (dbus-return-values-table, dbus-unregister-service)
        (dbus-event-bus-name, dbus-introspect, dbus-register-property):
        * progmodes/octave-mod.el (octave-mode): Set comment-add.
        (octave-mode-map): Use comment-dwim (bug#6829).
 
-2010-08-12  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
+2010-08-12  Antoine Levitt  <antoine.levitt@gmail.com>
 
        * cus-edit.el (custom-save-variables, custom-save-faces): Fix up
        indentation of inserted comment.
 
 2010-08-08  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * calc/calc.el (calc-trail-mode,calc-refresh): Use `face' property
+       * calc/calc.el (calc-trail-mode, calc-refresh): Use `face' property
        to italicize headers.
        (calc-highlight-selections-with-faces): New variable.
        (calc-selected-face, calc-nonselected-face): New faces.
 
        * progmodes/cc-cmds.el (c-mask-paragraph, c-fill-paragraph):
        Fix for the case that a C style comment has its delimiters alone on
-       their respective lines.
+       their respective lines.  (Bug#193)
 
 2010-08-06  Michael Albinus  <michael.albinus@gmx.de>
 
        (sql-interactive-mode-menu): Add "Save Connection" item.
        (sql-add-product): Fix menu item.
        (sql-get-product-feature): Improved error handling.
-       (sql--alt-buffer-part, sql--alt-if-not-empty): Removed.
+       (sql--alt-buffer-part, sql--alt-if-not-empty): Remove.
        (sql-make-alternate-buffer-name): Simplified.
        (sql-product-interactive): Handle missing product.
        (sql-connect): Support string keys, minor improvements.
        (delete-backward-char): Implement in Lisp.
        (delete-forward-char): New command.
 
-       * mouse.el (mouse-region-delete-keys): Deleted.
+       * mouse.el (mouse-region-delete-keys): Delete.
        (mouse-show-mark): Simplify.
 
        * bindings.el (global-map): Bind delete and DEL, the former to
        * htmlfontify.el (hfy-face-attr-for-class): Use append instead
        of nconc to avoid pure storage error (Bug#6239).
 
-2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
+2010-06-27  Christoph Scholtes  <cschol2112@googlemail.com>
 
        * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window)
        (bookmark-bmenu-other-window-with-mouse): Remove unnecessary
        * net/tramp-ftp.el (tramp-ftp-file-name-handler):
        Use `delete-file' instead of `tramp-compat-delete-file'.
 
-       * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg.
-       (tramp-gvfs-handle-write-region): Use `delete-file' instead of
-       `tramp-compat-delete-file'.
+       * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Use
+       `delete-file' instead of `tramp-compat-delete-file'.
 
        * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file):
        Use `delete-file' instead of `tramp-compat-delete-file'.
 
        * textmodes/ispell.el (ispell-init-process): Fix personal dictionary
        condition in default directory check.
-       (ispell-init-process,ispell-kill-ispell,kill-buffer-hook):
+       (ispell-init-process, ispell-kill-ispell, kill-buffer-hook):
        Kill ispell process when killing its associated buffer.
 
 2010-04-27  Jan Djärv  <jan.h.d@swipnet.se>
 
        * ido.el (ido-file-internal): Fix 2009-12-02 change.
 
-2010-04-19  Christoph  <cschol2112@googlemail.com>  (tiny change)
+2010-04-19  Christoph Scholtes  <cschol2112@googlemail.com>
 
        * progmodes/grep.el (grep-compute-defaults): Fix handling of host
        default settings (Bug#5928).
        (ada-goto-label-re): New; matches goto labels.
        (ada-block-label-re): New; matches block labels.
        (ada-label-re): New; matches both.
-       (ada-named-block-re): Deleted; callers changed to use
+       (ada-named-block-re): Delete; callers changed to use
        `ada-block-label-re' instead.
        (ada-get-current-indent, ada-get-indent-noindent, ada-get-indent-loop):
        Use `ada-block-label-re'.
        * vc-rcs.el (vc-rcs-print-log):
        * vc-git.el (vc-git-print-log):
        * vc-cvs.el (vc-cvs-print-log): Add new optional argument LIMIT,
-       ignore it.  Make the BUFFER argument non-optional
+       ignore it.  Make the BUFFER argument non-optional.
 
        * bindings.el (mode-line-buffer-identification): Do not purecopy.
 
 2009-08-19  Magnus Henoch  <magnus.henoch@gmail.com>
 
        * log-edit.el (log-edit-strip-single-file-name): New var.
-       (log-edit-insert-changelog): Use it.  Bug#3571
+       (log-edit-insert-changelog): Use it.  Bug#3571.
 
 2009-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * subr.el (read-passwd): Use read-key so keypad keys work as well.
-       Bug#3287
+       Bug#3287.
 
        * help.el (help-print-return-message): Rename from
        print-help-return-message.
        (def-gdb-memory-format, def-gdb-memory-unit): Update memory buffer
        after changing settings.
        (gdb-invalidate-disassembly): Update when first shown.
-       (gdb-edit-locals-value): Fixed.
+       (gdb-edit-locals-value): Fix.
        (gdb-registers-handler-custom): Print registers in right order and
        allow changing register values (only for current thread yet).
        (gdb-breakpoints-mode-map): Don't assume threads buffer is present.
 
 2009-08-06  Dmitry Dzhus  <dima@sphinx.net.ru>
 
-       * progmodes/gdb-mi.el (gdb-var-create-regexp): Removed.
+       * progmodes/gdb-mi.el (gdb-var-create-regexp): Remove.
        (gdb-var-create-handler): Rewritten using JSON parser.
        (gdb-propertize-header): Move earlier.
        (gdb-set-header): Remove to avoid duplication.
        or shell command text during AUTO expansion.  Suggested by Tad Truex.
        (verilog-read-sub-decls-expr, verilog-read-sub-decls-line)
        (verilog-read-sub-decls-sig, verilog-symbol-detick-text):
-       Fix dotted nets {a.b,c.d} and excaped identifiers being mis-included
+       Fix dotted nets {a.b,c.d} and escaped identifiers being mis-included
        in AUTOINOUT.  Reported by Matthew Lovell.
        (verilog-read-always-signals-recurse): Fix AUTORESET "if (a<=b)"
        causing use of <= assignments.  Reported by Alex Reed.
index 75e1e5882f66ee3294063d965b012b50aed3728b..cc5fd6d96fa142bafc2f5cb17129f75a9d374f53 100644 (file)
@@ -2013,7 +2013,7 @@ Optional FORCE means force reassignment of the region property."
   ;; item body), to bias the registered values.
   ;;
   ;; This is not necessary/useful when the item is being decorated, because
-  ;; that always must be preceeded by a fresh item parse.
+  ;; that always must be preceded by a fresh item parse.
 
   (if (not (eq field :body-end))
       (widget-get item-widget :from)
index 1a7d8cb1593f8e4e76fcc3b4cffdc633100be6e5..c75b7a22f9ad990f68d2a38e89ede079ca0a8bc0 100644 (file)
@@ -234,7 +234,7 @@ Use vector format for the keys:
   - put literal keys after a '?' question mark, eg: '?a', '?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
-    of the modifers, eg: [(control ?a)]
+    of the modifiers, eg: [(control ?a)]
 See the existing keys for examples.
 
 Functions can be bound to multiple keys, but binding keys to
@@ -255,13 +255,13 @@ prevails."
 
 This is in contrast to the majority of allout-mode bindings on
 `allout-prefixed-bindings', whose bindings are created with a
-preceeding command key.
+preceding command key.
 
 Use vector format for the keys:
   - put literal keys after a '?' question mark, eg: '?a', '?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
-    of the modifers, eg: [(control ?a)]
+    of the modifiers, eg: [(control ?a)]
 See the existing keys for examples."
   :type 'allout-keybindings-binding
   :group 'allout-keybindings
@@ -339,7 +339,7 @@ The types of elements in the layout specification are:
          -- positive numbers open to the relative depth indicated by the
             number, but do not force already opened subtopics to be closed.
          -- 0 means to close topic -- hide all subitems.
- :   -- repeat spec -- apply the preceeding element to all siblings at
+ :   -- repeat spec -- apply the preceding element to all siblings at
         current level, *up to* those siblings that would be covered by specs
         following the `:' on the list.  Ie, apply to all topics at level but
         trailing ones accounted for by trailing specs.  (Only the first of
@@ -1642,7 +1642,7 @@ So `allout-post-command-business' should not reactivate it...")
 (defun allout-init (mode)
   "DEPRECATED - configure allout activation by customizing
 `allout-auto-activation'.  This function remains around, limited
-from what it did before, for backwards compatability.
+from what it did before, for backwards compatibility.
 
 MODE is the activation mode - see `allout-auto-activation' for
 valid values."
@@ -3125,7 +3125,7 @@ situation."
                  nil)
         ;; rationale: if any intervening items were at a lower depth, we
         ;; would now be on the first offspring at the target depth -- ie,
-        ;; the preceeding item (per the search direction) must be at a
+        ;; the preceding item (per the search direction) must be at a
         ;; lesser depth.  that's all we need to check.
         (if backward (allout-next-heading) (allout-previous-heading))
         (if (< allout-recent-depth target-depth)
@@ -4246,7 +4246,7 @@ With a negative argument, the item is shifted out using
 
 With an argument greater than one, shift-in the item but not its
 offspring, making the item into a sibling of its former children,
-and a child of sibling that formerly preceeded it.
+and a child of sibling that formerly preceded it.
 
 You are not allowed to shift the first offspring of a topic
 inwards, because that would yield a \"containment
@@ -5364,7 +5364,7 @@ header and body.  The elements of that list are:
 
       (goto-char start)
       (beginning-of-line)
-      ;; Goto initial topic, and register preceeding stuff, if any:
+      ;; Goto initial topic, and register preceding stuff, if any:
       (if (> (allout-goto-prefix-doublechecked) start)
          ;; First topic follows beginning point -- register preliminary stuff:
          (setq result
index cd946e46be95a142e421268444f27a23f6f16dee..d3db54c81d4aa4da3de5eed0df4b82911e25d2f4 100644 (file)
@@ -2181,7 +2181,8 @@ This also runs `bookmark-exit-hook'."
        (bookmark-time-to-save-p t)
        (bookmark-save)))
 
-(add-hook 'kill-emacs-hook 'bookmark-exit-hook-internal)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'bookmark-exit-hook-internal))
 
 (defun bookmark-unload-function ()
   "Unload the Bookmark library."
index fcc3ecc1ab1aef0c1372eca7844b0334054c7cd8..11a26d6d1252d84f69e9bc591f34d39309e1e217 100644 (file)
 
   (define-key calc-mode-map "l" nil)
   (define-key calc-mode-map "lq" 'calc-logunits-quantity)
-  (define-key calc-mode-map "ld" 'calc-logunits-dblevel)
-  (define-key calc-mode-map "ln" 'calc-logunits-nplevel)
+  (define-key calc-mode-map "ld" 'calc-dblevel)
+  (define-key calc-mode-map "ln" 'calc-nplevel)
   (define-key calc-mode-map "l+" 'calc-logunits-add)
   (define-key calc-mode-map "l-" 'calc-logunits-sub)
   (define-key calc-mode-map "l*" 'calc-logunits-mul)
   (define-key calc-mode-map "l/" 'calc-logunits-divide)
+  (define-key calc-mode-map "ls" 'calc-spn)
+  (define-key calc-mode-map "lm" 'calc-midi)
+  (define-key calc-mode-map "lf" 'calc-freq)
+  
   (define-key calc-mode-map "l?" 'calc-l-prefix-help)
 
   (define-key calc-mode-map "m" nil)
@@ -944,7 +948,7 @@ calcFunc-lupoweradd calcFunc-lufieldsub calcFunc-lupowersub
 calcFunc-lufieldmul calcFunc-lupowermul calcFunc-lufielddiv
 calcFunc-lupowerdiv calcFunc-fieldquant calcFunc-powerquant
 calcFunc-dbfieldlevel calcFunc-dbpowerlevel calcFunc-npfieldlevel
-calcFunc-nppowerlevel
+calcFunc-nppowerlevel calcFunc-spn calcFunc-midi calcFunc-freq
 math-build-units-table math-build-units-table-buffer
 math-check-unit-name math-convert-temperature math-convert-units
 math-extract-units math-remove-units math-simplify-units
@@ -1061,7 +1065,7 @@ calc-full-help calc-g-prefix-help calc-help-prefix
 calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help
 calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help
 calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help
-calc-t-prefix-help calc-u-prefix-help calc-ul-prefix-help
+calc-t-prefix-help calc-u-prefix-help calc-l-prefix-help
 calc-v-prefix-help)
 
  ("calc-incom" calc-begin-complex calc-begin-vector calc-comma
@@ -1176,9 +1180,10 @@ calc-convert-temperature calc-convert-units calc-define-unit
 calc-enter-units-table calc-explain-units calc-extract-units
 calc-get-unit-definition calc-permanent-units calc-quick-units
 calc-remove-units calc-simplify-units calc-undefine-unit
-calc-view-units-table calc-logunits-quantity calc-logunits-dblevel
-calc-logunits-nplevel calc-logunits-add calc-logunits-sub
-calc-logunits-mul calc-logunits-divide)
+calc-view-units-table calc-logunits-quantity calc-dblevel
+calc-nplevel calc-logunits-add calc-logunits-sub
+calc-logunits-mul calc-logunits-divide calc-spn calc-midi
+calc-freq)
 
  ("calc-vec" calc-arrange-vector calc-build-vector calc-cnorm
 calc-conj-transpose calc-cons calc-cross calc-kron calc-diag
index 185ed18ed4259a140d2d45a76c1ea4a03a147f18..076dab31fd9fef42ee5d2a525d92b3990c61ae77 100644 (file)
@@ -1574,7 +1574,7 @@ If this can't be done, return NIL."
         (if calc-infinite-mode
             '(neg (var inf var-inf))
           (math-reject-arg x "*Logarithm of zero")))
-       (calc-symbolic-mode (signal 'inexact-result nil))
+        (calc-symbolic-mode (signal 'inexact-result nil))
        ((Math-numberp x)
         (math-with-extra-prec 2
           (let ((xf (math-float x)))
index 569d5d3dc35379e9a63d524a6b33ea19c8e84da7..7f0adc9fe7ed0defcd5f50d49c321f2cb98a2d8c 100644 (file)
@@ -960,7 +960,10 @@ If EXPR is nil, return nil."
          (if (eq base 'pi)
              (math-pi)
            expr)))
-    (if (Math-primp expr)
+    (if (or
+         (Math-primp expr)
+         (and (eq (car-safe expr) 'calcFunc-subscr)
+              (eq (car-safe (nth 1 expr)) 'var)))
        expr
       (cons (car expr)
            (mapcar 'math-to-standard-rec (cdr expr))))))
@@ -1559,6 +1562,20 @@ If EXPR is nil, return nil."
 (defvar math-logunits '((var dB var-dB)
                         (var Np var-Np)))
 
+(defun math-conditional-apply (fn &rest args)
+  "Evaluate f(args) unless in symbolic mode.
+In symbolic mode, return the list (fn args)."
+  (if calc-symbolic-mode
+      (cons fn args)
+    (apply fn args)))
+
+(defun math-conditional-pow (a b)
+  "Evaluate a^b unless in symbolic mode.
+In symbolic mode, return the list (^ a b)."
+  (if calc-symbolic-mode
+      (list '^ a b)
+    (math-pow a b)))
+
 (defun math-extract-logunits (expr)
   (if (memq (car-safe expr) '(* /))
       (cons (car expr)
@@ -1585,24 +1602,24 @@ If EXPR is nil, return nil."
              (if (equal aunit '(var dB var-dB))
                  (let ((coef (if power 10 20)))
                    (math-mul coef
-                             (calcFunc-log10
+                             (math-conditional-apply 'calcFunc-log10
                               (if neg
                                   (math-sub
-                                   (math-pow 10 (math-div acoeff coef))
-                                   (math-pow 10 (math-div bcoeff coef)))
+                                   (math-conditional-pow 10 (math-div acoeff coef))
+                                   (math-conditional-pow 10 (math-div bcoeff coef)))
                                 (math-add
-                                 (math-pow 10 (math-div acoeff coef))
-                                 (math-pow 10 (math-div bcoeff coef)))))))
+                                 (math-conditional-pow 10 (math-div acoeff coef))
+                                 (math-conditional-pow 10 (math-div bcoeff coef)))))))
                (let ((coef (if power 2 1)))
                  (math-div
-                  (calcFunc-ln
+                  (math-conditional-apply 'calcFunc-ln
                    (if neg
                        (math-sub
-                        (calcFunc-exp (math-mul coef acoeff))
-                        (calcFunc-exp (math-mul coef bcoeff)))
+                        (math-conditional-apply 'calcFunc-exp (math-mul coef acoeff))
+                        (math-conditional-apply 'calcFunc-exp (math-mul coef bcoeff)))
                      (math-add
-                      (calcFunc-exp (math-mul coef acoeff))
-                      (calcFunc-exp (math-mul coef bcoeff)))))
+                      (math-conditional-apply 'calcFunc-exp (math-mul coef acoeff))
+                      (math-conditional-apply 'calcFunc-exp (math-mul coef bcoeff)))))
                   coef)))
              units)))))))
 
@@ -1666,14 +1683,14 @@ If EXPR is nil, return nil."
             (math-add
              coef 
              (math-mul (if power 10 20)
-                       (calcFunc-log10 number)))
+                       (math-conditional-apply 'calcFunc-log10 number)))
             units)))
          (t
           (math-simplify
            (math-mul
             (math-add
              coef 
-             (math-div (calcFunc-ln number) (if power 2 1)))
+             (math-div (math-conditional-apply 'calcFunc-ln number) (if power 2 1)))
             units))))
       (calc-record-why "*Improper units" nil))))
 
@@ -1692,14 +1709,14 @@ If EXPR is nil, return nil."
               (math-sub
                coef 
                (math-mul (if power 10 20)
-                         (calcFunc-log10 b)))
+                         (math-conditional-apply 'calcFunc-log10 b)))
               units)))
          (t
           (math-simplify
            (math-mul
             (math-sub
              coef 
-             (math-div (calcFunc-ln b) (if power 2 1)))
+             (math-div (math-conditional-apply 'calcFunc-ln b) (if power 2 1)))
             units)))))))))
 
 (defun calcFunc-lufieldtimes (a b)
@@ -1747,14 +1764,14 @@ If EXPR is nil, return nil."
          (if (equal lunit '(var dB var-dB))
              (math-mul 
               ref
-              (math-pow 
+              (math-conditional-pow 
                10
                (math-div
                 coeff
                 (if power 10 20))))
            (math-mul 
             ref
-            (calcFunc-exp
+            (math-conditional-apply 'calcFunc-exp
              (if power 
                  (math-mul 2 coeff)
                coeff))))
@@ -1787,15 +1804,16 @@ If EXPR is nil, return nil."
 (defun math-logunits-level (val ref db power)
   "Compute the value of VAL in decibels or nepers."
       (let* ((ratio (math-simplify-units (math-div val ref)))
+             (ratiou (math-simplify-units (math-remove-units ratio)))
              (units (math-simplify (math-extract-units ratio))))
         (math-mul
          (if db
              (math-mul
               (math-mul (if power 10 20)
-                        (calcFunc-log10 ratio))
+                        (math-conditional-apply 'calcFunc-log10 ratiou))
               '(var dB var-dB))
            (math-mul
-            (math-div (calcFunc-ln ratio) (if power 2 1))
+            (math-div (math-conditional-apply 'calcFunc-ln ratiou) (if power 2 1))
             '(var Np var-Np)))
          units)))
 
@@ -1819,7 +1837,7 @@ If EXPR is nil, return nil."
     (setq ref (math-read-expr calc-logunits-power-reference)))
   (math-logunits-level val ref nil t))
 
-(defun calc-logunits-dblevel (arg)
+(defun calc-dblevel (arg)
   (interactive "P")
   (calc-slow-wrapper
    (if (calc-is-hyperbolic)
@@ -1830,7 +1848,7 @@ If EXPR is nil, return nil."
          (calc-binary-op "ludb" 'calcFunc-dbpowerlevel arg)
        (calc-unary-op "ludb" 'calcFunc-dbpowerlevel arg)))))
 
-(defun calc-logunits-nplevel (arg)
+(defun calc-nplevel (arg)
   (interactive "P")
   (calc-slow-wrapper
    (if (calc-is-hyperbolic)
@@ -1841,6 +1859,222 @@ If EXPR is nil, return nil."
          (calc-binary-op "lunp" 'calcFunc-nppowerlevel arg)
        (calc-unary-op "lunp" 'calcFunc-nppowerlevel arg)))))
 
+;;; Musical notes
+
+
+(defvar calc-note-threshold)
+
+(defun math-midi-round (num)
+  "Round NUM to an integer N if NUM is within calc-note-threshold cents of N."
+  (let* ((n (math-round num))
+         (diff (math-abs
+                (math-sub num n))))
+    (if (< (math-compare diff 
+                         (math-div (math-read-expr calc-note-threshold) 100)) 0)
+        n
+      num)))
+
+(defconst math-notes
+  '(((var C var-C) . 0)
+    ((var Csharp var-Csharp) . 1)
+;    ((var C♯ var-C♯) . 1)
+    ((var Dflat var-Dflat) . 1)
+;    ((var D♭ var-D♭) . 1)
+    ((var D var-D) . 2)
+    ((var Dsharp var-Dsharp) . 3)
+;    ((var D♯ var-D♯) . 3)
+    ((var E var-E) . 4)
+    ((var F var-F) . 5)
+    ((var Fsharp var-Fsharp) . 6)
+;    ((var F♯ var-F♯) . 6)
+    ((var Gflat var-Gflat) . 6)
+;    ((var G♭ var-G♭) . 6)
+    ((var G var-G) . 7)
+    ((var Gsharp var-Gsharp) . 8)
+;    ((var G♯ var-G♯) . 8)
+    ((var A var-A) . 9)
+    ((var Asharp var-Asharp) . 10)
+;    ((var A♯ var-A♯) . 10)
+    ((var Bflat var-Bflat) . 10)
+;    ((var B♭ var-B♭) . 10)
+    ((var B var-B) . 11))
+  "An alist of notes with their number of semitones above C.")
+
+(defun math-freqp (freq)
+  "Non-nil if FREQ is a positive number times the unit Hz.
+If non-nil, return the coefficient of Hz."
+  (let ((freqcoef (math-simplify-units
+                   (math-div freq '(var Hz var-Hz)))))
+    (if (Math-posp freqcoef) freqcoef)))
+
+(defun math-midip (num)
+  "Non-nil if NUM is a possible MIDI note number.
+If non-nil, return NUM."
+  (if (Math-numberp num) num))
+
+(defun math-spnp (spn)
+  "Non-nil if NUM is a scientific pitch note (note + cents).
+If non-nil, return a list consisting of the note and the cents coefficient."
+  (let (note cents rnote rcents)
+    (if (eq (car-safe spn) '+)
+        (setq note (nth 1 spn)
+              cents (nth 2 spn))
+      (setq note spn
+            cents nil))
+    (cond
+     ((and  ;; NOTE is a note, CENTS is nil or cents.
+       (eq (car-safe note) 'calcFunc-subscr)
+       (assoc (nth 1 note) math-notes)
+       (integerp (nth 2 note))
+       (setq rnote note)
+       (or 
+        (not cents)
+        (Math-numberp (setq rcents
+                            (math-simplify 
+                             (math-div cents '(var cents var-cents)))))))
+      (list rnote rcents))
+     ((and  ;; CENTS is a note, NOTE is cents.
+       (eq (car-safe cents) 'calcFunc-subscr)
+       (assoc (nth 1 cents) math-notes)
+       (integerp (nth 2 cents))
+       (setq rnote cents)
+       (or 
+        (not note)
+        (Math-numberp (setq rcents
+                            (math-simplify 
+                             (math-div note '(var cents var-cents)))))))
+      (list rnote rcents)))))
+
+(defun math-freq-to-midi (freq)
+  "Return the midi note number corresponding to FREQ Hz."
+  (let ((midi (math-add
+               69
+               (math-mul
+                12
+                (calcFunc-log
+                 (math-div freq 440)
+                 2)))))
+    (math-midi-round midi)))
+
+(defun math-spn-to-midi (spn)
+  "Return the MIDI number corresponding to SPN."
+  (let* ((note (cdr (assoc (nth 1 (car spn)) math-notes)))
+         (octave (math-add (nth 2 (car spn)) 1))
+         (cents (nth 1 spn))
+         (midi  (math-add
+                 (math-mul 12 octave)
+                 note)))
+    (if cents
+        (math-add midi (math-div cents 100))
+      midi)))
+
+(defun math-midi-to-spn (midi)
+  "Return the scientific pitch notation corresponding to midi number MIDI."
+  (let (midin cents)
+    (if (math-integerp midi)
+        (setq midin midi 
+              cents nil)
+      (setq midin (math-floor midi)
+            cents (math-mul 100 (math-sub midi midin))))
+    (let* ((nr ;; This should be (math-idivmod midin 12), but with
+               ;; better behavior for negative midin.
+            (if (Math-negp midin)
+                (let ((dm (math-idivmod (math-neg midin) 12)))
+                  (if (= (cdr dm) 0)
+                      (cons (math-neg (car dm)) 0)
+                    (cons
+                     (math-sub (math-neg (car dm)) 1)
+                     (math-sub 12 (cdr dm)))))
+              (math-idivmod midin 12)))
+           (n (math-sub (car nr) 1))
+           (note (car (rassoc (cdr nr) math-notes))))
+      (if cents
+          (list '+ (list 'calcFunc-subscr note n) 
+                   (list '* cents '(var cents var-cents)))
+        (list 'calcFunc-subscr note n)))))
+
+(defun math-freq-to-spn (freq)
+  "Return the scientific pitch notation corresponding to FREQ Hz."
+  (math-with-extra-prec 3
+    (math-midi-to-spn (math-freq-to-midi freq))))
+
+(defun math-midi-to-freq (midi)
+  "Return the frequency of the note with midi number MIDI."
+  (list '*
+        (math-mul
+         440
+         (math-pow
+          2
+          (math-div 
+           (math-sub
+            midi
+            69)
+           12)))
+        '(var Hz var-Hz)))
+
+(defun math-spn-to-freq (spn)
+  "Return the frequency of the note with scientific pitch notation SPN."
+  (math-midi-to-freq (math-spn-to-midi spn)))
+
+(defun calcFunc-spn (expr)
+  "Return EXPR written as scientific pitch notation + cents."
+  ;; Get the coeffecient of Hz
+  (let (note)
+    (cond
+     ((setq note (math-freqp expr))
+      (math-freq-to-spn note))
+     ((setq note (math-midip expr))
+      (math-midi-to-spn note))
+     ((math-spnp expr)
+      expr)
+     (t
+      (math-reject-arg expr "*Improper expression")))))
+
+(defun calcFunc-midi (expr)
+  "Return EXPR written as a MIDI number."
+  (let (note)
+    (cond
+     ((setq note (math-freqp expr))
+      (math-freq-to-midi note))
+     ((setq note (math-spnp expr))
+      (math-spn-to-midi note))
+     ((math-midip expr)
+      expr)
+     (t
+      (math-reject-arg expr "*Improper expression")))))
+
+(defun calcFunc-freq (expr)
+  "Return the frequency corresponding to EXPR."
+  (let (note)
+    (cond
+     ((setq note (math-midip expr))
+      (math-midi-to-freq note))
+     ((setq note (math-spnp expr))
+      (math-spn-to-freq note))
+     ((math-freqp expr)
+      expr)
+     (t
+      (math-reject-arg expr "*Improper expression")))))
+
+(defun calc-freq (arg)
+  "Return the frequency corresponding to the expression on the stack."
+  (interactive "P")
+  (calc-slow-wrapper
+   (calc-unary-op "freq" 'calcFunc-freq arg)))
+
+(defun calc-midi (arg)
+  "Return the MIDI number corresponding to the expression on the stack."
+  (interactive "P")
+  (calc-slow-wrapper
+   (calc-unary-op "midi" 'calcFunc-midi arg)))
+
+(defun calc-spn (arg)
+  "Return the scientific pitch notation corresponding to the expression on the stack."
+  (interactive "P")
+  (calc-slow-wrapper
+   (calc-unary-op "spn" 'calcFunc-spn arg)))
+
+
 (provide 'calc-units)
 
 ;; Local variables:
index 5dfbc2d51f5f5a6f6d97703e259abd61aa52c538..47ef3241b3ec9d234d6df22303159f3c957b1ed3 100644 (file)
          (math-reject-arg n "*Index out of range")))))
 
 (defun calcFunc-subscr (mat n &optional m)
-  (setq mat (calcFunc-mrow mat n))
-  (if m
-      (if (math-num-integerp n)
-         (calcFunc-mrow mat m)
-       (calcFunc-mcol mat m))
-    mat))
+  (if (eq (car-safe mat) 'var) nil
+    (setq mat (calcFunc-mrow mat n))
+    (if m
+        (if (math-num-integerp n)
+            (calcFunc-mrow mat m)
+          (calcFunc-mcol mat m))
+      mat)))
 
 ;;; Get the Nth column of a matrix.
 (defun math-mat-col (mat n)
index 72ddddeb32d372859b463a47f85376f478469096..f4d8983eb8827f9088cb238a0ca27b1ec012eb1e 100644 (file)
@@ -446,6 +446,11 @@ by displaying the sub-formula in `calc-selected-face'."
   :group 'calc
   :type '(string))
 
+(defcustom calc-note-threshold "1" 
+  "The number of cents that a frequency should be near a note
+to be identified as that note."
+  :type 'string
+  :group 'calc)
 
 (defface calc-nonselected-face
   '((t :inherit shadow       
index f2dfc3c51fe78b5900f9cc6f33589b899e6b8fa1..63e7484e1278bb8f50a05d7684cba6091be22092 100644 (file)
@@ -792,6 +792,20 @@ from the cursor position."
 (define-obsolete-function-alias 'list-yahrzeit-dates
   'calendar-hebrew-list-yahrzeits "23.1")
 
+(defun calendar-hebrew-birthday (date year)
+  "Absolute date of the anniversary of Hebrew birth DATE, in Hebrew YEAR."
+  (let ((b-day (calendar-extract-day date))
+        (b-month (calendar-extract-month date))
+        (b-year (calendar-extract-year date)))
+    ;; If it's Adar in a normal Hebrew year or Adar II in a Hebrew leap year...
+    (if (= b-month (calendar-hebrew-last-month-of-year b-year))
+        ;; ...then use the same day in last month of Hebrew year.
+        (calendar-hebrew-to-absolute
+         (list (calendar-hebrew-last-month-of-year year) b-day year))
+      ;; Else use the normal anniversary of the birth date,
+      ;; or the corresponding day in years without that date.
+      (+ (calendar-hebrew-to-absolute (list b-month 1 year)) b-day -1))))
+
 (defvar date)
 
 ;; To be called from diary-list-sexp-entries, where DATE is bound.
@@ -800,6 +814,37 @@ from the cursor position."
   "Hebrew calendar equivalent of date diary entry."
   (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date)))
 
+(defvar entry)
+(declare-function diary-ordinal-suffix "diary-lib" (n))
+
+;;;###diary-autoload
+(defun diary-hebrew-birthday (month day year &optional after-sunset)
+  "Hebrew birthday diary entry.
+Entry applies if date is birthdate (MONTH DAY YEAR), or the day before.
+The order of the input parameters changes according to
+`calendar-date-style' (e.g. to DAY MONTH YEAR in the European style).
+
+Assumes the associated diary entry is the name of the person.
+
+Although the date of birth is specified by the *civil* calendar,
+this function determines the proper Hebrew calendar birthday.
+If the optional argument AFTER-SUNSET is non-nil, this means the
+birth occurred after local sunset on the given civil date.
+In this case, the following civil date corresponds to the Hebrew birthday."
+  (let* ((h-date (calendar-hebrew-from-absolute
+                  (+ (calendar-absolute-from-gregorian
+                      (diary-make-date month day year))
+                     (if after-sunset 1 0))))
+         (h-year (calendar-extract-year h-date))     ; birth-day
+         (d (calendar-absolute-from-gregorian date)) ; today
+         (h-yr (calendar-extract-year (calendar-hebrew-from-absolute d)))
+         (age (- h-yr h-year))          ; current H year - birth H-year
+         (b-date (calendar-hebrew-birthday h-date h-yr)))
+    (and (> age 0) (memq b-date (list d (1+ d)))
+         (format "%s's %d%s Hebrew birthday%s" entry age
+                 (diary-ordinal-suffix age)
+                 (if (= b-date d) "" " (evening)")))))
+
 ;;;###diary-autoload
 (defun diary-hebrew-omer (&optional mark)
   "Omer count diary entry.
@@ -829,8 +874,6 @@ use when highlighting the day in the calendar."
 ;;;###diary-autoload
 (define-obsolete-function-alias 'diary-omer 'diary-hebrew-omer "23.1")
 
-(defvar entry)
-
 (autoload 'diary-make-date "diary-lib")
 
 (declare-function diary-ordinal-suffix "diary-lib" (n))
index 8a0fbd5cc37814b9b40f5de0122fb989d2fad12d..5cdd1577a6eea6c28a71e41ca5e7ce2d53d64ae5 100644 (file)
@@ -100,7 +100,7 @@ Usually bound to the dimension of a single symbol or command.")
           :type list
           :documentation "List of tags defining local text.
 This can be nil, or a list where the last element can be a string
-representing text that may be incomplete.  Preceeding elements
+representing text that may be incomplete.  Preceding elements
 must be semantic tags representing variables or functions
 called in a dereference sequence.")
    (prefixclass :initarg :prefixclass
index 31e92724a00bd395e6ffc11e2fdae6e4b6b2841e..47cb722e00581d34a3228f1a73820d070ccaf0ce 100644 (file)
@@ -1264,7 +1264,7 @@ inserted into the current context.")
 ;; generated by a collector.  This format is in semanticdb search
 ;; form.  This vaguely standard form is a bit challenging to navigate
 ;; because the tags do not contain buffer info, but the file associated
-;; with the tags preceed the tag in the list.
+;; with the tags precedes the tag in the list.
 ;;
 ;; Basic displayors don't care, and can strip the results.
 ;; Advanced highlighting displayors need to know when they need
index ef206fd3122680a325d2f57416b1803c57e36598..7f7e82a95c20de735c16d4f24095a0b2e077eeb8 100644 (file)
@@ -426,7 +426,7 @@ See `semantic-edits-change-leaf-tag' for details on parents."
            ;; confirmed as the lineage of `overlapped-tags'
            ;; which must have a value by now.
 
-           ;; Loop over the search list to find the preceeding CDR.
+           ;; Loop over the search list to find the preceding CDR.
            ;; Fortunatly, (car overlapped-tags) happens to be
            ;; the first tag positionally.
            (let ((tokstart (semantic-tag-start (car overlapped-tags))))
@@ -874,7 +874,7 @@ pre-positioned to a convenient location."
            ))
       (message "To Remove Middle Tag: (%s)"
               (semantic-format-tag-name first)))
-    ;; Find in the cache the preceeding tag
+    ;; Find in the cache the preceding tag
     (while (and cachestart (not (eq first (car (cdr cachestart)))))
       (setq cachestart (cdr cachestart)))
     ;; Find the last tag
index ecd03ccec7321dca89549dd4ff889df52a98f92f..fa6e751762436d95899c721a638a67681a4f2665 100644 (file)
@@ -296,7 +296,7 @@ local definitions."
 
 (define-overloadable-function semantic-format-tag-canonical-name (tag &optional parent color)
   "Return a canonical name for TAG.
-A canonical name includes the names of any parents or namespaces preceeding
+A canonical name includes the names of any parents or namespaces preceding
 the tag.
 Optional argument PARENT is the parent type if TAG is a detail.
 Optional argument COLOR means highlight the prototype with font-lock colors.")
index 4489d0ffae5f83607458992e8a62d3029f99b73e..71a205386db8eaeb9b7db43dd553c28d5d576d65 100644 (file)
@@ -256,7 +256,7 @@ Optional argument COLOR indicates that color should be mixed in."
 (define-mode-local-override semantic-documentation-for-tag
   java-mode (&optional tag nosnarf)
   "Find documentation from TAG and return it as a clean string.
-Java have documentation set in a comment preceeding TAG's definition.
+Java has documentation set in a comment preceding TAG's definition.
 Attempt to strip out comment syntactic sugar, unless optional argument
 NOSNARF is non-nil.
 If NOSNARF is 'lex, then return the semantic lex token."
index d43d2607c9a6fd61051505107927c420196d4c01..888216527846913e2686e66e9211cf1f9ecedc51 100644 (file)
@@ -920,6 +920,8 @@ it were the arg to `interactive' (which see) to interactively read the value.
 
 If the variable has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
+If the variable also has a `custom-get' property, that is used for finding 
+the current value of the variable, otherwise `symbol-value' is used.
 
 If optional COMMENT argument is non-nil, also prompt for a comment and return
 it as the third element in the list."
@@ -941,7 +943,9 @@ it as the third element in the list."
                   (widget-prompt-value type
                                        prompt
                                        (if (boundp var)
-                                           (symbol-value var))
+                                            (funcall 
+                                             (or (get var 'custom-get) 'symbol-value) 
+                                             var))
                                        (not (boundp var))))
                  (t
                   (eval-minibuffer prompt))))))
@@ -1599,7 +1603,7 @@ Otherwise use brackets."
               'editable-field
               :size 40 :help-echo echo
               :action `(lambda (widget &optional event)
-                         (customize-apropos (widget-value widget))))))
+                         (customize-apropos (split-string (widget-value widget)))))))
        (widget-insert " ")
        (widget-create-child-and-convert
         search-widget 'push-button
index 4ca4cec38fffec1a5e418d0d5cb17a9944dc9c82..fd5baaf020f7c2b51391c82adb28168b55e090f5 100644 (file)
@@ -611,7 +611,8 @@ Furthermore, it clears the variables listed in `desktop-globals-to-clear'."
   (delete-other-windows))
 
 ;; ----------------------------------------------------------------------------
-(add-hook 'kill-emacs-hook 'desktop-kill)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'desktop-kill))
 
 (defun desktop-kill ()
   "If `desktop-save-mode' is non-nil, do what `desktop-save' says to do.
index 986c9edfd2dba26d65398e00dc8a2b63776c6048..c533c81be0e424ff56f0a593a6a1a366e346eed8 100644 (file)
@@ -1025,9 +1025,9 @@ See Info node `(emacs)Subdir switches' for more details."
   ;; Keeps any marks that may be present in column one (doing this
   ;; here is faster than with dired-add-entry's optional arg).
   ;; Does not update other dired buffers.  Use dired-relist-entry for that.
-  (let ((char (following-char))
-       (opoint (line-beginning-position))
-       (buffer-read-only))
+  (let* ((opoint (line-beginning-position))
+        (char (char-after opoint))
+        (buffer-read-only))
     (delete-region opoint (progn (forward-line 1) (point)))
     (if file
        (progn
index 8b1dbb1ef83defed89a5e509414cd3c622f580e7..a5063bb77ddc0366dea4320625c68dad1f7eca76 100644 (file)
@@ -145,6 +145,8 @@ See Info node `(dired-x) Omitting Variables' for more information."
       (let ((dired-omit-size-limit nil)) (dired-omit-expunge))
     (revert-buffer)))
 
+(put 'dired-omit-mode 'safe-local-variable 'booleanp)
+
 ;; For backward compatibility
 (define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1")
 
@@ -185,15 +187,19 @@ If nil, there is no maximum size."
 
 (defcustom dired-enable-local-variables t
   "Control use of local-variables lists in Dired.
-The value can be t, nil or something else.
-A value of t means local-variables lists are obeyed;
-nil means they are ignored; anything else means query.
-
 This temporarily overrides the value of `enable-local-variables' when
 listing a directory.  See also `dired-local-variables-file'."
-  :type 'boolean
+  :risky t
+  :type '(choice (const :tag "Query Unsafe" t)
+                (const :tag "Safe Only" :safe)
+                (const :tag "Do all" :all)
+                (const :tag "Ignore" nil)
+                (other :tag "Query" other))
   :group 'dired-x)
 
+(make-obsolete-variable 'dired-enable-local-variables
+                        "use a standard `dir-locals-file' instead." "24.1")
+
 (defcustom dired-guess-shell-gnutar
   (catch 'found
     (dolist (exe '("tar" "gtar"))
@@ -430,6 +436,7 @@ move to its line in dired."
                 (dired-omit-mode)
                 (dired-goto-file file)))))))
 
+;;;###autoload
 (defun dired-jump-other-window (&optional file-name)
   "Like \\[dired-jump] (`dired-jump') but in other window."
   (interactive
@@ -698,15 +705,26 @@ Also useful for `auto-mode-alist' like this:
                       (dired-current-directory)
                     default-directory)))
   "Alist of major modes and their opinion on `default-directory'.
-This is given as a Lisp expression to evaluate.  A resulting value of
-nil is ignored in favor of `default-directory'.")
+Each element has the form (MAJOR . EXPRESSION).
+The function `dired-default-directory' evaluates EXPRESSION to
+determine a default directory.")
+
+(put 'dired-default-directory-alist 'risky-local-variable t) ; gets eval'd
+(make-obsolete-variable 'dired-default-directory-alist
+                        "this feature is due to be removed." "24.1")
 
 (defun dired-default-directory ()
-  "Usage like variable `default-directory'.
-Knows about the special cases in variable `dired-default-directory-alist'."
+  "Return the `dired-default-directory-alist' entry for the current major-mode.
+If none, return `default-directory'."
   (or (eval (cdr (assq major-mode dired-default-directory-alist)))
       default-directory))
 
+;; It looks like this was intended to be something of a "general" feature,
+;; but it only ever seems to have been used in dired-smart-shell-command,
+;; and does not seem worth keeping around (?).
+(make-obsolete 'dired-default-directory
+               "this feature is due to be removed." "24.1")
+
 (defun dired-smart-shell-command (command &optional output-buffer error-buffer)
   "Like function `shell-command', but in the current Virtual Dired directory."
   (interactive
@@ -717,32 +735,33 @@ Knows about the special cases in variable `dired-default-directory-alist'."
                         ((eq major-mode 'dired-mode) (dired-get-filename t t))))
     current-prefix-arg
     shell-command-default-error-buffer))
-  (let ((default-directory (dired-default-directory)))
+  (let ((default-directory (or (and (eq major-mode 'dired-mode)
+                                    (dired-current-directory))
+                               default-directory)))
     (shell-command command output-buffer error-buffer)))
 
 \f
 ;;; LOCAL VARIABLES FOR DIRED BUFFERS.
 
-;; Brief Description:
-;;;
+;; Brief Description  (This feature is obsolete as of Emacs 24.1)
+;;
 ;; * `dired-extra-startup' is part of the `dired-mode-hook'.
-;;;
+;;
 ;; * `dired-extra-startup' calls `dired-hack-local-variables'
-;;;
+;;
 ;; * `dired-hack-local-variables' checks the value of
-;;;   `dired-local-variables-file'
-;;;
+;;   `dired-local-variables-file'
+;;
 ;; * Check if `dired-local-variables-file' is a non-nil string and is a
-;;;   filename found in the directory of the Dired Buffer being created.
-;;;
+;;   filename found in the directory of the Dired Buffer being created.
+;;
 ;; * If `dired-local-variables-file' satisfies the above, then temporarily
-;;;   include it in the Dired Buffer at the bottom.
-;;;
+;;   include it in the Dired Buffer at the bottom.
+;;
 ;; * Set `enable-local-variables' temporarily to the user variable
-;;;   `dired-enable-local-variables' and run `hack-local-variables' on the
-;;;   Dired Buffer.
+;;   `dired-enable-local-variables' and run `hack-local-variables' on the
+;;   Dired Buffer.
 
-;; FIXME do standard dir-locals obsolete this?
 (defcustom dired-local-variables-file (convert-standard-filename ".dired")
   "Filename, as string, containing local dired buffer variables to be hacked.
 If this file found in current directory, then it will be inserted into dired
@@ -752,6 +771,8 @@ See also `dired-enable-local-variables'."
   :type 'file
   :group 'dired)
 
+(make-obsolete-variable 'dired-local-variables-file 'dir-locals-file "24.1")
+
 (defun dired-hack-local-variables ()
   "Evaluate local variables in `dired-local-variables-file' for dired buffer."
   (and (stringp dired-local-variables-file)
@@ -767,29 +788,42 @@ See also `dired-enable-local-variables'."
            (insert "\^L\n")
            (insert-file-contents dired-local-variables-file))
          ;; Hack 'em.
-         (let ((buffer-file-name dired-local-variables-file))
-           (hack-local-variables))
+         (unwind-protect
+             (let ((buffer-file-name dired-local-variables-file))
+               (hack-local-variables))
+           ;; Delete this stuff: `eobp' is used to find last subdir by dired.el.
+           (delete-region opoint (point-max)))
          ;; Make sure that the modeline shows the proper information.
-         (dired-sort-set-modeline)
-         ;; Delete this stuff: `eobp' is used to find last subdir by dired.el.
-         (delete-region opoint (point-max)))))
+         (dired-sort-set-modeline))))
 
+(make-obsolete 'dired-hack-local-variables
+               'hack-dir-local-variables-non-file-buffer "24.1")
+
+;; Does not seem worth a dedicated command.
+;; See the more general features in files-x.el.
 (defun dired-omit-here-always ()
-  "Create `dired-local-variables-file' for omitting and reverts directory.
-Sets `dired-omit-mode' to t in a local variables file that is readable by
-dired."
+  "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'.
+If in a Dired buffer, reverts it."
   (interactive)
   (if (file-exists-p dired-local-variables-file)
-      (message "File `./%s' already exists." dired-local-variables-file)
-    ;; Create `dired-local-variables-file'.
-    (with-current-buffer (get-buffer-create " *dot-dired*")
-      (erase-buffer)
-      (insert "Local Variables:\ndired-omit-mode: t\nEnd:\n")
-      (write-file dired-local-variables-file)
-      (kill-buffer))
+      (error "Old-style dired-local-variables-file `./%s' found;
+replace it with a dir-locals-file `./%s'"
+             dired-local-variables-file
+             dir-locals-file))
+  (if (file-exists-p dir-locals-file)
+      (message "File `./%s' already exists." dir-locals-file)
+    (with-temp-buffer
+      (insert "\
+\((dired-mode . ((subdirs . nil)
+                (dired-omit-mode . t))))\n")
+      (write-file dir-locals-file))
     ;; Run extra-hooks and revert directory.
-    (dired-extra-startup)
-    (dired-revert)))
+    (when (derived-mode-p 'dired-mode)
+      (hack-dir-local-variables-non-file-buffer)
+      (dired-extra-startup)
+      (dired-revert))))
+
+(make-obsolete 'dired-omit-here-always 'add-dir-local-variable "24.1")
 
 \f
 ;;; GUESS SHELL COMMAND.
@@ -826,11 +860,11 @@ dired."
 ;; NOTE: Use `gunzip -c' instead of `zcat' on `.gz' files.  Some do not
 ;; install GNU zip's version of zcat.
 
-(declare-function Man-support-local-filenames "man" ())
+(autoload 'Man-support-local-filenames "man")
 
 (defvar dired-guess-shell-alist-default
   (list
-   (list "\\.tar$"
+   (list "\\.tar\\'"
         '(if dired-guess-shell-gnutar
              (concat dired-guess-shell-gnutar " xvf")
            "tar xvf")
@@ -848,7 +882,7 @@ dired."
 
    ;; REGEXPS for compressed archives must come before the .Z rule to
    ;; be recognized:
-   (list "\\.tar\\.Z$"
+   (list "\\.tar\\.Z\\'"
         ;; Untar it.
         '(if dired-guess-shell-gnutar
              (concat dired-guess-shell-gnutar " zxvf")
@@ -858,7 +892,7 @@ dired."
                  " " dired-guess-shell-znew-switches))
 
    ;; gzip'ed archives
-   (list "\\.t\\(ar\\.\\)?gz$"
+   (list "\\.t\\(ar\\.\\)?gz\\'"
         '(if dired-guess-shell-gnutar
              (concat dired-guess-shell-gnutar " zxvf")
            (concat "gunzip -qc * | tar xvf -"))
@@ -878,7 +912,7 @@ dired."
            (concat "gunzip -qc * | tar tvf -")))
 
    ;; bzip2'ed archives
-   (list "\\.t\\(ar\\.bz2\\|bz\\)$"
+   (list "\\.t\\(ar\\.bz2\\|bz\\)\\'"
         "bunzip2 -c * | tar xvf -"
         ;; Extract files into a separate subdirectory
         '(concat "mkdir " (file-name-sans-extension file)
@@ -888,7 +922,7 @@ dired."
         "bunzip2")
 
    ;; xz'ed archives
-   (list "\\.t\\(ar\\.\\)?xz$"
+   (list "\\.t\\(ar\\.\\)?xz\\'"
         "unxz -c * | tar xvf -"
         ;; Extract files into a separate subdirectory
         '(concat "mkdir " (file-name-sans-extension file)
@@ -897,94 +931,103 @@ dired."
         ;; Optional decompression.
         "unxz")
 
-   '("\\.shar\\.Z$" "zcat * | unshar")
-   '("\\.shar\\.g?z$" "gunzip -qc * | unshar")
+   '("\\.shar\\.Z\\'" "zcat * | unshar")
+   '("\\.shar\\.g?z\\'" "gunzip -qc * | unshar")
 
-   '("\\.e?ps$" "ghostview" "xloadimage" "lpr")
-   (list "\\.e?ps\\.g?z$" "gunzip -qc * | ghostview -"
+   '("\\.e?ps\\'" "ghostview" "xloadimage" "lpr")
+   (list "\\.e?ps\\.g?z\\'" "gunzip -qc * | ghostview -"
         ;; Optional decompression.
         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.e?ps\\.Z$" "zcat * | ghostview -"
+   (list "\\.e?ps\\.Z\\'" "zcat * | ghostview -"
         ;; Optional conversion to gzip format.
         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
                  " " dired-guess-shell-znew-switches))
 
-   '("\\.patch$" "cat * | patch")
-   (list "\\.patch\\.g?z$" "gunzip -qc * | patch"
+   '("\\.patch\\'" "cat * | patch")
+   (list "\\.patch\\.g?z\\'" "gunzip -qc * | patch"
         ;; Optional decompression.
         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.patch\\.Z$" "zcat * | patch"
+   (list "\\.patch\\.Z\\'" "zcat * | patch"
         ;; Optional conversion to gzip format.
         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
                  " " dired-guess-shell-znew-switches))
 
    ;; The following four extensions are useful with dired-man ("N" key)
-   (list "\\.\\(?:[0-9]\\|man\\)$" '(progn (require 'man)
-                                          (if (Man-support-local-filenames)
-                                              "man -l"
-                                            "cat * | tbl | nroff -man -h")))
-   (list "\\.\\(?:[0-9]\\|man\\)\\.g?z$" '(progn (require 'man)
-                                                (if (Man-support-local-filenames)
-                                                    "man -l"
-                                                  "gunzip -qc * | tbl | nroff -man -h"))
+   ;; FIXME "man ./" does not work with dired-do-shell-command,
+   ;; because there seems to be no way for us to modify the filename,
+   ;; only the command.  Hmph.  `dired-man' works though.
+   (list "\\.\\(?:[0-9]\\|man\\)\\'" '(let ((loc (Man-support-local-filenames)))
+                                        (cond ((eq loc 'man-db) "man -l")
+                                              ((eq loc 'man) "man ./")
+                                              (t
+                                               "cat * | tbl | nroff -man -h"))))
+   (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db)
+                   "man -l")
+                  ((eq loc 'man)
+                   "man ./")
+                  (t "gunzip -qc * | tbl | nroff -man -h")))
         ;; Optional decompression.
         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.[0-9]\\.Z$" '(progn (require 'man)
-                                (if (Man-support-local-filenames)
-                                    "man -l"
-                                  "zcat * | tbl | nroff -man -h"))
+   (list "\\.[0-9]\\.Z\\'" '(let ((loc (Man-support-local-filenames)))
+                              (cond ((eq loc 'man-db) "man -l")
+                                    ((eq loc 'man) "man ./")
+                                    (t "zcat * | tbl | nroff -man -h")))
         ;; Optional conversion to gzip format.
         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
                  " " dired-guess-shell-znew-switches))
-   '("\\.pod$" "perldoc" "pod2man * | nroff -man")
-
-   '("\\.dvi$" "xdvi" "dvips")         ; preview and printing
-   '("\\.au$" "play")                  ; play Sun audiofiles
-   '("\\.mpe?g$\\|\\.avi$" "xine -p")
-   '("\\.ogg$" "ogg123")
-   '("\\.mp3$" "mpg123")
-   '("\\.wav$" "play")
-   '("\\.uu$" "uudecode")              ; for uudecoded files
-   '("\\.hqx$" "mcvert")
-   '("\\.sh$" "sh")                    ; execute shell scripts
-   '("\\.xbm$" "bitmap")               ; view X11 bitmaps
-   '("\\.gp$" "gnuplot")
-   '("\\.p[bgpn]m$" "xloadimage")
-   '("\\.gif$" "xloadimage")           ; view gif pictures
-   '("\\.tif$" "xloadimage")
-   '("\\.png$" "display")              ; xloadimage 4.1 doesn't grok PNG
-   '("\\.jpe?g$" "xloadimage")
-   '("\\.fig$" "xfig")                 ; edit fig pictures
-   '("\\.out$" "xgraph")               ; for plotting purposes.
-   '("\\.tex$" "latex" "tex")
-   '("\\.texi\\(nfo\\)?$" "makeinfo" "texi2dvi")
-   '("\\.pdf$" "xpdf")
-   '("\\.doc$" "antiword" "strings")
-   '("\\.rpm$" "rpm -qilp" "rpm -ivh")
-   '("\\.dia$" "dia")
-   '("\\.mgp$" "mgp")
+   '("\\.pod\\'" "perldoc" "pod2man * | nroff -man")
+
+   '("\\.dvi\\'" "xdvi" "dvips")               ; preview and printing
+   '("\\.au\\'" "play")                        ; play Sun audiofiles
+   '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p")
+   '("\\.ogg\\'" "ogg123")
+   '("\\.mp3\\'" "mpg123")
+   '("\\.wav\\'" "play")
+   '("\\.uu\\'" "uudecode")            ; for uudecoded files
+   '("\\.hqx\\'" "mcvert")
+   '("\\.sh\\'" "sh")                  ; execute shell scripts
+   '("\\.xbm\\'" "bitmap")             ; view X11 bitmaps
+   '("\\.gp\\'" "gnuplot")
+   '("\\.p[bgpn]m\\'" "xloadimage")
+   '("\\.gif\\'" "xloadimage")         ; view gif pictures
+   '("\\.tif\\'" "xloadimage")
+   '("\\.png\\'" "display")            ; xloadimage 4.1 doesn't grok PNG
+   '("\\.jpe?g\\'" "xloadimage")
+   '("\\.fig\\'" "xfig")                       ; edit fig pictures
+   '("\\.out\\'" "xgraph")             ; for plotting purposes.
+   '("\\.tex\\'" "latex" "tex")
+   '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi")
+   '("\\.pdf\\'" "xpdf")
+   '("\\.doc\\'" "antiword" "strings")
+   '("\\.rpm\\'" "rpm -qilp" "rpm -ivh")
+   '("\\.dia\\'" "dia")
+   '("\\.mgp\\'" "mgp")
 
    ;; Some other popular archivers.
-   (list "\\.zip$" "unzip" "unzip -l"
+   (list "\\.zip\\'" "unzip" "unzip -l"
         ;; Extract files into a separate subdirectory
         '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q")
                  " -d " (file-name-sans-extension file)))
-   '("\\.zoo$" "zoo x//")
-   '("\\.lzh$" "lharc x")
-   '("\\.arc$" "arc x")
-   '("\\.shar$" "unshar")
+   '("\\.zoo\\'" "zoo x//")
+   '("\\.lzh\\'" "lharc x")
+   '("\\.arc\\'" "arc x")
+   '("\\.shar\\'" "unshar")
+   '("\\.rar\\'" "unrar x")
+   '("\\.7z\\'" "7z x")
 
    ;; Compression.
-   (list "\\.g?z$" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.dz$" "dictunzip")
-   (list "\\.bz2$" "bunzip2")
-   (list "\\.xz$" "unxz")
-   (list "\\.Z$" "uncompress"
+   (list "\\.g?z\\'" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
+   (list "\\.dz\\'" "dictunzip")
+   (list "\\.bz2\\'" "bunzip2")
+   (list "\\.xz\\'" "unxz")
+   (list "\\.Z\\'" "uncompress"
         ;; Optional conversion to gzip format.
         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
                  " " dired-guess-shell-znew-switches))
 
-   '("\\.sign?$" "gpg --verify"))
+   '("\\.sign?\\'" "gpg --verify"))
 
   "Default alist used for shell command guessing.
 See `dired-guess-shell-alist-user'.")
index af99d4c741325211e7e3d1c56243727aa0a556c3..c8343ba7561c51c1741db518b5af6d269b10189b 100644 (file)
@@ -249,9 +249,19 @@ Local to each dired buffer.  May be a list, in which case the car is the
 directory name and the cdr is the list of files to mention.
 The directory name must be absolute, but need not be fully expanded.")
 
+;; Beware of "-l;reboot" etc.  See bug#3230.
+(defun dired-safe-switches-p (switches)
+  "Return non-nil if string SWITCHES does not look risky for dired."
+  (or (not switches)
+      (and (stringp switches)
+           (< (length switches) 100)    ; arbitrary
+           (string-match "\\` *-[- [:alnum:]]+\\'" switches))))
+
 (defvar dired-actual-switches nil
   "The value of `dired-listing-switches' used to make this buffer's text.")
 
+(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
+
 (defvar dired-re-inode-size "[0-9 \t]*"
   "Regexp for optional initial inode and file size as made by `ls -i -s'.")
 
@@ -601,9 +611,12 @@ Don't use that together with FILTER."
            (if current-prefix-arg
                (read-string "Dired listing switches: "
                             dired-listing-switches))
-           ;; If a dialog is about to be used, call read-directory-name so
-           ;; the dialog code knows we want directories.  Some dialogs can
-           ;; only select directories or files when popped up, not both.
+           ;; If a dialog is used, call `read-directory-name' so the
+           ;; dialog code knows we want directories.  Some dialogs
+           ;; can only select directories or files when popped up,
+           ;; not both.  If no dialog is used, call `read-file-name'
+           ;; because the user may want completion of file names for
+           ;; use in a wildcard pattern.
            (if (next-read-file-uses-dialog-p)
                (read-directory-name (format "Dired %s(directory): " str)
                                     nil default-directory nil)
@@ -1860,6 +1873,7 @@ Keybindings:
   (set (make-local-variable 'desktop-save-buffer)
        'dired-desktop-buffer-misc-data)
   (setq dired-switches-alist nil)
+  (hack-dir-local-variables-non-file-buffer) ; before sorting
   (dired-sort-other dired-actual-switches t)
   (when (featurep 'dnd)
     (set (make-local-variable 'dnd-protocol-alist)
@@ -3615,7 +3629,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
 ;;;;;;  dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
 ;;;;;;  dired-clean-directory dired-do-print dired-do-touch dired-do-chown
 ;;;;;;  dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
-;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "9d6333fab9c0f1b49e0bf2a536b8f245")
+;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "154cdfbf451aedec60c5012b625ff329")
 ;;; Generated autoloads from dired-aux.el
 
 (autoload 'dired-diff "dired-aux" "\
@@ -4073,8 +4087,8 @@ true then the type of the file linked to by FILE is printed instead.
 
 ;;;***
 \f
-;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
-;;;;;;  "86d436093caa9ae80f7b73915c6a4b4c")
+;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump)
+;;;;;;  "dired-x" "dired-x.el" "87fd4ae2fdade7e0f11c4a0b1cfdeda2")
 ;;; Generated autoloads from dired-x.el
 
 (autoload 'dired-jump "dired-x" "\
@@ -4089,6 +4103,11 @@ move to its line in dired.
 
 \(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
 
+(autoload 'dired-jump-other-window "dired-x" "\
+Like \\[dired-jump] (`dired-jump') but in other window.
+
+\(fn &optional FILE-NAME)" t nil)
+
 (autoload 'dired-do-relsymlink "dired-x" "\
 Relative symlink all marked (or next ARG) files into a directory.
 Otherwise make a relative symbolic link to the current file.
index aa85916cc3fe0c1eaab705e864f843972f096b09..31be851f2dd5ad5e9cda5899cb0ab29343b77a98 100644 (file)
@@ -1,4 +1,4 @@
-;;; assoc.el --- insert/delete/sort functions on association lists
+;;; assoc.el --- insert/delete functions on association lists
 
 ;; Copyright (C) 1996, 2001-2011  Free Software Foundation, Inc.
 
@@ -35,7 +35,7 @@ head is one matching KEY.  Returns the sorted list and doesn't affect
 the order of any other key-value pair.  Side effect sets alist to new
 sorted list."
   (set alist-symbol
-       (sort (copy-alist (eval alist-symbol))
+       (sort (copy-alist (symbol-value alist-symbol))
             (function (lambda (a b) (equal (car a) key))))))
 
 
@@ -75,7 +75,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
   (lexical-let ((elem (aelement key value))
                alist)
     (asort alist-symbol key)
-    (setq alist (eval alist-symbol))
+    (setq alist (symbol-value alist-symbol))
     (cond ((null alist) (set alist-symbol elem))
          ((anot-head-p alist key) (set alist-symbol (nconc elem alist)))
          (value (setcar alist (car elem)))
@@ -87,7 +87,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
 Alist is referenced by ALIST-SYMBOL and the key-value pair to remove
 is pair matching KEY.  Returns the altered alist."
   (asort alist-symbol key)
-  (lexical-let ((alist (eval alist-symbol)))
+  (lexical-let ((alist (symbol-value alist-symbol)))
     (cond ((null alist) nil)
          ((anot-head-p alist key) alist)
          (t (set alist-symbol (cdr alist))))))
@@ -133,7 +133,7 @@ extra values are ignored.  Returns the created alist."
          (t
           (amake alist-symbol keycdr valcdr)
           (aput alist-symbol keycar valcar))))
-  (eval alist-symbol))
+  (symbol-value alist-symbol))
 
 (provide 'assoc)
 
index 7b610d11b0f4e3c1272a07b8364c9c5d91171577..d6e7ee9e3cb5c5469850de01622b85037f62bd72 100644 (file)
@@ -537,7 +537,8 @@ Return non-nil if and only if FILE adds no autoloads to OUTFILE
 (defun autoload-save-buffers ()
   (while autoload-modified-buffers
     (with-current-buffer (pop autoload-modified-buffers)
-      (save-buffer))))
+      (let ((version-control 'never))
+       (save-buffer)))))
 
 ;;;###autoload
 (defun update-file-autoloads (file &optional save-after)
@@ -569,8 +570,9 @@ removes any prior now out-of-date autoload entries."
       (with-current-buffer
           ;; We used to use `raw-text' to read this file, but this causes
           ;; problems when the file contains non-ASCII characters.
-          (find-file-noselect
-           (autoload-ensure-default-file (autoload-generated-file)))
+         (let ((enable-local-variables :safe))
+           (find-file-noselect
+            (autoload-ensure-default-file (autoload-generated-file))))
         ;; This is to make generated-autoload-file have Unix EOLs, so
         ;; that it is portable to all platforms.
         (or (eq 0 (coding-system-eol-type buffer-file-coding-system))
@@ -656,8 +658,9 @@ directory or directories specified."
          (autoload-modified-buffers nil))
 
     (with-current-buffer
-       (find-file-noselect
-         (autoload-ensure-default-file (autoload-generated-file)))
+       (let ((enable-local-variables :safe))
+         (find-file-noselect
+          (autoload-ensure-default-file (autoload-generated-file))))
       (save-excursion
 
        ;; Canonicalize file names and remove the autoload file itself.
@@ -721,7 +724,8 @@ directory or directories specified."
         (current-buffer) nil nil no-autoloads this-time)
        (insert generate-autoload-section-trailer))
 
-      (save-buffer)
+      (let ((version-control 'never))
+       (save-buffer))
       ;; In case autoload entries were added to other files because of
       ;; file-local autoload-generated-file settings.
       (autoload-save-buffers))))
index 297655a235acc26382b7edf6bf6bbd211bd26cbd..7b785c9ace6cbbbd059760f732c8cc67b6fc32be 100644 (file)
@@ -238,6 +238,7 @@ the functions you loaded will not be able to run.")
 
 (defvar byte-compile-disable-print-circle nil
   "If non-nil, disable `print-circle' on printing a byte-compiled code.")
+(make-obsolete-variable 'byte-compile-disable-print-circle nil "24.1")
 ;;;###autoload(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
 
 (defcustom byte-compile-dynamic-docstrings t
index df9460154e85afa9f8c3f428f2f9cffc02852f30..17046f1ffb46b0e9251a32a8e263625220ac3b75 100644 (file)
@@ -282,7 +282,7 @@ Not documented
 ;;;;;;  do-all-symbols do-symbols dotimes dolist do* do loop return-from
 ;;;;;;  return block etypecase typecase ecase case load-time-value
 ;;;;;;  eval-when destructuring-bind function* defmacro* defun* gentemp
-;;;;;;  gensym) "cl-macs" "cl-macs.el" "7602128fa01003de9a8df4c752865300")
+;;;;;;  gensym) "cl-macs" "cl-macs.el" "5bdba3fbbcbfcf57a2c9ca87a6318150")
 ;;; Generated autoloads from cl-macs.el
 
 (autoload 'gensym "cl-macs" "\
@@ -319,7 +319,7 @@ its argument list allows full Common Lisp conventions.
 \(fn FUNC)" nil (quote macro))
 
 (autoload 'destructuring-bind "cl-macs" "\
-Not documented
+
 
 \(fn ARGS EXPR &rest BODY)" nil (quote macro))
 
@@ -445,7 +445,7 @@ from OBARRAY.
 \(fn (VAR [OBARRAY [RESULT]]) BODY...)" nil (quote macro))
 
 (autoload 'do-all-symbols "cl-macs" "\
-Not documented
+
 
 \(fn SPEC &rest BODY)" nil (quote macro))
 
@@ -505,7 +505,7 @@ lexical closures as in Common Lisp.
 (autoload 'lexical-let* "cl-macs" "\
 Like `let*', but lexically scoped.
 The main visible difference is that lambdas inside BODY, and in
-successive bindings within BINDINGS, will create lexical closures
+successive bindings within VARLIST, will create lexical closures
 as in Common Lisp.  This is similar to the behavior of `let*' in
 Common Lisp.
 
@@ -531,12 +531,12 @@ values.  For compatibility, (values A B C) is a synonym for (list A B C).
 \(fn (SYM...) FORM)" nil (quote macro))
 
 (autoload 'locally "cl-macs" "\
-Not documented
+
 
 \(fn &rest BODY)" nil (quote macro))
 
 (autoload 'declare "cl-macs" "\
-Not documented
+
 
 \(fn &rest SPECS)" nil (quote macro))
 
@@ -596,7 +596,7 @@ before assigning any PLACEs to the corresponding values.
 \(fn PLACE VAL PLACE VAL ...)" nil (quote macro))
 
 (autoload 'cl-do-pop "cl-macs" "\
-Not documented
+
 
 \(fn PLACE)" nil nil)
 
@@ -684,7 +684,7 @@ value, that slot cannot be set via `setf'.
 \(fn NAME SLOTS...)" nil (quote macro))
 
 (autoload 'cl-struct-setf-expander "cl-macs" "\
-Not documented
+
 
 \(fn X NAME ACCESSOR PRED-FORM POS)" nil nil)
 
@@ -730,7 +730,7 @@ and then returning foo.
 \(fn FUNC ARGS &rest BODY)" nil (quote macro))
 
 (autoload 'compiler-macroexpand "cl-macs" "\
-Not documented
+
 
 \(fn FORM)" nil nil)
 
index 093e4fbf2581ff307179ad9f89390fc3c707ddac..8b1fc9d5f530e2efa3450eede62c37548d6a852a 100644 (file)
@@ -1476,7 +1476,7 @@ lexical closures as in Common Lisp.
 (defmacro lexical-let* (bindings &rest body)
   "Like `let*', but lexically scoped.
 The main visible difference is that lambdas inside BODY, and in
-successive bindings within BINDINGS, will create lexical closures
+successive bindings within VARLIST, will create lexical closures
 as in Common Lisp.  This is similar to the behavior of `let*' in
 Common Lisp.
 \n(fn VARLIST BODY)"
index 910eff3c78fdabcd83db1aaa2440fa5c0c63666c..73af3a5708fff8ac4911270d95b52cf6bbecfa15 100644 (file)
@@ -630,7 +630,7 @@ displayed."
                                    'display (list 'space :align-to column)
                                    'face 'fixed-pitch)
                        title)
-                    (setq column (+ column 1
+                    (setq column (+ column 2
                                     (if (= column 0)
                                         elp-field-len
                                       (length title))))))
index b3c95fcc78f0c334ace5a9799f1dd9ea0172e625..5bd8fd01b1ebcd30d045c8f4704c9920a38cd102 100644 (file)
@@ -219,7 +219,7 @@ Emacs bug 6581 at URL `http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6581'."
   ;; This implementation is inefficient.  Rather than making it
   ;; efficient, let's hope bug 6581 gets fixed so that we can delete
   ;; it altogether.
-  (not (ert--explain-not-equal-including-properties a b)))
+  (not (ert--explain-equal-including-properties a b)))
 
 
 ;;; Defining and locating tests.
@@ -571,16 +571,15 @@ failed."
    (when (and (not firstp) (eq fast slow)) (return nil))))
 
 (defun ert--explain-format-atom (x)
-  "Format the atom X for `ert--explain-not-equal'."
+  "Format the atom X for `ert--explain-equal'."
   (typecase x
     (fixnum (list x (format "#x%x" x) (format "?%c" x)))
     (t x)))
 
-(defun ert--explain-not-equal (a b)
-  "Explainer function for `equal'.
+(defun ert--explain-equal-rec (a b)
+  "Returns a programmer-readable explanation of why A and B are not `equal'.
 
-Returns a programmer-readable explanation of why A and B are not
-`equal', or nil if they are."
+Returns nil if they are."
   (if (not (equal (type-of a) (type-of b)))
       `(different-types ,a ,b)
     (etypecase a
@@ -598,13 +597,13 @@ Returns a programmer-readable explanation of why A and B are not
                  (loop for i from 0
                        for ai in a
                        for bi in b
-                       for xi = (ert--explain-not-equal ai bi)
+                       for xi = (ert--explain-equal-rec ai bi)
                        do (when xi (return `(list-elt ,i ,xi)))
                        finally (assert (equal a b) t)))
-             (let ((car-x (ert--explain-not-equal (car a) (car b))))
+             (let ((car-x (ert--explain-equal-rec (car a) (car b))))
                (if car-x
                    `(car ,car-x)
-                 (let ((cdr-x (ert--explain-not-equal (cdr a) (cdr b))))
+                 (let ((cdr-x (ert--explain-equal-rec (cdr a) (cdr b))))
                    (if cdr-x
                        `(cdr ,cdr-x)
                      (assert (equal a b) t)
@@ -618,7 +617,7 @@ Returns a programmer-readable explanation of why A and B are not
                (loop for i from 0
                      for ai across a
                      for bi across b
-                     for xi = (ert--explain-not-equal ai bi)
+                     for xi = (ert--explain-equal-rec ai bi)
                      do (when xi (return `(array-elt ,i ,xi)))
                      finally (assert (equal a b) t))))
       (atom (if (not (equal a b))
@@ -627,7 +626,15 @@ Returns a programmer-readable explanation of why A and B are not
                   `(different-atoms ,(ert--explain-format-atom a)
                                     ,(ert--explain-format-atom b)))
               nil)))))
-(put 'equal 'ert-explainer 'ert--explain-not-equal)
+
+(defun ert--explain-equal (a b)
+  "Explainer function for `equal'."
+  ;; Do a quick comparison in C to avoid running our expensive
+  ;; comparison when possible.
+  (if (equal a b)
+      nil
+    (ert--explain-equal-rec a b)))
+(put 'equal 'ert-explainer 'ert--explain-equal)
 
 (defun ert--significant-plist-keys (plist)
   "Return the keys of PLIST that have non-null values, in order."
@@ -658,8 +665,8 @@ key/value pairs in each list does not matter."
                    (value-b (plist-get b key)))
                (assert (not (equal value-a value-b)) t)
                `(different-properties-for-key
-                 ,key ,(ert--explain-not-equal-including-properties value-a
-                                                                    value-b)))))
+                 ,key ,(ert--explain-equal-including-properties value-a
+                                                                value-b)))))
       (cond (keys-in-a-not-in-b
              (explain-with-key (first keys-in-a-not-in-b)))
             (keys-in-b-not-in-a
@@ -681,13 +688,16 @@ If SUFFIXP is non-nil, returns a suffix of S, otherwise a prefix."
           (t
            (substring s 0 len)))))
 
-(defun ert--explain-not-equal-including-properties (a b)
+;; TODO(ohler): Once bug 6581 is fixed, rename this to
+;; `ert--explain-equal-including-properties-rec' and add a fast-path
+;; wrapper like `ert--explain-equal'.
+(defun ert--explain-equal-including-properties (a b)
   "Explainer function for `ert-equal-including-properties'.
 
 Returns a programmer-readable explanation of why A and B are not
 `ert-equal-including-properties', or nil if they are."
   (if (not (equal a b))
-      (ert--explain-not-equal a b)
+      (ert--explain-equal a b)
     (assert (stringp a) t)
     (assert (stringp b) t)
     (assert (eql (length a) (length b)) t)
@@ -713,7 +723,7 @@ Returns a programmer-readable explanation of why A and B are not
           )))
 (put 'ert-equal-including-properties
      'ert-explainer
-     'ert--explain-not-equal-including-properties)
+     'ert--explain-equal-including-properties)
 
 
 ;;; Implementation of `ert-info'.
@@ -1244,12 +1254,14 @@ Also changes the counters in STATS to match."
                    (ert-test-passed (incf (ert--stats-passed-expected stats) d))
                    (ert-test-failed (incf (ert--stats-failed-expected stats) d))
                    (null)
-                   (ert-test-aborted-with-non-local-exit))
+                   (ert-test-aborted-with-non-local-exit)
+                   (ert-test-quit))
                (etypecase (aref results pos)
                  (ert-test-passed (incf (ert--stats-passed-unexpected stats) d))
                  (ert-test-failed (incf (ert--stats-failed-unexpected stats) d))
                  (null)
-                 (ert-test-aborted-with-non-local-exit)))))
+                 (ert-test-aborted-with-non-local-exit)
+                 (ert-test-quit)))))
       ;; Adjust counters to remove the result that is currently in stats.
       (update -1)
       ;; Put new test and result into stats.
@@ -1342,7 +1354,8 @@ EXPECTEDP specifies whether the result was expected."
              (ert-test-passed ".P")
              (ert-test-failed "fF")
              (null "--")
-             (ert-test-aborted-with-non-local-exit "aA"))))
+             (ert-test-aborted-with-non-local-exit "aA")
+             (ert-test-quit "qQ"))))
     (elt s (if expectedp 0 1))))
 
 (defun ert-string-for-test-result (result expectedp)
@@ -1353,7 +1366,8 @@ EXPECTEDP specifies whether the result was expected."
              (ert-test-passed '("passed" "PASSED"))
              (ert-test-failed '("failed" "FAILED"))
              (null '("unknown" "UNKNOWN"))
-             (ert-test-aborted-with-non-local-exit '("aborted" "ABORTED")))))
+             (ert-test-aborted-with-non-local-exit '("aborted" "ABORTED"))
+             (ert-test-quit '("quit" "QUIT")))))
     (elt s (if expectedp 0 1))))
 
 (defun ert--pp-with-indentation-and-newline (object)
@@ -1478,7 +1492,9 @@ Returns the stats object."
                  (message "%s" (buffer-string))))
               (ert-test-aborted-with-non-local-exit
                (message "Test %S aborted with non-local exit"
-                        (ert-test-name test)))))
+                        (ert-test-name test)))
+              (ert-test-quit
+               (message "Quit during %S" (ert-test-name test)))))
           (let* ((max (prin1-to-string (length (ert--stats-tests stats))))
                  (format-string (concat "%9s  %"
                                         (prin1-to-string (length max))
@@ -1853,7 +1869,9 @@ non-nil, returns the face for expected results.."
                      (ert-test-result-with-condition-condition result))
                     (ert--make-xrefs-region begin (point)))))
                (ert-test-aborted-with-non-local-exit
-                (insert "    aborted\n")))
+                (insert "    aborted\n"))
+               (ert-test-quit
+                (insert "    quit\n")))
              (insert "\n")))))
   nil)
 
index bf9998695eea4b581ff002dace191f6467566f6f..a71f3c7244c31bb00446444af6ccfa22ce35f417 100644 (file)
@@ -495,6 +495,8 @@ Return the node (or nil if we just passed the last node)."
     ;; Never step below the first element.
     ;; (unless (ewoc--filter-hf-nodes ewoc node)
     ;;   (setq node (ewoc--node-nth dll -2)))
+    (unless node
+      (error "No next"))
     (ewoc-goto-node ewoc node)))
 
 (defun ewoc-goto-node (ewoc node)
index b9994be3d397c333baffdefe165d4720ca31d667..61f23abf0a74cc20cc6b568debf2d5e8de0ab22d 100644 (file)
@@ -40,6 +40,9 @@
 (defvar package-archive-upload-base nil
   "Base location for uploading to package archive.")
 
+(defvar package-update-news-on-upload nil
+  "Whether package upload should also update NEWS and RSS feeds.")
+
 (defun package--encode (string)
   "Encode a string by replacing some characters with XML entities."
   ;; We need a special case for translating "&" to "&amp;".
        (unless old-buffer
          (kill-buffer (current-buffer)))))))
 
+(defun package--archive-contents-from-url (archive-url)
+  "Parse archive-contents file at ARCHIVE-URL.
+Return the file contents, as a string, or nil if unsuccessful."
+  (ignore-errors
+    (when archive-url
+      (let* ((buffer (url-retrieve-synchronously
+                     (concat archive-url "archive-contents"))))
+       (set-buffer buffer)
+       (package-handle-response)
+       (re-search-forward "^$" nil 'move)
+       (forward-char)
+       (delete-region (point-min) (point))
+       (prog1 (package-read-from-string
+               (buffer-substring-no-properties (point-min) (point-max)))
+         (kill-buffer buffer))))))
+
+(defun package--archive-contents-from-file (file)
+  "Parse the given archive-contents file."
+  (if (not (file-exists-p file))
+      ;; no existing archive-contents, possibly a new ELPA repo.
+      (list package-archive-version)
+    (let ((dont-kill (find-buffer-visiting file)))
+      (with-current-buffer (let ((find-file-visit-truename t))
+                            (find-file-noselect file))
+       (prog1
+           (package-read-from-string
+            (buffer-substring-no-properties (point-min) (point-max)))
+         (unless dont-kill
+           (kill-buffer (current-buffer))))))))
+
 (defun package-maint-add-news-item (title description archive-url)
   "Add a news item to the ELPA web pages.
 TITLE is the title of the news item.
@@ -111,11 +144,20 @@ PKG-INFO is the package info, see `package-buffer-info'.
 EXTENSION is the file extension, a string.  It can be either
 \"el\" or \"tar\".
 
+The variable `package-archive-upload-base' specifies the upload
+destination.  If this is nil, signal an error.
+
 Optional arg ARCHIVE-URL is the URL of the destination archive.
-If nil, the \"gnu\" archive is used."
-  (unless archive-url
-    (or (setq archive-url (cdr (assoc "gnu" package-archives)))
-       (error "No destination URL")))
+If it is non-nil, compute the new \"archive-contents\" file
+starting from the existing \"archive-contents\" at that URL.  In
+addition, if `package-update-news-on-upload' is non-nil, call
+`package--update-news' to add a news item at that URL.
+
+If ARCHIVE-URL is nil, compute the new \"archive-contents\" file
+from the \"archive-contents\" at `package-archive-upload-base',
+if it exists."
+  (unless package-archive-upload-base
+    (error "No destination specified in `package-archive-upload-base'"))
   (save-excursion
     (save-restriction
       (let* ((file-type (cond
@@ -131,21 +173,14 @@ If nil, the \"gnu\" archive is used."
             (pkg-version (aref pkg-info 3))
             (commentary (aref pkg-info 4))
             (split-version (version-to-list pkg-version))
-            (pkg-buffer (current-buffer))
+            (pkg-buffer (current-buffer)))
 
-            ;; Download latest archive-contents.
-            (buffer (url-retrieve-synchronously
-                     (concat archive-url "archive-contents"))))
-
-       ;; Parse archive-contents.
-       (set-buffer buffer)
-       (package-handle-response)
-       (re-search-forward "^$" nil 'move)
-       (forward-char)
-       (delete-region (point-min) (point))
-       (let ((contents (package-read-from-string
-                        (buffer-substring-no-properties (point-min)
-                                                        (point-max))))
+       ;; Get archive-contents from ARCHIVE-URL if it's non-nil, or
+       ;; from `package-archive-upload-base' otherwise.
+       (let ((contents (or (package--archive-contents-from-url archive-url)
+                           (package--archive-contents-from-file
+                            (concat package-archive-upload-base
+                                    "archive-contents"))))
              (new-desc (vector split-version requires desc file-type)))
          (if (> (car contents) package-archive-version)
              (error "Unrecognized archive version %d" (car contents)))
@@ -176,7 +211,6 @@ If nil, the \"gnu\" archive is used."
                                  (symbol-name pkg-name) "-readme.txt")))
 
          (set-buffer pkg-buffer)
-         (kill-buffer buffer)
          (write-region (point-min) (point-max)
                        (concat package-archive-upload-base
                                file-name "-" pkg-version
@@ -184,8 +218,10 @@ If nil, the \"gnu\" archive is used."
                        nil nil nil 'excl)
 
          ;; Write a news entry.
-         (package--update-news (concat file-name "." extension)
-                               pkg-version desc archive-url)
+         (and package-update-news-on-upload
+              archive-url
+              (package--update-news (concat file-name "." extension)
+                                    pkg-version desc archive-url))
 
          ;; special-case "package": write a second copy so that the
          ;; installer can easily find the latest version.
@@ -196,7 +232,9 @@ If nil, the \"gnu\" archive is used."
                            nil nil nil 'ask)))))))
 
 (defun package-upload-buffer ()
-  "Upload a single .el file to ELPA from the current buffer."
+  "Upload the current buffer as a single-file Emacs Lisp package.
+The variable `package-archive-upload-base' specifies the upload
+destination."
   (interactive)
   (save-excursion
     (save-restriction
@@ -205,6 +243,13 @@ If nil, the \"gnu\" archive is used."
        (package-upload-buffer-internal pkg-info "el")))))
 
 (defun package-upload-file (file)
+  "Upload the Emacs Lisp package FILE to the package archive.
+Interactively, prompt for FILE.  The package is considered a
+single-file package if FILE ends in \".el\", and a multi-file
+package if FILE ends in \".tar\".
+
+The variable `package-archive-upload-base' specifies the upload
+destination."
   (interactive "fPackage file name: ")
   (with-temp-buffer
     (insert-file-contents-literally file)
index ab5ba1bea56d924628287a1d24c3c7d69907b5c3..2552ad4eb6806e88c7db58e832ee9158700ac5d7 100644 (file)
@@ -220,10 +220,15 @@ If VERSION is nil, the package is not loaded (it is \"disabled\")."
 (defcustom package-archives '(("gnu" . "http://elpa.gnu.org/packages/"))
   "An alist of archives from which to fetch.
 The default value points to the GNU Emacs package repository.
-Each element has the form (ID . URL), where ID is an identifier
-string for an archive and URL is a http: URL (a string)."
+
+Each element has the form (ID . LOCATION).
+ ID is an archive name, as a string.
+ LOCATION specifies the base location for the archive.
+  If it starts with \"http:\", it is treated as a HTTP URL;
+  otherwise it should be an absolute directory name.
+  (Other types of URL are currently not supported.)"
   :type '(alist :key-type (string :tag "Archive name")
-                :value-type (string :tag "Archive URL"))
+                :value-type (string :tag "URL or directory name"))
   :risky t
   :group 'package
   :version "24.1")
@@ -617,8 +622,36 @@ Otherwise it uses an external `tar' program.
       (let ((load-path (cons pkg-dir load-path)))
        (byte-recompile-directory pkg-dir 0 t)))))
 
+(defmacro package--with-work-buffer (location file &rest body)
+  "Run BODY in a buffer containing the contents of FILE at LOCATION.
+LOCATION is the base location of a package archive, and should be
+one of the URLs (or file names) specified in `package-archives'.
+FILE is the name of a file relative to that base location.
+
+This macro retrieves FILE from LOCATION into a temporary buffer,
+and evaluates BODY while that buffer is current.  This work
+buffer is killed afterwards.  Return the last value in BODY."
+  `(let* ((http (string-match "\\`http:" ,location))
+         (buffer
+          (if http
+              (url-retrieve-synchronously (concat ,location ,file))
+            (generate-new-buffer "*package work buffer*"))))
+     (prog1
+        (with-current-buffer buffer
+          (if http
+              (progn (package-handle-response)
+                     (re-search-forward "^$" nil 'move)
+                     (forward-char)
+                     (delete-region (point-min) (point)))
+            (unless (file-name-absolute-p ,location)
+              (error "Archive location %s is not an absolute file name"
+                     ,location))
+            (insert-file-contents (expand-file-name ,file ,location)))
+          ,@body)
+       (kill-buffer buffer))))
+
 (defun package-handle-response ()
-  "Handle the response from the server.
+  "Handle the response from a `url-retrieve-synchronously' call.
 Parse the HTTP response and throw if an error occurred.
 The url package seems to require extra processing for this.
 This should be called in a `save-excursion', in the download buffer.
@@ -627,7 +660,6 @@ It will move point to somewhere in the headers."
   (require 'url-http)
   (let ((response (url-http-parse-response)))
     (when (or (< response 200) (>= response 300))
-      (display-buffer (current-buffer))
       (error "Error during download request:%s"
             (buffer-substring-no-properties (point) (progn
                                                       (end-of-line)
@@ -635,28 +667,17 @@ It will move point to somewhere in the headers."
 
 (defun package-download-single (name version desc requires)
   "Download and install a single-file package."
-  (let ((buffer (url-retrieve-synchronously
-                (concat (package-archive-url name)
-                        (symbol-name name) "-" version ".el"))))
-    (with-current-buffer buffer
-      (package-handle-response)
-      (re-search-forward "^$" nil 'move)
-      (forward-char)
-      (delete-region (point-min) (point))
-      (package-unpack-single (symbol-name name) version desc requires)
-      (kill-buffer buffer))))
+  (let ((location (package-archive-base name))
+       (file (concat (symbol-name name) "-" version ".el")))
+    (package--with-work-buffer location file
+      (package-unpack-single (symbol-name name) version desc requires))))
 
 (defun package-download-tar (name version)
   "Download and install a tar package."
-  (let ((tar-buffer (url-retrieve-synchronously
-                    (concat (package-archive-url name)
-                            (symbol-name name) "-" version ".tar"))))
-    (with-current-buffer tar-buffer
-      (package-handle-response)
-      (re-search-forward "^$" nil 'move)
-      (forward-char)
-      (package-unpack name version)
-      (kill-buffer tar-buffer))))
+  (let ((location (package-archive-base name))
+       (file (concat (symbol-name name) "-" version ".tar")))
+    (package--with-work-buffer location file
+      (package-unpack name version))))
 
 (defun package-installed-p (package &optional min-version)
   "Return true if PACKAGE, of VERSION or newer, is installed.
@@ -987,31 +1008,26 @@ The file can either be a tar file or an Emacs Lisp file."
       (error "Package `%s-%s' is a system package, not deleting"
             name version))))
 
-(defun package-archive-url (name)
+(defun package-archive-base (name)
   "Return the archive containing the package NAME."
   (let ((desc (cdr (assq (intern-soft name) package-archive-contents))))
     (cdr (assoc (aref desc (- (length desc) 1)) package-archives))))
 
 (defun package--download-one-archive (archive file)
-  "Download an archive file FILE from ARCHIVE, and cache it locally."
-  (let* ((archive-name (car archive))
-         (archive-url  (cdr archive))
-        (dir (expand-file-name "archives" package-user-dir))
-        (dir (expand-file-name archive-name dir))
-         (buffer (url-retrieve-synchronously (concat archive-url file))))
-    (with-current-buffer buffer
-      (package-handle-response)
-      (re-search-forward "^$" nil 'move)
-      (forward-char)
-      (delete-region (point-min) (point))
+  "Retrieve an archive file FILE from ARCHIVE, and cache it.
+ARCHIVE should be a cons cell of the form (NAME . LOCATION),
+similar to an entry in `package-alist'.  Save the cached copy to
+\"archives/NAME/archive-contents\" in `package-user-dir'."
+  (let* ((dir (expand-file-name "archives" package-user-dir))
+        (dir (expand-file-name (car archive) dir)))
+    (package--with-work-buffer (cdr archive) file
       ;; Read the retrieved buffer to make sure it is valid (e.g. it
       ;; may fetch a URL redirect page).
       (when (listp (read buffer))
        (make-directory dir t)
        (setq buffer-file-name (expand-file-name file dir))
        (let ((version-control 'never))
-         (save-buffer))))
-    (kill-buffer buffer)))
+         (save-buffer))))))
 
 (defun package-refresh-contents ()
   "Download the ELPA archive description if needed.
@@ -1176,27 +1192,21 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
            (while (re-search-forward "^\\(;+ ?\\)" nil t)
              (replace-match ""))))
       (let ((readme (expand-file-name (concat package-name "-readme.txt")
-                                     package-user-dir)))
+                                     package-user-dir))
+           readme-string)
        ;; For elpa packages, try downloading the commentary.  If that
        ;; fails, try an existing readme file in `package-user-dir'.
-       (cond ((let ((buffer (ignore-errors
-                              (url-retrieve-synchronously
-                               (concat (package-archive-url package)
-                                       package-name "-readme.txt"))))
-                    response)
-                (when buffer
-                  (with-current-buffer buffer
-                    (setq response (url-http-parse-response))
-                    (if (or (< response 200) (>= response 300))
-                        (setq response nil)
-                      (setq buffer-file-name
-                            (expand-file-name readme package-user-dir))
-                      (delete-region (point-min) (1+ url-http-end-of-headers))
-                      (save-buffer)))
-                  (when response
-                    (insert-buffer-substring buffer)
-                    (kill-buffer buffer)
-                    t))))
+       (cond ((condition-case nil
+                  (package--with-work-buffer (package-archive-base package)
+                                             (concat package-name "-readme.txt")
+                    (setq buffer-file-name
+                          (expand-file-name readme package-user-dir))
+                    (let ((version-control 'never))
+                      (save-buffer))
+                    (setq readme-string (buffer-string))
+                    t)
+                (error nil))
+              (insert readme-string))
              ((file-readable-p readme)
               (insert-file-contents readme)
               (goto-char (point-max))))))))
index 2300ebf721afe20a4990f809890a91387e456af4..e95bcac2a7066ad524711d3154650e39712d3ec4 100644 (file)
@@ -3,7 +3,7 @@
 ;; Copyright (C) 2010-2011  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
-;; Keywords: 
+;; Keywords:
 
 ;; This file is part of GNU Emacs.
 
 ;;   could be defined this way, as a shorthand for (pred (lambda (_) BOOLEXP)).
 ;;   But better would be if we could define new ways to match by having the
 ;;   extension provide its own `pcase--split-<foo>' thingy.
+;; - provide something like (setq VAR) so a var can be set rather than
+;;   let-bound.
+;; - provide a way to fallthrough to other cases.
+;; - try and be more clever to reduce the size of the decision tree, and
+;;   to reduce the number of leafs that need to be turned into function:
+;;   - first, do the tests shared by all remaining branches (it will have
+;;     to be performed anyway, so better so it first so it's shared).
+;;   - then choose the test that discriminates more (?).
 ;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to
 ;;   generate a lex-style DFA to decide whether to run E1 or E2.
 
@@ -65,12 +73,12 @@ If a SYMBOL is used twice in the same pattern (i.e. the pattern is
 QPatterns can take the following forms:
   (QPAT1 . QPAT2)      matches if QPAT1 matches the car and QPAT2 the cdr.
   ,UPAT                        matches if the UPattern UPAT matches.
-  STRING                       matches if the object is `equal' to STRING.
+  STRING               matches if the object is `equal' to STRING.
   ATOM                 matches if the object is `eq' to ATOM.
 QPatterns for vectors are not implemented yet.
 
 PRED can take the form
-  FUNCTION     in which case it gets called with one argument.
+  FUNCTION          in which case it gets called with one argument.
   (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments.
 A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION).
 PRED patterns can refer to variables bound earlier in the pattern.
@@ -222,6 +230,7 @@ of the form (UPAT EXP)."
 (defun pcase--if (test then else)
   (cond
    ((eq else :pcase--dontcare) then)
+   ((eq then :pcase--dontcare) (debug) else) ;Can/should this ever happen?
    ((eq (car-safe else) 'if)
     (if (equal test (nth 1 else))
         ;; Doing a test a second time: get rid of the redundancy.
@@ -236,6 +245,8 @@ of the form (UPAT EXP)."
     `(cond (,test ,then)
            ;; Doing a test a second time: get rid of the redundancy, as above.
            ,@(remove (assoc test else) (cdr else))))
+   ;; Invert the test if that lets us reduce the depth of the tree.
+   ((memq (car-safe then) '(if cond)) (pcase--if `(not ,test) else then))
    (t `(if ,test ,then ,else))))
 
 (defun pcase--upat (qpattern)
@@ -280,6 +291,22 @@ MATCH is the pattern that needs to be matched, of the form:
 (defun pcase--and (match matches)
   (if matches `(and ,match ,@matches) match))
 
+(defconst pcase-mutually-exclusive-predicates
+  '((symbolp . integerp)
+    (symbolp . numberp)
+    (symbolp . consp)
+    (symbolp . arrayp)
+    (symbolp . stringp)
+    (integerp . consp)
+    (integerp . arrayp)
+    (integerp . stringp)
+    (numberp . consp)
+    (numberp . arrayp)
+    (numberp . stringp)
+    (consp . arrayp)
+    (consp . stringp)
+    (arrayp . stringp)))
+
 (defun pcase--split-match (sym splitter match)
   (cond
     ((eq (car match) 'match)
@@ -340,8 +367,14 @@ MATCH is the pattern that needs to be matched, of the form:
       (cons `(and (match ,syma . ,(pcase--upat (car qpat)))
                   (match ,symd . ,(pcase--upat (cdr qpat))))
             :pcase--fail)))
-   ;; A QPattern but not for a cons, can only go the `else' side.
-   ((eq (car-safe pat) '\`) (cons :pcase--fail nil))))
+   ;; A QPattern but not for a cons, can only go to the `else' side.
+   ((eq (car-safe pat) '\`) (cons :pcase--fail nil))
+   ((and (eq (car-safe pat) 'pred)
+         (or (member (cons 'consp (cadr pat))
+                     pcase-mutually-exclusive-predicates)
+             (member (cons (cadr pat) 'consp)
+                     pcase-mutually-exclusive-predicates)))
+    (cons :pcase--fail nil))))
 
 (defun pcase--split-equal (elem pat)
   (cond
@@ -353,7 +386,12 @@ MATCH is the pattern that needs to be matched, of the form:
          ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
          ;;     (consp (cadr pat)))
          )
-    (cons :pcase--fail nil))))
+    (cons :pcase--fail nil))
+   ((and (eq (car-safe pat) 'pred)
+         (symbolp (cadr pat))
+         (get (cadr pat) 'side-effect-free)
+         (funcall (cadr pat) elem))
+    (cons :pcase--succeed nil))))
 
 (defun pcase--split-member (elems pat)
   ;; Based on pcase--split-equal.
@@ -370,13 +408,39 @@ MATCH is the pattern that needs to be matched, of the form:
          ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
          ;;     (consp (cadr pat)))
          )
-    (cons :pcase--fail nil))))
+    (cons :pcase--fail nil))
+   ((and (eq (car-safe pat) 'pred)
+         (symbolp (cadr pat))
+         (get (cadr pat) 'side-effect-free)
+         (let ((p (cadr pat)) (all t))
+           (dolist (elem elems)
+             (unless (funcall p elem) (setq all nil)))
+           all))
+    (cons :pcase--succeed nil))))
 
 (defun pcase--split-pred (upat pat)
   ;; FIXME: For predicates like (pred (> a)), two such predicates may
   ;; actually refer to different variables `a'.
-  (if (equal upat pat)
-      (cons :pcase--succeed :pcase--fail)))
+  (cond
+   ((equal upat pat) (cons :pcase--succeed :pcase--fail))
+   ((and (eq 'pred (car upat))
+         (eq 'pred (car-safe pat))
+         (or (member (cons (cadr upat) (cadr pat))
+                     pcase-mutually-exclusive-predicates)
+             (member (cons (cadr pat) (cadr upat))
+                     pcase-mutually-exclusive-predicates)))
+    (cons :pcase--fail nil))
+   ;; ((and (eq 'pred (car upat))
+   ;;       (eq '\` (car-safe pat))
+   ;;       (symbolp (cadr upat))
+   ;;       (or (symbolp (cadr pat)) (stringp (cadr pat)) (numberp (cadr pat)))
+   ;;       (get (cadr upat) 'side-effect-free)
+   ;;       (progn (message "Trying predicate %S" (cadr upat))
+   ;;              (ignore-errors
+   ;;                (funcall (cadr upat) (cadr pat)))))
+   ;;  (message "Simplify pred %S against %S" upat pat)
+   ;;  (cons nil :pcase--fail))
+   ))
 
 (defun pcase--fgrep (vars sexp)
   "Check which of the symbols VARS appear in SEXP."
@@ -391,7 +455,7 @@ MATCH is the pattern that needs to be matched, of the form:
 ;; bootstrapping problems.
 (defun pcase--u1 (matches code vars rest)
   "Return code that runs CODE (with VARS) if MATCHES match.
-and otherwise defers to REST which is a list of branches of the form
+Otherwise, it defers to REST which is a list of branches of the form
 \(ELSE-MATCH ELSE-CODE . ELSE-VARS)."
   ;; Depending on the order in which we choose to check each of the MATCHES,
   ;; the resulting tree may be smaller or bigger.  So in general, we'd want
@@ -452,8 +516,9 @@ and otherwise defers to REST which is a list of branches of the form
        ((eq upat 'dontcare) :pcase--dontcare)
        ((functionp upat)  (error "Feature removed, use (pred %s)" upat))
        ((memq (car-safe upat) '(guard pred))
+        (if (eq (car upat) 'pred) (put sym 'pcase-used t))
         (let* ((splitrest
-                (pcase--split-rest
+            (pcase--split-rest
                  sym (apply-partially #'pcase--split-pred upat) rest))
                (then-rest (car splitrest))
                (else-rest (cdr splitrest)))
@@ -480,6 +545,7 @@ and otherwise defers to REST which is a list of branches of the form
                      (pcase--u1 matches code vars then-rest)
                      (pcase--u else-rest))))
        ((symbolp upat)
+        (put sym 'pcase-used t)
         (if (not (assq upat vars))
             (pcase--u1 matches code (cons (cons upat sym) vars) rest)
           ;; Non-linear pattern.  Turn it into an `eq' test.
@@ -487,6 +553,7 @@ and otherwise defers to REST which is a list of branches of the form
                            matches)
                      code vars rest)))
        ((eq (car-safe upat) '\`)
+        (put sym 'pcase-used t)
         (pcase--q1 sym (cadr upat) matches code vars rest))
        ((eq (car-safe upat) 'or)
         (let ((all (> (length (cdr upat)) 1))
@@ -546,7 +613,7 @@ and otherwise defers to REST which is a list of branches of the form
 
 (defun pcase--q1 (sym qpat matches code vars rest)
   "Return code that runs CODE if SYM matches QPAT and if MATCHES match.
-and if not, defers to REST which is a list of branches of the form
+Otherwise, it defers to REST which is a list of branches of the form
 \(OTHER_MATCH OTHER-CODE . OTHER-VARS)."
   (cond
    ((eq (car-safe qpat) '\,) (error "Can't use `,UPATTERN"))
@@ -555,22 +622,28 @@ and if not, defers to REST which is a list of branches of the form
     ;; FIXME.
     (error "Vector QPatterns not implemented yet"))
    ((consp qpat)
-    (let ((syma (make-symbol "xcar"))
-          (symd (make-symbol "xcdr")))
-      (let* ((splitrest (pcase--split-rest
-                         sym
-                         (apply-partially #'pcase--split-consp syma symd)
-                         rest))
-             (then-rest (car splitrest))
-             (else-rest (cdr splitrest)))
-        (pcase--if `(consp ,sym)
-                   `(let ((,syma (car ,sym))
-                          (,symd (cdr ,sym)))
-                      ,(pcase--u1 `((match ,syma . ,(pcase--upat (car qpat)))
-                                    (match ,symd . ,(pcase--upat (cdr qpat)))
-                                    ,@matches)
-                                  code vars then-rest))
-                   (pcase--u else-rest)))))
+    (let* ((syma (make-symbol "xcar"))
+           (symd (make-symbol "xcdr"))
+           (splitrest (pcase--split-rest
+                       sym
+                       (apply-partially #'pcase--split-consp syma symd)
+                       rest))
+           (then-rest (car splitrest))
+           (else-rest (cdr splitrest))
+           (then-body (pcase--u1 `((match ,syma . ,(pcase--upat (car qpat)))
+                                   (match ,symd . ,(pcase--upat (cdr qpat)))
+                                   ,@matches)
+                                 code vars then-rest)))
+      (pcase--if
+       `(consp ,sym)
+       ;; We want to be careful to only add bindings that are used.
+       ;; The byte-compiler could do that for us, but it would have to pay
+       ;; attention to the `consp' test in order to figure out that car/cdr
+       ;; can't signal errors and our byte-compiler is not that clever.
+       `(let (,@(if (get syma 'pcase-used) `((,syma (car ,sym))))
+              ,@(if (get symd 'pcase-used) `((,symd (cdr ,sym)))))
+          ,then-body)
+       (pcase--u else-rest))))
    ((or (integerp qpat) (symbolp qpat) (stringp qpat))
       (let* ((splitrest (pcase--split-rest
                          sym (apply-partially 'pcase--split-equal qpat) rest))
index 22795a47d9809dafcda9fe81a08a00e814af0547..6033648298dd42552495cc16959460b52b669361 100644 (file)
@@ -88,7 +88,8 @@ If the buffer is locked, signal error and display its name."
   (if emacs-lock-buffer-locked
       (setq emacs-lock-from-exiting t)))
 
-(add-hook 'kill-emacs-hook 'check-emacs-lock)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'check-emacs-lock))
 (add-hook 'kill-buffer-hook 'emacs-lock-check-buffer-lock)
 (add-hook 'shell-mode-hook 'emacs-lock-was-buffer-locked)
 (add-hook 'shell-mode-hook 'emacs-lock-shell-sentinel)
index fae249da9d3bb98aa0af1c23c7305314413e6ecf..5daef7f96662f4621591b8237378c0b79df73398 100644 (file)
@@ -776,7 +776,7 @@ Vi's prefix argument will be used.  Otherwise, the prefix argument passed to
                  (viper-copy-event (viper-seq-last-elt key))))
 
          (if (commandp com)
-             ;; pretend that current state is the state we excaped to
+             ;; pretend that current state is the state we escaped to
              (let ((viper-current-state state))
                (setq prefix-arg (or prefix-arg arg))
                (command-execute com)))
@@ -2375,7 +2375,7 @@ problems."
     (if (eq viper-intermediate-command 'viper-repeat)
        (viper-change-subr (mark t) (point))
       (viper-change (mark t) (point)))
-    ;; com is set to ?r when we repeat this comand with dot
+    ;; com is set to ?r when we repeat this command with dot
     (viper-set-destructive-command (list 'viper-substitute val ?r nil nil nil))
     ))
 
index 2996fee9bcb8eec87cdb47929df5c4b361ab0a49..e05828dfeeaa38ae580e415287b3ecad970ae896 100644 (file)
@@ -1,3 +1,7 @@
+2011-03-04  Julien Danjou  <julien@danjou.info>
+
+       * erc-track.el (erc-track-visibility): Fix :type.  (Bug#6369)
+
 2011-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * erc-list.el (erc-list-menu-mode-map): Move initialization
index 962acd5bfc60cb08e2105179360b85c60f67193e..4016586abc786fe117581ac7bb7244c7a0ad304e 100644 (file)
 
        * debian/maint/conffiles.in: new file
 
-       * debian/maint/conffiles: superceded by conffiles.in
+       * debian/maint/conffiles: superseded by conffiles.in
 
-       * debian/scripts/startup: superceded by startup.erc
+       * debian/scripts/startup: superseded by startup.erc
 
 2001-10-25  Mario Lang  <mlang@delysid.org>
 
 
        * debian/maint/postinst, debian/maint/prerm, debian/scripts/install, 
          debian/scripts/remove:
-       removed, superceded by it's .in counterpart
+       removed, superseded by its .in counterpart
 
 2001-10-25  Mario Lang  <mlang@delysid.org>
 
index a89244f695da7effda8b7fd347914a4dd1acac0a..28c1ced91c6d7dc0a726595557616db675e4c176 100644 (file)
@@ -84,8 +84,8 @@ Activity means that there was no user input in the last 10 seconds."
   :type  '(choice (const :tag "All frames" t)
                  (const :tag "All visible frames" visible)
                  (const :tag "Only the selected frame" nil)
-                 (const :tag "Only the selected frame if it was active"
-                        active)))
+                 (const :tag "Only the selected frame if it is visible"
+                        selected-visible)))
 
 (defcustom erc-track-exclude nil
   "A list targets (channel names or query targets) which should not be tracked."
index aa138cb4dcbae2f87dc58f50ba848efd6ec262d3..4e1dbd410454bbadd5d8e9254fcb864e0d6159cd 100644 (file)
@@ -117,8 +117,9 @@ gained by using this module."
   ;; :link '(custom-manual "(eshell)Auto-correction of bad commands")
   :group 'eshell-alias)
 
-(defcustom eshell-alias-load-hook '(eshell-alias-initialize)
+(defcustom eshell-alias-load-hook nil
   "A hook that gets run when `eshell-alias' is loaded."
+  :version "24.1"                      ; removed eshell-alias-initialize
   :type 'hook
   :group 'eshell-alias)
 
@@ -156,7 +157,7 @@ command, which will automatically write them to the file named by
 (defun eshell/alias (&optional alias &rest definition)
   "Define an ALIAS in the user's alias list using DEFINITION."
   (if (not alias)
-      (eshell-for alias eshell-command-aliases-list
+      (dolist (alias eshell-command-aliases-list)
        (eshell-print (apply 'format "alias %s %s\n" alias)))
     (if (not definition)
        (setq eshell-command-aliases-list
@@ -238,7 +239,7 @@ command, which will automatically write them to the file named by
   "Find all possible completions for NAME.
 These are all the command aliases which begin with NAME."
   (let (completions)
-    (eshell-for alias eshell-command-aliases-list
+    (dolist (alias eshell-command-aliases-list)
       (if (string-match (concat "^" name) (car alias))
          (setq completions (cons (car alias) completions))))
     completions))
index b2ebde98cee71460fd5ba544283b4ae262f1eb9f..ce987f132e3e3dda104fbc5583992dc86c3acf48 100644 (file)
@@ -64,8 +64,9 @@ This can be any sexp, and should end with at least two newlines."
 
 (put 'eshell-banner-message 'risky-local-variable t)
 
-(defcustom eshell-banner-load-hook '(eshell-banner-initialize)
+(defcustom eshell-banner-load-hook nil
   "A list of functions to run when `eshell-banner' is loaded."
+  :version "24.1"                       ; removed eshell-banner-initialize
   :type 'hook
   :group 'eshell-banner)
 
@@ -81,14 +82,6 @@ This can be any sexp, and should end with at least two newlines."
       (assert msg)
       (eshell-interactive-print msg))))
 
-(eshell-deftest banner banner-displayed
-  "Startup banner is displayed at point-min"
-  (assert eshell-banner-message)
-  (let ((msg (eval eshell-banner-message)))
-    (assert msg)
-    (goto-char (point-min))
-    (looking-at msg)))
-
 (provide 'em-banner)
 
 ;; Local Variables:
index f3f104c1ede6f498f30b795d476bcfe238ea4ce4..c551684210cd5fa5c10c8022d9c93b7dc116e74d 100644 (file)
@@ -84,8 +84,9 @@ variable names, arguments, etc."
 
 ;;; User Variables:
 
-(defcustom eshell-cmpl-load-hook '(eshell-cmpl-initialize)
+(defcustom eshell-cmpl-load-hook nil
   "A list of functions to run when `eshell-cmpl' is loaded."
+  :version "24.1"                      ; removed eshell-cmpl-initialize
   :type 'hook
   :group 'eshell-cmpl)
 
index 64555ab15efa7f783337dc215aeb34f5ecae81ef..1aa2c34c395e13bce5dff6811a362db829984634 100644 (file)
@@ -58,8 +58,9 @@ they lack somewhat in feel from the typical shell equivalents."
 
 ;;; User Variables:
 
-(defcustom eshell-dirs-load-hook '(eshell-dirs-initialize)
+(defcustom eshell-dirs-load-hook nil
   "A hook that gets run when `eshell-dirs' is loaded."
+  :version "24.1"                      ; removed eshell-dirs-initialize
   :type 'hook
   :group 'eshell-dirs)
 
@@ -233,7 +234,7 @@ Thus, this does not include the current directory.")
 
 (defun eshell-save-some-last-dir ()
   "Save the list-dir-ring for any open Eshell buffers."
-  (eshell-for buf (buffer-list)
+  (dolist (buf (buffer-list))
     (if (buffer-live-p buf)
        (with-current-buffer buf
          (if (and eshell-mode
index 2a565c5c827a124602f9d12a799b9cd8fa91c5a1..732c6c05bfead62c2e3e6821df8c24efeff18ec2 100644 (file)
@@ -61,8 +61,9 @@ by zsh for filename generation."
 
 ;;; User Variables:
 
-(defcustom eshell-glob-load-hook '(eshell-glob-initialize)
+(defcustom eshell-glob-load-hook nil
   "A list of functions to run when `eshell-glob' is loaded."
+  :version "24.1"                      ; removed eshell-glob-initialize
   :type 'hook
   :group 'eshell-glob)
 
index 5ec529f4b8f17ea49770f74d85d48d222c8a5f04..993e9d63a94a8b7cd30178ce349819bfb652ac98 100644 (file)
@@ -70,8 +70,9 @@
 
 ;;; User Variables:
 
-(defcustom eshell-hist-load-hook '(eshell-hist-initialize)
+(defcustom eshell-hist-load-hook nil
   "A list of functions to call when loading `eshell-hist'."
+  :version "24.1"                      ; removed eshell-hist-initialize
   :type 'hook
   :group 'eshell-hist)
 
@@ -292,7 +293,7 @@ element, regardless of any text on the command line.  In that case,
 
 (defun eshell-save-some-history ()
   "Save the history for any open Eshell buffers."
-  (eshell-for buf (buffer-list)
+  (dolist (buf (buffer-list))
     (if (buffer-live-p buf)
        (with-current-buffer buf
          (if (and eshell-mode
@@ -730,7 +731,7 @@ matched."
          (narrow-to-region here (point))
          (goto-char (point-min))
          (let ((modifiers (cdr (eshell-parse-modifiers))))
-           (eshell-for mod modifiers
+           (dolist (mod modifiers)
              (setq hist (funcall mod hist)))
            hist))
       (delete-region here (point)))))
index 7714629f2fa95e2be5efc469bee9594caac5b98a..4ef259dee4b98733fb7c4d69d14d08a67f0efafb 100644 (file)
@@ -561,7 +561,7 @@ relative to that directory."
          (when (or (eq listing-style 'long-listing) show-size)
            (let ((total 0.0))
              (setq size-width 0)
-             (eshell-for e entries
+             (dolist (e entries)
                (if (nth 7 (cdr e))
                    (setq total (+ total (nth 7 (cdr e)))
                          size-width
@@ -651,7 +651,7 @@ Each member of FILES is either a string or a cons cell of the form
               (not (eq eshell-in-pipeline-p 'last))
               (not (eq listing-style 'by-lines)))
          (memq listing-style '(long-listing single-column)))
-      (eshell-for file files
+      (dolist (file files)
        (if file
            (eshell-ls-file file size-width copy-fileinfo)))
     (let ((f files)
@@ -676,7 +676,7 @@ Each member of FILES is either a string or a cons cell of the form
              (setcdr f (cddr f))))))
       (if (not show-size)
          (setq display-files (mapcar 'eshell-ls-annotate files))
-       (eshell-for file files
+       (dolist (file files)
          (let* ((str (eshell-ls-printable-size (nth 7 (cdr file)) t))
                 (len (length str)))
            (if (< len size-width)
@@ -696,7 +696,7 @@ Each member of FILES is either a string or a cons cell of the form
             (columns (length col-widths))
             (col-index 1)
             need-return)
-       (eshell-for file display-files
+       (dolist (file display-files)
          (let ((name
                 (if (car file)
                     (if show-size
@@ -731,7 +731,7 @@ ROOT-DIR, if non-nil, specifies the root directory of the listing, to
 which non-absolute directory names will be made relative if ever they
 need to be printed."
   (let (dirs files show-names need-return (size-width 0))
-    (eshell-for entry entries
+    (dolist (entry entries)
       (if (and (not dir-literal)
               (or (eshell-ls-filetype-p (cdr entry) ?d)
                   (and (eshell-ls-filetype-p (cdr entry) ?l)
@@ -757,7 +757,7 @@ need to be printed."
       (setq need-return t))
     (setq show-names (or show-recursive
                         (> (+ (length files) (length dirs)) 1)))
-    (eshell-for dir (eshell-ls-sort-entries dirs)
+    (dolist (dir (eshell-ls-sort-entries dirs))
       (if (and need-return (not dir-literal))
          (funcall insert-func "\n"))
       (eshell-ls-dir dir show-names
index 33085c067fdf216c14e456cb4f7e7884215ad079..f3027ea9b5e9f5bfbd0947c2e6e6426483245b3c 100644 (file)
@@ -59,8 +59,9 @@ ordinary strings."
 
 ;;; User Variables:
 
-(defcustom eshell-pred-load-hook '(eshell-pred-initialize)
+(defcustom eshell-pred-load-hook nil
   "A list of functions to run when `eshell-pred' is loaded."
+  :version "24.1"                      ; removed eshell-pred-initialize
   :type 'hook
   :group 'eshell-pred)
 
index 448d2cdf3030810a234a84cd405a9ae797507d2d..3e87acc6d1ebcf94cba8b948eb3cb3edc064b6ce 100644 (file)
@@ -37,8 +37,9 @@ as is common with most shells."
 
 ;;; User Variables:
 
-(defcustom eshell-prompt-load-hook '(eshell-prompt-initialize)
+(defcustom eshell-prompt-load-hook nil
   "A list of functions to call when loading `eshell-prompt'."
+  :version "24.1"                      ; removed eshell-prompt-initialize
   :type 'hook
   :group 'eshell-prompt)
 
index 6def23e1b71e895c9615f94b62b66ccdf7162601..2c346dfcd3da31035473f734409cc654586cf70d 100644 (file)
@@ -41,8 +41,9 @@ the behavior of normal shells while the user editing new input text."
 
 ;;; User Variables:
 
-(defcustom eshell-rebind-load-hook '(eshell-rebind-initialize)
+(defcustom eshell-rebind-load-hook nil
   "A list of functions to call when loading `eshell-rebind'."
+  :version "24.1"                      ; removed eshell-rebind-initialize
   :type 'hook
   :group 'eshell-rebind)
 
index ed4ad1c0712d3b4d8146166ee305a364d31a930d..d76e19cdd07127cf8dcaad2cb14137488ccf39e5 100644 (file)
@@ -34,8 +34,9 @@ commands, as a script file."
 
 ;;; User Variables:
 
-(defcustom eshell-script-load-hook '(eshell-script-initialize)
+(defcustom eshell-script-load-hook nil
   "A list of functions to call when loading `eshell-script'."
+  :version "24.1"                       ; removed eshell-script-initialize
   :type 'hook
   :group 'eshell-script)
 
index 2c54930e4395f9de7152fd1e9142e33432bdd23d..f08fec8f8fa8b35c447cce61d054a6cb4f308aa8 100644 (file)
@@ -84,8 +84,9 @@ it to get a real sense of how it works."
 
 ;;; User Variables:
 
-(defcustom eshell-smart-load-hook '(eshell-smart-initialize)
+(defcustom eshell-smart-load-hook nil
   "A list of functions to call when loading `eshell-smart'."
+  :version "24.1"                      ; removed eshell-smart-initialize
   :type 'hook
   :group 'eshell-smart)
 
index be394ba5b22f2be06fa3bd5ac16d54fd6c7d5377..7d5fbbeabeb26d7cc09852bc3b714ee5592c702f 100644 (file)
@@ -46,8 +46,9 @@ which commands are considered visual in nature."
 
 ;;; User Variables:
 
-(defcustom eshell-term-load-hook '(eshell-term-initialize)
+(defcustom eshell-term-load-hook nil
   "A list of functions to call when loading `eshell-term'."
+  :version "24.1"                      ; removed eshell-term-initialize
   :type 'hook
   :group 'eshell-term)
 
index dc5650d240e9aeccd16ddaa8a2d1f28f8d93f972..707f2ebc2ced0652c2840b535cf2ea6a3e6bf682 100644 (file)
@@ -53,8 +53,9 @@ by name)."
   :tag "UNIX commands in Lisp"
   :group 'eshell-module)
 
-(defcustom eshell-unix-load-hook '(eshell-unix-initialize)
+(defcustom eshell-unix-load-hook nil
   "A list of functions to run when `eshell-unix' is loaded."
+  :version "24.1"                      ; removed eshell-unix-initialize
   :type 'hook
   :group 'eshell-unix)
 
@@ -587,7 +588,7 @@ symlink, then revert to the system's definition of cat."
   (setq args (eshell-stringify-list (eshell-flatten-list args)))
   (if (or eshell-in-pipeline-p
          (catch 'special
-           (eshell-for arg args
+           (dolist (arg args)
              (unless (or (and (stringp arg)
                               (> (length arg) 0)
                               (eq (aref arg 0) ?-))
@@ -610,12 +611,12 @@ symlink, then revert to the system's definition of cat."
        :show-usage
        :usage "[OPTION] FILE...
 Concatenate FILE(s), or standard input, to standard output.")
-     (eshell-for file args
+     (dolist (file args)
        (if (string= file "-")
           (throw 'eshell-external
                  (eshell-external-command "cat" args))))
      (let ((curbuf (current-buffer)))
-       (eshell-for file args
+       (dolist (file args)
         (with-temp-buffer
           (insert-file-contents file)
           (goto-char (point-min))
@@ -851,7 +852,7 @@ external command."
   (let ((ext-du (eshell-search-path "du")))
     (if (and ext-du
             (not (catch 'have-ange-path
-                   (eshell-for arg args
+                   (dolist (arg args)
                      (if (string-equal
                           (file-remote-p (expand-file-name arg) 'method) "ftp")
                          (throw 'have-ange-path t))))))
@@ -1055,7 +1056,7 @@ Become another USER during a login session.")
                            "localhost"))
                  (dir (or (file-remote-p default-directory 'localname)
                           (expand-file-name default-directory))))
-             (eshell-for arg args
+             (dolist (arg args)
                (if (string-equal arg "-") (setq login t) (setq user arg)))
              ;; `eshell-eval-using-options' does not handle "-".
              (if (member "-" orig-args) (setq login t))
index f42440ae4ec73982a0ffcfe1a9df63b1a755caaf..1fb8b7f4c3245d57c463998c5bab1e89a2046d1b 100644 (file)
@@ -117,8 +117,9 @@ treated as a literal character."
 
 ;;; User Variables:
 
-(defcustom eshell-arg-load-hook '(eshell-arg-initialize)
+(defcustom eshell-arg-load-hook nil
   "A hook that gets run when `eshell-arg' is loaded."
+  :version "24.1"                     ; removed eshell-arg-initialize
   :type 'hook
   :group 'eshell-arg)
 
index 0567beb9a539716594dbb476406a90c440edff29..bdcdc4532721a1d22f062fe448c07e4a7afa55aa 100644 (file)
@@ -229,8 +229,9 @@ return non-nil if the command is complex."
 
 ;;; User Variables:
 
-(defcustom eshell-cmd-load-hook '(eshell-cmd-initialize)
+(defcustom eshell-cmd-load-hook nil
   "A hook that gets run when `eshell-cmd' is loaded."
+  :version "24.1"                     ; removed eshell-cmd-initialize
   :type 'hook
   :group 'eshell-cmd)
 
@@ -319,18 +320,6 @@ otherwise t.")
     (add-hook 'pcomplete-try-first-hook
              'eshell-complete-lisp-symbols nil t)))
 
-(eshell-deftest var last-result-var
-  "\"last result\" variable"
-  (eshell-command-result-p "+ 1 2; + $$ 2" "3\n5\n"))
-
-(eshell-deftest var last-result-var2
-  "\"last result\" variable"
-  (eshell-command-result-p "+ 1 2; + $$ $$" "3\n6\n"))
-
-(eshell-deftest var last-arg-var
-  "\"last arg\" variable"
-  (eshell-command-result-p "+ 1 2; + $_ 4" "3\n6\n"))
-
 (defun eshell-complete-lisp-symbols ()
   "If there is a user reference, complete it."
   (let ((arg (pcomplete-actual-arg)))
@@ -440,32 +429,12 @@ hooks should be run before and after the command."
           (eq (caar terms) 'eshell-command-to-value))
       (car (cdar terms))))
 
-(eshell-deftest cmd lisp-command
-  "Evaluate Lisp command"
-  (eshell-command-result-p "(+ 1 2)" "3"))
-
-(eshell-deftest cmd lisp-command-args
-  "Evaluate Lisp command (ignore args)"
-  (eshell-command-result-p "(+ 1 2) 3" "3"))
-
 (defun eshell-rewrite-initial-subcommand (terms)
   "Rewrite a subcommand in initial position, such as '{+ 1 2}'."
   (if (and (listp (car terms))
           (eq (caar terms) 'eshell-as-subcommand))
       (car terms)))
 
-(eshell-deftest cmd subcommand
-  "Run subcommand"
-  (eshell-command-result-p "{+ 1 2}" "3\n"))
-
-(eshell-deftest cmd subcommand-args
-  "Run subcommand (ignore args)"
-  (eshell-command-result-p "{+ 1 2} 3" "3\n"))
-
-(eshell-deftest cmd subcommand-lisp
-  "Run subcommand + Lisp form"
-  (eshell-command-result-p "{(+ 1 2)}" "3\n"))
-
 (defun eshell-rewrite-named-command (terms)
   "If no other rewriting rule transforms TERMS, assume a named command."
   (let ((sym (if eshell-in-pipeline-p
@@ -477,10 +446,6 @@ hooks should be run before and after the command."
        (list sym cmd (append (list 'list) (cdr terms)))
       (list sym cmd))))
 
-(eshell-deftest cmd named-command
-  "Execute named command"
-  (eshell-command-result-p "+ 1 2" "3\n"))
-
 (defvar eshell-command-body)
 (defvar eshell-test-body)
 
@@ -987,7 +952,7 @@ at the moment are:
         (not (member name eshell-complex-commands))
         (catch 'simple
           (progn
-           (eshell-for pred eshell-complex-commands
+           (dolist (pred eshell-complex-commands)
              (if (and (functionp pred)
                       (funcall pred name))
                  (throw 'simple nil)))
@@ -1165,7 +1130,7 @@ be finished later after the completion of an asynchronous subprocess."
        (if (and (eq (car form) 'let)
                 (not (eq (car (cadr args)) 'eshell-do-eval)))
            (eshell-manipulate "evaluating let args"
-             (eshell-for letarg (car args)
+             (dolist (letarg (car args))
                (if (and (listp letarg)
                         (not (eq (cadr letarg) 'quote)))
                    (setcdr letarg
@@ -1241,7 +1206,7 @@ be finished later after the completion of an asynchronous subprocess."
 
 (defun eshell/which (command &rest names)
   "Identify the COMMAND, and where it is located."
-  (eshell-for name (cons command names)
+  (dolist (name (cons command names))
     (let (program alias direct)
       (if (eq (aref name 0) eshell-explicit-command-char)
          (setq name (substring name 1)
index f0b9a5eb083af1d079d9b5e606198a06774e1968..3acbeac0b891d3d85de6e4cb71e026bf1e9f157f 100644 (file)
@@ -46,8 +46,9 @@ loaded into memory, thus beginning a new process."
 
 ;;; User Variables:
 
-(defcustom eshell-ext-load-hook '(eshell-ext-initialize)
+(defcustom eshell-ext-load-hook nil
   "A hook that gets run when `eshell-ext' is loaded."
+  :version "24.1"                      ; removed eshell-ext-initialize
   :type 'hook
   :group 'eshell-ext)
 
@@ -202,7 +203,7 @@ causing the user to wonder if anything's really going on..."
 (defun eshell-external-command (command args)
   "Insert output from an external COMMAND, using ARGS."
   (setq args (eshell-stringify-list (eshell-flatten-list args)))
-  (if (string-equal (file-remote-p default-directory 'method) "ftp")
+  (if (file-remote-p default-directory)
       (eshell-remote-command command args))
   (let ((interp (eshell-find-interpreter command)))
     (assert interp)
@@ -263,7 +264,7 @@ line of the form #!<interp>."
   (let ((finterp
         (catch 'found
           (ignore
-           (eshell-for possible eshell-interpreter-alist
+           (dolist (possible eshell-interpreter-alist)
              (cond
               ((functionp (car possible))
                (and (funcall (car possible) file)
index ef8966f1d7d16dff01d3fcfcb7260badd70ee6f5..71fae34b360fd4a8dcf15c93e079c54854a11cb5 100644 (file)
@@ -71,8 +71,9 @@ though they were files."
 
 ;;; User Variables:
 
-(defcustom eshell-io-load-hook '(eshell-io-initialize)
+(defcustom eshell-io-load-hook nil
   "A hook that gets run when `eshell-io' is loaded."
+  :version "24.1"                      ; removed eshell-io-initialize
   :type 'hook
   :group 'eshell-io)
 
index 3735ee35fd5325a685ac36a68f347c196e86a4a4..10623dba8e31d34f5163033ff309cff7aa61c814 100644 (file)
@@ -89,9 +89,10 @@ That is to say, the first time during an Emacs session."
   :type 'hook
   :group 'eshell-mode)
 
-(defcustom eshell-exit-hook '(eshell-query-kill-processes)
+(defcustom eshell-exit-hook nil
   "A hook that is run whenever `eshell' is exited.
 This hook is only run if exiting actually kills the buffer."
+  :version "24.1"                       ; removed eshell-query-kill-processes
   :type 'hook
   :group 'eshell-mode)
 
@@ -287,6 +288,17 @@ This is used by `eshell-watch-for-password-prompt'."
 
 ;;; User Functions:
 
+(defun eshell-kill-buffer-function ()
+  "Function added to `kill-buffer-hook' in Eshell buffers.
+This runs the function `eshell-kill-processes-on-exit',
+and the hook `eshell-exit-hook'."
+  ;; It's fine to run this unconditionally since it can be customized
+  ;; via the `eshell-kill-processes-on-exit' variable.
+  (and (fboundp 'eshell-query-kill-processes)
+       (not (memq 'eshell-query-kill-processes eshell-exit-hook))
+       (eshell-query-kill-processes))
+  (run-hooks 'eshell-exit-hook))
+
 ;;;###autoload
 (defun eshell-mode ()
   "Emacs shell interactive mode.
@@ -389,7 +401,7 @@ This is used by `eshell-watch-for-password-prompt'."
   ;; load extension modules into memory.  This will cause any global
   ;; variables they define to be visible, since some of the core
   ;; modules sometimes take advantage of their functionality if used.
-  (eshell-for module eshell-modules-list
+  (dolist (module eshell-modules-list)
     (let ((module-fullname (symbol-name module))
          module-shortname)
       (if (string-match "^eshell-\\(.*\\)" module-fullname)
@@ -403,17 +415,15 @@ This is used by `eshell-watch-for-password-prompt'."
   (unless (file-exists-p eshell-directory-name)
     (eshell-make-private-directory eshell-directory-name t))
 
-  ;; load core Eshell modules for this session
-  (eshell-for module (eshell-subgroups 'eshell)
-    (run-hooks (intern-soft (concat (symbol-name module)
-                                   "-load-hook"))))
-
-  ;; load extension modules for this session
-  (eshell-for module eshell-modules-list
-    (let ((load-hook (intern-soft (concat (symbol-name module)
-                                         "-load-hook"))))
-      (if (and load-hook (boundp load-hook))
-         (run-hooks load-hook))))
+  ;; Load core Eshell modules, then extension modules, for this session.
+  (dolist (module (append (eshell-subgroups 'eshell) eshell-modules-list))
+    (let ((load-hook (intern-soft (format "%s-load-hook" module)))
+          (initfunc (intern-soft (format "%s-initialize" module))))
+      (when (and load-hook (boundp load-hook))
+        (if (memq initfunc (symbol-value load-hook)) (setq initfunc nil))
+        (run-hooks load-hook))
+      ;; So we don't need the -initialize functions on the hooks (b#5375).
+      (and initfunc (fboundp initfunc) (funcall initfunc))))
 
   (if eshell-send-direct-to-subprocesses
       (add-hook 'pre-command-hook 'eshell-intercept-commands t t))
@@ -428,10 +438,7 @@ This is used by `eshell-watch-for-password-prompt'."
     (add-hook 'eshell-pre-command-hook 'eshell-command-started nil t)
     (add-hook 'eshell-post-command-hook 'eshell-command-finished nil t))
 
-  (add-hook 'kill-buffer-hook
-           (function
-            (lambda ()
-              (run-hooks 'eshell-exit-hook))) t t)
+  (add-hook 'kill-buffer-hook 'eshell-kill-buffer-function t t)
 
   (if eshell-first-time-p
       (run-hooks 'eshell-first-time-mode-hook))
@@ -440,19 +447,6 @@ This is used by `eshell-watch-for-password-prompt'."
 
 (put 'eshell-mode 'mode-class 'special)
 
-(eshell-deftest mode major-mode
-  "Major mode is correct"
-  (eq major-mode 'eshell-mode))
-
-(eshell-deftest mode eshell-mode-variable
-  "`eshell-mode' is true"
-  (eq eshell-mode t))
-
-(eshell-deftest var window-height
-  "LINES equals window height"
-  (let ((eshell-stringify-t t))
-    (eshell-command-result-p "= $LINES (window-height)" "t\n")))
-
 (defun eshell-command-started ()
   "Indicate in the modeline that a command has started."
   (setq eshell-command-running-string "**")
@@ -463,13 +457,6 @@ This is used by `eshell-watch-for-password-prompt'."
   (setq eshell-command-running-string "--")
   (force-mode-line-update))
 
-(eshell-deftest mode command-running-p
-  "Modeline shows no command running"
-  (or (featurep 'xemacs)
-      (not eshell-status-in-modeline)
-      (and (memq 'eshell-command-running-string mode-line-format)
-          (equal eshell-command-running-string "--"))))
-
 ;;; Internal Functions:
 
 (defun eshell-toggle-direct-send ()
@@ -539,20 +526,6 @@ This is used by `eshell-watch-for-password-prompt'."
             (= (1+ pos) limit))
        (forward-char 1))))
 
-(eshell-deftest arg forward-arg
-  "Move across command arguments"
-  (eshell-insert-command "echo $(+ 1 (- 4 3)) \"alpha beta\" file" 'ignore)
-  (let ((here (point)) begin valid)
-    (eshell-bol)
-    (setq begin (point))
-    (eshell-forward-argument 4)
-    (setq valid (= here (point)))
-    (eshell-backward-argument 4)
-    (prog1
-       (and valid (= begin (point)))
-      (eshell-bol)
-      (delete-region (point) (point-max)))))
-
 (defun eshell-forward-argument (&optional arg)
   "Move forward ARG arguments."
   (interactive "p")
@@ -652,17 +625,6 @@ waiting for input."
   (interactive "P")
   (eshell-send-input use-region t))
 
-(eshell-deftest mode queue-input
-  "Queue command input"
-  (eshell-insert-command "sleep 2")
-  (eshell-insert-command "echo alpha" 'eshell-queue-input)
-  (let ((count 10))
-    (while (and eshell-current-command
-               (> count 0))
-      (sit-for 1 0)
-      (setq count (1- count))))
-  (eshell-match-result "alpha\n"))
-
 (defun eshell-send-input (&optional use-region queue-p no-newline)
   "Send the input received to Eshell for parsing and processing.
 After `eshell-last-output-end', sends all text from that marker to
@@ -741,20 +703,6 @@ newline."
               (run-hooks 'eshell-post-command-hook)
               (insert-and-inherit input)))))))))
 
-; (eshell-deftest proc send-to-subprocess
-;   "Send input to a subprocess"
-;   ;; jww (1999-12-06): what about when bc is unavailable?
-;   (if (not (eshell-search-path "bc"))
-;       t
-;     (eshell-insert-command "bc")
-;     (eshell-insert-command "1 + 2")
-;     (sit-for 1 0)
-;     (forward-line -1)
-;     (prog1
-;      (looking-at "3\n")
-;       (eshell-insert-command "quit")
-;       (sit-for 1 0))))
-
 (defsubst eshell-kill-new ()
   "Add the last input text to the kill ring."
   (kill-ring-save eshell-last-input-start eshell-last-input-end))
@@ -900,14 +848,6 @@ Does not delete the prompt."
     (insert "*** output flushed ***\n")
     (delete-region (point) (eshell-end-of-output))))
 
-(eshell-deftest io flush-output
-  "Flush previous output"
-  (eshell-insert-command "echo alpha")
-  (eshell-kill-output)
-  (and (eshell-match-result (regexp-quote "*** output flushed ***\n"))
-       (forward-line)
-       (= (point) eshell-last-output-start)))
-
 (defun eshell-show-output (&optional arg)
   "Display start of this batch of interpreter output at top of window.
 Sets mark to the value of point when this command is run.
@@ -968,12 +908,6 @@ When run interactively, widen the buffer first."
     (goto-char eshell-last-output-end)
     (insert-and-inherit input)))
 
-(eshell-deftest mode run-old-command
-  "Re-run an old command"
-  (eshell-insert-command "echo alpha")
-  (goto-char eshell-last-input-start)
-  (string= (eshell-get-old-input) "echo alpha"))
-
 (defun eshell/exit ()
   "Leave or kill the Eshell buffer, depending on `eshell-kill-on-exit'."
   (throw 'eshell-terminal t))
index 5a62c71355c9a7a64ae3802197720490593ad937..1581d05889edc282b0e9e50e06733b27fa81077b 100644 (file)
@@ -43,7 +43,7 @@ customizing the variable `eshell-modules-list'."
 
 (defcustom eshell-module-unload-hook
   '(eshell-unload-extension-modules)
-  "*A hook run when `eshell-module' is unloaded."
+  "A hook run when `eshell-module' is unloaded."
   :type 'hook
   :group 'eshell-module)
 
@@ -61,7 +61,7 @@ customizing the variable `eshell-modules-list'."
     eshell-script
     eshell-term
     eshell-unix)
-  "*A list of optional add-on modules to be loaded by Eshell.
+  "A list of optional add-on modules to be loaded by Eshell.
 Changes will only take effect in future Eshell buffers."
   :type (append
         (list 'set ':tag "Supported modules")
@@ -92,7 +92,7 @@ customization group.  Example: `eshell-cmpl' for that module."
 
 (defun eshell-unload-extension-modules ()
   "Unload any memory resident extension modules."
-  (eshell-for module (eshell-subgroups 'eshell-module)
+  (dolist (module (eshell-subgroups 'eshell-module))
     (if (featurep module)
        (ignore-errors
          (message "Unloading %s..." (symbol-name module))
index f697a40055694b02f37086d54e0020c95f627845..eeaccc4b8902d017716efa4d08bf419091fa2cd3 100644 (file)
@@ -38,8 +38,9 @@ finish."
 
 ;;; User Variables:
 
-(defcustom eshell-proc-load-hook '(eshell-proc-initialize)
+(defcustom eshell-proc-load-hook nil
   "A hook that gets run when `eshell-proc' is loaded."
+  :version "24.1"                      ; removed eshell-proc-initialize
   :type 'hook
   :group 'eshell-proc)
 
@@ -94,13 +95,14 @@ is created."
   :type 'hook
   :group 'eshell-proc)
 
-(defcustom eshell-kill-hook '(eshell-reset-after-proc)
+(defcustom eshell-kill-hook nil
   "Called when a process run by `eshell-gather-process-output' has ended.
 It is passed two arguments: the process that was just ended, and the
 termination status (as a string).  Note that the first argument may be
 nil, in which case the user attempted to send a signal, but there was
 no relevant process.  This can be used for displaying help
 information, for example."
+  :version "24.1"                      ; removed eshell-reset-after-proc
   :type 'hook
   :group 'eshell-proc)
 
@@ -113,6 +115,14 @@ information, for example."
 
 ;;; Functions:
 
+(defun eshell-kill-process-function (proc status)
+  "Function run when killing a process.
+Runs `eshell-reset-after-proc' and `eshell-kill-hook', passing arguments
+PROC and STATUS to both."
+  (or (memq 'eshell-reset-after-proc eshell-kill-hook)
+      (eshell-reset-after-proc proc status))
+  (run-hook-with-args 'eshell-kill-hook proc status))
+
 (defun eshell-proc-initialize ()
   "Initialize the process handling code."
   (make-local-variable 'eshell-process-list)
@@ -346,7 +356,7 @@ See `eshell-needs-pipe'."
        (eshell-update-markers eshell-last-output-end)
        ;; Simulate the effect of eshell-sentinel.
        (eshell-close-handles (if (numberp exit-status) exit-status -1))
-       (run-hook-with-args 'eshell-kill-hook command exit-status)
+       (eshell-kill-process-function command exit-status)
        (or eshell-in-pipeline-p
            (setq eshell-last-sync-output-start nil))
        (if (not (numberp exit-status))
@@ -391,14 +401,14 @@ PROC is the process that's exiting.  STRING is the exit message."
                      (eshell-close-handles (process-exit-status proc) 'nil
                                            (cadr entry))))
                (eshell-remove-process-entry entry))))
-       (run-hook-with-args 'eshell-kill-hook proc string)))))
+       (eshell-kill-process-function proc string)))))
 
 (defun eshell-process-interact (func &optional all query)
   "Interact with a process, using PROMPT if more than one, via FUNC.
 If ALL is non-nil, background processes will be interacted with as well.
 If QUERY is non-nil, query the user with QUERY before calling FUNC."
   (let (defunct result)
-    (eshell-for entry eshell-process-list
+    (dolist (entry eshell-process-list)
       (if (and (memq (process-status (car entry))
                    '(run stop open closed))
               (or all
@@ -412,7 +422,7 @@ If QUERY is non-nil, query the user with QUERY before calling FUNC."
     ;; clean up the process list; this can get dirty if an error
     ;; occurred that brought the user into the debugger, and then they
     ;; quit, so that the sentinel was never called.
-    (eshell-for d defunct
+    (dolist (d defunct)
       (eshell-remove-process-entry d))
     result))
 
@@ -485,31 +495,29 @@ See the variable `eshell-kill-processes-on-exit'."
            (kill-buffer buf)))
       (message nil))))
 
-(custom-add-option 'eshell-exit-hook 'eshell-query-kill-processes)
-
 (defun eshell-interrupt-process ()
   "Interrupt a process."
   (interactive)
   (unless (eshell-process-interact 'interrupt-process)
-    (run-hook-with-args 'eshell-kill-hook nil "interrupt")))
+    (eshell-kill-process-function nil "interrupt")))
 
 (defun eshell-kill-process ()
   "Kill a process."
   (interactive)
   (unless (eshell-process-interact 'kill-process)
-    (run-hook-with-args 'eshell-kill-hook nil "killed")))
+    (eshell-kill-process-function nil "killed")))
 
 (defun eshell-quit-process ()
   "Send quit signal to process."
   (interactive)
   (unless (eshell-process-interact 'quit-process)
-    (run-hook-with-args 'eshell-kill-hook nil "quit")))
+    (eshell-kill-process-function nil "quit")))
 
 ;(defun eshell-stop-process ()
 ;  "Send STOP signal to process."
 ;  (interactive)
 ;  (unless (eshell-process-interact 'stop-process)
-;    (run-hook-with-args 'eshell-kill-hook nil "stopped")))
+;    (eshell-kill-process-function nil "stopped")))
 
 ;(defun eshell-continue-process ()
 ;  "Send CONTINUE signal to process."
@@ -518,7 +526,7 @@ See the variable `eshell-kill-processes-on-exit'."
 ;    ;; jww (1999-09-17): this signal is not dealt with yet.  For
 ;    ;; example, `eshell-reset' will be called, and so will
 ;    ;; `eshell-resume-eval'.
-;    (run-hook-with-args 'eshell-kill-hook nil "continue")))
+;    (eshell-kill-process-function nil "continue")))
 
 (defun eshell-send-eof-to-process ()
   "Send EOF to process."
index 2de147acb0029f69638596e12ba6bafd8f3f67ee..dbe4f824debb035af092c8b50ee5c2f71db6890c 100644 (file)
@@ -147,18 +147,6 @@ function `string-to-number'."
 
 (put 'eshell-condition-case 'lisp-indent-function 2)
 
-(defmacro eshell-deftest (module name label &rest forms)
-  (if (and (fboundp 'cl-compiling-file) (cl-compiling-file))
-      nil
-    (let ((fsym (intern (concat "eshell-test--" (symbol-name name)))))
-      `(eval-when-compile
-        (ignore
-         (defun ,fsym () ,label
-           (eshell-run-test (quote ,module) (quote ,fsym) ,label
-                            (quote (progn ,@forms)))))))))
-
-(put 'eshell-deftest 'lisp-indent-function 2)
-
 (defun eshell-find-delimiter
   (open close &optional bound reverse-p backslash-p)
   "From point, find the CLOSE delimiter corresponding to OPEN.
@@ -285,7 +273,6 @@ Prepend remote identification of `default-directory', if any."
       (setq text (replace-match " " t t text)))
     text))
 
-;; FIXME this is just dolist.
 (defmacro eshell-for (for-var for-list &rest forms)
   "Iterate through a list"
   `(let ((list-iter ,for-list))
@@ -296,10 +283,12 @@ Prepend remote identification of `default-directory', if any."
 
 (put 'eshell-for 'lisp-indent-function 2)
 
+(make-obsolete 'eshell-for 'dolist "24.1")
+
 (defun eshell-flatten-list (args)
   "Flatten any lists within ARGS, so that there are no sublists."
   (let ((new-list (list t)))
-    (eshell-for a args
+    (dolist (a args)
       (if (and (listp a)
               (listp (cdr a)))
          (nconc new-list (eshell-flatten-list a))
@@ -405,7 +394,7 @@ list."
     (unless (listp entries)
       (setq entries (list entries)
            listified t))
-    (eshell-for entry entries
+    (dolist (entry entries)
       (unless (and exclude (string-match exclude entry))
        (setq p predicates valid (null p))
        (while p
index 4c42b305ec2bf632580c5a1881fe069ba6599dd9..69004a841f1cd5496e2e2559adc0796b834a0ccd 100644 (file)
 
 (eval-when-compile
   (require 'pcomplete)
-  (require 'esh-test)
   (require 'esh-util)
   (require 'esh-opt)
   (require 'esh-mode))
@@ -126,8 +125,9 @@ variable value, a subcommand, or even the result of a Lisp form."
 
 ;;; User Variables:
 
-(defcustom eshell-var-load-hook '(eshell-var-initialize)
+(defcustom eshell-var-load-hook nil
   "A list of functions to call when loading `eshell-var'."
+  :version "24.1"                      ; removed eshell-var-initialize
   :type 'hook
   :group 'eshell-var)
 
@@ -351,8 +351,7 @@ This function is explicit for adding to `eshell-parse-argument-hook'."
    '((?h "help" nil nil "show this usage screen")
      :external "env"
      :usage "<no arguments>")
-   (eshell-for setting (sort (eshell-environment-variables)
-                            'string-lessp)
+   (dolist (setting (sort (eshell-environment-variables) 'string-lessp))
      (eshell-buffered-print setting "\n"))
    (eshell-flush)))
 
@@ -374,7 +373,7 @@ This function is explicit for adding to `eshell-parse-argument-hook'."
 This involves setting any variable aliases which affect the
 environment, as specified in `eshell-variable-aliases-list'."
   (let ((process-environment (eshell-copy-environment)))
-    (eshell-for var-alias eshell-variable-aliases-list
+    (dolist (var-alias eshell-variable-aliases-list)
       (if (nth 2 var-alias)
          (setenv (car var-alias)
                  (eshell-stringify
@@ -477,30 +476,6 @@ Possible options are:
      (t
       (error "Invalid variable reference")))))
 
-(eshell-deftest var interp-cmd
-  "Interpolate command result"
-  (eshell-command-result-p "+ ${+ 1 2} 3" "6\n"))
-
-(eshell-deftest var interp-lisp
-  "Interpolate Lisp form evalution"
-  (eshell-command-result-p "+ $(+ 1 2) 3" "6\n"))
-
-(eshell-deftest var interp-concat
-  "Interpolate and concat command"
-  (eshell-command-result-p "+ ${+ 1 2}3 3" "36\n"))
-
-(eshell-deftest var interp-concat-lisp
-  "Interpolate and concat Lisp form"
-  (eshell-command-result-p "+ $(+ 1 2)3 3" "36\n"))
-
-(eshell-deftest var interp-concat2
-  "Interpolate and concat two commands"
-  (eshell-command-result-p "+ ${+ 1 2}${+ 1 2} 3" "36\n"))
-
-(eshell-deftest var interp-concat-lisp2
-  "Interpolate and concat two Lisp forms"
-  (eshell-command-result-p "+ $(+ 1 2)$(+ 1 2) 3" "36\n"))
-
 (defun eshell-parse-indices ()
   "Parse and return a list of list of indices."
   (let (indices)
@@ -623,7 +598,7 @@ For example, to retrieve the second element of a user's record in
   "Generate list of applicable variables."
   (let ((argname pcomplete-stub)
        completions)
-    (eshell-for alias eshell-variable-aliases-list
+    (dolist (alias eshell-variable-aliases-list)
       (if (string-match (concat "^" argname) (car alias))
          (setq completions (cons (car alias) completions))))
     (sort
index 7690a102a9b053788812f29e9716c4497b3f9d10..1a9d7c97b83ec8587d10ba025f5e308660320d3b 100644 (file)
@@ -280,26 +280,12 @@ shells such as bash, zsh, rc, 4dos."
   :type 'string
   :group 'eshell)
 
-(eshell-deftest mode same-window-buffer-names
-  "`eshell-buffer-name' is a member of `same-window-buffer-names'"
-  (member eshell-buffer-name same-window-buffer-names))
-
 (defcustom eshell-directory-name
   (locate-user-emacs-file "eshell/" ".eshell/")
   "The directory where Eshell control files should be kept."
   :type 'directory
   :group 'eshell)
 
-(eshell-deftest mode eshell-directory-exists
-  "`eshell-directory-name' exists and is writable"
-  (file-writable-p eshell-directory-name))
-
-(eshell-deftest mode eshell-directory-modes
-  "`eshell-directory-name' has correct access protections"
-  (or (eshell-under-windows-p)
-      (= (file-modes eshell-directory-name)
-        eshell-private-directory-modes)))
-
 ;;;_* Running Eshell
 ;;
 ;; There are only three commands used to invoke Eshell.  The first two
@@ -450,10 +436,6 @@ corresponding to a successful execution."
              (set status-var eshell-last-command-status))
          (cadr result))))))
 
-(eshell-deftest mode simple-command-result
-  "`eshell-command-result' works with a simple command."
-  (= (eshell-command-result "+ 1 2") 3))
-
 ;;;_* Reporting bugs
 ;;
 ;; If you do encounter a bug, on any system, please report
@@ -474,7 +456,7 @@ Emacs."
   ;; if the user set `eshell-prefer-to-shell' to t, but never loaded
   ;; Eshell, then `eshell-subgroups' will be unbound
   (when (fboundp 'eshell-subgroups)
-    (eshell-for module (eshell-subgroups 'eshell)
+    (dolist (module (eshell-subgroups 'eshell))
       ;; this really only unloads as many modules as possible,
       ;; since other `require' references (such as by customizing
       ;; `eshell-prefer-to-shell' to a non-nil value) might make it
index 360383aa32bffe1d592ada39a723ecc556b9e385..97862afb6783986f2422659b1838006ca7524a51 100644 (file)
@@ -562,17 +562,23 @@ You can change the color sort order by customizing `list-colors-sort'."
       (let ((lc (nthcdr (1- (display-color-cells)) list)))
        (if lc
            (setcdr lc nil)))))
-  (let ((buf (get-buffer-create "*Colors*")))
-    (with-current-buffer buf
+  (unless buffer-name
+    (setq buffer-name "*Colors*"))
+  (with-help-window buffer-name
+    (with-current-buffer standard-output
       (erase-buffer)
-      (setq truncate-lines t)
-      ;; Display buffer before generating content to allow
-      ;; `list-colors-print' to get the right window-width.
+      (setq truncate-lines t)))
+  (let ((buf (get-buffer buffer-name))
+       (inhibit-read-only t))
+    ;; Display buffer before generating content, to allow
+    ;; `list-colors-print' to get the right window-width.
+    (with-selected-window (or (get-buffer-window buf t) (selected-window))
+      (with-current-buffer buf
+       (list-colors-print list callback)
+       (set-buffer-modified-p nil)))
+    (when callback
       (pop-to-buffer buf)
-      (list-colors-print list callback)
-      (set-buffer-modified-p nil)))
-  (if callback
-      (message "Click on a color to select it.")))
+      (message "Click on a color to select it."))))
 
 (defun list-colors-print (list &optional callback)
   (let ((callback-fn
index a3cb5331e6730ec3260532ffb7fe0b0b68909798..a9c324771551a4499d4ed57f2bb1054aacd715b6 100644 (file)
@@ -360,18 +360,28 @@ from the MODE alist ignoring the input argument VALUE."
   (catch 'exit
     (unless enable-local-variables
       (throw 'exit (message "Directory-local variables are disabled")))
-
     (let ((variables-file (or (and (buffer-file-name)
                                   (not (file-remote-p (buffer-file-name)))
                                   (dir-locals-find-file (buffer-file-name)))
                              dir-locals-file))
          variables)
-
+      (if (consp variables-file)       ; result from cache
+         ;; If cache element has an mtime, assume it came from a file.
+         ;; Otherwise, assume it was set directly.
+         (setq variables-file (if (nth 2 variables-file)
+                                  (expand-file-name dir-locals-file
+                                                    (car variables-file))
+                                (cadr variables-file))))
+      ;; I can't be bothered to handle this case right now.
+      ;; Dir locals were set directly from a class.  You need to
+      ;; directly modify the class in dir-locals-class-alist.
+      (and variables-file (not (stringp variables-file))
+          (throw 'exit (message "Directory locals were not set from a file")))
       ;; Don't create ".dir-locals.el" for the deletion operation.
-      (when (and (eq op 'delete)
-                (not (file-exists-p variables-file)))
-       (throw 'exit (message "File .dir-locals.el not found")))
-
+      (and (eq op 'delete)
+          (or (not variables-file)
+              (not (file-exists-p variables-file)))
+          (throw 'exit (message "No .dir-locals.el file was found")))
       (let ((auto-insert nil))
        (find-file variables-file))
       (widen)
index 42f09f8b6da26945cb0edf5729ce2a1bb716388a..caf0a9752c57e1abaa5030b5ecfbd38be4cdfcbd 100644 (file)
@@ -983,7 +983,8 @@ accessible."
       nil)))
 
 (defun file-truename (filename &optional counter prev-dirs)
-  "Return the truename of FILENAME, which should be absolute.
+  "Return the truename of FILENAME.
+If FILENAME is not absolute, first expands it against `default-directory'.
 The truename of a file name is found by chasing symbolic links
 both at the level of the file and at the level of the directories
 containing it, until no links are left at any level.
@@ -1893,8 +1894,8 @@ the various files."
                           (not nonexistent)
                           ;; It is confusing to ask whether to visit
                           ;; non-literally if they have the file in
-                          ;; hexl-mode.
-                          (not (eq major-mode 'hexl-mode)))
+                          ;; hexl-mode or image-mode.
+                          (not (memq major-mode '(hexl-mode image-mode))))
                  (if (buffer-modified-p)
                      (if (y-or-n-p
                           (format
@@ -2806,7 +2807,9 @@ symbol and VAL is a value that is considered safe."
   :type 'alist)
 
 (defcustom safe-local-eval-forms
-  '((add-hook 'write-file-functions 'time-stamp)
+  ;; This should be here at least as long as Emacs supports write-file-hooks.
+  '((add-hook 'write-file-hooks 'time-stamp)
+    (add-hook 'write-file-functions 'time-stamp)
     (add-hook 'before-save-hook 'time-stamp))
   "Expressions that are considered safe in an `eval:' local variable.
 Add expressions to this list if you want Emacs to evaluate them, when
@@ -2814,7 +2817,7 @@ they appear in an `eval' local variable specification, without first
 asking you for confirmation."
   :risky t
   :group 'find-file
-  :version "22.2"
+  :version "24.1"                      ; added write-file-hooks
   :type '(repeat sexp))
 
 ;; Risky local variables:
@@ -2918,8 +2921,8 @@ variable to set.")
 ALL-VARS is the list of all variables to be set up.
 UNSAFE-VARS is the list of those that aren't marked as safe or risky.
 RISKY-VARS is the list of those that are marked as risky.
-DIR-NAME is a directory name if these settings come from
-directory-local variables, or nil otherwise."
+If these settings come from directory-local variables, then
+DIR-NAME is the name of the associated directory.  Otherwise it is nil."
   (if noninteractive
       nil
     (save-window-excursion
@@ -3061,8 +3064,8 @@ VARIABLES is the alist of variable-value settings.  This alist is
  `enable-local-eval', `enable-local-variables', and (if necessary)
  user interaction.  The results are added to
  `file-local-variables-alist', without applying them.
-DIR-NAME is a directory name if these settings come from
- directory-local variables, or nil otherwise."
+If these settings come from directory-local variables, then
+DIR-NAME is the name of the associated directory.  Otherwise it is nil."
   ;; Find those variables that we may want to save to
   ;; `safe-local-variable-values'.
   (let (all-vars risky-vars unsafe-vars)
@@ -3346,11 +3349,11 @@ Each element in this list has the form (DIR CLASS MTIME).
 DIR is the name of the directory.
 CLASS is the name of a variable class (a symbol).
 MTIME is the recorded modification time of the directory-local
- variables file associated with this entry.  This time is a list
- of two integers (the same format as `file-attributes'), and is
- used to test whether the cache entry is still valid.
- Alternatively, MTIME can be nil, which means the entry is always
- considered valid.")
+variables file associated with this entry.  This time is a list
+of two integers (the same format as `file-attributes'), and is
+used to test whether the cache entry is still valid.
+Alternatively, MTIME can be nil, which means the entry is always
+considered valid.")
 
 (defsubst dir-locals-get-class-variables (class)
   "Return the variable list for CLASS."
@@ -3393,8 +3396,19 @@ Return the new variables list."
                                  (cdr entry) root variables))))
              ((or (not key)
                   (derived-mode-p key))
-              (setq variables (dir-locals-collect-mode-variables
-                               (cdr entry) variables))))))
+              (let* ((alist (cdr entry))
+                     (subdirs (assq 'subdirs alist)))
+                (if (or (not subdirs)
+                        (progn
+                          (setq alist (delq subdirs alist))
+                          (cdr-safe subdirs))
+                        ;; TODO someone might want to extend this to allow
+                        ;; integer values for subdir, where N means
+                        ;; variables apply to this directory and N levels
+                        ;; below it (0 == nil).
+                        (equal root default-directory))
+                    (setq variables (dir-locals-collect-mode-variables
+                                     alist variables))))))))
       (error
        ;; The file's content might be invalid (e.g. have a merge conflict), but
        ;; that shouldn't prevent the user from opening the file.
@@ -3459,13 +3473,20 @@ across different environments and users.")
 (defun dir-locals-find-file (file)
   "Find the directory-local variables for FILE.
 This searches upward in the directory tree from FILE.
-If the directory root of FILE has been registered in
- `dir-locals-directory-cache' and the directory-local variables
- file has not been modified, return the matching entry in
- `dir-locals-directory-cache'.
-Otherwise, if a directory-local variables file is found, return
- the file name.
-Otherwise, return nil."
+It stops at the first directory that has been registered in
+`dir-locals-directory-cache' or contains a `dir-locals-file'.
+If it finds an entry in the cache, it checks that it is valid.
+A cache entry with no modification time element (normally, one that
+has been assigned directly using `dir-locals-set-directory-class', not
+set from a file) is always valid.
+A cache entry based on a `dir-locals-file' is valid if the modification
+time stored in the cache matches the current file modification time.
+If not, the cache entry is cleared so that the file will be re-read.
+
+This function returns either nil (no directory local variables found),
+or the matching entry from `dir-locals-directory-cache' (a list),
+or the full path to the `dir-locals-file' (a string) in the case
+of no valid cache entry."
   (setq file (expand-file-name file))
   (let* ((dir-locals-file-name
          (if (eq system-type 'ms-dos)
@@ -3474,8 +3495,8 @@ Otherwise, return nil."
         (locals-file (locate-dominating-file file dir-locals-file-name))
         (dir-elt nil))
     ;; `locate-dominating-file' may have abbreviated the name.
-    (when locals-file
-      (setq locals-file (expand-file-name dir-locals-file-name locals-file)))
+    (if locals-file
+       (setq locals-file (expand-file-name dir-locals-file-name locals-file)))
     ;; Find the best cached value in `dir-locals-directory-cache'.
     (dolist (elt dir-locals-directory-cache)
       (when (and (eq t (compare-strings file nil (length (car elt))
@@ -3484,23 +3505,32 @@ Otherwise, return nil."
                                              '(windows-nt cygwin ms-dos))))
                 (> (length (car elt)) (length (car dir-elt))))
        (setq dir-elt elt)))
-    (let ((use-cache (and dir-elt
-                         (or (null locals-file)
-                             (<= (length (file-name-directory locals-file))
-                                 (length (car dir-elt)))))))
-      (if use-cache
-         ;; Check the validity of the cache.
-         (if (and (file-readable-p (car dir-elt))
-                  (or (null  (nth 2 dir-elt))
+    (if (and dir-elt
+            (or (null locals-file)
+                (<= (length (file-name-directory locals-file))
+                    (length (car dir-elt)))))
+       ;; Found a potential cache entry.  Check validity.
+       ;; A cache entry with no MTIME is assumed to always be valid
+       ;; (ie, set directly, not from a dir-locals file).
+       ;; Note, we don't bother to check that there is a matching class
+       ;; element in dir-locals-class-alist, since that's done by
+       ;; dir-locals-set-directory-class.
+       (if (or (null (nth 2 dir-elt))
+               (let ((cached-file (expand-file-name dir-locals-file-name
+                                                    (car dir-elt))))
+                 (and (file-readable-p cached-file)
                       (equal (nth 2 dir-elt)
-                             (nth 5 (file-attributes (car dir-elt))))))
-             ;; This cache entry is OK.
-             dir-elt
-           ;; This cache entry is invalid; clear it.
-           (setq dir-locals-directory-cache
-                 (delq dir-elt dir-locals-directory-cache))
-           locals-file)
-       locals-file))))
+                             (nth 5 (file-attributes cached-file))))))
+           ;; This cache entry is OK.
+           dir-elt
+         ;; This cache entry is invalid; clear it.
+         (setq dir-locals-directory-cache
+               (delq dir-elt dir-locals-directory-cache))
+         ;; Return the first existing dir-locals file.  Might be the same
+         ;; as dir-elt's, might not (eg latter might have been deleted).
+         locals-file)
+      ;; No cache entry.
+      locals-file)))
 
 (defun dir-locals-read-from-file (file)
   "Load a variables FILE and register a new class and instance.
@@ -3530,10 +3560,8 @@ and `file-local-variables-alist', without applying them."
          (dir-name nil))
       (cond
        ((stringp variables-file)
-       (setq dir-name (if (buffer-file-name)
-                           (file-name-directory (buffer-file-name))
-                         default-directory))
-       (setq class (dir-locals-read-from-file variables-file)))
+       (setq dir-name (file-name-directory variables-file)
+             class (dir-locals-read-from-file variables-file)))
        ((consp variables-file)
        (setq dir-name (nth 0 variables-file))
        (setq class (nth 1 variables-file))))
@@ -3842,7 +3870,9 @@ BACKUPNAME is the backup file name, which is the old file renamed."
        (set-file-selinux-context to-name context)))
 
 (defvar file-name-version-regexp
-  "\\(?:~\\|\\.~[-[:alnum:]:#@^._]+~\\)"
+  "\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)"
+  ;; The last ~[[:digit]]+ matches relative versions in git,
+  ;; e.g. `foo.js.~HEAD~1~'.
   "Regular expression matching the backup/version part of a file name.
 Used by `file-name-sans-versions'.")
 
@@ -4582,14 +4612,14 @@ See `save-some-buffers-action-alist' if you want to
 change the additional actions you can take on files."
   (interactive "P")
   (save-window-excursion
-    (let* (queried some-automatic
+    (let* (queried autosaved-buffers
           files-done abbrevs-done)
       (dolist (buffer (buffer-list))
        ;; First save any buffers that we're supposed to save unconditionally.
        ;; That way the following code won't ask about them.
        (with-current-buffer buffer
          (when (and buffer-save-without-query (buffer-modified-p))
-           (setq some-automatic t)
+           (push (buffer-name) autosaved-buffers)
            (save-buffer))))
       ;; Ask about those buffers that merit it,
       ;; and record the number thus saved.
@@ -4635,9 +4665,15 @@ change the additional actions you can take on files."
             (setq abbrevs-changed nil)
             (setq abbrevs-done t)))
       (or queried (> files-done 0) abbrevs-done
-         (message (if some-automatic
-                      "(Some special files were saved without asking)"
-                    "(No files need saving)"))))))
+         (cond
+          ((null autosaved-buffers)
+           (message "(No files need saving)"))
+          ((= (length autosaved-buffers) 1)
+           (message "(Saved %s)" (car autosaved-buffers)))
+          (t
+           (message "(Saved %d files: %s)"
+                    (length autosaved-buffers)
+                    (mapconcat 'identity autosaved-buffers ", "))))))))
 \f
 (defun not-modified (&optional arg)
   "Mark current buffer as unmodified, not needing to be saved.
@@ -4796,7 +4832,7 @@ given.  With a prefix argument, TRASH is nil."
    (let* ((trashing (and delete-by-moving-to-trash
                         (null current-prefix-arg)))
          (dir (expand-file-name
-               (read-file-name
+               (read-directory-name
                 (if trashing
                     "Move directory to trash: "
                   "Delete directory: ")
@@ -4864,7 +4900,7 @@ directly into NEWNAME instead."
    (let ((dir (read-directory-name
               "Copy directory: " default-directory default-directory t nil)))
      (list dir
-          (read-file-name
+          (read-directory-name
            (format "Copy directory %s to: " dir)
            default-directory default-directory nil nil)
           current-prefix-arg t nil)))
@@ -5563,7 +5599,7 @@ Prefix arg (second arg if noninteractive) means supply -l switch to `ls'.
 Actions controlled by variables `list-directory-brief-switches'
 and `list-directory-verbose-switches'."
   (interactive (let ((pfx current-prefix-arg))
-                (list (read-file-name (if pfx "List directory (verbose): "
+                (list (read-directory-name (if pfx "List directory (verbose): "
                                         "List directory (brief): ")
                                       nil default-directory nil)
                       pfx)))
@@ -5822,6 +5858,9 @@ normally equivalent short `-D' option is just passed on to
                                  (file-name-directory file)
                                (file-name-directory (expand-file-name file))))
                            (pattern (file-name-nondirectory file)))
+                       ;; NB since switches is passed to the shell, be
+                       ;; careful of malicious values, eg "-l;reboot".
+                       ;; See eg dired-safe-switches-p.
                        (call-process
                         shell-file-name nil t nil
                         "-c"
index 7ace6ce01dc91f30ca5c857636a3c6b23c9b7b9c..e4285523184bc5a1900e0295adc1b3f533bc8955 100644 (file)
@@ -183,7 +183,7 @@ To override this, give an argument to `ff-find-other-file'."
 ;;;###autoload
 (defvar ff-special-constructs
   `(
-    ;; C/C++ include, for NeXTSTEP too
+    ;; C/C++ include, for NeXTstep too
     (,(purecopy "^\#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") .
      (lambda ()
        (buffer-substring (match-beginning 2) (match-end 2))))
@@ -494,7 +494,7 @@ If optional IN-OTHER-WINDOW is non-nil, find the file in another window."
 
             (setq name
                   (expand-file-name
-                   (read-file-name
+                   (read-directory-name
                     (format "Find or create %s in: " default-name)
                     default-directory default-name nil)))
 
index e23af4dff78e7297db085ff4d8c45de01f60f5bc..bce03331a2995adce7be34a7093c7df1e04649f4 100644 (file)
@@ -229,7 +229,8 @@ This hook will be installed if the variable
     prototype-generic-mode
     resolve-conf-generic-mode
     samba-generic-mode
-    x-resource-generic-mode)
+    x-resource-generic-mode
+    xmodmap-generic-mode)
   "List of generic modes that are defined by default on Unix.")
 
 (defconst generic-other-modes
@@ -370,6 +371,15 @@ your changes into effect."
   nil
   "Generic mode for X Resource configuration files."))
 
+(if (memq 'xmodmap-generic-mode generic-extras-enable-list)
+(define-generic-mode xmodmap-generic-mode
+  '(?!)
+  '("add" "clear" "keycode" "keysym" "remove" "pointer")
+  nil
+  '("[xX]modmap\\(rc\\)?\\'")
+  nil
+  "Simple mode for xmodmap files."))
+
 ;;; Hosts
 (when (memq 'hosts-generic-mode generic-extras-enable-list)
 
index ff48920e69c52fcebd3b4e02a32d23725e43df45..c14c79a92cbd1f3e655d5d131e5ecdaa8332a10e 100644 (file)
@@ -1,3 +1,220 @@
+2011-03-05  Antoine Levitt  <antoine.levitt@gmail.com>
+
+       * gnus.el (gnus-interactive): Use read-directory-name.
+
+       * gnus-uu.el (gnus-uu-decode-uu-and-save)
+       (gnus-uu-decode-unshar-and-save, gnus-uu-decode-save)
+       (gnus-uu-decode-binhex, gnus-uu-decode-yenc)
+       (gnus-uu-decode-save-view, gnus-uu-decode-postscript-and-save):
+       Likewise.
+
+       * gnus-group.el (gnus-group-make-directory-group): Likewise.
+
+2011-03-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-update-read-articles): Fix typo.
+
+       * gnus.el (gnus-valid-select-methods): Mark nnimap as a backend that
+       really have server-side marks.
+
+       * gnus-sum.el (gnus-propagate-marks): Change default back to nil again,
+       since most backends do not usefully have server-side marks.
+       (gnus-update-read-articles): Propagate marks to all backends that
+       really have server-side marks.
+
+2011-03-05  Antoine Levitt  <antoine.levitt@gmail.com>
+
+       * message.el (message-cite-reply-position, message-cite-style): New
+       variables.
+       (message-yank-original): Use the new citation styles.
+
+2011-03-04  Daiki Ueno  <ueno@unixuser.org>
+
+       * message.el (message-options): Revert the change that's a workaround
+       for XEmacs buffer-local issue; don't mark it buffer-local when running
+       under XEmacs.
+
+2011-03-03  Tassilo Horn  <tassilo@member.fsf.org>
+
+       * nnimap.el (nnimap-parse-flags): Add a workaround for FETCH lines with
+       numbers too big to be `read'.
+
+2011-03-02  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * message.el (message-options): Make buffer-local two ways to attempt
+       to fix a XEmacs bug.
+
+2011-03-02  Julien Danjou  <julien@danjou.info>
+
+       * gnus-art.el (gnus-with-article-buffer): Fix buffer live check.
+
+2011-03-01  Julien Danjou  <julien@danjou.info>
+
+       * gnus-art.el (list-identifier): Add list-identifier as a parameter
+       group.
+       (article-hide-list-identifiers): Use list-identifier group parameter.
+
+2011-02-28  Julien Danjou  <julien@danjou.info>
+
+       * sieve.el (sieve-buffer-script-name): New local variable to store
+       sieve script name.
+       (sieve-edit-script): Store sieve script name.
+       (sieve-upload): Use sieve script name when uploading.
+       (sieve-upload): Use substitute-command-keys.
+       (sieve-edit-script): Use substitute-command-keys.
+       (sieve-refresh-scriptlist): Use substitute-command-keys.
+       (sieve-manage-mode-map): Define keymap properly.
+       (sieve-manage-mode): Do not set mode name manually, change mode-name to
+       (sieve-refresh-scriptlist): Use substitute-command-keys."Sieve-manage".
+       Remove commented code about cvs.
+       (sieve-manage-quit): New function.
+       (sieve-manage-mode-map): Bind 'q' to sieve-manage-quit.
+
+2011-02-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-group.el (gnus-import-other-newsrc-file): New function.
+
+2011-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth-source.el (auth-source-search): Cache empty result sets.
+
+       * auth-source.el (auth-source-save-behavior): New variable to replace
+       `auth-source-never-create'.
+       (auth-source-netrc-create): Use it.
+       (auth-source-never-save): Remove.
+
+2011-02-25  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-stream): Doc fix.
+       (nnimap-open-connection-1): Reverse the order of the ports to that the
+       prompted-for port is first.
+
+       * gnus-start.el (gnus-get-unread-articles): Don't clobber the async
+       retrieval by the no-group selection.
+
+       * gnus-demon.el (gnus-demon-init): run-with-timer should be called with
+       numerical parameters.
+
+2011-02-25  Julien Danjou  <julien@danjou.info>
+
+       * gnus-gravatar.el: Use gnus-with-article-buffer.
+
+       * gnus-art.el (gnus-with-article-buffer): Check that the
+       gnus-article-buffer is alive.
+
+2011-02-24  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth-source.el (auth-source-creation-prompts): New variable to manage
+       creation-time prompts.
+       (auth-source-search): Document it.
+       (auth-source-format-prompt): Add utility function.
+       (auth-source-netrc-create): Don't default the user name to
+       user-login-name.  Use `auth-source-creation-prompts' and some default
+       prompts for user, host, port, and password (the default generic prompt
+       remains ugly).
+       (auth-source-never-save): Add customizable option to never save info.
+       (auth-source-netrc-create): Use it and improve save prompts.  Fix help
+       mode excursion.
+
+2011-02-24  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * auth-source.el (auth-source-netrc-create): Use `read-char' with no
+       argument that XEmacs doesn't support.
+
+2011-02-23  Julien Danjou  <julien@danjou.info>
+
+       * gnus-art.el (article-make-date-line): Ignore errors if time is
+       invalid and not convertible.
+       (article-make-date-line): Only add lapsed time if time is not nil.
+
+2011-02-23  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth-source.el (auth-source-netrc-create): Use `read-char' instead of
+       `read-char-choice' for backwards compatibility.
+       (auth-source-netrc-element-or-first): New function to DTRT for
+       parameter extraction.
+       (auth-source-netrc-create): Use it and fix multiple parameter print
+       bug.  Use the default passed from above (given-default) or the
+       built-in (user-login-name for :user).
+
+2011-02-23  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-start.el (gnus-dribble-read-file): Set
+       buffer-save-without-query, since we always want to save the dribble
+       file, probably.
+
+       * nnmail.el (nnmail-article-group): Allow a final "" split to work on
+       nnimap.
+
+       * gnus-sum.el (gnus-user-date-format-alist): Renamed back again from
+       -summary- since it's a user-visible variable.
+
+       * nnimap.el (nnimap-retrieve-group-data-early): Don't do QRESYNC the
+       first time you use the new Gnus.
+
+2011-02-22  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth-source.el: Don't load netrc.el.
+       (auth-sources): Search ~/.netrc as well by default.
+       (auth-source-debug): Add 'trivia option for extra output.
+       (auth-source-do-trivia): Use it.
+       (auth-source-search): Simplify logic to use
+       `auth-source-search-backends'.  Use `auth-source-do-trivia' where
+       appropriate.  Don't keep a running count at this level.  Layer :create
+       and :delete options appropriately on the first and second passes.
+       Don't track the backend with the search results.
+       (auth-source-search-backends): New function to search a list of
+       backends for a processed spec.
+       (auth-source-netrc-parse): Cache all netrc files, making
+       auth-source-netrc-cache an alist keyed by the file name and using the
+       file mtime as the caching criterion.  Keep the obfuscated data secret
+       with a lexical bind.
+       (auth-source-netrc-search): Don't calculate the length of the results
+       unnecessarily.
+       (auth-source-search-backends): Fix bug.
+       (auth-source-netrc-create): Rework prompts.
+
+2011-02-22  Andrew Cohen  <cohen@andy.bu.edu>
+
+       * nnir.el (nnir-imap-search-arguments,nnir-imap-default-search-key):
+       Lower case names of search constraints.
+       (nnir-run-query): Cache and reuse search constraints for all imap
+       servers.
+
+2011-02-22  Sam Steingold  <sds@gnu.org>
+
+       * gnus-msg.el (gnus-setup-message): Also bind `winconf-name'.
+
+2011-02-22  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-msg.el (gnus-inews-add-send-actions): Restore the winconf name
+       after exit.
+       (gnus-setup-message): Define missing variable from last checkin.
+
+       * gnus-sum.el (gnus-summary-show-article): When called with t as the
+       value, show the raw article.
+
+2011-02-21  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-open-connection-1): Revert last change, since
+       auth-source now accepts numbers.
+
+       * auth-source.el (auth-source-netrc-parse): Accept a number as the port
+       spec, too.
+       (auth-source-ensure-strings): New function.
+
+       * gnus-art.el (gnus-article-update-date-headers): Doc fix.
+       (gnus-article-setup-buffer): Always restart the date timer so that user
+       changes to the frequency is respected.
+
+       * nnimap.el (nnimap-open-connection-1): auth-source expects strings as
+       port numbers, so make sure it gets that if nnimap-server-port is
+       explicit.
+
+2011-02-21  Simon Josefsson  <simon@josefsson.org>
+
+       * nnimap.el (nnimap-inbox): Doc fix.
+
 2011-02-20  Chong Yidong  <cyd@stupidchicken.com>
 
        * shr-color.el (shr-color->hexadecimal): Use renamed function names
 
        * shr.el: Revert change that made headings use different-sized faces.
        The Emacs display engine isn't advanced enough that, for instance,
-       tables can comfortably use differntly-sized faces.
+       tables can comfortably use differently-sized faces.
 
 2011-01-25  Lars Ingebrigtsen  <larsi@gnus.org>
 
 
 2010-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
-       * shr.el (shr-color-check): Protect against non-existant colour names.
+       * shr.el (shr-color-check): Protect against non-existent colour names.
 
 2010-11-24  Julien Danjou  <julien@danjou.info>
 
        This makes nnimap work properly on Courier again.
 
        * gnus.el (gnus-carpal): The carpal mode has been removed, but define
-       the variable for backwards compatability.
+       the variable for backwards compatibility.
 
        * mm-decode.el (mm-save-part): If given a non-directory result, expand
        the file name before using to avoid setting mm-default-directory to
index e033b01ae9716b6b20cf964b86c2c16b0e2f14ba..500de10b71c77f481bd5f979ad2e26d5ebd4ed32 100644 (file)
@@ -42,7 +42,6 @@
 (require 'password-cache)
 (require 'mm-util)
 (require 'gnus-util)
-(require 'netrc)
 (require 'assoc)
 (eval-when-compile (require 'cl))
 (require 'eieio)
@@ -138,8 +137,21 @@ let-binding."
 (defvar auth-source-creation-defaults nil
   "Defaults for creating token values.  Usually let-bound.")
 
+(defvar auth-source-creation-prompts nil
+  "Default prompts for token values.  Usually let-bound.")
+
 (make-obsolete 'auth-source-hide-passwords nil "Emacs 24.1")
 
+(defcustom auth-source-save-behavior 'ask
+  "If set, auth-source will respect it for save behavior."
+  :group 'auth-source
+  :version "23.2" ;; No Gnus
+  :type `(choice
+          :tag "auth-source new token save behavior"
+          (const :tag "Always save" t)
+          (const :tag "Never save" nil)
+          (const :tag "Ask" ask)))
+
 (defvar auth-source-magic "auth-source-magic ")
 
 (defcustom auth-source-do-cache t
@@ -164,16 +176,19 @@ If the value is a function, debug messages are logged by calling
   :type `(choice
           :tag "auth-source debugging mode"
           (const :tag "Log using `message' to the *Messages* buffer" t)
+          (const :tag "Log all trivia with `message' to the *Messages* buffer"
+                 trivia)
           (function :tag "Function that takes arguments like `message'")
           (const :tag "Don't log anything" nil)))
 
-(defcustom auth-sources '("~/.authinfo.gpg" "~/.authinfo")
+(defcustom auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")
   "List of authentication sources.
 
 The default will get login and password information from
 \"~/.authinfo.gpg\", which you should set up with the EPA/EPG
 packages to be encrypted.  If that file doesn't exist, it will
-try the unencrypted version \"~/.authinfo\".
+try the unencrypted version \"~/.authinfo\" and the famous
+\"~/.netrc\" file.
 
 See the auth.info manual for details.
 
@@ -256,6 +271,11 @@ If the value is not a list, symmetric encryption will be used."
   (when auth-source-debug
     (apply 'auth-source-do-warn msg)))
 
+(defun auth-source-do-trivia (&rest msg)
+  (when (or (eq auth-source-debug 'trivia)
+            (functionp auth-source-debug))
+    (apply 'auth-source-do-warn msg)))
+
 (defun auth-source-do-warn (&rest msg)
   (apply
     ;; set logger to either the function in auth-source-debug or 'message
@@ -428,12 +448,18 @@ parameter, that parameter will be required in the resulting
 token.  The value for that parameter will be obtained from the
 search parameters or from user input.  If any queries are needed,
 the alist `auth-source-creation-defaults' will be checked for the
-default prompt.
+default value.  If the user, host, or port are missing, the alist
+`auth-source-creation-prompts' will be used to look up the
+prompts IN THAT ORDER (so the 'user prompt will be queried first,
+then 'host, then 'port, and finally 'secret).  Each prompt string
+can use %u, %h, and %p to show the user, host, and port.
 
 Here's an example:
 
 \(let ((auth-source-creation-defaults '((user . \"defaultUser\")
-                                        (A    . \"default A\"))))
+                                        (A    . \"default A\")))
+       (auth-source-creation-prompts
+        '((password . \"Enter IMAP password for %h:%p: \"))))
   (auth-source-search :host '(\"nonesuch\" \"twosuch\") :type 'netrc :max 1
                       :P \"pppp\" :Q \"qqqq\"
                       :create '(A B Q)))
@@ -445,12 +471,11 @@ which says:
 
  Create a new entry if you found none.  The netrc backend will
  automatically require host, user, and port.  The host will be
- 'nonesuch' and Q will be 'qqqq'.  We prompt for A with default
- 'default A', for B and port with default nil, and for the
- user with default 'defaultUser'.  We will not prompt for Q.  The
- resulting token will have keys user, host, port, A, B, and Q.
- It will not have P with any value, even though P is used in the
- search to find only entries that have P set to 'pppp'.\"
+ 'nonesuch' and Q will be 'qqqq'.  We prompt for the password
+ with the shown prompt.  We will not prompt for Q.  The resulting
+ token will have keys user, host, port, A, B, and Q.  It will not
+ have P with any value, even though P is used in the search to
+ find only entries that have P set to 'pppp'.\"
 
 When multiple values are specified in the search parameter, the
 user is prompted for which one.  So :host (X Y Z) would ask the
@@ -499,17 +524,20 @@ must call it to obtain the actual value."
          (keys (loop for i below (length spec) by 2
                      unless (memq (nth i spec) ignored-keys)
                      collect (nth i spec)))
+         (cached (auth-source-remembered-p spec))
+         ;; note that we may have cached results but found is still nil
+         ;; (there were no results from the search)
          (found (auth-source-recall spec))
-         filtered-backends accessor-key found-here goal matches backend)
+         filtered-backends accessor-key backend)
 
-    (if (and found auth-source-do-cache)
+    (if (and cached auth-source-do-cache)
         (auth-source-do-debug
          "auth-source-search: found %d CACHED results matching %S"
          (length found) spec)
 
       (assert
        (or (eq t create) (listp create)) t
-       "Invalid auth-source :create parameter (must be nil, t, or a list): %s %s")
+       "Invalid auth-source :create parameter (must be t or a list): %s %s")
 
       (setq filtered-backends (copy-sequence backends))
       (dolist (backend backends)
@@ -523,66 +551,65 @@ must call it to obtain the actual value."
                 (return))
             (invalid-slot-name))))
 
-      (auth-source-do-debug
+      (auth-source-do-trivia
        "auth-source-search: found %d backends matching %S"
        (length filtered-backends) spec)
 
       ;; (debug spec "filtered" filtered-backends)
-      (setq goal max)
       ;; First go through all the backends without :create, so we can
       ;; query them all.
-      (let ((uspec (copy-sequence spec)))
-       (plist-put uspec :create nil)
-       (dolist (backend filtered-backends)
-         (let ((match (apply
-                       (slot-value backend 'search-function)
-                       :backend backend
-                       uspec)))
-           (when match
-             (push (list backend match) matches)))))
+      (setq found (auth-source-search-backends filtered-backends
+                                               spec
+                                               ;; to exit early
+                                               max
+                                               ;; create and delete
+                                               nil delete))
+
+      (auth-source-do-debug
+       "auth-source-search: found %d results (max %d) matching %S"
+       (length found) max spec)
+
       ;; If we didn't find anything, then we allow the backend(s) to
       ;; create the entries.
       (when (and create
-                (not matches))
-       (dolist (backend filtered-backends)
-         (unless matches
-           (let ((match (apply
-                         (slot-value backend 'search-function)
-                         :backend backend
-                         :create create
-                         :delete delete
-                         spec)))
-             (when match
-               (push (list backend match) matches))))))
-
-      (setq backend (caar matches)
-           found-here (cadar matches))
-
-      (block nil
-       ;; if max is 0, as soon as we find something, return it
-       (when (and (zerop max) (> 0 (length found-here)))
-         (return t))
-
-       ;; decrement the goal by the number of new results
-       (decf goal (length found-here))
-       ;; and append the new results to the full list
-       (setq found (append found found-here))
-
-       (auth-source-do-debug
-        "auth-source-search: found %d results (max %d/%d) in %S matching %S"
-        (length found-here) max goal backend spec)
-
-       ;; return full list if the goal is 0 or negative
-       (when (zerop (max 0 goal))
-         (return found))
-
-       ;; change the :max parameter in the spec to the goal
-       (setq spec (plist-put spec :max goal))
-
-       (when (and found auth-source-do-cache)
-         (auth-source-remember spec found))))
-
-    found))
+                 (not found))
+        (setq found (auth-source-search-backends filtered-backends
+                                                 spec
+                                                 ;; to exit early
+                                                 max
+                                                 ;; create and delete
+                                                 create delete))
+        (auth-source-do-warn
+         "auth-source-search: CREATED %d results (max %d) matching %S"
+         (length found) max spec))
+
+      ;; note we remember the lack of result too, if it's applicable
+      (when auth-source-do-cache
+        (auth-source-remember spec found)))
+
+      found))
+
+(defun auth-source-search-backends (backends spec max create delete)
+  (let (matches)
+    (dolist (backend backends)
+      (when (> max (length matches))   ; when we need more matches...
+        (let ((bmatches (apply
+                         (slot-value backend 'search-function)
+                         :backend backend
+                         ;; note we're overriding whatever the spec
+                         ;; has for :create and :delete
+                         :create create
+                         :delete delete
+                         spec)))
+          (when bmatches
+            (auth-source-do-trivia
+             "auth-source-search-backend: got %d (max %d) in %s:%s matching %S"
+             (length bmatches) max
+             (slot-value backend :type)
+             (slot-value backend :source)
+             spec)
+            (setq matches (append matches bmatches))))))
+    matches))
 
 ;;; (auth-source-search :max 1)
 ;;; (funcall (plist-get (nth 0 (auth-source-search :max 1)) :secret))
@@ -631,6 +658,11 @@ Returns the deleted entries."
   (password-read-from-cache
    (concat auth-source-magic (format "%S" spec))))
 
+(defun auth-source-remembered-p (spec)
+  "Check if SPEC is remembered."
+  (password-in-cache-p
+   (concat auth-source-magic (format "%S" spec))))
+
 (defun auth-source-forget (spec)
   "Forget any cached data matching SPEC exactly.
 
@@ -641,7 +673,10 @@ Returns t or nil for forgotten or not found."
 ;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym))
 
 ;;; (auth-source-remember '(:host "wedd") '(4 5 6))
+;;; (auth-source-remembered-p '(:host "wedd"))
 ;;; (auth-source-remember '(:host "xedd") '(1 2 3))
+;;; (auth-source-remembered-p '(:host "xedd"))
+;;; (auth-source-remembered-p '(:host "zedd"))
 ;;; (auth-source-recall '(:host "xedd"))
 ;;; (auth-source-recall '(:host t))
 ;;; (auth-source-forget+ :host t)
@@ -680,6 +715,15 @@ while \(:host t) would find all host entries."
 
 ;;; Backend specific parsing: netrc/authinfo backend
 
+(defun auth-source-ensure-strings (values)
+  (unless (listp values)
+    (setq values (list values)))
+  (mapcar (lambda (value)
+           (if (numberp value)
+               (format "%s" value)
+             value))
+         values))
+
 (defvar auth-source-netrc-cache nil)
 
 ;;; (auth-source-netrc-parse "~/.authinfo.gpg")
@@ -693,26 +737,37 @@ Note that the MAX parameter is used so we can exit the parse early."
       ;; We got already parsed contents; just return it.
       file
     (when (file-exists-p file)
+      (setq port (auth-source-ensure-strings port))
       (with-temp-buffer
-        (let ((tokens '("machine" "host" "default" "login" "user"
-                        "password" "account" "macdef" "force"
-                        "port" "protocol"))
-              (max (or max 5000))       ; sanity check: default to stop at 5K
-              (modified 0)
-              alist elem result pair)
-         (if (and auth-source-netrc-cache
-                  (equal (car auth-source-netrc-cache)
-                         (nth 5 (file-attributes file))))
-             (insert (base64-decode-string
-                      (rot13-string (cdr auth-source-netrc-cache))))
-           (insert-file-contents file)
-           (when (string-match "\\.gpg\\'" file)
-             ;; Store the contents of the file heavily encrypted in memory.
-             (setq auth-source-netrc-cache
-                   (cons (nth 5 (file-attributes file))
-                         (rot13-string
-                          (base64-encode-string
-                           (buffer-string)))))))
+        (let* ((tokens '("machine" "host" "default" "login" "user"
+                         "password" "account" "macdef" "force"
+                         "port" "protocol"))
+               (max (or max 5000))       ; sanity check: default to stop at 5K
+               (modified 0)
+               (cached (cdr-safe (assoc file auth-source-netrc-cache)))
+               (cached-mtime (plist-get cached :mtime))
+               (cached-secrets (plist-get cached :secret))
+               alist elem result pair)
+
+          (if (and (functionp cached-secrets)
+                   (equal cached-mtime
+                          (nth 5 (file-attributes file))))
+              (progn
+                (auth-source-do-trivia
+                 "auth-source-netrc-parse: using CACHED file data for %s"
+                 file)
+                (insert (funcall cached-secrets)))
+            (insert-file-contents file)
+            ;; cache all netrc files (used to be just .gpg files)
+            ;; Store the contents of the file heavily encrypted in memory.
+            ;; (note for the irony-impaired: they are just obfuscated)
+            (aput 'auth-source-netrc-cache file
+                  (list :mtime (nth 5 (file-attributes file))
+                        :secret (lexical-let ((v (rot13-string
+                                                  (base64-encode-string
+                                                   (buffer-string)))))
+                                  (lambda () (base64-decode-string
+                                         (rot13-string v)))))))
           (goto-char (point-min))
           ;; Go through the file, line by line.
           (while (and (not (eobp))
@@ -858,7 +913,7 @@ See `auth-source-search' for details on SPEC."
 
     ;; if we need to create an entry AND none were found to match
     (when (and create
-               (= 0 (length results)))
+               (not results))
 
       ;; create based on the spec and record the value
       (setq results (or
@@ -873,6 +928,22 @@ See `auth-source-search' for details on SPEC."
                             (plist-put spec :create nil)))))
     results))
 
+(defun auth-source-netrc-element-or-first (v)
+  (if (listp v)
+      (nth 0 v)
+    v))
+
+;; (auth-source-format-prompt "test %u %h %p" '((?u "user") (?h "host")))
+
+(defun auth-source-format-prompt (prompt alist)
+  "Format PROMPT using %x (for any character x) specifiers in ALIST."
+  (dolist (cell alist)
+    (let ((c (nth 0 cell))
+          (v (nth 1 cell)))
+      (when (and c v)
+        (setq prompt (replace-regexp-in-string (format "%%%c" c) v prompt)))))
+  prompt)
+
 ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t)
 ;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B)))
 
@@ -887,7 +958,6 @@ See `auth-source-search' for details on SPEC."
          (required (append base-required create-extra))
          (file (oref backend source))
          (add "")
-         (show "")
          ;; `valist' is an alist
          valist
          ;; `artificial' will be returned if no creation is needed
@@ -918,63 +988,58 @@ See `auth-source-search' for details on SPEC."
     ;; for each required element
     (dolist (r required)
       (let* ((data (aget valist r))
+             ;; take the first element if the data is a list
+             (data (auth-source-netrc-element-or-first data))
+             ;; this is the default to be offered
              (given-default (aget auth-source-creation-defaults r))
-             ;; the defaults are simple
+             ;; the default supplementals are simple: for the user,
+             ;; try (user-login-name), otherwise take given-default
              (default (cond
-                       ((and (not given-default) (eq r 'user))
-                        (user-login-name))
-                       ;; note we need this empty string
-                       ((and (not given-default) (eq r 'port))
-                        "")
+                       ;; don't default the user name
+                       ;; ((and (not given-default) (eq r 'user))
+                       ;;  (user-login-name))
                        (t given-default)))
-             ;; the prompt's default string depends on the data so far
-             (default-string (if (and default (< 0 (length default)))
-                                 (format " (default %s)" default)
-                               " (no default)"))
-             ;; the prompt should also show what's entered so far
-             (user-value (aget valist 'user))
-             (host-value (aget valist 'host))
-             (port-value (aget valist 'port))
-             ;; note this handles lists by just printing them
-             ;; later we allow the user to use completing-read to pick
-             (info-so-far (concat (if user-value
-                                      (format "%s@" user-value)
-                                    "[USER?]")
-                                  (if host-value
-                                      (format "%s" host-value)
-                                    "[HOST?]")
-                                  (if port-value
-                                      ;; this distinguishes protocol between
-                                      (if (zerop (length port-value))
-                                          "" ; 'entered as "no default"' vs.
-                                        (format ":%s" port-value)) ; given
-                                    ;; and this is when the protocol is unknown
-                                    "[PORT?]"))))
-
-        ;; now prompt if the search SPEC did not include a required key;
-        ;; take the result and put it in `data' AND store it in `valist'
-        (aput 'valist r
-              (setq data
-                    (cond
-                     ((and (null data) (eq r 'secret))
-                      ;; special case prompt for passwords
-                      (read-passwd (format "Password for %s: " info-so-far)))
-                     ((null data)
-                      (read-string
-                       (format "Enter %s for %s%s: "
-                               r info-so-far default-string)
-                       nil nil default))
-                     ((listp data)
-                      (completing-read
-                       (format "Enter %s for %s (TAB to see the choices): "
-                               r info-so-far)
-                       data
-                       nil              ; no predicate
-                       t                ; require a match
-                       ;; note the default is nil, but if the user
-                       ;; hits RET we'll get "", which is handled OK later
-                       nil))
-                     (t data))))
+             (printable-defaults (list
+                                  (cons 'user
+                                        (or
+                                         (auth-source-netrc-element-or-first
+                                          (aget valist 'user))
+                                         (plist-get artificial :user)
+                                         "[any user]"))
+                                  (cons 'host
+                                        (or
+                                         (auth-source-netrc-element-or-first
+                                          (aget valist 'host))
+                                         (plist-get artificial :host)
+                                         "[any host]"))
+                                  (cons 'port
+                                        (or
+                                         (auth-source-netrc-element-or-first
+                                          (aget valist 'port))
+                                         (plist-get artificial :port)
+                                         "[any port]"))))
+             (prompt (or (aget auth-source-creation-prompts r)
+                         (case r
+                           ('secret "%p password for user %u, host %h: ")
+                           ('user "%p user name: ")
+                           ('host "%p host name for user %u: ")
+                           ('port "%p port for user %u and host %h: "))
+                         (format "Enter %s (%%u@%%h:%%p): " r)))
+             (prompt (auth-source-format-prompt
+                      prompt
+                      `((?u ,(aget printable-defaults 'user))
+                        (?h ,(aget printable-defaults 'host))
+                        (?p ,(aget printable-defaults 'port))))))
+
+        ;; store the data, prompting for the password if needed
+        (setq data
+              (cond
+               ((and (null data) (eq r 'secret))
+                ;; special case prompt for passwords
+                (read-passwd prompt))
+               ((null data)
+                (read-string prompt default))
+               (t (or data default))))
 
         (when data
           (setq artificial (plist-put artificial
@@ -987,7 +1052,9 @@ See `auth-source-search' for details on SPEC."
         ;; when r is not an empty string...
         (when (and (stringp data)
                    (< 0 (length data)))
-          (let ((printer (lambda (hide)
+          ;; this function is not strictly necessary but I think it
+          ;; makes the code clearer -tzz
+          (let ((printer (lambda ()
                            ;; append the key (the symbol name of r)
                            ;; and the value in r
                            (format "%s%s %S"
@@ -995,17 +1062,14 @@ See `auth-source-search' for details on SPEC."
                                    (if (zerop (length add)) "" " ")
                                    ;; remap auth-source tokens to netrc
                                    (case r
-                                     ('user "login")
-                                     ('host "machine")
+                                     ('user   "login")
+                                     ('host   "machine")
                                      ('secret "password")
-                                     ('port "port") ; redundant but clearer
+                                     ('port   "port") ; redundant but clearer
                                      (t (symbol-name r)))
                                    ;; the value will be printed in %S format
-                                   (if (and hide (eq r 'secret))
-                                       "HIDDEN_SECRET"
-                                     data)))))
-            (setq add (concat add (funcall printer nil)))
-            (setq show (concat show (funcall printer t)))))))
+                                   data))))
+            (setq add (concat add (funcall printer)))))))
 
     (with-temp-buffer
       (when (file-exists-p file)
@@ -1022,17 +1086,55 @@ See `auth-source-search' for details on SPEC."
       (goto-char (point-max))
 
       ;; ask AFTER we've successfully opened the file
-      (if (y-or-n-p (format "Add to file %s: line [%s]" file show))
+      (let ((prompt (format "Save auth info to file %s? %s: "
+                            file
+                            "y/n/N/e/?"))
+            (done (not (eq auth-source-save-behavior 'ask)))
+            (bufname "*auth-source Help*")
+            k)
+        (while (not done)
+          (message "%s" prompt)
+          (setq k (read-char))
+          (case k
+            (?y (setq done t))
+            (?? (save-excursion
+                  (with-output-to-temp-buffer bufname
+                    (princ
+                     (concat "(y)es, save\n"
+                             "(n)o but use the info\n"
+                             "(N)o and don't ask to save again\n"
+                             "(e)dit the line\n"
+                             "(?) for help as you can see.\n"))
+                  (set-buffer standard-output)
+                  (help-mode))))
+            (?n (setq add ""
+                      done t))
+            (?N (setq add ""
+                      done t
+                      auth-source-save-behavior nil))
+            (?e (setq add (read-string "Line to add: " add)))
+            (t nil)))
+
+        (when (get-buffer-window bufname)
+          (delete-window (get-buffer-window bufname)))
+
+        ;; make sure the info is not saved
+        (when (null auth-source-save-behavior)
+          (setq add ""))
+
+        (when (< 0 (length add))
           (progn
             (unless (bolp)
               (insert "\n"))
             (insert add "\n")
             (write-region (point-min) (point-max) file nil 'silent)
-            (auth-source-do-debug
+            (auth-source-do-warn
              "auth-source-netrc-create: wrote 1 new line to %s"
              file)
-            nil)
-        (list artificial)))))
+            nil))
+
+        (when (eq done t)
+          (list artificial))))))
 
 ;;; Backend specific parsing: Secrets API backend
 
index 204d63d37e47cd218f35de8da3a82118c9f1dec7..989488c0995beb631f8957d643043984eac0a61d 100644 (file)
@@ -441,7 +441,7 @@ manipulated as follows:
                      (setf (gnus-agent-cat-groups old-category)
                            (delete group (gnus-agent-cat-groups
                                           old-category))))))
-               ;; Purge cache as preceeding loop invalidated it.
+               ;; Purge cache as preceding loop invalidated it.
                (setq gnus-category-group-cache nil))
 
              (setcdr (or (assq 'agent-groups category)
@@ -1195,7 +1195,7 @@ downloadable."
            (mapc #'gnus-summary-remove-process-mark
                  (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded))
 
-            ;; The preceeding call to (gnus-agent-summary-fetch-group)
+            ;; The preceding call to (gnus-agent-summary-fetch-group)
             ;; updated the temporary gnus-newsgroup-downloadable to
             ;; remove each article successfully fetched.  Now, I
             ;; update the real gnus-newsgroup-downloadable to only
@@ -1520,14 +1520,14 @@ downloaded into the agent."
            header-number)
       ;; Check each article
       (while (setq article (pop articles))
-        ;; Skip alist entries preceeding this article
+        ;; Skip alist entries preceding this article
         (while (> article (or (caar alist) (1+ article)))
           (setq alist (cdr alist)))
 
         ;; Prune off articles that we have already fetched.
         (unless (and (eq article (caar alist))
                      (cdar alist))
-          ;; Skip headers preceeding this article
+          ;; Skip headers preceding this article
           (while (> article
                     (setq header-number
                           (let* ((header (car headers)))
@@ -3437,7 +3437,7 @@ missing NOV entry.  Run gnus-agent-regenerate-group to restore it.")))
 
                   ;; If considering all articles is set, I can only
                   ;; expire article IDs that are no longer in the
-                  ;; active range (That is, articles that preceed the
+                  ;; active range (That is, articles that precede the
                   ;; first article in the new alist).
                   (if (and gnus-agent-consider-all-articles
                            (>= article-number (car active)))
@@ -3715,7 +3715,7 @@ has been fetched."
                   (gnus-agent-append-to-list tail-uncached v1))
                  (setq arts (cdr arts))
                  (setq ref (cdr ref)))
-                (t ; reference article (v2) preceeds the list being filtered
+                (t ; reference article (v2) precedes the list being filtered
                  (setq ref (cdr ref))))))
       (while arts
        (gnus-agent-append-to-list tail-uncached (pop arts)))
@@ -4020,7 +4020,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
        ;; article (with the exception of the last ID in the list - it's
        ;; special) that no longer appears in the overview.  In this
        ;; situtation, the last article ID in the list implies that it,
-       ;; and every article ID preceeding it, have been fetched from the
+       ;; and every article ID preceding it, have been fetched from the
        ;; server.
 
        (if gnus-agent-consider-all-articles
index 19eee78ab17ff8fd5f499b950df4d4573cf367a9..c64138b43d71a3e494058d74a28196d429f547d5 100644 (file)
@@ -1040,7 +1040,7 @@ Some of these headers are updated automatically.  See
          (item :tag "User-defined" :value 'user-defined)))
 
 (defcustom gnus-article-update-date-headers 1
-  "How often to update the date header.
+  "A number that says how often to update the date header (in seconds).
 If nil, don't update it at all."
   :version "24.1"
   :group 'gnus-article-headers
@@ -1253,6 +1253,24 @@ predicate.  See Info node `(gnus)Customizing Articles'."
   :link '(custom-manual "(gnus)Customizing Articles")
   :type gnus-article-treat-custom)
 
+(gnus-define-group-parameter
+ list-identifier
+ :variable-document
+ "Alist of regexps and correspondent identifiers."
+ :variable-group gnus-article-washing
+ :parameter-type
+ '(choice :tag "Identifier"
+         :value nil
+         (symbol :tag "Item in `gnus-list-identifiers'" none)
+         regexp
+         (const :tag "None" nil))
+ :parameter-document
+ "If non-nil, specify how to remove `identifiers' from articles' subject.
+
+Any symbol is used to look up a regular expression to match the
+banner in `gnus-list-identifiers'.  A string is used as a regular
+expression to match the identifier directly.")
+
 (make-obsolete-variable 'gnus-treat-strip-pgp nil
                        "Gnus 5.10 (Emacs 22.1)")
 
@@ -1725,9 +1743,10 @@ Initialized from `text-mode-syntax-table.")
 (put 'gnus-with-article-headers 'edebug-form-spec '(body))
 
 (defmacro gnus-with-article-buffer (&rest forms)
-  `(with-current-buffer gnus-article-buffer
-     (let ((inhibit-read-only t))
-       ,@forms)))
+  `(when (buffer-live-p (get-buffer gnus-article-buffer))
+     (with-current-buffer gnus-article-buffer
+       (let ((inhibit-read-only t))
+         ,@forms))))
 
 (put 'gnus-with-article-buffer 'lisp-indent-function 0)
 (put 'gnus-with-article-buffer 'edebug-form-spec '(body))
@@ -3055,10 +3074,11 @@ images if any to the browser, and deletes them when exiting the group
 The `gnus-list-identifiers' variable specifies what to do."
   (interactive)
   (let ((inhibit-point-motion-hooks t)
-       (regexp (if (consp gnus-list-identifiers)
-                   (mapconcat 'identity gnus-list-identifiers " *\\|")
-                 gnus-list-identifiers))
-       (inhibit-read-only t))
+        (regexp (or (gnus-parameter-list-identifier gnus-newsgroup-name)
+                    (if (consp gnus-list-identifiers)
+                        (mapconcat 'identity gnus-list-identifiers " *\\|")
+                      gnus-list-identifiers)))
+        (inhibit-read-only t))
     (when regexp
       (save-excursion
        (save-restriction
@@ -3463,7 +3483,7 @@ possible values."
                             combined-lapsed))
     (error "Unknown conversion type: %s" type))
   (condition-case ()
-      (let ((time (date-to-time date)))
+      (let ((time (ignore-errors (date-to-time date))))
        (cond
         ;; Convert to the local timezone.
         ((eq type 'local)
@@ -3515,6 +3535,7 @@ possible values."
                (segments 3)
                lapsed-string)
            (while (and
+                    time
                    (setq lapsed-string
                          (concat " (" (article-lapsed-string time segments) ")"))
                    (> (+ (length date-string)
@@ -4505,13 +4526,10 @@ commands:
        (setq gnus-summary-buffer
              (gnus-summary-buffer-name gnus-newsgroup-name))
        (gnus-summary-set-local-parameters gnus-newsgroup-name)
-       (cond
-        ((and gnus-article-update-date-headers
-              (not article-lapsed-timer))
+       (when article-lapsed-timer
+         (gnus-stop-date-timer))
+       (when gnus-article-update-date-headers
          (gnus-start-date-timer gnus-article-update-date-headers))
-        ((and (not gnus-article-update-date-headers)
-              article-lapsed-timer)
-         (gnus-stop-date-timer)))
        (current-buffer)))))
 
 ;; Set article window start at LINE, where LINE is the number of lines
index 2a45b9363f4a644790ac0b045acea9a8a408a347..419346b7191d22aa91c16599447185486d97c4d5 100644 (file)
@@ -140,7 +140,7 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
              ;; (func number nil)
              ;; Call every `time'
              ((and (numberp time) (null idle))
-              (run-with-timer t time 'gnus-demon-run-callback func)))))
+              (run-with-timer time time 'gnus-demon-run-callback func)))))
       (when timer
         (add-to-list 'gnus-demon-timers timer)))))
 
index 7208889a163a6d0ad758bf9b5f8c847c5183dc30..98b1f3bd18caef48d275a76a455a7a9eff607e11 100644 (file)
@@ -80,9 +80,8 @@ If nil, default to `gravatar-size'."
   "Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
 Set image category to CATEGORY."
   (unless (eq gravatar 'error)
-    (with-current-buffer gnus-article-buffer
+    (gnus-with-article-buffer
       (let ((mark (point-marker))
-           (inhibit-read-only t)
            (inhibit-point-motion-hooks t)
            (case-fold-search t))
        (save-restriction
index 30cd1275e7b30db264060b9911af36c3b3ab520c..9ed3cf02a493fda42c14d0f14438acd885dc91c7 100644 (file)
@@ -3102,7 +3102,7 @@ The user will be prompted for a directory.  The contents of this
 directory will be used as a newsgroup.  The directory should contain
 mail messages or news articles in files that have numeric names."
   (interactive
-   (list (read-file-name "Create group from directory: ")))
+   (list (read-directory-name "Create group from directory: ")))
   (unless (file-exists-p dir)
     (error "No such directory"))
   (unless (file-directory-p dir)
@@ -4400,6 +4400,21 @@ and the second element is the address."
 (defun gnus-group-set-params-info (group params)
   (gnus-group-set-info params group 'params))
 
+;; Ad-hoc function for inserting data from a different newsrc.eld
+;; file.  Use with caution, if at all.
+(defun gnus-import-other-newsrc-file (file)
+  (with-temp-buffer
+    (insert-file file)
+    (let (form)
+      (while (ignore-errors
+              (setq form (read (current-buffer))))
+       (when (and (consp form)
+                  (eq (cadr form) 'gnus-newsrc-alist))
+         (let ((infos (cadr (nth 2 form))))
+           (dolist (info infos)
+             (when (gnus-get-info (car info))
+               (gnus-set-info (car info) info)))))))))
+
 (defun gnus-add-marked-articles (group type articles &optional info force)
   ;; Add ARTICLES of TYPE to the info of GROUP.
   ;; If INFO is non-nil, use that info.  If FORCE is non-nil, don't
index b199dcc572c655e5f65953482af8a7bb8a0cbfa0..093eec33fcda5169a3c9c98a6571db13afd2b407 100644 (file)
@@ -383,11 +383,13 @@ Thank you for your help in stamping out bugs.
 (defvar gnus-article-reply nil)
 (defmacro gnus-setup-message (config &rest forms)
   (let ((winconf (make-symbol "gnus-setup-message-winconf"))
+       (winconf-name (make-symbol "gnus-setup-message-winconf-name"))
        (buffer (make-symbol "gnus-setup-message-buffer"))
        (article (make-symbol "gnus-setup-message-article"))
        (yanked (make-symbol "gnus-setup-yanked-articles"))
        (group (make-symbol "gnus-setup-message-group")))
     `(let ((,winconf (current-window-configuration))
+          (,winconf-name gnus-current-window-configuration)
           (,buffer (buffer-name (current-buffer)))
           (,article gnus-article-reply)
           (,yanked gnus-article-yanked-articles)
@@ -432,7 +434,7 @@ Thank you for your help in stamping out bugs.
           (progn
             ,@forms)
         (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config
-                                     ,yanked)
+                                     ,yanked ',winconf-name)
         (setq gnus-message-buffer (current-buffer))
         (set (make-local-variable 'gnus-message-group-art)
              (cons ,group ,article))
@@ -527,7 +529,8 @@ Gcc: header for archiving purposes."
            (throw 'found (cons (cadr elem) (caddr elem)))))))))
 
 (defun gnus-inews-add-send-actions (winconf buffer article
-                                           &optional config yanked)
+                                           &optional config yanked
+                                           winconf-name)
   (gnus-make-local-hook 'message-sent-hook)
   (add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc
                                 'gnus-inews-do-gcc) nil t)
@@ -538,8 +541,10 @@ Gcc: header for archiving purposes."
        `(lambda (&optional arg)
           (gnus-post-method arg ,gnus-newsgroup-name)))
   (message-add-action
-   `(when (gnus-buffer-exists-p ,buffer)
-      (set-window-configuration ,winconf))
+   `(progn
+      (setq gnus-current-window-configuration ',winconf-name)
+      (when (gnus-buffer-exists-p ,buffer)
+       (set-window-configuration ,winconf)))
    'exit 'postpone 'kill)
   (let ((to-be-marked (cond
                       (yanked
index 794d1642cdd3bed8a8f90a011cba4b8b8e46d75c..ce5a837eaef8ac9db17925bf2f94f6e3cf5f1f59 100644 (file)
@@ -116,10 +116,10 @@ Both ranges must be in ascending order."
                ;; All done with range2
                (setq r nil))
               ((< max1 min2)
-               ;; No overlap: range1 preceeds range2
+               ;; No overlap: range1 precedes range2
                (pop r))
               ((< max2 min1)
-               ;; No overlap: range2 preceeds range1
+               ;; No overlap: range2 precedes range1
                (pop range2))
               ((and (<= min2 min1) (<= max1 max2))
                ;; Complete overlap: range1 removed
@@ -232,10 +232,10 @@ RANGE1 and RANGE2 have to be sorted over <."
     (setq range1 (cdr range1)
           range2 (cdr range2))
     (while (and min1 min2)
-      (cond ((< max1 min2)              ; range1 preceeds range2
+      (cond ((< max1 min2)              ; range1 precedes range2
              (setq range1 (cdr range1)
                    min1 nil))
-            ((< max2 min1)              ; range2 preceeds range1
+            ((< max2 min1)              ; range2 precedes range1
              (setq range2 (cdr range2)
                    min2 nil))
             (t                     ; some sort of overlap is occurring
index e5e2468058c37a7672addac92164c6400542868f..ebfa53f841e8aa0c11f981ec058f070b93412cf8 100644 (file)
@@ -864,6 +864,7 @@ prompt the user for the name of an NNTP server to use."
                               (gnus-get-buffer-create
                                (file-name-nondirectory dribble-file)))
       (set (make-local-variable 'file-precious-flag) t)
+      (setq buffer-save-without-query t)
       (erase-buffer)
       (setq buffer-file-name dribble-file)
       (auto-save-mode t)
@@ -1512,7 +1513,7 @@ If SCAN, request a scan of that group as well."
           (num 0))
 
       ;; These checks are present in gnus-activate-group but skipped
-      ;; due to setting dont-check in the preceeding call.
+      ;; due to setting dont-check in the preceding call.
 
       ;; If a cache is present, we may have to alter the active info.
       (when (and gnus-use-cache info)
@@ -1689,6 +1690,16 @@ If SCAN, request a scan of that group as well."
                            method))
              (setcar elem method))
            (push (list method 'ok) methods)))))
+
+    ;; If we have primary/secondary select methods, but no groups from
+    ;; them, we still want to issue a retrieval request from them.
+    (dolist (method (cons gnus-select-method
+                         gnus-secondary-select-methods))
+      (when (and (not (assoc method type-cache))
+                (gnus-check-backend-function 'request-list (car method)))
+       (with-current-buffer nntp-server-buffer
+         (gnus-read-active-file-1 method nil))))
+
     ;; Start early async retrieval of data.
     (dolist (elem type-cache)
       (destructuring-bind (method method-type infos dummy) elem
@@ -1711,15 +1722,6 @@ If SCAN, request a scan of that group as well."
              (setcar (nthcdr 3 elem)
                      (gnus-retrieve-group-data-early method infos)))))))
 
-    ;; If we have primary/secondary select methods, but no groups from
-    ;; them, we still want to issue a retrieval request from them.
-    (dolist (method (cons gnus-select-method
-                         gnus-secondary-select-methods))
-      (when (and (not (assoc method type-cache))
-                (gnus-check-backend-function 'request-list (car method)))
-       (with-current-buffer nntp-server-buffer
-         (gnus-read-active-file-1 method nil))))
-
     ;; Do the rest of the retrieval.
     (dolist (elem type-cache)
       (destructuring-bind (method method-type infos early-data) elem
@@ -1885,7 +1887,7 @@ If SCAN, request a scan of that group as well."
                             ;; OK - I'm done
                             (setq articles nil))
                            ((< range article)
-                            ;; this range preceeds the article. Leave the range unmodified.
+                            ;; this range precedes the article. Leave the range unmodified.
                             (pop ranges)
                             ranges)
                            ((= range article)
@@ -1908,11 +1910,11 @@ If SCAN, request a scan of that group as well."
                             (setcar ranges min)
                             ranges)
                            ((< max article)
-                            ;; this range preceeds the article. Leave the range unmodified.
+                            ;; this range precedes the article. Leave the range unmodified.
                             (pop ranges)
                             ranges)
                            ((< article min)
-                            ;; this article preceeds the range.  Return null to move to the
+                            ;; this article precedes the range.  Return null to move to the
                             ;; next article
                             nil)
                            (t
index 789308c4ab90b70e861ffeb36bd9749b77f38e5f..a8786e39c7b7ff6052ed8446fdf652ebbd752687 100644 (file)
@@ -1234,7 +1234,7 @@ For example: ((1 . cn-gb-2312) (2 . big5))."
   :type 'boolean
   :group 'gnus-summary-marks)
 
-(defcustom gnus-propagate-marks t
+(defcustom gnus-propagate-marks nil
   "If non-nil, Gnus will store and retrieve marks from the backends.
 This means that marks will be stored both in .newsrc.eld and in
 the backend, and will slow operation down somewhat."
@@ -3853,7 +3853,7 @@ This function is intended to be used in
          ((< c (* 1000 10000)) (format "%1.1fM" (/ c (* 1024.0 1024))))
          (t (format "%dM" (/ c (* 1024.0 1024)))))))
 
-(defcustom gnus-summary-user-date-format-alist
+(defcustom gnus-user-date-format-alist
   '(((gnus-seconds-today) . "Today, %H:%M")
     ((+ 86400 (gnus-seconds-today)) . "Yesterday, %H:%M")
     (604800 . "%A %H:%M")               ; That's one week
@@ -3880,11 +3880,9 @@ respectively."
   :version "24.1"
   :group 'gnus-summary-format
   :type '(alist :key-type sexp :value-type string))
-(make-obsolete-variable 'gnus-user-date-format-alist
-                        'gnus-summary-user-date-format-alist "24.1")
 
 (defun gnus-user-date (messy-date)
-  "Format the messy-date according to `gnus-summary-user-date-format-alist'.
+  "Format the messy-date according to `gnus-user-date-format-alist'.
 Returns \"  ?  \" if there's bad input or if another error occurs.
 Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"."
   (condition-case ()
@@ -3893,7 +3891,7 @@ Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"."
             ;;If we don't find something suitable we'll use this one
             (my-format "%b %d '%y"))
        (let* ((difference (- now messy-date))
-              (templist gnus-summary-user-date-format-alist)
+              (templist gnus-user-date-format-alist)
               (top (eval (caar templist))))
          (while (if (numberp top) (< top difference) (not top))
            (progn
@@ -9525,8 +9523,7 @@ C-u g', show the raw article."
    ((not arg)
     ;; Select the article the normal way.
     (gnus-summary-select-article nil 'force))
-   ((or (equal arg '(16))
-       (eq arg t))
+   ((equal arg '(16))
     ;; C-u C-u g
     (let ((gnus-inhibit-article-treatments t))
       (gnus-summary-select-article nil 'force)))
@@ -12438,7 +12435,10 @@ UNREAD is a sorted list."
        (save-excursion
          (let (setmarkundo)
            ;; Propagate the read marks to the backend.
-           (when (and gnus-propagate-marks
+           (when (and (or gnus-propagate-marks
+                          (gnus-method-option-p
+                           (gnus-find-method-for-group group)
+                           'server-marks))
                       (gnus-check-backend-function 'request-set-mark group))
              (let ((del (gnus-remove-from-range (gnus-info-read info) read))
                    (add (gnus-remove-from-range read (gnus-info-read info))))
index d6aad5390294272a84ad760d454bb63a3805a21e..05ba359547919e9c3ce69c4da30d8d7f815b0ec9 100644 (file)
@@ -366,7 +366,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   (interactive
    (list current-prefix-arg
         (file-name-as-directory
-         (read-file-name "Uudecode and save in dir: "
+         (read-directory-name "Uudecode and save in dir: "
                          gnus-uu-default-dir
                          gnus-uu-default-dir t))))
   (gnus-uu-decode-with-method 'gnus-uu-uustrip-article n dir nil nil t))
@@ -381,7 +381,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   (interactive
    (list current-prefix-arg
         (file-name-as-directory
-         (read-file-name "Unshar and save in dir: "
+         (read-directory-name "Unshar and save in dir: "
                          gnus-uu-default-dir
                          gnus-uu-default-dir t))))
   (gnus-uu-decode-with-method 'gnus-uu-unshar-article n dir nil 'scan t))
@@ -390,12 +390,11 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   "Saves the current article."
   (interactive
    (list current-prefix-arg
-        (read-file-name
-         (if gnus-uu-save-separate-articles
-             "Save articles in dir: "
-           "Save articles in file: ")
-         gnus-uu-default-dir
-         gnus-uu-default-dir)))
+        (if gnus-uu-save-separate-articles
+            (read-directory-name
+             "Save articles in dir: " gnus-uu-default-dir gnus-uu-default-dir)
+          (read-file-name
+           "Save article in file: " gnus-uu-default-dir gnus-uu-default-dir))))
   (setq gnus-uu-saved-article-name file)
   (gnus-uu-decode-with-method 'gnus-uu-save-article n nil t))
 
@@ -404,7 +403,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   (interactive
    (list current-prefix-arg
         (file-name-as-directory
-         (read-file-name "Unbinhex and save in dir: "
+         (read-directory-name "Unbinhex and save in dir: "
                          gnus-uu-default-dir
                          gnus-uu-default-dir))))
   (setq gnus-uu-binhex-article-name
@@ -416,7 +415,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   (interactive
    (list current-prefix-arg
         (file-name-as-directory
-         (read-file-name "yEnc decode and save in dir: "
+         (read-directory-name "yEnc decode and save in dir: "
                          gnus-uu-default-dir
                          gnus-uu-default-dir))))
   (setq gnus-uu-yenc-article-name nil)
@@ -458,10 +457,11 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   "Saves and views the current article."
   (interactive
    (list current-prefix-arg
-        (read-file-name  (if gnus-uu-save-separate-articles
-                             "Save articles is dir: "
-                           "Save articles in file: ")
-                         gnus-uu-default-dir gnus-uu-default-dir)))
+        (if gnus-uu-save-separate-articles
+            (read-directory-name "Save articles in dir: "
+                                 gnus-uu-default-dir gnus-uu-default-dir)
+          (read-file-name "Save articles in file: "
+                          gnus-uu-default-dir gnus-uu-default-dir))))
   (let ((gnus-view-pseudos (or gnus-view-pseudos 'automatic)))
     (gnus-uu-decode-save n file)))
 
@@ -742,7 +742,7 @@ When called interactively, prompt for REGEXP."
   (interactive
    (list current-prefix-arg
         (file-name-as-directory
-         (read-file-name "Save in dir: "
+         (read-directory-name "Save in dir: "
                          gnus-uu-default-dir
                          gnus-uu-default-dir t))))
   (gnus-uu-decode-with-method 'gnus-uu-decode-postscript-article
index 42acb65ff9fed47c6b41215e4d4a754309641561..57d085a0380d1e17e4e3ea29f2ec7b73063e6c4d 100644 (file)
@@ -1607,7 +1607,8 @@ slower."
     ("nnweb" none)
     ("nnrss" none)
     ("nnagent" post-mail)
-    ("nnimap" post-mail address prompt-address physical-address respool)
+    ("nnimap" post-mail address prompt-address physical-address respool
+     server-marks)
     ("nnmaildir" mail respool address)
     ("nnnil" none))
   "*An alist of valid select methods.
@@ -2545,7 +2546,7 @@ a string, be sure to use a valid format, see RFC 2616."
 (defvar gnus-extended-servers nil)
 
 ;; The carpal mode has been removed, but define the variable for
-;; backwards compatability.
+;; backwards compatibility.
 (defvar gnus-carpal nil)
 (make-obsolete-variable 'gnus-carpal nil "Emacs 24.1")
 
@@ -3114,6 +3115,10 @@ Return nil if not defined."
 (defmacro gnus-get-info (group)
   `(nth 2 (gnus-gethash ,group gnus-newsrc-hashtb)))
 
+(defun gnus-set-info (group info)
+  (setcar (nthcdr 2 (gnus-gethash group gnus-newsrc-hashtb))
+         info))
+
 ;;; Load the compatibility functions.
 
 (require 'gnus-ems)
@@ -3263,7 +3268,7 @@ g -- Group name."
        ((= c ?d)
         (point))
        ((= c ?D)
-        (read-file-name prompt nil default-directory 'lambda))
+        (read-directory-name prompt nil default-directory 'lambda))
        ((= c ?f)
         (read-file-name prompt nil nil 'lambda))
        ((= c ?F)
index 58daf1baf944972b1485fe7a071b5f05f5119498..08c59b00bfc1c9995d4ae0c134cd844a95d9a7cc 100644 (file)
   :group 'message-buffers
   :type '(choice function (const nil)))
 
-(defcustom message-cite-style nil
-  "The overall style to be used when yanking cited text.
-Values are either `traditional' (cited text first),
-`top-post' (cited text at the bottom), or nil (don't override the
-individual message variables)."
-  :version "24.1"
-  :group 'message-various
-  :type '(choice (const :tag "None" :value nil)
-                (const :tag "Traditional" :value traditional)
-                (const :tag "Top-post" :value top-post)))
-
 (defcustom message-fcc-handler-function 'message-output
   "*A function called to save outgoing articles.
 This function will be called with the name of the file to store the
@@ -1088,6 +1077,71 @@ needed."
   :link '(custom-manual "(message)Insertion Variables")
   :group 'message-insertion)
 
+(defcustom message-cite-reply-position 'traditional
+  "*Where the reply should be positioned.
+If `traditional', reply inline.
+If `above', reply above quoted text.
+If `below', reply below quoted text.
+
+Note: Many newsgroups frown upon nontraditional reply styles. You
+probably want to set this variable only for specific groups,
+e.g. using `gnus-posting-styles':
+
+  (eval (set (make-local-variable 'message-cite-reply-above) 'above))"
+  :type '(choice (const :tag "Reply inline" 'traditional)
+                (const :tag "Reply above" 'above)
+                (const :tag "Reply below" 'below))
+  :group 'message-insertion)
+
+(defcustom message-cite-style nil
+  "*The overall style to be used when yanking cited text.
+Value is either `nil' (no variable overrides) or a let-style list
+of pairs (VARIABLE VALUE) that will be bound in
+`message-yank-original' to do the quoting.
+
+Presets to impersonate popular mail agents are found in the
+message-cite-style-* variables.  This variable is intended for
+use in `gnus-posting-styles', such as:
+
+  ((posting-from-work-p) (eval (set (make-local-variable 'message-cite-style) message-cite-style-outlook)))"
+  :version "24.1"
+  :group 'message-insertion
+  :type '(choice (const :tag "Do not override variables" :value nil)
+                (const :tag "MS Outlook" :value message-cite-style-outlook)
+                (const :tag "Mozilla Thunderbird" :value message-cite-style-thunderbird)
+                (const :tag "Gmail" :value message-cite-style-gmail)
+                (variable :tag "User-specified")))
+
+(defconst message-cite-style-outlook
+  '((message-cite-function  'message-cite-original)
+    (message-citation-line-function  'message-insert-formatted-citation-line)
+    (message-cite-reply-position 'above)
+    (message-yank-prefix  "")
+    (message-yank-cited-prefix  "")
+    (message-yank-empty-prefix  "")
+    (message-citation-line-format  "\n\n-----------------------\nOn %a, %b %d %Y, %N wrote:\n"))
+  "Message citation style used by MS Outlook. Use with message-cite-style.")
+
+(defconst message-cite-style-thunderbird
+  '((message-cite-function  'message-cite-original)
+    (message-citation-line-function  'message-insert-formatted-citation-line)
+    (message-cite-reply-position 'above)
+    (message-yank-prefix  "> ")
+    (message-yank-cited-prefix  ">")
+    (message-yank-empty-prefix  ">")
+    (message-citation-line-format "On %D %R %p, %N wrote:"))
+  "Message citation style used by Mozilla Thunderbird. Use with message-cite-style.")
+
+(defconst message-cite-style-gmail
+  '((message-cite-function  'message-cite-original)
+    (message-citation-line-function  'message-insert-formatted-citation-line)
+    (message-cite-reply-position 'above)
+    (message-yank-prefix  "    ")
+    (message-yank-cited-prefix  "    ")
+    (message-yank-empty-prefix  "    ")
+    (message-citation-line-format "On %e %B %Y %R, %f wrote:\n"))
+  "Message citation style used by Gmail. Use with message-cite-style.")
+
 (defcustom message-distribution-function nil
   "*Function called to return a Distribution header."
   :group 'message-news
@@ -1814,7 +1868,12 @@ You must have the \"hashcash\" binary installed, see `hashcash-path'."
 
 (defvar        message-options nil
   "Some saved answers when sending message.")
-(make-variable-buffer-local 'message-options)
+;; FIXME: On XEmacs this causes problems since let-binding like:
+;; (let ((message-options message-options)) ...)
+;; as in `message-send' and `mml-preview' loses to buffer-local
+;; variable initialization.
+(unless (featurep 'xemacs)
+  (make-variable-buffer-local 'message-options))
 
 (defvar message-send-mail-real-function nil
   "Internal send mail function.")
@@ -3645,17 +3704,6 @@ To use this automatically, you may add this function to
       (while (re-search-forward citexp nil t)
        (replace-match (if remove "" "\n"))))))
 
-(defvar message-cite-reply-above nil
-  "If non-nil, start own text above the quote.
-
-Note: Top posting is bad netiquette.  Don't use it unless you
-really must.  You probably want to set variable only for specific
-groups, e.g. using `gnus-posting-styles':
-
-  (eval (set (make-local-variable 'message-cite-reply-above) t))
-
-This variable has no effect in news postings.")
-
 (defun message-yank-original (&optional arg)
   "Insert the message being replied to, if any.
 Puts point before the text and mark after.
@@ -3669,49 +3717,49 @@ prefix, and don't delete any headers."
   (interactive "P")
   (let ((modified (buffer-modified-p))
        body-text)
-    (when (and message-reply-buffer
-              message-cite-function)
-      (when message-cite-reply-above
-       (if (and (not (message-news-p))
-                (or (eq message-cite-reply-above 'is-evil)
-                    (y-or-n-p "\
-Top posting is bad netiquette.  Please don't top post unless you really must.
-Really top post? ")))
+    ;; eval the let forms contained in message-cite-style
+    (eval
+     `(let ,message-cite-style
+       (when (and message-reply-buffer
+                  message-cite-function)
+         (when (equal message-cite-reply-position 'above)
            (save-excursion
              (setq body-text
                    (buffer-substring (message-goto-body)
                                      (point-max)))
-             (delete-region (message-goto-body) (point-max)))
-         (set (make-local-variable 'message-cite-reply-above) nil)))
-      (if (bufferp message-reply-buffer)
-         (delete-windows-on message-reply-buffer t))
-      (push-mark (save-excursion
-                  (cond
-                   ((bufferp message-reply-buffer)
-                    (insert-buffer-substring message-reply-buffer))
-                   ((and (consp message-reply-buffer)
-                         (functionp (car message-reply-buffer)))
-                    (apply (car message-reply-buffer)
-                           (cdr message-reply-buffer))))
-                  (unless (bolp)
-                    (insert ?\n))
-                  (point)))
-      (unless arg
-       (funcall message-cite-function)
-       (unless (eq (char-before (mark t)) ?\n)
-         (let ((pt (point)))
-           (goto-char (mark t))
-           (insert-before-markers ?\n)
-           (goto-char pt))))
-      (when message-cite-reply-above
-       (message-goto-body)
-       (insert body-text)
-       (insert (if (bolp) "\n" "\n\n"))
-       (message-goto-body))
-      ;; Add a `message-setup-very-last-hook' here?
-      ;; Add `gnus-article-highlight-citation' here?
-      (unless modified
-       (setq message-checksum (message-checksum))))))
+             (delete-region (message-goto-body) (point-max))))
+         (if (bufferp message-reply-buffer)
+             (delete-windows-on message-reply-buffer t))
+         (push-mark (save-excursion
+                      (cond
+                       ((bufferp message-reply-buffer)
+                        (insert-buffer-substring message-reply-buffer))
+                       ((and (consp message-reply-buffer)
+                             (functionp (car message-reply-buffer)))
+                        (apply (car message-reply-buffer)
+                               (cdr message-reply-buffer))))
+                      (unless (bolp)
+                        (insert ?\n))
+                      (point)))
+         (unless arg
+           (funcall message-cite-function)
+           (unless (eq (char-before (mark t)) ?\n)
+             (let ((pt (point)))
+               (goto-char (mark t))
+               (insert-before-markers ?\n)
+               (goto-char pt))))
+         (case message-cite-reply-position
+           ('above
+            (message-goto-body)
+            (insert body-text)
+            (insert (if (bolp) "\n" "\n\n"))
+            (message-goto-body))
+           ('below
+            (message-goto-signature)))
+         ;; Add a `message-setup-very-last-hook' here?
+         ;; Add `gnus-article-highlight-citation' here?
+         (unless modified
+           (setq message-checksum (message-checksum))))))))
 
 (defun message-yank-buffer (buffer)
   "Insert BUFFER into the current buffer and quote it."
index 83b8c4162835f3931127ba558e11b06738760e87..aa4ecbc3b0f641ad97eb463e533d11f98ef3697a 100644 (file)
@@ -62,8 +62,9 @@ it will default to `imap'.")
 
 (defvoo nnimap-stream 'undecided
   "How nnimap will talk to the IMAP server.
-Values are `ssl', `network', `starttls' or `shell'.
-The default is to try `ssl' first, and then `network'.")
+Values are `ssl', `network', `network-only, `starttls' or
+`shell'.  The default is to try `ssl' first, and then
+`network'.")
 
 (defvoo nnimap-shell-program (if (boundp 'imap-shell-program)
                                 (if (listp imap-shell-program)
@@ -72,14 +73,15 @@ The default is to try `ssl' first, and then `network'.")
                               "ssh %s imapd"))
 
 (defvoo nnimap-inbox nil
-  "The mail box where incoming mail arrives and should be split out of.")
+  "The mail box where incoming mail arrives and should be split out of.
+For example, \"INBOX\".")
 
 (defvoo nnimap-split-methods nil
   "How mail is split.
-Uses the same syntax as nnmail-split-methods")
+Uses the same syntax as `nnmail-split-methods'.")
 
 (defvoo nnimap-split-fancy nil
-  "Uses the same syntax as nnmail-split-fancy.")
+  "Uses the same syntax as `nnmail-split-fancy'.")
 
 (defvoo nnimap-unsplittable-articles '(%Deleted %Seen)
   "Articles with the flags in the list will not be considered when splitting.")
@@ -336,7 +338,7 @@ textual parts.")
                  (eq nnimap-stream 'starttls))
              (nnheader-message 7 "Opening connection to %s..."
                                nnimap-address)
-             '("143" "imap"))
+             '("imap" "143"))
             ((eq nnimap-stream 'shell)
              (nnheader-message 7 "Opening connection to %s via shell..."
                                nnimap-address)
@@ -344,16 +346,16 @@ textual parts.")
             ((memq nnimap-stream '(ssl tls))
              (nnheader-message 7 "Opening connection to %s via tls..."
                                nnimap-address)
-             '("143" "993" "imap" "imaps"))
+             '("imaps" "imap" "993" "143"))
             (t
              (error "Unknown stream type: %s" nnimap-stream))))
           (proto-stream-always-use-starttls t)
            login-result credentials)
       (when nnimap-server-port
-       (setq ports (append ports (list nnimap-server-port))))
+       (push nnimap-server-port ports))
       (destructuring-bind (stream greeting capabilities stream-type)
          (open-protocol-stream
-          "*nnimap*" (current-buffer) nnimap-address (car (last ports))
+          "*nnimap*" (current-buffer) nnimap-address (car ports)
           :type nnimap-stream
           :shell-command nnimap-shell-program
           :capability-command "1 CAPABILITY\r\n"
@@ -1150,6 +1152,7 @@ textual parts.")
          (setf (nnimap-examined nnimap-object) group)
          (if (and qresyncp
                   uidvalidity
+                  active
                   modseq)
              (push
               (list (nnimap-send-command "EXAMINE %S (%s (%s %s))"
@@ -1493,10 +1496,22 @@ textual parts.")
            (setq start (point))
            (goto-char end))
          (while (re-search-forward "^\\* [0-9]+ FETCH " start t)
-           (setq elems (read (current-buffer)))
-           (push (cons (cadr (memq 'UID elems))
-                       (cadr (memq 'FLAGS elems)))
-                 articles))
+           (let ((p (point)))
+             ;; FIXME: For FETCH lines like "* 2971 FETCH (FLAGS (%Recent) UID
+             ;; 12509 MODSEQ (13419098521433281274))" we get an
+             ;; overflow-error.  The handler simply deletes that large number
+             ;; and reads again.  But maybe there's a better fix...
+             (setq elems (condition-case nil (read (current-buffer))
+                           (overflow-error
+                            ;; After an overflow-error, point is just after
+                            ;; the too large number.  So delete it and try
+                            ;; again.
+                            (delete-region (point) (progn (backward-word) (point)))
+                            (goto-char p)
+                            (read (current-buffer)))))
+             (push (cons (cadr (memq 'UID elems))
+                         (cadr (memq 'FLAGS elems)))
+                   articles)))
          (push (nconc (list group uidnext totalp permanent-flags uidvalidity
                             vanished highestmodseq)
                       articles)
index 8e91c68b3914bea27e6a9b9d0e5397e442cdbd27..eaaac3f88ceafd2644a69a11e2d3deab36fdacd1 100644 (file)
 ;; Imap variables
 
 (defvar nnir-imap-search-arguments
-  '(("Whole message" . "TEXT")
-    ("Subject" . "SUBJECT")
-    ("To" . "TO")
-    ("From" . "FROM")
-    ("Imap" . ""))
+  '(("whole message" . "TEXT")
+    ("subject" . "SUBJECT")
+    ("to" . "TO")
+    ("from" . "FROM")
+    ("body" . "BODY")
+    ("imap" . ""))
   "Mapping from user readable keys to IMAP search items for use in nnir")
 
 (defvar nnir-imap-search-other "HEADER %S"
@@ -335,7 +336,7 @@ result, `gnus-retrieve-headers' will be called instead."
   :type '(function)
   :group 'nnir)
 
-(defcustom nnir-imap-default-search-key "Whole message"
+(defcustom nnir-imap-default-search-key "whole message"
   "*The default IMAP search key for an nnir search. Must be one of
   the keys in `nnir-imap-search-arguments'. To use raw imap queries
   by default set this to \"Imap\"."
@@ -1500,11 +1501,14 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
                (setq search-func (cadr (assoc nnir-search-engine
                                               nnir-engines)))
                (if search-func
-                   (funcall search-func
-                            (if nnir-extra-parms
-                                (nnir-read-parms q nnir-search-engine)
-                              q)
-                            server (cadr x))
+                   (funcall
+                    search-func
+                    (if nnir-extra-parms
+                        (or (and (eq nnir-search-engine 'imap)
+                                 (assq 'criteria q) q)
+                            (setq q (nnir-read-parms q nnir-search-engine)))
+                      q)
+                    server (cadr x))
                  nil)))
            groups))))
 
index b2336e13b643c0ec4ac9958e75d51b86b2a203ff..8906a036779d1124f8630e469c89b1b63aec031a 100644 (file)
@@ -1215,7 +1215,8 @@ FUNC will be called with the group name to determine the article number."
              ;; This is the final group, which is used as a
              ;; catch-all.
              (when (and (not group-art)
-                        (not nnmail-inhibit-default-split-group))
+                        (or (equal "" (nth 1 method))
+                            (not nnmail-inhibit-default-split-group)))
                (setq group-art
                      (list (cons (car method)
                                  (funcall func (car method))))))))
index 09ecfb8f6b7f49d0e7470c69f31aabaca8cfc93f..66a6365cb3bd20b859b9042aba9023ac35558c08 100644 (file)
@@ -1672,7 +1672,7 @@ password contained in '~/.nntp-authinfo'."
 
         ;; Some nntp servers seem to have an extension to the XOVER
         ;; extension.  On these servers, requesting an article range
-        ;; preceeding the active range does not return an error as
+        ;; preceding the active range does not return an error as
         ;; specified in the RFC.  What we instead get is the NOV entry
         ;; for the first available article.  Obviously, a client can
         ;; use that entry to avoid making unnecessary requests.  The
index 31b2665a64499b6a41c558a6f30e68ef8fd2d989..2111d34eac5a3c28f6e822947679fdcb55d0f462 100644 (file)
@@ -98,39 +98,40 @@ require \"fileinto\";
 
 (defvar sieve-manage-buffer nil)
 (defvar sieve-buffer-header-end nil)
+(defvar sieve-buffer-script-name nil
+  "The real script name of the buffer.")
+(make-local-variable 'sieve-buffer-script-name)
 
 ;; Sieve-manage mode:
 
-(defvar sieve-manage-mode-map nil
+(defvar sieve-manage-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; various
+    (define-key map "?" 'sieve-help)
+    (define-key map "h" 'sieve-help)
+    (define-key map "q" 'sieve-bury-buffer)
+    ;; activating
+    (define-key map "m" 'sieve-activate)
+    (define-key map "u" 'sieve-deactivate)
+    (define-key map "\M-\C-?" 'sieve-deactivate-all)
+    ;; navigation keys
+    (define-key map "\C-p" 'sieve-prev-line)
+    (define-key map [up] 'sieve-prev-line)
+    (define-key map "\C-n" 'sieve-next-line)
+    (define-key map [down] 'sieve-next-line)
+    (define-key map " " 'sieve-next-line)
+    (define-key map "n" 'sieve-next-line)
+    (define-key map "p" 'sieve-prev-line)
+    (define-key map "\C-m" 'sieve-edit-script)
+    (define-key map "f" 'sieve-edit-script)
+    (define-key map "o" 'sieve-edit-script-other-window)
+    (define-key map "r" 'sieve-remove)
+    (define-key map "q" 'sieve-manage-quit)
+    (define-key map [(down-mouse-2)] 'sieve-edit-script)
+    (define-key map [(down-mouse-3)] 'sieve-manage-mode-menu)
+    map)
   "Keymap for `sieve-manage-mode'.")
 
-(if sieve-manage-mode-map
-    ()
-  (setq sieve-manage-mode-map (make-sparse-keymap))
-  (suppress-keymap sieve-manage-mode-map)
-  ;; various
-  (define-key sieve-manage-mode-map "?" 'sieve-help)
-  (define-key sieve-manage-mode-map "h" 'sieve-help)
-  (define-key sieve-manage-mode-map "q" 'sieve-bury-buffer)
-  ;; activating
-  (define-key sieve-manage-mode-map "m" 'sieve-activate)
-  (define-key sieve-manage-mode-map "u" 'sieve-deactivate)
-  (define-key sieve-manage-mode-map "\M-\C-?" 'sieve-deactivate-all)
-  ;; navigation keys
-  (define-key sieve-manage-mode-map "\C-p" 'sieve-prev-line)
-  (define-key sieve-manage-mode-map [up] 'sieve-prev-line)
-  (define-key sieve-manage-mode-map "\C-n" 'sieve-next-line)
-  (define-key sieve-manage-mode-map [down] 'sieve-next-line)
-  (define-key sieve-manage-mode-map " " 'sieve-next-line)
-  (define-key sieve-manage-mode-map "n" 'sieve-next-line)
-  (define-key sieve-manage-mode-map "p" 'sieve-prev-line)
-  (define-key sieve-manage-mode-map "\C-m" 'sieve-edit-script)
-  (define-key sieve-manage-mode-map "f" 'sieve-edit-script)
-  (define-key sieve-manage-mode-map "o" 'sieve-edit-script-other-window)
-  (define-key sieve-manage-mode-map "r" 'sieve-remove)
-  (define-key sieve-manage-mode-map [(down-mouse-2)] 'sieve-edit-script)
-  (define-key sieve-manage-mode-map [(down-mouse-3)] 'sieve-manage-mode-menu))
-
 (easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map
   "Sieve Menu."
   '("Manage Sieve"
@@ -138,21 +139,21 @@ require \"fileinto\";
     ["Activate script" sieve-activate t]
     ["Deactivate script" sieve-deactivate t]))
 
-(define-derived-mode sieve-manage-mode fundamental-mode "SIEVE"
+(define-derived-mode sieve-manage-mode fundamental-mode "Sieve-manage"
   "Mode used for sieve script management."
-  (setq mode-name "SIEVE")
   (buffer-disable-undo (current-buffer))
   (setq truncate-lines t)
   (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map))
 
 (put 'sieve-manage-mode 'mode-class 'special)
 
-;; This is necessary to allow correct handling of \\[cvs-mode-diff-map]
-;; in substitute-command-keys.
-;(fset 'sieve-manage-mode-map sieve-manage-mode-map)
-
 ;; Commands used in sieve-manage mode:
 
+(defun sieve-manage-quit ()
+  "Quit."
+  (interactive)
+  (kill-buffer (current-buffer)))
+
 (defun sieve-activate (&optional pos)
   (interactive "d")
   (let ((name (sieve-script-at-point)) err)
@@ -204,7 +205,10 @@ require \"fileinto\";
       (switch-to-buffer (get-buffer-create "template.siv"))
       (insert sieve-template))
     (sieve-mode)
-    (message "Press C-c C-l to upload script to server.")))
+    (setq sieve-buffer-script-name name)
+    (message
+     (substitute-command-keys
+      "Press \\[sieve-upload] to upload script to server."))))
 
 (defmacro sieve-change-region (&rest body)
   "Turns off sieve-region before executing BODY, then re-enables it after.
@@ -337,13 +341,18 @@ Server  : " server ":" (or port "2000") "
     ;; get list of script names and print them
     (let ((scripts (sieve-manage-listscripts sieve-manage-buffer)))
       (if (null scripts)
-         (insert (format (concat "No scripts on server, press RET on %s to "
-                                 "create a new script.\n") sieve-new-script))
-       (insert (format (concat "%d script%s on server, press RET on a script "
-                               "name edits it, or\npress RET on %s to create "
-                               "a new script.\n") (length scripts)
-                               (if (eq (length scripts) 1) "" "s")
-                               sieve-new-script)))
+         (insert
+           (substitute-command-keys
+            (format
+             "No scripts on server, press \\[sieve-edit-script] on %s to create a new script.\n"
+             sieve-new-script)))
+       (insert
+         (substitute-command-keys
+          (format (concat "%d script%s on server, press \\[sieve-edit-script] on a script "
+                          "name edits it, or\npress \\[sieve-edit-script] on %s to create "
+                          "a new script.\n") (length scripts)
+                          (if (eq (length scripts) 1) "" "s")
+                          sieve-new-script))))
       (save-excursion
        (sieve-insert-scripts (list sieve-new-script))
        (sieve-insert-scripts scripts)))
@@ -363,15 +372,15 @@ Server  : " server ":" (or port "2000") "
 ;;;###autoload
 (defun sieve-upload (&optional name)
   (interactive)
-  (unless name
-    (setq name (buffer-name)))
   (when (or (get-buffer sieve-buffer) (call-interactively 'sieve-manage))
     (let ((script (buffer-string)) err)
       (with-current-buffer (get-buffer sieve-buffer)
-       (setq err (sieve-manage-putscript name script sieve-manage-buffer))
+       (setq err (sieve-manage-putscript
+                   (or name sieve-buffer-script-name (buffer-name))
+                   script sieve-manage-buffer))
        (if (sieve-manage-ok-p err)
-           (message (concat
-                     "Sieve upload done.  Use `C-c RET' to manage scripts."))
+           (message (substitute-command-keys
+                     "Sieve upload done.  Use \\[sieve-manage] to manage scripts."))
          (message "Sieve upload failed: %s" (nth 2 err)))))))
 
 ;;;###autoload
index 58df45bc33c3b0b120ed7d3cfb94d2e64373ee02..35f8c5e8e371bb54f9d1118386affe2e9af2aee8 100644 (file)
@@ -502,7 +502,8 @@ suitable file is found, return nil."
       (let* ((advertised (gethash def advertised-signature-table t))
             (arglist (if (listp advertised)
                          advertised (help-function-arglist def)))
-            (doc (documentation function))
+            (doc (condition-case err (documentation function)
+                    (error (format "No Doc! %S" err))))
             (usage (help-split-fundoc doc function)))
        (with-current-buffer standard-output
          ;; If definition is a keymap, skip arglist note.
@@ -773,15 +774,21 @@ it is displayed along with the global value."
                (setq extra-line t)
                (if (member (cons variable val) dir-local-variables-alist)
                    (let ((file (and (buffer-file-name)
-                                    (not (file-remote-p (buffer-file-name)))
-                                    (dir-locals-find-file (buffer-file-name)))))
+                                      (not (file-remote-p (buffer-file-name)))
+                                      (dir-locals-find-file
+                                       (buffer-file-name))))
+                          (type "file"))
                      (princ "  This variable is a directory local variable")
                      (when file
-                       (princ (concat "\n  from the file \""
-                                      (if (consp file)
-                                          (car file)
-                                        file)
-                                      "\"")))
+                        (if (consp file) ; result from cache
+                            ;; If the cache element has an mtime, we
+                            ;; assume it came from a file.
+                            (if (nth 2 file)
+                                (setq file (expand-file-name
+                                            dir-locals-file (car file)))
+                              ;; Otherwise, assume it was set directly.
+                              (setq type "directory")))
+                       (princ (format "\n  from the %s \"%s\"" type file)))
                      (princ ".\n"))
                  (princ "  This variable is a file local variable.\n")))
 
index 724b0186679350c4c4649418885b5351881bea2d..51d18235e1bed74362acdb490a67d8f025191cf9 100644 (file)
@@ -409,13 +409,16 @@ restore it properly when going back."
 (defun help-buffer ()
   "Return the name of a buffer for inserting help.
 If `help-xref-following' is non-nil, this is the name of the
-current buffer.
-Otherwise, it is *Help*; if no buffer with that name currently
-exists, it is created."
+current buffer.  Signal an error if this buffer is not derived
+from `help-mode'.
+Otherwise, return \"*Help*\", creating a buffer with that name if
+it does not already exist."
   (buffer-name                         ;for with-output-to-temp-buffer
-   (if help-xref-following
-       (current-buffer)
-     (get-buffer-create "*Help*"))))
+   (if (not help-xref-following)
+       (get-buffer-create "*Help*")
+     (unless (derived-mode-p 'help-mode)
+       (error "Current buffer is not in Help mode"))
+     (current-buffer))))
 
 (defvar help-xref-override-view-map
   (let ((map (make-sparse-keymap)))
index d1f2cea83f85753fb869d3e265b883b9c1f5609b..2e67e367a8fc021d566b70d683779d966ab2c3ea 100644 (file)
@@ -1472,8 +1472,8 @@ Removes badly formatted data and ignored directories."
   (add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
 
 (define-minor-mode ido-everywhere
-  "Toggle using ido speed-ups everywhere file and directory names are read.
-With ARG, turn ido speed-up on if arg is positive, off otherwise."
+  "Toggle using ido-mode everywhere file and directory names are read.
+With ARG, turn ido-mode on if arg is positive, off otherwise."
   :global t
   :group 'ido
   (when (get 'ido-everywhere 'file)
@@ -1494,8 +1494,8 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
 
 ;;;###autoload
 (defun ido-mode (&optional arg)
-  "Toggle ido speed-ups on or off.
-With ARG, turn ido speed-up on if arg is positive, off otherwise.
+  "Toggle ido mode on or off.
+With ARG, turn ido-mode on if arg is positive, off otherwise.
 Turning on ido-mode will remap (via a minor-mode keymap) the default
 keybindings for the `find-file' and `switch-to-buffer' families of
 commands to the ido versions of these functions.
index 8fa6963b3d7601ea8afcd4e637ba723ec58a9e46..efe8262645dba611aab2ad1cc4f7d91566aa44fd 100644 (file)
@@ -384,7 +384,7 @@ Used together with `image-dired-cmd-read-exif-data-program-options'."
   "%p -s -s -s -%t \"%f\""
   "Format of command used to read EXIF data.
 Available options are %p which is replaced by
-`image-dired-cmd-write-exif-data-options', %f which is replaced
+`image-dired-cmd-write-exif-data-program', %f which is replaced
 by the image file name and %t which is replaced by the tag name."
   :type 'string
   :group 'image-dired)
index 7e317ea09c018158c7de3fdf9b9f5a2ad398927a..c0fcf19d8414cf1ee9697e191180ada2d16326f0 100644 (file)
@@ -337,7 +337,7 @@ The name of generated file is specified by the variable `ja-dic-filename'."
       (erase-buffer)
       (buffer-disable-undo)
       (insert ";;; ja-dic.el --- dictionary for Japanese input method"
-             " -*-coding: euc-japan; byte-compile-disable-print-circle:t; -*-\n"
+             " -*-coding: euc-japan; -*-\n"
              ";;\tGenerated by the command `skkdic-convert'\n"
              ";;\tDate: " (current-time-string) "\n"
              ";;\tOriginal SKK dictionary file: "
index 8672fca3a8539d035fb01dda125f79b68b8aa86b..5f4d3ea849e373a11755404b485f65ea6c8bbb29 100644 (file)
@@ -366,7 +366,9 @@ This also sets the following values:
                 (coding-system-get coding-system 'ascii-compatible-p)))
        (setq default-file-name-coding-system coding-system)))
   (setq default-terminal-coding-system coding-system)
-  (setq default-keyboard-coding-system coding-system)
+  ;; Prevent default-terminal-coding-system from converting ^M to ^J.
+  (setq default-keyboard-coding-system
+       (coding-system-change-eol-conversion coding-system 'unix))
   ;; Preserve eol-type from existing default-process-coding-systems.
   ;; On non-unix-like systems in particular, these may have been set
   ;; carefully by the user, or by the startup code, to deal with the
index 935d66c613b0288945876126fbbc90d73acec1ef..e68dc8bdc173d3fb357e3afbe6f0cb24fae783eb 100644 (file)
@@ -272,8 +272,7 @@ SPC, 6, 3, 4, or 7 specifing a tone (SPC:\e$(0?v(N\e(B, 6:\e$(0Dm(N\e(B, 3:\e$(0&9Vy\e
 
     (princ ";; Quail package `")
     (princ package)
-    (princ (format "' -*- coding:%s; " coding-system-for-write))
-    (princ "byte-compile-disable-print-circle:t; -*-\n")
+    (princ (format "' -*- coding:%s -*-\n" coding-system-for-write))
     (princ ";;   Generated by the command `titdic-convert'\n;;\tDate: ")
     (princ (current-time-string))
     (princ "\n;;\tOriginal TIT dictionary file: ")
@@ -1154,8 +1153,8 @@ the generated Quail package is saved."
        (setq coding-system-for-write
              (coding-system-change-eol-conversion coding 'unix))
        (with-temp-file (expand-file-name quailfile dirname)
-         (insert (format ";; Quail package `%s' -*- coding:%s; " name coding))
-         (insert "byte-compile-disable-print-circle:t; -*-\n")
+         (insert (format ";; Quail package `%s' -*- coding:%s -*-\n"
+                          name coding))
          (insert ";;   Generated by the command `miscdic-convert'\n")
          (insert ";;   Date: " (current-time-string) "\n")
          (insert ";;   Source dictionary file: " dicfile "\n")
index 5aadac4a3b1e2695f8a033adad20f63ccc28ca45..e13d9673514136a50809ebc9f7c0b4bfb63ca787 100644 (file)
@@ -464,7 +464,8 @@ This is like `describe-bindings', but displays only Isearch keys."
     (define-key map    "\C-w" 'isearch-yank-word-or-char)
     (define-key map "\M-\C-w" 'isearch-del-char)
     (define-key map "\M-\C-y" 'isearch-yank-char)
-    (define-key map    "\C-y" 'isearch-yank-line)
+    (define-key map    "\C-y" 'isearch-yank-kill)
+    (define-key map "\M-s\C-e" 'isearch-yank-line)
 
     (define-key map (char-to-string help-char) isearch-help-map)
     (define-key map [help] isearch-help-map)
index ab9f366274561f4296c3ce0c47da065a3f02699b..b957d9f36c67fe8dd3efccd0d3c10f7f56a0d9df 100644 (file)
@@ -1,4 +1,4 @@
-;;; mailclient.el --- mail sending via system's mail client.  -*- byte-compile-dynamic: t -*-
+;;; mailclient.el --- mail sending via system's mail client.
 
 ;; Copyright (C) 2005-2011 Free Software Foundation
 
index 896400068cc7572e49eab5ea945fe32468c45da5..1277d1d410912bd361a0d5fb918901afff40482c 100644 (file)
@@ -101,7 +101,7 @@ value."
                (cons (cdr header) (funcall (cdr rule) (cdr header))))))))
   headers)
 
-;; Advertized part of the interface; see mail-header, mail-header-set.
+;; Advertised part of the interface; see mail-header, mail-header-set.
 (defvar headers)
 
 (defsubst mail-header (header &optional header-alist)
index 06867f6d92aab6fc52efd5db04c7cc7a20e5b58e..9a892f493d7f8d6241bd98f890c478f4ffa9d486 100644 (file)
@@ -503,7 +503,7 @@ FIELD is the plain text name of a field in the message, such as
 \"subject\" or \"from\".  A FIELD of \"to\" will automatically include
 all text from the \"cc\" field as well.
 
-REGEXP is an expression to match in the preceeding specified FIELD.
+REGEXP is an expression to match in the preceding specified FIELD.
 FIELD/REGEXP pairs continue in the list.
 
 examples:
@@ -3443,6 +3443,16 @@ does not pop any summary buffer."
        (setq yank-action (list 'insert-buffer replybuffer)))
     (push (cons "cc" cc) other-headers)
     (push (cons "in-reply-to" in-reply-to) other-headers)
+    (setq other-headers
+         (mapcar #'(lambda (elt)
+                     (cons (car elt) (if (stringp (cdr elt))
+                                         (rfc2047-decode-string (cdr elt)))))
+                 other-headers))
+    (if (stringp to) (setq to (rfc2047-decode-string to)))
+    (if (stringp in-reply-to)
+       (setq in-reply-to (rfc2047-decode-string in-reply-to)))
+    (if (stringp cc) (setq cc (rfc2047-decode-string cc)))
+    (if (stringp subject) (setq subject (rfc2047-decode-string subject)))
     (prog1
        (compose-mail to subject other-headers noerase
                      switch-function yank-action sendactions
@@ -3450,7 +3460,7 @@ does not pop any summary buffer."
       (if (eq switch-function 'switch-to-buffer-other-frame)
          ;; This is not a standard frame parameter; nothing except
          ;; sendmail.el looks at it.
-         (modify-frame-parameters (selected-frame)
+           (modify-frame-parameters (selected-frame)
                                   '((mail-dedicated-frame . t)))))))
 
 (defun rmail-mail-return ()
@@ -4306,7 +4316,7 @@ With prefix argument N moves forward N messages with these labels.
 
 ;;;***
 \f
-;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "04902da045706fb7f2b0915529ed161b")
+;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "c530622b53038152ca84f2ec9313bd7a")
 ;;; Generated autoloads from rmailmm.el
 
 (autoload 'rmail-mime "rmailmm" "\
index 0bfeb121ca453269613ac3fcfe1c3ec4ba23ec38..96132739b201696758e86d3d61cfb6a456da36d2 100644 (file)
@@ -853,28 +853,33 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
            ((looking-at "[ \t]*\n")
             (setq next (copy-marker (match-end 0) t)))
            (t
-            (rmail-mm-get-boundary-error-message
-             "Malformed boundary" content-type content-disposition
-             content-transfer-encoding)))
-
-      (setq index (1+ index))
-      ;; Handle the part.
-      (if parse-tag
+            ;; The original code signalled an error as below, but
+            ;; this line may be a boundary of nested multipart.  So,
+            ;; we just set `next' to nil to skip this line
+            ;; (rmail-mm-get-boundary-error-message
+            ;;  "Malformed boundary" content-type content-disposition
+            ;;  content-transfer-encoding)
+            (setq next nil)))
+
+      (when next
+       (setq index (1+ index))
+       ;; Handle the part.
+       (if parse-tag
+           (save-restriction
+             (narrow-to-region beg end)
+             (let ((child (rmail-mime-process
+                           nil (format "%s/%d" parse-tag index)
+                           content-type content-disposition)))
+               ;; Display a tagline.
+               (aset (aref (rmail-mime-entity-display child) 1) 1
+                     (aset (rmail-mime-entity-tagline child) 2 t))
+               (push child entities)))
+
+         (delete-region end next)
          (save-restriction
            (narrow-to-region beg end)
-           (let ((child (rmail-mime-process
-                         nil (format "%s/%d" parse-tag index)
-                         content-type content-disposition)))
-             ;; Display a tagline.
-             (aset (aref (rmail-mime-entity-display child) 1) 1
-                   (aset (rmail-mime-entity-tagline child) 2 t))
-             (push child entities)))
-
-       (delete-region end next)
-       (save-restriction
-         (narrow-to-region beg end)
-         (rmail-mime-show)))
-      (goto-char (setq beg next)))
+           (rmail-mime-show)))
+       (goto-char (setq beg next))))
 
     (when parse-tag
       (setq entities (nreverse entities))
index 77ae87b54494ec02a81f6328f1c7238605b0ceb0..0548f24b1dd4ef21fe620e7283dea23c464ab622 100644 (file)
@@ -309,7 +309,6 @@ The default value matches citations like `foo-bar>' plus whitespace."
     (define-key map [remap split-line] 'mail-split-line)
     (define-key map "\C-c\C-q" 'mail-fill-yanked-message)
     (define-key map "\C-c\C-w" 'mail-signature)
-    (define-key map "\C-c\C-v" 'mail-sent-via)
     (define-key map "\C-c\C-c" 'mail-send-and-exit)
     (define-key map "\C-c\C-s" 'mail-send)
     (define-key map "\C-c\C-i" 'mail-attach-file)
@@ -349,9 +348,6 @@ The default value matches citations like `foo-bar>' plus whitespace."
     (define-key map [menu-bar headers expand-aliases]
       '("Expand Aliases" . expand-mail-aliases))
 
-    (define-key map [menu-bar headers sent-via]
-      '("Sent-Via" . mail-sent-via))
-
     (define-key map [menu-bar headers mail-reply-to]
       '("Mail-Reply-To" . mail-mail-reply-to))
 
@@ -665,7 +661,6 @@ Here are commands that move to a header field (and create it if there isn't):
 \\[mail-signature]  mail-signature (insert `mail-signature-file' file).
 \\[mail-yank-original]  mail-yank-original (insert current message, in Rmail).
 \\[mail-fill-yanked-message]  mail-fill-yanked-message (fill what was yanked).
-\\[mail-sent-via]  mail-sent-via (add a sent-via field for each To or CC).
 Turning on Mail mode runs the normal hooks `text-mode-hook' and
 `mail-mode-hook' (in that order)."
   (make-local-variable 'mail-reply-action)
@@ -1346,6 +1341,9 @@ just append to the file, in Babyl format if necessary."
                                   (point)))))
          ;; Insert a copy, with altered header field name.
          (insert-before-markers "Sent-via:" to-line))))))
+
+(make-obsolete 'mail-sent-via "nobody can remember what it is for." "24.1")
+
 \f
 (defun mail-to ()
   "Move point to end of To field, creating it if necessary."
index 0b3ac537c5b44df2ac2557c91ef52ed2bc893cc7..c8c2f8653e214c262dcaf36df63a45cdb15e1a3a 100644 (file)
@@ -623,36 +623,32 @@ and the `Man-section-translations-alist' variables)."
       (concat Man-specified-section-option section " " name))))
 
 (defun Man-support-local-filenames ()
-  "Check the availability of `-l' option of the man command.
-This option allows `man' to interpret command line arguments
-as local filenames.
-Return the value of the variable `Man-support-local-filenames'
-if it was set to nil or t before the call of this function.
-If t, the man command supports `-l' option.  If nil, it doesn't.
-Otherwise, if the value of `Man-support-local-filenames'
-is neither t nor nil, then determine a new value, set it
-to the variable `Man-support-local-filenames' and return
-a new value."
-  (if (or (not Man-support-local-filenames)
-          (eq Man-support-local-filenames t))
-      Man-support-local-filenames
-    (setq Man-support-local-filenames
-          (with-temp-buffer
-            (and (equal (condition-case nil
-                           (let ((default-directory
-                                   ;; Assure that `default-directory' exists
-                                   ;; and is readable.
-                                   (if (and (file-directory-p default-directory)
-                                            (file-readable-p default-directory))
-                                       default-directory
-                                     (expand-file-name "~/"))))
-                             (call-process manual-program nil t nil "--help"))
-                          (error nil))
-                        0)
-                 (progn
-                   (goto-char (point-min))
-                   (search-forward "--local-file" nil t))
-                 t)))))
+  "Return non-nil if the man command supports local filenames.
+Different man programs support this feature in different ways.
+The default Debian man program (\"man-db\") has a `--local-file'
+\(or `-l') option for this purpose.  The default Red Hat man
+program has no such option, but interprets any name containing
+a \"/\" as a local filename.  The function returns either `man-db'
+`man', or nil."
+  (if (eq Man-support-local-filenames 'auto-detect)
+      (setq Man-support-local-filenames
+            (with-temp-buffer
+              (let ((default-directory
+                      ;; Ensure that `default-directory' exists and is readable.
+                      (if (and (file-directory-p default-directory)
+                               (file-readable-p default-directory))
+                        default-directory
+                        (expand-file-name "~/"))))
+                (ignore-errors
+                  (call-process manual-program nil t nil "--help")))
+              (cond ((search-backward "--local-file" nil 'move)
+                     'man-db)
+                    ;; This feature seems to be present in at least ver 1.4f,
+                    ;; which is about 20 years old.
+                    ;; I don't know if this version has an official name?
+                    ((looking-at "^man, versione? [1-9]")
+                     'man))))
+    Man-support-local-filenames))
 
 \f
 ;; ======================================================================
index f3d1682127e4fc6a3f98c44fb755fc94c29071c1..4b904ed2b7a4ea2cbdbb80b3eb8aa804a7a6bb8f 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-05  Antoine Levitt  <antoine.levitt@gmail.com>
+
+       * mh-funcs.el (mh-store-msg, mh-store-buffer):
+       * mh-mime.el (mh-mime-save-parts): Use read-directory-name.
+
 2011-01-13  Chong Yidong  <cyd@stupidchicken.com>
 
        * mh-comp.el (mh-user-agent-compose): New arg RETURN-ACTION.
index ad508416501762f606a3d1355f3b14cd563b1b7c..c3f301e649d5114e749f489145e5f042477e8fd8 100644 (file)
@@ -286,7 +286,7 @@ to \"Directory\", and then enter the name of the directory for
 storing the content of these messages."
   (interactive (list (let ((udir (or mh-store-default-directory
                                      default-directory)))
-                       (read-file-name "Store message in directory: "
+                       (read-directory-name "Store message in directory: "
                                        udir udir nil))))
   (let ((msg-file-to-store (mh-msg-filename (mh-get-msg-num t))))
     (with-current-buffer (get-buffer-create mh-temp-buffer)
@@ -300,7 +300,7 @@ storing the content of these messages."
 See `mh-store-msg' for a description of DIRECTORY."
   (interactive (list (let ((udir (or mh-store-default-directory
                                      default-directory)))
-                       (read-file-name "Store buffer in directory: "
+                       (read-directory-name "Store buffer in directory: "
                                        udir udir nil))))
   (let ((store-directory (expand-file-name directory))
         (sh-start (save-excursion
index de0f49e41db8cc5e0efdd115380b395aa092299f..ba994e73a91f26610c8cc5ee02c80eec7fe48831 100644 (file)
@@ -390,11 +390,11 @@ do the work."
                     (equal nil mh-mime-save-parts-default-directory)
                     (equal t mh-mime-save-parts-default-directory))
                 (not mh-mime-save-parts-directory))
-           (read-file-name "Store in directory: " nil nil t nil))
+           (read-directory-name "Store in directory: " nil nil t))
           ((and (or prompt
                     (equal t mh-mime-save-parts-default-directory))
                 mh-mime-save-parts-directory)
-           (read-file-name (format
+           (read-directory-name (format
                             "Store in directory (default %s): "
                             mh-mime-save-parts-directory)
                            "" mh-mime-save-parts-directory t ""))
index f0d36451b5c0ae18c7b49ca6546c0614b44b67b8..8c9ead479e835f2f9c803360045ded0d1682e185 100644 (file)
@@ -4071,7 +4071,7 @@ directory, so that Emacs will know its current contents."
        (ange-ftp-get-files dir t))))
 \f
 (defun ange-ftp-make-directory (dir &optional parents)
-  (interactive (list (expand-file-name (read-file-name "Make directory: "))))
+  (interactive (list (expand-file-name (read-directory-name "Make directory: "))))
   (if parents
       (let ((parent (file-name-directory (directory-file-name dir))))
        (or (file-exists-p parent)
index 660eb3b968ee9c105578ce3a61579a84431a152d..24dbfc0c30aadaf570e931a0412e401049dd075c 100644 (file)
@@ -798,7 +798,12 @@ first, if that exists."
   (let ((process-environment (copy-sequence process-environment))
        (function (or (and (string-match "\\`mailto:" url)
                           browse-url-mailto-function)
-                     browse-url-browser-function)))
+                     browse-url-browser-function))
+       ;; Ensure that `default-directory' exists and is readable (b#6077).
+       (default-directory (if (and (file-directory-p default-directory)
+                                   (file-readable-p default-directory))
+                              default-directory
+                            (expand-file-name "~/"))))
     ;; When connected to various displays, be careful to use the display of
     ;; the currently selected frame, rather than the original start display,
     ;; which may not even exist any more.
index 1d419dbfa182f24ca9187ae0ae47d15e3702253b..1e3ee91092d0780689fc09027e7e8425f7928c06 100644 (file)
@@ -204,12 +204,14 @@ The ARGUMENTS for each METHOD symbol are:
   `nickserv': NICK PASSWORD [NICKSERV-NICK]
   `chanserv': NICK CHANNEL PASSWORD
   `bitlbee': NICK PASSWORD
+  `quakenet': ACCOUNT PASSWORD
 
 Examples:
  ((\"freenode\" nickserv \"bob\" \"p455w0rd\")
   (\"freenode\" chanserv \"bob\" \"#bobland\" \"passwd99\")
   (\"bitlbee\" bitlbee \"robert\" \"sekrit\")
-  (\"dal.net\" nickserv \"bob\" \"sekrit\" \"NickServ@services.dal.net\"))"
+  (\"dal.net\" nickserv \"bob\" \"sekrit\" \"NickServ@services.dal.net\")
+  (\"quakenet.org\" quakenet \"bobby\" \"sekrit\"))"
   :type '(alist :key-type (string :tag "Server")
                :value-type (choice (list :tag "NickServ"
                                          (const nickserv)
@@ -223,7 +225,11 @@ Examples:
                                    (list :tag "BitlBee"
                                          (const bitlbee)
                                          (string :tag "Nick")
-                                         (string :tag "Password"))))
+                                         (string :tag "Password"))
+                                    (list :tag "QuakeNet"
+                                          (const quakenet)
+                                          (string :tag "Account")
+                                          (string :tag "Password"))))
   :group 'rcirc)
 
 (defcustom rcirc-auto-authenticate-flag t
@@ -232,6 +238,13 @@ See also `rcirc-authinfo'."
   :type 'boolean
   :group 'rcirc)
 
+(defcustom rcirc-authenticate-before-join t
+  "*Non-nil means authenticate to services before joining channels.
+Currently only works with NickServ on some networks."
+  :version "24.1"
+  :type 'boolean
+  :group 'rcirc)
+
 (defcustom rcirc-prompt "> "
   "Prompt string to use in IRC buffers.
 
@@ -282,6 +295,9 @@ Called with 5 arguments, PROCESS, SENDER, RESPONSE, TARGET and TEXT."
   :type 'hook
   :group 'rcirc)
 
+(defvar rcirc-authenticated-hook nil
+  "Hook run after successfully authenticated.")
+
 (defcustom rcirc-always-use-server-buffer-flag nil
   "Non-nil means messages without a channel target will go to the server buffer."
   :type 'boolean
@@ -524,6 +540,8 @@ If ARG is non-nil, instead prompt for connection parameters."
       (setq rcirc-timeout-timer nil)
       (make-local-variable 'rcirc-user-disconnect)
       (setq rcirc-user-disconnect nil)
+      (make-local-variable 'rcirc-user-authenticated)
+      (setq rcirc-user-authenticated nil)
       (make-local-variable 'rcirc-connecting)
       (setq rcirc-connecting t)
 
@@ -2104,7 +2122,8 @@ CHANNELS is a comma- or space-separated string of channel names."
   (let* ((split-channels (split-string channels "[ ,]" t))
          (buffers (mapcar (lambda (ch)
                             (rcirc-get-buffer-create process ch))
-                          split-channels)))
+                          split-channels))
+         (channels (mapconcat 'identity split-channels ",")))
     (rcirc-send-string process (concat "JOIN " channels))
     (when (not (eq (selected-window) (minibuffer-window)))
       (dolist (b buffers) ;; order the new channel buffers in the buffer list
@@ -2427,10 +2446,23 @@ keywords when no KEYWORD is given."
     (setq rcirc-server-name sender)
     (setq rcirc-nick (car args))
     (rcirc-update-prompt)
-    (when rcirc-auto-authenticate-flag (rcirc-authenticate))
+    (if rcirc-auto-authenticate-flag
+        (if rcirc-authenticate-before-join
+            (progn
+              (with-rcirc-process-buffer process
+                (add-hook 'rcirc-authenticated-hook 'rcirc-join-channels-post-auth t t))
+              (rcirc-authenticate))
+          (rcirc-authenticate)
+          (rcirc-join-channels process rcirc-startup-channels))
+      (rcirc-join-channels process rcirc-startup-channels))))
+
+(defun rcirc-join-channels-post-auth (process)
+  "Join `rcirc-startup-channels' after authenticating."
+  (with-rcirc-process-buffer process
     (rcirc-join-channels process rcirc-startup-channels)))
 
 (defun rcirc-handler-PRIVMSG (process sender args text)
+  (rcirc-check-auth-status process sender args text)
   (let ((target (if (rcirc-channel-p (car args))
                     (car args)
                   sender))
@@ -2443,6 +2475,7 @@ keywords when no KEYWORD is given."
       (rcirc-put-nick-channel process sender target rcirc-current-line))))
 
 (defun rcirc-handler-NOTICE (process sender args text)
+  (rcirc-check-auth-status process sender args text)
   (let ((target (car args))
         (message (cadr args)))
     (if (string-match "^\C-a\\(.*\\)\C-a$" message)
@@ -2460,6 +2493,33 @@ keywords when no KEYWORD is given."
                            sender)))
                  message t))))
 
+(defun rcirc-check-auth-status (process sender args text)
+  "Check if the user just authenticated.
+If authenticated, runs `rcirc-authenticated-hook' with PROCESS as
+the only argument."
+  (with-rcirc-process-buffer process
+    (when (and (not rcirc-user-authenticated)
+               rcirc-authenticate-before-join
+               rcirc-auto-authenticate-flag)
+      (let ((target (car args))
+            (message (cadr args)))
+        (when (or
+               (and ;; nickserv
+                (string= sender "NickServ")
+                (string= target rcirc-nick)
+                (member message
+                        (list
+                         (format "You are now identified for \C-b%s\C-b." rcirc-nick)
+                         "Password accepted - you are now recognized."
+                         )))
+               (and ;; quakenet
+                (string= sender "Q")
+                (string= target rcirc-nick)
+                (string-match message "\\`You are now logged in as .+\\.\\'")))
+          (setq rcirc-user-authenticated t)
+          (run-hook-with-args 'rcirc-authenticated-hook process)
+          (remove-hook 'rcirc-authenticated-hook 'rcirc-join-channels-post-auth t))))))
+
 (defun rcirc-handler-WALLOPS (process sender args text)
   (rcirc-print process sender "WALLOPS" sender (car args) t))
 
@@ -2704,26 +2764,33 @@ Passwords are stored in `rcirc-authinfo' (which see)."
            (nick (caddr i))
            (method (cadr i))
            (args (cdddr i)))
-       (when (and (string-match server rcirc-server)
-                  (string-match nick rcirc-nick))
-         (cond ((equal method 'nickserv)
-                (rcirc-send-privmsg
-                 process
+       (when (and (string-match server rcirc-server))
+          (if (and (memq method '(nickserv chanserv bitlbee))
+                   (string-match nick rcirc-nick))
+              ;; the following methods rely on the user's nickname.
+              (case method
+                (nickserv
+                 (rcirc-send-privmsg
+                  process
                   (or (cadr args) "NickServ")
-                  (concat "identify " (car args))))
-               ((equal method 'chanserv)
-                (rcirc-send-privmsg
-                 process
+                  (concat "IDENTIFY " (car args))))
+                (chanserv
+                 (rcirc-send-privmsg
+                  process
                   "ChanServ"
-                  (format "identify %s %s" (car args) (cadr args))))
-               ((equal method 'bitlbee)
-                (rcirc-send-privmsg
-                 process
+                  (format "IDENTIFY %s %s" (car args) (cadr args))))
+                (bitlbee
+                 (rcirc-send-privmsg
+                  process
                   "&bitlbee"
-                  (concat "identify " (car args))))
-               (t
-                (message "No %S authentication method defined"
-                         method))))))))
+                  (concat "IDENTIFY " (car args)))))
+            ;; quakenet authentication doesn't rely on the user's nickname.
+            ;; the variable `nick' here represents the Q account name.
+            (when (eq method 'quakenet)
+              (rcirc-send-privmsg 
+               process
+               "Q@CServe.quakenet.org"
+               (format "AUTH %s %s" nick (car args))))))))))
 
 (defun rcirc-handler-INVITE (process sender args text)
   (rcirc-print process sender "INVITE" nil (mapconcat 'identity args " ") t))
index b4307223ba818605e17548fe63dc76c8f48e369f..b5453733d1db48b7f457d5cb9c91c0cfe1b276eb 100644 (file)
@@ -2,9 +2,10 @@
 
 ;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
 
-;; Author: Alexandru Harsanyi (AlexHarsanyi@gmail.com)
+;; Author: Alexandru Harsanyi <AlexHarsanyi@gmail.com>
 ;; Created: December, 2009
 ;; Keywords: soap, web-services, comm, hypermedia
+;; Package: soap-client
 ;; Homepage: http://code.google.com/p/emacs-soap-client
 
 ;; This file is part of GNU Emacs.
@@ -323,13 +324,18 @@ added to the namespace."
     ;; if name is nil, use TARGET as a name...
     (cond ((soap-element-p target)
            (setq name (soap-element-name target)))
+          ((consp target)               ; a fq name: (namespace . name)
+           (setq name (cdr target)))
           ((stringp target)
            (cond ((string-match "^\\(.*\\):\\(.*\\)$" target)
                   (setq name (match-string 2 target)))
                  (t
                   (setq name target))))))
 
-  (assert name)                         ; by now, name should be valid
+  ;; by now, name should be valid
+  (assert (and name (not (equal name "")))
+          nil
+          "Cannot determine name for namespace link")
   (push (make-soap-namespace-link :name name :target target)
         (gethash name (soap-namespace-elements ns))))
 
@@ -890,7 +896,11 @@ Return a SOAP-NAMESPACE containing the elements."
       (when (consp c)               ; skip string nodes, which are whitespace
         (let ((node-name (soap-l2wk (xml-node-name c))))
           (cond
-            ((eq node-name 'xsd:sequence)
+            ;; The difference between xsd:all and xsd:sequence is that fields
+            ;; in xsd:all are not ordered and they can occur only once.  We
+            ;; don't care about that difference in soap-client.el
+            ((or (eq node-name 'xsd:sequence)
+                 (eq node-name 'xsd:all))
              (setq type (soap-parse-complex-type-sequence c)))
             ((eq node-name 'xsd:complexContent)
              (setq type (soap-parse-complex-type-complex-content c)))
@@ -909,9 +919,10 @@ NODE is assumed to be an xsd:sequence node.  In that case, each
 of its children is assumed to be a sequence element.  Each
 sequence element is parsed constructing the corresponding type.
 A list of these types is returned."
-  (assert (eq (soap-l2wk (xml-node-name node)) 'xsd:sequence)
+  (assert (let ((n (soap-l2wk (xml-node-name node))))
+            (memq n '(xsd:sequence xsd:all)))
           nil
-          "soap-parse-sequence: expecting xsd:sequence node, got %s"
+          "soap-parse-sequence: expecting xsd:sequence or xsd:all node, got %s"
           (soap-l2wk (xml-node-name node)))
   (let (elements)
     (dolist (e (soap-xml-get-children1 node 'xsd:element))
index 7cce9844d7619616eefeae3a36b11a214fa6e43b..8f67d02dc6f77bfc3f317cb8dc6e09a47e204c89 100644 (file)
@@ -2,9 +2,10 @@
 
 ;; Copyright (C) 2010-2011  Free Software Foundation, Inc.
 
-;; Author: Alexandru Harsanyi (AlexHarsanyi@gmail.com)
+;; Author: Alexandru Harsanyi <AlexHarsanyi@gmail.com>
 ;; Created: October 2010
 ;; Keywords: soap, web-services, comm, hypermedia
+;; Package: soap-client
 ;; Homepage: http://code.google.com/p/emacs-soap-client
 
 ;; This file is part of GNU Emacs.
index a98e523a68bccc1ebc33fab6d75d97f33d8521d4..f8bc594e959bed5d4a92d7a732e9e56da23859f1 100644 (file)
@@ -353,7 +353,8 @@ KEY identifies the connection, it is either a process or a vector."
          (write-region
           (point-min) (point-max) tramp-persistency-file-name))))))
 
-(add-hook 'kill-emacs-hook 'tramp-dump-connection-properties)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'tramp-dump-connection-properties))
 (add-hook 'tramp-cache-unload-hook
          '(lambda ()
             (remove-hook 'kill-emacs-hook
index 7d266ad17d7a0ab944590cbd184f95b38f57ab97..58f1e2c6a9e592e31788e3239d080f44a7a4afdb 100644 (file)
@@ -281,6 +281,12 @@ buffer in your bug report.
        (insert ")\n"))
       (insert-buffer-substring elbuf)))
 
+  ;; Dump load-path shadows.
+  (insert "\nload-path shadows:\n==================\n")
+  (ignore-errors
+    (mapc (lambda (x) (when (string-match "tramp" x) (insert x "\n")))
+         (split-string (list-load-path-shadows t) "\n")))
+
   ;; Append buffers only when we are in message mode.
   (when (and
         (eq major-mode 'message-mode)
index 57cc54935dc0300fe74acebb140bc2c7659cb5ab..b3278dc312d1ec067ecded47401cc048d2f637b0 100644 (file)
       (add-to-list 'tramp-methods (cons elt nil)))))
 
 (defconst tramp-gvfs-path-tramp (concat dbus-path-emacs "/Tramp")
-  "The preceeding object path for own objects.")
+  "The preceding object path for own objects.")
 
 (defconst tramp-gvfs-service-daemon "org.gtk.vfs.Daemon"
   "The well known name of the GVFS daemon.")
index 68d06ef34bc2c394f5e936ce53d038b67a5b3364..a59e78714588e32f3cd0776a9fc58ae9a1ea1a37 100644 (file)
@@ -840,7 +840,8 @@ See `fast-lock-get-face-properties'."
 
 (add-hook 'after-save-hook 'fast-lock-save-cache-after-save-file)
 (add-hook 'kill-buffer-hook 'fast-lock-save-cache-before-kill-buffer)
-(add-hook 'kill-emacs-hook 'fast-lock-save-caches-before-kill-emacs)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'fast-lock-save-caches-before-kill-emacs))
 
 ;;;###autoload
 (when (fboundp 'add-minor-mode)
index 6365a1075e08ebf30e84c5847560bca8b655b1d4..7e9a460ea14fb80ca265e948c0e48a6b69a0e7d5 100644 (file)
@@ -51,7 +51,7 @@ Uses `current-word' with the buffer narrowed to the part before
 point."
   (save-restriction
     ;; Narrow in case point is in the middle of a symbol -- we want
-    ;; just the preceeding part.
+    ;; just the preceding part.
     (narrow-to-region (point-min) (point))
     (current-word)))
 
index 5f0908e11c6098075eb67a779e0033be139196e1..e75821b686025831b64561124e3e5229b8a238fc 100644 (file)
@@ -1,3 +1,16 @@
+2011-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * org.el (org-blank-before-new-entry, org-context-in-file-links)
+       (org-refile-targets, org-log-repeat, org-insert-link)
+       (org-speed-command-default-hook, org-speed-command-hook)
+       (org-in-regexps-block-p, org-yank-generic, org-goto-first-child):
+       Fix typos in docstrings.
+       (org-toggle-pretty-entities): Fix typo in message.
+
+2011-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * org-id.el: Don't set `kill-emacs-hook' on noninteractive sessions.
+
 2011-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * org-remember.el (org-remember-mode-map):
@@ -48,7 +61,7 @@
 2010-12-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-inlinetask.el (org-inlinetask-export-templates): Add
-       Sébastien Vauban's suggestion for LaTeX export in docstring. This is
+       Sébastien Vauban's suggestion for LaTeX export in docstring.  This is
        not default as it requires an additional LaTeX package: "todonotes".
 
 2010-12-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org.el (org-make-heading-search-string): Optionally limit number
        of lines stored in file link search strings.
-       (org-context-in-file-links) Add option to set to integer specifying
+       (org-context-in-file-links): Add option to set to integer specifying
        number of lines.
 
 2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 2010-12-11  Julien Danjou  <julien@danjou.info>
 
        * org-agenda.el (org-format-agenda-item): Convert category to a string
-       if it is a symbol. This fixes the following call to
+       if it is a symbol.  This fixes the following call to
        org-agenda-get-category-icon which fails if category is not a string.
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-python.el (org-babel-execute:python): Use a :return header
        argument for external evaluation in which the code block body need
-       be wrapped in a function
+       to be wrapped in a function.
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
 
 2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
-       * org.el (org-edit-special): Edit formulas when in TBLMF line
+       * org.el (org-edit-special): Edit formulas when in TBLMF line.
 
 2010-12-11  Allen S. Rout  <asr@ufl.edu>  (tiny change)
 
 
        * org-macs.el (org-called-interactively-p): Wrap function call in
        with-no-warnings.
-       (with-silent-modifications) Declare macro for Emacs < 23.2.
+       (with-silent-modifications): Declare macro for Emacs < 23.2.
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
 2010-12-11  Achim Gratz  <Stromeko@Stromeko.DE>  (tiny change)
 
        * org-clock.el (org-get-clocktable): Previous patch incorrectly
-       required whitespace in front of #+BEGIN: and #+END:
+       required whitespace in front of #+BEGIN: and #+END:.
 
 2010-12-11  Dan Davison  <dandavison7@gmail.com>
 
 2010-12-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org.el (org-indent-line-function): Drawers and blocks have no
-       influence on indentation of text below. Also fix indentation
+       influence on indentation of text below.  Also fix indentation
        problem with a block at column 0 and add a special case for
        literal examples.
 
 
        * ob-ref.el (org-babel-ref-resolve): Recognize `list' as a unique
        type of data
-       (org-babel-ref-at-ref-p): Recognize `list' as a unique type of data
+       (org-babel-ref-at-ref-p): Recognize `list' as a unique type of data.
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * org-clock.el (org-get-clocktable):
        (org-in-clocktable-p):
        (org-clocktable-shift):
-       (org-clocktable-steps): Fix regexp to allow for indented clock tables
+       (org-clocktable-steps): Fix regexp to allow for indented clock tables.
 
 2010-12-11  Puneeth Chaganti  <punchagan@gmail.com>
 
        (org-export-latex-href-format): Rename the existing variable
        `org-export-latex-hyperref-format' as `org-export-latex-href-format'
        (org-export-latex-links): Use `org-export-latex-hyperref-format' and
-       `org-export-latex-href-format'
+       `org-export-latex-href-format'.
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
 2010-12-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-exp.el (org-export-preprocess-string): delaying code block
-       processing a bit to allow correct list parsing in the export string
+       processing a bit to allow correct list parsing in the export string.
 
 2010-12-11  Christopher Allan Webber  <cwebber@dustycloud.org>
 
 
        * org-exp.el (org-export-format-source-code-or-example):
        Remove hard-wired configuration of minted export
-       (org-export-latex-minted-with-line-numbers): Remove variable
+       (org-export-latex-minted-with-line-numbers): Remove variable.
 
 2010-12-11  Bastien Guerry  <bzg@altern.org>
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-lob.el (org-babel-lob-get-info): including pass-through
-       header arguments in results variable header argument string
+       header arguments in results variable header argument string.
 
 2010-12-11  David Maus  <dmaus@ictsoc.de>
 
 2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-calc.el (org-babel-execute:calc): support for variables --
-       converts :var variables in calc variables
+       converts :var variables in calc variables.
 
 2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
-       * org.el (org-sparse-tree): Mention [r] in dispatch menu
+       * org.el (org-sparse-tree): Mention [r] in dispatch menu.
 
 2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
        * org-exp.el (org-export-format-source-code-or-example):
        Use minted for latex source code export if `org-export-latex-listings'
-       has the value 'minted
+       has the value 'minted.
 
        * org-latex.el (org-export-latex-listings): Document special value
-       'minted
+       'minted.
 
        * org-latex.el (org-export-latex-minted): Delete variable.
 
 2010-11-11  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>
 
        * org-agenda.el (org-agenda-get-sexps): Handle lists as return
-       values from diary entries
+       values from diary entries.
 
        * org-bbdb.el (org-bbdb-anniversaries): Handle lists of
-       anniversaries
+       anniversaries.
 
        * org.el (org-diary-sexp-entry): Handle lists as return values
        from diary entries.
 
        * ob-C.el (org-babel-C-execute): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-R.el (org-babel-execute:R): Remove call to
        org-babel-process-params which should no longer be called from
        within a language file
        (org-babel-R-variable-assignments): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-asymptote.el (org-babel-execute:asymptote): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-clojure.el (org-babel-execute:clojure): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-dot.el (org-babel-execute:dot): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-emacs-lisp.el (org-babel-expand-body:emacs-lisp): Remove
        call to org-babel-process-params which should no longer be called
        from within a language file
        (org-babel-execute:emacs-lisp): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-haskell.el (org-babel-execute:haskell): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-js.el (org-babel-execute:js): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-lisp.el (org-babel-execute:lisp): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-ocaml.el (org-babel-execute:ocaml): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-octave.el (org-babel-execute:octave): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-perl.el (org-babel-execute:perl): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-python.el (org-babel-execute:python): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-ruby.el (org-babel-execute:ruby): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-scheme.el (org-babel-execute:scheme): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-screen.el (org-babel-execute:screen): Remove call to
        org-babel-process-params which should no longer be called from
        within a language file
        (org-babel-prep-session:screen): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-sh.el (org-babel-execute:sh): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-sql.el (org-babel-execute:sql): Remove call to
        org-babel-process-params which should no longer be called from
-       within a language file
+       within a language file.
 
        * ob-haskell.el (org-babel-execute:haskell): Remove reference to
-       processed params
+       processed params.
 
        * ob-clojure.el (org-babel-execute:clojure): Remove reference to
-       processed params
+       processed params.
 
        * ob-R.el (org-babel-execute:R): Remove reference to processed
        params.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
-       * ob-C.el (org-babel-expand-body:c++): Remove obsoleted optional
-       third argument
-       (org-babel-expand-body:c++): Remove obsoleted optional third
-       argument
-       (org-babel-C-expand): Remove obsoleted optional third argument
-
-       * ob-R.el:
-       (org-babel-expand-body:R): Remove obsoleted optional third
-       argument
-       (org-babel-execute:R): Remove obsoleted optional third argument
-       (org-babel-R-variable-assignments): Remove obsoleted optional
-       third argument
-
-       * ob-asymptote.el:
-       (org-babel-expand-body:asymptote): Remove obsoleted optional
-       third argument
-       (org-babel-execute:asymptote): Remove obsoleted optional third
-       argument
-
-       * ob-clojure.el:
-       (org-babel-expand-body:clojure): Remove obsoleted optional third
-       argument
-       (org-babel-execute:clojure): Remove obsoleted optional third
-       argument
-
-       * ob-css.el:
-       (org-babel-expand-body:css): Remove obsoleted optional third
-       argument
-
-       * ob-ditaa.el:
-       (org-babel-expand-body:ditaa): Remove obsoleted optional third
-       argument
-
-       * ob-dot.el:
-       (org-babel-expand-body:dot): Remove obsoleted optional third
-       argument
-       (org-babel-execute:dot): Remove obsoleted optional third
-       argument
-
-       * ob-emacs-lisp.el:
-       (org-babel-expand-body:emacs-lisp): Remove obsoleted optional
-       third argument
-       (org-babel-execute:emacs-lisp): Remove obsoleted optional third
-       argument
-
-       * ob-gnuplot.el:
-       (org-babel-expand-body:gnuplot): Remove obsoleted optional third
-       argument
-
-       * ob-haskell.el:
-       (org-babel-expand-body:haskell): Remove obsoleted optional third
-       argument
-       (org-babel-execute:haskell): Remove obsoleted optional third
-       argument
-       (org-babel-load-session:haskell): Remove obsoleted optional
-       third
-       (org-babel-prep-session:haskell): Remove obsoleted optional
-       third
-
-       * ob-js.el:
-       (org-babel-expand-body:js): Remove obsoleted optional third
-       argument
-       (org-babel-execute:js): Remove obsoleted optional third argument
-
-       * ob-latex.el:
-       (org-babel-expand-body:latex): Remove obsoleted optional third
-       argument
-
-       * ob-lisp.el:
-       (org-babel-expand-body:lisp): Remove obsoleted optional third
-       argument
-       (org-babel-execute:lisp): Remove obsoleted optional third
-       argument
-
-       * ob-mscgen.el:
-       (org-babel-expand-body:mscgen): Remove obsoleted optional third
-       argument
-
-       * ob-ocaml.el:
-       (org-babel-expand-body:ocaml): Remove obsoleted optional third
-       argument
-       (org-babel-execute:ocaml): Remove obsoleted optional third
-       argument
-
-       * ob-octave.el:
-       (org-babel-expand-body:matlab): Remove obsoleted optional third
-       argument
-       (org-babel-expand-body:octave): Remove obsoleted optional third
-       argument
-       (org-babel-execute:octave): Remove obsoleted optional third
-       argument
-       (org-babel-octave-variable-assignments): Remove obsoleted
-       optional third
-
-       * ob-org.el:
-       (org-babel-expand-body:org): Remove obsoleted optional third
-       argument
-
-       * ob-perl.el:
-       (org-babel-expand-body:perl): Remove obsoleted optional third
-       argument
-       (org-babel-execute:perl): Remove obsoleted optional third
-       argument
-
-       * ob-plantuml.el:
-       (org-babel-expand-body:plantuml): Remove obsoleted optional
-       third argument
-
-       * ob-python.el:
-       (org-babel-expand-body:python): Remove obsoleted optional third
-       argument
-       (org-babel-execute:python): Remove obsoleted optional third
-       argument
-       (org-babel-python-variable-assignments): Remove obsoleted
-       optional third
-
-       * ob-ruby.el:
-       (org-babel-expand-body:ruby): Remove obsoleted optional third
-       argument
-       (org-babel-execute:ruby): Remove obsoleted optional third
-       argument
-
-       * ob-sass.el:
-       (org-babel-expand-body:sass): Remove obsoleted optional third
-       argument
-
-       * ob-scheme.el:
-       (org-babel-expand-body:scheme): Remove obsoleted optional third
-       argument
-       (org-babel-execute:scheme): Remove obsoleted optional third
-       argument
-
-       * ob-screen.el:
-       (org-babel-expand-body:screen): Remove obsoleted optional third
-       argument
-
-       * ob-sh.el:
-       (org-babel-expand-body:sh): Remove obsoleted optional third
-       argument
-       (org-babel-execute:sh): Remove obsoleted optional third argument
-       (org-babel-sh-variable-assignments): Remove obsoleted optional
-       third
-
-       * ob-sql.el:
-       (org-babel-expand-body:sql): Remove obsoleted optional third
-       argument
-
-       * ob-sqlite.el:
-       (org-babel-expand-body:sqlite): Remove obsoleted optional third
-       argument
-       (org-babel-execute:sqlite): Remove obsoleted optional third
-       argument
-
-       * ob.el:
-       (org-babel-expand-body:generic): Remove obsoleted optional third
-       argument.
+       * ob-C.el (org-babel-expand-body:c++, org-babel-C-expand):
+       * ob-R.el (org-babel-expand-body:R, org-babel-execute:R)
+       (org-babel-R-variable-assignments):
+       * ob-asymptote.el (org-babel-expand-body:asymptote)
+       (org-babel-execute:asymptote):
+       * ob-clojure.el (org-babel-expand-body:clojure)
+       (org-babel-execute:clojure):
+       * ob-css.el (org-babel-expand-body:css):
+       * ob-ditaa.el (org-babel-expand-body:ditaa):
+       * ob-dot.el (org-babel-expand-body:dot, org-babel-execute:dot):
+       * ob-emacs-lisp.el (org-babel-expand-body:emacs-lisp)
+       (org-babel-execute:emacs-lisp):
+       * ob-gnuplot.el (org-babel-expand-body:gnuplot)
+       * ob-haskell.el (org-babel-expand-body:haskell)
+       (org-babel-execute:haskell, org-babel-load-session:haskell)
+       (org-babel-prep-session:haskell):
+       * ob-js.el (org-babel-expand-body:js, org-babel-execute:js):
+       * ob-latex.el (org-babel-expand-body:latex):
+       * ob-lisp.el (org-babel-expand-body:lisp, org-babel-execute:lisp):
+       * ob-mscgen.el (org-babel-expand-body:mscgen):
+       * ob-ocaml.el (org-babel-expand-body:ocaml, org-babel-execute:ocaml):
+       * ob-octave.el (org-babel-expand-body:matlab)
+       (org-babel-expand-body:octave, org-babel-execute:octave)
+       (org-babel-octave-variable-assignments):
+       * ob-org.el (org-babel-expand-body:org):
+       * ob-perl.el (org-babel-expand-body:perl, org-babel-execute:perl):
+       * ob-plantuml.el (org-babel-expand-body:plantuml):
+       * ob-python.el (org-babel-expand-body:python, org-babel-execute:python)
+       (org-babel-python-variable-assignments):
+       * ob-ruby.el (org-babel-expand-body:ruby, org-babel-execute:ruby):
+       * ob-sass.el (org-babel-expand-body:sass):
+       * ob-scheme.el (org-babel-expand-body:scheme, org-babel-execute:scheme):
+       * ob-screen.el (org-babel-expand-body:screen):
+       * ob-sh.el (org-babel-expand-body:sh, org-babel-execute:sh)
+       (org-babel-sh-variable-assignments):
+       * ob-sql.el (org-babel-expand-body:sql):
+       * ob-sqlite.el (org-babel-expand-body:sqlite, org-babel-execute:sqlite):
+       * ob.el (org-babel-expand-body:generic):
+       Remove obsoleted optional third argument.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 
        * ob-sh.el (org-babel-sh-variable-assignments): Provide missing
-       docstring
+       docstring.
 
        * ob-python.el (org-babel-python-variable-assignments):
        Provide missing docstring.
 
 2010-11-11  Noorul Islam  <noorul@noorul.com>
 
-       * org-latex.el (org-export-latex-links) : Replaced hard coded
+       * org-latex.el (org-export-latex-links): Replaced hard coded
        hyperref format with custom variable
        `org-export-latex-hyperref-format'.
 
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
-       * ob.el (org-babel-params-from-properties): Max line with at <=80
+       * ob.el (org-babel-params-from-properties): Max line with at <=80.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
 
 2010-11-11  Jambunathan K  <kjambunathan@gmail.com>  (tiny change)
 
-       * org.el (org-speed-command-hook): New. Hook for installing
-       additional speed commands. Use this for enabling speed commands on
+       * org.el (org-speed-command-hook): New.  Hook for installing
+       additional speed commands.  Use this for enabling speed commands on
        src blocks.
        (org-speed-command-default-hook): The default hook for
-       org-speed-command-hook. Factored out from org-self-insert-command
+       org-speed-command-hook.  Factored out from org-self-insert-command
        and mimics existing behaviour.
        (org-self-insert-command): Modified to use org-speed-command-hook.
 
 2010-11-11  Bastien Guerry  <bzg@altern.org>
 
        * org-capture.el (org-capture-templates): Update docstring to
-       advertize %:org-date.
+       advertise %:org-date.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob.el (org-babel-demarcate-block): Interactive demarcation of
-       code blocks
+       code blocks.
 
        * ob-keys.el (org-babel-key-bindings): Key bindings for block
        demarcation.
        [[elisp:(org-agenda-list)]], org-prepare-agenda erases the buffer
        of the file containing the link, since that buffer is current
        during org-prepare agenda (due to a with-current-buffer in
-       org-agenda-open-link). An additional test now ensures that the
+       org-agenda-open-link).  An additional test now ensures that the
        agenda buffer is in fact current when the buffer is erased and
        local variables for the agenda are set.
 
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
-       * ob-C.el (org): No longer requires org
+       * ob-C.el (org): No longer requires org.
 
        * ob-ledger.el (org): No longer requires org.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-keys.el (org-babel-key-bindings): Adding key-binding for
-       `org-babel-goto-src-block-head'
+       `org-babel-goto-src-block-head'.
 
        * ob.el (org-babel-goto-src-block-head): Jump to the head of the
        current code block.
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob.el (org-babel-next-src-block): Now raising more informative
-       error when no further code blocks can be found
+       error when no further code blocks can be found.
        (org-babel-previous-src-block): Now raising more informative error
        when no previous code blocks can be found.
 
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
-       * ob-plantuml.el (org-babel-execute:plantuml):
+       * ob-plantuml.el (org-babel-execute:plantuml): ????
 
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-toggle-checkbox): Ignore items in drawers when
-       used from an heading. Send an error when no item is in region.
+       used from an heading.  Send an error when no item is in region.
 
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 
        * org.el (org-fontify-meta-lines-and-blocks): Alter main regexp to
-       match code blocks with switches and header args. Call
+       match code blocks with switches and header args.  Call
        `org-src-font-lock-fontify-block' for automatic fontification of
        code in code blocks, controlled by variable
        `org-src-fontify-natively'.
 
 2010-11-11  Noorul Islam  <noorul@noorul.com>  (tiny change)
 
-       * org-html.el (org-html-make-link): (Expand-file-name ) removes
-       one "/" from "///path-to-file", so add one. Anything other than
+       * org-html.el (org-html-make-link): (expand-file-name) removes
+       one "/" from "///path-to-file", so add one.  Anything other than
        'file' type should be exported along with the type.
 
 2010-11-11  Noorul Islam  <noorul@noorul.com>  (tiny change)
 
-       * org.el (org-insert-subheading) : Fix compiler warning
-       (org-insert-todo-subheading) : Fix compiler warning.
+       * org.el (org-insert-subheading): Fix compiler warning
+       (org-insert-todo-subheading): Fix compiler warning.
 
 2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
        * org.el (org-indent-line-function): Indentation of source block
        is left to `org-edit-src-exit' and shouldn't be modified by
-       `org-indent-line-function'. Indentation of others blocks should be
+       `org-indent-line-function'.  Indentation of others blocks should be
        the same as the #+begin line.
 
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-list-ending-method): New customizable variable
-       to tell Org Mode how lists end. See docstring.
+       to tell Org Mode how lists end.  See docstring.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 
        * org-list.el (org-list-insert-item-generic): A single item
        already counting blank lines in his body should be separated with
-       the next one by a blank line. Moreover, if user already provided
+       the next one by a blank line.  Moreover, if user already provided
        blank lines, follow his wishes.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-indent-item-tree): When moving top item of a
        *-list to column 0, only the first item had its bullet changed to
-       -. It now changes all items of the top-level list, as expected.
+       -.  It now changes all items of the top-level list, as expected.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        change.
 
        * org-list.el (org-indent-item-tree): Prevent whole list from
-       being moved when user is not moving subtree. Thus)
-       (`org-cycle-item-indentation' will not allow to move the list.
+       being moved when user is not moving subtree.  Thus
+       `org-cycle-item-indentation' will not allow to move the list.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
-       * org-list.el (org-indent-item-tree): Remove region code. It was
+       * org-list.el (org-indent-item-tree): Remove region code.  It was
        prone to errors and undocumented.
 
        * org-list.el (org-item-indent-positions): Better heuristics to
        * org-list.el (org-list-bullet-string): Do not modify match-data.
 
        * org.el (org-toggle-item): Now working again when changing list
-       items into plain text. Moreover take into consideration
+       items into plain text.  Moreover take into consideration
        `org-list-two-spaces-after-bullet-regexp'.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-docbook.el (org-export-as-docbook): Use override="num" in
-       any listitem matching [@start:num]
+       any listitem matching [@start:num].
 
        * org-html.el (org-export-as-html): Use value="num" in any li
-       matching
-       [@start:num]
+       matching [@start:num].
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-indent-item-tree): Try to keep relative
-       position on line. It can't if point is in white spaces before
+       position on line.  It can't if point is in white spaces before
        bullet because mixed tabs and spaces make some columns
        unattainable.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-cycle-item-indentation): Cycle when the whole
-       item only contains bullet and maybe a checkbox. Previously, TAB
+       item only contains bullet and maybe a checkbox.  Previously, TAB
        would cycle when the first line of the item was blank.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-indent-item-tree): If indent rule is activated,
        it should be impossible to outdent an item having children without
-       moving its subtree. Improved reordering of lists modified by
+       moving its subtree.  Improved reordering of lists modified by
        cycling indentation.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-list-insert-item-generic): When local search
-       doesn't help, search the list globally for blank lines. Moreover,
+       doesn't help, search the list globally for blank lines.  Moreover,
        don't bother with new lists, and add 1 blank line.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
        heading.
 
        * org-list.el (org-list-make-subtree): Add protection when used
-       outside of list
+       outside of list.
 
        * org-list.el (org-insert-item): Remove useless hack now
        `org-in-item-p' is fixed.
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-cycle-list-bullet): Prevent description items
-       from being numbered. String argument is also recognized now, as
+       from being numbered.  String argument is also recognized now, as
        long as it is a valid bullet.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
-       * org-timer.el (org-timer-item): Refactoring. Compute timer string
-       before inserting it in the buffer
+       * org-timer.el (org-timer-item): Refactoring.  Compute timer string
+       before inserting it in the buffer.
 
        * org-timer.el (org-timer): Add an optional argument to return
        timer string instead of inserting it.
        a list prior to add a new item.
 
        * org-timer.el (org-timer-item): When in a timer list, insert a
-       new timer item like `org-insert-item'. If in another list, send an
-       error. Otherwise, start a new timer list.
+       new timer item like `org-insert-item'.  If in another list, send an
+       error.  Otherwise, start a new timer list.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 
        * org-list.el (org-list-send-list): We cannot count on
        `org-list-top-point' and `org-list-bottom-point' before buffer is
-       narrowed. Find bounds of list otherwise.
+       narrowed.  Find bounds of list otherwise.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-docbook.el (org-export-as-docbook): Properly close any open
-       list when seeing ORG-LIST-END. Removed any reference to now
+       list when seeing ORG-LIST-END.  Removed any reference to now
        unneeded DIDCLOSE variable.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
        recognize lists.
 
        * org-latex.el (org-export-latex-lists): Better search for
-       lists. It now only finds items not enclosed and not protected.
+       lists.  It now only finds items not enclosed and not protected.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-search-forward-unenclosed): Fix behavior when
-       last occurence was enclosed.
+       last occurrence was enclosed.
 
        * org-list.el (org-search-backward-unenclosed): Fix behavior when
-       last occurence was enclosed.
+       last occurrence was enclosed.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
-       * org-html.el: preprocess buffer string and add ORG-LIST-END where
-       needed. Lists should not end before seeing this.
+       * org-html.el: Preprocess buffer string and add ORG-LIST-END where
+       needed.  Lists should not end before seeing this.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        to evaluate code invisibly and block until output file exists.
 
        * ob-R.el (org-babel-R-evaluate-session): Use `ess-eval-buffer' to
-       evaluate R code in session for :results value. Write result to
+       evaluate R code in session for :results value.  Write result to
        file invisibly using new function
        `org-babel-comint-eval-invisibly-and-wait-for-file'.
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-scheme.el: very preliminary support for evaluating scheme
-       code blocks
+       code blocks.
 
        * org.el (org-babel-load-languages): Adding scheme.
 
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
-       * ob-R.el (ess-make-buffer-current):
-       Declared (ess-ask-for-ess-directory):
-       Declared (ess-local-process-name):
-       Declared * ob-latex.el (org-babel-latex-tex-to-pdf): Capturing free
-       variable
+       * ob-R.el (ess-make-buffer-current): Declared.
+       (ess-ask-for-ess-directory): Declared.
+       (ess-local-process-name): Declared.
+       * ob-latex.el (org-babel-latex-tex-to-pdf): Capturing free variable.
 
-       * ob.el (org-edit-src-code): Fixing arguments
-       (org-edit-src-exit):
-       Declared (org-outline-overlay-data):
-       Declared (org-set-outline-overlay-data): Declared.
+       * ob.el (org-edit-src-code): Fixing arguments.
+       (org-edit-src-exit): Declared.
+       (org-outline-overlay-data): Declared.
+       (org-set-outline-overlay-data): Declared.
 
 2010-11-11  Glenn Morris  <rgm@gnu.org>
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob-exp.el (org-babel-exp-do-export): Remove hacky ":noeval",
-       which is now an alias to ":eval no"
+       which is now an alias to ":eval no".
 
 2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 
        * ob.el (org-babel-do-in-edit-buffer): New macro to evaluate lisp
        in the language major mode edit buffer.
        (org-babel-do-key-sequence-in-edit-buffer): New function to call
-       an arbitrary key sequence in the language major mode edit buffer
+       an arbitrary key sequence in the language major mode edit buffer.
 
        * org-src.el (org-src-switch-to-buffer): Add new allowed value
        'switch-invisibly for `org-src-window-setup'.
        * org-src.el (org-edit-src-code): If at src block, store babel
        info as buffer local variable.
        (org-src-associate-babel-session): New function to associate code
-       edit buffer with comint session. Does nothing unless a
+       edit buffer with comint session.  Does nothing unless a
        language-specific function named
        `org-babel-LANG-associate-session' exists.
        (org-src-babel-configure-edit-buffer): New function to be called
 
 2010-11-11  Noorul Islam  <noorul@noorul.com>
 
-       * org.el: org-set-visibility-according-to-property () Use backward
+       * org.el (org-set-visibility-according-to-property): Use backward
        search instead of forward, so that top hierarchy gets priority.
 
 2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 2010-11-11  Dan Davison  <davison@stats.ox.ac.uk>
 
        * ob-octave.el: Only (require 'matlab) when necessary.
-       (org-babel-octave-initiate-session) (require) octave-inf or matlab
+       (org-babel-octave-initiate-session): (require) octave-inf or matlab
        as appropriate.
        (org-babel-execute:matlab): Remove (require).
        (org-babel-prep-session:matlab): Remove (require).
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
-       * org-latex.el (org-export-latex-tables): Add label if any
+       * org-latex.el (org-export-latex-tables): Add label if any.
 
        * org-latex.el (org-export-latex-convert-table.el-table):
        Fix little mistake when inserting label.
        New customization variable for allowing the user to create an "auto
        exclusion" filter for doing context-aware auto tag filtering.
        (org-agenda-filter-by-tag): Changes to support the use of
-       `org-agenda-auto-exclude-function'.  See the new manual addition,.
+       `org-agenda-auto-exclude-function'.  See the new manual addition.
 
 2009-11-13  John Wiegley  <johnw@newartisans.com>
 
        (org-export-latex-first-lines): New argument END, to force the end
        of the region.
        (org-export-region-as-latex): Use the property list.
-       (org-export-as-latex):
+       (org-export-as-latex): ????
 
        * org-colview-xemacs.el (org-columns-remove-overlays)
        (org-columns): Fix call to `local-variable-p'.
 
 2008-10-26  Carsten Dominik  <dominik@science.uva.nl>
 
-       * org-agenda.el (org-agenda-filter-tags,org-agenda-filter-form):
+       * org-agenda.el (org-agenda-filter-tags, org-agenda-filter-form):
        New variables.
        (org-prepare-agenda): Reset the filter tags.
        (org-agenda-filter-by-tag, org-agenda-filter-by-tag-show-all):
 
        * org.el (org-base-buffer): New function.
 
-       * org-exp.el (org-icalendar-cleanup-string): Make sure ',"
+       * org-exp.el (org-icalendar-cleanup-string): Make sure ","
        and ";" are escaped.
        (org-print-icalendar-entries): Also apply
        `org-icalendar-cleanup-string' to the headline, not only to the
index 2f64b8b0bb655b9e7084b59cf921b50a5bc9654b..b979097dee355760cb215ed380a5bc2ad3ef5d17 100644 (file)
@@ -519,7 +519,8 @@ When CHECK is given, prepare detailed information about duplicate IDs."
     (puthash id (abbreviate-file-name file) org-id-locations)
     (add-to-list 'org-id-files (abbreviate-file-name file))))
 
-(add-hook 'kill-emacs-hook 'org-id-locations-save)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'org-id-locations-save))
 
 (defun org-id-hash-to-alist (hash)
   "Turn an org-id hash into an alist, so that it can be written to a file."
index 8f1ef9e5d60d10ba217f38379e42d7512142dcfc..076df5f0d07bcd2bd6051a38364f60890dfddf9e 100644 (file)
@@ -1078,7 +1078,7 @@ for the duration of the command."
                                        (plain-list-item . auto))
   "Should `org-insert-heading' leave a blank line before new heading/item?
 The value is an alist, with `heading' and `plain-list-item' as car,
-and a boolean flag as cdr. The cdr may lso be the symbol `auto', and then
+and a boolean flag as cdr.  The cdr may lso be the symbol `auto', and then
 Org will look at the surrounding headings/items and try to make an
 intelligent decision wether to insert a blank line or not.
 
@@ -1384,9 +1384,9 @@ nil   Never use an ID to make a link, instead link using a text search for
 (defcustom org-context-in-file-links t
   "Non-nil means file links from `org-store-link' contain context.
 A search string will be added to the file name with :: as separator and
-used to find the context when the link is activated by the command 
-`org-open-at-point'. When this option is t, the entire active region 
-will be placed in the search string of the file link. If set to a 
+used to find the context when the link is activated by the command
+`org-open-at-point'.  When this option is t, the entire active region
+will be placed in the search string of the file link.  If set to a
 positive integer, only the first n lines of context will be stored.
 
 Using a prefix arg to the command \\[org-store-link] (`org-store-link')
@@ -1843,7 +1843,7 @@ This is list of cons cells.  Each cell contains:
   - a cons cell (:level . N).  Any headline of level N is considered a target.
     Note that, when `org-odd-levels-only' is set, level corresponds to
     order in hierarchy, not to the number of stars.
-  - a cons cell (:maxlevel . N). Any headline with level <= N is a target.
+  - a cons cell (:maxlevel . N).  Any headline with level <= N is a target.
     Note that, when `org-odd-levels-only' is set, level corresponds to
     order in hierarchy, not to the number of stars.
 
@@ -2418,7 +2418,7 @@ An auto-repeating task is immediately switched back to TODO when
 marked DONE.  If you are not logging state changes (by adding \"@\"
 or \"!\" to the TODO keyword definition), or set `org-log-done' to
 record a closing note, there will be no record of the task moving
-through DONE. This variable forces taking a note anyway.
+through DONE.  This variable forces taking a note anyway.
 
 nil     Don't force a record
 time    Record a time stamp
@@ -2624,8 +2624,8 @@ See also `org-agenda-jump-prefer-future'."
 The default is to do the same as configured in `org-read-date-prefer-future'.
 But you can alse set a deviating value here.
 This may t or nil, or the symbol `org-read-date-prefer-future'."
-  :group 'org-agenda 
-  :group 'org-time 
+  :group 'org-agenda
+  :group 'org-time
   :type '(choice
          (const :tag "Use org-read-date-prefer-future"
                 org-read-date-prefer-future)
@@ -5575,7 +5575,7 @@ needs to be inserted at a specific position in the font-lock sequence.")
   (org-set-local 'org-pretty-entities (not org-pretty-entities))
   (org-restart-font-lock)
   (if org-pretty-entities
-      (message "Entities are displayed as UTF8 characers")
+      (message "Entities are displayed as UTF8 characters")
     (save-restriction
       (widen)
       (org-decompose-region (point-min) (point-max))
@@ -8525,9 +8525,9 @@ according to FMT (default from `org-email-link-description-format')."
     (when (and string (integerp lines) (> lines 0))
       (let ((slines (org-split-string s "\n")))
        (when (< lines (length slines))
-         (setq s (mapconcat 
+         (setq s (mapconcat
                   'identity
-                  (reverse (nthcdr (- (length slines) lines) 
+                  (reverse (nthcdr (- (length slines) lines)
                                    (reverse slines))) "\n")))))
     (mapconcat 'identity (org-split-string s "[ \t]+") " ")))
 
@@ -8672,8 +8672,8 @@ be displayed in the buffer instead of the link.
 If there is already a link at point, this command will allow you to edit link
 and description parts.
 
-With a \\[universal-argument] prefix, prompts for a file to link to. The file name can
-be selected using completion. The path to the file will be relative to the
+With a \\[universal-argument] prefix, prompts for a file to link to.  The file name can
+be selected using completion.  The path to the file will be relative to the
 current directory if the file is in the current directory or a subdirectory.
 Otherwise, the link will be the absolute path as completed in the minibuffer
 \(i.e. normally ~/path/to/file).  You can configure this behavior using the
@@ -16498,8 +16498,8 @@ If not, return to the original position and throw an error."
 
 (defun org-speed-command-default-hook (keys)
   "Hook for activating single-letter speed commands.
-`org-speed-commands-default' specifies a minimal command set. Use
-`org-speed-commands-user' for further customization."
+`org-speed-commands-default' specifies a minimal command set.
+Use `org-speed-commands-user' for further customization."
   (when (or (and (bolp) (looking-at outline-regexp))
            (and (functionp org-use-speed-commands)
                 (funcall org-use-speed-commands)))
@@ -16521,11 +16521,11 @@ Each hook takes a single argument, a user-pressed command key
 which is also a `self-insert-command' from the global map.
 
 Within the hook, examine the cursor position and the command key
-and return nil or a valid handler as appropriate. Handler could
+and return nil or a valid handler as appropriate.  Handler could
 be one of an interactive command, a function, or a form.
 
 Set `org-use-speed-commands' to non-nil value to enable this
-hook. The default setting is `org-speed-command-default-hook'."
+hook.  The default setting is `org-speed-command-default-hook'."
   :group 'org-structure
   :type 'hook)
 
@@ -18300,11 +18300,11 @@ really on, so that the block visually is on the match."
 (defun org-in-regexps-block-p (start-re end-re &optional bound)
   "Return t if the current point is between matches of START-RE and END-RE.
 This will also return t if point is on one of the two matches or
-in an unfinished block. END-RE can be a string or a form
+in an unfinished block.  END-RE can be a string or a form
 returning a string.
 
-An optional third argument bounds the search for START-RE. It
-defaults to previous heading or `point-min'."
+An optional third argument bounds the search for START-RE.
+It defaults to previous heading or `point-min'."
   (let ((pos (point))
        (limit (or bound (save-excursion (outline-previous-heading)))))
     (save-excursion
@@ -19040,7 +19040,7 @@ plainly yank the text as it is.
   "Perform some yank-like command.
 
 This function implements the behavior described in the `org-yank'
-documentation. However, it has been generalized to work for any
+documentation.  However, it has been generalized to work for any
 interactive command with similar behavior."
 
   ;; pretend to be command COMMAND
@@ -19247,7 +19247,7 @@ move point."
 
 (defun org-goto-first-child ()
   "Goto the first child, even if it is invisible.
-Return t when a child was found. Otherwise don't move point and
+Return t when a child was found.  Otherwise don't move point and
 return nil."
   (let (level (pos (point)) (re (concat "^" outline-regexp)))
     (when (condition-case nil (org-back-to-heading t) (error nil))
index d43afd94a3c78bf889fd31eb8aa1c469d95c978d..cedc55b33368d570fc3b3229240ec262d8c92cea 100644 (file)
@@ -50,9 +50,9 @@ Note that Outline mode only checks this regexp at the start of a line,
 so the regexp need not (and usually does not) start with `^'.
 The recommended way to set this is with a Local Variables: list
 in the file it applies to.  See also `outline-heading-end-regexp'."
-  :type '(choice regexp (const nil))
+  :type 'regexp
   :group 'outlines)
-;;;###autoload(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
+;;;###autoload(put 'outline-regexp 'safe-local-variable 'stringp)
 
 (defcustom outline-heading-end-regexp "\n"
   "Regular expression to match the end of a heading line.
@@ -62,6 +62,7 @@ The recommended way to set this is with a `Local Variables:' list
 in the file it applies to."
   :type 'regexp
   :group 'outlines)
+;;;###autoload(put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
 
 (defvar outline-mode-prefix-map
   (let ((map (make-sparse-keymap)))
index 8738aa65a9f457f46e97c85d10375e8066c59a84..941428d5291b7c07f5907e0ee194d2448032973d 100644 (file)
@@ -76,6 +76,13 @@ regulate cache behavior."
        key
        (symbol-value (intern-soft key password-data))))
 
+;;;###autoload
+(defun password-in-cache-p (key)
+  "Check if KEY is in the cache."
+  (and password-cache
+       key
+       (intern-soft key password-data)))
+
 (defun password-read (prompt &optional key)
   "Read password, for use with KEY, from user, or from cache if wanted.
 KEY indicate the purpose of the password, so the cache can
index 99ed8c04262d1cc655bcf2c51b801f534de72fcd..e66cca259335a03a95d684991464db86de4bf328 100644 (file)
@@ -5707,8 +5707,8 @@ If menu binding was not done, calls `pr-menu-bind'."
   (let* ((dir-name   (file-name-directory (or (buffer-file-name)
                                              default-directory)))
         (fmt-prompt (concat "%s[" mess "] Directory to print: "))
-        (dir        (read-file-name (format fmt-prompt "")
-                                    "" dir-name nil dir-name))
+        (dir        (read-directory-name (format fmt-prompt "")
+                                         "" dir-name nil dir-name))
         prompt)
     (while (cond ((not (file-directory-p dir))
                  (ding)
@@ -5718,8 +5718,8 @@ If menu binding was not done, calls `pr-menu-bind'."
                  (setq prompt "Directory is unreadable! "))
                 (t nil))
       (setq dir-name (file-name-directory dir)
-           dir      (read-file-name (format fmt-prompt prompt)
-                                    "" dir-name nil dir-name)))
+           dir      (read-directory-name (format fmt-prompt prompt)
+                                         "" dir-name nil dir-name)))
     (file-name-as-directory dir)))
 
 
index d7397144498a746e4a3b39b68efbe71260a5a484..dd05ab8f31054a024be7b4d8700f9c0843d945be 100644 (file)
@@ -227,7 +227,7 @@ If FILE-NAME is nil, ask the user for the name."
   ;;  the user to select a directory
   (let ((use-dialog-box nil))
     (unless file-name
-      (set 'file-name (read-file-name "Root directory: " nil nil t))))
+      (set 'file-name (read-directory-name "Root directory: " nil nil t))))
 
   (set 'ada-prj-current-values
        (plist-put ada-prj-current-values
index de1debd64569c6904d74f1f02d390fe2a2ad26eb..5ef12300195d98c0fc6ad1d98f9835fddcb3dced 100644 (file)
@@ -2023,9 +2023,9 @@ comment at the start of cc-engine.el for more info."
 
 (defvar c-state-nonlit-pos-cache nil)
 (make-variable-buffer-local 'c-state-nonlit-pos-cache)
-;; A list of buffer positions which are known not to be in a literal.  This is
-;; ordered with higher positions at the front of the list.  Only those which
-;; are less than `c-state-nonlit-pos-cache-limit' are valid.
+;; A list of buffer positions which are known not to be in a literal or a cpp
+;; construct.  This is ordered with higher positions at the front of the list.
+;; Only those which are less than `c-state-nonlit-pos-cache-limit' are valid.
 
 (defvar c-state-nonlit-pos-cache-limit 1)
 (make-variable-buffer-local 'c-state-nonlit-pos-cache-limit)
@@ -2056,6 +2056,12 @@ comment at the start of cc-engine.el for more info."
   ;; This function is almost the same as `c-literal-limits'.  It differs in
   ;; that it is a lower level function, and that it rigourously follows the
   ;; syntax from BOB, whereas `c-literal-limits' uses a "local" safe position.
+  ;;
+  ;; NOTE: This function manipulates `c-state-nonlit-pos-cache'.  This cache
+  ;; MAY NOT contain any positions within macros, since macros are frequently
+  ;; turned into comments by use of the `c-cpp-delimiter' category properties.
+  ;; We cannot rely on this mechanism whilst determining a cache pos since
+  ;; this function is also called from outwith `c-parse-state'.
   (save-restriction
     (widen)
     (save-excursion
@@ -2074,6 +2080,11 @@ comment at the start of cc-engine.el for more info."
                   here)
          (setq lit (c-state-pp-to-literal pos npos))
          (setq pos (or (cdr lit) npos)) ; end of literal containing npos.
+         (goto-char pos)
+         (when (and (c-beginning-of-macro) (/= (point) pos))
+           (c-syntactic-end-of-macro)
+           (or (eobp) (forward-char))
+           (setq pos (point)))
          (setq c-state-nonlit-pos-cache (cons pos c-state-nonlit-pos-cache)))
 
        (if (> pos c-state-nonlit-pos-cache-limit)
@@ -2158,7 +2169,7 @@ comment at the start of cc-engine.el for more info."
 ;; of fruitless backward scans.
 (defvar c-state-brace-pair-desert nil)
 (make-variable-buffer-local 'c-state-brace-pair-desert)
-;; Used only in `c-append-lower-brace-pair-to-state-cache'.  It is set when an
+;; Used only in `c-append-lower-brace-pair-to-state-cache'.  It is set when
 ;; that defun has searched backwards for a brace pair and not found one.  Its
 ;; value is either nil or a cons (PA . FROM), where PA is the position of the
 ;; enclosing opening paren/brace/bracket which bounds the backwards search (or
@@ -2843,6 +2854,29 @@ comment at the start of cc-engine.el for more info."
        c-state-old-cpp-end nil)
   (c-state-mark-point-min-literal))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Debugging routines to dump `c-state-cache' in a "replayable" form.
+;; (defmacro c-sc-de (elt)             ; "c-state-cache-dump-element"
+;;   `(format ,(concat "(setq " (symbol-name elt) " %s)    ") ,elt))
+;; (defmacro c-sc-qde (elt)            ; "c-state-cache-quote-dump-element"
+;;   `(format ,(concat "(setq " (symbol-name elt) " '%s)    ") ,elt))
+;; (defun c-state-dump ()
+;;   ;; For debugging.
+;;   ;(message
+;;   (concat
+;;    (c-sc-qde c-state-cache)
+;;    (c-sc-de c-state-cache-good-pos)
+;;    (c-sc-qde c-state-nonlit-pos-cache)
+;;    (c-sc-de c-state-nonlit-pos-cache-limit)
+;;    (c-sc-qde c-state-brace-pair-desert)
+;;    (c-sc-de c-state-point-min)
+;;    (c-sc-de c-state-point-min-lit-type)
+;;    (c-sc-de c-state-point-min-lit-start)
+;;    (c-sc-de c-state-min-scan-pos)
+;;    (c-sc-de c-state-old-cpp-beg)
+;;    (c-sc-de c-state-old-cpp-end)))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun c-invalidate-state-cache-1 (here)
   ;; Invalidate all info on `c-state-cache' that applies to the buffer at HERE
   ;; or higher and set `c-state-cache-good-pos' accordingly.  The cache is
@@ -8691,841 +8725,841 @@ comment at the start of cc-engine.el for more info."
 (defun c-guess-basic-syntax ()
   "Return the syntactic context of the current line."
   (save-excursion
-      (beginning-of-line)
-      (c-save-buffer-state
-         ((indent-point (point))
-          (case-fold-search nil)
-          ;; A whole ugly bunch of various temporary variables.  Have
-          ;; to declare them here since it's not possible to declare
-          ;; a variable with only the scope of a cond test and the
-          ;; following result clauses, and most of this function is a
-          ;; single gigantic cond. :P
-          literal char-before-ip before-ws-ip char-after-ip macro-start
-          in-macro-expr c-syntactic-context placeholder c-in-literal-cache
-          step-type tmpsymbol keyword injava-inher special-brace-list tmp-pos
-          containing-<
-          ;; The following record some positions for the containing
-          ;; declaration block if we're directly within one:
-          ;; `containing-decl-open' is the position of the open
-          ;; brace.  `containing-decl-start' is the start of the
-          ;; declaration.  `containing-decl-kwd' is the keyword
-          ;; symbol of the keyword that tells what kind of block it
-          ;; is.
-          containing-decl-open
-          containing-decl-start
-          containing-decl-kwd
-          ;; The open paren of the closest surrounding sexp or nil if
-          ;; there is none.
-          containing-sexp
-          ;; The position after the closest preceding brace sexp
-          ;; (nested sexps are ignored), or the position after
-          ;; `containing-sexp' if there is none, or (point-min) if
-          ;; `containing-sexp' is nil.
-          lim
-          ;; The paren state outside `containing-sexp', or at
-          ;; `indent-point' if `containing-sexp' is nil.
-          (paren-state (c-parse-state))
-          ;; There's always at most one syntactic element which got
-          ;; an anchor pos.  It's stored in syntactic-relpos.
-          syntactic-relpos
-          (c-stmt-delim-chars c-stmt-delim-chars))
-
-       ;; Check if we're directly inside an enclosing declaration
-       ;; level block.
-       (when (and (setq containing-sexp
-                        (c-most-enclosing-brace paren-state))
-                  (progn
-                    (goto-char containing-sexp)
-                    (eq (char-after) ?{))
-                  (setq placeholder
-                        (c-looking-at-decl-block
-                         (c-most-enclosing-brace paren-state
-                                                 containing-sexp)
-                         t)))
-         (setq containing-decl-open containing-sexp
-               containing-decl-start (point)
-               containing-sexp nil)
-         (goto-char placeholder)
-         (setq containing-decl-kwd (and (looking-at c-keywords-regexp)
-                                        (c-keyword-sym (match-string 1)))))
-
-       ;; Init some position variables.
-       (if c-state-cache
-           (progn
-             (setq containing-sexp (car paren-state)
-                   paren-state (cdr paren-state))
-             (if (consp containing-sexp)
-                 (progn
-                   (setq lim (cdr containing-sexp))
-                   (if (cdr c-state-cache)
-                       ;; Ignore balanced paren.  The next entry
-                       ;; can't be another one.
-                       (setq containing-sexp (car (cdr c-state-cache))
-                             paren-state (cdr paren-state))
-                     ;; If there is no surrounding open paren then
-                     ;; put the last balanced pair back on paren-state.
-                     (setq paren-state (cons containing-sexp paren-state)
-                           containing-sexp nil)))
-               (setq lim (1+ containing-sexp))))
-         (setq lim (point-min)))
-
-       ;; If we're in a parenthesis list then ',' delimits the
-       ;; "statements" rather than being an operator (with the
-       ;; exception of the "for" clause).  This difference is
-       ;; typically only noticeable when statements are used in macro
-       ;; arglists.
-       (when (and containing-sexp
-                  (eq (char-after containing-sexp) ?\())
-         (setq c-stmt-delim-chars c-stmt-delim-chars-with-comma))
-       ;; cache char before and after indent point, and move point to
-       ;; the most likely position to perform the majority of tests
-       (goto-char indent-point)
-       (c-backward-syntactic-ws lim)
-       (setq before-ws-ip (point)
-             char-before-ip (char-before))
-       (goto-char indent-point)
-       (skip-chars-forward " \t")
-       (setq char-after-ip (char-after))
-
-       ;; are we in a literal?
-       (setq literal (c-in-literal lim))
-
-       ;; now figure out syntactic qualities of the current line
-       (cond
+    (beginning-of-line)
+    (c-save-buffer-state
+       ((indent-point (point))
+        (case-fold-search nil)
+        ;; A whole ugly bunch of various temporary variables.  Have
+        ;; to declare them here since it's not possible to declare
+        ;; a variable with only the scope of a cond test and the
+        ;; following result clauses, and most of this function is a
+        ;; single gigantic cond. :P
+        literal char-before-ip before-ws-ip char-after-ip macro-start
+        in-macro-expr c-syntactic-context placeholder c-in-literal-cache
+        step-type tmpsymbol keyword injava-inher special-brace-list tmp-pos
+        containing-<
+        ;; The following record some positions for the containing
+        ;; declaration block if we're directly within one:
+        ;; `containing-decl-open' is the position of the open
+        ;; brace.  `containing-decl-start' is the start of the
+        ;; declaration.  `containing-decl-kwd' is the keyword
+        ;; symbol of the keyword that tells what kind of block it
+        ;; is.
+        containing-decl-open
+        containing-decl-start
+        containing-decl-kwd
+        ;; The open paren of the closest surrounding sexp or nil if
+        ;; there is none.
+        containing-sexp
+        ;; The position after the closest preceding brace sexp
+        ;; (nested sexps are ignored), or the position after
+        ;; `containing-sexp' if there is none, or (point-min) if
+        ;; `containing-sexp' is nil.
+        lim
+        ;; The paren state outside `containing-sexp', or at
+        ;; `indent-point' if `containing-sexp' is nil.
+        (paren-state (c-parse-state))
+        ;; There's always at most one syntactic element which got
+        ;; an anchor pos.  It's stored in syntactic-relpos.
+        syntactic-relpos
+        (c-stmt-delim-chars c-stmt-delim-chars))
+
+      ;; Check if we're directly inside an enclosing declaration
+      ;; level block.
+      (when (and (setq containing-sexp
+                      (c-most-enclosing-brace paren-state))
+                (progn
+                  (goto-char containing-sexp)
+                  (eq (char-after) ?{))
+                (setq placeholder
+                      (c-looking-at-decl-block
+                       (c-most-enclosing-brace paren-state
+                                               containing-sexp)
+                       t)))
+       (setq containing-decl-open containing-sexp
+             containing-decl-start (point)
+             containing-sexp nil)
+       (goto-char placeholder)
+       (setq containing-decl-kwd (and (looking-at c-keywords-regexp)
+                                      (c-keyword-sym (match-string 1)))))
+
+      ;; Init some position variables.
+      (if c-state-cache
+         (progn
+           (setq containing-sexp (car paren-state)
+                 paren-state (cdr paren-state))
+           (if (consp containing-sexp)
+               (progn
+                 (setq lim (cdr containing-sexp))
+                 (if (cdr c-state-cache)
+                     ;; Ignore balanced paren.  The next entry
+                     ;; can't be another one.
+                     (setq containing-sexp (car (cdr c-state-cache))
+                           paren-state (cdr paren-state))
+                   ;; If there is no surrounding open paren then
+                   ;; put the last balanced pair back on paren-state.
+                   (setq paren-state (cons containing-sexp paren-state)
+                         containing-sexp nil)))
+             (setq lim (1+ containing-sexp))))
+       (setq lim (point-min)))
+
+      ;; If we're in a parenthesis list then ',' delimits the
+      ;; "statements" rather than being an operator (with the
+      ;; exception of the "for" clause).  This difference is
+      ;; typically only noticeable when statements are used in macro
+      ;; arglists.
+      (when (and containing-sexp
+                (eq (char-after containing-sexp) ?\())
+       (setq c-stmt-delim-chars c-stmt-delim-chars-with-comma))
+      ;; cache char before and after indent point, and move point to
+      ;; the most likely position to perform the majority of tests
+      (goto-char indent-point)
+      (c-backward-syntactic-ws lim)
+      (setq before-ws-ip (point)
+           char-before-ip (char-before))
+      (goto-char indent-point)
+      (skip-chars-forward " \t")
+      (setq char-after-ip (char-after))
+
+      ;; are we in a literal?
+      (setq literal (c-in-literal lim))
+
+      ;; now figure out syntactic qualities of the current line
+      (cond
 
-        ;; CASE 1: in a string.
-        ((eq literal 'string)
-         (c-add-syntax 'string (c-point 'bopl)))
-
-        ;; CASE 2: in a C or C++ style comment.
-        ((and (memq literal '(c c++))
-              ;; This is a kludge for XEmacs where we use
-              ;; `buffer-syntactic-context', which doesn't correctly
-              ;; recognize "\*/" to end a block comment.
-              ;; `parse-partial-sexp' which is used by
-              ;; `c-literal-limits' will however do that in most
-              ;; versions, which results in that we get nil from
-              ;; `c-literal-limits' even when `c-in-literal' claims
-              ;; we're inside a comment.
-              (setq placeholder (c-literal-limits lim)))
-         (c-add-syntax literal (car placeholder)))
-
-        ;; CASE 3: in a cpp preprocessor macro continuation.
-        ((and (save-excursion
-                (when (c-beginning-of-macro)
-                  (setq macro-start (point))))
-              (/= macro-start (c-point 'boi))
-              (progn
-                (setq tmpsymbol 'cpp-macro-cont)
-                (or (not c-syntactic-indentation-in-macros)
-                    (save-excursion
-                      (goto-char macro-start)
-                      ;; If at the beginning of the body of a #define
-                      ;; directive then analyze as cpp-define-intro
-                      ;; only.  Go on with the syntactic analysis
-                      ;; otherwise.  in-macro-expr is set if we're in a
-                      ;; cpp expression, i.e. before the #define body
-                      ;; or anywhere in a non-#define directive.
-                      (if (c-forward-to-cpp-define-body)
-                          (let ((indent-boi (c-point 'boi indent-point)))
-                            (setq in-macro-expr (> (point) indent-boi)
-                                  tmpsymbol 'cpp-define-intro)
-                            (= (point) indent-boi))
-                        (setq in-macro-expr t)
-                        nil)))))
-         (c-add-syntax tmpsymbol macro-start)
-         (setq macro-start nil))
-
-        ;; CASE 11: an else clause?
-        ((looking-at "else\\>[^_]")
-         (c-beginning-of-statement-1 containing-sexp)
-         (c-add-stmt-syntax 'else-clause nil t
-                            containing-sexp paren-state))
+       ;; CASE 1: in a string.
+       ((eq literal 'string)
+       (c-add-syntax 'string (c-point 'bopl)))
+
+       ;; CASE 2: in a C or C++ style comment.
+       ((and (memq literal '(c c++))
+            ;; This is a kludge for XEmacs where we use
+            ;; `buffer-syntactic-context', which doesn't correctly
+            ;; recognize "\*/" to end a block comment.
+            ;; `parse-partial-sexp' which is used by
+            ;; `c-literal-limits' will however do that in most
+            ;; versions, which results in that we get nil from
+            ;; `c-literal-limits' even when `c-in-literal' claims
+            ;; we're inside a comment.
+            (setq placeholder (c-literal-limits lim)))
+       (c-add-syntax literal (car placeholder)))
+
+       ;; CASE 3: in a cpp preprocessor macro continuation.
+       ((and (save-excursion
+              (when (c-beginning-of-macro)
+                (setq macro-start (point))))
+            (/= macro-start (c-point 'boi))
+            (progn
+              (setq tmpsymbol 'cpp-macro-cont)
+              (or (not c-syntactic-indentation-in-macros)
+                  (save-excursion
+                    (goto-char macro-start)
+                    ;; If at the beginning of the body of a #define
+                    ;; directive then analyze as cpp-define-intro
+                    ;; only.  Go on with the syntactic analysis
+                    ;; otherwise.  in-macro-expr is set if we're in a
+                    ;; cpp expression, i.e. before the #define body
+                    ;; or anywhere in a non-#define directive.
+                    (if (c-forward-to-cpp-define-body)
+                        (let ((indent-boi (c-point 'boi indent-point)))
+                          (setq in-macro-expr (> (point) indent-boi)
+                                tmpsymbol 'cpp-define-intro)
+                          (= (point) indent-boi))
+                      (setq in-macro-expr t)
+                      nil)))))
+       (c-add-syntax tmpsymbol macro-start)
+       (setq macro-start nil))
+
+       ;; CASE 11: an else clause?
+       ((looking-at "else\\>[^_]")
+       (c-beginning-of-statement-1 containing-sexp)
+       (c-add-stmt-syntax 'else-clause nil t
+                          containing-sexp paren-state))
 
-        ;; CASE 12: while closure of a do/while construct?
-        ((and (looking-at "while\\>[^_]")
-              (save-excursion
-                (prog1 (eq (c-beginning-of-statement-1 containing-sexp)
-                           'beginning)
-                  (setq placeholder (point)))))
-         (goto-char placeholder)
-         (c-add-stmt-syntax 'do-while-closure nil t
-                            containing-sexp paren-state))
+       ;; CASE 12: while closure of a do/while construct?
+       ((and (looking-at "while\\>[^_]")
+            (save-excursion
+              (prog1 (eq (c-beginning-of-statement-1 containing-sexp)
+                         'beginning)
+                (setq placeholder (point)))))
+       (goto-char placeholder)
+       (c-add-stmt-syntax 'do-while-closure nil t
+                          containing-sexp paren-state))
 
-        ;; CASE 13: A catch or finally clause?  This case is simpler
-        ;; than if-else and do-while, because a block is required
-        ;; after every try, catch and finally.
-        ((save-excursion
-           (and (cond ((c-major-mode-is 'c++-mode)
-                       (looking-at "catch\\>[^_]"))
-                      ((c-major-mode-is 'java-mode)
-                       (looking-at "\\(catch\\|finally\\)\\>[^_]")))
-                (and (c-safe (c-backward-syntactic-ws)
-                             (c-backward-sexp)
-                             t)
-                     (eq (char-after) ?{)
-                     (c-safe (c-backward-syntactic-ws)
-                             (c-backward-sexp)
-                             t)
-                     (if (eq (char-after) ?\()
-                         (c-safe (c-backward-sexp) t)
-                       t))
-                (looking-at "\\(try\\|catch\\)\\>[^_]")
-                (setq placeholder (point))))
-         (goto-char placeholder)
-         (c-add-stmt-syntax 'catch-clause nil t
-                            containing-sexp paren-state))
+       ;; CASE 13: A catch or finally clause?  This case is simpler
+       ;; than if-else and do-while, because a block is required
+       ;; after every try, catch and finally.
+       ((save-excursion
+         (and (cond ((c-major-mode-is 'c++-mode)
+                     (looking-at "catch\\>[^_]"))
+                    ((c-major-mode-is 'java-mode)
+                     (looking-at "\\(catch\\|finally\\)\\>[^_]")))
+              (and (c-safe (c-backward-syntactic-ws)
+                           (c-backward-sexp)
+                           t)
+                   (eq (char-after) ?{)
+                   (c-safe (c-backward-syntactic-ws)
+                           (c-backward-sexp)
+                           t)
+                   (if (eq (char-after) ?\()
+                       (c-safe (c-backward-sexp) t)
+                     t))
+              (looking-at "\\(try\\|catch\\)\\>[^_]")
+              (setq placeholder (point))))
+       (goto-char placeholder)
+       (c-add-stmt-syntax 'catch-clause nil t
+                          containing-sexp paren-state))
 
-        ;; CASE 18: A substatement we can recognize by keyword.
-        ((save-excursion
-           (and c-opt-block-stmt-key
-                (not (eq char-before-ip ?\;))
-                (not (c-at-vsemi-p before-ws-ip))
-                (not (memq char-after-ip '(?\) ?\] ?,)))
-                (or (not (eq char-before-ip ?}))
-                    (c-looking-at-inexpr-block-backward c-state-cache))
-                (> (point)
-                   (progn
-                     ;; Ought to cache the result from the
-                     ;; c-beginning-of-statement-1 calls here.
+       ;; CASE 18: A substatement we can recognize by keyword.
+       ((save-excursion
+         (and c-opt-block-stmt-key
+              (not (eq char-before-ip ?\;))
+              (not (c-at-vsemi-p before-ws-ip))
+              (not (memq char-after-ip '(?\) ?\] ?,)))
+              (or (not (eq char-before-ip ?}))
+                  (c-looking-at-inexpr-block-backward c-state-cache))
+              (> (point)
+                 (progn
+                   ;; Ought to cache the result from the
+                   ;; c-beginning-of-statement-1 calls here.
+                   (setq placeholder (point))
+                   (while (eq (setq step-type
+                                    (c-beginning-of-statement-1 lim))
+                              'label))
+                   (if (eq step-type 'previous)
+                       (goto-char placeholder)
                      (setq placeholder (point))
-                     (while (eq (setq step-type
-                                      (c-beginning-of-statement-1 lim))
-                                'label))
-                     (if (eq step-type 'previous)
-                         (goto-char placeholder)
-                       (setq placeholder (point))
-                       (if (and (eq step-type 'same)
-                                (not (looking-at c-opt-block-stmt-key)))
-                           ;; Step up to the containing statement if we
-                           ;; stayed in the same one.
-                           (let (step)
-                             (while (eq
-                                     (setq step
-                                           (c-beginning-of-statement-1 lim))
-                                     'label))
-                             (if (eq step 'up)
-                                 (setq placeholder (point))
-                               ;; There was no containing statement afterall.
-                               (goto-char placeholder)))))
-                     placeholder))
-                (if (looking-at c-block-stmt-2-key)
-                    ;; Require a parenthesis after these keywords.
-                    ;; Necessary to catch e.g. synchronized in Java,
-                    ;; which can be used both as statement and
-                    ;; modifier.
-                    (and (zerop (c-forward-token-2 1 nil))
-                         (eq (char-after) ?\())
-                  (looking-at c-opt-block-stmt-key))))
-
-         (if (eq step-type 'up)
-             ;; CASE 18A: Simple substatement.
-             (progn
-               (goto-char placeholder)
-               (cond
-                ((eq char-after-ip ?{)
-                 (c-add-stmt-syntax 'substatement-open nil nil
-                                    containing-sexp paren-state))
-                ((save-excursion
-                   (goto-char indent-point)
-                   (back-to-indentation)
-                   (c-forward-label))
-                 (c-add-stmt-syntax 'substatement-label nil nil
-                                    containing-sexp paren-state))
-                (t
-                 (c-add-stmt-syntax 'substatement nil nil
-                                    containing-sexp paren-state))))
-
-           ;; CASE 18B: Some other substatement.  This is shared
-           ;; with case 10.
-           (c-guess-continued-construct indent-point
-                                        char-after-ip
-                                        placeholder
-                                        lim
-                                        paren-state)))
-
-        ;; CASE 14: A case or default label
-        ((looking-at c-label-kwds-regexp)
-         (if containing-sexp
-             (progn
-               (goto-char containing-sexp)
-               (setq lim (c-most-enclosing-brace c-state-cache
-                                                 containing-sexp))
-               (c-backward-to-block-anchor lim)
-               (c-add-stmt-syntax 'case-label nil t lim paren-state))
-           ;; Got a bogus label at the top level.  In lack of better
-           ;; alternatives, anchor it on (point-min).
-           (c-add-syntax 'case-label (point-min))))
-
-        ;; CASE 15: any other label
-        ((save-excursion
-           (back-to-indentation)
-           (and (not (looking-at c-syntactic-ws-start))
-                (c-forward-label)))
-         (cond (containing-decl-open
-                (setq placeholder (c-add-class-syntax 'inclass
-                                                      containing-decl-open
-                                                      containing-decl-start
-                                                      containing-decl-kwd
-                                                      paren-state))
-                ;; Append access-label with the same anchor point as
-                ;; inclass gets.
-                (c-append-syntax 'access-label placeholder))
-
-               (containing-sexp
-                (goto-char containing-sexp)
-                (setq lim (c-most-enclosing-brace c-state-cache
-                                                  containing-sexp))
-                (save-excursion
-                  (setq tmpsymbol
-                        (if (and (eq (c-beginning-of-statement-1 lim) 'up)
-                                 (looking-at "switch\\>[^_]"))
-                            ;; If the surrounding statement is a switch then
-                            ;; let's analyze all labels as switch labels, so
-                            ;; that they get lined up consistently.
-                            'case-label
-                          'label)))
-                (c-backward-to-block-anchor lim)
-                (c-add-stmt-syntax tmpsymbol nil t lim paren-state))
+                     (if (and (eq step-type 'same)
+                              (not (looking-at c-opt-block-stmt-key)))
+                         ;; Step up to the containing statement if we
+                         ;; stayed in the same one.
+                         (let (step)
+                           (while (eq
+                                   (setq step
+                                         (c-beginning-of-statement-1 lim))
+                                   'label))
+                           (if (eq step 'up)
+                               (setq placeholder (point))
+                             ;; There was no containing statement afterall.
+                             (goto-char placeholder)))))
+                   placeholder))
+              (if (looking-at c-block-stmt-2-key)
+                  ;; Require a parenthesis after these keywords.
+                  ;; Necessary to catch e.g. synchronized in Java,
+                  ;; which can be used both as statement and
+                  ;; modifier.
+                  (and (zerop (c-forward-token-2 1 nil))
+                       (eq (char-after) ?\())
+                (looking-at c-opt-block-stmt-key))))
+
+       (if (eq step-type 'up)
+           ;; CASE 18A: Simple substatement.
+           (progn
+             (goto-char placeholder)
+             (cond
+              ((eq char-after-ip ?{)
+               (c-add-stmt-syntax 'substatement-open nil nil
+                                  containing-sexp paren-state))
+              ((save-excursion
+                 (goto-char indent-point)
+                 (back-to-indentation)
+                 (c-forward-label))
+               (c-add-stmt-syntax 'substatement-label nil nil
+                                  containing-sexp paren-state))
+              (t
+               (c-add-stmt-syntax 'substatement nil nil
+                                  containing-sexp paren-state))))
+
+         ;; CASE 18B: Some other substatement.  This is shared
+         ;; with case 10.
+         (c-guess-continued-construct indent-point
+                                      char-after-ip
+                                      placeholder
+                                      lim
+                                      paren-state)))
 
-               (t
-                ;; A label on the top level.  Treat it as a class
-                ;; context.  (point-min) is the closest we get to the
-                ;; class open brace.
-                (c-add-syntax 'access-label (point-min)))))
+       ;; CASE 14: A case or default label
+       ((looking-at c-label-kwds-regexp)
+       (if containing-sexp
+           (progn
+             (goto-char containing-sexp)
+             (setq lim (c-most-enclosing-brace c-state-cache
+                                               containing-sexp))
+             (c-backward-to-block-anchor lim)
+             (c-add-stmt-syntax 'case-label nil t lim paren-state))
+         ;; Got a bogus label at the top level.  In lack of better
+         ;; alternatives, anchor it on (point-min).
+         (c-add-syntax 'case-label (point-min))))
 
-        ;; CASE 4: In-expression statement.  C.f. cases 7B, 16A and
-        ;; 17E.
-        ((setq placeholder (c-looking-at-inexpr-block
-                            (c-safe-position containing-sexp paren-state)
-                            containing-sexp
-                            ;; Have to turn on the heuristics after
-                            ;; the point even though it doesn't work
-                            ;; very well.  C.f. test case class-16.pike.
-                            t))
-         (setq tmpsymbol (assq (car placeholder)
-                               '((inexpr-class . class-open)
-                                 (inexpr-statement . block-open))))
-         (if tmpsymbol
-             ;; It's a statement block or an anonymous class.
-             (setq tmpsymbol (cdr tmpsymbol))
-           ;; It's a Pike lambda.  Check whether we are between the
-           ;; lambda keyword and the argument list or at the defun
-           ;; opener.
-           (setq tmpsymbol (if (eq char-after-ip ?{)
-                               'inline-open
-                             'lambda-intro-cont)))
-         (goto-char (cdr placeholder))
+       ;; CASE 15: any other label
+       ((save-excursion
          (back-to-indentation)
-         (c-add-stmt-syntax tmpsymbol nil t
-                            (c-most-enclosing-brace c-state-cache (point))
-                            paren-state)
-         (unless (eq (point) (cdr placeholder))
-           (c-add-syntax (car placeholder))))
-
-        ;; CASE 5: Line is inside a declaration level block or at top level.
-        ((or containing-decl-open (null containing-sexp))
-         (cond
-
-          ;; CASE 5A: we are looking at a defun, brace list, class,
-          ;; or inline-inclass method opening brace
-          ((setq special-brace-list
-                 (or (and c-special-brace-lists
-                          (c-looking-at-special-brace-list))
-                     (eq char-after-ip ?{)))
-           (cond
+         (and (not (looking-at c-syntactic-ws-start))
+              (c-forward-label)))
+       (cond (containing-decl-open
+              (setq placeholder (c-add-class-syntax 'inclass
+                                                    containing-decl-open
+                                                    containing-decl-start
+                                                    containing-decl-kwd
+                                                    paren-state))
+              ;; Append access-label with the same anchor point as
+              ;; inclass gets.
+              (c-append-syntax 'access-label placeholder))
+
+             (containing-sexp
+              (goto-char containing-sexp)
+              (setq lim (c-most-enclosing-brace c-state-cache
+                                                containing-sexp))
+              (save-excursion
+                (setq tmpsymbol
+                      (if (and (eq (c-beginning-of-statement-1 lim) 'up)
+                               (looking-at "switch\\>[^_]"))
+                          ;; If the surrounding statement is a switch then
+                          ;; let's analyze all labels as switch labels, so
+                          ;; that they get lined up consistently.
+                          'case-label
+                        'label)))
+              (c-backward-to-block-anchor lim)
+              (c-add-stmt-syntax tmpsymbol nil t lim paren-state))
 
-            ;; CASE 5A.1: Non-class declaration block open.
-            ((save-excursion
-               (let (tmp)
-                 (and (eq char-after-ip ?{)
-                      (setq tmp (c-looking-at-decl-block containing-sexp t))
-                      (progn
-                        (setq placeholder (point))
-                        (goto-char tmp)
-                        (looking-at c-symbol-key))
-                      (c-keyword-member
-                       (c-keyword-sym (setq keyword (match-string 0)))
-                       'c-other-block-decl-kwds))))
-             (goto-char placeholder)
-             (c-add-stmt-syntax
-              (if (string-equal keyword "extern")
-                  ;; Special case for extern-lang-open.
-                  'extern-lang-open
-                (intern (concat keyword "-open")))
-              nil t containing-sexp paren-state))
-
-            ;; CASE 5A.2: we are looking at a class opening brace
-            ((save-excursion
-               (goto-char indent-point)
-               (skip-chars-forward " \t")
-               (and (eq (char-after) ?{)
-                    (c-looking-at-decl-block containing-sexp t)
-                    (setq placeholder (point))))
-             (c-add-syntax 'class-open placeholder))
-
-            ;; CASE 5A.3: brace list open
-            ((save-excursion
-               (c-beginning-of-decl-1 lim)
-               (while (looking-at c-specifier-key)
-                 (goto-char (match-end 1))
-                 (c-forward-syntactic-ws indent-point))
-               (setq placeholder (c-point 'boi))
-               (or (consp special-brace-list)
-                   (and (or (save-excursion
-                              (goto-char indent-point)
-                              (setq tmpsymbol nil)
-                              (while (and (> (point) placeholder)
-                                          (zerop (c-backward-token-2 1 t))
-                                          (/= (char-after) ?=))
-                                (and c-opt-inexpr-brace-list-key
-                                     (not tmpsymbol)
-                                     (looking-at c-opt-inexpr-brace-list-key)
-                                     (setq tmpsymbol 'topmost-intro-cont)))
-                              (eq (char-after) ?=))
-                            (looking-at c-brace-list-key))
-                        (save-excursion
-                          (while (and (< (point) indent-point)
-                                      (zerop (c-forward-token-2 1 t))
-                                      (not (memq (char-after) '(?\; ?\()))))
-                          (not (memq (char-after) '(?\; ?\()))
-                          ))))
-             (if (and (not c-auto-newline-analysis)
-                      (c-major-mode-is 'java-mode)
-                      (eq tmpsymbol 'topmost-intro-cont))
-                 ;; We're in Java and have found that the open brace
-                 ;; belongs to a "new Foo[]" initialization list,
-                 ;; which means the brace list is part of an
-                 ;; expression and not a top level definition.  We
-                 ;; therefore treat it as any topmost continuation
-                 ;; even though the semantically correct symbol still
-                 ;; is brace-list-open, on the same grounds as in
-                 ;; case B.2.
-                 (progn
-                   (c-beginning-of-statement-1 lim)
-                   (c-add-syntax 'topmost-intro-cont (c-point 'boi)))
-               (c-add-syntax 'brace-list-open placeholder)))
-
-            ;; CASE 5A.4: inline defun open
-            ((and containing-decl-open
-                  (not (c-keyword-member containing-decl-kwd
-                                         'c-other-block-decl-kwds)))
-             (c-add-syntax 'inline-open)
-             (c-add-class-syntax 'inclass
-                                 containing-decl-open
-                                 containing-decl-start
-                                 containing-decl-kwd
-                                 paren-state))
-
-            ;; CASE 5A.5: ordinary defun open
-            (t
-             (save-excursion
-               (c-beginning-of-decl-1 lim)
-               (while (looking-at c-specifier-key)
-                 (goto-char (match-end 1))
-                 (c-forward-syntactic-ws indent-point))
-               (c-add-syntax 'defun-open (c-point 'boi))
-               ;; Bogus to use bol here, but it's the legacy.  (Resolved,
-               ;; 2007-11-09)
-               ))))
-
-          ;; CASE 5B: After a function header but before the body (or
-          ;; the ending semicolon if there's no body).
-          ((save-excursion
-             (when (setq placeholder (c-just-after-func-arglist-p lim))
-               (setq tmp-pos (point))))
-           (cond
+             (t
+              ;; A label on the top level.  Treat it as a class
+              ;; context.  (point-min) is the closest we get to the
+              ;; class open brace.
+              (c-add-syntax 'access-label (point-min)))))
+
+       ;; CASE 4: In-expression statement.  C.f. cases 7B, 16A and
+       ;; 17E.
+       ((setq placeholder (c-looking-at-inexpr-block
+                          (c-safe-position containing-sexp paren-state)
+                          containing-sexp
+                          ;; Have to turn on the heuristics after
+                          ;; the point even though it doesn't work
+                          ;; very well.  C.f. test case class-16.pike.
+                          t))
+       (setq tmpsymbol (assq (car placeholder)
+                             '((inexpr-class . class-open)
+                               (inexpr-statement . block-open))))
+       (if tmpsymbol
+           ;; It's a statement block or an anonymous class.
+           (setq tmpsymbol (cdr tmpsymbol))
+         ;; It's a Pike lambda.  Check whether we are between the
+         ;; lambda keyword and the argument list or at the defun
+         ;; opener.
+         (setq tmpsymbol (if (eq char-after-ip ?{)
+                             'inline-open
+                           'lambda-intro-cont)))
+       (goto-char (cdr placeholder))
+       (back-to-indentation)
+       (c-add-stmt-syntax tmpsymbol nil t
+                          (c-most-enclosing-brace c-state-cache (point))
+                          paren-state)
+       (unless (eq (point) (cdr placeholder))
+         (c-add-syntax (car placeholder))))
 
-            ;; CASE 5B.1: Member init list.
-            ((eq (char-after tmp-pos) ?:)
-             (if (or (> tmp-pos indent-point)
-                     (= (c-point 'bosws) (1+ tmp-pos)))
-                 (progn
-                   ;; There is no preceding member init clause.
-                   ;; Indent relative to the beginning of indentation
-                   ;; for the topmost-intro line that contains the
-                   ;; prototype's open paren.
-                   (goto-char placeholder)
-                   (c-add-syntax 'member-init-intro (c-point 'boi)))
-               ;; Indent relative to the first member init clause.
-               (goto-char (1+ tmp-pos))
-               (c-forward-syntactic-ws)
-               (c-add-syntax 'member-init-cont (point))))
+       ;; CASE 5: Line is inside a declaration level block or at top level.
+       ((or containing-decl-open (null containing-sexp))
+       (cond
 
-            ;; CASE 5B.2: K&R arg decl intro
-            ((and c-recognize-knr-p
-                  (c-in-knr-argdecl lim))
-             (c-beginning-of-statement-1 lim)
-             (c-add-syntax 'knr-argdecl-intro (c-point 'boi))
-             (if containing-decl-open
-                 (c-add-class-syntax 'inclass
-                                     containing-decl-open
-                                     containing-decl-start
-                                     containing-decl-kwd
-                                     paren-state)))
-
-            ;; CASE 5B.4: Nether region after a C++ or Java func
-            ;; decl, which could include a `throws' declaration.
-            (t
-             (c-beginning-of-statement-1 lim)
-             (c-add-syntax 'func-decl-cont (c-point 'boi))
-             )))
+        ;; CASE 5A: we are looking at a defun, brace list, class,
+        ;; or inline-inclass method opening brace
+        ((setq special-brace-list
+               (or (and c-special-brace-lists
+                        (c-looking-at-special-brace-list))
+                   (eq char-after-ip ?{)))
+         (cond
 
-          ;; CASE 5C: inheritance line. could be first inheritance
-          ;; line, or continuation of a multiple inheritance
-          ((or (and (c-major-mode-is 'c++-mode)
+          ;; CASE 5A.1: Non-class declaration block open.
+          ((save-excursion
+             (let (tmp)
+               (and (eq char-after-ip ?{)
+                    (setq tmp (c-looking-at-decl-block containing-sexp t))
                     (progn
-                      (when (eq char-after-ip ?,)
-                        (skip-chars-forward " \t")
-                        (forward-char))
-                      (looking-at c-opt-postfix-decl-spec-key)))
-               (and (or (eq char-before-ip ?:)
-                        ;; watch out for scope operator
-                        (save-excursion
-                          (and (eq char-after-ip ?:)
-                               (c-safe (forward-char 1) t)
-                               (not (eq (char-after) ?:))
-                               )))
-                    (save-excursion
-                      (c-backward-syntactic-ws lim)
-                      (if (eq char-before-ip ?:)
-                          (progn
-                            (forward-char -1)
-                            (c-backward-syntactic-ws lim)))
-                      (back-to-indentation)
-                      (looking-at c-class-key)))
-               ;; for Java
-               (and (c-major-mode-is 'java-mode)
-                    (let ((fence (save-excursion
-                                   (c-beginning-of-statement-1 lim)
-                                   (point)))
-                          cont done)
-                      (save-excursion
-                        (while (not done)
-                          (cond ((looking-at c-opt-postfix-decl-spec-key)
-                                 (setq injava-inher (cons cont (point))
-                                       done t))
-                                ((or (not (c-safe (c-forward-sexp -1) t))
-                                     (<= (point) fence))
-                                 (setq done t))
-                                )
-                          (setq cont t)))
-                      injava-inher)
-                    (not (c-crosses-statement-barrier-p (cdr injava-inher)
-                                                        (point)))
-                    ))
-           (cond
-
-            ;; CASE 5C.1: non-hanging colon on an inher intro
-            ((eq char-after-ip ?:)
-             (c-beginning-of-statement-1 lim)
-             (c-add-syntax 'inher-intro (c-point 'boi))
-             ;; don't add inclass symbol since relative point already
-             ;; contains any class offset
-             )
+                      (setq placeholder (point))
+                      (goto-char tmp)
+                      (looking-at c-symbol-key))
+                    (c-keyword-member
+                     (c-keyword-sym (setq keyword (match-string 0)))
+                     'c-other-block-decl-kwds))))
+           (goto-char placeholder)
+           (c-add-stmt-syntax
+            (if (string-equal keyword "extern")
+                ;; Special case for extern-lang-open.
+                'extern-lang-open
+              (intern (concat keyword "-open")))
+            nil t containing-sexp paren-state))
 
-            ;; CASE 5C.2: hanging colon on an inher intro
-            ((eq char-before-ip ?:)
-             (c-beginning-of-statement-1 lim)
-             (c-add-syntax 'inher-intro (c-point 'boi))
-             (if containing-decl-open
-                 (c-add-class-syntax 'inclass
-                                     containing-decl-open
-                                     containing-decl-start
-                                     containing-decl-kwd
-                                     paren-state)))
-
-            ;; CASE 5C.3: in a Java implements/extends
-            (injava-inher
-             (let ((where (cdr injava-inher))
-                   (cont (car injava-inher)))
-               (goto-char where)
-               (cond ((looking-at "throws\\>[^_]")
-                      (c-add-syntax 'func-decl-cont
-                                    (progn (c-beginning-of-statement-1 lim)
-                                           (c-point 'boi))))
-                     (cont (c-add-syntax 'inher-cont where))
-                     (t (c-add-syntax 'inher-intro
-                                      (progn (goto-char (cdr injava-inher))
-                                             (c-beginning-of-statement-1 lim)
-                                             (point))))
-                     )))
-
-            ;; CASE 5C.4: a continued inheritance line
-            (t
-             (c-beginning-of-inheritance-list lim)
-             (c-add-syntax 'inher-cont (point))
-             ;; don't add inclass symbol since relative point already
-             ;; contains any class offset
-             )))
-
-          ;; CASE 5D: this could be a top-level initialization, a
-          ;; member init list continuation, or a template argument
-          ;; list continuation.
+          ;; CASE 5A.2: we are looking at a class opening brace
           ((save-excursion
-             ;; Note: We use the fact that lim is always after any
-             ;; preceding brace sexp.
-             (if c-recognize-<>-arglists
-                 (while (and
-                         (progn
-                           (c-syntactic-skip-backward "^;,=<>" lim t)
-                           (> (point) lim))
-                         (or
-                          (when c-overloadable-operators-regexp
-                            (when (setq placeholder (c-after-special-operator-id lim))
-                              (goto-char placeholder)
-                              t))
-                          (cond
-                           ((eq (char-before) ?>)
-                            (or (c-backward-<>-arglist nil lim)
-                                (backward-char))
-                            t)
-                           ((eq (char-before) ?<)
-                            (backward-char)
-                            (if (save-excursion
-                                  (c-forward-<>-arglist nil))
-                                (progn (forward-char)
-                                       nil)
-                              t))
-                           (t nil)))))
-               ;; NB: No c-after-special-operator-id stuff in this
-               ;; clause - we assume only C++ needs it.
-               (c-syntactic-skip-backward "^;,=" lim t))
-             (memq (char-before) '(?, ?= ?<)))
-           (cond
-
-            ;; CASE 5D.3: perhaps a template list continuation?
-            ((and (c-major-mode-is 'c++-mode)
-                  (save-excursion
-                    (save-restriction
-                      (c-with-syntax-table c++-template-syntax-table
-                        (goto-char indent-point)
-                        (setq placeholder (c-up-list-backward))
-                        (and placeholder
-                             (eq (char-after placeholder) ?<))))))
-             (c-with-syntax-table c++-template-syntax-table
-               (goto-char placeholder)
-               (c-beginning-of-statement-1 lim t)
-               (if (save-excursion
-                     (c-backward-syntactic-ws lim)
-                     (eq (char-before) ?<))
-                   ;; In a nested template arglist.
-                   (progn
-                     (goto-char placeholder)
-                     (c-syntactic-skip-backward "^,;" lim t)
-                     (c-forward-syntactic-ws))
-                 (back-to-indentation)))
-             ;; FIXME: Should use c-add-stmt-syntax, but it's not yet
-             ;; template aware.
-             (c-add-syntax 'template-args-cont (point) placeholder))
-
-            ;; CASE 5D.4: perhaps a multiple inheritance line?
-            ((and (c-major-mode-is 'c++-mode)
-                  (save-excursion
-                    (c-beginning-of-statement-1 lim)
-                    (setq placeholder (point))
-                    (if (looking-at "static\\>[^_]")
-                        (c-forward-token-2 1 nil indent-point))
-                    (and (looking-at c-class-key)
-                         (zerop (c-forward-token-2 2 nil indent-point))
-                         (if (eq (char-after) ?<)
-                             (c-with-syntax-table c++-template-syntax-table
-                               (zerop (c-forward-token-2 1 t indent-point)))
-                           t)
-                         (eq (char-after) ?:))))
-             (goto-char placeholder)
-             (c-add-syntax 'inher-cont (c-point 'boi)))
-
-            ;; CASE 5D.5: Continuation of the "expression part" of a
-            ;; top level construct.  Or, perhaps, an unrecognised construct.
-            (t
-             (while (and (setq placeholder (point))
-                         (eq (car (c-beginning-of-decl-1 containing-sexp))
-                             'same)
-                         (save-excursion
-                           (c-backward-syntactic-ws)
-                           (eq (char-before) ?}))
-                         (< (point) placeholder)))
-             (c-add-stmt-syntax
-              (cond
-               ((eq (point) placeholder) 'statement) ; unrecognised construct
-                  ;; A preceding comma at the top level means that a
-                  ;; new variable declaration starts here.  Use
-                  ;; topmost-intro-cont for it, for consistency with
-                  ;; the first variable declaration.  C.f. case 5N.
-               ((eq char-before-ip ?,) 'topmost-intro-cont)
-               (t 'statement-cont))
-              nil nil containing-sexp paren-state))
-            ))
-
-          ;; CASE 5F: Close of a non-class declaration level block.
-          ((and (eq char-after-ip ?})
-                (c-keyword-member containing-decl-kwd
-                                  'c-other-block-decl-kwds))
-           ;; This is inconsistent: Should use `containing-decl-open'
-           ;; here if it's at boi, like in case 5J.
-           (goto-char containing-decl-start)
-           (c-add-stmt-syntax
-             (if (string-equal (symbol-name containing-decl-kwd) "extern")
-                 ;; Special case for compatibility with the
-                 ;; extern-lang syntactic symbols.
-                 'extern-lang-close
-               (intern (concat (symbol-name containing-decl-kwd)
-                               "-close")))
-             nil t
-             (c-most-enclosing-brace paren-state (point))
-             paren-state))
-
-          ;; CASE 5G: we are looking at the brace which closes the
-          ;; enclosing nested class decl
-          ((and containing-sexp
-                (eq char-after-ip ?})
-                (eq containing-decl-open containing-sexp))
-           (c-add-class-syntax 'class-close
+             (goto-char indent-point)
+             (skip-chars-forward " \t")
+             (and (eq (char-after) ?{)
+                  (c-looking-at-decl-block containing-sexp t)
+                  (setq placeholder (point))))
+           (c-add-syntax 'class-open placeholder))
+
+          ;; CASE 5A.3: brace list open
+          ((save-excursion
+             (c-beginning-of-decl-1 lim)
+             (while (looking-at c-specifier-key)
+               (goto-char (match-end 1))
+               (c-forward-syntactic-ws indent-point))
+             (setq placeholder (c-point 'boi))
+             (or (consp special-brace-list)
+                 (and (or (save-excursion
+                            (goto-char indent-point)
+                            (setq tmpsymbol nil)
+                            (while (and (> (point) placeholder)
+                                        (zerop (c-backward-token-2 1 t))
+                                        (/= (char-after) ?=))
+                              (and c-opt-inexpr-brace-list-key
+                                   (not tmpsymbol)
+                                   (looking-at c-opt-inexpr-brace-list-key)
+                                   (setq tmpsymbol 'topmost-intro-cont)))
+                            (eq (char-after) ?=))
+                          (looking-at c-brace-list-key))
+                      (save-excursion
+                        (while (and (< (point) indent-point)
+                                    (zerop (c-forward-token-2 1 t))
+                                    (not (memq (char-after) '(?\; ?\()))))
+                        (not (memq (char-after) '(?\; ?\()))
+                        ))))
+           (if (and (not c-auto-newline-analysis)
+                    (c-major-mode-is 'java-mode)
+                    (eq tmpsymbol 'topmost-intro-cont))
+               ;; We're in Java and have found that the open brace
+               ;; belongs to a "new Foo[]" initialization list,
+               ;; which means the brace list is part of an
+               ;; expression and not a top level definition.  We
+               ;; therefore treat it as any topmost continuation
+               ;; even though the semantically correct symbol still
+               ;; is brace-list-open, on the same grounds as in
+               ;; case B.2.
+               (progn
+                 (c-beginning-of-statement-1 lim)
+                 (c-add-syntax 'topmost-intro-cont (c-point 'boi)))
+             (c-add-syntax 'brace-list-open placeholder)))
+
+          ;; CASE 5A.4: inline defun open
+          ((and containing-decl-open
+                (not (c-keyword-member containing-decl-kwd
+                                       'c-other-block-decl-kwds)))
+           (c-add-syntax 'inline-open)
+           (c-add-class-syntax 'inclass
                                containing-decl-open
                                containing-decl-start
                                containing-decl-kwd
                                paren-state))
 
-          ;; CASE 5H: we could be looking at subsequent knr-argdecls
+          ;; CASE 5A.5: ordinary defun open
+          (t
+           (save-excursion
+             (c-beginning-of-decl-1 lim)
+             (while (looking-at c-specifier-key)
+               (goto-char (match-end 1))
+               (c-forward-syntactic-ws indent-point))
+             (c-add-syntax 'defun-open (c-point 'boi))
+             ;; Bogus to use bol here, but it's the legacy.  (Resolved,
+             ;; 2007-11-09)
+             ))))
+
+        ;; CASE 5B: After a function header but before the body (or
+        ;; the ending semicolon if there's no body).
+        ((save-excursion
+           (when (setq placeholder (c-just-after-func-arglist-p lim))
+             (setq tmp-pos (point))))
+         (cond
+
+          ;; CASE 5B.1: Member init list.
+          ((eq (char-after tmp-pos) ?:)
+           (if (or (> tmp-pos indent-point)
+                   (= (c-point 'bosws) (1+ tmp-pos)))
+               (progn
+                 ;; There is no preceding member init clause.
+                 ;; Indent relative to the beginning of indentation
+                 ;; for the topmost-intro line that contains the
+                 ;; prototype's open paren.
+                 (goto-char placeholder)
+                 (c-add-syntax 'member-init-intro (c-point 'boi)))
+             ;; Indent relative to the first member init clause.
+             (goto-char (1+ tmp-pos))
+             (c-forward-syntactic-ws)
+             (c-add-syntax 'member-init-cont (point))))
+
+          ;; CASE 5B.2: K&R arg decl intro
           ((and c-recognize-knr-p
-                (not containing-sexp)  ; can't be knr inside braces.
-                (not (eq char-before-ip ?}))
-                (save-excursion
-                  (setq placeholder (cdr (c-beginning-of-decl-1 lim)))
-                  (and placeholder
-                       ;; Do an extra check to avoid tripping up on
-                       ;; statements that occur in invalid contexts
-                       ;; (e.g. in macro bodies where we don't really
-                       ;; know the context of what we're looking at).
-                       (not (and c-opt-block-stmt-key
-                                 (looking-at c-opt-block-stmt-key)))))
-                (< placeholder indent-point))
-           (goto-char placeholder)
-           (c-add-syntax 'knr-argdecl (point)))
-
-          ;; CASE 5I: ObjC method definition.
-          ((and c-opt-method-key
-                (looking-at c-opt-method-key))
-           (c-beginning-of-statement-1 nil t)
-           (if (= (point) indent-point)
-               ;; Handle the case when it's the first (non-comment)
-               ;; thing in the buffer.  Can't look for a 'same return
-               ;; value from cbos1 since ObjC directives currently
-               ;; aren't recognized fully, so that we get 'same
-               ;; instead of 'previous if it moved over a preceding
-               ;; directive.
-               (goto-char (point-min)))
-           (c-add-syntax 'objc-method-intro (c-point 'boi)))
-
-           ;; CASE 5P: AWK pattern or function or continuation
-           ;; thereof.
-           ((c-major-mode-is 'awk-mode)
-            (setq placeholder (point))
-            (c-add-stmt-syntax
-             (if (and (eq (c-beginning-of-statement-1) 'same)
-                      (/= (point) placeholder))
-                 'topmost-intro-cont
-               'topmost-intro)
-             nil nil
-             containing-sexp paren-state))
-
-          ;; CASE 5N: At a variable declaration that follows a class
-          ;; definition or some other block declaration that doesn't
-          ;; end at the closing '}'.  C.f. case 5D.5.
-          ((progn
-             (c-backward-syntactic-ws lim)
-             (and (eq (char-before) ?})
+                (c-in-knr-argdecl lim))
+           (c-beginning-of-statement-1 lim)
+           (c-add-syntax 'knr-argdecl-intro (c-point 'boi))
+           (if containing-decl-open
+               (c-add-class-syntax 'inclass
+                                   containing-decl-open
+                                   containing-decl-start
+                                   containing-decl-kwd
+                                   paren-state)))
+
+          ;; CASE 5B.4: Nether region after a C++ or Java func
+          ;; decl, which could include a `throws' declaration.
+          (t
+           (c-beginning-of-statement-1 lim)
+           (c-add-syntax 'func-decl-cont (c-point 'boi))
+           )))
+
+        ;; CASE 5C: inheritance line. could be first inheritance
+        ;; line, or continuation of a multiple inheritance
+        ((or (and (c-major-mode-is 'c++-mode)
+                  (progn
+                    (when (eq char-after-ip ?,)
+                      (skip-chars-forward " \t")
+                      (forward-char))
+                    (looking-at c-opt-postfix-decl-spec-key)))
+             (and (or (eq char-before-ip ?:)
+                      ;; watch out for scope operator
+                      (save-excursion
+                        (and (eq char-after-ip ?:)
+                             (c-safe (forward-char 1) t)
+                             (not (eq (char-after) ?:))
+                             )))
                   (save-excursion
-                    (let ((start (point)))
-                      (if (and c-state-cache
-                               (consp (car c-state-cache))
-                               (eq (cdar c-state-cache) (point)))
-                          ;; Speed up the backward search a bit.
-                          (goto-char (caar c-state-cache)))
-                      (c-beginning-of-decl-1 containing-sexp)
-                      (setq placeholder (point))
-                      (if (= start (point))
-                          ;; The '}' is unbalanced.
-                          nil
-                        (c-end-of-decl-1)
-                        (>= (point) indent-point))))))
-           (goto-char placeholder)
-           (c-add-stmt-syntax 'topmost-intro-cont nil nil
-                              containing-sexp paren-state))
+                    (c-backward-syntactic-ws lim)
+                    (if (eq char-before-ip ?:)
+                        (progn
+                          (forward-char -1)
+                          (c-backward-syntactic-ws lim)))
+                    (back-to-indentation)
+                    (looking-at c-class-key)))
+             ;; for Java
+             (and (c-major-mode-is 'java-mode)
+                  (let ((fence (save-excursion
+                                 (c-beginning-of-statement-1 lim)
+                                 (point)))
+                        cont done)
+                    (save-excursion
+                      (while (not done)
+                        (cond ((looking-at c-opt-postfix-decl-spec-key)
+                               (setq injava-inher (cons cont (point))
+                                     done t))
+                              ((or (not (c-safe (c-forward-sexp -1) t))
+                                   (<= (point) fence))
+                               (setq done t))
+                              )
+                        (setq cont t)))
+                    injava-inher)
+                  (not (c-crosses-statement-barrier-p (cdr injava-inher)
+                                                      (point)))
+                  ))
+         (cond
 
-          ;; NOTE: The point is at the end of the previous token here.
+          ;; CASE 5C.1: non-hanging colon on an inher intro
+          ((eq char-after-ip ?:)
+           (c-beginning-of-statement-1 lim)
+           (c-add-syntax 'inher-intro (c-point 'boi))
+           ;; don't add inclass symbol since relative point already
+           ;; contains any class offset
+           )
 
-          ;; CASE 5J: we are at the topmost level, make
-          ;; sure we skip back past any access specifiers
-          ((and
-            ;; A macro continuation line is never at top level.
-            (not (and macro-start
-                      (> indent-point macro-start)))
-            (save-excursion
-              (setq placeholder (point))
-              (or (memq char-before-ip '(?\; ?{ ?} nil))
-                  (c-at-vsemi-p before-ws-ip)
-                  (when (and (eq char-before-ip ?:)
-                             (eq (c-beginning-of-statement-1 lim)
-                                 'label))
-                    (c-backward-syntactic-ws lim)
-                    (setq placeholder (point)))
-                  (and (c-major-mode-is 'objc-mode)
-                       (catch 'not-in-directive
-                         (c-beginning-of-statement-1 lim)
-                         (setq placeholder (point))
-                         (while (and (c-forward-objc-directive)
-                                     (< (point) indent-point))
-                           (c-forward-syntactic-ws)
-                           (if (>= (point) indent-point)
-                               (throw 'not-in-directive t))
-                           (setq placeholder (point)))
-                         nil)))))
-           ;; For historic reasons we anchor at bol of the last
-           ;; line of the previous declaration.  That's clearly
-           ;; highly bogus and useless, and it makes our lives hard
-           ;; to remain compatible.  :P
-           (goto-char placeholder)
-           (c-add-syntax 'topmost-intro (c-point 'bol))
+          ;; CASE 5C.2: hanging colon on an inher intro
+          ((eq char-before-ip ?:)
+           (c-beginning-of-statement-1 lim)
+           (c-add-syntax 'inher-intro (c-point 'boi))
            (if containing-decl-open
-               (if (c-keyword-member containing-decl-kwd
-                                     'c-other-block-decl-kwds)
-                   (progn
-                     (goto-char (c-brace-anchor-point containing-decl-open))
-                     (c-add-stmt-syntax
-                      (if (string-equal (symbol-name containing-decl-kwd)
-                                        "extern")
-                          ;; Special case for compatibility with the
-                          ;; extern-lang syntactic symbols.
-                          'inextern-lang
-                        (intern (concat "in"
-                                        (symbol-name containing-decl-kwd))))
-                      nil t
-                      (c-most-enclosing-brace paren-state (point))
-                      paren-state))
-                 (c-add-class-syntax 'inclass
-                                     containing-decl-open
-                                     containing-decl-start
-                                     containing-decl-kwd
-                                     paren-state)))
-           (when (and c-syntactic-indentation-in-macros
-                      macro-start
-                      (/= macro-start (c-point 'boi indent-point)))
-             (c-add-syntax 'cpp-define-intro)
-             (setq macro-start nil)))
-
-          ;; CASE 5K: we are at an ObjC method definition
-          ;; continuation line.
-          ((and c-opt-method-key
+               (c-add-class-syntax 'inclass
+                                   containing-decl-open
+                                   containing-decl-start
+                                   containing-decl-kwd
+                                   paren-state)))
+
+          ;; CASE 5C.3: in a Java implements/extends
+          (injava-inher
+           (let ((where (cdr injava-inher))
+                 (cont (car injava-inher)))
+             (goto-char where)
+             (cond ((looking-at "throws\\>[^_]")
+                    (c-add-syntax 'func-decl-cont
+                                  (progn (c-beginning-of-statement-1 lim)
+                                         (c-point 'boi))))
+                   (cont (c-add-syntax 'inher-cont where))
+                   (t (c-add-syntax 'inher-intro
+                                    (progn (goto-char (cdr injava-inher))
+                                           (c-beginning-of-statement-1 lim)
+                                           (point))))
+                   )))
+
+          ;; CASE 5C.4: a continued inheritance line
+          (t
+           (c-beginning-of-inheritance-list lim)
+           (c-add-syntax 'inher-cont (point))
+           ;; don't add inclass symbol since relative point already
+           ;; contains any class offset
+           )))
+
+        ;; CASE 5D: this could be a top-level initialization, a
+        ;; member init list continuation, or a template argument
+        ;; list continuation.
+        ((save-excursion
+           ;; Note: We use the fact that lim is always after any
+           ;; preceding brace sexp.
+           (if c-recognize-<>-arglists
+               (while (and
+                       (progn
+                         (c-syntactic-skip-backward "^;,=<>" lim t)
+                         (> (point) lim))
+                       (or
+                        (when c-overloadable-operators-regexp
+                          (when (setq placeholder (c-after-special-operator-id lim))
+                            (goto-char placeholder)
+                            t))
+                        (cond
+                         ((eq (char-before) ?>)
+                          (or (c-backward-<>-arglist nil lim)
+                              (backward-char))
+                          t)
+                         ((eq (char-before) ?<)
+                          (backward-char)
+                          (if (save-excursion
+                                (c-forward-<>-arglist nil))
+                              (progn (forward-char)
+                                     nil)
+                            t))
+                         (t nil)))))
+             ;; NB: No c-after-special-operator-id stuff in this
+             ;; clause - we assume only C++ needs it.
+             (c-syntactic-skip-backward "^;,=" lim t))
+           (memq (char-before) '(?, ?= ?<)))
+         (cond
+
+          ;; CASE 5D.3: perhaps a template list continuation?
+          ((and (c-major-mode-is 'c++-mode)
+                (save-excursion
+                  (save-restriction
+                    (c-with-syntax-table c++-template-syntax-table
+                      (goto-char indent-point)
+                      (setq placeholder (c-up-list-backward))
+                      (and placeholder
+                           (eq (char-after placeholder) ?<))))))
+           (c-with-syntax-table c++-template-syntax-table
+             (goto-char placeholder)
+             (c-beginning-of-statement-1 lim t)
+             (if (save-excursion
+                   (c-backward-syntactic-ws lim)
+                   (eq (char-before) ?<))
+                 ;; In a nested template arglist.
+                 (progn
+                   (goto-char placeholder)
+                   (c-syntactic-skip-backward "^,;" lim t)
+                   (c-forward-syntactic-ws))
+               (back-to-indentation)))
+           ;; FIXME: Should use c-add-stmt-syntax, but it's not yet
+           ;; template aware.
+           (c-add-syntax 'template-args-cont (point) placeholder))
+
+          ;; CASE 5D.4: perhaps a multiple inheritance line?
+          ((and (c-major-mode-is 'c++-mode)
                 (save-excursion
                   (c-beginning-of-statement-1 lim)
-                  (beginning-of-line)
-                  (when (looking-at c-opt-method-key)
-                    (setq placeholder (point)))))
-           (c-add-syntax 'objc-method-args-cont placeholder))
+                  (setq placeholder (point))
+                  (if (looking-at "static\\>[^_]")
+                      (c-forward-token-2 1 nil indent-point))
+                  (and (looking-at c-class-key)
+                       (zerop (c-forward-token-2 2 nil indent-point))
+                       (if (eq (char-after) ?<)
+                           (c-with-syntax-table c++-template-syntax-table
+                             (zerop (c-forward-token-2 1 t indent-point)))
+                         t)
+                       (eq (char-after) ?:))))
+           (goto-char placeholder)
+           (c-add-syntax 'inher-cont (c-point 'boi)))
+
+          ;; CASE 5D.5: Continuation of the "expression part" of a
+          ;; top level construct.  Or, perhaps, an unrecognised construct.
+          (t
+           (while (and (setq placeholder (point))
+                       (eq (car (c-beginning-of-decl-1 containing-sexp))
+                           'same)
+                       (save-excursion
+                         (c-backward-syntactic-ws)
+                         (eq (char-before) ?}))
+                       (< (point) placeholder)))
+           (c-add-stmt-syntax
+            (cond
+             ((eq (point) placeholder) 'statement) ; unrecognised construct
+             ;; A preceding comma at the top level means that a
+             ;; new variable declaration starts here.  Use
+             ;; topmost-intro-cont for it, for consistency with
+             ;; the first variable declaration.  C.f. case 5N.
+             ((eq char-before-ip ?,) 'topmost-intro-cont)
+             (t 'statement-cont))
+            nil nil containing-sexp paren-state))
+          ))
+
+        ;; CASE 5F: Close of a non-class declaration level block.
+        ((and (eq char-after-ip ?})
+              (c-keyword-member containing-decl-kwd
+                                'c-other-block-decl-kwds))
+         ;; This is inconsistent: Should use `containing-decl-open'
+         ;; here if it's at boi, like in case 5J.
+         (goto-char containing-decl-start)
+         (c-add-stmt-syntax
+          (if (string-equal (symbol-name containing-decl-kwd) "extern")
+              ;; Special case for compatibility with the
+              ;; extern-lang syntactic symbols.
+              'extern-lang-close
+            (intern (concat (symbol-name containing-decl-kwd)
+                            "-close")))
+          nil t
+          (c-most-enclosing-brace paren-state (point))
+          paren-state))
+
+        ;; CASE 5G: we are looking at the brace which closes the
+        ;; enclosing nested class decl
+        ((and containing-sexp
+              (eq char-after-ip ?})
+              (eq containing-decl-open containing-sexp))
+         (c-add-class-syntax 'class-close
+                             containing-decl-open
+                             containing-decl-start
+                             containing-decl-kwd
+                             paren-state))
+
+        ;; CASE 5H: we could be looking at subsequent knr-argdecls
+        ((and c-recognize-knr-p
+              (not containing-sexp)    ; can't be knr inside braces.
+              (not (eq char-before-ip ?}))
+              (save-excursion
+                (setq placeholder (cdr (c-beginning-of-decl-1 lim)))
+                (and placeholder
+                     ;; Do an extra check to avoid tripping up on
+                     ;; statements that occur in invalid contexts
+                     ;; (e.g. in macro bodies where we don't really
+                     ;; know the context of what we're looking at).
+                     (not (and c-opt-block-stmt-key
+                               (looking-at c-opt-block-stmt-key)))))
+              (< placeholder indent-point))
+         (goto-char placeholder)
+         (c-add-syntax 'knr-argdecl (point)))
+
+        ;; CASE 5I: ObjC method definition.
+        ((and c-opt-method-key
+              (looking-at c-opt-method-key))
+         (c-beginning-of-statement-1 nil t)
+         (if (= (point) indent-point)
+             ;; Handle the case when it's the first (non-comment)
+             ;; thing in the buffer.  Can't look for a 'same return
+             ;; value from cbos1 since ObjC directives currently
+             ;; aren't recognized fully, so that we get 'same
+             ;; instead of 'previous if it moved over a preceding
+             ;; directive.
+             (goto-char (point-min)))
+         (c-add-syntax 'objc-method-intro (c-point 'boi)))
+
+        ;; CASE 5P: AWK pattern or function or continuation
+        ;; thereof.
+        ((c-major-mode-is 'awk-mode)
+         (setq placeholder (point))
+         (c-add-stmt-syntax
+          (if (and (eq (c-beginning-of-statement-1) 'same)
+                   (/= (point) placeholder))
+              'topmost-intro-cont
+            'topmost-intro)
+          nil nil
+          containing-sexp paren-state))
+
+        ;; CASE 5N: At a variable declaration that follows a class
+        ;; definition or some other block declaration that doesn't
+        ;; end at the closing '}'.  C.f. case 5D.5.
+        ((progn
+           (c-backward-syntactic-ws lim)
+           (and (eq (char-before) ?})
+                (save-excursion
+                  (let ((start (point)))
+                    (if (and c-state-cache
+                             (consp (car c-state-cache))
+                             (eq (cdar c-state-cache) (point)))
+                        ;; Speed up the backward search a bit.
+                        (goto-char (caar c-state-cache)))
+                    (c-beginning-of-decl-1 containing-sexp)
+                    (setq placeholder (point))
+                    (if (= start (point))
+                        ;; The '}' is unbalanced.
+                        nil
+                      (c-end-of-decl-1)
+                      (>= (point) indent-point))))))
+         (goto-char placeholder)
+         (c-add-stmt-syntax 'topmost-intro-cont nil nil
+                            containing-sexp paren-state))
+
+        ;; NOTE: The point is at the end of the previous token here.
+
+        ;; CASE 5J: we are at the topmost level, make
+        ;; sure we skip back past any access specifiers
+        ((and
+          ;; A macro continuation line is never at top level.
+          (not (and macro-start
+                    (> indent-point macro-start)))
+          (save-excursion
+            (setq placeholder (point))
+            (or (memq char-before-ip '(?\; ?{ ?} nil))
+                (c-at-vsemi-p before-ws-ip)
+                (when (and (eq char-before-ip ?:)
+                           (eq (c-beginning-of-statement-1 lim)
+                               'label))
+                  (c-backward-syntactic-ws lim)
+                  (setq placeholder (point)))
+                (and (c-major-mode-is 'objc-mode)
+                     (catch 'not-in-directive
+                       (c-beginning-of-statement-1 lim)
+                       (setq placeholder (point))
+                       (while (and (c-forward-objc-directive)
+                                   (< (point) indent-point))
+                         (c-forward-syntactic-ws)
+                         (if (>= (point) indent-point)
+                             (throw 'not-in-directive t))
+                         (setq placeholder (point)))
+                       nil)))))
+         ;; For historic reasons we anchor at bol of the last
+         ;; line of the previous declaration.  That's clearly
+         ;; highly bogus and useless, and it makes our lives hard
+         ;; to remain compatible.  :P
+         (goto-char placeholder)
+         (c-add-syntax 'topmost-intro (c-point 'bol))
+         (if containing-decl-open
+             (if (c-keyword-member containing-decl-kwd
+                                   'c-other-block-decl-kwds)
+                 (progn
+                   (goto-char (c-brace-anchor-point containing-decl-open))
+                   (c-add-stmt-syntax
+                    (if (string-equal (symbol-name containing-decl-kwd)
+                                      "extern")
+                        ;; Special case for compatibility with the
+                        ;; extern-lang syntactic symbols.
+                        'inextern-lang
+                      (intern (concat "in"
+                                      (symbol-name containing-decl-kwd))))
+                    nil t
+                    (c-most-enclosing-brace paren-state (point))
+                    paren-state))
+               (c-add-class-syntax 'inclass
+                                   containing-decl-open
+                                   containing-decl-start
+                                   containing-decl-kwd
+                                   paren-state)))
+         (when (and c-syntactic-indentation-in-macros
+                    macro-start
+                    (/= macro-start (c-point 'boi indent-point)))
+           (c-add-syntax 'cpp-define-intro)
+           (setq macro-start nil)))
+
+        ;; CASE 5K: we are at an ObjC method definition
+        ;; continuation line.
+        ((and c-opt-method-key
+              (save-excursion
+                (c-beginning-of-statement-1 lim)
+                (beginning-of-line)
+                (when (looking-at c-opt-method-key)
+                  (setq placeholder (point)))))
+         (c-add-syntax 'objc-method-args-cont placeholder))
 
-          ;; CASE 5L: we are at the first argument of a template
+        ;; CASE 5L: we are at the first argument of a template
         ;; arglist that begins on the previous line.
         ((and c-recognize-<>-arglists
               (eq (char-before) ?<)
@@ -9539,32 +9573,32 @@ comment at the start of cc-engine.el for more info."
          (c-beginning-of-statement-1 containing-sexp)
          (c-add-stmt-syntax 'statement nil t containing-sexp paren-state))
 
-     ;;CASE 5N: We are at a tompmost continuation line and the only
-     ;;preceding items are annotations.
+        ;;CASE 5N: We are at a tompmost continuation line and the only
+        ;;preceding items are annotations.
         ((and (c-major-mode-is 'java-mode)
               (setq placeholder (point))
-           (c-beginning-of-statement-1)
-           (progn
+              (c-beginning-of-statement-1)
+              (progn
                 (while (and (c-forward-annotation))
-              (c-forward-syntactic-ws))
-            t)
-          (prog1
-             (>= (point) placeholder)
-             (goto-char placeholder)))
-      (c-add-syntax 'annotation-top-cont (c-point 'boi)))
+                  (c-forward-syntactic-ws))
+                t)
+              (prog1
+                  (>= (point) placeholder)
+                (goto-char placeholder)))
+         (c-add-syntax 'annotation-top-cont (c-point 'boi)))
 
         ;; CASE 5M: we are at a topmost continuation line
         (t
          (c-beginning-of-statement-1 (c-safe-position (point) paren-state))
-           (when (c-major-mode-is 'objc-mode)
-             (setq placeholder (point))
-             (while (and (c-forward-objc-directive)
-                         (< (point) indent-point))
-               (c-forward-syntactic-ws)
-               (setq placeholder (point)))
-             (goto-char placeholder))
-           (c-add-syntax 'topmost-intro-cont (c-point 'boi)))
-          ))
+         (when (c-major-mode-is 'objc-mode)
+           (setq placeholder (point))
+           (while (and (c-forward-objc-directive)
+                       (< (point) indent-point))
+             (c-forward-syntactic-ws)
+             (setq placeholder (point)))
+           (goto-char placeholder))
+         (c-add-syntax 'topmost-intro-cont (c-point 'boi)))
+        ))
 
 
        ;; (CASE 6 has been removed.)
@@ -9580,576 +9614,576 @@ comment at the start of cc-engine.el for more info."
        (cond
 
         ;; CASE 7A: we are looking at the arglist closing paren.
-          ;; C.f. case 7F.
-          ((memq char-after-ip '(?\) ?\]))
-           (goto-char containing-sexp)
-           (setq placeholder (c-point 'boi))
-           (if (and (c-safe (backward-up-list 1) t)
-                    (>= (point) placeholder))
-               (progn
-                 (forward-char)
-                 (skip-chars-forward " \t"))
-             (goto-char placeholder))
-           (c-add-stmt-syntax 'arglist-close (list containing-sexp) t
+        ;; C.f. case 7F.
+        ((memq char-after-ip '(?\) ?\]))
+         (goto-char containing-sexp)
+         (setq placeholder (c-point 'boi))
+         (if (and (c-safe (backward-up-list 1) t)
+                  (>= (point) placeholder))
+             (progn
+               (forward-char)
+               (skip-chars-forward " \t"))
+           (goto-char placeholder))
+         (c-add-stmt-syntax 'arglist-close (list containing-sexp) t
                             (c-most-enclosing-brace paren-state (point))
                             paren-state))
 
-        ;; CASE 19: line is an expression, not a statement, and is directly
-        ;; contained by a template delimiter.  Most likely, we are in a
-        ;; template arglist within a statement.  This case is based on CASE
-        ;; 7.  At some point in the future, we may wish to create more
-        ;; syntactic symbols such as `template-intro',
-        ;; `template-cont-nonempty', etc., and distinguish between them as we
-        ;; do for `arglist-intro' etc. (2009-12-07).
-        ((and c-recognize-<>-arglists
-            (setq containing-< (c-up-list-backward indent-point containing-sexp))
-            (eq (char-after containing-<) ?\<))
-       (setq placeholder (c-point 'boi containing-<))
-       (goto-char containing-sexp)     ; Most nested Lbrace/Lparen (but not
-                                       ; '<') before indent-point.
-       (if (>= (point) placeholder)
-           (progn
-             (forward-char)
-             (skip-chars-forward " \t"))
-         (goto-char placeholder))
-       (c-add-stmt-syntax 'template-args-cont (list containing-<) t
-                          (c-most-enclosing-brace c-state-cache (point))
-                          paren-state))
-
         ;; CASE 7B: Looking at the opening brace of an
         ;; in-expression block or brace list.  C.f. cases 4, 16A
         ;; and 17E.
-          ((and (eq char-after-ip ?{)
-                (progn
-                  (setq placeholder (c-inside-bracelist-p (point)
-                                                          paren-state))
-                  (if placeholder
-                      (setq tmpsymbol '(brace-list-open . inexpr-class))
-                    (setq tmpsymbol '(block-open . inexpr-statement)
-                          placeholder
-                          (cdr-safe (c-looking-at-inexpr-block
-                                     (c-safe-position containing-sexp
-                                                      paren-state)
-                                     containing-sexp)))
-                    ;; placeholder is nil if it's a block directly in
-                    ;; a function arglist.  That makes us skip out of
-                    ;; this case.
-                    )))
-           (goto-char placeholder)
-           (back-to-indentation)
-           (c-add-stmt-syntax (car tmpsymbol) nil t
-                              (c-most-enclosing-brace paren-state (point))
-                              paren-state)
-           (if (/= (point) placeholder)
-               (c-add-syntax (cdr tmpsymbol))))
+        ((and (eq char-after-ip ?{)
+              (progn
+                (setq placeholder (c-inside-bracelist-p (point)
+                                                        paren-state))
+                (if placeholder
+                    (setq tmpsymbol '(brace-list-open . inexpr-class))
+                  (setq tmpsymbol '(block-open . inexpr-statement)
+                        placeholder
+                        (cdr-safe (c-looking-at-inexpr-block
+                                   (c-safe-position containing-sexp
+                                                    paren-state)
+                                   containing-sexp)))
+                  ;; placeholder is nil if it's a block directly in
+                  ;; a function arglist.  That makes us skip out of
+                  ;; this case.
+                  )))
+         (goto-char placeholder)
+         (back-to-indentation)
+         (c-add-stmt-syntax (car tmpsymbol) nil t
+                            (c-most-enclosing-brace paren-state (point))
+                            paren-state)
+         (if (/= (point) placeholder)
+             (c-add-syntax (cdr tmpsymbol))))
 
-          ;; CASE 7C: we are looking at the first argument in an empty
-          ;; argument list. Use arglist-close if we're actually
-          ;; looking at a close paren or bracket.
-          ((memq char-before-ip '(?\( ?\[))
+        ;; CASE 7C: we are looking at the first argument in an empty
+        ;; argument list. Use arglist-close if we're actually
+        ;; looking at a close paren or bracket.
+        ((memq char-before-ip '(?\( ?\[))
+         (goto-char containing-sexp)
+         (setq placeholder (c-point 'boi))
+         (if (and (c-safe (backward-up-list 1) t)
+                  (>= (point) placeholder))
+             (progn
+               (forward-char)
+               (skip-chars-forward " \t"))
+           (goto-char placeholder))
+         (c-add-stmt-syntax 'arglist-intro (list containing-sexp) t
+                            (c-most-enclosing-brace paren-state (point))
+                            paren-state))
+
+        ;; CASE 7D: we are inside a conditional test clause. treat
+        ;; these things as statements
+        ((progn
            (goto-char containing-sexp)
-           (setq placeholder (c-point 'boi))
-           (if (and (c-safe (backward-up-list 1) t)
-                    (>= (point) placeholder))
-               (progn
-                 (forward-char)
-                 (skip-chars-forward " \t"))
-             (goto-char placeholder))
-           (c-add-stmt-syntax 'arglist-intro (list containing-sexp) t
-                              (c-most-enclosing-brace paren-state (point))
-                              paren-state))
+           (and (c-safe (c-forward-sexp -1) t)
+                (looking-at "\\<for\\>[^_]")))
+         (goto-char (1+ containing-sexp))
+         (c-forward-syntactic-ws indent-point)
+         (if (eq char-before-ip ?\;)
+             (c-add-syntax 'statement (point))
+           (c-add-syntax 'statement-cont (point))
+           ))
+
+        ;; CASE 7E: maybe a continued ObjC method call. This is the
+        ;; case when we are inside a [] bracketed exp, and what
+        ;; precede the opening bracket is not an identifier.
+        ((and c-opt-method-key
+              (eq (char-after containing-sexp) ?\[)
+              (progn
+                (goto-char (1- containing-sexp))
+                (c-backward-syntactic-ws (c-point 'bod))
+                (if (not (looking-at c-symbol-key))
+                    (c-add-syntax 'objc-method-call-cont containing-sexp))
+                )))
 
-          ;; CASE 7D: we are inside a conditional test clause. treat
-          ;; these things as statements
-          ((progn
-             (goto-char containing-sexp)
-             (and (c-safe (c-forward-sexp -1) t)
-                  (looking-at "\\<for\\>[^_]")))
+        ;; CASE 7F: we are looking at an arglist continuation line,
+        ;; but the preceding argument is on the same line as the
+        ;; opening paren.  This case includes multi-line
+        ;; mathematical paren groupings, but we could be on a
+        ;; for-list continuation line.  C.f. case 7A.
+        ((progn
            (goto-char (1+ containing-sexp))
-           (c-forward-syntactic-ws indent-point)
-           (if (eq char-before-ip ?\;)
-               (c-add-syntax 'statement (point))
-             (c-add-syntax 'statement-cont (point))
-             ))
-
-          ;; CASE 7E: maybe a continued ObjC method call. This is the
-          ;; case when we are inside a [] bracketed exp, and what
-          ;; precede the opening bracket is not an identifier.
-          ((and c-opt-method-key
-                (eq (char-after containing-sexp) ?\[)
-                (progn
-                  (goto-char (1- containing-sexp))
-                  (c-backward-syntactic-ws (c-point 'bod))
-                  (if (not (looking-at c-symbol-key))
-                      (c-add-syntax 'objc-method-call-cont containing-sexp))
-                  )))
+           (< (save-excursion
+                (c-forward-syntactic-ws)
+                (point))
+              (c-point 'bonl)))
+         (goto-char containing-sexp)   ; paren opening the arglist
+         (setq placeholder (c-point 'boi))
+         (if (and (c-safe (backward-up-list 1) t)
+                  (>= (point) placeholder))
+             (progn
+               (forward-char)
+               (skip-chars-forward " \t"))
+           (goto-char placeholder))
+         (c-add-stmt-syntax 'arglist-cont-nonempty (list containing-sexp) t
+                            (c-most-enclosing-brace c-state-cache (point))
+                            paren-state))
 
-          ;; CASE 7F: we are looking at an arglist continuation line,
-          ;; but the preceding argument is on the same line as the
-          ;; opening paren.  This case includes multi-line
-          ;; mathematical paren groupings, but we could be on a
-          ;; for-list continuation line.  C.f. case 7A.
-          ((progn
-             (goto-char (1+ containing-sexp))
-             (< (save-excursion
-                  (c-forward-syntactic-ws)
-                  (point))
-                (c-point 'bonl)))
-           (goto-char containing-sexp) ; paren opening the arglist
-           (setq placeholder (c-point 'boi))
-           (if (and (c-safe (backward-up-list 1) t)
-                    (>= (point) placeholder))
-               (progn
-                 (forward-char)
-                 (skip-chars-forward " \t"))
-             (goto-char placeholder))
-           (c-add-stmt-syntax 'arglist-cont-nonempty (list containing-sexp) t
-                              (c-most-enclosing-brace c-state-cache (point))
-                              paren-state))
+        ;; CASE 7G: we are looking at just a normal arglist
+        ;; continuation line
+        (t (c-forward-syntactic-ws indent-point)
+           (c-add-syntax 'arglist-cont (c-point 'boi)))
+        ))
 
-          ;; CASE 7G: we are looking at just a normal arglist
-          ;; continuation line
-          (t (c-forward-syntactic-ws indent-point)
-             (c-add-syntax 'arglist-cont (c-point 'boi)))
-          ))
+       ;; CASE 8: func-local multi-inheritance line
+       ((and (c-major-mode-is 'c++-mode)
+            (save-excursion
+              (goto-char indent-point)
+              (skip-chars-forward " \t")
+              (looking-at c-opt-postfix-decl-spec-key)))
+       (goto-char indent-point)
+       (skip-chars-forward " \t")
+       (cond
 
-        ;; CASE 8: func-local multi-inheritance line
-        ((and (c-major-mode-is 'c++-mode)
-              (save-excursion
-                (goto-char indent-point)
-                (skip-chars-forward " \t")
-                (looking-at c-opt-postfix-decl-spec-key)))
-         (goto-char indent-point)
-         (skip-chars-forward " \t")
-         (cond
+        ;; CASE 8A: non-hanging colon on an inher intro
+        ((eq char-after-ip ?:)
+         (c-backward-syntactic-ws lim)
+         (c-add-syntax 'inher-intro (c-point 'boi)))
 
-          ;; CASE 8A: non-hanging colon on an inher intro
-          ((eq char-after-ip ?:)
-           (c-backward-syntactic-ws lim)
-           (c-add-syntax 'inher-intro (c-point 'boi)))
+        ;; CASE 8B: hanging colon on an inher intro
+        ((eq char-before-ip ?:)
+         (c-add-syntax 'inher-intro (c-point 'boi)))
 
-          ;; CASE 8B: hanging colon on an inher intro
-          ((eq char-before-ip ?:)
-           (c-add-syntax 'inher-intro (c-point 'boi)))
+        ;; CASE 8C: a continued inheritance line
+        (t
+         (c-beginning-of-inheritance-list lim)
+         (c-add-syntax 'inher-cont (point))
+         )))
+
+       ;; CASE 9: we are inside a brace-list
+       ((and (not (c-major-mode-is 'awk-mode)) ; Maybe this isn't needed (ACM, 2002/3/29)
+            (setq special-brace-list
+                  (or (and c-special-brace-lists ;;;; ALWAYS NIL FOR AWK!!
+                           (save-excursion
+                             (goto-char containing-sexp)
+                             (c-looking-at-special-brace-list)))
+                      (c-inside-bracelist-p containing-sexp paren-state))))
+       (cond
 
-          ;; CASE 8C: a continued inheritance line
-          (t
-           (c-beginning-of-inheritance-list lim)
-           (c-add-syntax 'inher-cont (point))
-           )))
+        ;; CASE 9A: In the middle of a special brace list opener.
+        ((and (consp special-brace-list)
+              (save-excursion
+                (goto-char containing-sexp)
+                (eq (char-after) ?\())
+              (eq char-after-ip (car (cdr special-brace-list))))
+         (goto-char (car (car special-brace-list)))
+         (skip-chars-backward " \t")
+         (if (and (bolp)
+                  (assoc 'statement-cont
+                         (setq placeholder (c-guess-basic-syntax))))
+             (setq c-syntactic-context placeholder)
+           (c-beginning-of-statement-1
+            (c-safe-position (1- containing-sexp) paren-state))
+           (c-forward-token-2 0)
+           (while (looking-at c-specifier-key)
+             (goto-char (match-end 1))
+             (c-forward-syntactic-ws))
+           (c-add-syntax 'brace-list-open (c-point 'boi))))
+
+        ;; CASE 9B: brace-list-close brace
+        ((if (consp special-brace-list)
+             ;; Check special brace list closer.
+             (progn
+               (goto-char (car (car special-brace-list)))
+               (save-excursion
+                 (goto-char indent-point)
+                 (back-to-indentation)
+                 (or
+                  ;; We were between the special close char and the `)'.
+                  (and (eq (char-after) ?\))
+                       (eq (1+ (point)) (cdr (car special-brace-list))))
+                  ;; We were before the special close char.
+                  (and (eq (char-after) (cdr (cdr special-brace-list)))
+                       (zerop (c-forward-token-2))
+                       (eq (1+ (point)) (cdr (car special-brace-list)))))))
+           ;; Normal brace list check.
+           (and (eq char-after-ip ?})
+                (c-safe (goto-char (c-up-list-backward (point))) t)
+                (= (point) containing-sexp)))
+         (if (eq (point) (c-point 'boi))
+             (c-add-syntax 'brace-list-close (point))
+           (setq lim (c-most-enclosing-brace c-state-cache (point)))
+           (c-beginning-of-statement-1 lim)
+           (c-add-stmt-syntax 'brace-list-close nil t lim paren-state)))
 
-        ;; CASE 9: we are inside a brace-list
-        ((and (not (c-major-mode-is 'awk-mode))  ; Maybe this isn't needed (ACM, 2002/3/29)
-               (setq special-brace-list
-                     (or (and c-special-brace-lists ;;;; ALWAYS NIL FOR AWK!!
-                              (save-excursion
-                                (goto-char containing-sexp)
-                                (c-looking-at-special-brace-list)))
-                         (c-inside-bracelist-p containing-sexp paren-state))))
+        (t
+         ;; Prepare for the rest of the cases below by going to the
+         ;; token following the opening brace
+         (if (consp special-brace-list)
+             (progn
+               (goto-char (car (car special-brace-list)))
+               (c-forward-token-2 1 nil indent-point))
+           (goto-char containing-sexp))
+         (forward-char)
+         (let ((start (point)))
+           (c-forward-syntactic-ws indent-point)
+           (goto-char (max start (c-point 'bol))))
+         (c-skip-ws-forward indent-point)
          (cond
 
-          ;; CASE 9A: In the middle of a special brace list opener.
-          ((and (consp special-brace-list)
-                (save-excursion
-                  (goto-char containing-sexp)
-                  (eq (char-after) ?\())
-                (eq char-after-ip (car (cdr special-brace-list))))
-           (goto-char (car (car special-brace-list)))
-           (skip-chars-backward " \t")
-           (if (and (bolp)
-                    (assoc 'statement-cont
-                           (setq placeholder (c-guess-basic-syntax))))
-               (setq c-syntactic-context placeholder)
-             (c-beginning-of-statement-1
-              (c-safe-position (1- containing-sexp) paren-state))
-             (c-forward-token-2 0)
-             (while (looking-at c-specifier-key)
-               (goto-char (match-end 1))
-               (c-forward-syntactic-ws))
-             (c-add-syntax 'brace-list-open (c-point 'boi))))
-
-          ;; CASE 9B: brace-list-close brace
-          ((if (consp special-brace-list)
-               ;; Check special brace list closer.
-               (progn
-                 (goto-char (car (car special-brace-list)))
-                 (save-excursion
-                   (goto-char indent-point)
-                   (back-to-indentation)
-                   (or
-                    ;; We were between the special close char and the `)'.
-                    (and (eq (char-after) ?\))
-                         (eq (1+ (point)) (cdr (car special-brace-list))))
-                    ;; We were before the special close char.
-                    (and (eq (char-after) (cdr (cdr special-brace-list)))
-                         (zerop (c-forward-token-2))
-                         (eq (1+ (point)) (cdr (car special-brace-list)))))))
-             ;; Normal brace list check.
-             (and (eq char-after-ip ?})
-                  (c-safe (goto-char (c-up-list-backward (point))) t)
-                  (= (point) containing-sexp)))
+          ;; CASE 9C: we're looking at the first line in a brace-list
+          ((= (point) indent-point)
+           (if (consp special-brace-list)
+               (goto-char (car (car special-brace-list)))
+             (goto-char containing-sexp))
            (if (eq (point) (c-point 'boi))
-               (c-add-syntax 'brace-list-close (point))
+               (c-add-syntax 'brace-list-intro (point))
              (setq lim (c-most-enclosing-brace c-state-cache (point)))
              (c-beginning-of-statement-1 lim)
-             (c-add-stmt-syntax 'brace-list-close nil t lim paren-state)))
+             (c-add-stmt-syntax 'brace-list-intro nil t lim paren-state)))
 
-          (t
-           ;; Prepare for the rest of the cases below by going to the
-           ;; token following the opening brace
-           (if (consp special-brace-list)
-               (progn
-                 (goto-char (car (car special-brace-list)))
-                 (c-forward-token-2 1 nil indent-point))
-             (goto-char containing-sexp))
-           (forward-char)
-           (let ((start (point)))
-             (c-forward-syntactic-ws indent-point)
-             (goto-char (max start (c-point 'bol))))
-           (c-skip-ws-forward indent-point)
-           (cond
+          ;; CASE 9D: this is just a later brace-list-entry or
+          ;; brace-entry-open
+          (t (if (or (eq char-after-ip ?{)
+                     (and c-special-brace-lists
+                          (save-excursion
+                            (goto-char indent-point)
+                            (c-forward-syntactic-ws (c-point 'eol))
+                            (c-looking-at-special-brace-list (point)))))
+                 (c-add-syntax 'brace-entry-open (point))
+               (c-add-syntax 'brace-list-entry (point))
+               ))
+          ))))
+
+       ;; CASE 10: A continued statement or top level construct.
+       ((and (not (memq char-before-ip '(?\; ?:)))
+            (not (c-at-vsemi-p before-ws-ip))
+            (or (not (eq char-before-ip ?}))
+                (c-looking-at-inexpr-block-backward c-state-cache))
+            (> (point)
+               (save-excursion
+                 (c-beginning-of-statement-1 containing-sexp)
+                 (setq placeholder (point))))
+            (/= placeholder containing-sexp))
+       ;; This is shared with case 18.
+       (c-guess-continued-construct indent-point
+                                    char-after-ip
+                                    placeholder
+                                    containing-sexp
+                                    paren-state))
+
+       ;; CASE 16: block close brace, possibly closing the defun or
+       ;; the class
+       ((eq char-after-ip ?})
+       ;; From here on we have the next containing sexp in lim.
+       (setq lim (c-most-enclosing-brace paren-state))
+       (goto-char containing-sexp)
+       (cond
 
-            ;; CASE 9C: we're looking at the first line in a brace-list
-            ((= (point) indent-point)
-             (if (consp special-brace-list)
-                 (goto-char (car (car special-brace-list)))
-               (goto-char containing-sexp))
-             (if (eq (point) (c-point 'boi))
-                 (c-add-syntax 'brace-list-intro (point))
-               (setq lim (c-most-enclosing-brace c-state-cache (point)))
-               (c-beginning-of-statement-1 lim)
-               (c-add-stmt-syntax 'brace-list-intro nil t lim paren-state)))
-
-            ;; CASE 9D: this is just a later brace-list-entry or
-            ;; brace-entry-open
-            (t (if (or (eq char-after-ip ?{)
-                       (and c-special-brace-lists
-                            (save-excursion
-                              (goto-char indent-point)
-                              (c-forward-syntactic-ws (c-point 'eol))
-                              (c-looking-at-special-brace-list (point)))))
-                   (c-add-syntax 'brace-entry-open (point))
-                 (c-add-syntax 'brace-list-entry (point))
-                 ))
-            ))))
-
-        ;; CASE 10: A continued statement or top level construct.
-        ((and (not (memq char-before-ip '(?\; ?:)))
-              (not (c-at-vsemi-p before-ws-ip))
-              (or (not (eq char-before-ip ?}))
-                  (c-looking-at-inexpr-block-backward c-state-cache))
-              (> (point)
-                 (save-excursion
-                   (c-beginning-of-statement-1 containing-sexp)
-                   (setq placeholder (point))))
-              (/= placeholder containing-sexp))
-         ;; This is shared with case 18.
-         (c-guess-continued-construct indent-point
-                                      char-after-ip
-                                      placeholder
-                                      containing-sexp
-                                      paren-state))
-
-        ;; CASE 16: block close brace, possibly closing the defun or
-        ;; the class
-        ((eq char-after-ip ?})
-         ;; From here on we have the next containing sexp in lim.
-         (setq lim (c-most-enclosing-brace paren-state))
+        ;; CASE 16E: Closing a statement block?  This catches
+        ;; cases where it's preceded by a statement keyword,
+        ;; which works even when used in an "invalid" context,
+        ;; e.g. a macro argument.
+        ((c-after-conditional)
+         (c-backward-to-block-anchor lim)
+         (c-add-stmt-syntax 'block-close nil t lim paren-state))
+
+        ;; CASE 16A: closing a lambda defun or an in-expression
+        ;; block?  C.f. cases 4, 7B and 17E.
+        ((setq placeholder (c-looking-at-inexpr-block
+                            (c-safe-position containing-sexp paren-state)
+                            nil))
+         (setq tmpsymbol (if (eq (car placeholder) 'inlambda)
+                             'inline-close
+                           'block-close))
          (goto-char containing-sexp)
-           (cond
+         (back-to-indentation)
+         (if (= containing-sexp (point))
+             (c-add-syntax tmpsymbol (point))
+           (goto-char (cdr placeholder))
+           (back-to-indentation)
+           (c-add-stmt-syntax tmpsymbol nil t
+                              (c-most-enclosing-brace paren-state (point))
+                              paren-state)
+           (if (/= (point) (cdr placeholder))
+               (c-add-syntax (car placeholder)))))
 
-            ;; CASE 16E: Closing a statement block?  This catches
-            ;; cases where it's preceded by a statement keyword,
-            ;; which works even when used in an "invalid" context,
-            ;; e.g. a macro argument.
-            ((c-after-conditional)
-             (c-backward-to-block-anchor lim)
-             (c-add-stmt-syntax 'block-close nil t lim paren-state))
-
-            ;; CASE 16A: closing a lambda defun or an in-expression
-            ;; block?  C.f. cases 4, 7B and 17E.
-            ((setq placeholder (c-looking-at-inexpr-block
-                                (c-safe-position containing-sexp paren-state)
-                                nil))
-             (setq tmpsymbol (if (eq (car placeholder) 'inlambda)
-                                 'inline-close
-                               'block-close))
-             (goto-char containing-sexp)
-             (back-to-indentation)
-             (if (= containing-sexp (point))
-                 (c-add-syntax tmpsymbol (point))
-               (goto-char (cdr placeholder))
-               (back-to-indentation)
-               (c-add-stmt-syntax tmpsymbol nil t
-                                  (c-most-enclosing-brace paren-state (point))
-                                  paren-state)
-               (if (/= (point) (cdr placeholder))
-                   (c-add-syntax (car placeholder)))))
-
-            ;; CASE 16B: does this close an inline or a function in
-            ;; a non-class declaration level block?
-            ((save-excursion
-               (and lim
-                    (progn
-                      (goto-char lim)
-                      (c-looking-at-decl-block
-                       (c-most-enclosing-brace paren-state lim)
-                       nil))
-                    (setq placeholder (point))))
-             (c-backward-to-decl-anchor lim)
-             (back-to-indentation)
-             (if (save-excursion
-                   (goto-char placeholder)
-                   (looking-at c-other-decl-block-key))
-                 (c-add-syntax 'defun-close (point))
-               (c-add-syntax 'inline-close (point))))
-
-            ;; CASE 16F: Can be a defun-close of a function declared
-            ;; in a statement block, e.g. in Pike or when using gcc
-            ;; extensions, but watch out for macros followed by
-            ;; blocks.  Let it through to be handled below.
-            ;; C.f. cases B.3 and 17G.
-            ((save-excursion
-               (and (not (c-at-statement-start-p))
-                    (eq (c-beginning-of-statement-1 lim nil nil t) 'same)
-                    (setq placeholder (point))
-                    (let ((c-recognize-typeless-decls nil))
-                      ;; Turn off recognition of constructs that
-                      ;; lacks a type in this case, since that's more
-                      ;; likely to be a macro followed by a block.
-                      (c-forward-decl-or-cast-1 (c-point 'bosws) nil nil))))
-             (back-to-indentation)
-             (if (/= (point) containing-sexp)
-                 (goto-char placeholder))
-             (c-add-stmt-syntax 'defun-close nil t lim paren-state))
-
-            ;; CASE 16C: If there is an enclosing brace then this is
-            ;; a block close since defun closes inside declaration
-            ;; level blocks have been handled above.
-            (lim
-             ;; If the block is preceded by a case/switch label on
-             ;; the same line, we anchor at the first preceding label
-             ;; at boi.  The default handling in c-add-stmt-syntax
-             ;; really fixes it better, but we do like this to keep
-             ;; the indentation compatible with version 5.28 and
-             ;; earlier.  C.f. case 17H.
-             (while (and (/= (setq placeholder (point)) (c-point 'boi))
-                         (eq (c-beginning-of-statement-1 lim) 'label)))
-             (goto-char placeholder)
-             (if (looking-at c-label-kwds-regexp)
-                 (c-add-syntax 'block-close (point))
-               (goto-char containing-sexp)
-               ;; c-backward-to-block-anchor not necessary here; those
-               ;; situations are handled in case 16E above.
-               (c-add-stmt-syntax 'block-close nil t lim paren-state)))
-
-            ;; CASE 16D: Only top level defun close left.
-            (t
-             (goto-char containing-sexp)
-             (c-backward-to-decl-anchor lim)
-             (c-add-stmt-syntax 'defun-close nil nil
-                                (c-most-enclosing-brace paren-state)
-                                paren-state))
-            ))
+        ;; CASE 16B: does this close an inline or a function in
+        ;; a non-class declaration level block?
+        ((save-excursion
+           (and lim
+                (progn
+                  (goto-char lim)
+                  (c-looking-at-decl-block
+                   (c-most-enclosing-brace paren-state lim)
+                   nil))
+                (setq placeholder (point))))
+         (c-backward-to-decl-anchor lim)
+         (back-to-indentation)
+         (if (save-excursion
+               (goto-char placeholder)
+               (looking-at c-other-decl-block-key))
+             (c-add-syntax 'defun-close (point))
+           (c-add-syntax 'inline-close (point))))
+
+        ;; CASE 16F: Can be a defun-close of a function declared
+        ;; in a statement block, e.g. in Pike or when using gcc
+        ;; extensions, but watch out for macros followed by
+        ;; blocks.  Let it through to be handled below.
+        ;; C.f. cases B.3 and 17G.
+        ((save-excursion
+           (and (not (c-at-statement-start-p))
+                (eq (c-beginning-of-statement-1 lim nil nil t) 'same)
+                (setq placeholder (point))
+                (let ((c-recognize-typeless-decls nil))
+                  ;; Turn off recognition of constructs that
+                  ;; lacks a type in this case, since that's more
+                  ;; likely to be a macro followed by a block.
+                  (c-forward-decl-or-cast-1 (c-point 'bosws) nil nil))))
+         (back-to-indentation)
+         (if (/= (point) containing-sexp)
+             (goto-char placeholder))
+         (c-add-stmt-syntax 'defun-close nil t lim paren-state))
+
+        ;; CASE 16C: If there is an enclosing brace then this is
+        ;; a block close since defun closes inside declaration
+        ;; level blocks have been handled above.
+        (lim
+         ;; If the block is preceded by a case/switch label on
+         ;; the same line, we anchor at the first preceding label
+         ;; at boi.  The default handling in c-add-stmt-syntax
+         ;; really fixes it better, but we do like this to keep
+         ;; the indentation compatible with version 5.28 and
+         ;; earlier.  C.f. case 17H.
+         (while (and (/= (setq placeholder (point)) (c-point 'boi))
+                     (eq (c-beginning-of-statement-1 lim) 'label)))
+         (goto-char placeholder)
+         (if (looking-at c-label-kwds-regexp)
+             (c-add-syntax 'block-close (point))
+           (goto-char containing-sexp)
+           ;; c-backward-to-block-anchor not necessary here; those
+           ;; situations are handled in case 16E above.
+           (c-add-stmt-syntax 'block-close nil t lim paren-state)))
 
-        ;; CASE 17: Statement or defun catchall.
+        ;; CASE 16D: Only top level defun close left.
         (t
-         (goto-char indent-point)
-         ;; Back up statements until we find one that starts at boi.
-         (while (let* ((prev-point (point))
-                       (last-step-type (c-beginning-of-statement-1
-                                        containing-sexp)))
-                  (if (= (point) prev-point)
-                      (progn
-                        (setq step-type (or step-type last-step-type))
-                        nil)
-                    (setq step-type last-step-type)
-                    (/= (point) (c-point 'boi)))))
-         (cond
+         (goto-char containing-sexp)
+         (c-backward-to-decl-anchor lim)
+         (c-add-stmt-syntax 'defun-close nil nil
+                            (c-most-enclosing-brace paren-state)
+                            paren-state))
+        ))
+
+       ;; CASE 19: line is an expression, not a statement, and is directly
+       ;; contained by a template delimiter.   Most likely, we are in a
+       ;; template arglist within a statement.  This case is based on CASE
+       ;; 7.   At some point in the future, we may wish to create more
+       ;; syntactic symbols such as `template-intro',
+       ;; `template-cont-nonempty', etc., and distinguish between them as we
+       ;; do for `arglist-intro' etc. (2009-12-07).
+       ((and c-recognize-<>-arglists
+            (setq containing-< (c-up-list-backward indent-point containing-sexp))
+            (eq (char-after containing-<) ?\<))
+       (setq placeholder (c-point 'boi containing-<))
+       (goto-char containing-sexp)     ; Most nested Lbrace/Lparen (but not
+                                       ; '<') before indent-point.
+       (if (>= (point) placeholder)
+           (progn
+             (forward-char)
+             (skip-chars-forward " \t"))
+         (goto-char placeholder))
+       (c-add-stmt-syntax 'template-args-cont (list containing-<) t
+                          (c-most-enclosing-brace c-state-cache (point))
+                          paren-state))
 
-          ;; CASE 17B: continued statement
-          ((and (eq step-type 'same)
-                (/= (point) indent-point))
-           (c-add-stmt-syntax 'statement-cont nil nil
-                              containing-sexp paren-state))
-
-          ;; CASE 17A: After a case/default label?
-          ((progn
-             (while (and (eq step-type 'label)
-                         (not (looking-at c-label-kwds-regexp)))
-               (setq step-type
-                     (c-beginning-of-statement-1 containing-sexp)))
-             (eq step-type 'label))
-           (c-add-stmt-syntax (if (eq char-after-ip ?{)
-                                  'statement-case-open
-                                'statement-case-intro)
-                              nil t containing-sexp paren-state))
-
-          ;; CASE 17D: any old statement
-          ((progn
-             (while (eq step-type 'label)
-               (setq step-type
-                     (c-beginning-of-statement-1 containing-sexp)))
-             (eq step-type 'previous))
-           (c-add-stmt-syntax 'statement nil t
-                              containing-sexp paren-state)
-           (if (eq char-after-ip ?{)
-               (c-add-syntax 'block-open)))
-
-          ;; CASE 17I: Inside a substatement block.
-          ((progn
-             ;; The following tests are all based on containing-sexp.
-             (goto-char containing-sexp)
-             ;; From here on we have the next containing sexp in lim.
-             (setq lim (c-most-enclosing-brace paren-state containing-sexp))
-             (c-after-conditional))
-           (c-backward-to-block-anchor lim)
-           (c-add-stmt-syntax 'statement-block-intro nil t
-                              lim paren-state)
-           (if (eq char-after-ip ?{)
-               (c-add-syntax 'block-open)))
-
-          ;; CASE 17E: first statement in an in-expression block.
-          ;; C.f. cases 4, 7B and 16A.
-          ((setq placeholder (c-looking-at-inexpr-block
-                              (c-safe-position containing-sexp paren-state)
-                              nil))
-           (setq tmpsymbol (if (eq (car placeholder) 'inlambda)
-                               'defun-block-intro
-                             'statement-block-intro))
-           (back-to-indentation)
-           (if (= containing-sexp (point))
-               (c-add-syntax tmpsymbol (point))
-             (goto-char (cdr placeholder))
-             (back-to-indentation)
-             (c-add-stmt-syntax tmpsymbol nil t
-                                (c-most-enclosing-brace c-state-cache (point))
-                                paren-state)
-             (if (/= (point) (cdr placeholder))
-                 (c-add-syntax (car placeholder))))
-           (if (eq char-after-ip ?{)
-               (c-add-syntax 'block-open)))
-
-          ;; CASE 17F: first statement in an inline, or first
-          ;; statement in a top-level defun. we can tell this is it
-          ;; if there are no enclosing braces that haven't been
-          ;; narrowed out by a class (i.e. don't use bod here).
-          ((save-excursion
-             (or (not (setq placeholder (c-most-enclosing-brace
-                                         paren-state)))
-                 (and (progn
-                        (goto-char placeholder)
-                        (eq (char-after) ?{))
-                      (c-looking-at-decl-block (c-most-enclosing-brace
-                                                paren-state (point))
-                                               nil))))
-           (c-backward-to-decl-anchor lim)
-           (back-to-indentation)
-           (c-add-syntax 'defun-block-intro (point)))
+       ;; CASE 17: Statement or defun catchall.
+       (t
+       (goto-char indent-point)
+       ;; Back up statements until we find one that starts at boi.
+       (while (let* ((prev-point (point))
+                     (last-step-type (c-beginning-of-statement-1
+                                      containing-sexp)))
+                (if (= (point) prev-point)
+                    (progn
+                      (setq step-type (or step-type last-step-type))
+                      nil)
+                  (setq step-type last-step-type)
+                  (/= (point) (c-point 'boi)))))
+       (cond
 
-          ;; CASE 17G: First statement in a function declared inside
-          ;; a normal block.  This can occur in Pike and with
-          ;; e.g. the gcc extensions, but watch out for macros
-          ;; followed by blocks.  C.f. cases B.3 and 16F.
-          ((save-excursion
-             (and (not (c-at-statement-start-p))
-                  (eq (c-beginning-of-statement-1 lim nil nil t) 'same)
-                  (setq placeholder (point))
-                  (let ((c-recognize-typeless-decls nil))
-                    ;; Turn off recognition of constructs that lacks
-                    ;; a type in this case, since that's more likely
-                    ;; to be a macro followed by a block.
-                    (c-forward-decl-or-cast-1 (c-point 'bosws) nil nil))))
+        ;; CASE 17B: continued statement
+        ((and (eq step-type 'same)
+              (/= (point) indent-point))
+         (c-add-stmt-syntax 'statement-cont nil nil
+                            containing-sexp paren-state))
+
+        ;; CASE 17A: After a case/default label?
+        ((progn
+           (while (and (eq step-type 'label)
+                       (not (looking-at c-label-kwds-regexp)))
+             (setq step-type
+                   (c-beginning-of-statement-1 containing-sexp)))
+           (eq step-type 'label))
+         (c-add-stmt-syntax (if (eq char-after-ip ?{)
+                                'statement-case-open
+                              'statement-case-intro)
+                            nil t containing-sexp paren-state))
+
+        ;; CASE 17D: any old statement
+        ((progn
+           (while (eq step-type 'label)
+             (setq step-type
+                   (c-beginning-of-statement-1 containing-sexp)))
+           (eq step-type 'previous))
+         (c-add-stmt-syntax 'statement nil t
+                            containing-sexp paren-state)
+         (if (eq char-after-ip ?{)
+             (c-add-syntax 'block-open)))
+
+        ;; CASE 17I: Inside a substatement block.
+        ((progn
+           ;; The following tests are all based on containing-sexp.
+           (goto-char containing-sexp)
+           ;; From here on we have the next containing sexp in lim.
+           (setq lim (c-most-enclosing-brace paren-state containing-sexp))
+           (c-after-conditional))
+         (c-backward-to-block-anchor lim)
+         (c-add-stmt-syntax 'statement-block-intro nil t
+                            lim paren-state)
+         (if (eq char-after-ip ?{)
+             (c-add-syntax 'block-open)))
+
+        ;; CASE 17E: first statement in an in-expression block.
+        ;; C.f. cases 4, 7B and 16A.
+        ((setq placeholder (c-looking-at-inexpr-block
+                            (c-safe-position containing-sexp paren-state)
+                            nil))
+         (setq tmpsymbol (if (eq (car placeholder) 'inlambda)
+                             'defun-block-intro
+                           'statement-block-intro))
+         (back-to-indentation)
+         (if (= containing-sexp (point))
+             (c-add-syntax tmpsymbol (point))
+           (goto-char (cdr placeholder))
            (back-to-indentation)
-           (if (/= (point) containing-sexp)
-               (goto-char placeholder))
-           (c-add-stmt-syntax 'defun-block-intro nil t
-                              lim paren-state))
+           (c-add-stmt-syntax tmpsymbol nil t
+                              (c-most-enclosing-brace c-state-cache (point))
+                              paren-state)
+           (if (/= (point) (cdr placeholder))
+               (c-add-syntax (car placeholder))))
+         (if (eq char-after-ip ?{)
+             (c-add-syntax 'block-open)))
+
+        ;; CASE 17F: first statement in an inline, or first
+        ;; statement in a top-level defun. we can tell this is it
+        ;; if there are no enclosing braces that haven't been
+        ;; narrowed out by a class (i.e. don't use bod here).
+        ((save-excursion
+           (or (not (setq placeholder (c-most-enclosing-brace
+                                       paren-state)))
+               (and (progn
+                      (goto-char placeholder)
+                      (eq (char-after) ?{))
+                    (c-looking-at-decl-block (c-most-enclosing-brace
+                                              paren-state (point))
+                                             nil))))
+         (c-backward-to-decl-anchor lim)
+         (back-to-indentation)
+         (c-add-syntax 'defun-block-intro (point)))
 
-          ;; CASE 17H: First statement in a block.
-          (t
-           ;; If the block is preceded by a case/switch label on the
-           ;; same line, we anchor at the first preceding label at
-           ;; boi.  The default handling in c-add-stmt-syntax is
-           ;; really fixes it better, but we do like this to keep the
-           ;; indentation compatible with version 5.28 and earlier.
-           ;; C.f. case 16C.
-           (while (and (/= (setq placeholder (point)) (c-point 'boi))
-                       (eq (c-beginning-of-statement-1 lim) 'label)))
-           (goto-char placeholder)
-           (if (looking-at c-label-kwds-regexp)
-               (c-add-syntax 'statement-block-intro (point))
-             (goto-char containing-sexp)
-             ;; c-backward-to-block-anchor not necessary here; those
-             ;; situations are handled in case 17I above.
-             (c-add-stmt-syntax 'statement-block-intro nil t
-                                lim paren-state))
-           (if (eq char-after-ip ?{)
-               (c-add-syntax 'block-open)))
-          ))
-        )
+        ;; CASE 17G: First statement in a function declared inside
+        ;; a normal block.  This can occur in Pike and with
+        ;; e.g. the gcc extensions, but watch out for macros
+        ;; followed by blocks.  C.f. cases B.3 and 16F.
+        ((save-excursion
+           (and (not (c-at-statement-start-p))
+                (eq (c-beginning-of-statement-1 lim nil nil t) 'same)
+                (setq placeholder (point))
+                (let ((c-recognize-typeless-decls nil))
+                  ;; Turn off recognition of constructs that lacks
+                  ;; a type in this case, since that's more likely
+                  ;; to be a macro followed by a block.
+                  (c-forward-decl-or-cast-1 (c-point 'bosws) nil nil))))
+         (back-to-indentation)
+         (if (/= (point) containing-sexp)
+             (goto-char placeholder))
+         (c-add-stmt-syntax 'defun-block-intro nil t
+                            lim paren-state))
 
-       ;; now we need to look at any modifiers
-       (goto-char indent-point)
-       (skip-chars-forward " \t")
+        ;; CASE 17H: First statement in a block.
+        (t
+         ;; If the block is preceded by a case/switch label on the
+         ;; same line, we anchor at the first preceding label at
+         ;; boi.  The default handling in c-add-stmt-syntax is
+         ;; really fixes it better, but we do like this to keep the
+         ;; indentation compatible with version 5.28 and earlier.
+         ;; C.f. case 16C.
+         (while (and (/= (setq placeholder (point)) (c-point 'boi))
+                     (eq (c-beginning-of-statement-1 lim) 'label)))
+         (goto-char placeholder)
+         (if (looking-at c-label-kwds-regexp)
+             (c-add-syntax 'statement-block-intro (point))
+           (goto-char containing-sexp)
+           ;; c-backward-to-block-anchor not necessary here; those
+           ;; situations are handled in case 17I above.
+           (c-add-stmt-syntax 'statement-block-intro nil t
+                              lim paren-state))
+         (if (eq char-after-ip ?{)
+             (c-add-syntax 'block-open)))
+        ))
+       )
+
+      ;; now we need to look at any modifiers
+      (goto-char indent-point)
+      (skip-chars-forward " \t")
+
+      ;; are we looking at a comment only line?
+      (when (and (looking-at c-comment-start-regexp)
+                (/= (c-forward-token-2 0 nil (c-point 'eol)) 0))
+       (c-append-syntax 'comment-intro))
+
+      ;; we might want to give additional offset to friends (in C++).
+      (when (and c-opt-friend-key
+                (looking-at c-opt-friend-key))
+       (c-append-syntax 'friend))
+
+      ;; Set syntactic-relpos.
+      (let ((p c-syntactic-context))
+       (while (and p
+                   (if (integerp (c-langelem-pos (car p)))
+                       (progn
+                         (setq syntactic-relpos (c-langelem-pos (car p)))
+                         nil)
+                     t))
+         (setq p (cdr p))))
 
-       ;; are we looking at a comment only line?
-       (when (and (looking-at c-comment-start-regexp)
-                  (/= (c-forward-token-2 0 nil (c-point 'eol)) 0))
-         (c-append-syntax 'comment-intro))
-
-       ;; we might want to give additional offset to friends (in C++).
-       (when (and c-opt-friend-key
-                  (looking-at c-opt-friend-key))
-         (c-append-syntax 'friend))
-
-       ;; Set syntactic-relpos.
-       (let ((p c-syntactic-context))
-         (while (and p
-                     (if (integerp (c-langelem-pos (car p)))
-                         (progn
-                           (setq syntactic-relpos (c-langelem-pos (car p)))
-                           nil)
-                       t))
-           (setq p (cdr p))))
-
-       ;; Start of or a continuation of a preprocessor directive?
-       (if (and macro-start
-                (eq macro-start (c-point 'boi))
-                (not (and (c-major-mode-is 'pike-mode)
-                          (eq (char-after (1+ macro-start)) ?\"))))
-           (c-append-syntax 'cpp-macro)
-         (when (and c-syntactic-indentation-in-macros macro-start)
-           (if in-macro-expr
-               (when (or
-                      (< syntactic-relpos macro-start)
-                      (not (or
-                            (assq 'arglist-intro c-syntactic-context)
-                            (assq 'arglist-cont c-syntactic-context)
-                            (assq 'arglist-cont-nonempty c-syntactic-context)
-                            (assq 'arglist-close c-syntactic-context))))
-                 ;; If inside a cpp expression, i.e. anywhere in a
-                 ;; cpp directive except a #define body, we only let
-                 ;; through the syntactic analysis that is internal
-                 ;; in the expression.  That means the arglist
-                 ;; elements, if they are anchored inside the cpp
-                 ;; expression.
-                 (setq c-syntactic-context nil)
-                 (c-add-syntax 'cpp-macro-cont macro-start))
-             (when (and (eq macro-start syntactic-relpos)
-                        (not (assq 'cpp-define-intro c-syntactic-context))
-                        (save-excursion
-                          (goto-char macro-start)
-                          (or (not (c-forward-to-cpp-define-body))
-                              (<= (point) (c-point 'boi indent-point)))))
-               ;; Inside a #define body and the syntactic analysis is
-               ;; anchored on the start of the #define.  In this case
-               ;; we add cpp-define-intro to get the extra
-               ;; indentation of the #define body.
-               (c-add-syntax 'cpp-define-intro)))))
-
-       ;; return the syntax
-       c-syntactic-context)))
+      ;; Start of or a continuation of a preprocessor directive?
+      (if (and macro-start
+              (eq macro-start (c-point 'boi))
+              (not (and (c-major-mode-is 'pike-mode)
+                        (eq (char-after (1+ macro-start)) ?\"))))
+         (c-append-syntax 'cpp-macro)
+       (when (and c-syntactic-indentation-in-macros macro-start)
+         (if in-macro-expr
+             (when (or
+                    (< syntactic-relpos macro-start)
+                    (not (or
+                          (assq 'arglist-intro c-syntactic-context)
+                          (assq 'arglist-cont c-syntactic-context)
+                          (assq 'arglist-cont-nonempty c-syntactic-context)
+                          (assq 'arglist-close c-syntactic-context))))
+               ;; If inside a cpp expression, i.e. anywhere in a
+               ;; cpp directive except a #define body, we only let
+               ;; through the syntactic analysis that is internal
+               ;; in the expression.  That means the arglist
+               ;; elements, if they are anchored inside the cpp
+               ;; expression.
+               (setq c-syntactic-context nil)
+               (c-add-syntax 'cpp-macro-cont macro-start))
+           (when (and (eq macro-start syntactic-relpos)
+                      (not (assq 'cpp-define-intro c-syntactic-context))
+                      (save-excursion
+                        (goto-char macro-start)
+                        (or (not (c-forward-to-cpp-define-body))
+                            (<= (point) (c-point 'boi indent-point)))))
+             ;; Inside a #define body and the syntactic analysis is
+             ;; anchored on the start of the #define.  In this case
+             ;; we add cpp-define-intro to get the extra
+             ;; indentation of the #define body.
+             (c-add-syntax 'cpp-define-intro)))))
+
+      ;; return the syntax
+      c-syntactic-context)))
 
 \f
 ;; Indentation calculation.
index 7c634d14e6a608371afda4583c07ee4832df49e7..f6d497569ba3cfa1c41b126d3009eb3f2dbba4dd 100644 (file)
@@ -2769,7 +2769,7 @@ Will not look before LIM."
                  (goto-char (cperl-beginning-of-property p look-prop))
                  (beginning-of-line)
                  (setq pre-indent-point (point)))))
-         (goto-char pre-indent-point)  ; Orig line skipping preceeding pod/etc
+         (goto-char pre-indent-point)  ; Orig line skipping preceding pod/etc
          (let* ((case-fold-search nil)
                 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data)))
                 (start (or (nth 2 parse-data) ; last complete sexp terminated
@@ -2796,8 +2796,8 @@ Will not look before LIM."
                          (cperl-1+ char-after-pos) 'indentable)
                         p (1+ (cperl-beginning-of-property
                                (point) 'indentable))
-                        is-block       ; misused for: preceeding line in REx
-                        (save-excursion ; Find preceeding line
+                        is-block       ; misused for: preceding line in REx
+                        (save-excursion ; Find preceding line
                           (cperl-backward-to-noncomment p)
                           (beginning-of-line)
                           (if (<= (point) p)
@@ -2813,10 +2813,10 @@ Will not look before LIM."
                         prop (parse-partial-sexp p char-after-pos))
                   (cond ((not delim)   ; End the REx, ignore is-block
                          (vector 'indentable 'terminator p is-block))
-                        (is-block      ; Indent w.r.t. preceeding line
+                        (is-block      ; Indent w.r.t. preceding line
                          (vector 'indentable 'cont-line char-after-pos
                                  is-block char-after p))
-                        (t             ; No preceeding line...
+                        (t             ; No preceding line...
                          (vector 'indentable 'first-line p))))
                  ((get-text-property char-after-pos 'REx-part2)
                   (vector 'REx-part2 (point)))
@@ -2897,7 +2897,7 @@ Will not look before LIM."
                         (cperl-backward-to-start-of-continued-exp containing-sexp))
                     (beginning-of-line)
                     (cperl-backward-to-noncomment containing-sexp))
-                  ;; Now we get non-label preceeding the indent point
+                  ;; Now we get non-label preceding the indent point
                   (if (not (or (eq (1- (point)) containing-sexp)
                                (memq (preceding-char)
                                      (append (if is-block " ;{" " ,;{") '(nil)))
@@ -4835,7 +4835,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
 ;;; Moreover, one takes positive approach (looks for else,grep etc)
 ;;; another negative (looks for bless,tr etc)
 (defun cperl-after-block-p (lim &optional pre-block)
-  "Return true if the preceeding } (if PRE-BLOCK, following {) delimits a block.
+  "Return true if the preceding } (if PRE-BLOCK, following {) delimits a block.
 Would not look before LIM.  Assumes that LIM is a good place to begin a
 statement.  The kind of block we treat here is one after which a new
 statement would start; thus the block in ${func()} does not count."
@@ -4864,7 +4864,7 @@ statement would start; thus the block in ${func()} does not count."
                               (progn
                                 (forward-sexp -1)
                                 (looking-at "sub[ \t\n\f#]"))))))
-               ;; What preceeds is not word...  XXXX Last statement in sub???
+               ;; What precedes is not word...  XXXX Last statement in sub???
                (cperl-after-expr-p lim))))
       (error nil))))
 
index 9f8dd79e0fc41040a4646ea3fc514843cea72efa..f7965d2cd01d1be96d5fb58054db747d6218fec9 100644 (file)
@@ -2229,8 +2229,8 @@ processed.
 
 See also `ebnf-print-buffer'."
   (interactive
-   (list (read-file-name "Directory containing EBNF files (print): "
-                        nil default-directory)))
+   (list (read-directory-name "Directory containing EBNF files (print): "
+                             nil default-directory)))
   (ebnf-log-header "(ebnf-print-directory %S)" directory)
   (ebnf-directory 'ebnf-print-buffer directory))
 
@@ -2287,8 +2287,8 @@ processed.
 
 See also `ebnf-spool-buffer'."
   (interactive
-   (list (read-file-name "Directory containing EBNF files (spool): "
-                        nil default-directory)))
+   (list (read-directory-name "Directory containing EBNF files (spool): "
+                             nil default-directory)))
   (ebnf-log-header "(ebnf-spool-directory %S)" directory)
   (ebnf-directory 'ebnf-spool-buffer directory))
 
@@ -2340,8 +2340,8 @@ processed.
 
 See also `ebnf-eps-buffer'."
   (interactive
-   (list (read-file-name "Directory containing EBNF files (EPS): "
-                        nil default-directory)))
+   (list (read-directory-name "Directory containing EBNF files (EPS): "
+                             nil default-directory)))
   (ebnf-log-header "(ebnf-eps-directory %S)" directory)
   (ebnf-directory 'ebnf-eps-buffer directory))
 
@@ -2425,8 +2425,8 @@ are processed.
 
 See also `ebnf-syntax-buffer'."
   (interactive
-   (list (read-file-name "Directory containing EBNF files (syntax): "
-                        nil default-directory)))
+   (list (read-directory-name "Directory containing EBNF files (syntax): "
+                             nil default-directory)))
   (ebnf-log-header "(ebnf-syntax-directory %S)" directory)
   (ebnf-directory 'ebnf-syntax-buffer directory))
 
index 32ab52228f929db4d2262f12231bd64bb7a1dc7e..a4c9b7fccba97001544aaa8be25d4af64a63f528 100644 (file)
@@ -72,7 +72,9 @@ SYMBOL should be one of `grep-command', `grep-template',
 
 Some grep programs are able to surround matches with special
 markers in grep output.  Such markers can be used to highlight
-matches in grep mode.
+matches in grep mode.  This requires `font-lock-mode' to be active
+in grep buffers, so if you have globally disabled font-lock-mode,
+you will not get highlighting.
 
 This option sets the environment variable GREP_COLORS to specify
 markers for highlighting and GREP_OPTIONS to add the --color
@@ -462,6 +464,8 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
   (when (eq grep-highlight-matches 'auto-detect)
     (grep-compute-defaults))
   (unless (or (eq grep-highlight-matches 'auto-detect)
+             ;; Uses font-lock to parse color escapes.  (Bug#8084)
+             (null font-lock-mode)
              (null grep-highlight-matches))
     ;; `setenv' modifies `process-environment' let-bound in `compilation-start'
     ;; Any TERM except "dumb" allows GNU grep to use `--color=auto'
index 6e175da141480398be675431ca4e00502dcb6c6f..53918b903ee6f27d8d535134e33854cf58452ab5 100644 (file)
@@ -3218,7 +3218,7 @@ Treats actions as defuns."
   t)
 
 ;;;###autoload
-(define-derived-mode gdb-script-mode nil "GDB-Script"
+(define-derived-mode gdb-script-mode prog-mode "GDB-Script"
   "Major mode for editing GDB scripts."
   (set (make-local-variable 'comment-start) "#")
   (set (make-local-variable 'comment-start-skip) "#+\\s-*")
index 30d9fc21867ffcf277c4f391ff191d9f03651a40..5b7e07a5aadcf4e04b64c957469e7adb977cf8fd 100644 (file)
@@ -428,7 +428,7 @@ path \(the value of !PATH).  However, under Windows and MacOS
 variable can be set to specify the paths where IDLWAVE can find PRO
 files.  The shell will only be asked for a list of paths when this
 variable is nil.  The value is a list of directories.  A directory
-preceeded by a `+' will be searched recursively.  If you set this
+preceded by a `+' will be searched recursively.  If you set this
 variable on a UNIX system, the shell will not be queried.  See also
 `idlwave-system-directory'."
   :group 'idlwave-routine-info
@@ -1197,7 +1197,7 @@ As a user, you should not set this to t.")
          (2 font-lock-function-name-face)))
 
        ;; Keyword parameters, like /xlog or ,xrange=[]
-       ;; This is anchored to the comma preceeding the keyword.
+       ;; This is anchored to the comma preceding the keyword.
        ;; Treats continuation lines, works only during whole buffer
        ;; fontification.  Slow, use it only in fancy fontification.
        (keyword-parameters
index 45d967e92d979d7427be915961a85ffc98cec165..62472edfbe453c25ca8c2d043fe950ac3f0cbc65 100644 (file)
@@ -1715,7 +1715,7 @@ If COMPILEP is non-nil, compile, otherwise consult."
 ;; Font-lock stuff
 ;;-------------------------------------------------------------------
 
-;; Auxilliary functions
+;; Auxiliary functions
 (defun prolog-make-keywords-regexp (keywords &optional protect)
   "Create regexp from the list of strings KEYWORDS.
 If PROTECT is non-nil, surround the result regexp by word breaks."
@@ -3777,7 +3777,7 @@ If the point is not on a variable then insert underscore."
 
 
 (defun prolog-find-term (functor arity &optional prefix)
-  "Go to the position at the start of the next occurance of a term.
+  "Go to the position at the start of the next occurrence of a term.
 The term is specified with FUNCTOR and ARITY.  The optional argument
 PREFIX is the prefix of the search regexp."
   (let* (;; If prefix is not set then use the default "\\<"
index 9e49f0e775b5b7e7c43fa1a078d45c9cab92776f..1c1ffc41624a58f53f98e2880a5d85d09e3b4959 100644 (file)
@@ -2801,7 +2801,7 @@ server/database name."
 (defun sql-rename-buffer (&optional new-name)
   "Rename a SQL interactive buffer.
 
-Prompts for the new name if command is preceeded by
+Prompts for the new name if command is preceded by
 \\[universal-argument].  If no buffer name is provided, then the
 `sql-alternate-buffer-name' is used.
 
@@ -3262,7 +3262,7 @@ you must tell Emacs.  Here's how to do that in your `~/.emacs' file:
   :abbrev-table sql-mode-abbrev-table
   (if sql-mode-menu
       (easy-menu-add sql-mode-menu)); XEmacs
-  
+
   (set (make-local-variable 'comment-start) "--")
   ;; Make each buffer in sql-mode remember the "current" SQLi buffer.
   (make-local-variable 'sql-buffer)
@@ -4257,4 +4257,3 @@ buffer.
 (provide 'sql)
 
 ;;; sql.el ends here
-
index cb1d3c24a94ac084eb9553ca021a4007d9035fef..75b706b74ecfeb2044c525da05daebf76ffa3222 100644 (file)
@@ -1775,7 +1775,7 @@ NOTE: Activate the new setting by restarting Emacs.
 
 (defcustom vhdl-intelligent-tab t
   "*Non-nil means `TAB' does indentation, word completion and tab insertion.
-That is, if preceeding character is part of a word then complete word,
+That is, if preceding character is part of a word then complete word,
 else if not at beginning of line then insert tab,
 else if last command was a `TAB' or `RET' then dedent one step,
 else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab').
@@ -6946,7 +6946,7 @@ only-lines."
 ;; Indentation commands
 
 (defun vhdl-electric-tab (&optional prefix-arg)
-  "If preceeding character is part of a word or a paren then hippie-expand,
+  "If preceding character is part of a word or a paren then hippie-expand,
 else if right of non whitespace on line then insert tab,
 else if last command was a tab or return then dedent one step or if a comment
 toggle between normal indent and inline comment indent,
@@ -10396,7 +10396,7 @@ with double-quotes is to be inserted.  DEFAULT specifies a default string."
   (if vhdl-upper-case-keywords (upcase-word num) (downcase-word num)))
 
 (defun vhdl-minibuffer-tab (&optional prefix-arg)
-  "If preceeding character is part of a word or a paren then hippie-expand,
+  "If preceding character is part of a word or a paren then hippie-expand,
 else insert tab (used for word completion in VHDL minibuffer)."
   (interactive "P")
   (cond
@@ -13056,7 +13056,7 @@ hierarchy otherwise.")
 ;; Scan functions
 
 (defun vhdl-scan-context-clause ()
-  "Scan the context clause that preceeds a design unit."
+  "Scan the context clause that precedes a design unit."
   (let (lib-alist)
     (save-excursion
       (when (re-search-backward "^[ \t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t)
index 19431c30d68def8a852536ccb3fbfd23788e5199..b51eb94469654506a8bea7be059f91038cc2c6ef 100644 (file)
@@ -6645,7 +6645,8 @@ If FACE is not a valid face name, use default face."
         (error "Unprinted PostScript"))))
 
 (cond ((fboundp 'add-hook)
-       (funcall 'add-hook 'kill-emacs-hook 'ps-kill-emacs-check))
+       (unless noninteractive
+         (funcall 'add-hook 'kill-emacs-hook 'ps-kill-emacs-check)))
       (kill-emacs-hook
        (message "Won't override existing `kill-emacs-hook'"))
       (t
index d0be69b51fc9d30fc8a2c218fc241d482ff3c7a5..9f9baad8dbdce7802cdcb986966cdbfc7e76ddb1 100644 (file)
@@ -411,13 +411,14 @@ That is, if it doesn't match any of the `recentf-exclude' checks."
         (checks recentf-exclude)
         (keepit t))
     (while (and checks keepit)
-      (setq keepit (condition-case nil
-                       (not (if (stringp (car checks))
-                                ;; A regexp
-                                (string-match (car checks) filename)
-                              ;; A predicate
-                              (funcall (car checks) filename)))
-                     (error nil))
+      ;; If there was an error in a predicate, err on the side of
+      ;; keeping the file.  (Bug#5843)
+      (setq keepit (not (ignore-errors
+                          (if (stringp (car checks))
+                              ;; A regexp
+                              (string-match (car checks) filename)
+                            ;; A predicate
+                            (funcall (car checks) filename))))
             checks (cdr checks)))
     keepit))
 
index 0f8adea2aca97e734deadca18909dc903d4b78f6..928c3170c6548cf8f82701a59e0194849e42a1a5 100644 (file)
@@ -1531,7 +1531,7 @@ N     (match-string N)           (where N is a string of digits)
 #&    (string-to-number (match-string 0))
 #     replace-count
 
-Note that these symbols must be preceeded by a backslash in order to
+Note that these symbols must be preceded by a backslash in order to
 type them using Lisp syntax."
   (while (consp n)
     (cond
index b7d43bd230a88869a4eb0c66ae09974775351dec..c10b5cbb7eccce217dd59941bafd053e63d13a09 100644 (file)
@@ -300,7 +300,8 @@ may have changed\) back to `save-place-alist'."
 
 (add-hook 'find-file-hook 'save-place-find-file-hook t)
 
-(add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook))
 
 (add-hook 'kill-buffer-hook 'save-place-to-alist)
 
index ea89ce765c3e3fbb08f836744b6c974a856f6980..2f11cc6314c80f4446a458052acdf4f1607f2267 100644 (file)
@@ -569,9 +569,9 @@ Otherwise, one argument `-i' is passed to the shell.
                ;; of the current-buffer rather than of the *shell* buffer.
               (setq default-directory
                     (expand-file-name
-                     (read-file-name
+                     (read-directory-name
                       "Default directory: " default-directory default-directory
-                      t nil 'file-directory-p))))))))
+                      t nil))))))))
   (require 'ansi-color)
   (setq buffer (if (or buffer (not (derived-mode-p 'shell-mode))
                        (comint-check-proc (current-buffer)))
index dad2a4c82ac30497f733bead69bb8edcdf9653a5..d160a836359b9b99978d4653da93402b60a11d54 100644 (file)
@@ -1622,7 +1622,7 @@ Files can be renamed to new names or moved to new directories."
   (let ((f (speedbar-line-file)))
     (if f
        (let* ((basedir (file-name-directory f))
-              (nd (read-file-name "Create directory: "
+              (nd (read-directory-name "Create directory: "
                                   basedir)))
          ;; Make the directory
          (make-directory nd t)
diff --git a/lisp/term/screen.el b/lisp/term/screen.el
new file mode 100644 (file)
index 0000000..4931a42
--- /dev/null
@@ -0,0 +1,11 @@
+;; -*- no-byte-compile: t -*-
+;; Treat a screen terminal similar to an xterm.
+(load "term/xterm")
+
+(defun terminal-init-screen ()
+  "Terminal initialization function for screen."
+  ;; Use the xterm color initialization code.
+  (xterm-register-default-colors)
+  (tty-set-up-initial-frame-faces))
+
+;; screen.el ends here
index f1e73dcf48072beb582a7d39acdd2428c27d791a..5fbc8a643d89651d66f6a7ec4fa5c3451d276d2f 100644 (file)
@@ -422,7 +422,7 @@ be in `artist-spray-chars', or spraying will behave strangely.")
 (defvar artist-mode-name " Artist"
   "Name of Artist mode beginning with a space (appears in the mode-line).")
 
-(defvar artist-curr-go 'pen-char
+(defvar artist-curr-go 'pen-line
   "Current selected graphics operation.")
 (make-variable-buffer-local 'artist-curr-go)
 
@@ -502,6 +502,49 @@ This variable is initialized by the `artist-make-prev-next-op-alist' function.")
 (defvar artist-arrow-point-1 nil)
 (defvar artist-arrow-point-2 nil)
 \f
+(defvar artist-menu-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [spray-chars]
+      '(menu-item "Characters for Spray" artist-select-spray-chars
+                 :help "Choose characters for sprayed by the spray-can"))
+    (define-key map [borders]
+      '(menu-item "Draw Shape Borders" artist-toggle-borderless-shapes
+                 :help "Toggle whether shapes are drawn with borders"
+                 :button (:toggle . (not artist-borderless-shapes))))
+    (define-key map [trimming]
+      '(menu-item "Trim Line Endings" artist-toggle-trim-line-endings
+                 :help "Toggle trimming of line-endings"
+                 :button (:toggle . artist-trim-line-endings)))
+    (define-key map [rubber-band]
+      '(menu-item "Rubber-banding" artist-toggle-rubber-banding
+                 :help "Toggle rubber-banding"
+                 :button (:toggle . artist-rubber-banding)))
+    (define-key map [set-erase]
+      '(menu-item "Character to Erase..." artist-select-erase-char
+                 :help "Choose a specific character to erase"))
+    (define-key map [set-line]
+      '(menu-item "Character for Line..." artist-select-line-char
+                 :help "Choose the character to insert when drawing lines"))
+    (define-key map [set-fill]
+      '(menu-item "Character for Fill..." artist-select-fill-char
+                 :help "Choose the character to insert when filling in shapes"))
+    (define-key map [artist-separator] '(menu-item "--"))
+    (dolist (op '(("Vaporize" artist-select-op-vaporize-lines vaporize-lines)
+                 ("Erase" artist-select-op-erase-rectangle erase-rect)
+                 ("Spray-can" artist-select-op-spray-set-size spray-get-size)
+                 ("Text" artist-select-op-text-overwrite text-ovwrt)
+                 ("Ellipse" artist-select-op-circle circle)
+                 ("Poly-line" artist-select-op-straight-poly-line spolyline)
+                 ("Rectangle" artist-select-op-square square)
+                 ("Line" artist-select-op-straight-line s-line)
+                 ("Pen" artist-select-op-pen-line pen-line)))
+      (define-key map (vector (nth 2 op))
+       `(menu-item ,(nth 0 op)
+                   ,(nth 1 op)
+                   :help ,(format "Draw using the %s style" (nth 0 op))
+                   :button (:radio . (eq artist-curr-go ',(nth 2 op))))))
+    map))
+
 (defvar artist-mode-map
   (let ((map (make-sparse-keymap)))
     (setq artist-mode-map (make-sparse-keymap))
@@ -554,6 +597,7 @@ This variable is initialized by the `artist-make-prev-next-op-alist' function.")
     (define-key map "\C-c\C-a\C-y" 'artist-select-op-paste)
     (define-key map "\C-c\C-af"    'artist-select-op-flood-fill)
     (define-key map "\C-c\C-a\C-b" 'artist-submit-bug-report)
+    (define-key map [menu-bar artist] (cons "Artist" artist-menu-map))
     map)
   "Keymap for `artist-minor-mode'.")
 
@@ -4601,6 +4645,10 @@ If optional argument STATE is positive, turn borders on."
 
          (artist-arrow-point-set-state artist-arrow-point-2 new-state)))))
 
+(defun artist-select-op-pen-line ()
+  "Select drawing pen lines."
+  (interactive)
+  (artist-select-operation "Pen Line"))
 
 (defun artist-select-op-line ()
   "Select drawing lines."
index 70f11cf66dc80adecb39e3a760a42b2f24bca25d..a0892b5ebbae991b375eed1169f0aece54c2cf18 100644 (file)
@@ -43,7 +43,7 @@ only considered as a candidate to match `paragraph-start' or
 
 Prefix argument says to turn mode on if positive, off if negative.
 When the mode is turned on, if there are newlines in the buffer but no hard
-newlines, ask the user whether to mark as hard any newlines preceeding a
+newlines, ask the user whether to mark as hard any newlines preceding a
 `paragraph-start' line.  From a program, second arg INSERT specifies whether
 to do this; it can be `never' to change nothing, t or `always' to force
 marking, `guess' to try to do the right thing with no questions, nil
index 6719a647c36a43045f57ed7e7d69bc4aec01b1b6..7e150bff997bcea26121bbb4a131beece1753a9f 100644 (file)
@@ -567,7 +567,7 @@ on the menu bar.
   "Save RefTeX's parse file for this buffer if the information has changed."
   ;; Save the parsing information if it was modified.
   ;; This function should be installed in `kill-buffer-hook'.
-  ;; We are careful to make sure nothing goes wring in this function.
+  ;; We are careful to make sure nothing goes wrong in this function.
   (when (and (boundp 'reftex-mode)  reftex-mode
              (boundp 'reftex-save-parse-info)  reftex-save-parse-info
              (boundp 'reftex-docstruct-symbol)  reftex-docstruct-symbol
@@ -2397,7 +2397,7 @@ IGNORE-WORDS List of words which should be removed from the string."
   (define-key reftex-mode-map
     reftex-extra-bindings-prefix
     reftex-extra-bindings-map))
-    
+
 
 ;;; =========================================================================
 ;;;
@@ -2568,7 +2568,8 @@ With optional NODE, go directly to that node."
 ;;; Install the kill-buffer and kill-emacs hooks ------------------------------
 
 (add-hook 'kill-buffer-hook 'reftex-kill-buffer-hook)
-(add-hook 'kill-emacs-hook  'reftex-kill-emacs-hook)
+(unless noninteractive
+  (add-hook 'kill-emacs-hook  'reftex-kill-emacs-hook))
 
 ;;; Run Hook ------------------------------------------------------------------
 
index 2229dc6c9e8dcd17b719ab32740ec53159d36c8e..314fbf9671b4065aacbd5a4c620a45c365c706ed 100644 (file)
@@ -427,7 +427,12 @@ a DOCTYPE or an XML declaration."
                  (format-mode-line mode-name))))))
 
 (defun sgml-fill-nobreak ()
-  ;; Don't break between a tag name and its first argument.
+  "Don't break between a tag name and its first argument.
+This function is designed for use in `fill-nobreak-predicate'.
+
+    <a href=\"some://where\" type=\"text/plain\">
+      ^                   ^
+      | no break here     | but still allowed here"
   (save-excursion
     (skip-chars-backward " \t")
     (and (not (zerop (skip-syntax-backward "w_")))
index 1bc1cca1112822733501cb71b6f3ba6a6490de56..2e9dd252bd64e3307e559c049dd06d558f6ab4c1 100644 (file)
@@ -157,7 +157,7 @@ LABEL is a string to display as the label of that TIMEZONE's time."
   ;; Determine if zoneinfo style timezones are supported by testing that
   ;; America/New York and Europe/London return different timezones.
   (let (gmt nyt)
-    (set-time-zone-rule "America/New York")
+    (set-time-zone-rule "America/New_York")
     (setq nyt (format-time-string "%z"))
     (set-time-zone-rule "Europe/London")
     (setq gmt (format-time-string "%z"))
index 59e442a89c3772accb7d6907595529943a1e3337..8e5fe27f9657a34059888ae5e8fb831e29f93e7f 100644 (file)
@@ -1266,7 +1266,7 @@ a diff with \\[diff-reverse-direction].
 
   ;; Set up `whitespace-mode' so that turning it on will show trailing
   ;; whitespace problems on the modified lines of the diff.
-  (set (make-local-variable 'whitespace-style) '(trailing))
+  (set (make-local-variable 'whitespace-style) '(face trailing))
   (set (make-local-variable 'whitespace-trailing-regexp)
        "^[-\+!<>].*?\\([\t ]+\\)$")
 
index ff1f7f6b01705cbf855d6bfa98aed9d920793c03..0d904ec85c449f1dadd88357393c87b1d1e871b0 100644 (file)
@@ -560,7 +560,6 @@ See the documentation string of `ediff-focus-on-regexp-matches' for details.")
   :group 'ediff)
 
 
-(ediff-defvar-local ediff-use-faces t "")
 (defcustom ediff-use-faces t
   "If t, differences are highlighted using faces, if device supports faces.
 If nil, differences are highlighted using ASCII flags, ediff-before-flag
@@ -568,6 +567,7 @@ and ediff-after-flag.  On a non-window system, differences are always
 highlighted using ASCII flags."
   :type 'boolean
   :group 'ediff-highlighting)
+(ediff-defvar-local ediff-use-faces t "")
 
 ;; this indicates that diff regions are word-size, so fine diffs are
 ;; permanently nixed; used in ediff-windows-wordwise and ediff-regions-wordwise
@@ -604,13 +604,13 @@ meaning of this variable."
   :type 'boolean
   :group 'ediff)
 
-(ediff-defvar-local ediff-highlight-all-diffs t "")
 (defcustom ediff-highlight-all-diffs t
   "If nil, only the selected differences are highlighted.
 Otherwise, all difference regions are highlighted, but the selected region is
 shown in brighter colors."
   :type 'boolean
   :group 'ediff-highlighting)
+(ediff-defvar-local ediff-highlight-all-diffs t "")
 
 
 ;; The suffix of the control buffer name.
index ee34944e448632a9375653b8c701ae7c24cd7237..601b6b1e5970320334cb84d4b361ba0a184dbb48 100644 (file)
@@ -1271,10 +1271,10 @@ Otherwise, the A or B file present is copied to the output file."
 (defun emerge-merge-directories (a-dir b-dir ancestor-dir output-dir)
   (interactive
    (list
-    (read-file-name "A directory: " nil nil 'confirm)
-    (read-file-name "B directory: " nil nil 'confirm)
-    (read-file-name "Ancestor directory (null for none): " nil nil 'confirm)
-    (read-file-name "Output directory (null for none): " nil nil 'confirm)))
+    (read-directory-name "A directory: " nil nil 'confirm)
+    (read-directory-name "B directory: " nil nil 'confirm)
+    (read-directory-name "Ancestor directory (null for none): " nil nil 'confirm)
+    (read-directory-name "Output directory (null for none): " nil nil 'confirm)))
   ;; Check that we're not on a line
   (if (not (and (bolp) (eolp)))
       (error "There is text on this line"))
index 5e6e054924c622fb4723dac2a71298682f78bfc4..a0a16601ed7bfee77e8e00c66830f7cf29d9a4d3 100644 (file)
@@ -182,10 +182,19 @@ in the repository root directory of FILE."
   ;; format 3' in the first line.
   ;; If the `checkout/dirstate' file cannot be parsed, fall back to
   ;; running `vc-bzr-state'."
+  ;;
+  ;; The format of the dirstate file is explained in bzrlib/dirstate.py
+  ;; in the bzr distribution.  Basically:
+  ;; header-line giving the version of the file format in use.
+  ;; a few lines of stuff
+  ;; entries, one per line, with null-separated fields.  Each line:
+  ;; entry_key = dirname (may be empty), basename, file-id
+  ;; current = common ( = kind, fingerprint, size, executable )
+  ;;           + working ( = packed_stat )
+  ;; parent = common ( as above ) + history ( = rev_id )
+  ;; kinds = (r)elocated, (a)bsent, (d)irectory, (f)ile, (l)ink
   (lexical-let ((root (vc-bzr-root file)))
     (when root    ; Short cut.
-      ;; This looks at internal files.  May break if they change
-      ;; their format.
       (lexical-let ((dirstate (expand-file-name vc-bzr-admin-dirstate root)))
         (condition-case nil
             (with-temp-buffer
@@ -210,13 +219,14 @@ in the repository root directory of FILE."
                                ;; was executable the last time bzr checked?
                                "[^\0]*\0"
                                "[^\0]*\0"       ;?
-                               "\\([^\0]*\\)\0" ;"a/f/d" a=added?
+                               ;; Parent information.  Absent in a new repo.
+                               "\\(?:\\([^\0]*\\)\0" ;"a/f/d" a=added?
                                "\\([^\0]*\\)\0" ;sha1 again?
                                "\\([^\0]*\\)\0" ;size again?
                                ;; y/n.  Whether or not the repo thinks
                                ;; the file should be executable?
                                "\\([^\0]*\\)\0"
-                               "[^\0]*\0" ;last revid?
+                               "[^\0]*\0\\)?" ;last revid?
                                ;; There are more fields when merges are pending.
                                )
                        nil t)
@@ -226,7 +236,10 @@ in the repository root directory of FILE."
                       ;; conflict markers).
                       (cond
                        ((eq (char-after (match-beginning 1)) ?a) 'removed)
-                       ((eq (char-after (match-beginning 4)) ?a) 'added)
+                       ;; If there is no parent, this must be a new repo.
+                       ;; If file is in dirstate, can only be added (b#8025).
+                       ((or (not (match-beginning 4))
+                            (eq (char-after (match-beginning 4)) ?a)) 'added)
                        ((or (and (eq (string-to-number (match-string 3))
                                  (nth 7 (file-attributes file)))
                                  (equal (match-string 5)
@@ -866,38 +879,40 @@ stream.  Standard error output is discarded."
        (result nil))
       (goto-char (point-min))
       (while (not (eobp))
-       (setq status-str
-             (buffer-substring-no-properties (point) (+ (point) 3)))
-       (setq translated (cdr (assoc status-str translation)))
-       (cond
-        ((eq translated 'conflict)
-         ;; For conflicts the file appears twice in the listing: once
-         ;; with the M flag and once with the C flag, so take care
-         ;; not to add it twice to `result'.  Ugly.
-         (let* ((file
-                 (buffer-substring-no-properties
-                  ;;For files with conflicts the format is:
-                  ;;C   Text conflict in FILENAME
-                  ;; Bah.
-                  (+ (point) 21) (line-end-position)))
-                (entry (assoc file result)))
-           (when entry
-             (setf (nth 1 entry) 'conflict))))
-        ((eq translated 'renamed)
-         (re-search-forward "R[ M]  \\(.*\\) => \\(.*\\)$" (line-end-position) t)
-         (let ((new-name (file-relative-name (match-string 2) relative-dir))
-               (old-name (file-relative-name (match-string 1) relative-dir)))
-           (push (list new-name 'edited
-                     (vc-bzr-create-extra-fileinfo old-name)) result)))
-        ;; do nothing for non existent files
-        ((eq translated 'not-found))
-        (t
-         (push (list (file-relative-name
-                      (buffer-substring-no-properties
-                       (+ (point) 4)
-                       (line-end-position)) relative-dir)
-                     translated) result)))
-       (forward-line))
+        ;; Bzr 2.3.0 added this if there are shelves.  (Bug#8170)
+        (unless (looking-at "[1-9]+ shel\\(f\\|ves\\) exists?\\.")
+          (setq status-str
+                (buffer-substring-no-properties (point) (+ (point) 3)))
+          (setq translated (cdr (assoc status-str translation)))
+          (cond
+           ((eq translated 'conflict)
+            ;; For conflicts the file appears twice in the listing: once
+            ;; with the M flag and once with the C flag, so take care
+            ;; not to add it twice to `result'.  Ugly.
+            (let* ((file
+                    (buffer-substring-no-properties
+                     ;;For files with conflicts the format is:
+                     ;;C   Text conflict in FILENAME
+                     ;; Bah.
+                     (+ (point) 21) (line-end-position)))
+                   (entry (assoc file result)))
+              (when entry
+                (setf (nth 1 entry) 'conflict))))
+           ((eq translated 'renamed)
+            (re-search-forward "R[ M]  \\(.*\\) => \\(.*\\)$" (line-end-position) t)
+            (let ((new-name (file-relative-name (match-string 2) relative-dir))
+                  (old-name (file-relative-name (match-string 1) relative-dir)))
+              (push (list new-name 'edited
+                          (vc-bzr-create-extra-fileinfo old-name)) result)))
+           ;; do nothing for non existent files
+           ((eq translated 'not-found))
+           (t
+            (push (list (file-relative-name
+                         (buffer-substring-no-properties
+                          (+ (point) 4)
+                          (line-end-position)) relative-dir)
+                        translated) result))))
+        (forward-line))
       (funcall update-function result)))
 
 (defun vc-bzr-dir-status (dir update-function)
index 38fbaaedd3261db67be5c8faee503e03ea4029be..d4970207b947abfb6325be1545176273e3e032a4 100644 (file)
@@ -265,6 +265,7 @@ See `run-hooks'."
     (define-key map [C-up] 'vc-dir-previous-directory)
     ;; The remainder.
     (define-key map "f" 'vc-dir-find-file)
+    (define-key map "e" 'vc-dir-find-file) ; dired-mode compatibility
     (define-key map "\C-m" 'vc-dir-find-file)
     (define-key map "o" 'vc-dir-find-file-other-window)
     (define-key map "\C-c\C-c" 'vc-dir-kill-dir-status-process)
@@ -1184,9 +1185,9 @@ These are the commands available for use in the file status buffer:
     ;; therefore it makes sense to always do that.
     ;; Otherwise if you do C-x v d -> C-x C-f -> C-c v d
     ;; you may get a new *vc-dir* buffer, different from the original
-    (file-truename (read-file-name "VC status for directory: "
-                                   default-directory default-directory t
-                                   nil #'file-directory-p))
+    (file-truename (read-directory-name "VC status for directory: "
+                                       default-directory default-directory t
+                                       nil))
     (if current-prefix-arg
        (intern
         (completing-read
index d3a64f15f9e7ba307b76166b66a44242f31fb1fa..488efaa35226b9c5c5a7d0134c6b28fef3b44c62 100644 (file)
 
 ;; See vc.el
 
-;; Some features will not work with old RCS versions.  Where
+;; Some features will not work with ancient RCS versions.  Where
 ;; appropriate, VC finds out which version you have, and allows or
-;; disallows those features (stealing locks, for example, works only
-;; from 5.6.2 onwards).
-;; Even initial checkins will fail if your RCS version is so old that ci
-;; doesn't understand -t-; this has been known to happen to people running
-;; NExTSTEP 3.0.
-;;
+;; disallows those features.
+
 ;; You can support the RCS -x option by customizing vc-rcs-master-templates.
 
 ;;; Code:
@@ -391,7 +387,7 @@ whether to remove it."
          (vc-rcs-set-default-branch file
                                     (if (vc-rcs-trunk-p new-version) nil
                                       (vc-branch-part new-version)))
-         ;; If this is an old RCS release, we might have
+         ;; If this is an old (pre-1992!) RCS release, we might have
          ;; to remove a remaining lock.
          (if (not (vc-rcs-release-p "5.6.2"))
              ;; exit status of 1 is also accepted.
index 20c7689f4012d695a9287a5f79fc82b96778fd9c..7362258a42de30dd272aab002be0e0b3ff11bee3 100644 (file)
@@ -174,7 +174,9 @@ If you want to force an empty list of arguments, use t."
     (while (re-search-forward re nil t)
       (let ((state (cdr (assq (aref (match-string 1) 0) state-map)))
             (propstat (cdr (assq (aref (match-string 2) 0) state-map)))
-           (filename (match-string 4)))
+            (filename (if (memq system-type '(windows-nt ms-dos))
+                          (replace-regexp-in-string "\\\\" "/" (match-string 4))
+                        (match-string 4))))
         (and (memq propstat '(conflict edited))
              (not (eq state 'conflict)) ; conflict always wins
              (setq state propstat))
index 0274384780038dbe150d77f16f55357d5f444458..200291bd925bf8285208883c2ce449121c957b35 100644 (file)
@@ -1954,7 +1954,7 @@ checked out in that new branch."
          ;; For VC's that do not work at file level, it's pointless
          ;; to ask for a directory, branches are created at repository level.
          default-directory
-       (read-file-name "Directory: " default-directory default-directory t))
+       (read-directory-name "Directory: " default-directory default-directory t))
       (read-string (if current-prefix-arg "New branch name: " "New tag name: "))
       current-prefix-arg)))
   (message "Making %s... " (if branchp "branch" "tag"))
@@ -1980,7 +1980,7 @@ allowed and simply skipped)."
          ;; For VC's that do not work at file level, it's pointless
          ;; to ask for a directory, branches are created at repository level.
          default-directory
-       (read-file-name "Directory: " default-directory default-directory t))
+       (read-directory-name "Directory: " default-directory default-directory t))
       (read-string "Tag name to retrieve (default latest revisions): "))))
   (let ((update (yes-or-no-p "Update any affected buffers? "))
        (msg (if (or (not name) (string= name ""))
index af5d9a5b16b93797f8d9489511c6d9a971b60ccb..c3f8de6f9ddaf63680855cee021caf9d86155f08 100644 (file)
@@ -106,11 +106,12 @@ even if it is active.  Otherwise, the minibuffer is counted
 when it is active.
 
 The optional arg ALL-FRAMES t means count windows on all frames.
-If it is `visible', count windows on all visible frames.
-ALL-FRAMES nil or omitted means count only the selected frame,
-plus the minibuffer it uses (which may be on another frame).
-ALL-FRAMES 0 means count all windows in all visible or iconified frames.
-If ALL-FRAMES is anything else, count only the selected frame."
+If it is `visible', count windows on all visible frames on the
+current terminal.  ALL-FRAMES nil or omitted means count only the
+selected frame, plus the minibuffer it uses (which may be on
+another frame).  ALL-FRAMES 0 means count all windows in all
+visible or iconified frames on the current terminal.  If
+ALL-FRAMES is anything else, count only the selected frame."
   (let ((base-window (selected-window)))
     (if (and nomini (eq base-window (minibuffer-window)))
        (setq base-window (next-window base-window)))
@@ -169,9 +170,9 @@ ALL-FRAMES nil or omitted means cycle through all windows on the
 ALL-FRAMES t means cycle through all windows on all existing
  frames.
 ALL-FRAMES `visible' means cycle through all windows on all
- visible frames.
+ visible frames on the current terminal.
 ALL-FRAMES 0 means cycle through all windows on all visible and
- iconified frames.
+ iconified frames on the current terminal.
 ALL-FRAMES a frame means cycle through all windows on that frame
  only.
 Anything else means cycle through all windows on the selected
@@ -1067,9 +1068,11 @@ when the specified buffer is already displayed.  If the buffer is
 already displayed in some window on one of these frames simply
 return that window.  Possible values of FRAME are:
 
-`visible' - consider windows on all visible frames.
+`visible' - consider windows on all visible frames on the current
+terminal.
 
-0 - consider windows on all visible or iconified frames.
+0 - consider windows on all visible or iconified frames on the
+current terminal.
 
 t - consider windows on all frames.
 
@@ -1079,7 +1082,7 @@ nil - consider windows on the selected frame \(actually the
 last non-minibuffer frame\) only.  If, however, either
 `display-buffer-reuse-frames' or `pop-up-frames' is non-nil
 \(non-nil and not graphic-only on a text-only terminal),
-consider all visible or iconified frames."
+consider all visible or iconified frames on the current terminal."
   (interactive "BDisplay buffer:\nP")
   (let* ((can-use-selected-window
          ;; The selected window is usable unless either NOT-THIS-WINDOW
index 10ec34da386c5c02ffed43adcec116cab267ae01..8bf5a64a5f98126d8f7a3f0822bf78ff1eec59e4 100644 (file)
@@ -29,6 +29,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module arg-nonnull:
   # Code from module c++defs:
   # Code from module crypto/md5:
+  # Code from module dosname:
   # Code from module dtoastr:
   # Code from module extensions:
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
@@ -40,13 +41,17 @@ AC_DEFUN([gl_EARLY],
   # Code from module ignore-value:
   # Code from module include_next:
   # Code from module intprops:
+  # Code from module lstat:
   # Code from module mktime:
   # Code from module multiarch:
+  # Code from module readlink:
+  # Code from module stat:
   # Code from module stdbool:
   # Code from module stddef:
   # Code from module stdint:
   # Code from module stdlib:
   # Code from module strftime:
+  # Code from module symlink:
   # Code from module sys_stat:
   # Code from module time:
   # Code from module time_r:
@@ -74,6 +79,7 @@ AC_DEFUN([gl_INIT],
   # Code from module c++defs:
   # Code from module crypto/md5:
   gl_MD5
+  # Code from module dosname:
   # Code from module dtoastr:
   AC_REQUIRE([gl_C99_STRTOLD])
   # Code from module extensions:
@@ -94,11 +100,20 @@ AC_DEFUN([gl_INIT],
   AC_REQUIRE([AC_C_INLINE])
   # Code from module include_next:
   # Code from module intprops:
+  # Code from module lstat:
+  gl_FUNC_LSTAT
+  gl_SYS_STAT_MODULE_INDICATOR([lstat])
   # Code from module mktime:
   gl_FUNC_MKTIME
   gl_TIME_MODULE_INDICATOR([mktime])
   # Code from module multiarch:
   gl_MULTIARCH
+  # Code from module readlink:
+  gl_FUNC_READLINK
+  gl_UNISTD_MODULE_INDICATOR([readlink])
+  # Code from module stat:
+  gl_FUNC_STAT
+  gl_SYS_STAT_MODULE_INDICATOR([stat])
   # Code from module stdbool:
   AM_STDBOOL_H
   # Code from module stddef:
@@ -109,6 +124,9 @@ AC_DEFUN([gl_INIT],
   gl_STDLIB_H
   # Code from module strftime:
   gl_FUNC_GNU_STRFTIME
+  # Code from module symlink:
+  gl_FUNC_SYMLINK
+  gl_UNISTD_MODULE_INDICATOR([symlink])
   # Code from module sys_stat:
   gl_HEADER_SYS_STAT_H
   AC_PROG_MKDIR_P
@@ -263,6 +281,7 @@ AC_DEFUN([gl_FILE_LIST], [
   build-aux/arg-nonnull.h
   build-aux/c++defs.h
   build-aux/warn-on-use.h
+  lib/dosname.h
   lib/dtoastr.c
   lib/filemode.c
   lib/filemode.h
@@ -276,16 +295,20 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/gettext.h
   lib/ignore-value.h
   lib/intprops.h
+  lib/lstat.c
   lib/md5.c
   lib/md5.h
   lib/mktime-internal.h
   lib/mktime.c
+  lib/readlink.c
+  lib/stat.c
   lib/stdbool.in.h
   lib/stddef.in.h
   lib/stdint.in.h
   lib/stdlib.in.h
   lib/strftime.c
   lib/strftime.h
+  lib/symlink.c
   lib/sys_stat.in.h
   lib/time.in.h
   lib/time_r.c
@@ -299,15 +322,19 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/gnulib-common.m4
   m4/include_next.m4
   m4/longlong.m4
+  m4/lstat.m4
   m4/md5.m4
   m4/mktime.m4
   m4/multiarch.m4
+  m4/readlink.m4
   m4/st_dm_mode.m4
+  m4/stat.m4
   m4/stdbool.m4
   m4/stddef_h.m4
   m4/stdint.m4
   m4/stdlib_h.m4
   m4/strftime.m4
+  m4/symlink.m4
   m4/sys_stat_h.m4
   m4/time_h.m4
   m4/time_r.m4
diff --git a/m4/lstat.m4 b/m4/lstat.m4
new file mode 100644 (file)
index 0000000..b9b22a6
--- /dev/null
@@ -0,0 +1,69 @@
+# serial 21
+
+# Copyright (C) 1997-2001, 2003-2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_LSTAT],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  dnl If lstat does not exist, the replacement <sys/stat.h> does
+  dnl "#define lstat stat", and lstat.c is a no-op.
+  AC_CHECK_FUNCS_ONCE([lstat])
+  if test $ac_cv_func_lstat = yes; then
+    AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+    if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+      dnl Note: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK does AC_LIBOBJ([lstat]).
+      REPLACE_LSTAT=1
+    fi
+    # Prerequisites of lib/lstat.c.
+    AC_REQUIRE([AC_C_INLINE])
+  else
+    HAVE_LSTAT=0
+  fi
+])
+
+# Redefine AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK, because it is no longer
+# maintained in Autoconf.
+AC_DEFUN([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
+[
+  AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
+    [ac_cv_func_lstat_dereferences_slashed_symlink],
+    [rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
+            ]])],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=yes],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=no],
+         [# When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+         ])
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
+    ])
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+    AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
+      [Define to 1 if `lstat' dereferences a symlink specified
+       with a trailing slash.])
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
+    AC_LIBOBJ([lstat])
+  fi
+])
diff --git a/m4/readlink.m4 b/m4/readlink.m4
new file mode 100644 (file)
index 0000000..a502ca5
--- /dev/null
@@ -0,0 +1,62 @@
+# readlink.m4 serial 9
+dnl Copyright (C) 2003, 2007, 2009-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_READLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([readlink])
+  if test $ac_cv_func_readlink = no; then
+    HAVE_READLINK=0
+    AC_LIBOBJ([readlink])
+    gl_PREREQ_READLINK
+  else
+    AC_CACHE_CHECK([whether readlink signature is correct],
+      [gl_cv_decl_readlink_works],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+      /* Cause compilation failure if original declaration has wrong type.  */
+      ssize_t readlink (const char *, char *, size_t);]])],
+         [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])])
+    dnl Solaris 9 ignores trailing slash.
+    dnl FreeBSD 7.2 dereferences only one level of links with trailing slash.
+    AC_CACHE_CHECK([whether readlink handles trailing slash correctly],
+      [gl_cv_func_readlink_works],
+      [# We have readlink, so assume ln -s works.
+       ln -s conftest.no-such conftest.link
+       ln -s conftest.link conftest.lnk2
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+]], [[char buf[20];
+      return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])],
+         [gl_cv_func_readlink_works=yes], [gl_cv_func_readlink_works=no],
+         [gl_cv_func_readlink_works="guessing no"])
+      rm -f conftest.link conftest.lnk2])
+    if test "$gl_cv_func_readlink_works" != yes; then
+      AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink
+        fails to recognize a trailing slash.])
+      REPLACE_READLINK=1
+      AC_LIBOBJ([readlink])
+    elif test "$gl_cv_decl_readlink_works" != yes; then
+      REPLACE_READLINK=1
+      AC_LIBOBJ([readlink])
+    fi
+  fi
+])
+
+# Like gl_FUNC_READLINK, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
+[
+  AC_CHECK_FUNCS_ONCE([readlink])
+  gl_PREREQ_READLINK
+])
+
+# Prerequisites of lib/readlink.c.
+AC_DEFUN([gl_PREREQ_READLINK],
+[
+  :
+])
diff --git a/m4/stat.m4 b/m4/stat.m4
new file mode 100644 (file)
index 0000000..27f82d5
--- /dev/null
@@ -0,0 +1,66 @@
+# serial 7
+
+# Copyright (C) 2009-2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STAT],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([lstat])
+  dnl mingw is the only known platform where stat(".") and stat("./") differ
+  AC_CACHE_CHECK([whether stat handles trailing slashes on directories],
+      [gl_cv_func_stat_dir_slash],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+]], [[struct stat st; return stat (".", &st) != stat ("./", &st);]])],
+         [gl_cv_func_stat_dir_slash=yes], [gl_cv_func_stat_dir_slash=no],
+         [case $host_os in
+            mingw*) gl_cv_func_stat_dir_slash="guessing no";;
+            *) gl_cv_func_stat_dir_slash="guessing yes";;
+          esac])])
+  dnl AIX 7.1, Solaris 9 mistakenly succeed on stat("file/")
+  dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/")
+  AC_CACHE_CHECK([whether stat handles trailing slashes on files],
+      [gl_cv_func_stat_file_slash],
+      [touch conftest.tmp
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+]], [[int result = 0;
+      struct stat st;
+      if (!stat ("conftest.tmp/", &st))
+        result |= 1;
+#if HAVE_LSTAT
+      if (!stat ("conftest.lnk/", &st))
+        result |= 2;
+#endif
+      return result;
+           ]])],
+         [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no],
+         [gl_cv_func_stat_file_slash="guessing no"])
+       rm -f conftest.tmp conftest.lnk])
+  case $gl_cv_func_stat_dir_slash in
+    *no) REPLACE_STAT=1
+      AC_DEFINE([REPLACE_FUNC_STAT_DIR], [1], [Define to 1 if stat needs
+        help when passed a directory name with a trailing slash]);;
+  esac
+  case $gl_cv_func_stat_file_slash in
+    *no) REPLACE_STAT=1
+      AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs
+        help when passed a file name with a trailing slash]);;
+  esac
+  if test $REPLACE_STAT = 1; then
+    AC_LIBOBJ([stat])
+    dnl Prerequisites of lib/stat.c.
+    AC_REQUIRE([AC_C_INLINE])
+  fi
+])
index d28b552e905b8bbc29d3ecf5a1dd31eb78cd39a0..25fdada0de7b23477ffa8b158d52c4ef9be72712 100644 (file)
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 36
+# stdlib_h.m4 serial 37
 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -44,6 +44,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
   GNULIB_GRANTPT=0;       AC_SUBST([GNULIB_GRANTPT])
   GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
+  GNULIB_MBTOWC=0;        AC_SUBST([GNULIB_MBTOWC])
   GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
   GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
@@ -62,6 +63,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   GNULIB_SYSTEM_POSIX=0;  AC_SUBST([GNULIB_SYSTEM_POSIX])
   GNULIB_UNLOCKPT=0;      AC_SUBST([GNULIB_UNLOCKPT])
   GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
+  GNULIB_WCTOMB=0;        AC_SUBST([GNULIB_WCTOMB])
   dnl Assume proper GNU behavior unless another module says otherwise.
   HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
   HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
@@ -91,6 +93,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
   REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
+  REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
@@ -98,4 +101,5 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
   REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
   REPLACE_UNSETENV=0;        AC_SUBST([REPLACE_UNSETENV])
+  REPLACE_WCTOMB=0;          AC_SUBST([REPLACE_WCTOMB])
 ])
diff --git a/m4/symlink.m4 b/m4/symlink.m4
new file mode 100644 (file)
index 0000000..917d5f0
--- /dev/null
@@ -0,0 +1,45 @@
+# serial 4
+# See if we need to provide symlink replacement.
+
+dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_SYMLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([symlink])
+  dnl The best we can do on mingw is provide a dummy that always fails, so
+  dnl that compilation can proceed with fewer ifdefs.  On FreeBSD 7.2, AIX 7.1,
+  dnl and Solaris 9, we want to fix a bug with trailing slash handling.
+  if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+    AC_LIBOBJ([symlink])
+  else
+    AC_CACHE_CHECK([whether symlink handles trailing slash correctly],
+      [gl_cv_func_symlink_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+           ]],
+           [[int result = 0;
+             if (!symlink ("a", "conftest.link/"))
+               result |= 1;
+             if (symlink ("conftest.f", "conftest.lnk2"))
+               result |= 2;
+             else if (!symlink ("a", "conftest.lnk2/"))
+               result |= 4;
+             return result;
+           ]])],
+         [gl_cv_func_symlink_works=yes], [gl_cv_func_symlink_works=no],
+         [gl_cv_func_symlink_works="guessing no"])
+      rm -f conftest.f conftest.link conftest.lnk2])
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+      AC_LIBOBJ([symlink])
+    fi
+  fi
+])
index f1cdf510a06685d8bcd3c8ee93516f4d63164cd0..1891d79da43f00925712b820d575c9e3770b07ea 100644 (file)
@@ -1,3 +1,36 @@
+2011-02-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * sedlibmk.inp (BITSIZEOF_PTRDIFF_T, BITSIZEOF_SIG_ATOMIC_T)
+       (BITSIZEOF_SIZE_T, BITSIZEOF_WCHAR_T)
+       (BITSIZEOF_WINT_TGNULIB_FCHMODAT, GNULIB_FSTATAT, GNULIB_FUTIMENS)
+       (GNULIB_LCHMOD, GNULIB_LSTAT, GNULIB_MBTOWC, GNULIB_MKDIRAT)
+       (GNULIB_MKFIFO, GNULIB_MKFIFOAT, GNULIB_MKNOD, GNULIB_MKNODAT)
+       (GNULIB_STAT, GNULIB_UTIMENSAT, GNULIB_WCTOMB, HAVE_FCHMODAT)
+       (HAVE_FSTATAT, HAVE_FUTIMENS, HAVE_INTTYPES_H, HAVE_LCHMOD)
+       (HAVE_LONG_LONG_INT, HAVE_LSTAT, HAVE_MKDIRAT, HAVE_MKFIFO)
+       (HAVE_MKFIFOAT, HAVE_MKNOD, HAVE_MKNODAT)
+       (HAVE_SIGNED_SIG_ATOMIC_T, HAVE_SIGNED_WCHAR_T)
+       (HAVE_SIGNED_WINT_T, HAVE_STDINT_H, HAVE_SYS_BITYPES_H)
+       (HAVE_SYS_INTTYPES_H, HAVE_SYS_TYPES_H)
+       (HAVE_UNSIGNED_LONG_LONG_INT, HAVE_UTIMENSAT, HAVE_WCHAR_H)
+       (MKDIR_P, NEXT_AS_FIRST_DIRECTIVE_STDINT_H)
+       (NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H, NEXT_STDINT_H)
+       (NEXT_SYS_STAT_H, REPLACE_LSTAT, REPLACE_MBTOWC, REPLACE_MKDIR)
+       (REPLACE_MKFIFO, REPLACE_MKNOD, REPLACE_STAT, REPLACE_UTIMENSAT)
+       (REPLACE_WCTOMB, SIG_ATOMIC_T_SUFFIX, SIZE_T_SUFFIX, STDINT_H)
+       (WCHAR_T_SUFFIX, WINT_T_SUFFIX, APPLE_UNIVERSAL_BUILD): New edits.
+       ($(MKDIR_P)): Replace with equivalent DOS command.
+       (gl_LIBOBJS): Add md5.o and filemode.o.
+
+       * sed2v2.inp (BITSIZEOF_PTRDIFF_T, BITSIZEOF_SIG_ATOMIC_T)
+       (BITSIZEOF_SIZE_T, BITSIZEOF_WCHAR_T, BITSIZEOF_WINT_T)
+       (HAVE_LONG_LONG_INT, HAVE_SIGNED_SIG_ATOMIC_T, HAVE_SIGNED_WINT_T)
+       (HAVE_UNSIGNED_LONG_LONG_INT, HAVE_WCHAR_H, HAVE_INTTYPES_H): New
+       edits.
+
+       * depfiles.bat: Create a dummy .Po file only if a file by the same
+       name does not already exist in the deps/ subdirectory.
+
 2011-02-19  Eli Zaretskii  <eliz@gnu.org>
 
        * depfiles.bat: New file.
index 22fcfc3dcd6eba55c76ceeb7b2b9adb4675cd460..901a53cbb0d4f8bc38df6eb75d016118507e6d9b 100644 (file)
@@ -20,6 +20,6 @@ rem   along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
 \r
 rem   ----------------------------------------------------------------------\r
 \r
-echo %1 | sed -e "s,^,@echo # dummy > deps\\," -e "s,\.c,.Po," > tdepfile.bat\r
+echo %1 | sed -e "s,\(.*\)\.c,@if not exist deps\\\1.Po echo # dummy > deps\\\1.Po," > tdepfile.bat\r
 call tdepfile\r
 del tdepfile.bat\r
index 470c1bf60a63b1193d2a1e413673b3589b99bc7e..030b69e583f3e591c81711f242c440b4b47e767b 100644 (file)
 /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
 /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
 /^#undef HAVE_DIRENT_H/s/^.*$/#define HAVE_DIRENT_H 1/
+
+/^#undef BITSIZEOF_PTRDIFF_T *$/s/^.*$/#define BITSIZEOF_PTRDIFF_T 32/
+/^#undef BITSIZEOF_SIG_ATOMIC_T *$/s/^.*$/#define BITSIZEOF_SIG_ATOMIC_T 32/
+/^#undef BITSIZEOF_SIZE_T *$/s/^.*$/#define BITSIZEOF_SIZE_T 32/
+/^#undef BITSIZEOF_WCHAR_T *$/s/^.*$/#define BITSIZEOF_WCHAR_T 16/
+/^#undef BITSIZEOF_WINT_T *$/s/^.*$/#define BITSIZEOF_WINT_T 32/
 /^#undef HAVE__BOOL/s/^.*$/#define HAVE__BOOL 1/
+/^#undef HAVE_LONG_LONG_INT *$/s/^.*$/#define HAVE_LONG_LONG_INT 1/
+/^#undef HAVE_SIGNED_SIG_ATOMIC_T *$/s/^.*$/#define HAVE_SIGNED_SIG_ATOMIC_T 1/
+/^#undef HAVE_SIGNED_WINT_T *$/s/^.*$/#define HAVE_SIGNED_WINT_T 1/
+/^#undef HAVE_UNSIGNED_LONG_LONG_INT *$/s/^.*$/#define HAVE_UNSIGNED_LONG_LONG_INT 1/
+/^#under HAVE_WCHAR_H *$/s/^.*$/#define HAVE_WCHAR_H 1/
 /^#undef inline/s/^.*$/#define inline __inline__/
 /^#undef my_strftime/s/^.*$/#define my_strftime nstrftime/
 /^#undef restrict/s/^.*$/#define restrict __restrict/
@@ -77,6 +88,12 @@ s!^#undef config_opsysfile *$!#define config_opsysfile "s/msdos.h"!
 s!^#undef config_machfile *$!#define config_machfile "m/intel386.h"!
 s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
 s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
+/^#undef HAVE_INTTYPES_H/c\
+#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\
+#define HAVE_INTTYPES_H 1\
+#else\
+#undef HAVE_INTTYPES_H\
+#endif
 /^#undef HAVE_STDINT_H/c\
 #if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\
 #define HAVE_STDINT_H 1\
index b85b20f1491b3426cae2ab28c4bb3fac43d847e6..b71aef985a9352e9c14fb8e0156245b16db16da2 100644 (file)
@@ -47,6 +47,14 @@ am__cd = cd
 /^EXEEXT *=/s/@[^@\n]*@/.exe/
 /^GETOPT_H *=/s/@[^@\n]*@/getopt.h/
 #
+# Gnulib stuff
+/^BITSIZEOF_PTRDIFF_T *=/s/@BITSIZEOF_PTRDIFF_T@/32/
+/^BITSIZEOF_SIG_ATOMIC_T *=/s/@BITSIZEOF_SIG_ATOMIC_T@/32/
+/^BITSIZEOF_SIZE_T *=/s/@BITSIZEOF_SIZE_T@/32/
+/^BITSIZEOF_WCHAR_T *=/s/@BITSIZEOF_WCHAR_T@/16/
+/^BITSIZEOF_WINT_T *=/s/@BITSIZEOF_WINT_T@/32/
+/^APPLE_UNIVERSAL_BUILD *=/s/@APPLE_UNIVERSAL_BUILD@/0/
+#
 # Some GNULIB_* are replaced with zero even though DJGPP does not have
 # these features.  That's because the gnulib replacements cannot
 # possibly work for DJGPP, so we prefer to fail the link than have a
@@ -63,8 +71,11 @@ am__cd = cd
 /^GNULIB_FACCESSAT *=/s/@GNULIB_FACCESSAT@/0/
 /^GNULIB_FCHDIR *=/s/@GNULIB_FCHDIR@/0/
 /^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/
+/^GNULIB_FCHMODAT *=/s/@GNULIB_FCHMODAT@/0/
+/^GNULIB_FSTATAT *=/s/@GNULIB_FSTATAT@/0/
 /^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/
 /^GNULIB_FTRUNCATE *=/s/@GNULIB_FTRUNCATE@/0/
+/^GNULIB_FUTIMENS *=/s/@GNULIB_FUTIMENS@/0/
 /^GNULIB_GETCWD *=/s/@GNULIB_GETCWD@/0/
 /^GNULIB_GETDOMAINNAME *=/s/@GNULIB_GETDOMAINNAME@/0/
 /^GNULIB_GETDTABLESIZE *=/s/@GNULIB_GETDTABLESIZE@/0/
@@ -77,12 +88,20 @@ am__cd = cd
 /^GNULIB_GETSUBOPT *=/s/@GNULIB_GETSUBOPT@/0/
 /^GNULIB_GETUSERSHELL *=/s/@GNULIB_GETUSERSHELL@/0/
 /^GNULIB_GRANTPT *=/s/@GNULIB_GRANTPT@/0/
+/^GNULIB_LCHMOD *=/s/@GNULIB_LCHMOD@/0/
 /^GNULIB_LCHOWN *=/s/@GNULIB_LCHOWN@/0/
 /^GNULIB_LINK *=/s/@GNULIB_LINK@/0/
 /^GNULIB_LINKAT *=/s/@GNULIB_LINKAT@/0/
 /^GNULIB_LSEEK *=/s/@GNULIB_LSEEK@/0/
+/^GNULIB_LSTAT *=/s/@GNULIB_LSTAT@/0/
 /^GNULIB_MALLOC_POSIX *=/s/@GNULIB_MALLOC_POSIX@/0/
+/^GNULIB_MBTOWC *=/s/@GNULIB_MBTOWC@/0/
+/^GNULIB_MKDIRAT *=/s/@GNULIB_MKDIRAT@/0/
 /^GNULIB_MKDTEMP *=/s/@GNULIB_MKDTEMP@/0/
+/^GNULIB_MKFIFO *=/s/@GNULIB_MKFIFO@/0/
+/^GNULIB_MKFIFOAT *=/s/@GNULIB_MKFIFOAT@/0/
+/^GNULIB_MKNOD *=/s/@GNULIB_MKNOD@/0/
+/^GNULIB_MKNODAT *=/s/@GNULIB_MKNODAT@/0/
 /^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/0/
 /^GNULIB_MKOSTEMPS *=/s/@GNULIB_MKOSTEMPS@/0/
 /^GNULIB_MKSTEMP *=/s/@GNULIB_MKSTEMP@/0/
@@ -104,6 +123,7 @@ am__cd = cd
 /^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/
 /^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/
 /^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/
+/^GNULIB_STAT *=/s/@GNULIB_STAT@/0/
 /^GNULIB_STRPTIME *=/s/@GNULIB_STRPTIME@/0/
 /^GNULIB_STRTOD *=/s/@GNULIB_STRTOD@/0/
 /^GNULIB_STRTOLL *=/s/@GNULIB_STRTOLL@/0/
@@ -121,6 +141,8 @@ am__cd = cd
 /^GNULIB_UNLOCKPT *=/s/@GNULIB_UNLOCKPT@/0/
 /^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
 /^GNULIB_USLEEP *=/s/@GNULIB_USLEEP@/0/
+/^GNULIB_UTIMENSAT *=/s/@GNULIB_UTIMENSAT@/0/
+/^GNULIB_WCTOMB *=/s/@GNULIB_WCTOMB@/0/
 /^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/
 /^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/
 /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/
@@ -142,9 +164,12 @@ am__cd = cd
 /^HAVE_EUIDACCESS *=/s/@HAVE_EUIDACCESS@/0/
 /^HAVE_FACCESSAT *=/s/@HAVE_FACCESSAT@/0/
 /^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/
+/^HAVE_FCHMODAT *=/s/@HAVE_FCHMODAT@/0/
 /^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/
+/^HAVE_FSTATAT *=/s/@HAVE_FSTATAT@/0/
 /^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/
 /^HAVE_FTRUNCATE *=/s/@HAVE_FTRUNCATE@/1/
+/^HAVE_FUTIMENS *=/s/@HAVE_FUTIMENS@/0/
 /^HAVE_GETDTABLESIZE *=/s/@HAVE_GETDTABLESIZE@/0/
 /^HAVE_GETGROUPS *=/s/@HAVE_GETGROUPS@/0/
 /^HAVE_GETHOSTNAME *=/s/@HAVE_GETHOSTNAME@/1/
@@ -154,10 +179,19 @@ am__cd = cd
 /^HAVE_GETSUBOPT *=/s/@HAVE_GETSUBOPT@/0/
 /^HAVE_GRANTPT *=/s/@HAVE_GRANTPT@/0/
 /^HAVE_LCHOWN *=/s/@HAVE_LCHOWN@/0/
+/^HAVE_INTTYPES_H *=/s/@HAVE_INTTYPES_H@/HAVE_INTTYPES_H/
+/^HAVE_LCHMOD *=/s/@HAVE_LCHMOD@/0/
 /^HAVE_LINK *=/s/@HAVE_LINK@/1/
 /^HAVE_LINKAT *=/s/@HAVE_LINKAT@/0/
+/^HAVE_LONG_LONG_INT *=/s/@HAVE_LONG_LONG_INT@/1/
+/^HAVE_LSTAT *=/s/@HAVE_LSTAT@/HAVE_LSTAT/
 /^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/
+/^HAVE_MKDIRAT *=/s/@HAVE_MKDIRAT@/0/
 /^HAVE_MKDTEMP *=/s/@HAVE_MKDTEMP@/0/
+/^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/
+/^HAVE_MKFIFOAT *=/s/@HAVE_MKFIFOAT@/0/
+/^HAVE_MKNOD *=/s/@HAVE_MKNOD@/1/
+/^HAVE_MKNODAT *=/s/@HAVE_MKNODAT@/0/
 /^HAVE_MKOSTEMP *=/s/@HAVE_MKOSTEMP@/0/
 /^HAVE_MKOSTEMPS *=/s/@HAVE_MKOSTEMPS@/0/
 /^HAVE_MKSTEMP *=/s/@HAVE_MKSTEMP@/1/
@@ -176,7 +210,11 @@ am__cd = cd
 /^HAVE_REALPATH *=/s/@HAVE_REALPATH@/0/
 /^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/
 /^HAVE_SETENV *=/s/@HAVE_SETENV@/1/
+/^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/
+/^HAVE_SIGNED_WCHAR_T *=/s/@HAVE_SIGNED_WCHAR_T@/0/
+/^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/
 /^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/
+/^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/
 /^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/
 /^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/
 /^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/
@@ -184,13 +222,19 @@ am__cd = cd
 /^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/
 /^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/
 /^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/
+/^HAVE_SYS_BITYPES_H *=/s/@HAVE_SYS_BITYPES_H@/0/
+/^HAVE_SYS_INTTYPES_H *=/s/@HAVE_SYS_INTTYPES_H@/0/
 /^HAVE_SYS_LOADAVG_H *=/s/@HAVE_SYS_LOADAVG_H@/0/
 /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
+/^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/
 /^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/
 /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/
 /^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/
 /^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/
+/^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/
 /^HAVE_USLEEP *=/s/@HAVE_USLEEP@/1/
+/^HAVE_UTIMENSAT *=/s/@HAVE_UTIMENSAT@/0/
+/^HAVE_WCHAR_H *=/s/@HAVE_WCHAR_H@/1/
 /^HAVE_WCHAR_T *=/s/@HAVE_WCHAR_T@/1/
 /^HAVE_XSERVER *=/s/@HAVE_XSERVER@/0/
 /^HAVE__BOOL *=/s/@HAVE__BOOL@/1/
@@ -201,14 +245,20 @@ am__cd = cd
 /^LD_FIRSTFLAG *=/s/@[^@\n]*@//
 /^LIBS *=/s/@[^@\n]*@//
 /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/
+# MKDIR_P lines are edited further below
+/^MKDIR_P *=/s/@MKDIR_P@//
 /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@//
+/^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
+/^NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@/<time.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
 /^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_STDDEF_H *=/s/@[^@\n]*@//
+/^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
+/^NEXT_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_TIME_H *=/s/@[^@\n]*@/<time.h>/
 /^NEXT_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
 /^OBJEXT *=/s/@[^@\n]*@/o/
@@ -223,6 +273,7 @@ am__cd = cd
 /^REPLACE_DUP *=/s/@REPLACE_DUP@/0/
 /^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/
 /^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/
+/^REPLACE_FSTAT *=/s/@REPLACE_FSTAT@/0/
 /^REPLACE_GETCWD *=/s/@REPLACE_GETCWD@/0/
 /^REPLACE_GETDOMAINNAME *=/s/@REPLACE_GETDOMAINNAME@/0/
 /^REPLACE_GETGROUPS *=/s/@REPLACE_GETGROUPS@/0/
@@ -233,7 +284,12 @@ am__cd = cd
 /^REPLACE_LINKAT *=/s/@REPLACE_LINKAT@/0/
 /^REPLACE_LOCALTIME_R *=/s/@REPLACE_LOCALTIME_R@/0/
 /^REPLACE_LSEEK *=/s/@REPLACE_LSEEK@/0/
+/^REPLACE_LSTAT *=/s/@REPLACE_LSTAT@/0/
 /^REPLACE_MALLOC *=/s/@REPLACE_MALLOC@/0/
+/^REPLACE_MBTOWC *=/s/@REPLACE_MBTOWC@/0/
+/^REPLACE_MKDIR *=/s/@REPLACE_MKDIR@/0/
+/^REPLACE_MKFIFO *=/s/@REPLACE_MKFIFO@/0/
+/^REPLACE_MKNOD *=/s/@REPLACE_MKNOD@/0/
 /^REPLACE_MKSTEMP *=/s/@REPLACE_MKSTEMP@/0/
 /^REPLACE_MKTIME *=/s/@REPLACE_MKTIME@/0/
 /^REPLACE_NANOSLEEP *=/s/@REPLACE_NANOSLEEP@/0/
@@ -247,6 +303,7 @@ am__cd = cd
 /^REPLACE_RMDIR *=/s/@REPLACE_RMDIR@/0/
 /^REPLACE_SETENV *=/s/@REPLACE_SETENV@/0/
 /^REPLACE_SLEEP *=/s/@REPLACE_SLEEP@/0/
+/^REPLACE_STAT *=/s/@REPLACE_STAT@/0/
 /^REPLACE_STRTOD *=/s/@REPLACE_STRTOD@/0/
 /^REPLACE_SYMLINK *=/s/@REPLACE_SYMLINK@/0/
 /^REPLACE_TIMEGM *=/s/@REPLACE_TIMEGM@/0/
@@ -255,14 +312,21 @@ am__cd = cd
 /^REPLACE_UNLINKAT *=/s/@REPLACE_UNLINKAT@/0/
 /^REPLACE_UNSETENV *=/s/@REPLACE_UNSETENV@/0/
 /^REPLACE_USLEEP *=/s/@REPLACE_USLEEP@/0/
+/^REPLACE_UTIMENSAT *=/s/@REPLACE_UTIMENSAT@/0/
+/^REPLACE_WCTOMB *=/s/@REPLACE_WCTOMB@/0/
 /^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/
+/^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
+/^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^STDBOOL_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
+/^STDINT_H *=/s/@[^@\n]*@/stdint.h/
 /^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@[^@\n]*@/0/
-/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o/
+/^WCHAR_T_SUFFIX *=/s/@WCHAR_T_SUFFIX@/h/
+/^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
+/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o md5.o filemode.o/
 /^srcdir *=/s/@[^@\n]*@/./
 /^top_srcdir *=/s/@[^@\n]*@/../
 /^top_builddir *=/s/@[^@\n]*@/../
@@ -310,3 +374,4 @@ s/\.in-h\;  *\\$/.in-h >> $@-t/
 /^unistd\.h:/,/^       [       ]*mv /{
   s/'\; \\ *$/' >> $@-t/
 }
+s!\$(MKDIR_P)[         ][      ]*sys!command.com /c "if not exist sys\stat.h md sys"!
index 79d9a2f382c8210e0cf04482622d9ea2f7dde667..d16785e56c1eb7916beeb687a55851bdfd350263 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * GNUstep/Emacs.base/Resources/Info-gnustep.plist:
+       Refer to etc/NEXTSTEP rather than emacs-app.sf.net.
+
 2011-01-02  Glenn Morris  <rgm@gnu.org>
 
        * Cocoa/Emacs.base/Contents/Info.plist:
index f4c5b050b69b68bc1af97ceab5048f0db99702d6..fe5acce2c3c8422baf79dae8c878923baabab4b7 100644 (file)
                        name = Products;
                        sourceTree = "<group>";
                };
-               289FC26B00C69A287F000001 /* NeXTStep */ = {
+               289FC26B00C69A287F000001 /* NeXTstep */ = {
                        isa = PBXGroup;
                        children = (
                                3C4D6D710DE50D5D00B20D4E /* nsfont.m */,
                                090AF68100C61DCD7F000001 /* nsselect.m */,
                                090AF68300C61DCD7F000001 /* nsterm.m */,
                        );
-                       name = NeXTStep;
+                       name = NeXTstep;
                        sourceTree = "<group>";
                };
                29B97314FDCFA39411CA2CEA /* Emacs */ = {
                        isa = PBXGroup;
                        children = (
-                               289FC26B00C69A287F000001 /* NeXTStep */,
+                               289FC26B00C69A287F000001 /* NeXTstep */,
                                3C15C23E0902E6B000A8542F /* emacs-hdr */,
                                3CDCED4D0902EA6800B2EF7E /* emacs-src */,
                                29B97317FDCFA39411CA2CEA /* Resources */,
index e92d45ae686d1480569dad601d49fe9bd440b144..9c893ed4e3d332ee546767bdcc7f59b23ec0c3b8 100644 (file)
@@ -7,9 +7,9 @@
        "Adrian Robert (GNUstep)",
        "Christophe de Dinechin (MacOS X)",
        "Scott Bender (OpenStep)",
-       "Christian Limpach (NeXTStep)",
-       "Carl Edman (NeXTStep)",
-       "..see http://emacs-app.sf.net/authorship.html"
+       "Christian Limpach (NeXTstep)",
+       "Carl Edman (NeXTstep)",
+       "..see etc/NEXTSTEP"
     );
     Copyright = "Copyright (C) 2011 Free Software Foundation, Inc.";
     CopyrightDescription = "Released under the GNU General Public License Version 3 or later";
index f20fbd1d31ae0ba42bead44520ebf0af0b6d8898..e55fc52a487ef7d412fc096305170bb7489c0510 100644 (file)
@@ -1,3 +1,11 @@
+2011-02-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * inc/unistd.h (readlink, symlink): Declare prototypes.
+
+2011-02-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.nt (nlink_t): Define.
+
 2011-02-21  Christoph Scholtes  <cschol2112@gmail.com>
 
        * inc/stdint.h: New file, to support compilation with tool chains
index b5ef24fc18b437d99e360a8b55d9288ceda843d4..26fbc1c67c5be0f400663f13f6e42bb447f75854 100644 (file)
@@ -411,6 +411,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define my_strftime nstrftime   /* for strftime.c */
 
+/* Define to the type of st_nlink in struct stat, or a supertype. */
+#define nlink_t short
+
 #ifndef WINDOWSNT
 /* Some of the files of Emacs which are intended for use with other
    programs assume that if you have a config.h file, you must declare
index 7e77f95da4ca33e6481a203eb5a1d49be5a27c14..fb1f1c4b3bfc8077fc01810b1995c0ff74926946 100644 (file)
@@ -1,2 +1,10 @@
 /* Fake unistd.h: config.h already provides most of the relevant things. */
 
+#ifndef _UNISTD_H
+#define _UNISTD_H
+
+extern ssize_t readlink (const char *, char *, size_t);
+extern int symlink (char const *, char const *);
+
+#endif /* _UNISTD_H */
+
index 869ab5b07d8fb17b7efeeaf4e7940068f80135ca..6152b4c76afcea57117bfedd0697aaadfbf33d46 100644 (file)
 
        * w32reg.c (w32_get_rdb_resource): New function.
        (x_get_string_resource): Use it, so resources passed with -xrm
-       supercede the ones in the registry.
+       supersede the ones in the registry.
 
 2003-03-04  Jan Djärv  <jan.h.d@swipnet.se>
 
        recursive call unless that arg is non-nil.
        (where_is_internal): New argument no_remap.  Callers changed.
        Call recursively to find original key bindings for a remapped
-       comand unless that arg is non-nil.
+       command unless that arg is non-nil.
        (Fwhere_is_internal): New optional argument NO-REMAP.
        Doc updated.  Callers changed.  Pass arg to where_is_internal.
 
index a361142faaee4a008ebd5324dc6c7ad9b69a15cb..beb7a0a2ae16548651b2cfe6f44549b7e8594510 100644 (file)
        * fileio.c: There are two versions of Fexpand_file_name defined
        here; the latter is inside a `#if 0' clause.  Change its DEFUN to
        a DEAFUN, so that its docstring doesn't make it into the DOC file
-       and supercede the real docstring.
+       and supersede the real docstring.
 
        * callint.c (Fcall_interactively): For the 'K' interactive spec,
        set varies[i] to -1, indicating that the mouse click should be
        wait_reading_process_input, instead of just the first two.
 
        * process.c (wait_reading_process_input): Remove support for
-       only waiting for mouse input, since that has been superceded.
+       only waiting for mouse input, since that has been superseded.
        This removes X dependencies from process.c, and eliminates some
        references to code that should only exist when using X10.
 
 
        * minibuf.c (temp_echo_area_glyphs): Clear echo_area_glyphs and
        previous_echo_glyphs, so the message we're displaying will
-       supercede any existing message.
+       supersede any existing message.
 
        * keyboard.c: Removed external declaration of echo_area_glyphs,
        since it's declared in window.h.
index 9713a4a6ed54db65c973385313dfa365410deaae..a96edcdfdca335374a21322c44f8aaf0a749348e 100644 (file)
@@ -1,7 +1,193 @@
+2011-03-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       current_column: Now returns EMACS_INT, fixing some iftc
+       that was introduced in the 2002-06-02 change "temporarily"; see
+       <http://lists.gnu.org/archive/html/emacs-devel/2002-06/msg00039.html>.
+       * bytecode.c (Fbyte_code): Don't cast current_column () to int.
+       * cmds.c (internal_self_insert): Likewise.
+       * indent.c (Fcurrent_column): Likewise.
+       * keymap.c (describe_command): Likewise.
+       * minibuf.c (read_minibuf): Likewise.
+       * indent.c (Fcurrent_indentation): Don't cast position_indentation ()
+       to int.
+       * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec):
+       Likewise.
+       * cmds.c (internal_self_insert): Declare locals to be EMACS_INT,
+       not int or double, if they might contain a column number.
+       * indent.c (current_column, Findent_to, indented_beyond_p):
+       (compute_motion, vmotion): Likewise.
+       * keymap.c (describe_command): Likewise.
+       * xdisp.c (pint2str): Likewise.
+       * indent.c (last_known_column): Now EMACS_INT, not int.
+       * minibuf.c (minibuf_prompt_width): Likewise.
+       * indent.c (current_column, current_column_1, position_indentation):
+       Return EMACS_INT, not double.
+       * lisp.h (current_column): Likewise.
+       * indent.c (indented_beyond_p): Last arg is now EMACS_INT, not double.
+       All callers changed.
+       * lisp.h (indented_beyond_p): Likewise.
+
+       * minibuf.c (minibuf_prompt, minibuf_prompt_width): Move here
+       from xdisp.c, and make static, since these are used only here.
+       * window.h, xdisp.c (minibuf_prompt, minibuf_prompt_width):
+       Remove decls.
+
+       * cmds.c (internal_self_insert): Reindent to match Emacs style.
+       * xdisp.c (redisplay_window): Likewise.
+
+       * xdisp.c: Rename or move local decls to avoid shadowing.
+       (init_iterator, handle_fontified_prop, handle_single_display_spec):
+       (message_dolog, message_with_string, redisplay_internal):
+       (redisplay_window, try_window_reusing_current_matrix, try_window_id):
+       (compute_line_metrics, highlight_trailing_whitespace, cursor_row_p):
+       (display_line, display_string, rows_from_pos_range):
+       (mouse_face_from_buffer_pos, note_mouse_highlight, expose_frame):
+       Rename or move local decls.
+       * xdisp.c (BUILD_GLYPHLESS_GLYPH_STRING): Omit unused local var.
+       (produce_glyphless_glyph): Make a pointer "const"
+       since it might point to immutable storage.
+       (update_window_cursor):  Now static, since it's not used elsewhere.
+       (SKIP_GLYPHS): Removed unused macro.
+
+2011-03-06  Michael Shields  <shields@msrl.com>  (tiny change)
+
+       * window.c (Fnext_window): Doc fix.  (Bug#5567)
+
+2011-03-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * nsterm.m (ns_draw_window_cursor): Fix typo in 2011-02-23 commit.
+
+2011-03-02  Ken Brown  <kbrown@cornell.edu>
+
+       * sheap.c (STATIC_HEAP_SIZE): Increase to 13MB.
+
+2011-03-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around some portability problems with symlinks.
+
+       * fileio.c (Fmake_symbolic_link): Treat ENOSYS specially, and
+       generate a special message for it.  Suggested by Eli Zaretskii in
+       <http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg00995.html>.
+       (Frename_file, Fmake_symbolic_link, Ffile_symlink_p):
+       Simplify the code by assuming that the readlink and symlink calls
+       exist, even if they always fail on this host.
+       (Ffile_readable_p): Likewise, for fifos.
+       * config.in: Regenerate.
+
+2011-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.c (store_frame_param): Don't store value directly in
+       buffer_list and buried_buffer_list; copy the list and remove dead
+       buffers (Bug#7898).
+
+2011-02-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (readlink) [DJGPP < 2.04]: New stub function.
+
+       * msdos.h (readlink) [DJGPP < 2.04]: Declare prototype.
+
+       * w32.c (symlink, readlink): New stub functions.
+
+2011-02-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * scroll.c (CHECK_BOUNDS): #define only if GLYPH_DEBUG.
+       This avoids a gcc warning in some configurations.
+
+       * frame.c (x_set_screen_gamma): Rename local to avoid shadowing.
+
+       * frame.h: Avoid gcc -Wmissing-prototypes diagnostics.
+       (set_menu_bar_lines, x_get_resource_string): New decls.
+       * msdos.c (set_menu_bar_lines): Omit decl.
+
+       * dispextern.h (struct glyph): Make u.img_id int, not unsigned.
+       It's always given int values and used as an int.  This suppresses
+       a gcc "comparison of unsigned expression >= 0" warning in some
+       configurations.
+
+       * dispnew.c: Rename locals to avoid shadowing.
+       (update_text_area, scrolling_window, update_frame_1): Rename locals.
+
+2011-02-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dispnew.c: Fix problems uncovered by gcc -Wstrict-prototypes.
+       (copy_glyph_row_contents): Remove; not used.
+       (frame_row_to_window, check_current_matrix_flags):
+       (window_change_signal): Now static, since they're not used elsewhere.
+       (check_current_matrix_flags): Surround with "#if 0", since its
+       only use is in a comment.  Maybe both the comment and the "#if 0"
+       stuff should be removed?
+
+       * dispnew.c: Fix problem uncovered by gcc -Wunused-variable.
+       (adjust_frame_glyphs_for_window_redisplay): Make 'w' local to the
+       contexts that actually need it.
+
+2011-02-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * s/msdos.h (HAVE_LSTAT): Define for DJGPP >= 2.04.
+       (lstat): Define for DJGPP < 2.04.
+
+2011-02-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dired.c (Ffile_attributes): Increase size of modes from 10 to 12
+       as per recent filemodestring API change.  Reported by Jonas Öster in
+       <http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg01069.html>.
+
+2011-02-23  Ben Key  <bkey76@gmail.com>  (tiny change)
+
+       * nsterm.m (ns_draw_window_cursor): Obey the cursor_width argument
+       directly, for bar cursors.
+
+2011-02-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (set_frame_cursor_types): Don't write an undefined value
+       into the frame's cursor_width.
+
+2011-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * print.c (print_object): Never print old-style backquotes.
+       Obey escapeflag for hash tables as well.
+
+2011-02-23  Kenichi Handa  <handa@m17n.org>
+
+       * font.c (font_open_entity): Be sure to set scaled_pixel_size.
+       (font_find_for_lface): Check if attrs[LFACE_HEIGHT_INDEX] is integer.
+
+2011-02-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dired.c (Ffile_attributes): Simplify and avoid #ifdef.
+
+2011-02-22  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
+
+       * lread.c (openp): Correct Boolean typo in last commit.
+
+2011-02-22  Adrian Robert  <Adrian.B.Robert@gmail.com>
+
+       * nsterm.m (EmacsView-keyDown:): Don't pass shift-only-modified
+       key to Emacs, treat as unmodified (go to input manager processing).
+
+2011-02-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume S_ISLNK etc. work, since gnulib supports this.
+       * config.in: Regenerate.
+       * dired.c (lstat): Remove.
+       (file_name_completion): Assume S_ISDIR works.
+       (file_name_completion_stat): Assume S_ISLNK works.
+       Do not bother calling stat unless lstat says it's a symlink.
+       * fileio.c (S_ISLNK, S_ISFIFO, S_ISREG, lstat): Remove.
+       (Fcopy_file): Assume S_ISREG and S_ISLNK work.
+       (check_writable, Ffile_writable_p, Fset_file_times):
+       Assume S_ISDIR works.
+       (Ffile_readable_p): Use S_IFIFO, not S_ISFIFO, to guess whether
+       fifos exist.
+       (Ffile_regular_p, Finsert_file_contents): Assume S_ISREG works.
+       * filelock.c (S_ISLNK): Remove.
+       * lread.c (openp): Assume S_ISDIR works.
+       * xrdb.c (S_ISDIR): Remove.
+
 2011-02-21  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in ($(BLD)/filemode.$(O)): Move recipe to
-       lib/makefilw.w32-in.
+       lib/makefile.w32-in.
        ($(BLD)/dired.$(O)): Depend on $(EMACS_ROOT)/lib/filemode.h.
        (GLOBAL_SOURCES): Remove filemode.c.
        (OBJ1): Remove $(BLD)/filemode.$(O).
        * makefile.w32-in ($(BLD)/fns.$(O)): Depend on
        $(EMACS_ROOT)/lib/md5.h and on stamp_BLD.
 
-2011-02-20  Christoph Scholtes <cschol2112@gmail.com>
+2011-02-20  Christoph Scholtes  <cschol2112@gmail.com>
 
        * makefile.w32-in: Remove md5.$(O).
        ($(BLD)/md5.$(O)): Remove prerequisites, moved to
        to const char *, since they're usually low-level C strings, and
        this stays compatible with C89 pointer rules.  All callers changed.
 
-       * charset.c: conform to C89 pointer rules
+       * charset.c: Conform to C89 pointer rules.
        (define_charset_internal): Switch between char * and unsigned char *.
 
-       * xmenu.c: conform to C89 const rules
+       * xmenu.c: Conform to C89 const rules.
        (xmenu_show, xdialog_show): Declare local var as char *, not
        const char *, to stay compatible with C89 const rules.
 
-       * xdisp.c: conform to C89 pointer rules
+       * xdisp.c: Conform to C89 pointer rules.
        (store_mode_line_noprop, display_string, reseat_to_string):
        (c_string_pos, number_of_chars, message_dolog):
        (message_log_check_duplicate, set_message_1, store_mode_line_noprop):
        Switch between char * and unsigned char * to stay compatible wth
        C89 pointer rules.
 
-       * regex.c: conform to C89 pointer rules
+       * regex.c: Conform to C89 pointer rules.
        (re_wctype): Add cast, as C89 does not allow assigning between
        char * and unsigned char *.
        (regex_compile): Likewise.
        (ns_string_to_pasteboard_internal): Use initWithBytesNoCopy
        instead of stringWithUTF8String  (Bug#7934).
 
-2011-01-29  Anders Lindgren  <andlind@gmail.com> (tiny change)
+2011-01-29  Anders Lindgren  <andlind@gmail.com>  (tiny change)
 
-        * nsfont.m (nsfont_open): Ensure that fonts with inexact
-        descenders would not become one pixel too tall (Bug#7887).
+       * nsfont.m (nsfont_open): Ensure that fonts with inexact
+       descenders would not become one pixel too tall (Bug#7887).
 
 2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 
        (x_underline_at_descent_line): Remove declaration.
        (syms_of_nsterm): Remove & from DEFVAR_LISP and DEFVAR_BOOL.
 
-       * nsselect.m (Vns_sent_selection_hooks, Vns_lost_selection_hooks
+       * nsselect.m (Vns_sent_selection_hooks, Vns_lost_selection_hooks)
        (Vselection_alist, Vselection_converter_alist): Move to globals.h.
        (syms_of_nsselect): Remove & from DEFVAR_LISP.
 
        f_Vns_lost_selection_hooks, f_Vselection_alist, f_Vns_reg_to_script
        and corresponding defines.
 
-
 2011-01-19  Sam Steingold  <sds@gnu.org>
 
        * w32.c (check_windows_init_file): Remove declarations of
        * nsmenu.m: Use #include <config.h> instead of "config.h".
 
        * term.c (Qglyphless_char,last_glyphless_glyph_frame)
-       (last_glyphless_glyph_face_id. last_glyphless_glyph_merged_face_id):
+       (last_glyphless_glyph_face_id, last_glyphless_glyph_merged_face_id):
        Move declarations ...
        * lisp.h (Qglyphless_char,last_glyphless_glyph_frame)
-       (last_glyphless_glyph_face_id. last_glyphless_glyph_merged_face_id):
+       (last_glyphless_glyph_face_id, last_glyphless_glyph_merged_face_id):
        ... here.
 
        * emacs.c (gdb_use_union, gdb_valbits,gdb_gctypebits)
        (Qonly): Remove declarations.
        * lisp.h (pending_malloc_warning, Vsaved_region_selection)
        (Vselect_active_regions):
-       * keyboard.h (timers_run):  Add declarations.
+       * keyboard.h (timers_run): Add declarations.
 
        * strftime.c (my_strftime_gmtime_r, my_strftime_localtime_r)
        (tm_diff): Convert definitions to standard C.
 
 2010-11-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * keyboard.c (modify_event_symbol) : Add const to array elements of
+       * keyboard.c (modify_event_symbol): Add const to array elements of
        arg NAME_TABLE.
        (lispy_accent_keys, lispy_function_keys, lispy_multimedia_keys)
        (lispy_kana_keys, iso_lispy_function_keys, lispy_wheel_names)
        (x_set_sticky): Pass atoms to set_wm_state.
        (do_ewmh_fullscreen): Ditto.
 
-
        * xterm.h (x_display_info): Add Xatom_net_supported,
        Xatom_net_supporting_wm_check, Xatom_net_active_window,
        Xatom_net_wm_window_opacity, Xatom_XEMBED_INFO, SM_CLIENT_ID.
        * coding.c (coding-category-list): Refer to set-coding-system-priority
        instead of the obsolete set-coding-priority in the doc string.
 
-
 2010-11-04  Adrian Robert  <Adrian.B.Robert@gmail.com>
 
-       * nsfont.m (nsfont_draw):  Correct previous patch to return
+       * nsfont.m (nsfont_draw): Correct previous patch to return
        correct value.
        * nsimage.m (EmacsImage-setXBMColor:): Correct previous patch:
        don't change the method signature, change the return.
        (Qglyphless_char_display, Qhexa_code, Qempty_box, Qthin_space)
        (Qzero_width): New variables.
        (THIN_SPACE_WIDTH): New macro.
-       (lookup_glyphless_char_display): New funciton.
+       (lookup_glyphless_char_display): New function.
        (last_glyphless_glyph_frame, last_glyphless_glyph_face_id)
        (last_glyphless_glyph_merged_face_id): New variables.
        (get_next_display_element): Check glyphless characters.
 2010-10-12  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (Qleft): Declare.
-       (ns_right_alternate_modifier): New variable
+       (ns_right_alternate_modifier): New variable.
        (NSRightAlternateKeyMask): New define.
        (EV_MODIFIERS): Parse NSRightAlternateKeyMask if
        ns_right_alternate_modifier isn't Qleft.
        * Makefile.in (temacs): Use $(ALL_CFLAGS) on the link line.
        (PROFILING_LDFLAGS): Remove, not needed anymore.
 
-       * Makefile.in: Use $(...) everywhere instead of ${...}
+       * Makefile.in: Use $(...) everywhere instead of ${...}.
        (CRT_DIR): Move near potential user.
        (START_FILE): Move near CRT_DIR, it might use it.
 
 
 2010-08-16  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * nsselect.m: include keyboard.h for QPRIMARY, remove its
+       * nsselect.m: Include keyboard.h for QPRIMARY, remove its
        declaration (Bug#6863).
        (syms_of_nsselect): Don't intern QPRIMARY.
 
        * w32menu.c (simple_dialog_show): Use unicode message box if available.
        (MessageBoxW_Proc): New function typedef.
        (unicode-message-box): New function pointer.
-       (globals_of_w32menu): Import it from user32.dll. (Bug#5629)
+       (globals_of_w32menu): Import it from user32.dll.  (Bug#5629)
 
 2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 
 
        * eval.c: Fix indentation problem.
 
-       * keyboard.c: Include "process.h"
+       * keyboard.c: Include "process.h".
 
        * eval.c: Remove obsolete noinline declaration.
        * fns.c: Likewise.
 
 2010-04-30  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * xsettings.c: include limits.h and update file comment.
+       * xsettings.c: Include limits.h and update file comment.
 
 2010-04-30  Glenn Morris  <rgm@gnu.org>
 
        Qtool_bar_style.  Initialize current_tool_bar_style to nil.
        defsubr Stool_bar_get_system_style.  Fprovide on
        dynamic-setting.
-       Move misplaced HAVE_GCONF
+       Move misplaced HAVE_GCONF.
 
        * xsettings.h (Ftool_bar_get_system_style): Declare.
 
        * menu.c (digest_single_submenu): If USE_LUCID and HAVE_XFT, encode
        menu items in UTF-8.
 
-       * xmenu.c: include xsettings.h and xlwmenu.h if USE_LUCID.
+       * xmenu.c: Include xsettings.h and xlwmenu.h if USE_LUCID.
        (apply_systemfont_to_menu): New function.
        (set_frame_menubar, create_and_show_popup_menu):
        Call apply_systemfont_to_menu.
        rather than appending it.
        (handle_stop_backwards): New function.
        (reseat_1, pop_it, push_it): Set prev_stop and base_level_stop.
-       (reseat): call handle_stop_backwards to recompute prev_stop and
+       (reseat): Call handle_stop_backwards to recompute prev_stop and
        base_level_stop for the new position.
        (handle_invisible_prop): Under bidi iteration, skip invisible text
        using bidi_get_next_char_visually.  If we are `reseat'ed, init the
index 9740fe8f1d55f4ace1d66870396e2734c7133b73..eeacf65bd5c6d620d01cc128979f85333fc9ee73 100644 (file)
@@ -1520,7 +1520,7 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
   bidi_check_type (bidi_it->type);
 
   /* For L1 below, we need to know, for each WS character, whether
-     it belongs to a sequence of WS characters preceeding a newline
+     it belongs to a sequence of WS characters preceding a newline
      or a TAB or a paragraph separator.  */
   if (bidi_it->orig_type == NEUTRAL_WS
       && bidi_it->next_for_ws.type == UNKNOWN_BT)
index dbab02886e2f1880e85faa95fb5186df86af34b3..b19f9687cdcf8306f8364793509e51d9d106df44 100644 (file)
@@ -1406,7 +1406,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
          {
            Lisp_Object v1;
            BEFORE_POTENTIAL_GC ();
-           XSETFASTINT (v1, (int) current_column ()); /* iftc */
+           XSETFASTINT (v1, current_column ());
            AFTER_POTENTIAL_GC ();
            PUSH (v1);
            break;
index f12c4f28d313339a3cc57b3baef3c391854149e5..6f3312fec290233aea3b4baa195e2177e57f1f1d 100644 (file)
@@ -761,7 +761,7 @@ str_as_unibyte (unsigned char *str, EMACS_INT bytes)
    corresponding byte and store in DST.  CHARS is the number of
    characters in SRC.  The value is the number of bytes stored in DST.
    Usually, the value is the same as CHARS, but is less than it if SRC
-   contains a non-ASCII, non-eight-bit characater.  If ACCEPT_LATIN_1
+   contains a non-ASCII, non-eight-bit character.  If ACCEPT_LATIN_1
    is nonzero, a Latin-1 character is accepted and converted to a byte
    of that character code.
    Note: Currently the arg ACCEPT_LATIN_1 is not used.  */
index 336bf1154f9259bab5a2c381d097587ffea092e4..5e6884c0807e3e64c73d6dee511c4969eed37629 100644 (file)
@@ -381,33 +381,37 @@ internal_self_insert (int c, EMACS_INT n)
        {
          EMACS_INT pos = PT;
          EMACS_INT pos_byte = PT_BYTE;
+
+         /* FIXME: Check for integer overflow when calculating
+            target_clm and actual_clm.  */
+
          /* Column the cursor should be placed at after this insertion.
             The correct value should be calculated only when necessary.  */
-         int target_clm = ((int) current_column () /* iftc */
-                           + n * (int) XINT (Fchar_width (make_number (c))));
-
-             /* The actual cursor position after the trial of moving
-                to column TARGET_CLM.  It is greater than TARGET_CLM
-                if the TARGET_CLM is middle of multi-column
-                character.  In that case, the new point is set after
-                that character.  */
-             int actual_clm
-               = (int) XFASTINT (Fmove_to_column (make_number (target_clm),
-                                                  Qnil));
-
-             chars_to_delete = PT - pos;
-
-             if (actual_clm > target_clm)
-           { /* We will delete too many columns.  Let's fill columns
-                    by spaces so that the remaining text won't move.  */
+         EMACS_INT target_clm = (current_column ()
+                                 + n * XINT (Fchar_width (make_number (c))));
+
+         /* The actual cursor position after the trial of moving
+            to column TARGET_CLM.  It is greater than TARGET_CLM
+            if the TARGET_CLM is middle of multi-column
+            character.  In that case, the new point is set after
+            that character.  */
+         EMACS_INT actual_clm
+           = XFASTINT (Fmove_to_column (make_number (target_clm), Qnil));
+
+         chars_to_delete = PT - pos;
+
+         if (actual_clm > target_clm)
+           {
+             /* We will delete too many columns.  Let's fill columns
+                by spaces so that the remaining text won't move.  */
              EMACS_INT actual = PT_BYTE;
              DEC_POS (actual);
              if (FETCH_CHAR (actual) == '\t')
                /* Rather than add spaces, let's just keep the tab. */
                chars_to_delete--;
              else
-                 spaces_to_insert = actual_clm - target_clm;
-               }
+               spaces_to_insert = actual_clm - target_clm;
+           }
 
          SET_PT_BOTH (pos, pos_byte);
        }
index 1fd1f89ede35fff1334c2d9e2df5abf00bf65d2e..7f33727c0b1b427fcc6386211c7f3011d4c5a46c 100644 (file)
@@ -465,6 +465,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the `lrand48' function. */
 #undef HAVE_LRAND48
 
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
 /* Define to 1 if using libm17n-flt. */
 #undef HAVE_M17N_FLT
 
@@ -573,6 +576,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the `random' function. */
 #undef HAVE_RANDOM
 
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
 /* Define to 1 if you have the `recvfrom' function. */
 #undef HAVE_RECVFROM
 
@@ -693,6 +699,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if struct stat has an st_dm_mode member. */
 #undef HAVE_ST_DM_MODE
 
+/* Define to 1 if you have the `symlink' function. */
+#undef HAVE_SYMLINK
+
 /* Define to 1 if you have the `sync' function. */
 #undef HAVE_SYNC
 
@@ -894,6 +903,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if localtime caches TZ. */
 #undef LOCALTIME_CACHE
 
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+   slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
 /* String giving fallback POP mail host. */
 #undef MAILHOST
 
@@ -965,10 +978,21 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    'ptrdiff_t'. */
 #undef PTRDIFF_T_SUFFIX
 
+/* Define to 1 if readlink fails to recognize a trailing slash. */
+#undef READLINK_TRAILING_SLASH_BUG
+
 /* Define REL_ALLOC if you want to use the relocating allocator for buffer
    space. */
 #undef REL_ALLOC
 
+/* Define to 1 if stat needs help when passed a directory name with a trailing
+   slash */
+#undef REPLACE_FUNC_STAT_DIR
+
+/* Define to 1 if stat needs help when passed a file name with a trailing
+   slash */
+#undef REPLACE_FUNC_STAT_FILE
+
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
index b01ce8d4d8fb161eebc927fc8467ae9280ee239d..96063680d4def0a95e4b07b23ee451dd4e58c45f 100644 (file)
@@ -84,13 +84,6 @@ extern struct re_pattern_buffer *compile_pattern (Lisp_Object,
                                                  struct re_registers *,
                                                  Lisp_Object, int, int);
 
-/* if system does not have symbolic links, it does not have lstat.
-   In that case, use ordinary stat instead.  */
-
-#ifndef S_IFLNK
-#define lstat stat
-#endif
-
 Lisp_Object Qdirectory_files;
 Lisp_Object Qdirectory_files_and_attributes;
 Lisp_Object Qfile_name_completion;
@@ -539,7 +532,7 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, int all_flag, int v
       if (file_name_completion_stat (encoded_dir, dp, &st) < 0)
        continue;
 
-      directoryp = ((st.st_mode & S_IFMT) == S_IFDIR);
+      directoryp = S_ISDIR (st.st_mode);
       tem = Qnil;
       /* If all_flag is set, always include all.
         It would not actually be helpful to the user to ignore any possible
@@ -843,20 +836,16 @@ file_name_completion_stat (Lisp_Object dirname, DIRENTRY *dp, struct stat *st_ad
   memcpy (fullname + pos, dp->d_name, len);
   fullname[pos + len] = 0;
 
-#ifdef S_IFLNK
   /* We want to return success if a link points to a nonexistent file,
      but we want to return the status for what the link points to,
      in case it is a directory.  */
   value = lstat (fullname, st_addr);
-  stat (fullname, st_addr);
-  return value;
-#else
-  value = stat (fullname, st_addr);
+  if (value == 0 && S_ISLNK (st_addr->st_mode))
+    stat (fullname, st_addr);
 #ifdef MSDOS
   _djstat_flags = save_djstat_flags;
 #endif /* MSDOS */
   return value;
-#endif /* S_IFLNK */
 }
 \f
 Lisp_Object
@@ -948,7 +937,11 @@ so last access time will always be midnight of that day.  */)
   Lisp_Object dirname;
   struct stat sdir;
 #endif /* BSD4_2 */
-  char modes[10];
+
+  /* An array to hold the mode string generated by filemodestring,
+     including its terminating space and null byte.  */
+  char modes[sizeof "-rwxr-xr-x "];
+
   Lisp_Object handler;
   struct gcpro gcpro1;
   char *uname = NULL, *gname = NULL;
@@ -974,17 +967,8 @@ so last access time will always be midnight of that day.  */)
   if (lstat (SSDATA (encoded), &s) < 0)
     return Qnil;
 
-  switch (s.st_mode & S_IFMT)
-    {
-    default:
-      values[0] = Qnil; break;
-    case S_IFDIR:
-      values[0] = Qt; break;
-#ifdef S_IFLNK
-    case S_IFLNK:
-      values[0] = Ffile_symlink_p (filename); break;
-#endif
-    }
+  values[0] = (S_ISLNK (s.st_mode) ? Ffile_symlink_p (filename)
+              : S_ISDIR (s.st_mode) ? Qt : Qnil);
   values[1] = make_number (s.st_nlink);
 
   if (!(NILP (id_format) || EQ (id_format, Qinteger)))
index 6bb0c3a6aae33bd6a0efe8fe1c6d46c56defe786..37ae7ee5fd5a0153dc4bb40d16fb4484cd3883a5 100644 (file)
@@ -431,7 +431,7 @@ struct glyph
     } cmp;
 
     /* Image ID for image glyphs (type == IMAGE_GLYPH).  */
-    unsigned img_id;
+    int img_id;
 
     /* Sub-structure for type == STRETCH_GLYPH.  */
     struct
index 4e068bde53614ca54c776209f17d42bfc67465a8..1408bea2fc63acf561dba8a018fdc544eaf77096 100644 (file)
@@ -1129,32 +1129,6 @@ copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from)
 }
 
 
-/* Copy contents of glyph row FROM to glyph row TO.  Glyph pointers in
-   TO and FROM are left unchanged.  Glyph contents are copied from the
-   glyph memory of FROM to the glyph memory of TO.  Increment buffer
-   positions in row TO by DELTA/ DELTA_BYTES.  */
-
-void
-copy_glyph_row_contents (struct glyph_row *to, struct glyph_row *from,
-                        EMACS_INT delta, EMACS_INT delta_bytes)
-{
-  int area;
-
-  /* This is like a structure assignment TO = FROM, except that
-     glyph pointers in the rows are left unchanged.  */
-  copy_row_except_pointers (to, from);
-
-  /* Copy glyphs from FROM to TO.  */
-  for (area = 0; area < LAST_AREA; ++area)
-    if (from->used[area])
-      memcpy (to->glyphs[area], from->glyphs[area],
-             from->used[area] * sizeof (struct glyph));
-
-  /* Increment buffer positions in TO by DELTA.  */
-  increment_row_positions (to, delta, delta_bytes);
-}
-
-
 /* Assign glyph row FROM to glyph row TO.  This works like a structure
    assignment TO = FROM, except that glyph pointers are not copied but
    exchanged between TO and FROM.  Pointers must be exchanged to avoid
@@ -2223,8 +2197,6 @@ adjust_frame_glyphs_for_frame_redisplay (struct frame *f)
 static void
 adjust_frame_glyphs_for_window_redisplay (struct frame *f)
 {
-  struct window *w;
-
   xassert (FRAME_WINDOW_P (f) && FRAME_LIVE_P (f));
 
   /* Allocate/reallocate window matrices.  */
@@ -2236,6 +2208,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
 #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
   {
     /* Allocate a dummy window if not already done.  */
+    struct window *w;
     if (NILP (f->menu_bar_window))
       {
        f->menu_bar_window = make_window ();
@@ -2258,23 +2231,26 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
 #endif /* HAVE_X_WINDOWS */
 
 #ifndef USE_GTK
-  /* Allocate/ reallocate matrices of the tool bar window.  If we
-     don't have a tool bar window yet, make one.  */
-  if (NILP (f->tool_bar_window))
-    {
-      f->tool_bar_window = make_window ();
+  {
+    /* Allocate/ reallocate matrices of the tool bar window.  If we
+       don't have a tool bar window yet, make one.  */
+    struct window *w;
+    if (NILP (f->tool_bar_window))
+      {
+       f->tool_bar_window = make_window ();
+       w = XWINDOW (f->tool_bar_window);
+       XSETFRAME (w->frame, f);
+       w->pseudo_window_p = 1;
+      }
+    else
       w = XWINDOW (f->tool_bar_window);
-      XSETFRAME (w->frame, f);
-      w->pseudo_window_p = 1;
-    }
-  else
-    w = XWINDOW (f->tool_bar_window);
 
-  XSETFASTINT (w->top_line, FRAME_MENU_BAR_LINES (f));
-  XSETFASTINT (w->left_col, 0);
-  XSETFASTINT (w->total_lines, FRAME_TOOL_BAR_LINES (f));
-  XSETFASTINT (w->total_cols, FRAME_TOTAL_COLS (f));
-  allocate_matrices_for_window_redisplay (w);
+    XSETFASTINT (w->top_line, FRAME_MENU_BAR_LINES (f));
+    XSETFASTINT (w->left_col, 0);
+    XSETFASTINT (w->total_lines, FRAME_TOOL_BAR_LINES (f));
+    XSETFASTINT (w->total_cols, FRAME_TOTAL_COLS (f));
+    allocate_matrices_for_window_redisplay (w);
+  }
 #endif
 }
 
@@ -2924,7 +2900,7 @@ sync_window_with_frame_matrix_rows (struct window *w)
 /* Return the window in the window tree rooted in W containing frame
    row ROW.  Value is null if none is found.  */
 
-struct window *
+static struct window *
 frame_row_to_window (struct window *w, int row)
 {
   struct window *found = NULL;
@@ -3562,12 +3538,12 @@ redraw_overlapping_rows (struct window *w, int yb)
 #endif /* HAVE_WINDOW_SYSTEM */
 
 
-#ifdef GLYPH_DEBUG
+#if defined GLYPH_DEBUG && 0
 
 /* Check that no row in the current matrix of window W is enabled
    which is below what's displayed in the window.  */
 
-void
+static void
 check_current_matrix_flags (struct window *w)
 {
   int last_seen_p = 0;
@@ -4014,7 +3990,7 @@ update_text_area (struct window *w, int vpos)
        {
          /* Otherwise clear to the end of the old row.  Everything
             after that position should be clear already.  */
-         int x;
+         int xlim;
 
          if (i >= desired_row->used[TEXT_AREA])
            rif->cursor_to (vpos, i, desired_row->y,
@@ -4031,11 +4007,11 @@ update_text_area (struct window *w, int vpos)
                  : (w->phys_cursor.hpos >= desired_row->used[TEXT_AREA])))
            {
              w->phys_cursor_on_p = 0;
-             x = -1;
+             xlim = -1;
            }
          else
-           x = current_row->pixel_width;
-         rif->clear_end_of_line (x);
+           xlim = current_row->pixel_width;
+         rif->clear_end_of_line (xlim);
          changed_p = 1;
        }
     }
@@ -4491,7 +4467,7 @@ scrolling_window (struct window *w, int header_line_p)
        && old_lines[i]->old_uses == 1
         && old_lines[i]->new_uses == 1)
       {
-       int j, k;
+       int p, q;
        int new_line = old_lines[i]->new_line_number;
        struct run *run = run_pool + run_idx++;
 
@@ -4504,33 +4480,33 @@ scrolling_window (struct window *w, int header_line_p)
        run->height = MATRIX_ROW (current_matrix, i)->height;
 
        /* Extend backward.  */
-       j = i - 1;
-       k = new_line - 1;
-       while (j > first_old
-              && k > first_new
-              && old_lines[j] == new_lines[k])
+       p = i - 1;
+       q = new_line - 1;
+       while (p > first_old
+              && q > first_new
+              && old_lines[p] == new_lines[q])
          {
-           int h = MATRIX_ROW (current_matrix, j)->height;
+           int h = MATRIX_ROW (current_matrix, p)->height;
            --run->current_vpos;
            --run->desired_vpos;
            ++run->nrows;
            run->height += h;
            run->desired_y -= h;
            run->current_y -= h;
-           --j, --k;
+           --p, --q;
          }
 
        /* Extend forward.  */
-       j = i + 1;
-       k = new_line + 1;
-       while (j < last_old
-              && k < last_new
-              && old_lines[j] == new_lines[k])
+       p = i + 1;
+       q = new_line + 1;
+       while (p < last_old
+              && q < last_new
+              && old_lines[p] == new_lines[q])
          {
-           int h = MATRIX_ROW (current_matrix, j)->height;
+           int h = MATRIX_ROW (current_matrix, p)->height;
            ++run->nrows;
            run->height += h;
-           ++j, ++k;
+           ++p, ++q;
          }
 
        /* Insert run into list of all runs.  Order runs by copied
@@ -4538,11 +4514,11 @@ scrolling_window (struct window *w, int header_line_p)
           be copied because they are already in place.  This is done
           because we can avoid calling update_window_line in this
           case.  */
-       for (j = 0; j < nruns && runs[j]->height > run->height; ++j)
+       for (p = 0; p < nruns && runs[p]->height > run->height; ++p)
          ;
-       for (k = nruns; k > j; --k)
-         runs[k] = runs[k - 1];
-       runs[j] = run;
+       for (q = nruns; q > p; --q)
+         runs[q] = runs[q - 1];
+       runs[p] = run;
        ++nruns;
 
        i += run->nrows;
@@ -4639,7 +4615,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
   struct glyph_matrix *current_matrix = f->current_matrix;
   struct glyph_matrix *desired_matrix = f->desired_matrix;
   int i;
-  int pause;
+  int pause_p;
   int preempt_count = baud_rate / 2400 + 1;
 
   xassert (current_matrix && desired_matrix);
@@ -4653,7 +4629,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
 #if !PERIODIC_PREEMPTION_CHECKING
   if (!force_p && detect_input_pending_ignore_squeezables ())
     {
-      pause = 1;
+      pause_p = 1;
       goto do_pause;
     }
 #endif
@@ -4733,10 +4709,10 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
        }
     }
 
-  pause = (i < FRAME_LINES (f) - 1) ? i : 0;
+  pause_p = (i < FRAME_LINES (f) - 1) ? i : 0;
 
   /* Now just clean up termcap drivers and set cursor, etc.  */
-  if (!pause)
+  if (!pause_p)
     {
       if ((cursor_in_echo_area
           /* If we are showing a message instead of the mini-buffer,
@@ -4837,7 +4813,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
 #endif
 
   clear_desired_matrices (f);
-  return pause;
+  return pause_p;
 }
 
 
@@ -5594,7 +5570,7 @@ marginal_area_string (struct window *w, enum window_part part,
 
 #ifdef SIGWINCH
 
-SIGTYPE
+static SIGTYPE
 window_change_signal (int signalnum) /* If we don't have an argument, */
                                /* some compilers complain in signal calls.  */
 {
index 5d6189f2a3c480927c2b2f6207387aeaa34efb67..28690e7c76d2eabd415737c7591898257b7e2508 100644 (file)
@@ -3523,7 +3523,7 @@ usage: (format STRING &rest OBJECTS)  */)
   int maybe_combine_byte;
   char *this_format;
   /* Precision for each spec, or -1, a flag value meaning no precision
-     was given in that spec.  Element 0, corresonding to the format
+     was given in that spec.  Element 0, corresponding to the format
      string itself, will not be used.  Element NARGS, corresponding to
      no argument, *will* be assigned to in the case that a `%' and `.'
      occur after the final format specifier.  */
index 2ccad83f6685ba3aac8bd54cfd05a00ed1b45a30..18e9dbe9680db7f97026d7cc97da0406099c8324 100644 (file)
@@ -26,18 +26,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <setjmp.h>
 #include <unistd.h>
 
-#if !defined (S_ISLNK) && defined (S_IFLNK)
-#  define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#endif
-
-#if !defined (S_ISFIFO) && defined (S_IFIFO)
-#  define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#endif
-
-#if !defined (S_ISREG) && defined (S_IFREG)
-#  define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
-
 #ifdef HAVE_PWD_H
 #include <pwd.h>
 #endif
@@ -95,10 +83,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "commands.h"
 
-#ifndef S_ISLNK
-#  define lstat stat
-#endif
-
 #ifndef FILE_SYSTEM_CASE
 #define FILE_SYSTEM_CASE(filename)  (filename)
 #endif
@@ -1922,7 +1906,6 @@ on the system, we copy the SELinux context of FILE to NEWNAME.  */)
                         Fcons (file, Fcons (newname, Qnil)));
     }
 
-#if defined (S_ISREG) && defined (S_ISLNK)
   if (input_file_statable_p)
     {
       if (!(S_ISREG (st.st_mode)) && !(S_ISLNK (st.st_mode)))
@@ -1934,7 +1917,6 @@ on the system, we copy the SELinux context of FILE to NEWNAME.  */)
          report_file_error ("Non-regular file", Fcons (file, Qnil));
        }
     }
-#endif /* S_ISREG && S_ISLNK */
 
 #ifdef MSDOS
   /* System's default file type was set to binary by _fmode in emacs.c.  */
@@ -2196,14 +2178,11 @@ This is what happens in interactive use with M-x.  */)
       if (errno == EXDEV)
        {
           int count;
-#ifdef S_IFLNK
           symlink_target = Ffile_symlink_p (file);
           if (! NILP (symlink_target))
             Fmake_symbolic_link (symlink_target, newname,
                                  NILP (ok_if_already_exists) ? Qnil : Qt);
-          else
-#endif
-         if (!NILP (Ffile_directory_p (file)))
+         else if (!NILP (Ffile_directory_p (file)))
            call4 (Qcopy_directory, file, newname, Qt, Qnil);
          else
            /* We have already prompted if it was an integer, so don't
@@ -2215,11 +2194,7 @@ This is what happens in interactive use with M-x.  */)
          count = SPECPDL_INDEX ();
          specbind (Qdelete_by_moving_to_trash, Qnil);
 
-         if (!NILP (Ffile_directory_p (file))
-#ifdef S_IFLNK
-             && NILP (symlink_target)
-#endif
-             )
+         if (!NILP (Ffile_directory_p (file)) && NILP (symlink_target))
            call2 (Qdelete_directory, file, Qt);
          else
            Fdelete_file (file, Qnil);
@@ -2329,7 +2304,6 @@ This happens for interactive use with M-x.  */)
     RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, filename,
                           linkname, ok_if_already_exists));
 
-#ifdef S_IFLNK
   encoded_filename = ENCODE_FILE (filename);
   encoded_linkname = ENCODE_FILE (linkname);
 
@@ -2351,17 +2325,17 @@ This happens for interactive use with M-x.  */)
              return Qnil;
            }
        }
+      if (errno == ENOSYS)
+       {
+         UNGCPRO;
+         xsignal1 (Qfile_error,
+                   build_string ("Symbolic links are not supported"));
+       }
 
       report_file_error ("Making symbolic link", list2 (filename, linkname));
     }
   UNGCPRO;
   return Qnil;
-
-#else
-  UNGCPRO;
-  xsignal1 (Qfile_error, build_string ("Symbolic links are not supported"));
-
-#endif /* S_IFLNK */
 }
 
 \f
@@ -2408,7 +2382,7 @@ check_writable (const char *filename)
   struct stat st;
   if (stat (filename, &st) < 0)
     return 0;
-  return (st.st_mode & S_IWRITE || (st.st_mode & S_IFMT) == S_IFDIR);
+  return (st.st_mode & S_IWRITE || S_ISDIR (st.st_mode));
 #else /* not MSDOS */
 #ifdef HAVE_EUIDACCESS
   return (euidaccess (filename, 2) >= 0);
@@ -2500,7 +2474,7 @@ See also `file-exists-p' and `file-attributes'.  */)
   return Qnil;
 #else /* not DOS_NT and not macintosh */
   flags = O_RDONLY;
-#if defined (S_ISFIFO) && defined (O_NONBLOCK)
+#ifdef O_NONBLOCK
   /* Opening a fifo without O_NONBLOCK can wait.
      We don't want to wait.  But we don't want to mess wth O_NONBLOCK
      except in the case of a fifo, on a system which handles it.  */
@@ -2555,7 +2529,7 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
      should check ACLs though, which do affect this.  */
   if (stat (SDATA (dir), &statbuf) < 0)
     return Qnil;
-  return (statbuf.st_mode & S_IFMT) == S_IFDIR ? Qt : Qnil;
+  return S_ISDIR (statbuf.st_mode) ? Qt : Qnil;
 #else
   return (check_writable (!NILP (dir) ? SSDATA (dir) : "")
          ? Qt : Qnil);
@@ -2602,6 +2576,10 @@ points to a nonexistent file.  */)
   (Lisp_Object filename)
 {
   Lisp_Object handler;
+  char *buf;
+  int bufsize;
+  int valsize;
+  Lisp_Object val;
 
   CHECK_STRING (filename);
   filename = Fexpand_file_name (filename, Qnil);
@@ -2612,13 +2590,6 @@ points to a nonexistent file.  */)
   if (!NILP (handler))
     return call2 (handler, Qfile_symlink_p, filename);
 
-#ifdef S_IFLNK
-  {
-  char *buf;
-  int bufsize;
-  int valsize;
-  Lisp_Object val;
-
   filename = ENCODE_FILE (filename);
 
   bufsize = 50;
@@ -2653,10 +2624,6 @@ points to a nonexistent file.  */)
   xfree (buf);
   val = DECODE_FILE (val);
   return val;
-  }
-#else /* not S_IFLNK */
-  return Qnil;
-#endif /* not S_IFLNK */
 }
 
 DEFUN ("file-directory-p", Ffile_directory_p, Sfile_directory_p, 1, 1, 0,
@@ -2681,7 +2648,7 @@ See `file-symlink-p' to distinguish symlinks.  */)
 
   if (stat (SSDATA (absname), &st) < 0)
     return Qnil;
-  return (st.st_mode & S_IFMT) == S_IFDIR ? Qt : Qnil;
+  return S_ISDIR (st.st_mode) ? Qt : Qnil;
 }
 
 DEFUN ("file-accessible-directory-p", Ffile_accessible_directory_p, Sfile_accessible_directory_p, 1, 1, 0,
@@ -2744,12 +2711,12 @@ See `file-symlink-p' to distinguish symlinks.  */)
 
     if (result < 0)
       return Qnil;
-    return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil;
+    return S_ISREG (st.st_mode) ? Qt : Qnil;
   }
 #else
   if (stat (SSDATA (absname), &st) < 0)
     return Qnil;
-  return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil;
+  return S_ISREG (st.st_mode) ? Qt : Qnil;
 #endif
 }
 \f
@@ -3007,8 +2974,7 @@ Use the current time if TIME is nil.  TIME is in the format of
         struct stat st;
 
         /* Setting times on a directory always fails.  */
-        if (stat (SDATA (encoded_absname), &st) == 0
-            && (st.st_mode & S_IFMT) == S_IFDIR)
+        if (stat (SSDATA (encoded_absname), &st) == 0 && S_ISDIR (st.st_mode))
           return Qnil;
 #endif
         report_file_error ("Setting file times", Fcons (absname, Qnil));
@@ -3267,7 +3233,6 @@ variable `last-coding-system-used' to the coding system actually used.  */)
       goto notfound;
     }
 
-#ifdef S_IFREG
   /* This code will need to be changed in order to work on named
      pipes, and it's probably just not worth it.  So we should at
      least signal an error.  */
@@ -3282,7 +3247,6 @@ variable `last-coding-system-used' to the coding system actually used.  */)
        xsignal2 (Qfile_error,
                  build_string ("not a regular file"), orig_filename);
     }
-#endif
 
   if (fd < 0)
     if ((fd = emacs_open (SSDATA (filename), O_RDONLY, 0)) < 0)
index 8e18bb7b6507f3a097cc29e9cb22b0b2e7e28664..7f8f0e1c0fb238703ed0c5ec9d1826e07d687e27 100644 (file)
@@ -51,10 +51,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <utmp.h>
 #endif
 
-#if !defined (S_ISLNK) && defined (S_IFLNK)
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#endif
-
 /* A file whose last-modified time is just after the most recent boot.
    Define this to be NULL to disable checking for this file.  */
 #ifndef BOOT_TIME_FILE
index d77eafb6ad2121355bd2569a8aa777b1769f445d..35821ae34f9f5fa0283e49affd8559691f13ff05 100644 (file)
@@ -2806,7 +2806,7 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size)
   Lisp_Object objlist, size, val, font_object;
   struct font *font;
   int min_width, height;
-  int scaled_pixel_size;
+  int scaled_pixel_size = pixel_size;
 
   font_assert (FONT_ENTITY_P (entity));
   size = AREF (entity, FONT_SIZE_INDEX);
@@ -3121,7 +3121,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c)
   XSETFRAME (frame, f);
   size = AREF (spec, FONT_SIZE_INDEX);
   pixel_size = font_pixel_size (f, spec);
-  if (pixel_size == 0)
+  if (pixel_size == 0 && INTEGERP (attrs[LFACE_HEIGHT_INDEX]))
     {
       double pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
 
index 56e0e7ec91940af43b52e0f9d58aaca53d31de30..05938f3e1f0cc2575a96ff1286142f348d0cdb10 100644 (file)
@@ -2208,15 +2208,23 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
   register Lisp_Object old_alist_elt;
 
   /* The buffer-list parameters are stored in a special place and not
-     in the alist.  */
+     in the alist.  All buffers must be live.  */
   if (EQ (prop, Qbuffer_list))
     {
-      f->buffer_list = val;
+      Lisp_Object list = Qnil;
+      for (; CONSP (val); val = XCDR (val))
+       if (!NILP (Fbuffer_live_p (XCAR (val))))
+         list = Fcons (XCAR (val), list);
+      f->buffer_list = Fnreverse (list);
       return;
     }
   if (EQ (prop, Qburied_buffer_list))
     {
-      f->buried_buffer_list = val;
+      Lisp_Object list = Qnil;
+      for (; CONSP (val); val = XCDR (val))
+       if (!NILP (Fbuffer_live_p (XCAR (val))))
+         list = Fcons (XCAR (val), list);
+      f->buried_buffer_list = Fnreverse (list);
       return;
     }
 
@@ -3275,12 +3283,12 @@ x_set_screen_gamma (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
   bgcolor = Fassq (Qbackground_color, f->param_alist);
   if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor)))
     {
-      Lisp_Object index = Fget (Qbackground_color, Qx_frame_parameter);
-      if (NATNUMP (index)
-         && (XFASTINT (index)
+      Lisp_Object parm_index = Fget (Qbackground_color, Qx_frame_parameter);
+      if (NATNUMP (parm_index)
+         && (XFASTINT (parm_index)
              < sizeof (frame_parms)/sizeof (frame_parms[0]))
-         && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
-         (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
+         && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
+         (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
            (f, bgcolor, Qnil);
     }
 
index 9687e39a9fcd27401bffefd1f627729eb9d9a4fc..756e121f6788b18268b1e6e03c7ab73004ac83fb 100644 (file)
@@ -841,6 +841,7 @@ extern Lisp_Object Qnoelisp;
 
 extern struct frame *last_nonminibuf_frame;
 
+extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 extern struct frame *make_initial_frame (void);
 extern struct frame *make_terminal_frame (struct terminal *);
 extern struct frame *make_frame (int);
@@ -1131,17 +1132,20 @@ extern int x_figure_window_size (struct frame *, Lisp_Object, int);
 extern void x_set_alpha (struct frame *, Lisp_Object, Lisp_Object);
 
 extern void validate_x_resource_name (void);
-                                           
+
 extern Lisp_Object display_x_get_resource (Display_Info *,
                                           Lisp_Object attribute,
                                           Lisp_Object class,
                                           Lisp_Object component,
                                           Lisp_Object subclass);
 
+#if defined HAVE_X_WINDOWS && !defined USE_X_TOOLKIT
+extern char *x_get_resource_string (const char *, const char *);
+#endif
+
 /* In xmenu.c */
 extern void set_frame_menubar (FRAME_PTR, int, int);
 
 #endif /* HAVE_WINDOW_SYSTEM */
 
 #endif /* not EMACS_FRAME_H */
-
index 85d26520cfb0bb9a7a8e5bdf48dd1ef00dd6d48b..37ce647556d249390ba31579764a711d81ca6a7e 100644 (file)
@@ -45,7 +45,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    Some things in set last_known_column_point to -1
    to mark the memorized value as invalid.  */
 
-static double last_known_column;
+static EMACS_INT last_known_column;
 
 /* Value of point when current_column was called.  */
 
@@ -55,8 +55,8 @@ EMACS_INT last_known_column_point;
 
 static int last_known_column_modified;
 
-static double current_column_1 (void);
-static double position_indentation (int);
+static EMACS_INT current_column_1 (void);
+static EMACS_INT position_indentation (int);
 
 /* Cache of beginning of line found by the last call of
    current_column. */
@@ -309,7 +309,7 @@ Text that has an invisible property is considered as having width 0, unless
   (void)
 {
   Lisp_Object temp;
-  XSETFASTINT (temp, (int) current_column ()); /* iftc */
+  XSETFASTINT (temp, current_column ());
   return temp;
 }
 
@@ -321,15 +321,15 @@ invalidate_current_column (void)
   last_known_column_point = 0;
 }
 
-double
+EMACS_INT
 current_column (void)
 {
-  register int col;
+  register EMACS_INT col;
   register unsigned char *ptr, *stop;
   register int tab_seen;
-  int post_tab;
+  EMACS_INT post_tab;
   register int c;
-  register int tab_width = XINT (BVAR (current_buffer, tab_width));
+  register EMACS_INT tab_width = XINT (BVAR (current_buffer, tab_width));
   int ctl_arrow = !NILP (BVAR (current_buffer, ctl_arrow));
   register struct Lisp_Char_Table *dp = buffer_display_table ();
 
@@ -705,7 +705,7 @@ scan_for_column (EMACS_INT *endpos, EMACS_INT *goalcol, EMACS_INT *prevcol)
    This function handles characters that are invisible
    due to text properties or overlays.  */
 
-static double
+static EMACS_INT
 current_column_1 (void)
 {
   EMACS_INT col = MOST_POSITIVE_FIXNUM;
@@ -807,9 +807,9 @@ even if that goes past COLUMN; by default, MINIMUM is zero.
 The return value is COLUMN.  */)
   (Lisp_Object column, Lisp_Object minimum)
 {
-  int mincol;
-  register int fromcol;
-  register int tab_width = XINT (BVAR (current_buffer, tab_width));
+  EMACS_INT mincol;
+  register EMACS_INT fromcol;
+  register EMACS_INT tab_width = XINT (BVAR (current_buffer, tab_width));
 
   CHECK_NUMBER (column);
   if (NILP (minimum))
@@ -849,8 +849,6 @@ The return value is COLUMN.  */)
 }
 
 \f
-static double position_indentation (int);
-
 DEFUN ("current-indentation", Fcurrent_indentation, Scurrent_indentation,
        0, 0, 0,
        doc: /* Return the indentation of the current line.
@@ -863,12 +861,12 @@ following any initial whitespace.  */)
 
   scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -1, 1);
 
-  XSETFASTINT (val, (int) position_indentation (PT_BYTE)); /* iftc */
+  XSETFASTINT (val, position_indentation (PT_BYTE));
   SET_PT_BOTH (opoint, opoint_byte);
   return val;
 }
 
-static double
+static EMACS_INT
 position_indentation (register int pos_byte)
 {
   register EMACS_INT column = 0;
@@ -958,9 +956,9 @@ position_indentation (register int pos_byte)
    preceding line.  */
 
 int
-indented_beyond_p (EMACS_INT pos, EMACS_INT pos_byte, double column)
+indented_beyond_p (EMACS_INT pos, EMACS_INT pos_byte, EMACS_INT column)
 {
-  double val;
+  EMACS_INT val;
   EMACS_INT opoint = PT, opoint_byte = PT_BYTE;
 
   SET_PT_BOTH (pos, pos_byte);
@@ -969,7 +967,7 @@ indented_beyond_p (EMACS_INT pos, EMACS_INT pos_byte, double column)
 
   val = position_indentation (PT_BYTE);
   SET_PT_BOTH (opoint, opoint_byte);
-  return val >= column;                 /* hmm, float comparison */
+  return val >= column;
 }
 \f
 DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, "p",
@@ -1126,7 +1124,7 @@ compute_motion (EMACS_INT from, EMACS_INT fromvpos, EMACS_INT fromhpos, int did_
   register EMACS_INT tab_width = XFASTINT (BVAR (current_buffer, tab_width));
   register int ctl_arrow = !NILP (BVAR (current_buffer, ctl_arrow));
   register struct Lisp_Char_Table *dp = window_display_table (win);
-  int selective
+  EMACS_INT selective
     = (INTEGERP (BVAR (current_buffer, selective_display))
        ? XINT (BVAR (current_buffer, selective_display))
        : !NILP (BVAR (current_buffer, selective_display)) ? -1 : 0);
@@ -1590,8 +1588,7 @@ compute_motion (EMACS_INT from, EMACS_INT fromvpos, EMACS_INT fromhpos, int did_
              else if (c == '\n')
                {
                  if (selective > 0
-                     && indented_beyond_p (pos, pos_byte,
-                                            (double) selective)) /* iftc */
+                     && indented_beyond_p (pos, pos_byte, selective))
                    {
                      /* If (pos == to), we don't have to take care of
                         selective display.  */
@@ -1607,7 +1604,7 @@ compute_motion (EMACS_INT from, EMACS_INT fromvpos, EMACS_INT fromhpos, int did_
                            }
                          while (pos < to
                                 && indented_beyond_p (pos, pos_byte,
-                                                       (double) selective)); /* iftc */
+                                                       selective));
                          /* Allow for the " ..." that is displayed for them. */
                          if (selective_rlen)
                            {
@@ -1837,7 +1834,7 @@ vmotion (register EMACS_INT from, register EMACS_INT vtarget, struct window *w)
   register EMACS_INT first;
   EMACS_INT from_byte;
   EMACS_INT lmargin = hscroll > 0 ? 1 - hscroll : 0;
-  int selective
+  EMACS_INT selective
     = (INTEGERP (BVAR (current_buffer, selective_display))
        ? XINT (BVAR (current_buffer, selective_display))
        : !NILP (BVAR (current_buffer, selective_display)) ? -1 : 0);
@@ -1872,7 +1869,7 @@ vmotion (register EMACS_INT from, register EMACS_INT vtarget, struct window *w)
                 && ((selective > 0
                      && indented_beyond_p (prevline,
                                            CHAR_TO_BYTE (prevline),
-                                           (double) selective)) /* iftc */
+                                           selective))
                     /* Watch out for newlines with `invisible' property.
                        When moving upward, check the newline before.  */
                     || (propval = Fget_char_property (make_number (prevline - 1),
@@ -1929,7 +1926,7 @@ vmotion (register EMACS_INT from, register EMACS_INT vtarget, struct window *w)
             && ((selective > 0
                  && indented_beyond_p (prevline,
                                        CHAR_TO_BYTE (prevline),
-                                       (double) selective)) /* iftc */
+                                       selective))
                 /* Watch out for newlines with `invisible' property.
                    When moving downward, check the newline after.  */
                 || (propval = Fget_char_property (make_number (prevline),
index 0e4715e4b8b321bac22c75716e6eda6934e95ee2..4459ef07d68eb190539058d348886c64773609e6 100644 (file)
@@ -2756,7 +2756,7 @@ remapped command in the returned list.  */)
       && !NILP (firstonly)
       && !NILP (tem = Fget (definition, QCadvertised_binding)))
     {
-      /* We have a list of advertized bindings.  */
+      /* We have a list of advertised bindings.  */
       while (CONSP (tem))
        if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition))
          return XCAR (tem);
@@ -3219,7 +3219,7 @@ static void
 describe_command (Lisp_Object definition, Lisp_Object args)
 {
   register Lisp_Object tem1;
-  int column = (int) current_column (); /* iftc */
+  EMACS_INT column = current_column ();
   int description_column;
 
   /* If column 16 is no good, go to col 32;
index 223cdbc92f0c83e6b03368109274dae5f0e53712..ece964282537ff9b90a0a15e4380fdb675b85b68 100644 (file)
@@ -3151,9 +3151,9 @@ extern char *push_key_description (unsigned int, char *, int);
 EXFUN (Fvertical_motion, 2);
 EXFUN (Findent_to, 2);
 EXFUN (Fmove_to_column, 2);
-extern double current_column (void);
+extern EMACS_INT current_column (void);
 extern void invalidate_current_column (void);
-extern int indented_beyond_p (EMACS_INT, EMACS_INT, double);
+extern int indented_beyond_p (EMACS_INT, EMACS_INT, EMACS_INT);
 extern void syms_of_indent (void);
 
 /* Defined in frame.c */
index 77b397a03df53fb50a407baca6b69b168dd8276f..c8c07bed47645c851d25bc3d00c9ca862cfdb58d 100644 (file)
@@ -1509,7 +1509,7 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto
                  Lisp_Object tmp = call1 (predicate, string);
                  exists = !NILP (tmp)
                    && (EQ (tmp, Qdir_ok)
-                       || !NILP (Ffile_directory_p (string)));
+                       || NILP (Ffile_directory_p (string)));
                }
 
              if (exists)
@@ -1527,8 +1527,7 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto
 
              encoded_fn = ENCODE_FILE (string);
              pfn = SSDATA (encoded_fn);
-             exists = (stat (pfn, &st) >= 0
-                       && (st.st_mode & S_IFMT) != S_IFDIR);
+             exists = (stat (pfn, &st) == 0 && ! S_ISDIR (st.st_mode));
              if (exists)
                {
                  /* Check that we can access or open it.  */
@@ -4537,7 +4536,7 @@ This variable is automatically set from the file variables of an interpreted
 
   Qdir_ok = intern_c_string ("dir-ok");
   staticpro (&Qdir_ok);
-  
+
   Qdo_after_load_evaluation = intern_c_string ("do-after-load-evaluation");
   staticpro (&Qdo_after_load_evaluation) ;
 
index 9852900b60bf81b3a0d0deecd56292e5713f2e89..75a24686d5abab95538c67307cb4ec23dad72298 100644 (file)
@@ -82,6 +82,15 @@ Lisp_Object Qcase_fold_search;
 
 Lisp_Object Qread_expression_history;
 
+/* Prompt to display in front of the mini-buffer contents.  */
+
+static Lisp_Object minibuf_prompt;
+
+/* Width of current mini-buffer prompt.  Only set after display_line
+   of the line that contains the prompt.  */
+
+static EMACS_INT minibuf_prompt_width;
+
 \f
 /* Put minibuf on currently selected frame's minibuffer.
    We do this whenever the user starts a new minibuffer
@@ -623,7 +632,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
     unbind_to (count1, Qnil);
   }
 
-  minibuf_prompt_width = (int) current_column (); /* iftc */
+  minibuf_prompt_width = current_column ();
 
   /* Put in the initial input.  */
   if (!NILP (initial))
index 8f0f6776aaaa0ac2aec09742f5907e9b96aed695..261a09ac8591eececc99df5afc5829cba0e1a4a2 100644 (file)
@@ -1389,8 +1389,6 @@ IT_delete_glyphs (struct frame *f, int n)
 void
 x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
 {
-  extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
-
   set_menu_bar_lines (f, value, oldval);
 }
 
@@ -3922,6 +3920,18 @@ croak (char *badfunc)
  */
 int setpgrp (void) {return 0; }
 int setpriority (int x, int y, int z) { return 0; }
+
+#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
+ssize_t
+readlink (const char *name, char *dummy1, size_t dummy2)
+{
+  /* `access' is much faster than `stat' on MS-DOS.  */
+  if (access (name, F_OK) == 0)
+    errno = EINVAL;
+  return -1;
+}
+#endif
+
 \f
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
 
@@ -4236,4 +4246,3 @@ This variable is used only by MS-DOS terminals.  */);
 }
 
 #endif /* MSDOS */
-
index 6b076c1722bed2d15014a712677e0c7f9bd570aa..4bbe9b134de33e00ee79d76dc613373a1d4df57e 100644 (file)
@@ -40,6 +40,11 @@ void mouse_init (void);
 void mouse_on (void);
 void mouse_off (void);
 void mouse_moveto (int, int);
+
+#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
+int readlink (const char *, char *, size_t);
+#endif
+
 \f
 #ifndef HAVE_X_WINDOWS
 /* Dummy types.  */
index a09c95c7d017b9e6f43ed2095f22f0953aa4f986..cc2c4cf98078049507e305eddab679c854070968 100644 (file)
@@ -189,7 +189,7 @@ static NSMutableArray *ns_pending_files, *ns_pending_service_names,
   *ns_pending_service_args;
 static BOOL inNsSelect = 0;
 
-/* Convert modifiers in a NeXTSTEP event to emacs style modifiers.  */
+/* Convert modifiers in a NeXTstep event to emacs style modifiers.  */
 #define NS_FUNCTION_KEY_MASK 0x800000
 #define NSLeftControlKeyMask    (0x000001 | NSControlKeyMask)
 #define NSRightControlKeyMask   (0x002000 | NSControlKeyMask)
@@ -1072,7 +1072,7 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_grav)
         : f->left_pos;
       /* We use visibleFrame here to take menu bar into account.
         Ideally we should also adjust left/top with visibleFrame.origin.  */
-      
+
       f->top_pos = f->size_hint_flags & YNegative
         ? ([screen visibleFrame].size.height + f->top_pos
            - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f)
@@ -1154,7 +1154,7 @@ x_set_window_size (struct frame *f, int change_grav, int cols, int rows)
     FRAME_TOOLBAR_HEIGHT (f) = 0;
 
   wr.size.width = pixelwidth + f->border_width;
-  wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f) 
+  wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f)
                   + FRAME_TOOLBAR_HEIGHT (f);
 
   /* Do not try to constrain to this screen.  We may have multiple
@@ -2230,11 +2230,8 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
                        int x, int y, int cursor_type, int cursor_width,
                        int on_p, int active_p)
 /* --------------------------------------------------------------------------
-     External call (RIF): draw cursor
-     (modeled after x_draw_window_cursor
-     FIXME: cursor_width is effectively bogus -- it sometimes gets set
-     in xdisp.c set_frame_cursor_types, sometimes left uninitialized;
-     DON'T USE IT (no other terms do)
+     External call (RIF): draw cursor.
+     Note that CURSOR_WIDTH is meaningful only for (h)bar cursors.
    -------------------------------------------------------------------------- */
 {
   NSRect r, s;
@@ -2251,7 +2248,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
      and mini-buffer.  */
 
   NSTRACE (dumpcursor);
-//fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width);
 
   if (!on_p)
     return;
@@ -2276,8 +2272,21 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
       return;
     }
 
+  /* We draw the cursor (with NSRectFill), then draw the glyph on top
+     (other terminals do it the other way round).  We must set
+     w->phys_cursor_width to the cursor width.  For bar cursors, that
+     is CURSOR_WIDTH; for box cursors, it is the glyph width.  */
   get_phys_cursor_geometry (w, glyph_row, phys_cursor_glyph, &fx, &fy, &h);
 
+  /* The above get_phys_cursor_geometry call set w->phys_cursor_width
+     to the glyph width; replace with CURSOR_WIDTH for bar cursors. */
+  if (cursor_type == BAR_CURSOR || cursor_type == HBAR_CURSOR)
+    {
+      if (cursor_width < 1)
+       cursor_width = max (FRAME_CURSOR_WIDTH (f), 1);
+      w->phys_cursor_width = cursor_width;
+    }
+
   r.origin.x = fx, r.origin.y = fy;
   r.size.height = h;
   r.size.width = w->phys_cursor_width;
@@ -2285,7 +2294,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
   /* FIXME: if we overwrite the internal border area, it does not get erased;
      fix by truncating cursor, but better would be to erase properly */
   overspill = r.origin.x + r.size.width -
-    WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w) 
+    WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w)
       - WINDOW_TOTAL_FRINGE_WIDTH (w) - FRAME_INTERNAL_BORDER_WIDTH (f));
   if (overspill > 0)
     r.size.width -= overspill;
@@ -2335,8 +2344,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
       break;
     case BAR_CURSOR:
       s = r;
-      s.size.width = min (cursor_width, 2); //FIXME(see above)
-
       /* If the character under cursor is R2L, draw the bar cursor
          on the right of its glyph, rather than on the left.  */
       cursor_glyph = get_phys_cursor_glyph (w);
@@ -2984,7 +2991,7 @@ ns_draw_glyph_string (struct glyph_string *s)
           NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face);
           NS_FACE_FOREGROUND (s->face) = tmp;
         }
-                    
+
       ns_tmp_font->font.driver->draw
         (s, 0, s->nchars, s->x, s->y,
          (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
@@ -3010,9 +3017,9 @@ ns_draw_glyph_string (struct glyph_string *s)
       else
         ns_maybe_dumpglyphs_background
           (s, s->first_glyph->type == COMPOSITE_GLYPH);
-      /* ... */ 
+      /* ... */
       /* Not yet implemented.  */
-      /* ... */ 
+      /* ... */
       ns_unfocus (s->f);
       break;
 
@@ -3785,7 +3792,7 @@ ns_term_init (Lisp_Object display_name)
   strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
   terminal->name[SBYTES (display_name)] = 0;
 
-  UNBLOCK_INPUT; 
+  UNBLOCK_INPUT;
 
   if (!inhibit_x_resources)
     {
@@ -3802,7 +3809,7 @@ ns_term_init (Lisp_Object display_name)
                         stringForKey: @"AppleHighlightColor"];
   if (ns_selection_color == nil)
     ns_selection_color = NS_SELECTION_COLOR_DEFAULT;
-  
+
   {
     NSColorList *cl = [NSColorList colorListNamed: @"Emacs"];
 
@@ -3898,7 +3905,7 @@ ns_term_init (Lisp_Object display_name)
                    keyEquivalent: @"q"
                          atIndex: 9];
 
-    item = [mainMenu insertItemWithTitle: ns_app_name                       
+    item = [mainMenu insertItemWithTitle: ns_app_name
                                   action: @selector (menuDown:)
                            keyEquivalent: @""
                                  atIndex: 0];
@@ -4103,7 +4110,7 @@ ns_term_shutdown (int sig)
         -appShouldTerminate
           Cancel -> Nothing else
           Accept ->
-         
+
          -terminate
          KEY_NS_POWER_OFF, (save-buffers-kill-emacs)
          ns_term_shutdown()
@@ -4113,10 +4120,10 @@ ns_term_shutdown (int sig)
 - (void) terminate: (id)sender
 {
   struct frame *emacsframe = SELECTED_FRAME ();
-  
+
   if (!emacs_event)
     return;
-  
+
   emacs_event->kind = NS_NONKEY_EVENT;
   emacs_event->code = KEY_NS_POWER_OFF;
   emacs_event->arg = Qt; /* mark as non-key event */
@@ -4418,7 +4425,7 @@ ns_term_shutdown (int sig)
       code = ([[theEvent charactersIgnoringModifiers] length] == 0) ?
         0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0];
       /* (Carbon way: [theEvent keyCode]) */
-      
+
       /* is it a "function key"? */
       fnKeysym = ns_convert_key (code);
       if (fnKeysym)
@@ -4542,6 +4549,7 @@ ns_term_shutdown (int sig)
 
       /* if it was a function key or had modifiers, pass it directly to emacs */
       if (fnKeysym || (emacs_event->modifiers
+                       && (emacs_event->modifiers != shift_modifier)
                        && [[theEvent charactersIgnoringModifiers] length] > 0))
 /*[[theEvent characters] length] */
         {
@@ -5445,7 +5453,7 @@ ns_term_shutdown (int sig)
 
   /*
     drawRect: may be called (at least in OS X 10.5) for invisible
-    views as well for some reason.  Thus, do not infer visibility 
+    views as well for some reason.  Thus, do not infer visibility
     here.
 
     emacsframe->async_visible = 1;
index 00847d673180b26a9e7ffce14d3ddcfc207d7e0c..602575b5b08cefd570b8a7d88f45dceedc8c10cf 100644 (file)
@@ -1630,26 +1630,6 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
        {
          PRINTCHAR ('(');
 
-         /* If the first element is a backquote form,
-            print it old-style so it won't be misunderstood.  */
-         if (print_quoted && CONSP (XCAR (obj))
-             && CONSP (XCDR (XCAR (obj)))
-             && NILP (XCDR (XCDR (XCAR (obj))))
-             && EQ (XCAR (XCAR (obj)), Qbackquote))
-           {
-             Lisp_Object tem;
-             tem = XCAR (obj);
-             PRINTCHAR ('(');
-
-             print_object (Qbackquote, printcharfun, 0);
-             PRINTCHAR (' ');
-
-             print_object (XCAR (XCDR (tem)), printcharfun, 0);
-             PRINTCHAR (')');
-
-             obj = XCDR (obj);
-           }
-
          {
            EMACS_INT print_length;
            int i;
@@ -1853,25 +1833,25 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
          if (!NILP (h->test))
            {
              strout (" test ", -1, -1, printcharfun, 0);
-             print_object (h->test, printcharfun, 0);
+             print_object (h->test, printcharfun, escapeflag);
            }
 
          if (!NILP (h->weak))
            {
              strout (" weakness ", -1, -1, printcharfun, 0);
-             print_object (h->weak, printcharfun, 0);
+             print_object (h->weak, printcharfun, escapeflag);
            }
 
          if (!NILP (h->rehash_size))
            {
              strout (" rehash-size ", -1, -1, printcharfun, 0);
-             print_object (h->rehash_size, printcharfun, 0);
+             print_object (h->rehash_size, printcharfun, escapeflag);
            }
 
          if (!NILP (h->rehash_threshold))
            {
              strout (" rehash-threshold ", -1, -1, printcharfun, 0);
-             print_object (h->rehash_threshold, printcharfun, 0);
+             print_object (h->rehash_threshold, printcharfun, escapeflag);
            }
 
          strout (" data ", -1, -1, printcharfun, 0);
@@ -1890,9 +1870,9 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
            if (!NILP (HASH_HASH (h, i)))
              {
                if (i) PRINTCHAR (' ');
-               print_object (HASH_KEY (h, i), printcharfun, 1);
+               print_object (HASH_KEY (h, i), printcharfun, escapeflag);
                PRINTCHAR (' ');
-               print_object (HASH_VALUE (h, i), printcharfun, 1);
+               print_object (HASH_VALUE (h, i), printcharfun, escapeflag);
              }
 
          if (size < real_size)
index 8debd28dccb890ca2c4c2d60b69deca9823b4092..29ca0629899b3fd0d56792719adda4d4614e8b10 100644 (file)
@@ -80,6 +80,12 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
    strtold, so use _strtold in all versions.  */
 #define strtold _strtold
 
+#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3
+# define HAVE_LSTAT 1
+#else
+# define lstat stat
+#endif
+
 /* End of gnulib-related stuff.  */
 
 /* When $TERM is "internal" then this is substituted:  */
index 08ae83eeee8036efda52e627b7027d145131f572..1343b89c41e2d2755df361cd561ee4f748076c42 100644 (file)
@@ -262,7 +262,8 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, struct m
   for (k = 0; k < window_size; ++k)
     copy_from[k] = -1;
 
-#define CHECK_BOUNDS                                                   \
+#if GLYPH_DEBUG
+# define CHECK_BOUNDS                                                  \
   do                                                                   \
     {                                                                  \
       int k;                                                           \
@@ -271,6 +272,7 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, struct m
                 || (copy_from[k] >= 0 && copy_from[k] < window_size)); \
     }                                                                  \
   while (0);
+#endif
 
   /* When j is advanced, this corresponds to deleted lines.
      When i is advanced, this corresponds to inserted lines.  */
@@ -1035,4 +1037,3 @@ do_line_insertion_deletion_costs (FRAME_PTR frame,
                 FRAME_DELETE_COST (frame), FRAME_DELETEN_COST (frame),
                 coefficient);
 }
-
index 65fbab538bbc08ff63f53386b17a697bd5b96922..31414fbe5c6032196408274bdd388e36f6ecb16c 100644 (file)
@@ -25,7 +25,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <unistd.h>
 
-#define STATIC_HEAP_SIZE       (12 * 1024 * 1024)
+#define STATIC_HEAP_SIZE       (13 * 1024 * 1024)
 
 int debug_sheap = 0;
 
index d4f68544c1dd4b528c1a52cba14f8aea9de2629e..ae2373be46eda34249268e567c981fc99dd0f8b2 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -3613,6 +3613,25 @@ utime (const char *name, struct utimbuf *times)
   return 0;
 }
 
+\f
+/* Symlink-related functions that always fail.  Used in fileio.c to
+   avoid #ifdef's.  */
+int
+symlink (char const *dummy1, char const *dummy2)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+ssize_t
+readlink (const char *name, char *dummy1, size_t dummy2)
+{
+  /* `access' is much faster than `stat' on MS-Windows.  */
+  if (sys_access (name, 0) == 0)
+    errno = EINVAL;
+  return -1;
+}
+
 \f
 /* Support for browsing other processes and their attributes.  See
    process.c for the Lisp bindings.  */
index 1c009c7f943248bf711861652ce804a12622a2d5..bb8b428ffe4574f3eed6a24f2195a4083df4c225 100644 (file)
@@ -831,7 +831,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
 
      Note that using backslash to escape embedded quotes requires
      additional special handling if an embedded quote is already
-     preceeded by backslash, or if an arg requiring quoting ends with
+     preceded by backslash, or if an arg requiring quoting ends with
      backslash.  In such cases, the run of escape characters needs to be
      doubled.  For consistency, we apply this special handling as long
      as the escape character is not quote.
index 692130b5140476d6f8f7e6e580f00cb60601aaf7..67e853f21f05db65931316995d79e86d3c7cc3a0 100644 (file)
@@ -5941,7 +5941,7 @@ w32_initialize_display_info (Lisp_Object display_name)
 
 }
 
-/* Create an xrdb-style database of resources to supercede registry settings.
+/* Create an xrdb-style database of resources to supersede registry settings.
    The database is just a concatenation of C strings, finished by an additional
    \0.  The strings are submitted to some basic normalization, so
 
index f0555d5c96104fb5fbf78182b564f15a363f2fe3..9a0955955fa0e12392ea2c39014cf9de9bf9bb22 100644 (file)
@@ -1769,8 +1769,10 @@ window_list (void)
 
    ALL_FRAMES  t means search all frames,
                nil means search just current frame,
-               `visible' means search just visible frames,
-               0 means search visible and iconified frames,
+               `visible' means search just visible frames on the
+                current terminal,
+               0 means search visible and iconified frames on the
+                current terminal,
                a window means search the frame that window belongs to,
                a frame means consider windows on that frame, only.  */
 
@@ -1836,8 +1838,8 @@ candidate_window_p (Lisp_Object window, Lisp_Object owindow, Lisp_Object minibuf
 
 
 /* Decode arguments as allowed by Fnext_window, Fprevious_window, and
-   Fwindow_list.  See there for the meaning of WINDOW, MINIBUF, and
-   ALL_FRAMES.  */
+   Fwindow_list.  See candidate_window_p for the meaning of WINDOW,
+   MINIBUF, and ALL_FRAMES.  */
 
 static void
 decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object *all_frames)
@@ -1871,12 +1873,6 @@ decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object
     ;
   else if (!EQ (*all_frames, Qt))
     *all_frames = Qnil;
-
-  /* Now *ALL_FRAMES is t meaning search all frames, nil meaning
-     search just current frame, `visible' meaning search just visible
-     frames, 0 meaning search visible and iconified frames, or a
-     window, meaning search the frame that window belongs to, or a
-     frame, meaning consider windows on that frame, only.  */
 }
 
 
@@ -1974,9 +1970,9 @@ ALL-FRAMES nil or omitted means consider all windows on WINDOW's
  windows on all frames that share that minibuffer too.
 ALL-FRAMES t means consider all windows on all existing frames.
 ALL-FRAMES `visible' means consider all windows on all visible
- frames.
+ frames on the current terminal.
 ALL-FRAMES 0 means consider all windows on all visible and
- iconified frames.
+ iconified frames on the current terminal.
 ALL-FRAMES a frame means consider all windows on that frame only.
 Anything else means consider all windows on WINDOW's frame and no
  others.
index 473a43bbc3cb8b49d1d5aeba98c45ae2d7d9e4df..9f0809e4f1675a3d4fdb904514a19f3125ad01c3 100644 (file)
@@ -788,14 +788,6 @@ void run_window_configuration_change_hook (struct frame *f);
 void set_window_buffer (Lisp_Object window, Lisp_Object buffer,
                         int run_hooks_p, int keep_margins_p);
 
-/* Prompt to display in front of the minibuffer contents.  */
-
-extern Lisp_Object minibuf_prompt;
-
-/* The visual width of the above.  */
-
-extern int minibuf_prompt_width;
-
 /* This is the window where the echo area message was displayed.  It
    is always a minibuffer window, but it may not be the same window
    currently active as a minibuffer.  */
@@ -877,4 +869,3 @@ extern void keys_of_window (void);
 extern int window_box_text_cols (struct window *w);
 
 #endif /* not WINDOW_H_INCLUDED */
-
index e144237d34ea524353003039605e65a7d19c10db..44cb7130119945348ba3658d58c97134ddbaf80e 100644 (file)
@@ -483,15 +483,6 @@ int buffer_shared;
 
 static Lisp_Object default_invis_vector[3];
 
-/* Prompt to display in front of the mini-buffer contents.  */
-
-Lisp_Object minibuf_prompt;
-
-/* Width of current mini-buffer prompt.  Only set after display_line
-   of the line that contains the prompt.  */
-
-int minibuf_prompt_width;
-
 /* This is the window where the echo area message was displayed.  It
    is always a mini-buffer window, but it may not be the same window
    currently active as a mini-buffer.  */
@@ -771,7 +762,7 @@ static Lisp_Object get_it_property (struct it *it, Lisp_Object prop);
 
 static void handle_line_prefix (struct it *);
 
-static void pint2str (char *, int, int);
+static void pint2str (char *, int, EMACS_INT);
 static void pint2hrstr (char *, int, int);
 static struct text_pos run_window_scroll_functions (Lisp_Object,
                                                     struct text_pos);
@@ -2477,9 +2468,9 @@ init_iterator (struct it *it, struct window *w,
              && WINDOWP (minibuf_selected_window)
              && w == XWINDOW (minibuf_selected_window))))
     {
-      EMACS_INT charpos = marker_position (BVAR (current_buffer, mark));
-      it->region_beg_charpos = min (PT, charpos);
-      it->region_end_charpos = max (PT, charpos);
+      EMACS_INT markpos = marker_position (BVAR (current_buffer, mark));
+      it->region_beg_charpos = min (PT, markpos);
+      it->region_end_charpos = max (PT, markpos);
     }
   else
     it->region_beg_charpos = it->region_end_charpos = -1;
@@ -3183,11 +3174,11 @@ handle_fontified_prop (struct it *it)
        safe_call1 (val, pos);
       else
        {
-         Lisp_Object globals, fn;
+         Lisp_Object fns, fn;
          struct gcpro gcpro1, gcpro2;
 
-         globals = Qnil;
-         GCPRO2 (val, globals);
+         fns = Qnil;
+         GCPRO2 (val, fns);
 
          for (; CONSP (val); val = XCDR (val))
            {
@@ -3200,11 +3191,11 @@ handle_fontified_prop (struct it *it)
                     In a global value, t should not occur.  If it
                     does, we must ignore it to avoid an endless
                     loop.  */
-                 for (globals = Fdefault_value (Qfontification_functions);
-                      CONSP (globals);
-                      globals = XCDR (globals))
+                 for (fns = Fdefault_value (Qfontification_functions);
+                      CONSP (fns);
+                      fns = XCDR (fns))
                    {
-                     fn = XCAR (globals);
+                     fn = XCAR (fns);
                      if (!EQ (fn, Qt))
                        safe_call1 (fn, pos);
                    }
@@ -3989,12 +3980,12 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
          else if (NUMBERP (it->font_height))
            {
              /* Value is a multiple of the canonical char height.  */
-             struct face *face;
+             struct face *f;
 
-             face = FACE_FROM_ID (it->f,
-                                  lookup_basic_face (it->f, DEFAULT_FACE_ID));
+             f = FACE_FROM_ID (it->f,
+                               lookup_basic_face (it->f, DEFAULT_FACE_ID));
              new_height = (XFLOATINT (it->font_height)
-                           * XINT (face->lface[LFACE_HEIGHT_INDEX]));
+                           * XINT (f->lface[LFACE_HEIGHT_INDEX]));
            }
          else
            {
@@ -7982,7 +7973,7 @@ message_dolog (const char *m, EMACS_INT nbytes, int nlflag, int multibyte)
       if (nlflag)
        {
          EMACS_INT this_bol, this_bol_byte, prev_bol, prev_bol_byte;
-         int dup;
+         int dups;
          insert_1 ("\n", 1, 1, 0, 0);
 
          scan_newline (Z, Z_BYTE, BEG, BEG_BYTE, -2, 0);
@@ -7997,20 +7988,20 @@ message_dolog (const char *m, EMACS_INT nbytes, int nlflag, int multibyte)
              prev_bol = PT;
              prev_bol_byte = PT_BYTE;
 
-             dup = message_log_check_duplicate (prev_bol, prev_bol_byte,
-                                                this_bol, this_bol_byte);
-             if (dup)
+             dups = message_log_check_duplicate (prev_bol, prev_bol_byte,
+                                                 this_bol, this_bol_byte);
+             if (dups)
                {
                  del_range_both (prev_bol, prev_bol_byte,
                                  this_bol, this_bol_byte, 0);
-                 if (dup > 1)
+                 if (dups > 1)
                    {
                      char dupstr[40];
                      int duplen;
 
                      /* If you change this format, don't forget to also
                         change message_log_check_duplicate.  */
-                     sprintf (dupstr, " [%d times]", dup);
+                     sprintf (dupstr, " [%d times]", dups);
                      duplen = strlen (dupstr);
                      TEMP_SET_PT_BOTH (Z - 1, Z_BYTE - 1);
                      insert_1 (dupstr, duplen, 1, 0, 1);
@@ -8340,20 +8331,20 @@ message_with_string (const char *m, Lisp_Object string, int log)
         cmd_error, so this must be just an informative message; toss it.  */
       if (FRAME_MESSAGE_BUF (f))
        {
-         Lisp_Object args[2], message;
+         Lisp_Object args[2], msg;
          struct gcpro gcpro1, gcpro2;
 
          args[0] = build_string (m);
-         args[1] = message = string;
-         GCPRO2 (args[0], message);
+         args[1] = msg = string;
+         GCPRO2 (args[0], msg);
          gcpro1.nvars = 2;
 
-         message = Fformat (2, args);
+         msg = Fformat (2, args);
 
          if (log)
-           message3 (message, SBYTES (message), STRING_MULTIBYTE (message));
+           message3 (msg, SBYTES (msg), STRING_MULTIBYTE (msg));
          else
-           message3_nolog (message, SBYTES (message), STRING_MULTIBYTE (message));
+           message3_nolog (msg, SBYTES (msg), STRING_MULTIBYTE (msg));
 
          UNGCPRO;
 
@@ -11420,8 +11411,8 @@ redisplay_internal (int preserve_echo_area)
 {
   struct window *w = XWINDOW (selected_window);
   struct window *sw;
-  struct frame *f;
-  int pause;
+  struct frame *fr;
+  int pending;
   int must_finish = 0;
   struct text_pos tlbufpos, tlendpos;
   int number_of_visible_frames;
@@ -11446,10 +11437,10 @@ redisplay_internal (int preserve_echo_area)
   /* Don't examine these until after testing Vinhibit_redisplay.
      When Emacs is shutting down, perhaps because its connection to
      X has dropped, we should not look at them at all.  */
-  f = XFRAME (w->frame);
+  fr = XFRAME (w->frame);
   sf = SELECTED_FRAME ();
 
-  if (!f->glyphs_initialized_p)
+  if (!fr->glyphs_initialized_p)
     return;
 
 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS)
@@ -11491,7 +11482,7 @@ redisplay_internal (int preserve_echo_area)
        may need to run Elisp code (via prepare_menu_bars).  */
     select_frame_for_redisplay (old_frame);
 
-  pause = 0;
+  pending = 0;
   reconsider_clip_changes (w, current_buffer);
   last_escape_glyph_frame = NULL;
   last_escape_glyph_face_id = (1 << FACE_ID_BITS);
@@ -11588,8 +11579,7 @@ redisplay_internal (int preserve_echo_area)
       && !(PT == XFASTINT (w->last_point)
           && XFASTINT (w->last_modified) >= MODIFF
           && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF)
-      && (XFASTINT (w->column_number_displayed)
-          != (int) current_column ()))  /* iftc */
+      && (XFASTINT (w->column_number_displayed) != current_column ()))
     w->update_mode_line = Qt;
 
   unbind_to (count1, Qnil);
@@ -11963,7 +11953,7 @@ redisplay_internal (int preserve_echo_area)
 
                  /* Update the display.  */
                  set_window_update_flags (XWINDOW (f->root_window), 1);
-                 pause |= update_frame (f, 0, 0);
+                 pending |= update_frame (f, 0, 0);
                  f->updated_p = 1;
                }
            }
@@ -11977,7 +11967,7 @@ redisplay_internal (int preserve_echo_area)
        select_frame_for_redisplay (old_frame);
       eassert (EQ (XFRAME (selected_frame)->selected_window, selected_window));
 
-      if (!pause)
+      if (!pending)
        {
          /* Do the mark_window_display_accurate after all windows have
             been redisplayed because this call resets flags in buffers
@@ -12026,7 +12016,7 @@ redisplay_internal (int preserve_echo_area)
            goto retry;
 
          XWINDOW (selected_window)->must_be_updated_p = 1;
-         pause = update_frame (sf, 0, 0);
+         pending = update_frame (sf, 0, 0);
        }
 
       /* We may have called echo_area_display at the top of this
@@ -12040,15 +12030,15 @@ redisplay_internal (int preserve_echo_area)
       if (mini_frame != sf && FRAME_WINDOW_P (mini_frame))
        {
          XWINDOW (mini_window)->must_be_updated_p = 1;
-         pause |= update_frame (mini_frame, 0, 0);
-         if (!pause && hscroll_windows (mini_window))
+         pending |= update_frame (mini_frame, 0, 0);
+         if (!pending && hscroll_windows (mini_window))
            goto retry;
        }
     }
 
   /* If display was paused because of pending input, make sure we do a
      thorough update the next time.  */
-  if (pause)
+  if (pending)
     {
       /* Prevent the optimization at the beginning of
         redisplay_internal that tries a single-line update of the
@@ -12098,7 +12088,7 @@ redisplay_internal (int preserve_echo_area)
      redisplay constructing glyphs, so simply exposing a frame won't
      display anything in this case.  So, we have to display these
      frames here explicitly.  */
-  if (!pause)
+  if (!pending)
     {
       Lisp_Object tail, frame;
       int new_count = 0;
@@ -12126,7 +12116,7 @@ redisplay_internal (int preserve_echo_area)
 
   /* If we just did a pending size change, or have additional
      visible frames, or selected_window changed, redisplay again.  */
-  if ((windows_or_buffers_changed && !pause)
+  if ((windows_or_buffers_changed && !pending)
       || (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw))
     goto retry;
 
@@ -12382,18 +12372,6 @@ redisplay_window_1 (Lisp_Object window)
 }
 \f
 
-/* Increment GLYPH until it reaches END or CONDITION fails while
-   adding (GLYPH)->pixel_width to X. */
-
-#define SKIP_GLYPHS(glyph, end, x, condition)  \
-  do                                           \
-    {                                          \
-      (x) += (glyph)->pixel_width;             \
-      ++(glyph);                               \
-    }                                          \
-  while ((glyph) < (end) && (condition))
-
-
 /* Set cursor position of W.  PT is assumed to be displayed in ROW.
    DELTA and DELTA_BYTES are the numbers of characters and bytes by
    which positions recorded in ROW differ from current buffer
@@ -13719,7 +13697,6 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
   int buffer_unchanged_p = 0;
   int temp_scroll_step = 0;
   int count = SPECPDL_INDEX ();
-  int rc;
   int centering_position = -1;
   int last_line_misfit = 0;
   EMACS_INT beg_unchanged, end_unchanged;
@@ -13841,8 +13818,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
       && !(PT == XFASTINT (w->last_point)
           && XFASTINT (w->last_modified) >= MODIFF
           && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF)
-      && (XFASTINT (w->column_number_displayed)
-          != (int) current_column ()))  /* iftc */
+      && (XFASTINT (w->column_number_displayed) != current_column ()))
     update_mode_line = 1;
 
   /* Count number of windows showing the selected buffer.  An indirect
@@ -14032,12 +14008,15 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
   /* Handle case where text has not changed, only point, and it has
      not moved off the frame, and we are not retrying after hscroll.
      (current_matrix_up_to_date_p is nonzero when retrying.)  */
-  if (current_matrix_up_to_date_p
-      && (rc = try_cursor_movement (window, startp, &temp_scroll_step),
-         rc != CURSOR_MOVEMENT_CANNOT_BE_USED))
+  if (current_matrix_up_to_date_p)
     {
+      int rc = try_cursor_movement (window, startp, &temp_scroll_step);
+
       switch (rc)
        {
+       case CURSOR_MOVEMENT_CANNOT_BE_USED:
+         break;
+
        case CURSOR_MOVEMENT_SUCCESS:
          used_current_matrix_p = 1;
          goto done;
@@ -14347,11 +14326,10 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
        || INTEGERP (w->base_line_pos)
        /* Column number is displayed and different from the one displayed.  */
        || (!NILP (w->column_number_displayed)
-          && (XFASTINT (w->column_number_displayed)
-               != (int) current_column ()))) /* iftc */
-       /* This means that the window has a mode line.  */
-       && (WINDOW_WANTS_MODELINE_P (w)
-          || WINDOW_WANTS_HEADER_LINE_P (w)))
+          && (XFASTINT (w->column_number_displayed) != current_column ())))
+      /* This means that the window has a mode line.  */
+      && (WINDOW_WANTS_MODELINE_P (w)
+         || WINDOW_WANTS_HEADER_LINE_P (w)))
     {
       display_mode_lines (w);
 
@@ -14597,7 +14575,7 @@ static int
 try_window_reusing_current_matrix (struct window *w)
 {
   struct frame *f = XFRAME (w->frame);
-  struct glyph_row *row, *bottom_row;
+  struct glyph_row *bottom_row;
   struct it it;
   struct run run;
   struct text_pos start, new_start;
@@ -14706,6 +14684,8 @@ try_window_reusing_current_matrix (struct window *w)
         have at least one reusable row.  */
       if (it.current_y < it.last_visible_y)
        {
+         struct glyph_row *row;
+
          /* IT.vpos always starts from 0; it counts text lines.  */
          nrows_scrolled = it.vpos - (start_row - MATRIX_FIRST_TEXT_ROW (w->current_matrix));
 
@@ -15491,41 +15471,41 @@ try_window_id (struct window *w)
          || (last_changed_charpos < CHARPOS (start) - 1
              && FETCH_BYTE (BYTEPOS (start) - 1) == '\n')))
     {
-      EMACS_INT Z_old, delta, Z_BYTE_old, delta_bytes;
+      EMACS_INT Z_old, Z_delta, Z_BYTE_old, Z_delta_bytes;
       struct glyph_row *r0;
 
       /* Compute how many chars/bytes have been added to or removed
         from the buffer.  */
       Z_old = MATRIX_ROW_END_CHARPOS (row) + XFASTINT (w->window_end_pos);
       Z_BYTE_old = MATRIX_ROW_END_BYTEPOS (row) + w->window_end_bytepos;
-      delta = Z - Z_old;
-      delta_bytes = Z_BYTE - Z_BYTE_old;
+      Z_delta = Z - Z_old;
+      Z_delta_bytes = Z_BYTE - Z_BYTE_old;
 
       /* Give up if PT is not in the window.  Note that it already has
         been checked at the start of try_window_id that PT is not in
         front of the window start.  */
-      if (PT >= MATRIX_ROW_END_CHARPOS (row) + delta)
+      if (PT >= MATRIX_ROW_END_CHARPOS (row) + Z_delta)
        GIVE_UP (13);
 
       /* If window start is unchanged, we can reuse the whole matrix
         as is, after adjusting glyph positions.  No need to compute
         the window end again, since its offset from Z hasn't changed.  */
       r0 = MATRIX_FIRST_TEXT_ROW (current_matrix);
-      if (CHARPOS (start) == MATRIX_ROW_START_CHARPOS (r0) + delta
-         && BYTEPOS (start) == MATRIX_ROW_START_BYTEPOS (r0) + delta_bytes
+      if (CHARPOS (start) == MATRIX_ROW_START_CHARPOS (r0) + Z_delta
+         && BYTEPOS (start) == MATRIX_ROW_START_BYTEPOS (r0) + Z_delta_bytes
          /* PT must not be in a partially visible line.  */
-         && !(PT >= MATRIX_ROW_START_CHARPOS (row) + delta
+         && !(PT >= MATRIX_ROW_START_CHARPOS (row) + Z_delta
               && MATRIX_ROW_BOTTOM_Y (row) > window_text_bottom_y (w)))
        {
          /* Adjust positions in the glyph matrix.  */
-         if (delta || delta_bytes)
+         if (Z_delta || Z_delta_bytes)
            {
              struct glyph_row *r1
                = MATRIX_BOTTOM_TEXT_ROW (current_matrix, w);
              increment_matrix_positions (w->current_matrix,
                                          MATRIX_ROW_VPOS (r0, current_matrix),
                                          MATRIX_ROW_VPOS (r1, current_matrix),
-                                         delta, delta_bytes);
+                                         Z_delta, Z_delta_bytes);
            }
 
          /* Set the cursor.  */
@@ -15841,9 +15821,9 @@ try_window_id (struct window *w)
        {
          /* Terminal frame.  In this case, dvpos gives the number of
             lines to scroll by; dvpos < 0 means scroll up.  */
-         int first_unchanged_at_end_vpos
+         int from_vpos
            = MATRIX_ROW_VPOS (first_unchanged_at_end_row, w->current_matrix);
-         int from = WINDOW_TOP_EDGE_LINE (w) + first_unchanged_at_end_vpos;
+         int from = WINDOW_TOP_EDGE_LINE (w) + from_vpos;
          int end = (WINDOW_TOP_EDGE_LINE (w)
                     + (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0)
                     + window_internal_height (w));
@@ -16574,7 +16554,6 @@ static void
 compute_line_metrics (struct it *it)
 {
   struct glyph_row *row = it->glyph_row;
-  int area, i;
 
   if (FRAME_WINDOW_P (it->f))
     {
@@ -16639,14 +16618,17 @@ compute_line_metrics (struct it *it)
     }
 
   /* Compute a hash code for this row.  */
-  row->hash = 0;
-  for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
-    for (i = 0; i < row->used[area]; ++i)
-      row->hash = ((((row->hash << 4) + (row->hash >> 24)) & 0x0fffffff)
-                  + row->glyphs[area][i].u.val
-                  + row->glyphs[area][i].face_id
-                  + row->glyphs[area][i].padding_p
-                  + (row->glyphs[area][i].type << 2));
+  {
+    int area, i;
+    row->hash = 0;
+    for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
+      for (i = 0; i < row->used[area]; ++i)
+       row->hash = ((((row->hash << 4) + (row->hash >> 24)) & 0x0fffffff)
+                    + row->glyphs[area][i].u.val
+                    + row->glyphs[area][i].face_id
+                    + row->glyphs[area][i].padding_p
+                    + (row->glyphs[area][i].type << 2));
+  }
 
   it->max_ascent = it->max_descent = 0;
   it->max_phys_ascent = it->max_phys_descent = 0;
@@ -16979,7 +16961,7 @@ highlight_trailing_whitespace (struct frame *f, struct glyph_row *row)
 static int
 cursor_row_p (struct window *w, struct glyph_row *row)
 {
-  int cursor_row_p = 1;
+  int result = 1;
 
   if (PT == CHARPOS (row->end.pos))
     {
@@ -16992,7 +16974,7 @@ cursor_row_p (struct window *w, struct glyph_row *row)
       if (CHARPOS (row->end.string_pos) >= 0)
        {
          if (row->continued_p)
-           cursor_row_p = 1;
+           result = 1;
          else
            {
              /* Check for `display' property.  */
@@ -17000,14 +16982,14 @@ cursor_row_p (struct window *w, struct glyph_row *row)
              struct glyph *end = beg + row->used[TEXT_AREA] - 1;
              struct glyph *glyph;
 
-             cursor_row_p = 0;
+             result = 0;
              for (glyph = end; glyph >= beg; --glyph)
                if (STRINGP (glyph->object))
                  {
                    Lisp_Object prop
                      = Fget_char_property (make_number (PT),
                                            Qdisplay, Qnil);
-                   cursor_row_p =
+                   result =
                      (!NILP (prop)
                       && display_prop_string_p (prop, glyph->object));
                    break;
@@ -17021,23 +17003,23 @@ cursor_row_p (struct window *w, struct glyph_row *row)
             That's because CHARPOS (ROW->end.pos) would equal
             PT if PT is before the character.  */
          if (!row->ends_in_ellipsis_p)
-           cursor_row_p = row->continued_p;
+           result = row->continued_p;
          else
          /* If the row ends in an ellipsis, then
             CHARPOS (ROW->end.pos) will equal point after the
             invisible text.  We want that position to be displayed
             after the ellipsis.  */
-           cursor_row_p = 0;
+           result = 0;
        }
       /* If the row ends at ZV, display the cursor at the end of that
         row instead of at the start of the row below.  */
       else if (row->ends_at_zv_p)
-       cursor_row_p = 1;
+       result = 1;
       else
-       cursor_row_p = 0;
+       result = 0;
     }
 
-  return cursor_row_p;
+  return result;
 }
 
 \f
@@ -17345,7 +17327,7 @@ display_line (struct it *it)
   while (1)
     {
       int n_glyphs_before, hpos_before, x_before;
-      int x, i, nglyphs;
+      int x, nglyphs;
       int ascent = 0, descent = 0, phys_ascent = 0, phys_descent = 0;
 
       /* Retrieve the next thing to display.  Value is zero if end of
@@ -17470,7 +17452,7 @@ display_line (struct it *it)
        }
       else
        {
-         int new_x;
+         int i, new_x;
          struct glyph *glyph;
 
          for (i = 0; i < nglyphs; ++i, x = new_x)
@@ -18998,7 +18980,7 @@ are the selected window and the WINDOW's buffer).  */)
    the positive integer D to BUF using a minimal field width WIDTH.  */
 
 static void
-pint2str (register char *buf, register int width, register int d)
+pint2str (register char *buf, register int width, register EMACS_INT d)
 {
   register char *p = buf;
 
@@ -19327,7 +19309,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
        return "";
       else
        {
-         int col = (int) current_column (); /* iftc */
+         EMACS_INT col = current_column ();
          w->column_number_displayed = make_number (col);
          pint2str (decode_mode_spec_buf, field_width, col);
          return decode_mode_spec_buf;
@@ -19924,16 +19906,16 @@ display_string (const char *string, Lisp_Object lisp_string, Lisp_Object face_st
            {
              if (!FRAME_WINDOW_P (it->f))
                {
-                 int i, n;
+                 int ii, n;
 
                  if (it->current_x > it->last_visible_x)
                    {
-                     for (i = row->used[TEXT_AREA] - 1; i > 0; --i)
-                       if (!CHAR_GLYPH_PADDING_P (row->glyphs[TEXT_AREA][i]))
+                     for (ii = row->used[TEXT_AREA] - 1; ii > 0; --ii)
+                       if (!CHAR_GLYPH_PADDING_P (row->glyphs[TEXT_AREA][ii]))
                          break;
-                     for (n = row->used[TEXT_AREA]; i < n; ++i)
+                     for (n = row->used[TEXT_AREA]; ii < n; ++ii)
                        {
-                         row->used[TEXT_AREA] = i;
+                         row->used[TEXT_AREA] = ii;
                          produce_special_glyphs (it, IT_TRUNCATION);
                        }
                    }
@@ -21165,7 +21147,6 @@ compute_overhangs_and_x (struct glyph_string *s, int x, int backward_p)
   do                                                                       \
     {                                                                      \
       int face_id;                                                         \
-      XChar2b *char2b;                                                     \
                                                                            \
       face_id = (row)->glyphs[area][START].face_id;                        \
                                                                            \
@@ -22262,7 +22243,8 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
     }
   else
     {
-      char buf[7], *str;
+      char buf[7];
+      const char *str;
       unsigned int code[6];
       int upper_len;
       int ascent, descent;
@@ -23252,7 +23234,7 @@ get_specified_cursor_type (Lisp_Object arg, int *width)
 void
 set_frame_cursor_types (struct frame *f, Lisp_Object arg)
 {
-  int width;
+  int width = 1;
   Lisp_Object tem;
 
   FRAME_DESIRED_CURSOR (f) = get_specified_cursor_type (arg, &width);
@@ -23783,7 +23765,7 @@ display_and_set_cursor (struct window *w, int on,
 /* Switch the display of W's cursor on or off, according to the value
    of ON.  */
 
-void
+static void
 update_window_cursor (struct window *w, int on)
 {
   /* Don't update cursor in windows whose frame is in the process
@@ -24197,7 +24179,7 @@ rows_from_pos_range (struct window *w,
    for the overlay or run of text properties specifying the mouse
    face.  BEFORE_STRING and AFTER_STRING, if non-nil, are a
    before-string and after-string that must also be highlighted.
-   DISPLAY_STRING, if non-nil, is a display string that may cover some
+   COVER_STRING, if non-nil, is a display string that may cover some
    or all of the highlighted text.  */
 
 static void
@@ -24208,7 +24190,7 @@ mouse_face_from_buffer_pos (Lisp_Object window,
                            EMACS_INT end_charpos,
                            Lisp_Object before_string,
                            Lisp_Object after_string,
-                           Lisp_Object display_string)
+                           Lisp_Object cover_string)
 {
   struct window *w = XWINDOW (window);
   struct glyph_row *first = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
@@ -24217,7 +24199,7 @@ mouse_face_from_buffer_pos (Lisp_Object window,
   EMACS_INT ignore, pos;
   int x;
 
-  xassert (NILP (display_string) || STRINGP (display_string));
+  xassert (NILP (cover_string) || STRINGP (cover_string));
   xassert (NILP (before_string) || STRINGP (before_string));
   xassert (NILP (after_string) || STRINGP (after_string));
 
@@ -24227,7 +24209,7 @@ mouse_face_from_buffer_pos (Lisp_Object window,
     r1 = MATRIX_ROW (w->current_matrix, XFASTINT (w->window_end_vpos));
   /* If the before-string or display-string contains newlines,
      rows_from_pos_range skips to its last row.  Move back.  */
-  if (!NILP (before_string) || !NILP (display_string))
+  if (!NILP (before_string) || !NILP (cover_string))
     {
       struct glyph_row *prev;
       while ((prev = r1 - 1, prev >= first)
@@ -24239,7 +24221,7 @@ mouse_face_from_buffer_pos (Lisp_Object window,
          while (--glyph >= beg && INTEGERP (glyph->object));
          if (glyph < beg
              || !(EQ (glyph->object, before_string)
-                  || EQ (glyph->object, display_string)))
+                  || EQ (glyph->object, cover_string)))
            break;
          r1 = prev;
        }
@@ -24282,7 +24264,7 @@ mouse_face_from_buffer_pos (Lisp_Object window,
   hlinfo->mouse_face_end_row = MATRIX_ROW_VPOS (r2, w->current_matrix);
 
   /* For a bidi-reordered row, the positions of BEFORE_STRING,
-     AFTER_STRING, DISPLAY_STRING, START_CHARPOS, and END_CHARPOS
+     AFTER_STRING, COVER_STRING, START_CHARPOS, and END_CHARPOS
      could be anywhere in the row and in any order.  The strategy
      below is to find the leftmost and the rightmost glyph that
      belongs to either of these 3 strings, or whose position is
@@ -24308,11 +24290,11 @@ mouse_face_from_buffer_pos (Lisp_Object window,
          x += glyph->pixel_width;
 
       /* Scan the glyph row, looking for BEFORE_STRING, AFTER_STRING,
-        or DISPLAY_STRING, and the first glyph from buffer whose
+        or COVER_STRING, and the first glyph from buffer whose
         position is between START_CHARPOS and END_CHARPOS.  */
       for (; glyph < end
             && !INTEGERP (glyph->object)
-            && !EQ (glyph->object, display_string)
+            && !EQ (glyph->object, cover_string)
             && !(BUFFERP (glyph->object)
                  && (glyph->charpos >= start_charpos
                      && glyph->charpos < end_charpos));
@@ -24359,11 +24341,11 @@ mouse_face_from_buffer_pos (Lisp_Object window,
          ;
 
       /* Scan the glyph row, looking for BEFORE_STRING, AFTER_STRING,
-        or DISPLAY_STRING, and the first glyph from buffer whose
+        or COVER_STRING, and the first glyph from buffer whose
         position is between START_CHARPOS and END_CHARPOS.  */
       for (; glyph > end
             && !INTEGERP (glyph->object)
-            && !EQ (glyph->object, display_string)
+            && !EQ (glyph->object, cover_string)
             && !(BUFFERP (glyph->object)
                  && (glyph->charpos >= start_charpos
                      && glyph->charpos < end_charpos));
@@ -24424,12 +24406,12 @@ mouse_face_from_buffer_pos (Lisp_Object window,
        --end;
       /* Scan the rest of the glyph row from the end, looking for the
         first glyph that comes from BEFORE_STRING, AFTER_STRING, or
-        DISPLAY_STRING, or whose position is between START_CHARPOS
+        COVER_STRING, or whose position is between START_CHARPOS
         and END_CHARPOS */
       for (--end;
             end > glyph
             && !INTEGERP (end->object)
-            && !EQ (end->object, display_string)
+            && !EQ (end->object, cover_string)
             && !(BUFFERP (end->object)
                  && (end->charpos >= start_charpos
                      && end->charpos < end_charpos));
@@ -24474,12 +24456,12 @@ mouse_face_from_buffer_pos (Lisp_Object window,
        }
       /* Scan the rest of the glyph row from the end, looking for the
         first glyph that comes from BEFORE_STRING, AFTER_STRING, or
-        DISPLAY_STRING, or whose position is between START_CHARPOS
+        COVER_STRING, or whose position is between START_CHARPOS
         and END_CHARPOS */
       for ( ;
             end < glyph
             && !INTEGERP (end->object)
-            && !EQ (end->object, display_string)
+            && !EQ (end->object, cover_string)
             && !(BUFFERP (end->object)
                  && (end->charpos >= start_charpos
                      && end->charpos < end_charpos));
@@ -25285,7 +25267,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
       EMACS_INT pos;
       struct glyph *glyph;
       Lisp_Object object;
-      Lisp_Object mouse_face = Qnil, overlay = Qnil, position;
+      Lisp_Object mouse_face = Qnil, position;
       Lisp_Object *overlay_vec = NULL;
       int noverlays;
       struct buffer *obuf;
@@ -25418,7 +25400,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
              && mouse_face_overlay_overlaps (hlinfo->mouse_face_overlay)))
        {
          /* Find the highest priority overlay with a mouse-face.  */
-         overlay = Qnil;
+         Lisp_Object overlay = Qnil;
          for (i = noverlays - 1; i >= 0 && NILP (overlay); --i)
            {
              mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
@@ -25446,19 +25428,19 @@ note_mouse_highlight (struct frame *f, int x, int y)
            {
              /* The mouse-highlighting comes from a display string
                 with a mouse-face.  */
-             Lisp_Object b, e;
+             Lisp_Object s, e;
              EMACS_INT ignore;
 
-             b = Fprevious_single_property_change
+             s = Fprevious_single_property_change
                (make_number (pos + 1), Qmouse_face, object, Qnil);
              e = Fnext_single_property_change
                (position, Qmouse_face, object, Qnil);
-             if (NILP (b))
-               b = make_number (0);
+             if (NILP (s))
+               s = make_number (0);
              if (NILP (e))
                e = make_number (SCHARS (object) - 1);
              mouse_face_from_string_pos (w, hlinfo, object,
-                                         XINT (b), XINT (e));
+                                         XINT (s), XINT (e));
              hlinfo->mouse_face_past_end = 0;
              hlinfo->mouse_face_window = window;
              hlinfo->mouse_face_face_id
@@ -25471,7 +25453,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
            {
              /* The mouse-highlighting, if any, comes from an overlay
                 or text property in the buffer.  */
-             Lisp_Object buffer, display_string;
+             Lisp_Object buffer, cover_string;
 
              if (STRINGP (object))
                {
@@ -25485,13 +25467,13 @@ note_mouse_highlight (struct frame *f, int x, int y)
                      mouse_face = get_char_property_and_overlay
                        (make_number (pos), Qmouse_face, w->buffer, &overlay);
                      buffer = w->buffer;
-                     display_string = object;
+                     cover_string = object;
                    }
                }
              else
                {
                  buffer = object;
-                 display_string = Qnil;
+                 cover_string = Qnil;
                }
 
              if (!NILP (mouse_face))
@@ -25543,7 +25525,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
                                              XFASTINT (before),
                                              XFASTINT (after),
                                              before_string, after_string,
-                                             display_string);
+                                             cover_string);
                  cursor = No_Cursor;
                }
            }
@@ -25572,16 +25554,16 @@ note_mouse_highlight (struct frame *f, int x, int y)
          }
        else
          {
-           Lisp_Object object = glyph->object;
+           Lisp_Object obj = glyph->object;
            EMACS_INT charpos = glyph->charpos;
 
            /* Try text properties.  */
-           if (STRINGP (object)
+           if (STRINGP (obj)
                && charpos >= 0
-               && charpos < SCHARS (object))
+               && charpos < SCHARS (obj))
              {
                help = Fget_text_property (make_number (charpos),
-                                          Qhelp_echo, object);
+                                          Qhelp_echo, obj);
                if (NILP (help))
                  {
                    /* If the string itself doesn't specify a help-echo,
@@ -25589,30 +25571,30 @@ note_mouse_highlight (struct frame *f, int x, int y)
                    struct glyph_row *r
                      = MATRIX_ROW (w->current_matrix, vpos);
                    EMACS_INT start = MATRIX_ROW_START_CHARPOS (r);
-                   EMACS_INT pos = string_buffer_position (w, object, start);
-                   if (pos > 0)
+                   EMACS_INT p = string_buffer_position (w, obj, start);
+                   if (p > 0)
                      {
-                       help = Fget_char_property (make_number (pos),
+                       help = Fget_char_property (make_number (p),
                                                   Qhelp_echo, w->buffer);
                        if (!NILP (help))
                          {
-                           charpos = pos;
-                           object = w->buffer;
+                           charpos = p;
+                           obj = w->buffer;
                          }
                      }
                  }
              }
-           else if (BUFFERP (object)
+           else if (BUFFERP (obj)
                     && charpos >= BEGV
                     && charpos < ZV)
              help = Fget_text_property (make_number (charpos), Qhelp_echo,
-                                        object);
+                                        obj);
 
            if (!NILP (help))
              {
                help_echo_string = help;
                help_echo_window = window;
-               help_echo_object = object;
+               help_echo_object = obj;
                help_echo_pos = charpos;
              }
          }
@@ -25628,16 +25610,16 @@ note_mouse_highlight (struct frame *f, int x, int y)
 
          if (NILP (pointer))
            {
-             Lisp_Object object = glyph->object;
+             Lisp_Object obj = glyph->object;
              EMACS_INT charpos = glyph->charpos;
 
              /* Try text properties.  */
-             if (STRINGP (object)
+             if (STRINGP (obj)
                  && charpos >= 0
-                 && charpos < SCHARS (object))
+                 && charpos < SCHARS (obj))
                {
                  pointer = Fget_text_property (make_number (charpos),
-                                               Qpointer, object);
+                                               Qpointer, obj);
                  if (NILP (pointer))
                    {
                      /* If the string itself doesn't specify a pointer,
@@ -25645,18 +25627,17 @@ note_mouse_highlight (struct frame *f, int x, int y)
                      struct glyph_row *r
                        = MATRIX_ROW (w->current_matrix, vpos);
                      EMACS_INT start = MATRIX_ROW_START_CHARPOS (r);
-                     EMACS_INT pos = string_buffer_position (w, object,
-                                                             start);
-                     if (pos > 0)
-                       pointer = Fget_char_property (make_number (pos),
+                     EMACS_INT p = string_buffer_position (w, obj, start);
+                     if (p > 0)
+                       pointer = Fget_char_property (make_number (p),
                                                      Qpointer, w->buffer);
                    }
                }
-             else if (BUFFERP (object)
+             else if (BUFFERP (obj)
                       && charpos >= BEGV
                       && charpos < ZV)
                pointer = Fget_text_property (make_number (charpos),
-                                             Qpointer, object);
+                                             Qpointer, obj);
            }
        }
 #endif /* HAVE_WINDOW_SYSTEM */
@@ -26177,10 +26158,10 @@ expose_frame (struct frame *f, int x, int y, int w, int h)
       Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
       if (f == hlinfo->mouse_face_mouse_frame)
        {
-         int x = hlinfo->mouse_face_mouse_x;
-         int y = hlinfo->mouse_face_mouse_y;
+         int mouse_x = hlinfo->mouse_face_mouse_x;
+         int mouse_y = hlinfo->mouse_face_mouse_y;
          clear_mouse_face (hlinfo);
-         note_mouse_highlight (f, x, y);
+         note_mouse_highlight (f, mouse_x, mouse_y);
        }
     }
 }
index 01714900752806e522c9408507c200f8fed22d59..9fb3f3474fb0ba446863583580f5aa2ce7e9a878 100644 (file)
@@ -38,10 +38,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #endif
 #include <sys/stat.h>
 
-#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-
 #include "lisp.h"
 
 #ifdef USE_MOTIF
@@ -764,4 +760,3 @@ main (argc, argv)
   XCloseDisplay (display);
 }
 #endif /* TESTRM */
-
index dbfc6c6cefe33aebcb1afe20b40b7a024fcd30cb..b247b88bc947268d2d6fd27aa18aae4d69bdc521 100644 (file)
@@ -1,3 +1,12 @@
+2011-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * eshell.el: Move here from lisp/eshell/esh-test.el.
+
+2011-03-03  Christian Ohler  <ohler@gnu.org>
+
+       * automated/ert-tests.el (ert-test-explain-not-equal-keymaps):
+       New test.
+
 2011-02-20  Ulf Jasper  <ulf.jasper@web.de>
 
        * automated/icalendar-tests.el: Move from icalendar-testsuite.el;
index b6d70dee7e23a78bf3e5833c5cdb525c4d24f49c..cea994f64b834a471bb2b5b8a21c8b87e512d24a 100644 (file)
@@ -796,27 +796,32 @@ This macro is used to test if macroexpansion in `should' works."
   (should (equal (ert--string-first-line "foo\nbar") "foo"))
   (should (equal (ert--string-first-line " foo\nbar\nbaz\n") " foo")))
 
-(ert-deftest ert-test-explain-not-equal ()
-  (should (equal (ert--explain-not-equal nil 'foo)
+(ert-deftest ert-test-explain-equal ()
+  (should (equal (ert--explain-equal nil 'foo)
                  '(different-atoms nil foo)))
-  (should (equal (ert--explain-not-equal '(a a) '(a b))
+  (should (equal (ert--explain-equal '(a a) '(a b))
                  '(list-elt 1 (different-atoms a b))))
-  (should (equal (ert--explain-not-equal '(1 48) '(1 49))
+  (should (equal (ert--explain-equal '(1 48) '(1 49))
                  '(list-elt 1 (different-atoms (48 "#x30" "?0")
                                                (49 "#x31" "?1")))))
-  (should (equal (ert--explain-not-equal 'nil '(a))
+  (should (equal (ert--explain-equal 'nil '(a))
                  '(different-types nil (a))))
-  (should (equal (ert--explain-not-equal '(a b c) '(a b c d))
+  (should (equal (ert--explain-equal '(a b c) '(a b c d))
                  '(proper-lists-of-different-length 3 4 (a b c) (a b c d)
                                                     first-mismatch-at 3)))
   (let ((sym (make-symbol "a")))
-    (should (equal (ert--explain-not-equal 'a sym)
+    (should (equal (ert--explain-equal 'a sym)
                    `(different-symbols-with-the-same-name a ,sym)))))
 
-(ert-deftest ert-test-explain-not-equal-improper-list ()
-  (should (equal (ert--explain-not-equal '(a . b) '(a . c))
+(ert-deftest ert-test-explain-equal-improper-list ()
+  (should (equal (ert--explain-equal '(a . b) '(a . c))
                  '(cdr (different-atoms b c)))))
 
+(ert-deftest ert-test-explain-equal-keymaps ()
+  ;; This used to be very slow.
+  (should (equal (make-keymap) (make-keymap)))
+  (should (equal (make-sparse-keymap) (make-sparse-keymap))))
+
 (ert-deftest ert-test-significant-plist-keys ()
   (should (equal (ert--significant-plist-keys '()) '()))
   (should (equal (ert--significant-plist-keys '(a b c d e f c g p q r nil s t))
@@ -852,21 +857,21 @@ This macro is used to test if macroexpansion in `should' works."
   (should (equal (ert--abbreviate-string "bar" 1 t) "r"))
   (should (equal (ert--abbreviate-string "bar" 0 t) "")))
 
-(ert-deftest ert-test-explain-not-equal-string-properties ()
+(ert-deftest ert-test-explain-equal-string-properties ()
   (should
-   (equal (ert--explain-not-equal-including-properties #("foo" 0 1 (a b))
-                                                       "foo")
+   (equal (ert--explain-equal-including-properties #("foo" 0 1 (a b))
+                                                   "foo")
           '(char 0 "f"
                  (different-properties-for-key a (different-atoms b nil))
                  context-before ""
                  context-after "oo")))
-  (should (equal (ert--explain-not-equal-including-properties
+  (should (equal (ert--explain-equal-including-properties
                   #("foo" 1 3 (a b))
                   #("goo" 0 1 (c d)))
                  '(array-elt 0 (different-atoms (?f "#x66" "?f")
                                                 (?g "#x67" "?g")))))
   (should
-   (equal (ert--explain-not-equal-including-properties
+   (equal (ert--explain-equal-including-properties
            #("foo" 0 1 (a b c d) 1 3 (a b))
            #("foo" 0 1 (c d a b) 1 2 (a foo)))
           '(char 1 "o" (different-properties-for-key a (different-atoms b foo))
similarity index 58%
rename from lisp/eshell/esh-test.el
rename to test/eshell.el
index f5c55dd8ae79c6b7c37101819e17279e2dd34ee0..3b392e84c24885d5f970330b90b93f2514a9be5f 100644 (file)
@@ -28,6 +28,7 @@
 ;;; Code:
 
 (eval-when-compile
+  (require 'cl)                                ; assert
   (require 'eshell)
   (require 'esh-util))
 (require 'esh-mode)
       (insert "Testing Eshell under " (emacs-version))
       (switch-to-buffer test-buffer)
       (delete-other-windows))
-    (eshell-for funcname (sort (all-completions "eshell-test--"
+    (dolist (funcname (sort (all-completions "eshell-test--"
                                                obarray 'functionp)
-                              'string-lessp)
+                              'string-lessp))
       (with-current-buffer test-buffer
        (insert "\n"))
       (funcall (intern-soft funcname)))
                 "\n"))))
            nil t))
 
+
+;;; The tests.
+
+(defmacro eshell-deftest (module name label &rest forms)
+  (declare (indent 2))
+  (if (and (fboundp 'cl-compiling-file) (cl-compiling-file))
+      nil
+    (let ((fsym (intern (concat "eshell-test--" (symbol-name name)))))
+      `(eval-when-compile
+        (ignore
+         (defun ,fsym () ,label
+           (eshell-run-test (quote ,module) (quote ,fsym) ,label
+                            (quote (progn ,@forms)))))))))
+
+
+(eshell-deftest mode same-window-buffer-names
+  "`eshell-buffer-name' is a member of `same-window-buffer-names'"
+  (member eshell-buffer-name same-window-buffer-names))
+
+(eshell-deftest mode eshell-directory-exists
+  "`eshell-directory-name' exists and is writable"
+  (file-writable-p eshell-directory-name))
+
+(eshell-deftest mode eshell-directory-modes
+  "`eshell-directory-name' has correct access protections"
+  (or (eshell-under-windows-p)
+      (= (file-modes eshell-directory-name)
+        eshell-private-directory-modes)))
+
+(eshell-deftest mode simple-command-result
+  "`eshell-command-result' works with a simple command."
+  (= (eshell-command-result "+ 1 2") 3))
+
+
+(require 'em-banner)
+
+(eshell-deftest banner banner-displayed
+  "Startup banner is displayed at point-min"
+  (assert eshell-banner-message)
+  (let ((msg (eval eshell-banner-message)))
+    (assert msg)
+    (goto-char (point-min))
+    (looking-at msg)))
+
+
+(require 'esh-cmd)
+
+(eshell-deftest var last-result-var
+  "\"last result\" variable"
+  (eshell-command-result-p "+ 1 2; + $$ 2" "3\n5\n"))
+
+(eshell-deftest var last-result-var2
+  "\"last result\" variable"
+  (eshell-command-result-p "+ 1 2; + $$ $$" "3\n6\n"))
+
+(eshell-deftest var last-arg-var
+  "\"last arg\" variable"
+  (eshell-command-result-p "+ 1 2; + $_ 4" "3\n6\n"))
+
+(eshell-deftest cmd lisp-command
+  "Evaluate Lisp command"
+  (eshell-command-result-p "(+ 1 2)" "3"))
+
+(eshell-deftest cmd lisp-command-args
+  "Evaluate Lisp command (ignore args)"
+  (eshell-command-result-p "(+ 1 2) 3" "3"))
+
+(eshell-deftest cmd subcommand
+  "Run subcommand"
+  (eshell-command-result-p "{+ 1 2}" "3\n"))
+
+(eshell-deftest cmd subcommand-args
+  "Run subcommand (ignore args)"
+  (eshell-command-result-p "{+ 1 2} 3" "3\n"))
+
+(eshell-deftest cmd subcommand-lisp
+  "Run subcommand + Lisp form"
+  (eshell-command-result-p "{(+ 1 2)}" "3\n"))
+
+(eshell-deftest cmd named-command
+  "Execute named command"
+  (eshell-command-result-p "+ 1 2" "3\n"))
+
+
+(require 'esh-mode)
+
+(eshell-deftest mode major-mode
+  "Major mode is correct"
+  (eq major-mode 'eshell-mode))
+
+(eshell-deftest mode eshell-mode-variable
+  "`eshell-mode' is true"
+  (eq eshell-mode t))
+
+(eshell-deftest var window-height
+  "LINES equals window height"
+  (let ((eshell-stringify-t t))
+    (eshell-command-result-p "= $LINES (window-height)" "t\n")))
+
+(eshell-deftest mode command-running-p
+  "Modeline shows no command running"
+  (or (featurep 'xemacs)
+      (not eshell-status-in-modeline)
+      (and (memq 'eshell-command-running-string mode-line-format)
+          (equal eshell-command-running-string "--"))))
+
+(eshell-deftest arg forward-arg
+  "Move across command arguments"
+  (eshell-insert-command "echo $(+ 1 (- 4 3)) \"alpha beta\" file" 'ignore)
+  (let ((here (point)) begin valid)
+    (eshell-bol)
+    (setq begin (point))
+    (eshell-forward-argument 4)
+    (setq valid (= here (point)))
+    (eshell-backward-argument 4)
+    (prog1
+       (and valid (= begin (point)))
+      (eshell-bol)
+      (delete-region (point) (point-max)))))
+
+(eshell-deftest mode queue-input
+  "Queue command input"
+  (eshell-insert-command "sleep 2")
+  (eshell-insert-command "echo alpha" 'eshell-queue-input)
+  (let ((count 10))
+    (while (and eshell-current-command
+               (> count 0))
+      (sit-for 1 0)
+      (setq count (1- count))))
+  (eshell-match-result "alpha\n"))
+
+; (eshell-deftest proc send-to-subprocess
+;   "Send input to a subprocess"
+;   ;; jww (1999-12-06): what about when bc is unavailable?
+;   (if (not (eshell-search-path "bc"))
+;       t
+;     (eshell-insert-command "bc")
+;     (eshell-insert-command "1 + 2")
+;     (sit-for 1 0)
+;     (forward-line -1)
+;     (prog1
+;      (looking-at "3\n")
+;       (eshell-insert-command "quit")
+;       (sit-for 1 0))))
+
+(eshell-deftest io flush-output
+  "Flush previous output"
+  (eshell-insert-command "echo alpha")
+  (eshell-kill-output)
+  (and (eshell-match-result (regexp-quote "*** output flushed ***\n"))
+       (forward-line)
+       (= (point) eshell-last-output-start)))
+
+(eshell-deftest mode run-old-command
+  "Re-run an old command"
+  (eshell-insert-command "echo alpha")
+  (goto-char eshell-last-input-start)
+  (string= (eshell-get-old-input) "echo alpha"))
+
+
+(require 'esh-var)
+
+(eshell-deftest var interp-cmd
+  "Interpolate command result"
+  (eshell-command-result-p "+ ${+ 1 2} 3" "6\n"))
+
+(eshell-deftest var interp-lisp
+  "Interpolate Lisp form evalution"
+  (eshell-command-result-p "+ $(+ 1 2) 3" "6\n"))
+
+(eshell-deftest var interp-concat
+  "Interpolate and concat command"
+  (eshell-command-result-p "+ ${+ 1 2}3 3" "36\n"))
+
+(eshell-deftest var interp-concat-lisp
+  "Interpolate and concat Lisp form"
+  (eshell-command-result-p "+ $(+ 1 2)3 3" "36\n"))
+
+(eshell-deftest var interp-concat2
+  "Interpolate and concat two commands"
+  (eshell-command-result-p "+ ${+ 1 2}${+ 1 2} 3" "36\n"))
+
+(eshell-deftest var interp-concat-lisp2
+  "Interpolate and concat two Lisp forms"
+  (eshell-command-result-p "+ $(+ 1 2)$(+ 1 2) 3" "36\n"))
+
+
 (provide 'esh-test)
 
 ;;; esh-test.el ends here