Merge from emacs-24; up to 2012-12-02T06:22:32Z!cyd@gnu.org
authorGlenn Morris <rgm@gnu.org>
Sat, 22 Dec 2012 19:09:52 +0000 (11:09 -0800)
committerGlenn Morris <rgm@gnu.org>
Sat, 22 Dec 2012 19:09:52 +0000 (11:09 -0800)
21 files changed:
1  2 
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/ChangeLog
doc/lispref/elisp.texi
doc/lispref/os.texi
doc/lispref/windows.texi
doc/misc/ChangeLog
doc/misc/Makefile.in
doc/misc/calc.texi
doc/misc/cl.texi
doc/misc/erc.texi
doc/misc/gnus.texi
doc/misc/mh-e.texi
doc/misc/ses.texi
doc/misc/srecode.texi
doc/misc/tramp.texi
doc/misc/url.texi
doc/misc/wisent.texi
doc/misc/woman.texi
src/ChangeLog
src/window.c

diff --combined doc/lispintro/ChangeLog
@@@ -1,19 -1,9 +1,26 @@@
+ 2012-12-22  Glenn Morris  <rgm@gnu.org>
+       * Makefile.in (srcs): New variable, adding doclicense.texi.
+       (${buildinfodir}/eintr$(INFO_EXT), emacs-lisp-intro.dvi)
+       (emacs-lisp-intro.pdf, emacs-lisp-intro.html):
+       Use $srcs for dependencies.
++
 +2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix permissions bugs with setgid directories etc. (Bug#13125)
 +      * emacs-lisp-intro.texi (Files List):
 +      directory-files-and-attributes now outputs t for attribute that's
 +      now a placeholder.
 +
 +2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
 +
 +2012-11-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
  
  2012-10-24  Paul Eggert  <eggert@penguin.cs.ucla.edu>
  
@@@ -228,7 -228,8 +228,8 @@@ people who are not programmers
  @sp 1
  Edition @value{edition-number}, @value{update-date}
  @sp 1
- Copyright @copyright{} 1990-1995, 1997, 2001-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1990--1995, 1997, 2001--2012 Free Software
+ Foundation, Inc.
  @sp 1
  
  @iftex
@@@ -6281,7 -6282,7 +6282,7 @@@ the arithmetic, a conversion is necessa
  @findex / @r{(division)}
  @cindex Division
  The second argument is @code{(/ size 10)}.  This expression divides
- the numeric value by ten --- the numeric value of the size of the
+ the numeric value by ten---the numeric value of the size of the
  accessible portion of the buffer.  This produces a number that tells
  how many characters make up one tenth of the buffer size.  (In Lisp,
  @code{/} is used for division, just as @code{*} is used for
@@@ -9402,7 -9403,7 +9403,7 @@@ either by setting it manually or by usi
  
  For me, the major use of the @code{set-variable} command is to suggest
  variables that I might want to set in my @file{.emacs} file.  There
- are now more than 700 such variables --- far too many to remember
+ are now more than 700 such variables, far too many to remember
  readily.  Fortunately, you can press @key{TAB} after calling the
  @code{M-x set-variable} command to see the list of variables.
  (@xref{Examining, , Examining and Setting Variables, emacs,
@@@ -11195,8 -11196,8 +11196,8 @@@ The @code{dolist} expression does very 
  of the work you have to do when writing a @code{while} expression.
  
  Like a @code{while} loop, a @code{dolist} loops.  What is different is
- that it automatically shortens the list each time it loops --- it
- `@sc{cdr}s down the list' on its own --- and it automatically binds
+ that it automatically shortens the list each time it loops---it
+ `@sc{cdr}s down the list' on its own---and it automatically binds
  the @sc{car} of each shorter version of the list to the first of its
  arguments.
  
@@@ -13300,8 -13301,8 +13301,8 @@@ We can see that this is a decrementing 
  using the expression @code{(setq arg (1- arg))} as the decrementer.
  That expression is not far from the @code{while}, but is hidden in
  another Lisp macro, an @code{unless} macro.  Unless we are at the end
- of the buffer --- that is what the @code{eobp} function determines; it
- is an abbreviation of @samp{End Of Buffer P} --- we decrease the value
+ of the buffer---that is what the @code{eobp} function determines; it
+ is an abbreviation of @samp{End Of Buffer P}---we decrease the value
  of @code{arg} by one.
  
  (If we are at the end of the buffer, we cannot go forward any more and
@@@ -15657,7 -15658,7 +15658,7 @@@ as a list that looks like this (but wit
  The @code{directory-files-and-attributes} function returns a list of
  lists.  Each of the lists within the main list consists of 13
  elements.  The first element is a string that contains the name of the
- file -- which, in GNU/Linux, may be a `directory file', that is to
+ file---which, in GNU/Linux, may be a `directory file', that is to
  say, a file with the special attributes of a directory.  The second
  element of the list is @code{t} for a directory, a string
  for symbolic link (the string is the name linked to), or @code{nil}.
  "-rw-r--r--"
  @end group
  @group
 -nil
 +t
  2971624
  773)
  @end group
@@@ -16850,7 -16851,7 +16851,7 @@@ Write a line graph version of the grap
  @cindex Customizing your @file{.emacs} file
  @cindex Initialization file
  
- ``You don't have to like Emacs to like it'' -- this seemingly
+ ``You don't have to like Emacs to like it''---this seemingly
  paradoxical statement is the secret of GNU Emacs.  The plain, `out of
  the box' Emacs is a generic tool.  Most people who use it, customize
  it to suit themselves.
@@@ -18282,7 -18283,7 +18283,7 @@@ or `All'.  (A lower case @samp{p} tell 
  @emph{top} of the window.)  @samp{%-} inserts enough dashes to fill
  out the line.
  
- Remember, ``You don't have to like Emacs to like it'' --- your own
+ Remember, ``You don't have to like Emacs to like it''---your own
  Emacs can have different colors, different commands, and different
  keys than a default Emacs.
  
@@@ -21946,7 -21947,7 +21947,7 @@@ Here is the graph
  @sp 2
  
  @noindent
- The largest group of functions contain 10 -- 19 words and symbols each.
+ The largest group of functions contain 10--19 words and symbols each.
  
  @node Free Software and Free Manuals
  @appendix Free Software and Free Manuals
diff --combined doc/lispref/ChangeLog
@@@ -1,9 -1,8 +1,14 @@@
+ 2012-12-22  Martin Rudalics  <rudalics@gmx.at>
+       * windows.texi (Selecting Windows): Reword description of
+       select-window (Bug#13248).
 +2012-12-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (File Attributes, Changing Files): Remove the details
 +      about the text returned by file-acl.  Instead, just document that
 +      it is an opaque string meant to be used by set-file-acl.
 +
  2012-12-21  Chong Yidong  <cyd@gnu.org>
  
        * modes.texi (Auto Major Mode): Fix typo (Bug#13230).
        * customize.texi (Simple Types): Document key-sequence type
        (Bug#13048).
  
 -2012-12-15  Chong Yidong  <cyd@gnu.org>
 -
        * strings.texi (Text Comparison): Doc fix for compare-strings.
  
 -2012-12-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-12-19  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * control.texi (Pattern matching case statement): New node.
 +      * files.texi (Magic File Names): Add `file-acl',
 +      `file-selinux-context', `set-file-acl' and
 +      `set-file-selinux-context'.  Make the list consistent.
 +
 +2012-12-19  Jonas Bernoulli  <jonas@bernoul.li>
 +
 +      * tips.texi (Library Headers): New header keyword `Homepage'.
 +      Make continuation lines syntax more precise.
 +
 +2012-12-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (File Attributes, Changing Files): Update to include
 +      MS-Windows support for ACLs.
 +
 +2012-12-16  Romain Francoise  <romain@orebokech.com>
 +
 +      * files.texi (File Attributes): Document ACL support and new
 +      `file-acl' function.
 +      (Changing Files): Mention argument name change of `copy-file' and
 +      document new function `set-file-acl'.
 +
 +2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2012-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Fix permissions bugs with setgid directories etc. (Bug#13125)
 +      * files.texi (Testing Accessibility): Document GROUP arg
 +      of file-ownership-preserved-p.
 +      (File Attributes): Document that 9th element is now
 +      just a placeholder.
 +      * os.texi (User Identification): Document new functions group-gid,
 +      group-real-gid.
 +
 +2012-12-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * internals.texi (C Integer Types): New section.
 +      This follows up and records an email in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00496.html>.
 +
 +2012-12-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * control.texi (Pattern matching case statement): New node.
  
        * customize.texi (Variable Definitions): Mention the default :group
        for defcustoms (bug#13093).
  
 -2012-12-05  Chong Yidong  <cyd@gnu.org>
 +2012-12-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * customize.texi (Variable Definitions): Mention eval-defun
 +      on a defcustom calls the :set function when appropriate.
 +
 +2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi, gpl.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
 +
 +2012-12-06  Chong Yidong  <cyd@gnu.org>
  
        * lists.texi (Plist Access): Move put example to Symbol Plists.
  
        * symbols.texi (Standard Properties): Fix typo.
  
 -2012-12-02  Chong Yidong  <cyd@gnu.org>
 +2012-12-03  Chong Yidong  <cyd@gnu.org>
  
        * symbols.texi (Symbol Properties): New node.
        (Symbol Plists): Make it a subsection under Symbol Properties.
  
        * commands.texi (Using Interactive): Fix index entry.
  
 -2012-11-23  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
 +      * elisp.texi (GNU Free Documentation License)
 +      (GNU General Public Licens):
 +      Provide sectioning, since doclicense.texi no longer does that.
 +
 +      * loading.texi (Named Features): @ -> @@ to fix typo.
 +
 +2012-11-24  Martin Rudalics  <rudalics@gmx.at>
  
        * windows.texi (Basic Windows): Fix typo.
        (Windows and Frames): Fix example.  Move description of
        dedicatedness affects functions removing buffers or windows.
        * buffers.texi (The Buffer List): Fix description of bury-buffer.
  
 -2012-11-23  Chong Yidong  <cyd@gnu.org>
 +2012-11-24  Chong Yidong  <cyd@gnu.org>
  
        * modes.texi (%-Constructs): Fix statement about mode construct
        padding (Bug#12866).
  
 -2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * debugging.texi (Profiling): Make it more clear
        that --enable-profiling is about profiling the C code.
  
  2012-11-21  Glenn Morris  <rgm@gnu.org>
  
 -      * debugging.texi (Profiling): Mention --enable-profiling (if !tex).
 -      Add some basic information about the profile report buffer.
 -      (Debugging): Mention profiling in the introduction.
 -
 -2012-11-20  Glenn Morris  <rgm@gnu.org>
 +      * display.texi (Attribute Functions):
 +      Update for set-face-* name changes.
 +      Add new "inherit" argument for face-bold-p etc.
 +      Move description of this argument to a common section, like "frame".
  
 -      * debugging.texi (Profiling): New section, in progress.
 +      * debugging.texi (Profiling): New section.
 +      (Debugging): Mention profiling in the introduction.
        * tips.texi (Compilation Tips): Move profiling to separate section.
        * elisp.texi: Add Profiling to detailed menu.
  
 -2012-11-18  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-21  Martin Rudalics  <rudalics@gmx.at>
  
        * windows.texi (Display Action Functions): Fix recently added
        example.  Suggested by Michael Heerdegen.
  
 -2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>
 +2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>
  
        Minor cleanup for times as lists of four integers.
        * os.texi (Time Parsing): Time values can now be four integers.
        * loading.texi (How Programs Do Loading): Add eager macro expansion.
        * macros.texi (Expansion): Mention eager macro expansion.
  
 -2012-11-17  Glenn Morris  <rgm@gnu.org>
 -
        * minibuf.texi (Basic Completion): Mention misc completion-table funcs.
  
 -2012-11-17  Leo Liu  <sdl.web@gmail.com>
 +2012-11-18  Leo Liu  <sdl.web@gmail.com>
  
        * minibuf.texi (Programmed Completion): Doc fix for metadata
        request (Bug#12850).
  
 -2012-11-17  Glenn Morris  <rgm@gnu.org>
 +2012-11-18  Glenn Morris  <rgm@gnu.org>
  
        * display.texi (Temporary Displays): Document with-temp-buffer-window.
  
        Fix description of display-buffer-below-selected.  Reorder actions.
        Add example (Bug#12848).
  
 -2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * keymaps.texi (Translation Keymaps): Add a subsection "Interaction
 -      with normal keymaps" (bug#12868).
 -
 -2012-11-15  Glenn Morris  <rgm@gnu.org>
 +2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * display.texi (Face Attributes): Fix :underline COLOR description.
        (Attribute Functions): Update for set-face-underline rename.
        Tweak descriptions of face-underline-p, face-inverse-video-p.
  
 -2012-11-14  Glenn Morris  <rgm@gnu.org>
 -
        * keymaps.texi (Searching Keymaps, Tool Bar): Untabify examples,
        so they align better in info.
        (Active Keymaps, Searching Keymaps, Controlling Active Maps):
        Document set-temporary-overlay-map.
  
 -2012-11-12  Glenn Morris  <rgm@gnu.org>
 +2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymaps.texi (Translation Keymaps): Add a subsection "Interaction
 +      with normal keymaps".
 +
 +2012-11-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * internals.texi (Garbage Collection): Update descriptions
 +      of vectorlike_header, garbage-collect and gc-cons-threshold.
 +      (Object Internals): Explain Lisp_Object layout and the basics
 +      of an internal type system.
 +      (Buffer Internals): Update description of struct buffer.
 +
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * variables.texi (Adding Generalized Variables):
        At least mention gv-define-expander and gv-letplace.
  
 -2012-11-11  Glenn Morris  <rgm@gnu.org>
 -
        * debugging.texi (Error Debugging): Mention debug-on-message.
        (Using Debugger): Mention debugger-bury-or-kill.
  
        * variables.texi (Adding Generalized Variables):
        Use standard formatting for common lisp note about setf functions.
  
 -2012-11-07  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-10  Martin Rudalics  <rudalics@gmx.at>
  
        * elisp.texi (Top): Add Recombining Windows to menu.
        * windows.texi (Recombining Windows): New subsection.
        (Splitting Windows): Rewrite text on handling of window
        combinations and move it to new subsection.
  
 -2012-11-07  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * searching.texi (Replacing Match): Document \? in replace-match.
  
  
        * edebug.texi (Specification List): setf is no longer CL-only.
  
 -2012-11-07  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * variables.texi (Adding Generalized Variables):
        Update description of FIX-RETURN expansion.
  
 -2012-11-06  Glenn Morris  <rgm@gnu.org>
 -
        * variables.texi (Setting Generalized Variables):
        Split most of previous contents into this subsection.
        (Adding Generalized Variables): New subsection.
  
        * elisp.texi: Add Generalized Variables subsections to detailed menu.
  
 -2012-11-05  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * frames.texi (Initial Parameters): Doc fix (Bug#12144).
  
 +2012-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * os.texi (Notifications): Update descriptions of
 +      notifications-notify, notifications-close-notification and
 +      notifications-get-capabilities according to latest code changes.
 +      Add notifications-get-server-information.
 +
  2012-11-03  Chong Yidong  <cyd@gnu.org>
  
        * objects.texi (General Escape Syntax): Clarify the explanation of
diff --combined doc/lispref/elisp.texi
@@@ -98,7 -98,7 +98,7 @@@ This is the @cite{GNU Emacs Lisp Refere
  @end ifnottex
  corresponding to Emacs version @value{EMACSVER}.
  
- Copyright @copyright{} 1990-1996, 1998-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1990--1996, 1998--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -1593,11 -1593,7 +1593,11 @@@ Object Internal
  @c appendices
  
  @include anti.texi
 +@node GNU Free Documentation License
 +@appendix GNU Free Documentation License
  @include doclicense.texi
 +@node GPL
 +@appendix GNU General Public License
  @include gpl.texi
  @include tips.texi
  @include internals.texi
diff --combined doc/lispref/os.texi
@@@ -1157,16 -1157,6 +1157,16 @@@ This function returns the effective @ac
  The value may be a floating point number.
  @end defun
  
 +@defun group-gid
 +This function returns the effective @acronym{GID} of the Emacs process.
 +The value may be a floating point number.
 +@end defun
 +
 +@defun group-real-gid
 +This function returns the real @acronym{GID} of the Emacs process.
 +The value may be a floating point number.
 +@end defun
 +
  @defun system-users
  This function returns a list of strings, listing the user names on the
  system.  If Emacs cannot retrieve this information, the return value
@@@ -1421,23 -1411,23 +1421,23 @@@ This stands for the day of month, blank
  @item %h
  This is a synonym for @samp{%b}.
  @item %H
- This stands for the hour (00-23).
+ This stands for the hour (00--23).
  @item %I
- This stands for the hour (01-12).
+ This stands for the hour (01--12).
  @item %j
- This stands for the day of the year (001-366).
+ This stands for the day of the year (001--366).
  @item %k
- This stands for the hour (0-23), blank padded.
+ This stands for the hour (0--23), blank padded.
  @item %l
- This stands for the hour (1-12), blank padded.
+ This stands for the hour (1--12), blank padded.
  @item %m
- This stands for the month (01-12).
+ This stands for the month (01--12).
  @item %M
- This stands for the minute (00-59).
+ This stands for the minute (00--59).
  @item %n
  This stands for a newline.
  @item %N
- This stands for the nanoseconds (000000000-999999999).  To ask for
+ This stands for the nanoseconds (000000000--999999999).  To ask for
  fewer digits, use @samp{%3N} for milliseconds, @samp{%6N} for
  microseconds, etc.  Any excess digits are discarded, without rounding.
  @item %p
@@@ -1447,18 -1437,18 +1447,18 @@@ This is a synonym for @samp{%I:%M:%S %p
  @item %R
  This is a synonym for @samp{%H:%M}.
  @item %S
- This stands for the seconds (00-59).
+ This stands for the seconds (00--59).
  @item %t
  This stands for a tab character.
  @item %T
  This is a synonym for @samp{%H:%M:%S}.
  @item %U
- This stands for the week of the year (01-52), assuming that weeks
+ This stands for the week of the year (01--52), assuming that weeks
  start on Sunday.
  @item %w
- This stands for the numeric day of week (0-6).  Sunday is day 0.
+ This stands for the numeric day of week (0--6).  Sunday is day 0.
  @item %W
- This stands for the week of the year (01-52), assuming that weeks
+ This stands for the week of the year (01--52), assuming that weeks
  start on Monday.
  @item %x
  This has a locale-specific meaning.  In the default locale (named
  This has a locale-specific meaning.  In the default locale (named
  @samp{C}), it is equivalent to @samp{%T}.
  @item %y
- This stands for the year without century (00-99).
+ This stands for the year without century (00--99).
  @item %Y
  This stands for the year with century.
  @item %Z
@@@ -2286,19 -2276,13 +2286,19 @@@ These arguments should consist of alter
  The supported keywords and values are as follows:
  
  @table @code
 +@item :bus @var{bus}
 +The D-Bus bus.  This argument is needed only if a bus other than
 +@code{:session} shall be used.
 +
  @item :title @var{title}
  The notification title.
  
  @item :body @var{text}
  The notification body text.  Depending on the implementation of the
  notification server, the text could contain HTML markups, like
 -@samp{"<b>bold text</b>"}, hyperlinks, or images.
 +@samp{"<b>bold text</b>"}, hyperlinks, or images.  Special HTML
 +characters must be encoded, as @samp{"Contact
 +&lt;postmaster@@localhost&gt;!"}.
  
  @item :app-name @var{name}
  The name of the application sending the notification.  The default is
@@@ -2333,10 -2317,7 +2333,10 @@@ When this keyword is given, the @var{ti
  interpreted as icon name.
  
  @item :category @var{category}
 -The type of notification this is, a string.
 +The type of notification this is, a string.  See the
 +@uref{http://developer.gnome.org/notification-spec/#categories,
 +Desktop Notifications Specification} for a list of standard
 +categories.
  
  @item :desktop-entry @var{filename}
  This specifies the name of the desktop filename representing the
@@@ -2439,17 -2420,13 +2439,17 @@@ A message window opens on the desktop
  @end example
  @end defun
  
 -@defun notifications-close-notification id
 +@defun notifications-close-notification id &optional bus
  This function closes a notification with identifier @var{id}.
 +@var{bus} can be a string denoting a D-Bus connection, the default is
 +@code{:session}.
  @end defun
  
 -@defun notifications-get-capabilities
 -Returns the capabilities of the notification server, a list of strings.
 -The following capabilities can be expected:
 +@defun notifications-get-capabilities &optional bus
 +Returns the capabilities of the notification server, a list of
 +symbols.  @var{bus} can be a string denoting a D-Bus connection, the
 +default is @code{:session}.  The following capabilities can be
 +expected:
  
  @table @code
  @item :actions
@@@ -2486,30 -2463,6 +2486,30 @@@ Further vendor-specific caps start wit
  @code{:x-gnome-foo-cap}.
  @end defun
  
 +@defun notifications-get-server-information &optional bus
 +Return information on the notification server, a list of strings.
 +@var{bus} can be a string denoting a D-Bus connection, the default is
 +@code{:session}.  The returned list is @code{(@var{name} @var{vendor}
 +@var{version} @var{spec-version})}.
 +
 +@table @var
 +@item name
 +The product name of the server.
 +
 +@item vendor
 +The vendor name.  For example, @samp{"KDE"}, @samp{"GNOME"}.
 +
 +@item version
 +The server's version number.
 +
 +@item spec-version
 +The specification version the server is compliant with.
 +@end table
 +
 +If @var{SPEC_VERSION} is @code{nil}, the server supports a
 +specification prior to @samp{"1.0"}.
 +@end defun
 +
  
  @node Dynamic Libraries
  @section Dynamically Loaded Libraries
diff --combined doc/lispref/windows.texi
@@@ -1084,7 -1084,7 +1084,7 @@@ including the space earlier stolen fro
  @end smallexample
  
  @noindent
 -This can be counterintutive, in particular if @var{W4} were used for
 +This can be counterintuitive, in particular if @var{W4} were used for
  displaying a buffer only temporarily (@pxref{Temporary Displays}), and
  you want to continue working with the initial layout.
  
@@@ -1296,10 -1296,12 +1296,12 @@@ windows
  @cindex selecting a window
  
  @defun select-window window &optional norecord
- This function makes @var{window} the selected window, as well as the
- window selected within its frame (@pxref{Basic Windows}).  @var{window}
- must be a live window.  This function makes also @var{window}'s buffer
- current (@pxref{Buffers and Windows}).  The return value is
+ This function makes @var{window} the selected window and the window
+ selected within its frame (@pxref{Basic Windows}) and selects that
+ frame.  @var{window} must be a live window.  This function also makes
+ @var{window}'s buffer (@pxref{Buffers and Windows}) current and sets
+ that buffer's value of @code{point} to the value of @code{window-point}
+ (@pxref{Window Point}) in @var{window}.  The return value is
  @var{window}.
  
  By default, this function also moves @var{window}'s buffer to the front
@@@ -1865,7 -1867,7 +1867,7 @@@ default value is empty, i.e., @code{(ni
  @defopt display-buffer-alist
  The value of this option is an alist mapping conditions to display
  actions.  Each condition may be either a regular expression matching a
- buffer name or a function that takes two arguments - a buffer name and
+ buffer name or a function that takes two arguments: a buffer name and
  the @var{action} argument passed to @code{display-buffer}.  If the name
  of the buffer passed to @code{display-buffer} either matches a regular
  expression in this alist or the function specified by a condition
@@@ -1966,7 -1968,7 +1968,7 @@@ height of the frame's root window
  
  @item
  If the @sc{cdr} specifies a function, that function is called with one
- argument - the new window.  The function is supposed to adjust the
+ argument: the new window.  The function is supposed to adjust the
  height of the window; its return value is ignored.  Suitable functions
  are @code{shrink-window-if-larger-than-buffer} and
  @code{fit-window-to-buffer}, see @ref{Resizing Windows}.
@@@ -1987,7 -1989,7 +1989,7 @@@ width of the frame's root window
  
  @item
  If the @sc{cdr} specifies a function, that function is called with one
- argument - the new window.  The function is supposed to adjust the width
+ argument: the new window.  The function is supposed to adjust the width
  of the window; its return value is ignored.
  @end itemize
  
@@@ -2441,7 -2443,7 +2443,7 @@@ buffer previously shown no longer exist
  @code{switch-to-prev-buffer} (@pxref{Window History}) to show some other
  buffer instead.
  
 -The optional argument @var{bury-or-kill} specifes how to deal with
 +The optional argument @var{bury-or-kill} specifies how to deal with
  @var{window}'s buffer.  The following values are handled:
  
  @table @code
@@@ -3616,10 -3618,10 +3618,10 @@@ This parameter is installed by the buff
  (@pxref{Choosing Window}) and consulted by @code{quit-restore-window}
  (@pxref{Quitting Windows}).  It contains four elements:
  
- The first element is one of the symbols @code{window} - meaning that the
- window has been specially created by @code{display-buffer}, @code{frame}
- a separate frame has been created, @code{same} - the window has
- displayed the same buffer before, or @code{other} - the window showed
+ The first element is one of the symbols @code{window}, meaning that the
+ window has been specially created by @code{display-buffer}; @code{frame},
a separate frame has been created; @code{same}, the window has
+ displayed the same buffer before; or @code{other}, the window showed
  another buffer before.
  
  The second element is either one of the symbols @code{window} or
diff --combined doc/misc/ChangeLog
@@@ -1,19 -1,16 +1,24 @@@
+ 2012-12-22  Glenn Morris  <rgm@gnu.org>
+       * Makefile.in (gfdl): New variable.  Use throughout where
+       appropriate so that targets depend on doclicense.texi.
  2012-12-22  Eli Zaretskii  <eliz@gnu.org>
  
        * makefile.w32-in ($(INFO_TARGETS), $(DVI_TARGETS)): Depend on
        doclicense.texi.  Remove doclicense.texi from all targets that
        mentioned it explicitly.
 +      ($(infodir)/woman$(INFO_EXT), woman.dvi): Depend on
 +      $(emacsdir)/emacsver.texi.
 +      ($(infodir)/erc$(INFO_EXT), erc.dvi): Don't depend on gpl.texi.
  
  2012-12-21  Glenn Morris  <rgm@gnu.org>
  
 +      * woman.texi (UPDATED, VERSION): Remove in favor of EMACSVER.
 +      Include emacsver.texi.  Nuke hand-written node pointers.
 +      * Makefile.in ($(buildinfodir)/woman$(INFO_EXT), woman.dvi, woman.pdf):
 +      Depend on emacsver.texi.
 +
        * auth.texi, emacs-gnutls.texi, epa.texi, ert.texi:
        * gnus-coding.texi, info.texi, nxml-mode.texi, sasl.texi:
        May as well just include doclicense.texi in everything.
  
        * erc.texi: No need to include gpl in this small manual.
  
 -2012-12-14  Glenn Morris  <rgm@gnu.org>
 -
        * org.texi (copying): Include a copy of the GFDL.
        (GNU Free Documentation License): New section.
  
 -2012-12-13  Bastien Guerry  <bzg@gnu.org>
 +2012-12-21  Bastien Guerry  <bzg@gnu.org>
  
        * org.texi: Fix typos.
  
 +2012-12-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * calc.texi (ISO 8601): Rename from ISO-8601,
 +      as it's typically spelled without a hyphen.
 +
 +2012-12-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (ISO-8601): New section.
 +      (Date Formatting Codes): Mention new codes.
 +      (Standard Date Formats): Mention new formats.
 +
 +2012-12-14  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (External methods): Move `adb' method here.
 +
  2012-12-13  Glenn Morris  <rgm@gnu.org>
  
 +      * cl.texi (Modify Macros, Obsolete Macros): Now letf == cl-letf.
 +
        * wisent.texi: Small edits.  Set copyright to FSF, update license to
        GFDL 1.3+.
        * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add wisent.
@@@ -84,7 -66,7 +89,7 @@@
  
        * bovine.texi, wisent.texi: New files, imported from CEDET trunk.
  
 -2012-12-12  Glenn Morris  <rgm@gnu.org>
 +2012-12-13  Glenn Morris  <rgm@gnu.org>
  
        * flymake.texi (Customizable variables, Locating the buildfile):
        Remove refs to flymake-buildfile-dirs, removed 2007-07-20.  (Bug#13148)
        * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add srecode.
        ($(infodir)/srecode$(INFO_EXT), srecode.dvi): New targets.
  
 -2012-12-12  Eric Ludlam  <zappo@gnu.org>
 +2012-12-13  Eric Ludlam  <zappo@gnu.org>
  
        * srecode.texi: New file, imported from CEDET trunk.
  
 -2012-12-12  Bastien Guerry  <bzg@gnu.org>
 +2012-12-13  Bastien Guerry  <bzg@gnu.org>
  
        * org.texi (Summary, Code block specific header arguments)
        (Code block specific header arguments)
        (Header arguments in function calls, var, noweb)
 -      (Results of evaluation, Code evaluation security): Small
 -      reformatting: add a blank line before some example.
 +      (Results of evaluation, Code evaluation security):
 +      Small reformatting: add a blank line before some example.
  
        * org.texi (System-wide header arguments)
        (Header arguments in Org mode properties, Conflicts)
 -      (Dynamic blocks, Using the mapping API): Fix indendation of
 -      Elisp code examples.
 +      (Dynamic blocks, Using the mapping API):
 +      Fix indentation of Elisp code examples.
  
        * org.texi (Comment lines): Fix description of the comment syntax.
  
 -      * org.texi (Installation): Mention "make test" in the correct
 -      section.
 +      * org.texi (Installation): Mention "make test" in the correct section.
 +
 +2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi, gpl.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
 +
 +2012-12-04  Michael Albinus  <michael.albinus@gmx.de>
  
 -2012-12-02  Michael Albinus  <michael.albinus@gmx.de>
 +      * tramp.texi (History): Mention ADB.
 +      (Inline methods): Add `adb' method.
 +
 +2012-12-03  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Top, Obtaining Tramp): Replace CVS by Git.
        (External methods): Fix typo.
  
 -2012-11-30  Glenn Morris  <rgm@gnu.org>
 +2012-12-03  Glenn Morris  <rgm@gnu.org>
  
        * rcirc.texi (Notices): Fix typo.
  
 -2012-11-20  Michael Albinus  <michael.albinus@gmx.de>
 +2012-11-25  Bill Wohler  <wohler@newt.com>
 +
 +      Release MH-E manual version 8.4.
 +
 +      * mh-e.texi: (VERSION, EDITION, UPDATED, UPDATE-MONTH, Preface):
 +      Update for release 8.4.
 +
 +      * mh-e.texi (Sequences): Add mh-whitelist-preserves-sequences-flag.
 +      (Junk): Add mh-whitelist-preserves-sequences-flag,
 +      mh-blacklist-msg-hook, mh-whitelist-msg-hook,
 +      mh-folder-blacklisted, mh-folder-whitelisted (closes SF #2945712).
 +
 +2012-11-25  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * trampver.texi: Downgrade version to 2.2.6-24.3, in order to
 -      distinguish from trunk.
 +      * mh-e.texi (Procmail): Fix two @ typos.
 +
 +2012-11-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * doclicense.texi, gpl.texi: Update to latest version from FSF.
 +      These are just minor editorial changes.
 +
 +2012-11-23  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Date Formatting Codes): Mention the new beginning of
 +      the date numbering system.
 +
 +2012-11-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * calc.texi: Fix TeX issues with capitals followed by ".", "?", "!".
 +      (Date Forms): Correct off-by-one error in explanation of
 +      Julian day numbers.  Give Gregorian equivalent of its origin.
 +
 +2012-11-22  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * doc/misc/calc.texi (Date Forms): Mention the customizable
 +      Gregorian-Julian switch.
 +      (Customizing Calc): Mention the variable `calc-gregorian-switch'.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Calc now uses the Gregorian calendar for all dates (Bug#12633).
 +      It also uses January 1, 1 AD as its day number 1.
 +      * calc.texi (Date Forms): Document this.
  
  2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * cl.texi (Function Bindings): Clarify that cl-flet is lexical.
        (Obsolete Macros): Move example here from Function Bindings.
  
 -2012-11-13  Glenn Morris  <rgm@gnu.org>
 -
        * erc.texi: Use @code{nil} rather than just "nil".
        (Modules): Undocument obsolete "hecomplete".
        Add "notifications".
        (Connecting): Add brief section on passwords.
        (Options): Make a start by adding erc-hide-list, erc-lurker-hide-list.
  
 -2012-11-12  Glenn Morris  <rgm@gnu.org>
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * flymake.texi (Customizable variables)
        (Highlighting erroneous lines): Mention flymake-error-bitmap,
        flymake-warning-bitmap, and flymake-fringe-indicator-position.
  
 -2012-11-09  Chong Yidong  <cyd@gnu.org>
 +2012-11-12  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.texi: Doc for ses-rename-cell, ses-repair-cell-reference-all & ses-range.
 +      In all file place SES into @acronym{...}.
 +      (Advanced Features): Add key index and function index for
 +      ses-set-header-row. Add description for function
 +      ses-rename-cell. Add description for function
 +      ses-repair-cell-reference-all.
 +      (Ranges in formulas): Add description for ses-range flags.
 +
 +2012-11-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * texinfo.tex: Merge from gnulib.
 +
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * url.texi (Introduction): Move url-configuration-directory to
        Customization node.
        Improve docs for url-queue-*.
        (Supported URL Types): Copyedits.  Delete empty subnodes.
  
 -2012-11-08  Chong Yidong  <cyd@gnu.org>
 -
        * url.texi (Introduction): Rename from Getting Started.  Rewrite
        the introduction.
        (URI Parsing): Rewrite.  Omit the obsolete attributes slot.
  
 -2012-11-07  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * cl.texi (Obsolete Setf Customization):
        Revert defsetf example to the more correct let rather than prog1.
        Give define-modify-macro, defsetf, and define-setf-method
        gv.el replacements.
  
 -2012-11-06  Glenn Morris  <rgm@gnu.org>
 -
        * cl.texi (Overview): Mention EIEIO here, as well as the appendix.
        (Setf Extensions): Remove obsolete reference.
        (Obsolete Setf Customization):
        (Compiler Optimizations): Rename from "Optimizing Compiler"; reword.
        (Creating Symbols, Random Numbers): De-emphasize internal
        variables cl--gensym-counter and cl--random-state.  (Bug#12788)
 +      (Naming Conventions, Type Predicates, Macros)
 +      (Predicates on Numbers): No longer mention cl-floatp-safe.
  
 -2012-11-02  Glenn Morris  <rgm@gnu.org>
 +2012-11-02  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * cl.texi (Naming Conventions, Type Predicates, Macros)
 -      (Predicates on Numbers): No longer mention cl-floatp-safe.
 +      * gnus.texi (Mail Source Specifiers):
 +      Document :leave keyword used for pop mail source.
  
  2012-11-01  Glenn Morris  <rgm@gnu.org>
  
diff --combined doc/misc/Makefile.in
@@@ -27,6 -27,7 +27,6 @@@ srcdir=@srcdir
  ## Where the output files go.
  buildinfodir = $(srcdir)/../../info
  ## Directory with emacsver.texi.
 -## Currently only used by efaq and calc.
  emacsdir = $(srcdir)/../emacs
  
  MKDIR_P = @MKDIR_P@
@@@ -169,6 -170,8 +169,8 @@@ ENVADD = TEXINPUTS="$(srcdir):$(emacsdi
  
  mkinfodir = @${MKDIR_P} ${buildinfodir}
  
+ gfdl = ${srcdir}/doclicense.texi
  .PHONY: info dvi pdf echo-info
  ## Prevent implicit rule triggering for foo.info.
  .SUFFIXES:
@@@ -197,194 -200,195 +199,195 @@@ pdf: $(PDF_TARGETS
  # Note: "<" is not portable in ordinary make rules.
  
  ada-mode : $(buildinfodir)/ada-mode$(INFO_EXT)
- $(buildinfodir)/ada-mode$(INFO_EXT): ${srcdir}/ada-mode.texi
+ $(buildinfodir)/ada-mode$(INFO_EXT): ${srcdir}/ada-mode.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ada-mode.texi
- ada-mode.dvi: ${srcdir}/ada-mode.texi
+ ada-mode.dvi: ${srcdir}/ada-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
- ada-mode.pdf: ${srcdir}/ada-mode.texi
+ ada-mode.pdf: ${srcdir}/ada-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi
  
  auth : $(buildinfodir)/auth$(INFO_EXT)
- $(buildinfodir)/auth$(INFO_EXT): ${srcdir}/auth.texi
+ $(buildinfodir)/auth$(INFO_EXT): ${srcdir}/auth.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/auth.texi
- auth.dvi: ${srcdir}/auth.texi
+ auth.dvi: ${srcdir}/auth.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi
- auth.pdf: ${srcdir}/auth.texi
+ auth.pdf: ${srcdir}/auth.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi
  
  autotype : $(buildinfodir)/autotype$(INFO_EXT)
- $(buildinfodir)/autotype$(INFO_EXT): ${srcdir}/autotype.texi
+ $(buildinfodir)/autotype$(INFO_EXT): ${srcdir}/autotype.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/autotype.texi
- autotype.dvi: ${srcdir}/autotype.texi
+ autotype.dvi: ${srcdir}/autotype.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
- autotype.pdf: ${srcdir}/autotype.texi
+ autotype.pdf: ${srcdir}/autotype.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi
  
  bovine : $(buildinfodir)/bovine$(INFO_EXT)
- $(buildinfodir)/bovine$(INFO_EXT): ${srcdir}/bovine.texi
+ $(buildinfodir)/bovine$(INFO_EXT): ${srcdir}/bovine.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/bovine.texi
- bovine.dvi: ${srcdir}/bovine.texi
+ bovine.dvi: ${srcdir}/bovine.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/bovine.texi
- bovine.pdf: ${srcdir}/bovine.texi
+ bovine.pdf: ${srcdir}/bovine.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/bovine.texi
  
  calc : $(buildinfodir)/calc$(INFO_EXT)
- $(buildinfodir)/calc$(INFO_EXT): ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
+ $(buildinfodir)/calc$(INFO_EXT): ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/calc.texi
- calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
+ calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
- calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
+ calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi
  
  ccmode : $(buildinfodir)/ccmode$(INFO_EXT)
- $(buildinfodir)/ccmode$(INFO_EXT): ${srcdir}/cc-mode.texi
+ $(buildinfodir)/ccmode$(INFO_EXT): ${srcdir}/cc-mode.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cc-mode.texi
- cc-mode.dvi: ${srcdir}/cc-mode.texi
+ cc-mode.dvi: ${srcdir}/cc-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi
- cc-mode.pdf: ${srcdir}/cc-mode.texi
+ cc-mode.pdf: ${srcdir}/cc-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi
  
  cl : $(buildinfodir)/cl$(INFO_EXT)
- $(buildinfodir)/cl$(INFO_EXT): ${srcdir}/cl.texi $(emacsdir)/emacsver.texi
+ $(buildinfodir)/cl$(INFO_EXT): ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cl.texi
- cl.dvi: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi
+ cl.dvi: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi
- cl.pdf: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi
+ cl.pdf: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi
  
  dbus : $(buildinfodir)/dbus$(INFO_EXT)
- $(buildinfodir)/dbus$(INFO_EXT): ${srcdir}/dbus.texi
+ $(buildinfodir)/dbus$(INFO_EXT): ${srcdir}/dbus.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dbus.texi
- dbus.dvi: ${srcdir}/dbus.texi
+ dbus.dvi: ${srcdir}/dbus.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi
- dbus.pdf: ${srcdir}/dbus.texi
+ dbus.pdf: ${srcdir}/dbus.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi
  
  dired-x : $(buildinfodir)/dired-x$(INFO_EXT)
- $(buildinfodir)/dired-x$(INFO_EXT): ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi
+ $(buildinfodir)/dired-x$(INFO_EXT): ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dired-x.texi
- dired-x.dvi: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi
+ dired-x.dvi: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi
- dired-x.pdf: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi
+ dired-x.pdf: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi
  
  ebrowse : $(buildinfodir)/ebrowse$(INFO_EXT)
- $(buildinfodir)/ebrowse$(INFO_EXT): ${srcdir}/ebrowse.texi
+ $(buildinfodir)/ebrowse$(INFO_EXT): ${srcdir}/ebrowse.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ebrowse.texi
- ebrowse.dvi: ${srcdir}/ebrowse.texi
+ ebrowse.dvi: ${srcdir}/ebrowse.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
- ebrowse.pdf: ${srcdir}/ebrowse.texi
+ ebrowse.pdf: ${srcdir}/ebrowse.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi
  
  ede : $(buildinfodir)/ede$(INFO_EXT)
- $(buildinfodir)/ede$(INFO_EXT): ${srcdir}/ede.texi
+ $(buildinfodir)/ede$(INFO_EXT): ${srcdir}/ede.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ede.texi
- ede.dvi: ${srcdir}/ede.texi
+ ede.dvi: ${srcdir}/ede.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi
- ede.pdf: ${srcdir}/ede.texi
+ ede.pdf: ${srcdir}/ede.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi
  
  ediff : $(buildinfodir)/ediff$(INFO_EXT)
- $(buildinfodir)/ediff$(INFO_EXT): ${srcdir}/ediff.texi
+ $(buildinfodir)/ediff$(INFO_EXT): ${srcdir}/ediff.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ediff.texi
- ediff.dvi: ${srcdir}/ediff.texi
+ ediff.dvi: ${srcdir}/ediff.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi
- ediff.pdf: ${srcdir}/ediff.texi
+ ediff.pdf: ${srcdir}/ediff.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi
  
  edt : $(buildinfodir)/edt$(INFO_EXT)
- $(buildinfodir)/edt$(INFO_EXT): ${srcdir}/edt.texi
+ $(buildinfodir)/edt$(INFO_EXT): ${srcdir}/edt.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/edt.texi
- edt.dvi: ${srcdir}/edt.texi
+ edt.dvi: ${srcdir}/edt.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi
- edt.pdf: ${srcdir}/edt.texi
+ edt.pdf: ${srcdir}/edt.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi
  
  eieio : $(buildinfodir)/eieio$(INFO_EXT)
- $(buildinfodir)/eieio$(INFO_EXT): ${srcdir}/eieio.texi
+ $(buildinfodir)/eieio$(INFO_EXT): ${srcdir}/eieio.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eieio.texi
- eieio.dvi: ${srcdir}/eieio.texi
+ eieio.dvi: ${srcdir}/eieio.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi
- eieio.pdf: ${srcdir}/eieio.texi
+ eieio.pdf: ${srcdir}/eieio.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi
  
  emacs-gnutls : $(buildinfodir)/emacs-gnutls$(INFO_EXT)
- $(buildinfodir)/emacs-gnutls$(INFO_EXT): ${srcdir}/emacs-gnutls.texi
+ $(buildinfodir)/emacs-gnutls$(INFO_EXT): ${srcdir}/emacs-gnutls.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi
- emacs-gnutls.dvi: ${srcdir}/emacs-gnutls.texi
+ emacs-gnutls.dvi: ${srcdir}/emacs-gnutls.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-gnutls.texi
- emacs-gnutls.pdf: ${srcdir}/emacs-gnutls.texi
+ emacs-gnutls.pdf: ${srcdir}/emacs-gnutls.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-gnutls.texi
  
  emacs-mime : $(buildinfodir)/emacs-mime$(INFO_EXT)
- $(buildinfodir)/emacs-mime$(INFO_EXT): ${srcdir}/emacs-mime.texi
+ $(buildinfodir)/emacs-mime$(INFO_EXT): ${srcdir}/emacs-mime.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi
- emacs-mime.dvi: ${srcdir}/emacs-mime.texi
+ emacs-mime.dvi: ${srcdir}/emacs-mime.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
- emacs-mime.pdf: ${srcdir}/emacs-mime.texi
+ emacs-mime.pdf: ${srcdir}/emacs-mime.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi
  
  epa : $(buildinfodir)/epa$(INFO_EXT)
- $(buildinfodir)/epa$(INFO_EXT): ${srcdir}/epa.texi
+ $(buildinfodir)/epa$(INFO_EXT): ${srcdir}/epa.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/epa.texi
- epa.dvi: ${srcdir}/epa.texi
+ epa.dvi: ${srcdir}/epa.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi
- epa.pdf: ${srcdir}/epa.texi
+ epa.pdf: ${srcdir}/epa.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi
  
  erc : $(buildinfodir)/erc$(INFO_EXT)
- $(buildinfodir)/erc$(INFO_EXT): ${srcdir}/erc.texi $(emacsdir)/emacsver.texi
+ $(buildinfodir)/erc$(INFO_EXT): ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/erc.texi
- erc.dvi: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi
+ erc.dvi: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
- erc.pdf: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi
+ erc.pdf: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi
  
  ert : $(buildinfodir)/ert$(INFO_EXT)
- $(buildinfodir)/ert$(INFO_EXT): ${srcdir}/ert.texi
+ $(buildinfodir)/ert$(INFO_EXT): ${srcdir}/ert.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ert.texi
- ert.dvi: ${srcdir}/ert.texi
+ ert.dvi: ${srcdir}/ert.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi
- ert.pdf: ${srcdir}/ert.texi
+ ert.pdf: ${srcdir}/ert.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi
  
  eshell : $(buildinfodir)/eshell$(INFO_EXT)
- $(buildinfodir)/eshell$(INFO_EXT): ${srcdir}/eshell.texi
+ $(buildinfodir)/eshell$(INFO_EXT): ${srcdir}/eshell.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eshell.texi
- eshell.dvi: ${srcdir}/eshell.texi
+ eshell.dvi: ${srcdir}/eshell.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
- eshell.pdf: ${srcdir}/eshell.texi
+ eshell.pdf: ${srcdir}/eshell.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi
  
  eudc : $(buildinfodir)/eudc$(INFO_EXT)
- $(buildinfodir)/eudc$(INFO_EXT): ${srcdir}/eudc.texi
+ $(buildinfodir)/eudc$(INFO_EXT): ${srcdir}/eudc.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eudc.texi
- eudc.dvi: ${srcdir}/eudc.texi
+ eudc.dvi: ${srcdir}/eudc.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
- eudc.pdf: ${srcdir}/eudc.texi
+ eudc.pdf: ${srcdir}/eudc.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi
  
+ ## No gfdl dependency.
  efaq : $(buildinfodir)/efaq$(INFO_EXT)
  $(buildinfodir)/efaq$(INFO_EXT): ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
        $(mkinfodir)
@@@ -404,34 -408,34 +407,34 @@@ emacs-faq.text: ${srcdir}/faq.texi $(em
        $(MAKEINFO) $(MAKEINFO_OPTS) --plaintext -o $@ ${srcdir}/faq.texi
  
  flymake : $(buildinfodir)/flymake$(INFO_EXT)
- $(buildinfodir)/flymake$(INFO_EXT): ${srcdir}/flymake.texi
+ $(buildinfodir)/flymake$(INFO_EXT): ${srcdir}/flymake.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/flymake.texi
- flymake.dvi: ${srcdir}/flymake.texi
+ flymake.dvi: ${srcdir}/flymake.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
- flymake.pdf: ${srcdir}/flymake.texi
+ flymake.pdf: ${srcdir}/flymake.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi
  
  forms : $(buildinfodir)/forms$(INFO_EXT)
- $(buildinfodir)/forms$(INFO_EXT): ${srcdir}/forms.texi
+ $(buildinfodir)/forms$(INFO_EXT): ${srcdir}/forms.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/forms.texi
- forms.dvi: ${srcdir}/forms.texi
+ forms.dvi: ${srcdir}/forms.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
- forms.pdf: ${srcdir}/forms.texi
+ forms.pdf: ${srcdir}/forms.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi
  
  # gnus/message/emacs-mime/sieve/pgg are part of Gnus:
  gnus : $(buildinfodir)/gnus$(INFO_EXT)
- $(buildinfodir)/gnus$(INFO_EXT): ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi
+ $(buildinfodir)/gnus$(INFO_EXT): ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/gnus.texi
- gnus.dvi: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi
+ gnus.dvi: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl}
        sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
        $(ENVADD) $(TEXI2DVI) gnustmp.texi
        cp gnustmp.dvi $@
        rm gnustmp.*
- gnus.pdf: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi
+ gnus.pdf: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl}
        sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
        $(ENVADD) $(TEXI2PDF) gnustmp.texi
        cp gnustmp.pdf $@
  
  # NB this one needs --no-split even without a .info extension.
  idlwave : $(buildinfodir)/idlwave$(INFO_EXT)
- $(buildinfodir)/idlwave$(INFO_EXT): ${srcdir}/idlwave.texi
+ $(buildinfodir)/idlwave$(INFO_EXT): ${srcdir}/idlwave.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/idlwave.texi
- idlwave.dvi: ${srcdir}/idlwave.texi
+ idlwave.dvi: ${srcdir}/idlwave.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
- idlwave.pdf: ${srcdir}/idlwave.texi
+ idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi
  
  # NB this one needs --no-split even without a .info extension.
  # Avoid name clash with overall "info" target.
  info.info : $(buildinfodir)/info$(INFO_EXT)
- $(buildinfodir)/info$(INFO_EXT): ${srcdir}/info.texi
+ $(buildinfodir)/info$(INFO_EXT): ${srcdir}/info.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/info.texi
- info.dvi: ${srcdir}/info.texi
+ info.dvi: ${srcdir}/info.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
- info.pdf: ${srcdir}/info.texi
+ info.pdf: ${srcdir}/info.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi
  
  mairix-el : $(buildinfodir)/mairix-el$(INFO_EXT)
- $(buildinfodir)/mairix-el$(INFO_EXT): ${srcdir}/mairix-el.texi
+ $(buildinfodir)/mairix-el$(INFO_EXT): ${srcdir}/mairix-el.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mairix-el.texi
- mairix-el.dvi: ${srcdir}/mairix-el.texi
+ mairix-el.dvi: ${srcdir}/mairix-el.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi
- mairix-el.pdf: ${srcdir}/mairix-el.texi
+ mairix-el.pdf: ${srcdir}/mairix-el.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi
  
  message : $(buildinfodir)/message$(INFO_EXT)
- $(buildinfodir)/message$(INFO_EXT): ${srcdir}/message.texi
+ $(buildinfodir)/message$(INFO_EXT): ${srcdir}/message.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/message.texi
- message.dvi: ${srcdir}/message.texi
+ message.dvi: ${srcdir}/message.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
- message.pdf: ${srcdir}/message.texi
+ message.pdf: ${srcdir}/message.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi
  
  mh-e : $(buildinfodir)/mh-e$(INFO_EXT)
- $(buildinfodir)/mh-e$(INFO_EXT): ${srcdir}/mh-e.texi
+ $(buildinfodir)/mh-e$(INFO_EXT): ${srcdir}/mh-e.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mh-e.texi
- mh-e.dvi: ${srcdir}/mh-e.texi
+ mh-e.dvi: ${srcdir}/mh-e.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
- mh-e.pdf: ${srcdir}/mh-e.texi
+ mh-e.pdf: ${srcdir}/mh-e.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi
  
  newsticker : $(buildinfodir)/newsticker$(INFO_EXT)
- $(buildinfodir)/newsticker$(INFO_EXT): ${srcdir}/newsticker.texi
+ $(buildinfodir)/newsticker$(INFO_EXT): ${srcdir}/newsticker.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/newsticker.texi
- newsticker.dvi: ${srcdir}/newsticker.texi
+ newsticker.dvi: ${srcdir}/newsticker.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
- newsticker.pdf: ${srcdir}/newsticker.texi
+ newsticker.pdf: ${srcdir}/newsticker.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi
  
  nxml-mode : $(buildinfodir)/nxml-mode$(INFO_EXT)
- $(buildinfodir)/nxml-mode$(INFO_EXT): ${srcdir}/nxml-mode.texi
+ $(buildinfodir)/nxml-mode$(INFO_EXT): ${srcdir}/nxml-mode.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/nxml-mode.texi
- nxml-mode.dvi: ${srcdir}/nxml-mode.texi
+ nxml-mode.dvi: ${srcdir}/nxml-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi
- nxml-mode.pdf: ${srcdir}/nxml-mode.texi
+ nxml-mode.pdf: ${srcdir}/nxml-mode.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi
  
  org : $(buildinfodir)/org$(INFO_EXT)
- $(buildinfodir)/org$(INFO_EXT): ${srcdir}/org.texi
+ $(buildinfodir)/org$(INFO_EXT): ${srcdir}/org.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/org.texi
- org.dvi: ${srcdir}/org.texi
+ org.dvi: ${srcdir}/org.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
- org.pdf: ${srcdir}/org.texi
+ org.pdf: ${srcdir}/org.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi
  
  pcl-cvs : $(buildinfodir)/pcl-cvs$(INFO_EXT)
- $(buildinfodir)/pcl-cvs$(INFO_EXT): ${srcdir}/pcl-cvs.texi
+ $(buildinfodir)/pcl-cvs$(INFO_EXT): ${srcdir}/pcl-cvs.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pcl-cvs.texi
- pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi
+ pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
- pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi
+ pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi
  
  pgg : $(buildinfodir)/pgg$(INFO_EXT)
- $(buildinfodir)/pgg$(INFO_EXT): ${srcdir}/pgg.texi
+ $(buildinfodir)/pgg$(INFO_EXT): ${srcdir}/pgg.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pgg.texi
- pgg.dvi: ${srcdir}/pgg.texi
+ pgg.dvi: ${srcdir}/pgg.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi
- pgg.pdf: ${srcdir}/pgg.texi
+ pgg.pdf: ${srcdir}/pgg.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi
  
  rcirc : $(buildinfodir)/rcirc$(INFO_EXT)
- $(buildinfodir)/rcirc$(INFO_EXT): ${srcdir}/rcirc.texi
+ $(buildinfodir)/rcirc$(INFO_EXT): ${srcdir}/rcirc.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/rcirc.texi
- rcirc.dvi: ${srcdir}/rcirc.texi
+ rcirc.dvi: ${srcdir}/rcirc.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
- rcirc.pdf: ${srcdir}/rcirc.texi
+ rcirc.pdf: ${srcdir}/rcirc.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi
  
  reftex : $(buildinfodir)/reftex$(INFO_EXT)
- $(buildinfodir)/reftex$(INFO_EXT): ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi
+ $(buildinfodir)/reftex$(INFO_EXT): ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/reftex.texi
- reftex.dvi: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi
+ reftex.dvi: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi
- reftex.pdf: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi
+ reftex.pdf: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi
  
  remember : $(buildinfodir)/remember$(INFO_EXT)
- $(buildinfodir)/remember$(INFO_EXT): ${srcdir}/remember.texi
+ $(buildinfodir)/remember$(INFO_EXT): ${srcdir}/remember.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/remember.texi
- remember.dvi: ${srcdir}/remember.texi
+ remember.dvi: ${srcdir}/remember.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi
- remember.pdf: ${srcdir}/remember.texi
+ remember.pdf: ${srcdir}/remember.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi
  
  sasl : $(buildinfodir)/sasl$(INFO_EXT)
- $(buildinfodir)/sasl$(INFO_EXT): ${srcdir}/sasl.texi
+ $(buildinfodir)/sasl$(INFO_EXT): ${srcdir}/sasl.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sasl.texi
- sasl.dvi: ${srcdir}/sasl.texi
+ sasl.dvi: ${srcdir}/sasl.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi
- sasl.pdf: ${srcdir}/sasl.texi
+ sasl.pdf: ${srcdir}/sasl.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi
  
  sc : $(buildinfodir)/sc$(INFO_EXT)
- $(buildinfodir)/sc$(INFO_EXT): ${srcdir}/sc.texi
+ $(buildinfodir)/sc$(INFO_EXT): ${srcdir}/sc.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sc.texi
- sc.dvi: ${srcdir}/sc.texi
+ sc.dvi: ${srcdir}/sc.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi
- sc.pdf: ${srcdir}/sc.texi
+ sc.pdf: ${srcdir}/sc.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi
  
  semantic : $(buildinfodir)/semantic$(INFO_EXT)
- $(buildinfodir)/semantic$(INFO_EXT): ${srcdir}/semantic.texi ${srcdir}/sem-user.texi
+ $(buildinfodir)/semantic$(INFO_EXT): ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/semantic.texi
- semantic.dvi: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi
+ semantic.dvi: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi
- semantic.pdf: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi
+ semantic.pdf: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi
  
  ses : $(buildinfodir)/ses$(INFO_EXT)
- $(buildinfodir)/ses$(INFO_EXT): ${srcdir}/ses.texi
+ $(buildinfodir)/ses$(INFO_EXT): ${srcdir}/ses.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ses.texi
- ses.dvi: ${srcdir}/ses.texi
+ ses.dvi: ${srcdir}/ses.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
- ses.pdf: ${srcdir}/ses.texi
+ ses.pdf: ${srcdir}/ses.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi
  
  sieve : $(buildinfodir)/sieve$(INFO_EXT)
- $(buildinfodir)/sieve$(INFO_EXT): ${srcdir}/sieve.texi
+ $(buildinfodir)/sieve$(INFO_EXT): ${srcdir}/sieve.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sieve.texi
- sieve.dvi: ${srcdir}/sieve.texi
+ sieve.dvi: ${srcdir}/sieve.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
- sieve.pdf: ${srcdir}/sieve.texi
+ sieve.pdf: ${srcdir}/sieve.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi
  
  smtpmail : $(buildinfodir)/smtpmail$(INFO_EXT)
- $(buildinfodir)/smtpmail$(INFO_EXT): ${srcdir}/smtpmail.texi
+ $(buildinfodir)/smtpmail$(INFO_EXT): ${srcdir}/smtpmail.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/smtpmail.texi
- smtpmail.dvi: ${srcdir}/smtpmail.texi
+ smtpmail.dvi: ${srcdir}/smtpmail.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
- smtpmail.pdf: ${srcdir}/smtpmail.texi
+ smtpmail.pdf: ${srcdir}/smtpmail.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi
  
  speedbar : $(buildinfodir)/speedbar$(INFO_EXT)
- $(buildinfodir)/speedbar$(INFO_EXT): ${srcdir}/speedbar.texi
+ $(buildinfodir)/speedbar$(INFO_EXT): ${srcdir}/speedbar.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/speedbar.texi
- speedbar.dvi: ${srcdir}/speedbar.texi
+ speedbar.dvi: ${srcdir}/speedbar.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi
- speedbar.pdf: ${srcdir}/speedbar.texi
+ speedbar.pdf: ${srcdir}/speedbar.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi
  
  srecode : $(buildinfodir)/srecode$(INFO_EXT)
- $(buildinfodir)/srecode$(INFO_EXT): ${srcdir}/srecode.texi
+ $(buildinfodir)/srecode$(INFO_EXT): ${srcdir}/srecode.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/srecode.texi
- srecode.dvi: ${srcdir}/srecode.texi
+ srecode.dvi: ${srcdir}/srecode.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/srecode.texi
- srecode.pdf: ${srcdir}/srecode.texi
+ srecode.pdf: ${srcdir}/srecode.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/srecode.texi
  
  tramp : $(buildinfodir)/tramp$(INFO_EXT)
- $(buildinfodir)/tramp$(INFO_EXT): ${srcdir}/tramp.texi ${srcdir}/trampver.texi
+ $(buildinfodir)/tramp$(INFO_EXT): ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi
- tramp.dvi: ${srcdir}/tramp.texi ${srcdir}/trampver.texi
+ tramp.dvi: ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi
- tramp.pdf: ${srcdir}/tramp.texi ${srcdir}/trampver.texi
+ tramp.pdf: ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi
  
  url : $(buildinfodir)/url$(INFO_EXT)
- $(buildinfodir)/url$(INFO_EXT): ${srcdir}/url.texi
+ $(buildinfodir)/url$(INFO_EXT): ${srcdir}/url.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/url.texi
- url.dvi: ${srcdir}/url.texi
+ url.dvi: ${srcdir}/url.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
- url.pdf: ${srcdir}/url.texi
+ url.pdf: ${srcdir}/url.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi
  
  vip : $(buildinfodir)/vip$(INFO_EXT)
- $(buildinfodir)/vip$(INFO_EXT): ${srcdir}/vip.texi
+ $(buildinfodir)/vip$(INFO_EXT): ${srcdir}/vip.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vip.texi
- vip.dvi: ${srcdir}/vip.texi
+ vip.dvi: ${srcdir}/vip.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
- vip.pdf: ${srcdir}/vip.texi
+ vip.pdf: ${srcdir}/vip.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi
  
  viper : $(buildinfodir)/viper$(INFO_EXT)
- $(buildinfodir)/viper$(INFO_EXT): ${srcdir}/viper.texi
+ $(buildinfodir)/viper$(INFO_EXT): ${srcdir}/viper.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/viper.texi
- viper.dvi: ${srcdir}/viper.texi
+ viper.dvi: ${srcdir}/viper.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
- viper.pdf: ${srcdir}/viper.texi
+ viper.pdf: ${srcdir}/viper.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi
  
  widget : $(buildinfodir)/widget$(INFO_EXT)
- $(buildinfodir)/widget$(INFO_EXT): ${srcdir}/widget.texi
+ $(buildinfodir)/widget$(INFO_EXT): ${srcdir}/widget.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/widget.texi
- widget.dvi: ${srcdir}/widget.texi
+ widget.dvi: ${srcdir}/widget.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
- widget.pdf: ${srcdir}/widget.texi
+ widget.pdf: ${srcdir}/widget.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi
  
  wisent : $(buildinfodir)/wisent$(INFO_EXT)
- $(buildinfodir)/wisent$(INFO_EXT): ${srcdir}/wisent.texi
+ $(buildinfodir)/wisent$(INFO_EXT): ${srcdir}/wisent.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/wisent.texi
- wisent.dvi: ${srcdir}/wisent.texi
+ wisent.dvi: ${srcdir}/wisent.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/wisent.texi
- wisent.pdf: ${srcdir}/wisent.texi
+ wisent.pdf: ${srcdir}/wisent.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/wisent.texi
  
  woman : $(buildinfodir)/woman$(INFO_EXT)
- $(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi $(emacsdir)/emacsver.texi
 -$(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi ${gfdl}
++$(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(mkinfodir)
        $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/woman.texi
- woman.dvi: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi
 -woman.dvi: ${srcdir}/woman.texi ${gfdl}
++woman.dvi: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
- woman.pdf: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi
 -woman.pdf: ${srcdir}/woman.texi ${gfdl}
++woman.pdf: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl}
        $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi
  
  
diff --combined doc/misc/calc.texi
@@@ -94,7 -94,7 +94,7 @@@ This file documents Calc, the GNU Emac
  GNU Emacs @value{EMACSVER}.
  @end ifnotinfo
  
- Copyright @copyright{} 1990-1991, 2001-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1990--1991, 2001--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -4460,7 -4460,7 +4460,7 @@@ date by one or several months.  @xref{D
  Friday the 13th?  @xref{Types Answer 5, 5}. (@bullet{})
  
  (@bullet{}) @strong{Exercise 6.}  How many leap years will there be
 -between now and the year 10001 A.D.?  @xref{Types Answer 6, 6}. (@bullet{})
 +between now and the year 10001 AD@?  @xref{Types Answer 6, 6}. (@bullet{})
  
  @cindex Slope and angle of a line
  @cindex Angle and slope of a line
@@@ -8896,7 -8896,7 +8896,7 @@@ Note that this rule does not mention @s
  apply to any product-of-sum it encounters---this rule may surprise
  you if you put it into @code{EvalRules}!
  
 -In the second rule, the sum of two O's is changed to the smaller O.
 +In the second rule, the sum of two O's is changed to the smaller O@.
  The optional constant coefficients are there mostly so that
  @samp{O(x^2) - O(x^3)} and @samp{O(x^3) - O(x^2)} are handled
  as well as @samp{O(x^2) + O(x^3)}.
@@@ -10986,10 -10986,10 +10986,10 @@@ Input is flexible; date forms can be en
  notations for dates and times.  @xref{Date Formats}.
  
  Date forms are stored internally as numbers, specifically the number
 -of days since midnight on the morning of January 1 of the year 1 AD.
 +of days since midnight on the morning of December 31 of the year 1 BC@.
  If the internal number is an integer, the form represents a date only;
  if the internal number is a fraction or float, the form represents
 -a date and time.  For example, @samp{<6:00am Wed Jan 9, 1991>}
 +a date and time.  For example, @samp{<6:00am Thu Jan 10, 1991>}
  is represented by the number 726842.25.  The standard precision of
  12 decimal digits is enough to ensure that a (reasonable) date and
  time can be stored without roundoff error.
@@@ -11009,70 -11009,58 +11009,70 @@@ You can use the @kbd{v p} (@code{calc-p
  of a date form.  @xref{Packing and Unpacking}.
  
  Date forms can go arbitrarily far into the future or past.  Negative
 -year numbers represent years BC@.  Calc uses a combination of the
 -Gregorian and Julian calendars, following the history of Great
 -Britain and the British colonies.  This is the same calendar that
 -is used by the @code{cal} program in most Unix implementations.
 +year numbers represent years BC@.  There is no ``year 0''; the day
 +before @samp{<Mon Jan 1, +1>} is @samp{<Sun Dec 31, -1>}.  These are
 +days 1 and 0 respectively in Calc's internal numbering scheme.  The
 +Gregorian calendar is used for all dates, including dates before the
 +Gregorian calendar was invented (although that can be configured; see
 +below).  Thus Calc's use of the day number @mathit{-10000} to
 +represent August 15, 28 BC should be taken with a grain of salt.
  
  @cindex Julian calendar
  @cindex Gregorian calendar
  Some historical background:  The Julian calendar was created by
 -Julius Caesar in the year 46 BC as an attempt to fix the gradual
 -drift caused by the lack of leap years in the calendar used
 -until that time.  The Julian calendar introduced an extra day in
 -all years divisible by four.  After some initial confusion, the
 -calendar was adopted around the year we call 8 AD@.  Some centuries
 -later it became apparent that the Julian year of 365.25 days was
 -itself not quite right.  In 1582 Pope Gregory XIII introduced the
 -Gregorian calendar, which added the new rule that years divisible
 -by 100, but not by 400, were not to be considered leap years
 -despite being divisible by four.  Many countries delayed adoption
 -of the Gregorian calendar because of religious differences;
 -in Britain it was put off until the year 1752, by which time
 -the Julian calendar had fallen eleven days behind the true
 -seasons.  So the switch to the Gregorian calendar in early
 -September 1752 introduced a discontinuity:  The day after
 -Sep 2, 1752 is Sep 14, 1752.  Calc follows this convention.
 -To take another example, Russia waited until 1918 before
 -adopting the new calendar, and thus needed to remove thirteen
 -days (between Feb 1, 1918 and Feb 14, 1918).  This means that
 -Calc's reckoning will be inconsistent with Russian history between
 -1752 and 1918, and similarly for various other countries.
 -
 -Today's timekeepers introduce an occasional ``leap second'' as
 -well, but Calc does not take these minor effects into account.
 -(If it did, it would have to report a non-integer number of days
 -between, say, @samp{<12:00am Mon Jan 1, 1900>} and
 +Julius Caesar in the year 46 BC as an attempt to fix the confusion
 +caused by the irregular Roman calendar that was used before that time.
 +The Julian calendar introduced an extra day in all years divisible by
 +four.  After some initial confusion, the calendar was adopted around
 +the year we call 8 AD@.  Some centuries later it became
 +apparent that the Julian year of 365.25 days was itself not quite
 +right.  In 1582 Pope Gregory XIII introduced the Gregorian calendar,
 +which added the new rule that years divisible by 100, but not by 400,
 +were not to be considered leap years despite being divisible by four.
 +Many countries delayed adoption of the Gregorian calendar
 +because of religious differences.  For example, Great Britain and the
 +British colonies switched to the Gregorian calendar in September
 +1752, when the Julian calendar was eleven days behind the
 +Gregorian calendar.  That year in Britain, the day after September 2
 +was September 14.  To take another example, Russia did not adopt the
 +Gregorian calendar until 1918, and that year in Russia the day after
 +January 31 was February 14.  Calc's reckoning therefore matches English
 +practice starting in 1752 and Russian practice starting in 1918, but
 +disagrees with earlier dates in both countries.
 +
 +When the Julian calendar was introduced, it had January 1 as the first
 +day of the year.  By the Middle Ages, many European countries
 +had changed the beginning of a new year to a different date, often to
 +a religious festival.  Almost all countries reverted to using January 1
 +as the beginning of the year by the time they adopted the Gregorian
 +calendar.
 +
 +Some calendars attempt to mimic the historical situation by using the
 +Gregorian calendar for recent dates and the Julian calendar for older
 +dates. The @code{cal} program in most Unix implementations does this,
 +for example. While January 1 wasn't always the beginning of a calendar
 +year, these hybrid calendars still use January 1 as the beginning of
 +the year even for older dates.   The customizable variable
 +@code{calc-gregorian-switch} (@pxref{Customizing Calc}) can be set to
 +have Calc's date forms switch from the Julian to Gregorian calendar at
 +any specified date.
 +
 +Today's timekeepers introduce an occasional ``leap second''.
 +These do not occur regularly and Calc does not take these minor
 +effects into account.  (If it did, it would have to report a
 +non-integer number of days between, say,
 +@samp{<12:00am Mon Jan 1, 1900>} and
  @samp{<12:00am Sat Jan 1, 2000>}.)
  
 -Calc uses the Julian calendar for all dates before the year 1752,
 -including dates BC when the Julian calendar technically had not
 -yet been invented.  Thus the claim that day number @mathit{-10000} is
 -called ``August 16, 28 BC'' should be taken with a grain of salt.
 -
 -Please note that there is no ``year 0''; the day before
 -@samp{<Sat Jan 1, +1>} is @samp{<Fri Dec 31, -1>}.  These are
 -days 0 and @mathit{-1} respectively in Calc's internal numbering scheme.
 -
  @cindex Julian day counting
  Another day counting system in common use is, confusingly, also called
 -``Julian.''  The Julian day number is the numbers of days since
 -12:00 noon (GMT) on Jan 1, 4713 BC, which in Calc's scheme (in GMT)
 -is @mathit{-1721423.5} (recall that Calc starts at midnight instead
 -of noon).  Thus to convert a Calc date code obtained by unpacking a
 -date form into a Julian day number, simply add 1721423.5 after
 +``Julian.''  Julian days go from noon to noon.  The Julian day number
 +is the numbers of days since 12:00 noon (GMT) on November 24, 4714 BC
 +in the Gregorian calendar (i.e., January 1, 4713 BC in the Julian
 +calendar).  In Calc's scheme (in GMT) the Julian day origin is
 +@mathit{-1721422.5}, because Calc starts at midnight instead of noon.
 +Thus to convert a Calc date code obtained by unpacking a
 +date form into a Julian day number, simply add 1721422.5 after
  compensating for the time zone difference.  The built-in @kbd{t J}
  command performs this conversion for you.
  
@@@ -11104,7 -11092,7 +11104,7 @@@ the Julian cycle as an astronomical dat
  up by other astronomers.  (At the time, noon was the start of the
  astronomical day.  Herschel originally suggested counting the days
  since Jan 1, 4713 BC at noon Alexandria time; this was later amended to
 -noon GMT.)  Julian day numbering is largely used in astronomy.
 +noon GMT@.)  Julian day numbering is largely used in astronomy.
  
  @cindex Unix time format
  The Unix operating system measures time as an integer number of
@@@ -13416,91 -13404,12 +13416,91 @@@ dates.  @xref{Specifying Operators}.  T
  functions, your date formats should avoid using the @samp{#} character.
  
  @menu
 +* ISO 8601::
  * Date Formatting Codes::
  * Free-Form Dates::
  * Standard Date Formats::
  @end menu
  
 -@node Date Formatting Codes, Free-Form Dates, Date Formats, Date Formats
 +@node ISO 8601, Date Formatting Codes, Date Formats, Date Formats
 +@subsubsection ISO 8601
 +
 +@noindent
 +@cindex ISO 8601
 +The same date can be written down in different formats and Calc tries
 +to allow you to choose your preferred format.  Some common formats are
 +ambiguous, however; for example, 10/11/2012 means October 11,
 +2012 in the United States but it means November 10, 2012 in
 +Europe.  To help avoid such ambiguities, the International Organization
 +for Standardization (ISO) provides the ISO 8601 standard, which
 +provides three different but easily distinguishable and unambiguous
 +ways to represent a date.
 +
 +The ISO 8601 calendar date representation is
 +
 +@example
 +   @var{YYYY}-@var{MM}-@var{DD}
 +@end example
 +
 +@noindent
 +where @var{YYYY} is the four digit year, @var{MM} is the two-digit month
 +number (01 for January to 12 for December), and @var{DD} is the
 +two-digit day of the month (01 to 31).  (Note that @var{YYYY} does not
 +correspond to Calc's date formatting code, which will be introduced
 +later.)  The year, which should be padded with zeros to ensure it has at
 +least four digits, is the Gregorian year, except that the year before
 +0001 (1 AD) is the year 0000 (1 BC).  The date October 11, 2012 is
 +written 2012-10-11 in this representation and November 10, 2012 is
 +written 2012-11-10.
 +
 +The ISO 8601 ordinal date representation is
 +
 +@example
 +  @var{YYYY}-@var{DDD}
 +@end example
 +
 +@noindent
 +where @var{YYYY} is the year, as above, and @var{DDD} is the day of the year.
 +The date December 31, 2011 is written 2011-365 in this representation
 +and January 1, 2012 is written 2012-001.
 +
 +The ISO 8601 week date representation is
 +
 +@example
 + @var{YYYY}-W@var{ww}-@var{D}
 +@end example
 +
 +@noindent
 +where @var{YYYY} is the ISO week-numbering year, @var{ww} is the two
 +digit week number (preceded by a literal ``W''), and @var{D} is the day
 +of the week (1 for Monday through 7 for Sunday).  The ISO week-numbering
 +year is based on the Gregorian year but can differ slightly.  The first
 +week of an ISO week-numbering year is the week with the Gregorian year's
 +first Thursday in it (equivalently, the week containing January 4);
 +any day of that week (Monday through Sunday) is part of the same ISO
 +week-numbering year, any day from the previous week is part of the
 +previous year.  For example, January 4, 2013 is on a Friday, and so
 +the first week for the ISO week-numbering year 2013 starts  on
 +Monday, December 31, 2012.  The day December 31, 2012 is then part of the
 +Gregorian year 2012 but ISO week-numbering year 2013.  In the week
 +date representation, this week goes from 2013-W01-1 (December 31,
 +2012) to 2013-W01-7 (January 6, 2013).
 +
 +All three ISO 8601 representations arrange the numbers from most
 +significant to least significant; as well as being unambiguous
 +representations, they are easy to sort since chronological order in
 +this formats corresponds to lexicographical order. The hyphens are
 +sometimes omitted.
 +
 +The ISO 8601 standard uses a 24 hour clock; a particular time is
 +represented by @var{hh}:@var{mm}:@var{ss} where @var{hh} is the
 +two-digit hour (from 00 to 24), @var{mm} is the two-digit minute (from
 +00 to 59) and @var{ss} is the two-digit second.  The seconds or minutes
 +and seconds can be omitted, and decimals can be added.  If a date with a
 +time is represented, they should be separated by a literal ``T'', so noon
 +on December 13, 2012 can be represented as 2012-12-13T12:00.
 +
 +@node Date Formatting Codes, Free-Form Dates, ISO 8601, Date Formats
  @subsubsection Date Formatting Codes
  
  @noindent
@@@ -13517,7 -13426,7 +13517,7 @@@ the time part.  The punctuation charact
  match exactly; letter fields must correspond to suitable text in
  the input.  If this doesn't work, Calc checks if the input is a
  simple number; if so, the number is interpreted as a number of days
 -since Jan 1, 1 AD@.  Otherwise, Calc tries a much more relaxed and
 +since Dec 31, 1 BC@.  Otherwise, Calc tries a much more relaxed and
  flexible algorithm which is described in the next section.
  
  Weekday names are ignored during reading.
@@@ -13541,10 -13450,6 +13541,10 @@@ Year:  ``91'' for 1991, `` 7'' for 2007
  Year:  ``1991'' for 1991, ``23'' for 23 AD.
  @item YYYY
  Year:  ``1991'' for 1991, ``+23'' for 23 AD.
 +@item ZYYY
 +Year:  ``1991'' for 1991, ``0023'' for 23 AD, ``0000'' for 1 BC.
 +@item IYYY
 +Year:  ISO 8601 week-numbering year.
  @item aa
  Year:  ``ad'' or blank.
  @item AA
@@@ -13593,8 -13498,6 +13593,8 @@@ Day:  ``07'' for 7th day of month
  Day:  `` 7'' for 7th day of month.
  @item W
  Weekday:  ``0'' for Sunday, ``6'' for Saturday.
 +@item w
 +Weekday:  ``1'' for Monday, ``7'' for Sunday.
  @item WWW
  Weekday:  ``SUN'' for Sunday.
  @item Www
@@@ -13605,16 -13508,12 +13605,16 @@@ Weekday:  ``sun'' for Sunday
  Weekday:  ``SUNDAY'' for Sunday.
  @item Wwww
  Weekday:  ``Sunday'' for Sunday.
 +@item Iww
 +Week number:  ISO 8601 week number, ``W01'' for week 1.
  @item d
  Day of year:  ``34'' for Feb. 3.
  @item ddd
  Day of year:  ``034'' for Feb. 3.
  @item bdd
  Day of year:  `` 34'' for Feb. 3.
 +@item T
 +Letter:  Literal ``T''.
  @item h
  Hour:  ``5'' for 5 AM; ``17'' for 5 PM.
  @item hh
@@@ -13788,10 -13687,6 +13788,10 @@@ command (@pxref{Mode Settings})
  @samp{j<, h:mm:ss>}  (Julian day plus time)
  @item 9
  @samp{YYddd< hh:mm:ss>}  (Year-day format)
 +@item 10
 +@samp{ZYYY-MM-DD Www< hh:mm>} (Org mode format)
 +@item 11
 +@samp{IYYY-Iww-w<Thh:mm:ss>} (ISO 8601 week numbering format)
  @end table
  
  @node Truncating the Stack, Justification, Date Formats, Display Modes
@@@ -17435,7 -17330,7 +17435,7 @@@ daylight saving computations.  This is 
  the user-level @code{pwday} function described in the previous
  section. It takes four arguments:  The floating-point date value,
  the corresponding six-element date list, the day-of-month number,
- and the weekday number (0-6).
+ and the weekday number (0--6).
  
  The default daylight saving hook ignores the time zone name, but a
  more sophisticated hook could use different algorithms for different
@@@ -35697,20 -35592,6 +35697,20 @@@ number of undo steps that will be prese
  be preserved.  The default value of @code{calc-undo-length} is @expr{100}.
  @end defvar
  
 +@defvar calc-gregorian-switch
 +See @ref{Date Forms}.@*
 +The variable @code{calc-gregorian-switch} is either a list of integers
 +@code{(@var{YEAR} @var{MONTH} @var{DAY})} or @code{nil}.
 +If it is @code{nil}, then Calc's date forms always represent Gregorian dates.
 +Otherwise, @code{calc-gregorian-switch} represents the date that the
 +calendar switches from Julian dates to Gregorian dates;
 +@code{(@var{YEAR} @var{MONTH} @var{DAY})} will be the first Gregorian
 +date.  The customization buffer will offer several standard dates to
 +choose from, or the user can enter their own date.
 +
 +The default value of @code{calc-gregorian-switch} is @code{nil}.
 +@end defvar
 +
  @node Reporting Bugs, Summary, Customizing Calc, Top
  @appendix Reporting Bugs
  
@@@ -36748,7 -36629,7 +36748,7 @@@ time zone number or name from the top o
  
  @c 17
  @item
- A prefix argument specifies a day number (0-6, 0-31, or 0-366).
+ A prefix argument specifies a day number (0--6, 0--31, or 0--366).
  
  @c 18
  @item
diff --combined doc/misc/cl.texi
@@@ -6,7 -6,7 +6,7 @@@
  @copying
  This file documents the GNU Emacs Common Lisp emulation package.
  
- Copyright @copyright{} 1993, 2001-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1993, 2001--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -1199,6 -1199,9 +1199,6 @@@ The only exceptions are plain variable
  bound on entry, it is simply made unbound by @code{makunbound} or
  @code{fmakunbound} on exit.
  @end ignore
 -
 -Note that the @file{cl.el} version of this macro behaves slightly
 -differently.  @xref{Obsolete Macros}.
  @end defmac
  
  @defmac cl-letf* (bindings@dots{}) forms@dots{}
@@@ -4884,6 -4887,13 +4884,6 @@@ form (@pxref{Obsolete Lexical Binding})
  lexical binding that @code{cl-labels} uses.
  @end defmac
  
 -@defmac letf (bindings@dots{}) forms@dots{}
 -This macro is almost exactly the same as @code{cl-letf}, which
 -replaces it (@pxref{Modify Macros}).  The only difference is in
 -details that relate to some deprecated usage of @code{symbol-function}
 -in place forms.
 -@end defmac
 -
  @node Obsolete Setf Customization
  @appendixsec Obsolete Ways to Customize Setf
  
diff --combined doc/misc/erc.texi
@@@ -9,7 -9,7 +9,7 @@@
  @copying
  This manual is for ERC as distributed with Emacs @value{EMACSVER}.
  
- Copyright @copyright{} 2005-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 2005--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -747,7 -747,7 +747,7 @@@ If non, @code{nil}, this is a list of I
  @defopt erc-lurker-hide-list
  Like @code{erc-hide-list}, but only applies to messages sent by
  lurkers.  The function @code{erc-lurker-p} determines whether a given
 -nickname is considerd a lurker.
 +nickname is considered a lurker.
  @end defopt
  
  
diff --combined doc/misc/gnus.texi
@@@ -11,7 -11,7 +11,7 @@@
  @documentencoding UTF-8
  
  @copying
- Copyright @copyright{} 1995-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1995--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -1296,7 -1296,7 +1296,7 @@@ subscribing these groups
  variable defaults to @code{gnus-subscribe-alphabetically}.
  
  The ``options -n'' format is very simplistic.  The syntax above is all
- that is supports -- you can force-subscribe hierarchies, or you can
+ that is supports: you can force-subscribe hierarchies, or you can
  deny hierarchies, and that's it.
  
  @vindex gnus-options-not-subscribe
@@@ -1579,10 -1579,6 +1579,10 @@@ times you start Gnus
  @vindex gnus-before-startup-hook
  A hook called as the first thing when Gnus is started.
  
 +@item gnus-before-resume-hook
 +@vindex gnus-before-resume-hook
 +A hook called as the first thing when Gnus is resumed after a suspend.
 +
  @item gnus-startup-hook
  @vindex gnus-startup-hook
  A hook run as the very last thing after starting up Gnus
@@@ -2143,14 -2139,14 +2143,14 @@@ In groups in some news servers, there m
  very old articles that will never be expired and the recent ones.  In
  such a case, the server will return the data like @code{(1 . 30000000)}
  for the @code{LIST ACTIVE group} command, for example.  Even if there
- are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
+ are actually only the articles 1--10 and 29999900--30000000, Gnus doesn't
  know it at first and prepares for getting 30000000 articles.  However,
  it will consume hundreds megabytes of memories and might make Emacs get
  stuck as the case may be.  If you use such news servers, set the
  variable @code{gnus-newsgroup-maximum-articles} to a positive number.
  The value means that Gnus ignores articles other than this number of the
  latest ones in every group.  For instance, the value 10000 makes Gnus
- get only the articles 29990001-30000000 (if the latest article number is
+ get only the articles 29990001--30000000 (if the latest article number is
  30000000 in a group).  Note that setting this variable to a number might
  prevent you from reading very old articles.  The default value of the
  variable @code{gnus-newsgroup-maximum-articles} is @code{nil}, which
@@@ -3823,7 -3819,7 +3823,7 @@@ So, to move a topic to the beginning o
  @kbd{C-k} on it.  This is like the ``cut'' part of cut and paste.  Then,
  move the cursor to the beginning of the buffer (just below the ``Gnus''
  topic) and hit @kbd{C-y}.  This is like the ``paste'' part of cut and
- paste.  Like I said -- E-Z.
+ paste.  Like I said---E-Z.
  
  You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics.  So
  you can move topics around as well as groups.
@@@ -13665,7 -13661,7 +13665,7 @@@ server.  The default value of this vari
  @vindex nntp-nov-gap
  @code{nntp} normally sends just one big request for @acronym{NOV} lines to
  the server.  The server responds with one huge list of lines.  However,
- if you have read articles 2-5000 in the group, and only want to read
+ if you have read articles 2--5000 in the group, and only want to read
  article 1 and 5001, that means that @code{nntp} will fetch 4999 @acronym{NOV}
  lines that you will not need.  This variable says how
  big a gap between two consecutive articles is allowed to be before the
@@@ -14762,37 -14758,20 +14762,37 @@@ This can be either the symbol @code{pas
  and says what authentication scheme to use.  The default is
  @code{password}.
  
 +@item :leave
 +Non-@code{nil} if the mail is to be left on the @acronym{POP} server
 +after fetching.  Mails once fetched will never be fetched again by the
 +@acronym{UIDL} control.  Only the built-in @code{pop3-movemail} program
 +(the default) supports this keyword.
 +
 +If this is neither @code{nil} nor a number, all mails will be left on
 +the server.  If this is a number, leave mails on the server for this
 +many days since you first checked new mails.  If this is @code{nil}
 +(the default), mails will be deleted on the server right after fetching.
 +
 +@vindex pop3-uidl-file
 +The @code{pop3-uidl-file} variable specifies the file to which the
 +@acronym{UIDL} data are locally stored.  The default value is
 +@file{~/.pop3-uidl}.
 +
 +Note that @acronym{POP} servers maintain no state information between
 +sessions, so what the client believes is there and what is actually
 +there may not match up.  If they do not, then you may get duplicate
 +mails or the whole thing can fall apart and leave you with a corrupt
 +mailbox.
 +
  @end table
  
 -@vindex pop3-movemail
 +@findex pop3-movemail
  @vindex pop3-leave-mail-on-server
  If the @code{:program} and @code{:function} keywords aren't specified,
 -@code{pop3-movemail} will be used.  If @code{pop3-leave-mail-on-server}
 -is non-@code{nil} the mail is to be left on the @acronym{POP} server
 -after fetching when using @code{pop3-movemail}.  Note that POP servers
 -maintain no state information between sessions, so what the client
 -believes is there and what is actually there may not match up.  If they
 -do not, then you may get duplicate mails or the whole thing can fall
 -apart and leave you with a corrupt mailbox.
 +@code{pop3-movemail} will be used.
  
  Here are some examples for getting mail from a @acronym{POP} server.
 +
  Fetch from the default @acronym{POP} server, using the default user
  name, and default fetcher:
  
@@@ -14807,14 -14786,6 +14807,14 @@@ Fetch from a named server with a named 
       :user "user-name" :password "secret")
  @end lisp
  
 +Leave mails on the server for 14 days:
 +
 +@lisp
 +(pop :server "my.pop.server"
 +     :user "user-name" :password "secret"
 +     :leave 14)
 +@end lisp
 +
  Use @samp{movemail} to move the mail:
  
  @lisp
@@@ -15961,7 -15932,7 +15961,7 @@@ Decode Quoted Readable encoding
  If you are a member of a couple of mailing lists, you will sometimes
  receive two copies of the same mail.  This can be quite annoying, so
  @code{nnmail} checks for and treats any duplicates it might find.  To do
- this, it keeps a cache of old @code{Message-ID}s---
+ this, it keeps a cache of old @code{Message-ID}s:
  @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by
  default.  The approximate maximum number of @code{Message-ID}s stored
  there is controlled by the @code{nnmail-message-id-cache-length}
@@@ -16625,8 -16596,8 +16625,8 @@@ future.  Here are some high and low poi
  @table @code
  @item nnmbox
  
- UNIX systems have historically had a single, very common, and well-
defined format.  All messages arrive in a single @dfn{spool file}, and
+ UNIX systems have historically had a single, very common, and well-defined
+ format.  All messages arrive in a single @dfn{spool file}, and
  they are delineated by a line whose regular expression matches
  @samp{^From_}.  (My notational use of @samp{_} is to indicate a space,
  to make it clear in this instance that this is not the RFC-specified
@@@ -21173,7 -21144,7 +21173,7 @@@ features (inspired by the Google searc
  AND, OR, and NOT are supported, and parentheses can be used to control
  operator precedence, e.g., (emacs OR xemacs) AND linux. Note that
  operators must be written with all capital letters to be
- recognized. Also preceding a term with a - sign is equivalent to NOT
+ recognized. Also preceding a term with a @minus{} sign is equivalent to NOT
  term.
  
  @item Automatic AND queries
@@@ -21221,7 -21192,8 +21221,8 @@@ Note that operators must be written wit
  recognized.
  
  @item Required and excluded terms
- + and - can be used to require or exclude terms, e.g., football -american
+ + and @minus{} can be used to require or exclude terms, e.g., football
+ @minus{}american
  
  @item Unicode handling
  The search engine converts all text to utf-8, so searching should work
@@@ -21358,7 -21330,7 +21359,7 @@@ This engine is obsolete
  @table @code
  
  @item nnir-method-default-engines
- Alist of server backend - search engine pairs. The default associations
+ Alist of pairs of server backends and search engines. The default associations
  are
  @example
  (nnimap . imap)
@@@ -22573,7 -22545,7 +22574,7 @@@ configuration function will use @code{g
  possible names is listed below.
  
  The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer
- should occupy.  To take the @code{article} split as an example -
+ should occupy.  To take the @code{article} split as an example:
  
  @lisp
  (article (vertical 1.0 (summary 0.25 point)
@@@ -26350,9 -26322,9 +26351,9 @@@ with the information when possible)
  
  On the January 31th 2012, Ma Gnus was begun.
  
- If you happen upon a version of Gnus that has a prefixed name --
``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'',
- ``Pterodactyl Gnus'', ``Oort Gnus'', ``No Gnus'', ``Ma Gnus'' -- don't
+ If you happen upon a version of Gnus that has a prefixed name---``(ding)
+ Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'',
+ ``Pterodactyl Gnus'', ``Oort Gnus'', ``No Gnus'', ``Ma Gnus''---don't
  panic.  Don't let it know that you're frightened.  Back away.  Slowly.
  Whatever you do, don't run.  Walk away, calmly, until you're out of
  its reach.  Find a proper released version of Gnus and snuggle up to
@@@ -26499,14 -26471,14 +26500,14 @@@ on Son-of-RFC 1036.  They have produce
  various changes to the format of news articles.  The Gnus towers will
  look into implementing the changes when the draft is accepted as an RFC.
  
- @item MIME - RFC 2045-2049 etc
+ @item MIME---RFC 2045--2049 etc
  @cindex @acronym{MIME}
  All the various @acronym{MIME} RFCs are supported.
  
- @item Disposition Notifications - RFC 2298
+ @item Disposition Notifications---RFC 2298
  Message Mode is able to request notifications from the receiver.
  
- @item PGP - RFC 1991 and RFC 2440
+ @item PGP---RFC 1991 and RFC 2440
  @cindex RFC 1991
  @cindex RFC 2440
  RFC 1991 is the original @acronym{PGP} message specification,
@@@ -26516,15 -26488,15 +26517,15 @@@ non-@acronym{MIME} aware @acronym{PGP} 
  encoding (signing and encryption) and decoding (verification and
  decryption).
  
- @item PGP/MIME - RFC 2015/3156
+ @item PGP/MIME---RFC 2015/3156
  RFC 2015 (superseded by 3156 which references RFC 2440 instead of RFC
  1991) describes the @acronym{MIME}-wrapping around the RFC 1991/2440 format.
  Gnus supports both encoding and decoding.
  
- @item S/MIME - RFC 2633
+ @item S/MIME---RFC 2633
  RFC 2633 describes the @acronym{S/MIME} format.
  
- @item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731
+ @item IMAP---RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731
  RFC 1730 is @acronym{IMAP} version 4, updated somewhat by RFC 2060
  (@acronym{IMAP} 4 revision 1).  RFC 2195 describes CRAM-MD5
  authentication for @acronym{IMAP}.  RFC 2086 describes access control
@@@ -26579,7 -26551,7 +26580,7 @@@ circles) @dfn{snapshots}.  During this 
  unstable and should not be used by casual users.  Gnus alpha releases
  have names like ``Oort Gnus'' and ``No Gnus''.  @xref{Gnus Versions}.
  
- After futzing around for 10-100 alpha releases, Gnus is declared
+ After futzing around for 10--100 alpha releases, Gnus is declared
  @dfn{frozen}, and only bug fixes are applied.  Gnus loses the prefix,
  and is called things like ``Gnus 5.10.1'' instead.  Normal people are
  supposed to be able to use these, and these are mostly discussed on the
@@@ -28166,7 -28138,7 +28167,7 @@@ The behavior can be changed by customiz
  
  @item
  Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
- 2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
+ 2015/3156) and @acronym{S/MIME} (RFC 2630--2633).
  
  It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
  additional Lisp libraries.  This add several menu items to the
@@@ -28585,10 -28557,10 +28586,10 @@@ know that the server makes wrong @acron
  
  @item level
  @cindex levels
- Each group is subscribed at some @dfn{level} or other (1-9).  The ones
+ Each group is subscribed at some @dfn{level} or other (1--9).  The ones
  that have a lower level are ``more'' subscribed than the groups with a
- higher level.  In fact, groups on levels 1-5 are considered
- @dfn{subscribed}; 6-7 are @dfn{unsubscribed}; 8 are @dfn{zombies}; and 9
+ higher level.  In fact, groups on levels 1--5 are considered
+ @dfn{subscribed}; 6--7 are @dfn{unsubscribed}; 8 are @dfn{zombies}; and 9
  are @dfn{killed}.  Commands for listing groups and scanning for new
  articles will all use the numeric prefix as @dfn{working level}.
  
@@@ -29164,8 -29136,8 +29165,8 @@@ return value
  
  Some back ends could be said to be @dfn{server-forming} back ends, and
  some might be said not to be.  The latter are back ends that generally
- only operate on one group at a time, and have no concept of ``server''
---they have a group, and they deliver info on that group and nothing
+ only operate on one group at a time, and have no concept of ``server'';
+ they have a group, and they deliver info on that group and nothing
  more.
  
  Gnus identifies each message by way of group name and article number.  A
diff --combined doc/misc/mh-e.texi
@@@ -8,12 -8,12 +8,12 @@@
  @c %**end of header
  
  @c Version of the software and manual.
 -@set VERSION 8.3
 +@set VERSION 8.4
  @c Edition of the manual. It is either empty for the first edition or
  @c has the form ", nth Edition" (without the quotes).
  @set EDITION
 -@set UPDATED 2011-09-20
 -@set UPDATE-MONTH September, 2011
 +@set UPDATED 2012-11-25
 +@set UPDATE-MONTH November, 2012
  
  @c Other variables.
  @set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
@@@ -24,7 -24,8 +24,8 @@@
  This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
  Manual}, last updated @value{UPDATED}.
  
- Copyright @copyright{} 1995, 2001-2003, 2005-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1995, 2001--2003, 2005--2012 Free Software
+ Foundation, Inc.
  
  @c This dual license has been agreed upon by the FSF.
  
@@@ -211,10 -212,10 +212,10 @@@ more niceties about GNU Emacs and MH@. 
  them.
  
  The MH-E package is distributed with Emacs@footnote{Version
 -@value{VERSION} of MH-E appeared in Emacs 24.1. It is supported in GNU
 +@value{VERSION} of MH-E appeared in Emacs 24.4. It is supported in GNU
  Emacs 23 and higher, as well as XEmacs 21.4.22 and 21.5.31. MH-E is
  known not to work with GNU Emacs versions 20 and below, and XEmacs
- version 21.5.9 - 21.5.16. It is compatible with MH versions 6.8.4 and
+ version 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
  required; version 5.10 or higher is recommended. This manual covers
@@@ -5644,7 -5645,7 +5645,7 @@@ The command @kbd{C-c C-w} (@code{mh-che
  you can check the actual address(es) in the alias. A new buffer named
  @samp{*MH-E Recipients*} is created with the output of @command{whom}
  (@pxref{Miscellaneous})@footnote{See the section
- @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now? -- and the
+ @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now?---and the
  whatnow Program} in the MH book.}.
  
  @node Sending Message, Killing Draft, Checking Recipients, Editing Drafts
@@@ -6965,22 -6966,23 +6966,22 @@@ swish-e -c /home/user/Mail/.swish/confi
  @cindex @command{mairix}
  @cindex Unix commands, @command{mairix}
  
 -In the examples below, replace @file{/home/user/Mail} with the path to
 -your MH directory.
 +In the examples below, replace @file{~/Mail} with the path to your MH
 +directory.
  
 -First create the directory @file{/home/user/Mail/.mairix}. Then create
 -the file @file{/home/user/Mail/.mairix/config} with the following
 -contents:
 +First create the directory @file{~/Mail/.mairix}. Then create the file
 +@file{~/Mail/.mairix/config} with the following contents:
  
  @smallexample
  @group
 -base=/home/user/Mail
 +base=~/Mail
  
  # List of folders that should be indexed. 3 dots at the end means there
  # are subfolders within the folder
  mh=archive...:inbox:drafts:news:sent:trash
  
 -vfolder_format=mh
 -database=/home/user/Mail/.mairix/database
 +mformat=mh
 +database=~/Mail/.mairix/database
  @end group
  @end smallexample
  
@@@ -6988,7 -6990,7 +6989,7 @@@ Use the following command line to gener
  from cron:
  
  @smallexample
 -mairix -f /home/user/Mail/.mairix/config
 +mairix -f ~/Mail/.mairix/config
  @end smallexample
  
  @subsection namazu
@@@ -7393,9 -7395,6 +7394,9 @@@ The name of the MH sequence for ticked 
  @item mh-update-sequences-after-mh-show-flag
  On means flush MH sequences to disk after message is shown (default:
  @samp{on}).
 +@item mh-whitelist-preserves-sequences-flag
 +On means that sequences are preserved when messages are whitelisted
 +(default: @samp{on}).
  @end vtable
  
  The following hook is available.
@@@ -7601,40 -7600,6 +7602,40 @@@ Disposition of junk mail (default: @sam
  Spam program that MH-E should use (default: @samp{Auto-detect}).
  @end vtable
  
 +@cindex @samp{mh-sequences} customization group
 +@cindex customization group, @samp{mh-sequences}
 +
 +The following option in the @samp{mh-sequences} customization group is
 +also available.
 +
 +@vtable @code
 +@item mh-whitelist-preserves-sequences-flag
 +On means that sequences are preserved when messages are whitelisted
 +(default: @samp{on}).
 +@end vtable
 +
 +The following hooks are available.
 +
 +@vtable @code
 +@item mh-blacklist-msg-hook
 +Hook run by @kbd{J b} (@code{mh-junk-blacklist}) after marking each
 +message for blacklisting (default: @code{nil}).
 +@c -------------------------
 +@item mh-whitelist-msg-hook
 +Hook run by @kbd{J w} (@code{mh-junk-whitelist}) after marking each
 +message for whitelisting (default @samp{nil}).
 +@end vtable
 +
 +The following faces are available.
 +
 +@vtable @code
 +@item mh-folder-blacklisted
 +Blacklisted message face.
 +@c -------------------------
 +@item mh-folder-whitelisted
 +Whitelisted message face
 +@end vtable
 +
  @cindex SpamProbe
  @cindex Spamassassin
  @cindex bogofilter
@@@ -7677,18 -7642,6 +7678,18 @@@ reclassifies a range of messages (@pxre
  incorrectly classified as spam. It then refiles the message into the
  @file{+inbox} folder.
  
 +@cindex MH profile component, @samp{Previous-Sequence:}
 +@cindex @samp{cur} sequence
 +@cindex @samp{Previous-Sequence:} MH profile component
 +@cindex sequence, @samp{cur}
 +@cindex sequence, @samp{Previous-Sequence}
 +@vindex mh-whitelist-preserves-sequences-flag
 +
 +If a message is in any sequence (except @samp{Previous-Sequence:} and
 +@samp{cur}) when it is whitelisted, then it will still be in those
 +sequences in the destination folder. If this behavior is not desired,
 +then turn off the option @code{mh-whitelist-preserves-sequences-flag}.
 +
  @cindex @samp{*MH-E Log*}
  @cindex buffers, @samp{*MH-E Log*}
  @findex call-process
@@@ -7762,7 -7715,7 +7763,7 @@@ all of your interesting messages and ad
  conservative. Add that many dots to the @samp{X-Spam-Level:} header
  field above to send messages with that score down the drain.
  
- In the example above, messages with a score of 5-9 are set aside in
+ In the example above, messages with a score of 5--9 are set aside in
  the @samp{+spam} folder for later review. The major weakness of
  rules-based filters is a plethora of false positives so it is
  worthwhile to check.
@@@ -8664,7 -8617,7 +8665,7 @@@ In order to send mail within Gnus usin
  Since Gnus keeps track of which messages you have read, it would be
  bad if Gnus expired the last message, for example, message 100, and
  @command{rcvstore} gave the next new message number 1. Gnus would then
- ignore it since it thinks that you've read messages 1-100. Turning on
+ ignore it since it thinks that you've read messages 1--100. Turning on
  this option ensures that the last message is never removed thereby
  eliminating this problem.
  @end vtable
@@@ -8881,7 -8834,7 +8882,7 @@@ same structure as MH-E (i.e., invoked M
  simpler and the commands were slightly different. Unfortunately, I no
  longer have a copy so the differences are lost in the mists of time.
  
- In '82-83, I was working at BBN and wrote a lot of mlisp code in
+ In '82--83, I was working at BBN and wrote a lot of mlisp code in
  Gosling Emacs to make it look more like Tennex Emacs. One of the
  packages that I picked up and improved was Reid's mail system. In '83,
  I went back to Berkeley. About that time, Stallman's first version of
diff --combined doc/misc/ses.texi
@@@ -1,7 -1,7 +1,7 @@@
  \input texinfo   @c -*-texinfo-*-
  @c %**start of header
  @setfilename ../../info/ses
 -@settitle SES: Simple Emacs Spreadsheet
 +@settitle @acronym{SES}: Simple Emacs Spreadsheet
  @setchapternewpage off
  @syncodeindex fn cp
  @syncodeindex vr cp
@@@ -9,9 -9,9 +9,9 @@@
  @c %**end of header
  
  @copying
 -This file documents SES: the Simple Emacs Spreadsheet.
 +This file documents @acronym{SES}: the Simple Emacs Spreadsheet.
  
- Copyright @copyright{} 2002-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 2002--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -28,13 -28,13 +28,13 @@@ modify this GNU manual.'
  
  @dircategory Emacs misc features
  @direntry
 -* SES: (ses).                   Simple Emacs Spreadsheet.
 +* @acronym{SES}: (ses).                   Simple Emacs Spreadsheet.
  @end direntry
  
  @finalout
  
  @titlepage
 -@title SES
 +@title @acronym{SES}
  @subtitle Simple Emacs Spreadsheet
  @author Jonathan A. Yavner
  @author @email{jyavner@@member.fsf.org}
  @ifnottex
  @node Top, Sales Pitch, (dir), (dir)
  @comment  node-name,  next,  previous,  up
 -@top SES: Simple Emacs Spreadsheet
 +@top @acronym{SES}: Simple Emacs Spreadsheet
  
  @display
 -SES is a major mode for GNU Emacs to edit spreadsheet files, which
 +@acronym{SES} is a major mode for GNU Emacs to edit spreadsheet files, which
  contain a rectangular grid of cells.  The cells' values are specified
  by formulas that can refer to the values of other cells.
  @end display
@@@ -65,7 -65,7 +65,7 @@@ To report bugs, send email to @email{jy
  @insertcopying
  
  @menu
 -* Sales Pitch::                 Why use SES?
 +* Sales Pitch::                 Why use @acronym{SES}?
  * The Basics::                  Basic spreadsheet commands
  * Advanced Features::           Want to know more?
  * For Gurus::                   Want to know @emph{even more}?
@@@ -125,9 -125,9 +125,9 @@@ Moves point to cell, specified by ident
  
  Point is always at the left edge of a cell, or at the empty endline.
  When mark is inactive, the current cell is underlined.  When mark is
 -active, the range is the highlighted rectangle of cells (SES always
 +active, the range is the highlighted rectangle of cells (@acronym{SES} always
  uses transient mark mode).  Drag the mouse from A1 to A3 to create the
 -range A1-A2.  Many SES commands operate only on single cells, not
 +range A1-A2.  Many @acronym{SES} commands operate only on single cells, not
  ranges.
  
  @table @kbd
@@@ -154,7 -154,7 +154,7 @@@ Highlight all cells (@code{mark-whole-b
  * Printer functions::
  * Clearing cells::
  * Copy/cut/paste::
 -* Customizing SES::
 +* Customizing @acronym{SES}::
  @end menu
  
  @node Formulas, Resizing, The Basics, The Basics
@@@ -191,7 -191,7 +191,7 @@@ this cell's formula will be reevaluated
  expression, you can use @kbd{M-@key{TAB}} to complete symbol names.
  
  @item ' @r{(apostrophe)}
 -Enter a symbol (ses-read-symbol).  SES remembers all symbols that have
 +Enter a symbol (ses-read-symbol).  @acronym{SES} remembers all symbols that have
  been used as formulas, so you can type just the beginning of a symbol
  and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and @kbd{?} to complete it.
  @end table
@@@ -348,7 -348,7 +348,7 @@@ Clear cell and move right (@code{ses-cl
  @end table
  
  
 -@node Copy/cut/paste, Customizing SES, Clearing cells, The Basics
 +@node Copy/cut/paste, Customizing @acronym{SES}, Clearing cells, The Basics
  @section Copy, cut, and paste
  @cindex copy
  @cindex cut
  @findex ses-yank-pop
  
  The copy functions work on rectangular regions of cells.  You can paste the
 -copies into non-SES buffers to export the print text.
 +copies into non-@acronym{SES} buffers to export the print text.
  
  @table @kbd
  @item M-w
@@@ -393,7 -393,7 +393,7 @@@ Paste from kill ring (@code{yank}).  Th
  differently depending on the format of the text being inserted:
  @itemize @bullet
  @item
 -When pasting cells that were cut from a SES buffer, the print text is
 +When pasting cells that were cut from a @acronym{SES} buffer, the print text is
  ignored and only the attached formula and printer are inserted; cell
  references in the formula are relocated unless you use @kbd{C-u}.
  @item
@@@ -401,7 -401,7 +401,7 @@@ The pasted text overwrites a rectangle 
  is the current cell.  If part of the rectangle is beyond the edges of
  the spreadsheet, you must confirm the increase in spreadsheet size.
  @item
 -Non-SES text is usually inserted as a replacement formula for the
 +Non-@acronym{SES} text is usually inserted as a replacement formula for the
  current cell.  If the formula would be a symbol, it's treated as a
  string unless you use @kbd{C-u}.  Pasted formulas with syntax errors
  are always treated as strings.
@@@ -419,12 -419,12 +419,12 @@@ Set point and paste from secondary clip
  @item M-y
  Immediately after a paste, you can replace the text with a preceding
  element from the kill ring (@code{ses-yank-pop}).  Unlike the standard
 -Emacs yank-pop, the SES version uses @code{undo} to delete the old
 +Emacs yank-pop, the @acronym{SES} version uses @code{undo} to delete the old
  yank.  This doesn't make any difference?
  @end table
  
 -@node Customizing SES,  , Copy/cut/paste, The Basics
 -@section Customizing SES
 +@node Customizing @acronym{SES},  , Copy/cut/paste, The Basics
 +@section Customizing @acronym{SES}
  @cindex customizing
  @vindex enable-local-eval
  @vindex ses-mode-hook
@@@ -442,7 -442,7 +442,7 @@@ up or down.  For diagonal movement, sel
  list.
  
  @code{ses-mode-hook} is a normal mode hook (list of functions to
 -execute when starting SES mode for a buffer).
 +execute when starting @acronym{SES} mode for a buffer).
  
  The variable @code{safe-functions} is a list of possibly-unsafe
  functions to be treated as safe when analyzing formulas and printers.
@@@ -468,10 -468,7 +468,10 @@@ safety belts
  
  @table @kbd
  @item C-c M-C-h
 -(@code{ses-set-header-row}).  The header line at the top of the SES
 +(@code{ses-set-header-row}).
 +@findex ses-set-header-row
 +@kindex C-c M-C-h
 +The header line at the top of the @acronym{SES}
  window normally shows the column letter for each column.  You can set
  it to show a copy of some row, such as a row of column titles, so that
  row will always be visible.  Default is to set the current row as the
@@@ -480,16 -477,6 +480,16 @@@ show column letters again
  @item [header-line mouse-3]
  Pops up a menu to set the current row as the header, or revert to
  column letters.
 +@item M-x ses-rename-cell
 +@findex ses-rename-cell
 +Rename a cell from a standard A1-like name to any
 +string.
 +@item M-x ses-repair-cell-reference-all
 +@findex ses-repair-cell-reference-all
 +When you interrupt a cell formula update by clicking @kbd{C-g}, then
 +the cell reference link may be broken, which will jeopardize automatic
 +cell update when any other cell on which it depends is changed. To
 +repair that use function @code{ses-repair-cell-reference-all}
  @end table
  
  @menu
  @findex ses-renarrow-buffer
  @findex ses-reprint-all
  
 -A SES file consists of a print area and a data area.  Normally the
 +A @acronym{SES} file consists of a print area and a data area.  Normally the
  buffer is narrowed to show only the print area.  The print area is
 -read-only except for special SES commands; it contains cell values
 +read-only except for special @acronym{SES} commands; it contains cell values
  formatted by printer functions.  The data area records the formula and
  printer functions, etc.
  
@@@ -588,52 -575,6 +588,52 @@@ If you insert a new row just beyond th
  a new column just beyond a one-row range, the new cell is included in
  the range.  New cells inserted just before a range are not included.
  
 +Flags can be added to @code{ses-range} immediately after the @var{to}
 +cell.
 +@table @code
 +@item !
 +Empty cells in range can be removed by adding the @code{!} flag. An
 +empty cell is a cell the value of which is one of symbols @code{nil}
 +or @code{*skip*}. For instance @code{(ses-range A1 A4 !)} will do the
 +same as @code{(list A1 A3)} when cells @code{A2} and @code{A4} are
 +empty.
 +@item _
 +Empty cell values are replaced by the argument following flag
 +@code{_}, or @code{0} when flag @code{_} is last in argument list. For
 +instance @code{(ses-range A1 A4 _ "empty")} will do the same as
 +@code{(list A1 "empty" A3 "empty")} when cells @code{A2} and @code{A4}
 +are empty. Similarly, @code{(ses-range A1 A4 _ )} will do the same as
 +@code{(list A1 0 A3 0)}.
 +@item >v
 +When order matters, list cells by reading cells row-wise from top left
 +to bottom right. This flag is provided for completeness only as it is
 +the default reading order.
 +@item <v
 +List cells by reading cells row-wise from top right to bottom left.
 +@item v>
 +List cells by reading cells column-wise from top left to bottom right.
 +@item v<
 +List cells by reading cells column-wise from top right to bottom left.
 +@item v
 +A short hand for @code{v>}.
 +@item ^
 +A short hand for @code{^>}.
 +@item >
 +A short hand for @code{>v}.
 +@item <
 +A short hand for @code{>^}.
 +@item *
 +Instead of listing cells, it makes a Calc vector or matrix of it
 +(@pxref{Top,,,calc,GNU Emacs Calc Manual}). If the range contains only
 +one row or one column a vector is made, otherwise a matrix is made.
 +@item *2
 +Same as @code{*} except that a matrix is always made even when there
 +is only one row or column in the range.
 +@item *1
 +Same as @code{*} except that a vector is always made even when there
 +is only one row or column in the range, that is to say the
 +corresponding matrix is flattened.
 +@end table
  
  @node Sorting by column, Standard formula functions, Ranges in formulas, Advanced Features
  @section Sorting by column
@@@ -711,7 -652,7 +711,7 @@@ the result is too wide for the availabl
  row or the next non-@code{nil} cell), the result is truncated if the cell's
  value is a string, or replaced with hash marks otherwise.
  
 -SES could get confused by printer results that contain newlines or
 +@acronym{SES} could get confused by printer results that contain newlines or
  tabs, so these are replaced with question marks.
  
  @table @kbd
@@@ -751,7 -692,7 +751,7 @@@ Export a range of cells as tab-separate
  Export a range of cells as tab-separated formulas (@code{ses-export-tsf}).
  @end table
  
- The exported text goes to the kill ring --- you can paste it into
+ The exported text goes to the kill ring; you can paste it into
  another buffer.  Columns are separated by tabs, rows by newlines.
  
  To import text, use any of the yank commands where the text to paste
@@@ -792,7 -733,7 +792,7 @@@ for more info on how Lisp forms are cla
  A common organization for spreadsheets is to have a bunch of ``detail''
  rows, each perhaps describing a transaction, and then a set of
  ``summary'' rows that each show reduced data for some subset of the
 -details.  SES supports this organization via the @code{ses-select}
 +details.  @acronym{SES} supports this organization via the @code{ses-select}
  function.
  
  @table @code
@@@ -829,7 -770,7 +829,7 @@@ details-and-summary spreadsheet
  * Nonrelocatable references::
  * The data area::
  * Buffer-local variables in spreadsheets::
 -* Uses of defadvice in SES::
 +* Uses of defadvice in @acronym{SES}::
  @end menu
  
  @node Deferred updates, Nonrelocatable references, For Gurus, For Gurus
@@@ -857,7 -798,7 +857,7 @@@ progress message of the form ``Writing.
  These deferred cell-writes cannot be interrupted by @kbd{C-g}, so
  you'll just have to wait.
  
 -SES uses @code{run-with-idle-timer} to move the cell underline when
 +@acronym{SES} uses @code{run-with-idle-timer} to move the cell underline when
  Emacs will be scrolling the buffer after the end of a command, and
  also to narrow and underline after @kbd{C-x C-v}.  This is visible as
  a momentary glitch after C-x C-v and certain scrolling commands.  You
@@@ -901,14 -842,14 +901,14 @@@ Begins with an 014 character, followed 
  macros for each row, followed by column-widths, column-printers,
  default-printer, and header-row.  Then there's the global parameters
  (file-format ID, numrows, numcols) and the local variables (specifying
 -SES mode for the buffer, etc.)
 +@acronym{SES} mode for the buffer, etc.)
  
 -When a SES file is loaded, first the numrows and numcols values are
 +When a @acronym{SES} file is loaded, first the numrows and numcols values are
  loaded, then the entire data area is @code{eval}ed, and finally the local
  variables are processed.
  
  You can edit the data area, but don't insert or delete any newlines
 -except in the local-variables part, since SES locates things by
 +except in the local-variables part, since @acronym{SES} locates things by
  counting newlines.  Use @kbd{C-x C-e} at the end of a line to install
  your edits into the spreadsheet data structures (this does not update
  the print area, use, e.g., @kbd{C-c C-l} for that).
@@@ -924,7 -865,7 +924,7 @@@ data structures
  @end table
  
  
 -@node Buffer-local variables in spreadsheets, Uses of defadvice in SES, The data area, For Gurus
 +@node Buffer-local variables in spreadsheets, Uses of defadvice in @acronym{SES}, The data area, For Gurus
  @section Buffer-local variables in spreadsheets
  @cindex buffer-local variables
  @cindex variables, buffer-local
@@@ -947,7 -888,7 +947,7 @@@ order to avoid a virus warning
  You can define functions by making them values for the fake local
  variable @code{eval}.  Such functions can then be used in your
  formulas and printers, but usually each @code{eval} is presented to
- the user during file loading as a potential virus --- this can get
+ the user during file loading as a potential virus.  This can get
  annoying.
  
  You can define functions in your @file{.emacs} file.  Other people can
@@@ -958,8 -899,8 +958,8 @@@ avoid virus warnings, each function use
  (put 'your-function-name 'safe-function t)
  @end lisp
  
 -@node Uses of defadvice in SES,  , Buffer-local variables in spreadsheets, For Gurus
 -@section Uses of defadvice in SES
 +@node Uses of defadvice in @acronym{SES},  , Buffer-local variables in spreadsheets, For Gurus
 +@section Uses of defadvice in @acronym{SES}
  @cindex defadvice
  @cindex undo-more
  @cindex copy-region-as-kill
diff --combined doc/misc/srecode.texi
@@@ -15,7 -15,7 +15,7 @@@
  @c %**end of header
  
  @copying
- Copyright @copyright{} 2007-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 2007--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -225,7 -225,7 +225,7 @@@ template files, and determining which t
  current buffer.  Template files are sorted by priority, with user
  templates being found first, and system level default templates last.
  Templates are also sorted by application.  Each application has its
 -own templates, and are kept seperate from the generic templates.
 +own templates, and are kept separate from the generic templates.
  
  @section Dictionary
  Dictionaries contain values associated with variable.  Variables are
@@@ -311,7 -311,7 +311,7 @@@ template to be inserted again
  
  By default, when inserting a template, if the user needs to enter text
  to fill in a part of the template, then the minibuffer is used to
 -query for that information.  SRecode also supports a field-edting mode
 +query for that information.  SRecode also supports a field-editing mode
  that can be used instead.  To enable it set:
  
  @defun srecode-insert-ask-variable-method
@@@ -343,7 -343,7 +343,7 @@@ Once the cursor moves out of the are in
  fields are cancelled.
  
  @b{NOTE}: Some conveniences in templates, such as completion, or
 -character restrictins are lost when using field editing mode.
 +character restrictions are lost when using field editing mode.
  
  @node Template Writing
  @chapter Template Writing
@@@ -400,7 -400,7 +400,7 @@@ set VARNAME "some value
  @end example
  
  Note that a VARIABLE is a name in a dictionary that can be used in a
 -MACRO in a template.  The macro referernces some variable by name.
 +MACRO in a template.  The macro references some variable by name.
  
  @menu
  * String Values::       Basic Variable values
@@@ -419,7 -419,7 +419,7 @@@ other characters.  Strings are interpre
  @code{\n}, @code{\t}, and @code{\"} work.
  
  When a string is inserted as part of a template, nothing within the
 -string is interperted, such as template escape characters.
 +string is interpreted, such as template escape characters.
  
  @node Multi-string Values
  @subsection Multi-string Values
@@@ -463,7 -463,7 +463,7 @@@ show NAM
  This will enable that section.
  
  
- NOTE: May 11, 2008 - I haven't used this yet, so I don't know if it works.
+ NOTE: May 11, 2008: I haven't used this yet, so I don't know if it works.
  
  
  @node Special Variables
@@@ -544,7 -544,7 +544,7 @@@ Any template file that has a project sp
  priority that is set between SRecode base templates, and user defined
  templates.
  
 -Templates can be compiled via a project system, such as EDE.  EDE
 +Templates can be compiled via a project system, such as EDE@.  EDE
  loaded templates will get a @var{project} set automatically.
  
  Example:
@@@ -575,10 -575,10 +575,10 @@@ macros which will enable different @var
  section variables are.
  
  @itemize @bullet
- @item @var{first} - The first entry in the table.
- @item @var{notfirst} - Not the first entry in the table.
- @item @var{last} - The last entry in the table
- @item @var{notlast} - Not the last entry in the table.
+ @item @var{first}---The first entry in the table.
+ @item @var{notfirst}---Not the first entry in the table.
+ @item @var{last}---The last entry in the table
+ @item @var{notlast}---Not the last entry in the table.
  @end itemize
  
  @node Compound Variable Values
@@@ -598,7 -598,7 +598,7 @@@ variables from Lisp
  A template represents a text pattern that can be inserted into
  a buffer.
  
 -A basic template is declaired like this:
 +A basic template is declared like this:
  
  @example
  template TEMPLATENAME :arg1 :arg2
@@@ -620,7 -620,7 +620,7 @@@ contain the text "-----"
  
  @menu
  * Template Section Dictionaries::  Template Scoped Macro values
 -* Template Macros::     Macros occuring in template patterns
 +* Template Macros::     Macros occurring in template patterns
  @end menu
  
  @node Template Section Dictionaries
@@@ -643,7 -643,7 +643,7 @@@ An end lin
  @end example
  
  In this example, the @var{NAME} variable gets the value ``foo'', but
 -only while it is inside section macro A.  The outer scoped NAME will
 +only while it is inside section macro A@.  The outer scoped NAME will
  be empty.
  
  This is particularly useful while using an include macro to pull in a
@@@ -846,7 -846,7 +846,7 @@@ template fo
  
  context C2
  
 -temlate foo
 +template foo
  "Foo template in C2"
  ----
  ----
@@@ -857,13 -857,13 +857,13 @@@ C1.  The second is available in contex
  
  This is useful if there are multiple ways to declare something like a
  function or variable that differ only by where it is in the syntax of
 -the lanugage.  The name @code{foo} is not ambiguous because each is in
 +the language.  The name @code{foo} is not ambiguous because each is in
  a different context.
  
  @node Prompts
  @section Prompt
  
 -Some templates use promtping macro insertion.  A macro that needs a
 +Some templates use prompting macro insertion.  A macro that needs a
  prompt looks like this:
  
  @example
@@@ -880,7 -880,7 +880,7 @@@ Specify NAME
  
  For such macros, you can pre-define prompts for any dictionary entry.
  When that dictionary entry is first encountered, the user is prompted,
 -and subsequent occurances of that dictionary entry use the same value.
 +and subsequent occurrences of that dictionary entry use the same value.
  
  To get a different prompt, use a prompt command like this:
  
@@@ -925,7 -925,7 +925,7 @@@ need to use the @code{defaultmacro} key
  prompt VARNAME "Varname: " defaultmacro "PREFIX"
  @end example
  
 -now, when it attempts to read in VARNAME, it will pre-populte the text
 +now, when it attempts to read in VARNAME, it will pre-populate the text
  editing section with whatever the value of PREFIX is.
  
  Some language arguments may supply possible prefixes for prompts.
@@@ -971,7 -971,7 +971,7 @@@ When building an @srecode{} based appli
  your dictionary values yourself.  There are several utility functions
  for this.
  
 -In the simplest form, you can assocate a string with a variable.
 +In the simplest form, you can associate a string with a variable.
  
  @defun srecode-dictionary-set-value dict name value
  @anchor{srecode-dictionary-set-value}
@@@ -996,9 -996,8 +996,9 @@@ You can add several dictionaries to th
  For each dictionary added to a variable, the block of codes in
  the template will be repeated.
  
 -If optional argument @var{SHOW-ONLY} is non-@code{nil}, then don't add a new dictionarly
 -if there is already one in place.  Also, don't add @var{FIRST}/@var{LAST} entries.
 +If optional argument @var{SHOW-ONLY} is non-@code{nil}, then don't add
 +a new dictionary if there is already one in place.  Also, don't add
 +@var{FIRST}/@var{LAST} entries.
  These entries are not needed when we are just showing a section.
  
  Each dictionary added will automatically get values for positional macros
@@@ -1126,7 -1125,7 +1126,7 @@@ want, but adding dictionary values is t
  @node Querying a Dictionary
  @section Querying a Dictionary
  
 -When creating a new argument, it may be useful to ask the dicitonary
 +When creating a new argument, it may be useful to ask the dictionary
  what entries are already set there, and conditionally create new
  entries based on those.
  
@@@ -1234,7 -1233,7 +1234,7 @@@ The current hour in 24 hour format
  @item HOUR12
  The current hour in 12 hour format.
  @item AMPM
 -Locale equivalent of AM or PM.  Usefule with HOUR12.
 +Locale equivalent of AM or PM@.  Useful with HOUR12.
  @item MINUTE
  The current minute.
  @item SECOND
@@@ -1331,7 -1330,7 +1331,7 @@@ entries
  
  @table @code
  @item ARGS
 -A Loop macro value.  Each argument is inserted in ARGS.  To create a
 +A Loop macro value.  Each argument is inserted in ARGS@.  To create a
  comma separated list of arguments, you might do this:
  
  @example
@@@ -1412,7 -1411,7 +1412,7 @@@ name
  Converts the filename into text that would be suitable as a class-name
  for the main class in the file.
  @item CURRENT_PACKAGE
 -Finds the occurance of ``package'' and gets its value.
 +Finds the occurrence of ``package'' and gets its value.
  @end table
  
  @subsubsection Argument :el
@@@ -1430,7 -1429,7 +1430,7 @@@ to namespaces in other languages
  The name of the Emacs Custom group that instances of @code{defcustom}
  ought to use.
  @item FACEGROUP
 -The name of the Emacs Custom group that faces delcared with
 +The name of the Emacs Custom group that faces declared with
  @code{defface} ought to use.
  @end table
  
@@@ -1551,7 -1550,7 +1551,7 @@@ tables that do not belong to an applica
  @end defun
  
  For purposes of an @srecode{} application, it is important to decide
 -what to call yoru application, and use that with this method call.
 +what to call your application, and use that with this method call.
  
  @section Creating dictionaries
  
@@@ -1582,7 -1581,7 +1582,7 @@@ If @var{stream} is nil, then use the cu
  @node Template Naming Conventions
  @chapter Template Naming Conventions
  
 -For @srecode{} to work across langauges reliably, templates need to
 +For @srecode{} to work across languages reliably, templates need to
  follow a predictable pattern.  For every language of similar nature
  (OO, functional, doc based) if they all provide the same base
  templates, then an application can be written against the base
@@@ -1613,7 -1612,7 +1613,7 @@@ Functional languages should attempt to 
  @item function
  A standalone function.  Not a method, external method, or other.
  @item method
 -A method belonging to some class declaired outside the textual bounds
 +A method belonging to some class declared outside the textual bounds
  of that class' declaration.
  @item variable
  A global variable.
@@@ -1655,7 -1654,7 +1655,7 @@@ This would be a field of the class bein
  
  Inside a body of code, such as a function or method body.
  
-  - no conventions yet.
+  ---no conventions yet.
  
  @section Standard Dictionary Values
  
@@@ -1685,7 -1684,7 +1685,7 @@@ also the following useful dictionary va
  
  @table @var
  @item TAG
 -A special insertion value TAG.  You can use semantic functions to turn
 +A special insertion value TAG@.  You can use semantic functions to turn
  the tag into a string.
  @item HAVEDEFAULT
  @itemx DEFAULT
@@@ -1779,7 -1778,7 +1779,7 @@@ all template files for that applicatio
  @end defun
  
  
-  todo - Add examples.  Most core stuff is already described above.
+  todo: Add examples.  Most core stuff is already described above.
  
  
  @node GNU Free Documentation License
diff --combined doc/misc/tramp.texi
@@@ -37,7 -37,7 +37,7 @@@
  @end macro
  
  @copying
- Copyright @copyright{} 1999-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1999--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -451,8 -451,7 +451,8 @@@ GVFS integration started in February 20
  Remote commands on Windows hosts are available since September 2011.
  @end ifset
  Ad-hoc multi-hop methods (with a changed syntax) have been reenabled
 -in November 2011.
 +in November 2011.  In November 2012, Juergen Hoetzel's
 +@file{tramp-adb.el} has been added.
  
  In December 2001, @value{tramp} has been added to the XEmacs package
  repository.  Being part of the Emacs repository happened in June 2002,
@@@ -762,7 -761,7 +762,7 @@@ transferred with the corresponding inli
  fair trade-off between both approaches.
  
  @table @asis
- @item @option{rcp}  ---  @command{rsh} and @command{rcp}
+ @item @option{rcp}---@command{rsh} and @command{rcp}
  @cindex method rcp
  @cindex rcp method
  @cindex rcp (with rcp method)
@@@ -777,7 -776,7 +777,7 @@@ The alternative method @option{remcp} u
  @command{remsh} is used instead of @command{rsh}.
  
  
- @item @option{scp}  ---  @command{ssh} and @command{scp}
+ @item @option{scp}---@command{ssh} and @command{scp}
  @cindex method scp
  @cindex scp method
  @cindex scp (with scp method)
@@@ -807,7 -806,7 +807,7 @@@ specify @samp{-p 42} in the argument li
  specify @samp{-P 42} in the argument list for @command{scp}.
  
  
- @item @option{sftp}  ---  @command{ssh} and @command{sftp}
+ @item @option{sftp}---@command{ssh} and @command{sftp}
  @cindex method sftp
  @cindex sftp method
  @cindex sftp (with sftp method)
@@@ -823,7 -822,7 +823,7 @@@ within this session.  Instead of, @comm
  This method supports the @samp{-p} argument.
  
  
- @item @option{rsync}  ---  @command{ssh} and @command{rsync}
+ @item @option{rsync}---@command{ssh} and @command{rsync}
  @cindex method rsync
  @cindex rsync method
  @cindex rsync (with rsync method)
@@@ -844,7 -843,7 +844,7 @@@ the corresponding buffer, visiting thi
  This method supports the @samp{-p} argument.
  
  
- @item @option{scpx} --- @command{ssh} and @command{scp}
+ @item @option{scpx}---@command{ssh} and @command{scp}
  @cindex method scpx
  @cindex scpx method
  @cindex scp (with scpx method)
@@@ -867,7 -866,7 +867,7 @@@ to not print any shell prompt, which co
  This method supports the @samp{-p} argument.
  
  
- @item @option{scpc} --- @command{ssh} and @command{scp}
+ @item @option{scpc}---@command{ssh} and @command{scp}
  @cindex method scpc
  @cindex scpc method
  @cindex scp (with scpc method)
@@@ -898,7 -897,7 +898,7 @@@ version, must be set to @option{no}
  This method supports the @samp{-p} argument.
  
  
- @item @option{rsyncc}  ---  @command{ssh} and @command{rsync}
+ @item @option{rsyncc}---@command{ssh} and @command{rsync}
  @cindex method rsyncc
  @cindex rsyncc method
  @cindex rsync (with rsyncc method)
@@@ -912,7 -911,7 +912,7 @@@ which increases performance
  This method supports the @samp{-p} argument.
  
  
- @item @option{pscp} --- @command{plink} and @command{pscp}
+ @item @option{pscp}---@command{plink} and @command{pscp}
  @cindex method pscp
  @cindex pscp method
  @cindex pscp (with pscp method)
@@@ -927,7 -926,7 +927,7 @@@ of PuTTY, an SSH implementation for Win
  This method supports the @samp{-P} argument.
  
  
- @item @option{psftp} --- @command{plink} and @command{psftp}
+ @item @option{psftp}---@command{plink} and @command{psftp}
  @cindex method psftp
  @cindex psftp method
  @cindex psftp (with psftp method)
@@@ -942,7 -941,7 +942,7 @@@ part of PuTTY, an SSH implementation fo
  This method supports the @samp{-P} argument.
  
  
- @item @option{fcp} --- @command{fsh} and @command{fcp}
+ @item @option{fcp}---@command{fsh} and @command{fcp}
  @cindex method fcp
  @cindex fcp method
  @cindex fsh (with fcp method)
@@@ -981,7 -980,7 +981,7 @@@ This works only for unified filenames, 
  @end ifset
  
  
- @item @option{smb} --- @command{smbclient}
+ @item @option{smb}---@command{smbclient}
  @cindex method smb
  @cindex smb method
  
@@@ -1030,17 -1029,6 +1030,17 @@@ Windows, this method isn't available.  
  file names like @file{//melancholia/daniel$$/.emacs}.  The only
  disadvantage is that there's no possibility to specify another user
  name.
 +
 +
 +@item @option{adb}
 +@cindex method adb
 +@cindex adb method
 +
 +This special method uses the Android Debug Bridge for connecting
 +Android devices.  The Android Debug Bridge, part of the Android SDK,
 +must be installed locally.  The variable @var{tramp-adb-sdk-dir} must
 +be set to its installation directory.
 +
  @end table
  
  
@@@ -1089,7 -1077,6 +1089,7 @@@ phones.  For the time being, @value{tra
  The @option{synce} method allows communication with Windows Mobile
  devices.  Beside GVFS for mounting remote files and directories via
  FUSE, it also needs the SYNCE-GVFS plugin.
 +
  @end table
  
  @defopt tramp-gvfs-methods
@@@ -1597,7 -1584,6 +1597,7 @@@ can return user names only
  
  Finally, a function which parses @file{~/.netrc} like files.  This
  includes also @file{~/.authinfo}-style files.
 +
  @end table
  
  If you want to keep your own data in a file, with your own structure,
@@@ -1865,7 -1851,7 +1865,7 @@@ but it is not at the end of the buffer
  This regular expression is used by @value{tramp} in the same way as
  @code{shell-prompt-pattern}, to match prompts from the remote shell.
  This second variable exists because the prompt from the remote shell
- might be different from the prompt from a local shell --- after all,
+ might be different from the prompt from a local shell---after all,
  the whole point of @value{tramp} is to log in to remote hosts as a
  different user.  The default value of
  @code{tramp-shell-prompt-pattern} is the same as the default value of
@@@ -2291,7 -2277,7 +2291,7 @@@ This edits the same file, using the ful
  the machine.
  
  @item @trampfn{, , melancholia, ~/.emacs}
- This also edits the same file --- the @file{~} is expanded to your
+ This also edits the same file; the @file{~} is expanded to your
  home directory on the remote machine, just like it is locally.
  
  @item @trampfn{, , melancholia, ~daniel/.emacs}
@@@ -2380,13 -2366,13 +2380,13 @@@ For the time being, @code{tramp-syntax
  
  @itemize @w{}
  @ifset emacs
- @item @code{ftp} -- That is the default syntax
- @item @code{url} -- URL-like syntax
+ @item @code{ftp}---That is the default syntax
+ @item @code{url}---URL-like syntax
  @end ifset
  @ifset xemacs
- @item @code{sep} -- That is the default syntax
- @item @code{url} -- URL-like syntax
- @item @code{ftp} -- EFS-like syntax
+ @item @code{sep}---That is the default syntax
+ @item @code{url}---URL-like syntax
+ @item @code{ftp}---EFS-like syntax
  @end ifset
  @end itemize
  
diff --combined doc/misc/url.texi
@@@ -20,7 -20,8 +20,8 @@@
  @copying
  This is the manual for the @code{url} Emacs Lisp library.
  
- Copyright @copyright{} 1993-1999, 2002, 2004-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 1993--1999, 2002, 2004--2012 Free Software
+ Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -345,7 -346,7 +346,7 @@@ To use this function, you must @code{(r
  The value of this option is an integer specifying the maximum number
  of concurrent @code{url-queue-retrieve} network processes.  If the
  number of @code{url-queue-retrieve} calls is larger than this number,
 -later ones are queued until ealier ones are finished.
 +later ones are queued until earlier ones are finished.
  @end defopt
  
  @vindex url-queue-timeout
diff --combined doc/misc/wisent.texi
@@@ -23,7 -23,7 +23,7 @@@
  @c %**end of header
  
  @copying
- Copyright @copyright{} 1988-1993, 1995, 1998-2004, 2007, 2012
+ Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012
  Free Software Foundation, Inc.
  
  @c Since we are both GNU manuals, we do not need to ack each other here.
@@@ -133,11 -133,10 +133,11 @@@ June 1985, Report No. UCB/CSD 85/251
  
  @item
  For generating the lookahead sets, Wisent uses the well-known
 -technique of F. DeRemer and A. Pennello they described in:
 +technique of F. DeRemer and A. Pennello described in:
  @quotation
 -@cite{Efficient Construction of LALR(1) Lookahead Sets}@*
 -October 1982, ACM TOPLS Vol 4 No 4.
 +@cite{Efficient Computation of LALR(1) Look-Ahead Sets}@*
 +October 1982, ACM TOPLAS Vol 4 No 4, 615--49,
 +@uref{http://dx.doi.org/10.1145/69622.357187}.
  @end quotation
  
  @item
@@@ -284,7 -283,7 +284,7 @@@ For example
  
  Says that two groupings of type @samp{exp}, with a @samp{+} token in
  between, can be combined into a larger grouping of type @samp{exp}.
 - 
 +
  @cindex grammar coding conventions
  By convention, a nonterminal symbol should be in lower case, such as
  @samp{exp}, @samp{stmt} or @samp{declaration}.  Terminal symbols
@@@ -1217,7 -1216,7 +1217,7 @@@ data type
  
  @item start
  @itemx end
 -Are the optionals beginning and end positions of @var{value} in the
 +Are the optional beginning and ending positions of @var{value} in the
  input stream.
  @end table
  
@@@ -1340,8 -1339,8 +1340,8 @@@ of the current statement if an error i
  
  @example
  @group
 -(stmnt (( error ?; )) ;; on error, skip until ';' is read
 -       )
 +(statement (( error ?; )) ;; on error, skip until ';' is read
 +           )
  @end group
  @end example
  
diff --combined doc/misc/woman.texi
@@@ -2,7 -2,11 +2,7 @@@
  @c %**start of header
  @setfilename ../../info/woman
  @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man''
 -@c FIXME
 -@c Manual last updated:
 -@set UPDATED Time-stamp: <Fri 21-Dec-2012 10:15:12 gm on skiddaw>
 -@c Software version:
 -@set VERSION 0.54 (beta)
 +@include emacsver.texi
  @afourpaper
  @c With different size paper the printed page breaks will need attention!
  @c Look for @page and @need commands.
@@@ -14,7 -18,7 +14,7 @@@
  This file documents WoMan: A program to browse Unix manual pages `W.O.
  (without) man'.
  
- Copyright @copyright{} 2001-2012 Free Software Foundation, Inc.
+ Copyright @copyright{} 2001--2012 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -39,7 -43,7 +39,7 @@@ modify this GNU manual.'
  @titlepage
  @title WoMan
  @subtitle Browse Unix Manual Pages ``W.O. (without) Man''
 -@subtitle Software Version @value{VERSION}
 +@subtitle as distributed with Emacs @value{EMACSVER}
  @author Francis J. Wright
  @sp 2
  @author School of Mathematical Sciences
@@@ -49,6 -53,8 +49,6 @@@
  @author @email{F.J.Wright@@qmul.ac.uk}
  @author @uref{http://centaur.maths.qmw.ac.uk/}
  @c He no longer maintains this manual.
 -@sp 2
 -@author Manual Last Updated @value{UPDATED}
  
  @comment  The following two commands start the copyright page.
  @page
  @c ===================================================================
  
  @ifnottex
 -@node Top, Introduction, (dir), (dir)
 +@node Top
  @comment  node-name,  next,  previous,  up
  @top WoMan: Browse Unix Manual Pages ``W.O. (without) Man''
  
  @display
 -Software Version @value{VERSION}
 -Manual Last Updated @value{UPDATED}
 +As distributed with Emacs @value{EMACSVER}.
  
  @email{F.J.Wright@@qmw.ac.uk, Francis J. Wright}
  @uref{http://centaur.maths.qmw.ac.uk/, School of Mathematical Sciences}
@@@ -96,7 -103,7 +96,7 @@@ Mile End Road, London E1 4NS, U
  
  @c ===================================================================
  
 -@node Introduction, Background, Top, Top
 +@node Introduction
  @comment  node-name,  next,  previous,  up
  @chapter Introduction
  @cindex introduction
@@@ -158,7 -165,7 +158,7 @@@ Reporting Bugs}
  
  @c ===================================================================
  
 -@node Background, Finding, Introduction, Top
 +@node Background
  @comment  node-name,  next,  previous,  up
  @chapter Background
  @cindex background
@@@ -288,7 -295,7 +288,7 @@@ be possible to move WoMan from an emula
  emulation of @code{troff} as GNU Emacs moves to providing bit-mapped
  display facilities.
  
 -@node Finding, Browsing, Background, Top
 +@node Finding
  @comment  node-name,  next,  previous,  up
  @chapter Finding and Formatting Man Pages
  @cindex using, finding man pages
@@@ -345,7 -352,7 +345,7 @@@ setting WoMan file paths
  * Automatic::           Automatic Interface
  @end menu
  
 -@node Topic, Filename, Finding, Finding
 +@node Topic
  @comment  node-name,  next,  previous,  up
  @section Topic Interface
  @cindex topic interface
@@@ -427,7 -434,7 +427,7 @@@ slow.  @xref{Cache, , The WoMan Topic C
  * Word at point::       Using the "Word at Point" as a Topic Suggestion
  @end menu
  
 -@node Cache, Word at point, Topic, Topic
 +@node Cache
  @comment  node-name,  next,  previous,  up
  @subsection The WoMan Topic Cache
  @cindex topic cache
@@@ -462,7 -469,7 +462,7 @@@ automatically update its cache file on 
  time it is run in a new Emacs session.
  
  
 -@node Word at point,  , Cache, Topic
 +@node Word at point
  @comment  node-name,  next,  previous,  up
  @subsection Using the "Word at Point" as a Topic Suggestion
  @cindex word at point
@@@ -489,7 -496,7 +489,7 @@@ point without seeking confirmation
  @end lisp
  
  
 -@node Filename, Automatic, Topic, Finding
 +@node Filename
  @comment  node-name,  next,  previous,  up
  @section Filename Interface
  @cindex filename interface
@@@ -539,7 -546,7 +539,7 @@@ the current buffer if it is visiting a 
  primarily used internally by WoMan.
  
  
 -@node Automatic,  , Filename, Finding
 +@node Automatic
  @comment  node-name,  next,  previous,  up
  @section Automatic Interface
  @cindex automatic interface
@@@ -577,7 -584,7 +577,7 @@@ by automatic major mode selection.
  
  @c ===================================================================
  
 -@node Browsing, Customization, Finding, Top
 +@node Browsing
  @comment  node-name,  next,  previous,  up
  @chapter Browsing Man Pages
  @cindex using, browsing man pages
@@@ -608,7 -615,7 +608,7 @@@ blank lines squeezed to a single blank 
  * Imenu::               Imenu Support; Contents Menu
  @end menu
  
 -@node Fonts, Navigation, Browsing, Browsing
 +@node Fonts
  @comment  node-name,  next,  previous,  up
  @section Fonts and Faces
  @cindex fonts
@@@ -624,7 -631,7 +624,7 @@@ currently means the characters ^ and _ 
  sub-scripts, which are not displayed well by WoMan.
  
  
 -@node Navigation, References, Fonts, Browsing
 +@node Navigation
  @comment  node-name,  next,  previous,  up
  @section Navigation
  @cindex navigation
@@@ -670,7 -677,7 +670,7 @@@ described by @code{Man-see-also-regexp}
  @end table
  
  
 -@node References, Changing, Navigation, Browsing
 +@node References
  @comment  node-name,  next,  previous,  up
  @section Following References
  @cindex following references
@@@ -714,7 -721,7 +714,7 @@@ default is based on word at point
  @end table
  
  
 -@node Changing, Convenience, References, Browsing
 +@node Changing
  @comment  node-name,  next,  previous,  up
  @section Changing the Current Man Page
  @cindex changing current man page
@@@ -782,7 -789,7 +782,7 @@@ Call WoMan to reformat the last man pag
  @end table
  
  
 -@node Convenience, Imenu, Changing, Browsing
 +@node Convenience
  @comment  node-name,  next,  previous,  up
  @section Convenience Key Bindings
  @cindex convenience key bindings
@@@ -824,7 -831,7 +824,7 @@@ followed by the minor modes, each on a 
  @end table
  
  
 -@node Imenu,  , Convenience, Browsing
 +@node Imenu
  @comment  node-name,  next,  previous,  up
  @section Imenu Support; Contents Menu
  @cindex imenu support
@@@ -845,7 -852,7 +845,7 @@@ is distributed with GNU Emacs
  
  @c ===================================================================
  
 -@node Customization, Log, Browsing, Top
 +@node Customization
  @comment  node-name,  next,  previous,  up
  @chapter Customization
  @cindex customization
@@@ -903,7 -910,7 +903,7 @@@ man page
  * Special symbols::
  @end menu
  
 -@node Interface Options, Formatting Options, Customization, Customization
 +@node Interface Options
  @comment  node-name,  next,  previous,  up
  @section Interface Options
  @cindex interface options
@@@ -1130,7 -1137,7 +1130,7 @@@ default value is non-@code{nil}
  @end vtable
  
  
 -@node Formatting Options, Faces, Interface Options, Customization
 +@node Formatting Options
  @comment  node-name,  next,  previous,  up
  @section Formatting Options
  @cindex formatting options
@@@ -1174,7 -1181,7 +1174,7 @@@ untested
  @end vtable
  
  
 -@node Faces, Special symbols, Formatting Options, Customization
 +@node Faces
  @comment  node-name,  next,  previous,  up
  @section Faces
  @cindex faces
@@@ -1210,7 -1217,7 +1210,7 @@@ Default: foreground orange
  @end vtable
  
  
 -@node Special symbols,  , Faces, Customization
 +@node Special symbols
  @comment  node-name,  next,  previous,  up
  @section Special symbols
  @cindex special symbols
@@@ -1248,7 -1255,7 +1248,7 @@@ Under MS-Windows, the default i
  
  @c ===================================================================
  
 -@node Log, Technical, Customization, Top
 +@node Log
  @comment  node-name,  next,  previous,  up
  @chapter The *WoMan-Log* Buffer
  @cindex log buffer
@@@ -1273,7 -1280,7 +1273,7 @@@ left in the formatted buffer to indicat
  
  @c ===================================================================
  
 -@node Technical, Bugs, Log, Top
 +@node Technical
  @comment  node-name,  next,  previous,  up
  @chapter Technical Details
  @cindex technical details
@@@ -1298,7 -1305,7 +1298,7 @@@ is output
  
  @c ===================================================================
  
 -@node Bugs, Acknowledgments, Technical, Top
 +@node Bugs
  @comment  node-name,  next,  previous,  up
  @chapter Reporting Bugs
  @cindex reporting bugs
@@@ -1323,7 -1330,7 +1323,7 @@@ man source file from, but do not send i
  
  @c ===================================================================
  
 -@node Acknowledgments, GNU Free Documentation License, Bugs, Top
 +@node Acknowledgments
  @comment  node-name,  next,  previous,  up
  @chapter Acknowledgments
  @cindex acknowledgments
@@@ -1380,17 -1387,17 +1380,17 @@@ Eli Zaretskii, @email{eliz@@is.elta.co.
  @page
  
  
 -@node GNU Free Documentation License, Command Index, Acknowledgments, Top
 +@node GNU Free Documentation License
  @appendix GNU Free Documentation License
  @include doclicense.texi
  
 -@node Command Index, Variable Index, GNU Free Documentation License, Top
 +@node Command Index
  @comment  node-name,           next,      previous,  up
  @unnumbered Command Index
  
  @printindex fn
  
 -@node Variable Index, Keystroke Index, Command Index, Top
 +@node Variable Index
  @comment   node-name,            next,      previous, up
  @unnumbered Variable Index
  
  
  @page
  
 -@node Keystroke Index, Concept Index, Variable Index, Top
 +@node Keystroke Index
  @comment  node-name,            next,      previous,  up
  @unnumbered Keystroke Index
  
  
  @page
  
 -@node Concept Index,  , Keystroke Index, Top
 +@node Concept Index
  @comment  node-name, next,     previous, up
  @unnumbered Concept Index
  
diff --combined src/ChangeLog
@@@ -1,8 -1,7 +1,12 @@@
+ 2012-12-22  Martin Rudalics  <rudalics@gmx.at>
+       * window.c (Fselect_window): Reword doc-string (Bug#13248).
 +2012-12-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32fullscreen_hook): New function.
 +      (w32_create_terminal): Plug it into the terminal's fullscreen_hook.
 +
  2012-12-21  Eli Zaretskii  <eliz@gnu.org>
  
        * fileio.c (Finsert_file_contents): Doc fix.
  
        * buffer.c (Fset_buffer_major_mode): Doc fix (Bug#13231).
  
 -2012-12-15  Chong Yidong  <cyd@gnu.org>
 -
        * fns.c (Fcompare_strings): Doc fix (Bug#13081).
  
 -2012-12-14  Eli Zaretskii  <eliz@gnu.org>
 +2012-12-21  Eli Zaretskii  <eliz@gnu.org>
  
        * w32.c (get_name_and_id): Always pass NULL as the first argument
        of lookup_account_sid.  Avoids crashes with UNC file names that
        (get_file_owner_and_group): Remove now unused argument FNAME; all
        callers changed.
  
 -2012-12-11  Eli Zaretskii  <eliz@gnu.org>
 +2012-12-21  Chong Yidong  <cyd@gnu.org>
 +
 +      * editfns.c (Finsert_char): Since read-char-by-name now signals an
 +      error for invalid chars, don't check for a nil return value.
 +
 +2012-12-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid calls to CHAR_TO_BYTE if byte position is known.
 +      * editfns.c (make_buffer_string_both): Use move_gap_both.
 +      (Fbuffer_string): Use make_buffer_string_both.
 +      * marker.c (buf_charpos_to_bytepos): Convert to eassert.
 +      Adjust comment.
 +      (buf_bytepos_to_charpos): Likewise.
 +      (charpos_to_bytepos): Remove.
 +      * fileio.c (Finsert_file_contents): Use move_gap_both.
 +      * search.c (Freplace_match): Likewise.
 +      * process.c (process_send_region): Likewise. Use convenient
 +      names for byte positions.
 +      * lisp.h (charpos_to_bytepos): Remove prototype.
 +      * indent.c (scan_for_column): Use CHAR_TO_BYTE.
 +      * insdel.c (move_gap): Likewise.
 +
 +2012-12-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xdisp.c (redisplay_internal): Remove now-unused local.
 +
 +2012-12-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (select_frame_for_redisplay, ensure_selected_frame): Remove.
 +      (redisplay_internal): Don't bother selecting the frame to get the
 +      proper value of frame-local variables.
 +
 +2012-12-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * textprop.c (set_text_properties_1): Do not allow NULL interval.
 +      Rename 4th argument since it may be buffer or string.  Adjust comment.
 +      * intervals.c (graft_intervals_info_buffer): Find an interval here.
 +
 +2012-12-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * coding.c (Fdetect_coding_region): Do not check start and end with
 +      CHECK_NUMBER_COERCE_MARKER since validate_region does that itself.
 +      (code_convert_region): Likewise.
 +
 +2012-12-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (acl_get_file, acl_set_file): Run the file name through
 +      map_w32_filename, and resolve any symlinks in the file name, like
 +      Posix platforms do.
 +      (acl_set_file): Call revert_to_self, if any privileges were
 +      enabled.
 +
 +2012-12-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/editfns.$(O), $(BLD)/fileio.$(O))
 +      ($(BLD)/w32.$(O)): Update dependencies.
 +
 +2012-12-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (select_frame_for_redisplay): Use select_window_1 to
 +      propagate redisplay's scrolling (if any) to the right window.
 +      (redisplay_internal): Use ensure_selected_frame.
 +      (display_mode_lines): Complete last fix.
 +      * window.c (select_window_1): New func, extracted from select_window.
 +      (select_window): Use it.
 +      * window.h (select_window_1): Declare.
 +
 +2012-12-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Emulate Posix ACL APIs on MS-Windows.
 +      * w32.c: Include sddl.h and sys/acl.h.
 +      (SDDL_REVISION_1): Define if not already defined.
 +      (g_b_init_get_security_descriptor_dacl)
 +      (g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd)
 +      (g_b_init_is_valid_security_descriptor)
 +      (g_b_init_set_file_security): New static flags.
 +      (globals_of_w32): Initialize them to zero.
 +      (SetFileSecurity_Name): New string constant.
 +      (SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc)
 +      (ConvertStringSecurityDescriptorToSecurityDescriptor_Proc)
 +      (ConvertSecurityDescriptorToStringSecurityDescriptor_Proc)
 +      (IsValidSecurityDescriptor_Proc): New typedefs.
 +      (get_file_security, get_security_descriptor_owner)
 +      (get_security_descriptor_group): Set errno to ENOTSUP.
 +      (set_file_security, get_security_descriptor_dacl)
 +      (is_valid_security_descriptor, convert_sd_to_sddl)
 +      (convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text)
 +      (acl_free, acl_get_file, acl_set_file): New functions.
 +
 +      * fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs.
 +
 +2012-12-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't reraise SIGCHLD, as that can now lose (Bug#13192).
 +      With the 2012-12-03 fix for Bug#12980 in place, an old workaround
 +      for some of that bug's symptoms can now cause Emacs to abort.
 +      Remove the workaround.
 +      * process.c (wait_reading_process_output): Don't reraise SIGCHLD.
 +      The bug that caused SIGCHLD to get lost has been fixed, and the
 +      workaround for it can now cause Emacs to abort.
 +
 +2012-12-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (emacs_abort): Bump backtrace size to 40.
 +      Companion to the 2012-09-30 patch.  Suggested by Eli Zaretskii in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00796.html>.
 +
 +2012-12-16  Romain Francoise  <romain@orebokech.com>
 +
 +      * fileio.c (Ffile_acl, Fset_file_acl): New functions.
 +      (Fcopy_file): Change last arg to `preserve_extended_attributes'
 +      and copy ACL entries of file in addition to SELinux context if set.
 +      (syms_of_fileio): Add `file-acl' and `set-file-acl'.
 +
 +      * Makefile.in (LIBACL_LIBS): New macro.
 +      (LIBES): Use it.
 +
 +2012-12-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fileio.c (internal_delete_file): Use bool for boolean.
 +
 +2012-12-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix bug #13079 on MS-Windows with temp files not being deleted.
 +      * w32.h (_child_process): New members input_file and
 +      pending_deletion.
 +      (register_child): First argument is now pid_t.
 +      (record_infile, record_pending_deletion): New prototypes.
 +
 +      * w32proc.c (new_child): Initialize input_file and
 +      pending_deletion members of the child.
 +      (delete_child): Delete the child's temporary input file, if any,
 +      that is pending deletion.
 +      (register_child): First argument is now pid_t.
 +      (record_infile, record_pending_deletion): New functions.
 +      (reap_subprocess): Fix a typo in DebPrint string.
 +      (sys_spawnve, sys_kill): Use pid_t for PID arguments.
 +
 +      * fileio.c (internal_delete_file): Return an int again: non-zero
 +      if delete-file succeeds, zero otherwise.
 +
 +      * lisp.h (internal_delete_file): Adjust prototype.
 +
 +      * callproc.c (Fcall_process): Don't overwrite infile with result
 +      of DECODE_FILE.
 +      [WINDOWSNT] If BUFFER is an integer, i.e. we are launching an
 +      asynchronous subprocess, record the name of the input file name,
 +      if any.
 +      (delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to
 +      delete the file, record it as pending deletion when the subprocess
 +      exits.
 +
 +2012-12-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * editfns.c [HAVE_PWD_H]: Include grp.h.
 +
 +      * makefile.w32-in ($(BLD)/editfns.$(O)): Add $(NT_INC)/grp.h.
 +
 +2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix permissions bugs with setgid directories etc. (Bug#13125)
 +      * dired.c (Ffile_attributes): Return t as the 9th attribute,
 +      to mark it as a placeholder.  The old value was often wrong.
 +      The only user of this attribute has been changed to use
 +      file-ownership-preserved-p instead, with its new group arg.
 +      * editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.
 +
 +2012-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (select_frame_for_redisplay, display_mode_lines):
 +      Keep selected_window and selected_frame in sync.
 +
 +2012-12-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (stat_worker): If w32_stat_get_owner_group is zero, do not
 +      try to get accurate owner and group information from NT file
 +      security APIs.  This is to make most callers of 'stat' and
 +      'lstat', which don't need that information, much faster.
 +
 +      * dired.c (Ffile_attributes) [WINDOWSNT]:
 +      Set w32_stat_get_owner_group to a non-zero value, to request accurate
 +      owner and group information from 'lstat'.
 +
 +2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fileio.c (Finsert_file_contents): Don't put tail into head area,
 +      as that confuses set-auto-coding, so insist on the head-read
 +      returning the full 1024 bytes.  Let lseek compute the tail offset;
 +      less work for us.  Do not ignore I/O errors when reading the tail.
 +
 +      * xdisp.c: Minor style fixes.
 +      (init_iterator): Hoist assignment out of if-expression.
 +      (markpos_of_region): Callers now test for sign, not for -1.
 +
 +2012-12-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Minor redisplay optimization when the region length is zero.
 +      * xdisp.c (markpos_of_region): New function.
 +      (init_iterator): Do not highlight the region of zero length.
 +      (redisplay_window): Check whether the region is of non-zero length.
 +      (try_cursor_movement): Allow if the region length is zero.
 +      (try_window_reusing_current_matrix, try_window_id): Likewise.
 +
 +2012-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * search.c (search_buffer): Check the inverse translations of each
        character in pattern when the buffer being searched is unibyte.
        (Bug#13084)
  
 -2012-12-10  Paul Eggert  <eggert@cs.ucla.edu>
 +2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
  
        * fileio.c (Fvisited_file_modtime): Return (-1 ...) for nonexistent
        files, fixing a regression from 24.2.
        (Fverify_visited_file_modtime): Don't read uninitialized st.st_size.
  
 -2012-12-08  Jan Djärv  <jan.h.d@swipnet.se>
 +2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fileio.c (Fcopy_file): Make fstat failure as serious as open failure.
 +      fstat shouldn't fail, and if it does fail copy-file should not proceed.
 +      Remove unnecessary S_ISLNK test, as (contra the comments) this
 +      function can't copy symlinks.  Improve quality of error message
 +      when attempting to copy files that are neither regular files nor
 +      directories.
 +
 +2012-12-12  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * dispnew.c (set_window_cursor_after_update): Use clip_to_bounds.
 +      * gtkutil.c (xg_set_toolkit_scroll_bar_thumb):
 +      * window.c (Frecenter):
 +      * xdisp.c (resize_mini_window, hscroll_window_tree, draw_glyphs):
 +      * xterm.c (x_set_toolkit_scroll_bar_thumb): Likewise.
 +
 +2012-12-12  Daniel Colascione  <dancol@dancol.org>
 +
 +      * unexcw.c (fixup_executable): Use posix_fallocate to ensure that
 +      the dumped Emacs is not a sparse file, greatly improving Cygwin
 +      "make bootstrap" performance.
 +
 +2012-12-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * inotify.c (inotify_callback): Generate an Emacs event for every
 +      incoming inotify event.
 +
 +2012-12-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (handle_face_prop): Fix logic of computing
 +      it->start_of_box_run_p.
 +      (append_space_for_newline): If the glyph row is R2L, reset the
 +      iterator's end_of_box_run_p flag before prepending the space glyph.
 +      (extend_face_to_end_of_line): If the glyph row is R2L, reset the
 +      iterator's start_of_box_run_p flag before prepending the stretch.
 +      (append_glyph, produce_image_glyph, append_composite_glyph)
 +      (append_stretch_glyph, append_glyphless_glyph): Reverse the
 +      left_box_line_p and right_box_line_p flags of the glyph for R2L
 +      glyph rows.  (Bug#13011)
 +
 +2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * buffer.c (Fset_buffer_multibyte): Do not force redisplay
 +      if changed buffer is not shown in a window.
 +      * insdel.c (prepare_to_modify_buffer): Likewise.
 +      * window.c (replace_buffer_in_windows_safely): Do nothing
 +      if buffer is not shown in a window.
 +      (Fforce_window_update): Likewise if string or buffer argument
 +      is passed.
 +
 +2012-12-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * inotify.c (Finotify_add_watch): Rename decoded_file_name to
 +      encoded_file_name, which is what it is.
 +
 +2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Consistently use marker_position and marker_byte_position.
 +      * fringe.c (Ffringe_bitmaps_at_pos):
 +      * indent.c (Fvertical_motion):
 +      * insdel.c (prepare_to_modify_buffer):
 +      * keyboard.c (make_lispy_position):
 +      * window.c (Fwindow_end, Fpos_visible_in_window_p, unshow_buffer)
 +      (window_scroll_pixel_based, displayed_window_lines)
 +      (Fset_window_configuration):
 +      * xdisp.c (message_dolog, with_echo_area_buffer_unwind_data)
 +      (mark_window_display_accurate_1, redisplay_window, decode_mode_spec):
 +      Replace direct access to marker fields with calls
 +      to marker_position and/or marker_byte_position.
 +
 +2012-12-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (SIG2STR_H): New macro.
 +      (SYSWAIT_H, $(BLD)/emacs.$(O), $(BLD)/process.$(O))
 +      ($(BLD)/w32notify.$(O)): Update dependencies.
 +
 +2012-12-10  Daniel Colascione  <dancol@dancol.org>
 +
 +      * w32term.c, keyboard.c: Fix build break in cygw32 by omitting
 +      Windows file notification functionality unless WINDOWSNT.
 +
 +      * w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused
 +      declarations.
 +
 +      * w32fns.c (cache_system_info): Initialize the global hinst
 +      variable here so various initialization calls DTRT.
 +
 +      * unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused variables.
 +      (hinst): Remove unneeded extern declaration.
 +      (_start): Remove initialization of above variables; remove
 +      initialization of hinst, as cache_system_info now does that.
 +
 +      * emacs.c (main): Call cache_system_info early in startup; we
 +      previously weren't calling it in Cygwin builds.
 +
 +      * Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK):
 +      Teach the autoconf build system how to compile a Windows resource file
 +      and link it to Emacs.
 +
 +2012-12-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Per-buffer window counters.
 +      * buffer.h (struct buffer): New member window_count.
 +      (buffer_window_count): New function.
 +      * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
 +      Initialize window_count.
 +      (Fkill_buffer): Verify window_count for the buffer being killed.
 +      (modify_overlay): Do not force redisplay if buffer is not shown
 +      in any window.
 +      (init_buffer_once): Initialize window_count for buffer_defaults
 +      and buffer_local_symbols.
 +      * window.h (buffer_shared): Remove declaration.
 +      (wset_buffer): Convert from inline ...
 +      * window.c (wset_buffer): ... to an ordinary function.
 +      (adjust_window_count): New function.
 +      (make_parent_window): Use it.
 +      * xdisp.c (buffer_shared): Remove.
 +      (redisplay_internal, redisplay_window): Adjust users.
 +      (buffer_shared_and_changed): Use per-buffer window counter.
 +
 +2012-12-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Support for filesystem notifications on MS-Windows.
 +      * w32proc.c (sys_select): If drain_message_queue returns non-zero,
 +      and this is a TTY frame, signal the caller that keyboard input is
 +      available.
 +
 +      * w32xfns.c (drain_message_queue): Now returns an int: an
 +      indication whether any WM_EMACS_FILENOTIFY messages were found in
 +      the queue.
 +
 +      * w32inevt.c (handle_file_notifications): New function.
 +      (w32_console_read_socket): Call it to process file notifications.
 +
 +      * w32console.c (initialize_w32_display): Record the main thread ID
 +      in dwMainThreadId.
 +
 +      * deps.mk (inotify.o): New dependency list.
 +
 +      * Makefile.in (SOME_MACHINE_OBJECTS): Add w32notify.o.
 +
 +      * w32term.h (WM_EMACS_FILENOTIFY): New custom message.
 +      (WM_EMACS_END): Bump value by 1.
 +      (notification_buffer_in_use, file_notifications)
 +      (notifications_size, notifications_desc): Declare.
 +      (w32_get_watch_object, lispy_file_action, globals_of_w32notify):
 +      Add prototypes.
 +
 +      * w32term.c (lispy_file_action, queue_notifications): New functions.
 +      (syms_of_w32term) <Qadded, Qremoved, Qmodified, Qrenamed_from>
 +      <Qrenamed_to>: New symbols.
 +      (w32_read_socket): Handle the WM_EMACS_FILENOTIFY message.
 +
 +      * w32notify.c: New file, implements file event notifications for
 +      MS-Windows.
 +
 +      * w32fns.c (w32_wnd_proc): Handle the WM_EMACS_FILENOTIFY message
 +      by posting it to the w32_read_socket queue.
 +
 +      * termhooks.h (enum event_kind) [HAVE_NTGUI]: Support FILE_NOTIFY_EVENT.
 +
 +      * makefile.w32-in (OBJ2): Add $(BLD)/w32notify.$(O).
 +      (GLOBAL_SOURCES): Add w32notify.c
 +      ($(BLD)/w32notify.$(O)): New set of dependencies.
 +
 +      * lisp.h (syms_of_w32notify) [WINDOWSNT]: Add prototype.
 +
 +      * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]:
 +      Handle FILE_NOTIFY_EVENT.
 +      (syms_of_keyboard) [HAVE_NTGUI] <Qfile_notify>: New symbol.
 +      (keys_of_keyboard) [WINDOWSNT]: Bind file-notify to
 +      w32notify-handle-event by default.
 +
 +      * emacs.c (main) [WINDOWSNT]: Call globals_of_w32notify and
 +      syms_of_w32notify.
 +
 +2012-12-10  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
 +
 +      Support for filesystem notifications on GNU/Linux via inotify.
 +      * termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add FILE_NOTIFY_EVENT.
 +
 +      * lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.
 +
 +      * keyboard.c (Qfile_inotify) [HAVE_INOTIFY]: New variable.
 +      (syms_of_keyboard): DEFSYM it.
 +      (kbd_buffer_get_event) [HAVE_INOTIFY]: Generate FILE_NOTIFY_EVENT.
 +      (make_lispy_event): Support FILE_NOTIFY_EVENT by generating
 +      Qfile_inotify events.
 +      (keys_of_keyboard) [HAVE_INOTIFY]: Bind file-inotify events in
 +      special-event-map to inotify-handle-event.
 +
 +      * emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.
 +
 +      * Makefile.in (base_obj): Add inotify.o.
 +
 +      * inotify.c: New file.
 +
 +2012-12-10  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103).
  
 -2012-12-08  Fabrice Popineau  <fabrice.popineau@gmail.com>
 +2012-12-10  Fabrice Popineau  <fabrice.popineau@gmail.com>
  
        * w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to
        DWORD_PTR, for compatibility with 64-bit builds.
        (system_process_attributes): Use SIZE_T rather than DWORD, for
        compatibility with 64-bit builds.
  
 -2012-12-08  Christopher Schmidt  <christopher@ch.ristopher.com>
 +2012-12-10  Christopher Schmidt  <christopher@ch.ristopher.com>
  
        * lread.c (Vload_source_file_function): Doc fix (Bug#11647).
  
 -2012-12-07  Eli Zaretskii  <eliz@gnu.org>
 +2012-12-10  Eli Zaretskii  <eliz@gnu.org>
  
        * indent.c (Fvertical_motion): If a display string will be
        displayed on the left or the right margin, don't consider it as a
        factor in cursor positioning.  (Bug#13108)
  
 -2012-12-07  Martin Rudalics  <rudalics@gmx.at>
 +2012-12-10  Martin Rudalics  <rudalics@gmx.at>
  
        * editfns.c (Fcompare_buffer_substrings): Reword doc-string.
  
 -2012-12-05  Eli Zaretskii  <eliz@gnu.org>
 +2012-12-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fileio.c (Fsubstitute_in_file_name): Use ptrdiff_t, not int,
 +      for string length.
 +
 +2012-12-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (unsetenv): Return 0 if the input string is too long.
 +
 +2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
 +      * alloc.c (xputenv): New function.
 +      * dbusbind.c (Fdbus_init_bus):
 +      * emacs.c (main):
 +      * xterm.c (x_term_init):
 +      Use xputenv instead of setenv or putenv, to detect memory exhaustion.
 +      * editfns.c (initial_tz): Move static var decl up.
 +      (tzvalbuf_in_environ): New static var.
 +      (init_editfns): Initialize these two static vars.
 +      (Fencode_time): Don't assume arbitrary limit on EMACS_INT width.
 +      Save old TZ value on stack, if it's small.
 +      (Fencode_time, set_time_zone_rule): Don't modify 'environ' directly;
 +      instead, use xputenv+unsetenv to set and restore TZ.
 +      (environbuf): Remove static var.  All uses removed.
 +      (Fset_time_zone_rule): Do not save TZ and environ;
 +      no longer needed here.
 +      (set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]:
 +      Move to inside set_time_zone_rule; they don't need file scope any more.
 +      (set_time_zone_rule): Maintain the TZ=value string separately.
 +      (syms_of_editfns): Don't initialize initial_tz;
 +      init_editfns now does it.
 +      * emacs.c (dump_tz) [HAVE_TZSET]: Now const.
 +      * lisp.h (xputenv): New decl.
 +
 +2012-12-08  Fabrice Popineau  <fabrice.popineau@gmail.com>
 +
 +      * w32fns.c (emacs_abort): Don't do arithmetics on void pointers.
 +
 +2012-12-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (unsetenv, sys_putenv): New functions.
 +
 +2012-12-08  Chong Yidong  <cyd@gnu.org>
 +
 +      * editfns.c (Finsert_char): Make the error message more
 +      informative (Bug#12992).
 +
 +2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify get_lim_data.
 +      * vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
 +      Remove USG and vlimit methods; no longer used these days.
 +      Add #error catchall just in case.
 +
 +      Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
 +      Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
 +      SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
 +      * process.c [subprocesses]: Include <c-ctype.h>, <sig2str.h>.
 +      (deleted_pid_list, Fdelete_process, create_process)
 +      (record_child_status_change, handle_child_signal, deliver_child_signal)
 +      (init_process_emacs, syms_of_process):
 +      Assume SIGCHLD is defined.
 +      (parse_signal): Remove.  All uses removed.
 +      (abbr_to_signal): New static function.
 +      (Fsignal_process): Use it to convert signal names to ints.
 +      * sysdep.c (sys_suspend) [!DOS_NT]: Use kill (0, ...) rather than
 +      kill (getpgrp (), ...).
 +      (emacs_sigaction_init): Assume SIGCHLD is defined.
 +      (init_signals): Assume SIGALRM, SIGCHLD, SIGHUP, SIGKILL,
 +      SIGPIPE, and SIGQUIT are defined.  Do not worry about SIGCLD any more.
 +      * syssignal.h (EMACS_KILLPG): Remove.
 +      All uses replaced by 'kill' with a negative pid.
 +      (SIGCHLD): Remove definition, as we now assume SIGCHLD.
 +      * w32proc.c (sys_kill): Support negative pids compatibly with POSIX.
 +
 +2012-12-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (get_child_status): Abort on internal error (Bug#13086).
 +      This will cause a production Emacs to dump core instead of
 +      infinite-looping.
 +
 +2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (make_frame): Do not set window's buffer to t.
 +      * window.c (Fsplit_window_internal): Likewise.  Previously it was
 +      used to indicate that the window is being set up.  Now we use
 +      set_window_buffer for all new windows, so the condition in ...
 +      (Fset_window_buffer): ... is always true and can be removed.
 +
 +2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Convenient macro to check whether the buffer is hidden.
 +      * buffer.h (BUFFER_HIDDEN_P): New macro.
 +      * frame.c (make_frame): Use it.  Adjust comment.
 +      * buffer.c (candidate_buffer): New function.
 +      (Fother_buffer, other_buffer_safely): Use it.
 +
 +2012-12-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (waitpid): Avoid busy-waiting when called with WNOHANG
 +      if the child process is still running.  Instead, exit the wait
 +      loop and return zero.  (Bug#13086)
 +
 +2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (x_char_width, x_char_height): Remove prototypes.
 +      * w32term.h (x_char_width, x_char_height): Likewise.
 +      * xfns.c (x_char_width, x_char_height): Remove.
 +      * w32fns.c (x_char_width, x_char_height): Likewise.
 +      * nsfns.c (x_char_width, x_char_height): Likewise.
 +      * frame.c (Fframe_char_width): Use FRAME_COLUMN_WIDTH for
 +      all window frames.
 +      (Fframe_char_height): Likewise with FRAME_LINE_HEIGHT.
 +      * keyboard.c (command_loop_1): Remove prototype.
 +      (command_loop_2, top_level_1): Add static to match prototype.
 +
 +2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix a recently-introduced delete-process race condition.
 +      * callproc.c, process.h (record_kill_process):
 +      New function, containing part of the old call_process_kill.
 +      (call_process_kill): Use it.
 +      This does not change call_process_kill's behavior.
 +      * process.c (Fdelete_process): Use record_kill_process to fix a
 +      race condition that could cause Emacs to lose track of a child.
 +
 +2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid code duplication between prev_frame and next_frame.
 +      * frame.c (candidate_frame): New function.  Add comment.
 +      (prev_frame, next_frame): Use it.  Adjust comment.
 +
 +2012-12-06  Eli Zaretskii  <eliz@gnu.org>
  
        * callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
        fails, signal an error instead of continuing with an empty
        Encode expanded temp file pattern before passing it to mkstemp or
        mktemp.
  
 -2012-12-04  Eli Zaretskii  <eliz@gnu.org>
 -
        * fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]:
        Encode the file name before passing it to dostounix_filename, in
        case it will downcase it (under w32-downcase-file-names).
        (Bug#12933)
  
 -2012-12-01  Chong Yidong  <cyd@gnu.org>
 +2012-12-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor call-process cleanups.
 +      * callproc.c (Fcall_process): Do record-unwind-protect on MSDOS
 +      at the same time as other platforms, to simplify analysis.
 +      No need for fd0_volatile since we have synch_process_fd.
 +      Avoid needless emacs_close; arg is always negative.
 +
 +2012-12-04  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * callproc.c (Fcall_process): Fix specpdl nesting for asynchronous
 +      processes.
 +
 +2012-12-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (Mouse_HLInfo): Remove set-but-unused mouse_face_image_state
 +      member.  Adjust users.  Convert mouse_face_past_end, mouse_face_defer
 +      and mouse_face_hidden members to a bitfields.
 +      * frame.h (struct frame): Remove set-but-not-used space_width member.
 +      (FRAME_SPACE_WIDTH): Remove.
 +      * nsterm.m, w32term.c, xterm.c: Adjust users.
 +      * termchar.h (struct tty_display_info): Remove set-but-unused se_is_so
 +      member.  Adjust users.  Convert term_initted, delete_in_insert_mode,
 +      costs_set, insert_mode, standout_mode, cursor_hidden and flow_control
 +      members to a bitfields.
 +
 +2012-12-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't let call-process be a zombie factory (Bug#12980).
 +      Fixing this bug required some cleanup of the signal-handling code.
 +      As a side effect, this change also fixes a longstanding rare race
 +      condition whereby Emacs could mistakenly kill unrelated processes,
 +      and it fixes a bug where a second C-g does not kill a recalcitrant
 +      synchronous process in GNU/Linux and similar platforms.
 +      The patch should also fix the last vestiges of Bug#9488,
 +      a bug which has mostly been fixed on the trunk by other changes.
 +      * callproc.c, process.h (synch_process_alive, synch_process_death)
 +      (synch_process_termsig, sync_process_retcode):
 +      Remove.  All uses removed, to simplify analysis and so that
 +      less consing is done inside critical sections.
 +      * callproc.c (call_process_exited): Remove.  All uses replaced
 +      with !synch_process_pid.
 +      * callproc.c (synch_process_pid, synch_process_fd): New static vars.
 +      These take the role of what used to be in unwind-protect arg.
 +      All uses changed.
 +      (block_child_signal, unblock_child_signal):
 +      New functions, to avoid races that could kill innocent-victim processes.
 +      (call_process_kill, call_process_cleanup, Fcall_process): Use them.
 +      (call_process_kill): Record killed processes as deleted, so that
 +      zombies do not clutter up the system.  Do this inside a critical
 +      section, to avoid a race that would allow the clutter.
 +      (call_process_cleanup): Fix code so that the second C-g works again
 +      on common platforms such as GNU/Linux.
 +      (Fcall_process): Create the child process in a critical section,
 +      to fix a race condition.  If creating an asynchronous process,
 +      record it as deleted so that zombies do not clutter up the system.
 +      Do unwind-protect for WINDOWSNT too, as that's simpler in the
 +      light of these changes.  Omit unnecessary call to emacs_close
 +      before failure, as the unwind-protect code does that.
 +      * callproc.c (call_process_cleanup):
 +      * w32proc.c (waitpid): Simplify now that synch_process_alive is gone.
 +      * process.c (record_deleted_pid): New function, containing
 +      code refactored out of Fdelete_process.
 +      (Fdelete_process): Use it.
 +      (process_status_retrieved): Remove.  All callers changed to use
 +      child_status_change.
 +      (record_child_status_change): Remove, folding its contents into ...
 +      (handle_child_signal): ... this signal handler.  Now, this
 +      function is purely a handler for SIGCHLD, and is not called after
 +      a synchronous waitpid returns; the synchronous code is moved to
 +      wait_for_termination.  There is no need to worry about reaping
 +      more than one child now.
 +      * sysdep.c (get_child_status, child_status_changed): New functions.
 +      (wait_for_termination): Now takes int * status and bool
 +      interruptible arguments, too.  Do not record child status change;
 +      that's now the caller's responsibility.  All callers changed.
 +      Reimplement in terms of get_child_status.
 +      (wait_for_termination_1, interruptible_wait_for_termination):
 +      Remove.  All callers changed to use wait_for_termination.
 +      * syswait.h: Include <stdbool.h>, for bool.
 +      (record_child_status_change, interruptible_wait_for_termination):
 +      Remove decls.
 +      (record_deleted_pid, child_status_changed): New decls.
 +      (wait_for_termination): Adjust to API changes noted above.
 +
 +      * bytecode.c, lisp.h (Qbytecode): Remove.
 +      No longer needed after 2012-11-20 interactive-p changes.
 +
 +2012-12-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (redisplay_window): If the cursor is visible, but inside
 +      the scroll margin, move point outside the margin.  (Bug#13055)
 +
 +2012-12-03  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (my_log_handler): New function.
 +      (xg_set_geometry): Set log handler to my_log_handler (Bug#11177).
 +
 +2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (modify_region): Rename to...
 +      (modify_region_1): ...new prototype.
 +      * textprop.c (modify_region): Now static.  Adjust users.
 +      * insdel.c (modify_region): Rename to...
 +      (modify_region_1): ...new function to work with current buffer.
 +      Adjust comment and users.  Use true and false for booleans.
 +
 +2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (free_save_value): New function.
 +      (safe_alloca_unwind): Use it.
 +      * lisp.h (free_save_value): New prototype.
 +      * editfns.c (save_excursion_save): Use Lisp_Misc_Save_Value.
 +      Add comment.
 +      (save_excursion_restore): Adjust to match saved data structure.
 +      Use free_save_value to offload some work from GC.  Drop obsolete
 +      #if 0 code.
 +
 +2012-12-03  Chong Yidong  <cyd@gnu.org>
  
        * fileio.c (Vauto_save_list_file_name): Doc fix.
  
 -2012-11-30  Fabrice Popineau  <fabrice.popineau@gmail.com>
 +2012-12-03  Fabrice Popineau  <fabrice.popineau@gmail.com>
  
        * w32fns.c: Remove prototype of atof.
 -      (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit
 +      (syspage_mask): Make it DWORD_PTR, for compatibility with 64-bit
        builds.
 -      (file_dialog_callback): Declared UINT_PTR.
 +      (file_dialog_callback): Make it UINT_PTR.
  
        * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
        with 64-bit builds.
        (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
        defined.
  
 -2012-11-27  Glenn Morris  <rgm@gnu.org>
 +2012-12-03  Glenn Morris  <rgm@gnu.org>
  
        * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding.
  
 -2012-11-26  Eli Zaretskii  <eliz@gnu.org>
 +2012-12-02  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * fontset.c (Finternal_char_font): Return nil on non-GUI frames.
 -      (Bug#11964)
 +      Fix xpalloc confusion after memory is exhausted.
 +      * alloc.c (xpalloc): Comment fix.
 +      * charset.c (Fdefine_charset_internal): If xpalloc exhausts memory
 +      and signals an error, do not clear charset_table_size, as
 +      charset_table is still valid.
 +      * doprnt.c (evxprintf): Clear *BUF after freeing it.
  
 -2012-11-24  Paul Eggert  <eggert@cs.ucla.edu>
 +      Use execve to avoid need to munge environ (Bug#13054).
 +      * callproc.c (Fcall_process):
 +      * process.c (create_process):
 +      Don't save and restore environ; no longer needed.
 +      * callproc.c (child_setup):
 +      Use execve, not execvp, to preserve environ.
  
 -      Revert recent change for Bug#8855.
 -      As reported by Harald Hanche-Olsen in
 -      <http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00445.html>
 -      the change introduces a further bug, of creating lots of zombie
 -      processes in some cases.  Further work is needed to come up with a
 -      better fix for Bug#8855.
 +2012-12-01  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2012-11-24  Eli Zaretskii  <eliz@gnu.org>
 +      * xterm.c (x_draw_image_relief): Remove unused locals (Bug#10500).
 +
 +2012-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief
 +      display for sliced images (Bug#10500).
 +
 +      * w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise.
 +
 +2012-11-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * doc.c (Fdocumentation): Re-add handling of function-documentation,
 +      accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca (bug#13034).
 +
 +2012-11-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xdisp.c (window_outdated): Remove eassert since it hits
 +      some suspicious corner cases (see Bug#13007 and Bug#13012).
 +      (mode_line_update_needed): New function.
 +      (redisplay_internal, redisplay_window): Use it.
 +      (ensure_selected_frame): New function.
 +      (redisplay_internal, unwind_redisplay): Use it.
 +      (redisplay_internal): Move comment about buffer_shared...
 +      (buffer_shared_and_changed): ...near to its real use.
 +
 +2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * callproc.c (Fcall_process): Don't misreport vfork failure.
 +
 +2012-11-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * callproc.c (Fcall_process): Fix vfork portability problems.
 +      Do not assume that fd[0], count, filefd, and save_environ survive
 +      vfork.  Fix bug whereby wrong errno value could be reported for
 +      pipe failure.  Some minor cleanups, too, as follows.  Move buf and
 +      bufsize to the context where they're needed.  Change new_argv to
 +      be of type char **, as this is more convenient and avoids casts.
 +      (CALLPROC_BUFFER_SIZE_MIN, CALLPROC_BUFFER_SIZE_MAX):
 +      Now local constants, not macros.
 +
 +2012-11-18  Kenichi Handa  <handa@gnu.org>
 +
 +      * font.c (font_unparse_xlfd): Fix previous change.  Keep "const"
 +      for the variable "f".
 +
 +2012-11-13  Kenichi Handa  <handa@gnu.org>
 +
 +      * font.c (font_unparse_xlfd): Exclude special characters from the
 +      generating XLFD name.
 +
 +2012-11-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for grp.h, pwd.h.
 +      * dired.c (stat_uname, stat_gname):
 +      * fileio.c (Fexpand_file_name): Remove no-longer-needed casts.
 +
 +      Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968).
 +      * dired.c (directory_files_internal, file_name_completion):
 +      Assume EAGAIN and EINTR are defined.
 +
 +      * fileio.c (Fcopy_file): Assume EISDIR is defined.
 +      * gmalloc.c (ENOMEM, EINVAL): Assume they're defined.
 +      * gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined.
 +      * lread.c (readbyte_from_file): Assume EINTR is defined.
 +      * process.c (wait_reading_process_output, send_process) [subprocesses]:
 +      Assume EIO and EAGAIN are defined.
 +      * unexcoff.c (write_segment): Assume EFAULT is defined.
 +
 +2012-11-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fontset.c (Finternal_char_font): Return nil on non-GUI frames.
 +      (Bug#11964)
  
        * xdisp.c (draw_glyphs): Don't draw in mouse face if mouse
        highlighting on the frame was cleared.  Prevents assertion
        violations when repeatedly clicking on the "Top" link of the
        "bread-crumbs" in Info buffers.
  
 -2012-11-23  Paul Eggert  <eggert@cs.ucla.edu>
 -          Eli Zaretskii  <eliz@gnu.org>
 +2012-11-25  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Fix a race condition with glib (Bug#8855).
 -      The symptom is a diagnostic "GLib-WARNING **: In call to
 -      g_spawn_sync(), exit status of a child process was requested but
 -      SIGCHLD action was set to SIG_IGN and ECHILD was received by
 -      waitpid(), so exit status can't be returned."  The diagnostic
 -      is partly wrong, as the SIGCHLD action is not set to SIG_IGN.
 -      The real bug is a race condition between Emacs and glib: Emacs
 -      does a waitpid (-1, ...) and reaps glib's subprocess by mistake,
 -      so that glib can't find it.  Work around the bug by invoking
 -      waitpid only on subprocesses that Emacs itself creates.
 +      * sysdep.c (sys_subshell): Don't assume pid_t fits in int.
  
 -      This is a backport from the trunk, consisting of:
 +2012-11-24  Ken Brown  <kbrown@cornell.edu>
  
 -      * w32proc.c (create_child): Don't clip the PID of the child
 -      process to fit into an Emacs integer, as this is no longer a
 -      restriction.
 -      (waitpid): Rename from sys_wait.  Emulate a Posix 'waitpid' by
 -      reaping only the process specified by PID argument, if that is
 -      positive.  Use PID instead of dead_child to know which process to
 -      reap.  Wait for the child to die only if WNOHANG is not in
 -      OPTIONS.
 -      (sys_select): Don't set dead_child.
 -
 -      * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
 -      as it is no longer needed.
 -
 -      * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions,
 -      no longer needed.
 -      (create_process, record_child_status_change): Don't use special
 -      value -1 in pid field, as the caller now must know the pid rather
 -      than having the callee infer it.  The inference was sometimes
 -      incorrect anyway, due to another race.
 -      (create_process): Set new 'alive' member if child is created.
 -      (process_status_retrieved): New function.
 -      (record_child_status_change): Use it.
 -      Accept negative 1st argument, which means to wait for the
 -      processes that Emacs already knows about.  Move special-case code
 -      for DOS_NT (which lacks WNOHANG) here, from caller.  Keep track of
 -      processes that have already been waited for, by testing and
 -      clearing new 'alive' member. Remove the setting of
 -      record_at_most_one_child for the !WNOHANG case.
 -      (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change
 -      now does this internally.
 -      (handle_child_signal): Let record_child_status_change do all
 -      the work, since we do not want to reap all exited child processes,
 -      only the child processes that Emacs itself created.
 -      * process.h (Lisp_Process): New boolean member 'alive'.
 +      * keyboard.c (HAVE_MOUSE):
 +      * frame.c (HAVE_MOUSE): Remove, and rewrite code as if HAVE_MOUSE
 +      were always defined.
  
 -2012-11-23  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-24  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (set_cursor_from_row): Skip step 2 only if point is not
        between bpos_covered and bpos_max.  This fixes cursor display when
        pointer to string data, rather than the value of the string object
        itself (which barfs under CHECK_LISP_OBJECT_TYPE).
  
 -2012-11-21  Eli Zaretskii  <eliz@gnu.org>
 -
        * indent.c (Fvertical_motion): If the starting position is covered
        by a display string, return to one position before that, to avoid
        overshooting it inside move_it_to.  (Bug#12930)
  
 -2012-11-20  Daniel Colascione  <dancol@dancol.org>
 +2012-11-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (struct frame): Remove display_preempted member
 +      since all users are dead long ago.
 +      * nsterm.h (struct x_output): Use the only dummy member.
 +      * w32menu.c (pending_menu_activation): Remove since not
 +      really used.
 +      (set_frame_menubar): Adjust user.
 +      * w32term.h (struct x_output): Drop outdated #if 0 code.
 +      (struct w32_output): Use bitfields for explicit_parent,
 +      asked_for_visible and menubar_active members.
 +      Drop unused pending_menu_activation member.
 +      * xterm.h (struct x_output): Drop outdated #if 0 code.
 +      Use bitfields for explicit_parent, asked_for_visible,
 +      has_been_visible and net_wm_state_hidden_seen members.
  
 -      * w32fns.c (Fx_file_dialog):
 -      (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to
 -      cygwin_convert_file_name*.
 +2012-11-23  Eli Zaretskii  <eliz@gnu.org>
  
 -      * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32):
 -      Rename cygwin_convert_path* to cygwin_convert_file_name*.
 +      * makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead
 +      of a literal "/".  (Bug#12955)
 +      (gl-stamp): Invoke fc.exe directly, not through cmd.
  
 -2012-11-20  Ken Brown  <kbrown@cornell.edu>
 +2012-11-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
 +      * dired.c: Assume HAVE_DIRENT_H.
 +      (NAMLEN): Remove, replacing with ...
 +      (dirent_namelen): New function.  All uses changed.  Use the GNU macro
 +      _D_EXACT_NAMELEN if available, as it's faster than strlen.
 +      (DIRENTRY): Remove, replacing all uses with 'struct dirent'.
 +      (DIRENTRY_NONEMPTY): Remove.  All callers now assume it's nonzero.
 +      * makefile.w32-in (DIR_H): Remove.  All uses replaced with
 +      $(NT_INC)/dirent.h.
 +      ($(BLD)/w32.$(O)): Do not depend on $(SRC)/ndir.h.
 +      * ndir.h: Rename to ../nt/inc/dirent.h.
 +      * sysdep.h (closedir) [!HAVE_CLOSEDIR]: Remove.
 +      Do not include <dirent.h>; no longer needed.
 +      * w32.c: Include <dirent.h> rather than "ndir.h".
 +
 +2012-11-23  Chong Yidong  <cyd@gnu.org>
 +
 +      * xftfont.c (xftfont_open): Remove duplicate assignment.
 +
 +2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (Fgarbage_collect): Unblock input after clearing
 +      gc_in_progress to avoid note_mouse_highlight glitch with GC.
 +      * frame.h (FRAME_MOUSE_UPDATE): New macro.
 +      * msdos.c (IT_frame_up_to_date): Use it here...
 +      * w32term.c (w32_frame_up_to_date): ...here...
 +      * xterm.c (XTframe_up_to_date): ...and here...
 +      * nsterm.m (ns_frame_up_to_date): ...but not here.
 +      * lisp.h (Mouse_HLInfo): Remove mouse_face_deferred_gc member.
 +      Adjust users.
 +      * xdisp.c (message2_nolog, message3_nolog, note_mouse_highlight):
 +      Do not check whether GC is in progress.
 +
 +2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xdisp.c (window_buffer_changed): New function.
 +      (update_menu_bar, update_tool_bar): Use it to
 +      simplify large 'if' statements.
 +      (redisplay_internal): Generalize commonly used
 +      'tail' and 'frame' local variables.
 +
 +2012-11-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (getcwd): Fix the 2nd argument type, to prevent conflicts
 +      with Windows system header.
 +
 +2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for unistd.h (Bug#12945).
 +      * alloc.c: Assume unistd.h exists.
 +      * fileio.c (Fexpand_file_name) [DOS_NT]: Use getcwd, not getwd.
 +      * sysdep.c (get_current_dir_name): Assume getcwd exists.
 +      (getwd) [USG]: Remove; no longer needed.
 +      (sys_subshell) [DOS_NT]: Use getcwd, not getwd.
 +      * w32.c (getcwd): Rename from getwd, and switch to getcwd's API.
 +      * w32.h (getcwd): Remove decl.
 +
 +2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
 +      Make it set selected_window as well.
 +      (update_tool_bar): Use it.
 +
 +2012-11-21  Ken Brown  <kbrown@cornell.edu>
  
        * emacs.c (main): Set the G_SLICE environment variable for all
        Cygwin builds, not just GTK builds.  See
        https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00368.html.
  
 -2012-11-19  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * xdisp.c (start_hourglass) [HAVE_NTGUI]: Don't mix declaration of
 -      w32_note_current_window with code.  (Backport from trunk.)
 +2012-11-21  Eli Zaretskii  <eliz@gnu.org>
  
        * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
        (FILE_ANY_ACCESS, CTL_CODE, FSCTL_GET_REPARSE_POINT) [_MSC_VER]:
        Define for the MSVC compiler.
  
 -      * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing
 -      semi-colon.
 -
 -2012-11-18  Eli Zaretskii  <eliz@gnu.org>
 +      * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing semi-colon.
  
        * fileio.c (Fsubstitute_in_file_name, Ffile_name_directory)
        (Fexpand_file_name) [DOS_NT]: Pass encoded file name to
        dostounix_filename.  Prevents crashes down the road, because
 -      dostounix_filename assumes it gets a unibyte string.  Reported by
 -      Michel de Ruiter <michel@sentient.nl>, see
 +      dostounix_filename assumes it gets a unibyte string.
 +      Reported by Michel de Ruiter <michel@sentient.nl>, see
        http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00017.html
  
 -2012-11-17  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Conflate Qnil and Qunbound for `symbol-function'.
 +      * alloc.c (Fmake_symbol): Initialize `function' to Qnil.
 +      * lread.c (init_obarray): Set `function' fields to Qnil.
 +      * eval.c (Fcommandp): Ignore Qunbound.
 +      (Fautoload, eval_sub, Fapply, Ffuncall, Fmacroexpand):
 +      * data.c (Ffset, Ffboundp, indirect_function, Findirect_function):
 +      Test NILP rather than Qunbound.
 +      (Ffmakunbound): Set to Qnil.
 +      (Fsymbol_function): Never signal an error.
 +      (Finteractive_form): Ignore Qunbound.
 +
 +2012-11-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * eval.c (interactive_p): Remove no-longer-used decl.
 +
 +2012-11-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xdisp.c (buffer_shared): Adjust comment.
 +      (buffer_shared_and_changed): New function.
 +      (prepare_menu_bars, redisplay_internal): Use it to
 +      decide whether all windows or frames should be updated.
 +      (window_outdated): New function.
 +      (text_outside_line_unchanged_p, redisplay_window): Use it.
 +      (redisplay_internal): Likewise.  Fix indentation.
 +
 +2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (Finteractive_p, Fcalled_interactively_p, interactive_p): Remove.
 +      (syms_of_eval): Remove corresponding defsubr.
 +      * bytecode.c (exec_byte_code): `interactive-p' is now a Lisp function.
 +
 +2012-11-19  Daniel Colascione  <dancol@dancol.org>
 +
 +      * w32fns.c (Fx_file_dialog):
 +      (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to
 +      cygwin_convert_file_name*.
 +
 +      * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32):
 +      Rename cygwin_convert_path* to cygwin_convert_file_name*.
 +
 +2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * nsterm.m (ns_select): Send SIGIO only to self, not to process group.
 +
 +2012-11-18  Eli Zaretskii  <eliz@gnu.org>
  
        * w32select.c: Include w32common.h before w32term.h, so that
        windows.h gets included before w32term.h uses some of its
        features, see below.
  
 -      * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]: New
 -      typedefs.
 -      (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]: New
 -      prototypes.
 +      * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]:
 +      New typedefs.
 +      (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]:
 +      New prototypes.
        (EnumSystemLocales) [_MSC_VER]: Define if undefined.  (Bug#12878)
  
 -2012-11-17  Jan Djärv  <jan.h.d@swipnet.se>
 +2012-11-18  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (hold_event): Set send_appdefined to YES (Bug#12834).
        (ns_select): Return at once if events are held (Bug#12834).
  
 -2012-11-16  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 +2012-11-18  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
  
        * unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64.
        Needed following 2012-10-20 change.  (Bug#12902)
  
 +2012-11-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32proc.c (waitpid): Remove unused label get_result.
 +
 +2012-11-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (SYSWAIT_H): New macro.
 +      ($(BLD)/callproc.$(O), $(BLD)/w32proc.$(O), $(BLD)/process.$(O))
 +      ($(BLD)/sysdep.$(O)): Update dependencies.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
 +      * callproc.c (relocate_fd): Assume F_DUPFD.
 +      * emacs.c, term.c (O_RDWR): Remove.
 +      * keyboard.c (tty_read_avail_input): Use O_NONBLOCK rather than
 +      O_NDELAY, since O_NONBLOCK is the standard name for this flag.
 +      * nsterm.m: Assume <fcntl.h> exists.
 +      * process.c (NON_BLOCKING_CONNECT, allocate_pty, create_process)
 +      (create_pty, Fmake_network_process, server_accept_connection)
 +      (wait_reading_process_output, init_process_emacs):
 +      Assume O_NONBLOCK.
 +      (wait_reading_process_output): Put in a special case for WINDOWSNT
 +      to mimick the older behavior where it had O_NDELAY but not O_NONBLOCK.
 +      It's not clear this is needed, but it's a more-conservative change.
 +      (create_process): Assume FD_CLOEXEC.
 +      (create_process, create_pty): Assume O_NOCTTY.
 +      * sysdep.c (init_sys_modes, reset_sys_modes): Assume F_SETFL.
 +      (reset_sys_modes): Use O_NONBLOCK rather than O_NDELAY.
 +      Omit if not DOS_NT, since F_GETFL is not defined there.
 +      (serial_open): Assume O_NONBLOCK and O_NOCTTY.
 +      * term.c: Include <fcntl.h>, for flags like O_NOCTTY.
 +      (O_NOCTTY): Remove.
 +      (init_tty): Assume O_IGNORE_CTTY is defined to 0 on platforms that
 +      lack it, since gnulib guarantees this.
 +      * w32.c (fcntl): Test for O_NONBLOCK rather than O_NDELAY.
 +
 +2012-11-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (faccessat): Pretend that directories have the execute bit
 +      set.  Emacs expects that, e.g., in files.el:cd-absolute.
 +
 +      * w32proc.c (create_child): Don't clip the PID of the child
 +      process to fit into an Emacs integer, as this is no longer a
 +      restriction.
 +      (waitpid): Rename from sys_wait.  Emulate a Posix 'waitpid' by
 +      reaping only the process specified by PID argument, if that is
 +      positive.  Use PID instead of dead_child to know which process to
 +      reap.  Wait for the child to die only if WNOHANG is not in
 +      OPTIONS.
 +      (sys_select): Don't set dead_child.
 +
 +      * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
 +      as it is no longer needed.
 +
 +      * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions,
 +      no longer needed.
 +      (record_child_status_change): Remove the setting of
 +      record_at_most_one_child for the !WNOHANG case.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix problems in ns port found by static checking.
 +      * nsterm.m: Include <pthread.h>, for pthread_mutex_lock etc.
 +      (hold_event, setPosition:portion:whole:): Send SIGIO only to self,
 +      not to process group.
 +      (ns_select): Use emacs_write, not write, as that's more robust
 +      in the presence of signals.
 +      (fd_handler:): Check for read errors.
 +
  2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * editfns.c (Fmessage): Mention message-log-max.  (Bug#12849)
  
 -2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * eval.c (Finteractive_p): Revert lexbind-merge mishap.
  
 -2012-11-14  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-16  Eli Zaretskii  <eliz@gnu.org>
  
        * w32proc.c (timer_loop): Make sure SuspendThread and ResumeThread
        use the same value of thread handle.
        (getitimer): Don't duplicate the caller thread's handle here.
        (Bug#12832)
  
 -2012-11-13  Jan Djärv  <jan.h.d@swipnet.se>
 +2012-11-16  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (hold_event): Send SIGIO to make sure ns_read_socket is
        called (Bug#12834).
  
 -2012-11-12  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove no-longer-used pty_max_bytes variable.
 +      * process.c (pty_max_bytes): Remove; unused.
 +      (send_process): Do not set it.
 +
 +2012-11-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/dispnew.$(O), $(BLD)/emacs.$(O)):
 +      Update dependencies.
 +
 +2012-11-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * eval.c (mark_backtrace) [BYTE_MARK_STACK]: Remove stray '*'.
 +      This follows up on the 2012-09-29 patch that removed indirection
 +      for the 'function' field.  Reported by Sergey Vinokurov in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00263.html>.
 +
 +2012-11-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (faccessat): Rename from sys_faccessat.  (No need to use a
 +      different name, as the MS runtime does not have such a function,
 +      and probably never will.)  All callers changed.  Ignore DIRFD
 +      value if PATH is an absolute file name, to match Posix spec
 +      better.  If AT_SYMLINK_NOFOLLOW is set in FLAGS, don't resolve
 +      symlinks.
 +
 +2012-11-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xdisp.c (echo_area_display, redisplay_internal):
 +      Omit redundant check whether frame_garbaged is set.
 +
 +2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use faccessat, not access, when checking file permissions (Bug#12632).
 +      This fixes a bug that has been present in Emacs since its creation.
 +      It was reported by Chris Torek in 1983 even before GNU Emacs existed,
 +      which must set some sort of record.  (Torek's bug report was against
 +      a predecessor of GNU Emacs, but GNU Emacs happened to have the
 +      same common flaw.)  See Torek's Usenet posting
 +      "setuid/setgid programs & Emacs" Article-I.D.: sri-arpa.858
 +      Posted: Fri Apr  8 14:18:56 1983.
 +      * Makefile.in (LIB_EACCESS): New macro.
 +      (LIBES): Use it.
 +      * callproc.c (init_callproc):
 +      * charset.c (init_charset):
 +      * fileio.c (check_existing, check_executable, check_writable)
 +      (Ffile_readable_p):
 +      * lread.c (openp, load_path_check):
 +      * process.c (allocate_pty):
 +      * xrdb.c (file_p):
 +      Use effective UID when checking permissions, not real UID.
 +      * callproc.c (init_callproc):
 +      * charset.c (init_charset):
 +      * lread.c (load_path_check, init_lread):
 +      Test whether directories are accessible, not merely whether they exist.
 +      * conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): New macro.
 +      * fileio.c (check_existing, check_executable, check_writable)
 +      (Ffile_readable_p):
 +      Use symbolic names instead of integers for the flags, as they're
 +      portable now.
 +      (check_writable): New arg AMODE.  All uses changed.
 +      Set errno on failure.
 +      (Ffile_readable_p): Use faccessat, not stat + open + close.
 +      (Ffile_writable_p): No need to call check_existing + check_writable.
 +      Just call check_writable and then look at errno.  This saves a syscall.
 +      dir should never be nil; replace an unnecessary runtime check
 +      with an eassert.  When checking the parent directory of a nonexistent
 +      file, check that the directory is searchable as well as writable, as
 +      we can't create files in unsearchable directories.
 +      (file_directory_p): New function, which uses 'stat' on most platforms
 +      but faccessat with D_OK (for efficiency) if WINDOWSNT.
 +      (Ffile_directory_p, Fset_file_times): Use it.
 +      (file_accessible_directory_p): New function, which uses a single
 +      syscall for efficiency.
 +      (Ffile_accessible_directory_p): Use it.
 +      * xrdb.c (file_p): Use file_directory_p.
 +      * lisp.h (file_directory_p, file_accessible_directory_p): New decls.
 +      * lread.c (openp): When opening a file, use fstat rather than
 +      stat, as that avoids a permissions race.  When not opening a file,
 +      use file_directory_p rather than stat.
 +      (dir_warning): First arg is now a usage string, not a format.
 +      Use errno.  All uses changed.
 +      * nsterm.m (ns_term_init): Remove unnecessary call to file-readable
 +      that merely introduced a race.
 +      * process.c, sysdep.c, term.c: All uses of '#ifdef O_NONBLOCK'
 +      changed to '#if O_NONBLOCK', to accommodate gnulib O_* style,
 +      and similarly for the other O_* flags.
 +      * w32.c (sys_faccessat): Rename from sys_access and switch to
 +      faccessat's API.  All uses changed.
 +      * xrdb.c: Do not include <sys/stat.h>; no longer needed.
 +      (magic_db): Rename from magic_file_p.
 +      (magic_db, search_magic_path): Return an XrmDatabase rather than a
 +      char *, so that we don't have to test for file existence
 +      separately from opening the file for reading.  This removes a race
 +      fixes a permission-checking problem, and simplifies the code.
 +      All uses changed.
 +      (file_p): Remove; no longer needed.
 +
 +2012-11-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Omit glyphs initialization at startup.
 +      * dispnew.c (glyphs_initialized_initially_p): Remove.
 +      (adjust_frame_glyphs_initially): Likewise.  Adjust users.
 +      (Fredraw_frame): Move actual code from here...
 +      (redraw_frame): ...to here.  Add eassert.  Adjust comment.
 +      (Fredraw_display): Use redraw_frame.
 +      * xdisp.c (clear_garbaged_frames): Likewise.
 +
 +2012-11-13  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (decode_mode_spec): Limit the value of WIDTH argument
        passed to pint2str and pint2hrstr to be at most the size of the
        large values of FIELD_WIDTH argument to decode_mode_spec.
        (Bug#12867)
  
 -2012-11-07  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix a race with verify-visited-file-modtime (Bug#12863).
 +      Since at least 1991 Emacs has ignored an mtime difference of no
 +      more than one second, but my guess is that this was to work around
 +      file system bugs that were fixed long ago.  Since the race is
 +      causing problems now, let's remove that code.
 +      * fileio.c (Fverify_visited_file_modtime): Do not accept a file
 +      whose time stamp is off by no more than a second.  Insist that the
 +      file time stamps match exactly.
 +
 +2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (struct frame): Convert external_tool_bar member to
 +      1-bit unsigned bitfield.
 +      * termhooks.h (struct terminal): Remove mouse_moved member since
 +      all users are long dead.  Adjust comment on mouse_position_hook.
 +
 +2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Simplify by using FOR_EACH_FRAME here and there.
 +      * frame.c (next_frame, prev_frame, other_visible_frames)
 +      (delete_frame, visible-frame-list): Use FOR_EACH_FRAME.
 +      * w32term.c (x_window_to_scroll_bar): Likewise.
 +      * window.c (window_list): Likewise.
 +      * xdisp.c (x_consider_frame_title): Likewise.
 +      * xfaces.c ( Fdisplay_supports_face_attributes_p): Likewise.
 +      * xfns.c (x_window_to_frame, x_any_window_to_frame)
 +      (x_menubar_window_to_frame, x_top_window_to_frame): Likewise.
 +      * xmenu.c (menubar_id_to_frame): Likewise.
 +      * xselect.c (frame_for_x_selection): Likewise.
 +      * xterm.c (x_frame_of_widget, x_window_to_scroll_bar)
 +      (x_window_to_menu_bar): Likewise.
 +      * w32fns.c (x_window_to_frame): Likewise.  Adjust comment.
 +
 +2012-11-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * data.c (Qdefalias_fset_function): Now static.
 +
 +      Another tweak to vectorlike_header change.
 +      * alloc.c (struct Lisp_Vectorlike_Free, NEXT_IN_FREE_LIST):
 +      Remove, and replace all uses with ...
 +      (next_in_free_list, set_next_in_free_list):
 +      New functions, which respect C's aliasing rules better.
 +
 +2012-11-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * window.c (list4i): Rename from 'quad'.  All uses changed.
 +      Needed because <sys/types.h> defines 'quad' on Solaris 10.
 +
 +2012-11-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * xdisp.c (start_hourglass) [HAVE_NTGUI]: Add block to silence
 +      warning about mixing declarations and code in ISO C90.
 +
 +2012-11-10  Martin Rudalics  <rudalics@gmx.at>
  
        * window.c (Fsplit_window_internal): Set combination limit of
        new parent window to t iff Vwindow_combination_limit is t;
        fixing a regression introduced with the change from 2012-09-22.
 -      (Fwindow_combination_limit, Fset_window_combination_limit):
 -      Fix doc-strings.
 +      (Fset_window_combination_limit): Fix doc-string.
  
 -2012-11-06  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-10  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (try_scrolling): Fix correction of aggressive-scroll
        amount when the scroll margins are too large.  When scrolling
        point is positioned many lines beyond the window top/bottom.
        (Bug#12811)
  
 -2012-11-05  Eli Zaretskii  <eliz@gnu.org>
 -
        * ralloc.c (relinquish): If real_morecore fails to return memory
        to the system, don't crash; instead, leave the last heap
        unchanged and return.  (Bug#12774)
  
 +2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.h (AUTOLOADP): New macro.
 +      * eval.c (Fautoload): Don't attach to loadhist, call Fdefalias instead.
 +      * data.c (Ffset): Remove special ad-advice-info handling.
 +      (Fdefalias): Handle autoload definitions and new Qdefalias_fset_function.
 +      (Fsubr_arity): CSE.
 +      (Finteractive_form): Simplify.
 +      (Fquo): Don't insist on having at least 2 arguments.
 +      (Qdefalias_fset_function): New var.
 +
 +2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * image.c (xpm_make_color_table_h): Change to hashtest_equal.
 +
 +      * nsfont.m (Qcondensed, Qexpanded): New variables.
 +      (ns_descriptor_to_entity): Restore Qcondensed, Qexpanded setting.
 +      (syms_of_nsfont): Defsym Qcondensed, Qexpanded.
 +
 +2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Fix recently introduced crash on MS-Windows (Bug#12839).
 +      * w32term.h (struct scroll_bar): Use convenient header.
 +      (SCROLL_BAR_VEC_SIZE): Remove.
 +      * w32term.c (x_scroll_bar_create): Use VECSIZE.
 +
 +2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Tweak last vectorlike_header change.
 +      * alloc.c (struct Lisp_Vectorlike_Free): Special type to represent
 +      vectorlike object on the free list.  This is introduced to avoid
 +      some (but not all) pointer casting and aliasing problems, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00105.html.
 +      * .gdbinit (pvectype, pvecsize): New commands to examine vectorlike
 +      objects.
 +      (xvectype, xvecsize): Use them to examine Lisp_Object values.
 +
 +2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfont.m (ns_descriptor_to_entity): Qcondensed and Qexpanded has
 +      been removed, so remove them here also.
 +
 +2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * doc.c (Fdocumentation): Handle new property
 +      dynamic-docstring-function to replace the old ad-advice-info.
 +
 +2012-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fns.c (Qeql, hashtest_eq): Now static.
 +
 +2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.h (XHASH): Redefine to be imperfect and fit in a Lisp int.
 +      * fns.c (hashfn_eq, hashfn_eql, sxhash):
 +      * profiler.c (hashfn_profiler): Don't use XUINT on non-integers.
 +      * buffer.c (compare_overlays): Use XLI rather than XHASH.
 +
 +2012-11-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use same hash function for hashfn_profiler as for hash_string etc.
 +      * fns.c (SXHASH_COMBINE): Remove.  All uses replaced by sxhash_combine.
 +      * lisp.h (sxhash_combine): New inline function, with the contents
 +      of the old SXHASH_COMBINE.
 +      * profiler.c (hashfn_profiler): Use it, instead of having a
 +      special hash function containing a comparison that always yields 1.
 +
 +2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic)
 +      (Qultra_condensed, Qextra_condensed, Qcondensed, Qsemi_condensed)
 +      (Qsemi_expanded, Qextra_expanded, Qexpanded, Qultra_expanded):
 +      Remove unused vars.
 +
 +2012-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * image.c (xpm_make_color_table_h): Fix compiler error because
 +      make_hash_table changed.
 +
 +2012-11-08  Thomas Kappler <tkappler@gmail.com> (tiny change)
 +
 +      * nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541).
 +
 +2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use ad-hoc comparison function for the profiler's hash-tables.
 +      * profiler.c (Qprofiler_backtrace_equal, hashtest_profiler): New vars.
 +      (make_log): Use them.
 +      (handle_profiler_signal): Don't inhibit quit any longer since we don't
 +      call Fequal any more.
 +      (Ffunction_equal): New function.
 +      (cmpfn_profiler, hashfn_profiler): New functions.
 +      (syms_of_profiler): Initialize them.
 +      * lisp.h (struct hash_table_test): New struct.
 +      (struct Lisp_Hash_Table): Use it.
 +      * alloc.c (mark_object): Mark hash_table_test fields of hash tables.
 +      * fns.c (make_hash_table): Take a struct to describe the test.
 +      (cmpfn_eql, cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql)
 +      (hashfn_equal, hashfn_user_defined): Adjust to new calling convention.
 +      (hash_lookup, hash_remove_from_table): Move assertion checking of
 +      hashfn result here.  Check hash-equality before calling cmpfn.
 +      (Fmake_hash_table): Adjust call to make_hash_table.
 +      (hashtest_eq, hashtest_eql, hashtest_equal): New structs.
 +      (syms_of_fns): Initialize them.
 +      * emacs.c (main): Move syms_of_fns earlier.
 +      * xterm.c (syms_of_xterm):
 +      * category.c (hash_get_category_set): Adjust call to make_hash_table.
 +      * print.c (print_object): Adjust to new hash-table struct.
 +      * composite.c (composition_gstring_put_cache): Adjust to new hashfn.
 +
 +2012-11-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (modifier_set): Fix handling of Scroll Lock when the
 +      value of w32-scroll-lock-modifier is neither nil nor one of the
 +      known key modifiers.  (Bug#12806)
 +
 +2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Shrink struct vectorlike_header to the only size field.
 +      * lisp.h (enum pvec_type): Avoid explicit enum member values.
 +      Adjust comment.
 +      (enum More_Lisp_Bits): Change PSEUDOVECTOR_SIZE_BITS and
 +      PVEC_TYPE_MASK to arrange new bitfield in the vector header.
 +      (PSEUDOVECTOR_REST_BITS, PSEUDOVECTOR_REST_MASK): New members.
 +      (PSEUDOVECTOR_AREA_BITS): New member used to extract subtype
 +      information from the vector header.  Adjust comment.
 +      (XSETPVECTYPE, XSETPVECTYPESIZE, XSETTYPED_PSEUDOVECTOR)
 +      (PSEUDOVECTOR_TYPEP, DEFUN): Adjust to match new vector header
 +      layout.
 +      (XSETSUBR, SUBRP): Adjust to match new Lisp_Subr layout.
 +      (struct vectorlike_header): Remove next member.  Adjust comment.
 +      (struct Lisp_Subr): Add convenient header.  Adjust comment.
 +      (allocate_pseudovector): Adjust prototype.
 +      * alloc.c (mark_glyph_matrix, mark_face_cache, allocate_string)
 +      (sweep_string, lisp_malloc): Remove useless prototypes.
 +      (enum mem_type): Adjust comment.
 +      (NEXT_IN_FREE_LIST): New macro.
 +      (SETUP_ON_FREE_LIST): Adjust XSETPVECTYPESIZE usage.
 +      (Fmake_bool_vector): Likewise.
 +      (struct large_vector): New type to represent allocation unit for
 +      the vectors with the memory footprint more than VBLOOCK_BYTES_MAX.
 +      (large_vectors): Change type to struct large_vector.
 +      (allocate_vector_from_block): Simplify.
 +      (PSEUDOVECTOR_NBYTES): Replace with...
 +      (vector_nbytes): ...new function.  Adjust users.
 +      (sweep_vectors): Adjust processing of large vectors.
 +      (allocate_vectorlike): Likewise.
 +      (allocate_pseudovector): Change type of 3rd arg to enum pvec_type.
 +      Add easserts.  Adjust XSETPVECTYPESIZE usage.
 +      (allocate_buffer): Use BUFFER_PVEC_INIT.
 +      (live_vector_p): Adjust to match large vector.
 +      * buffer.c (init_buffer_once): Use BUFFER_PVEC_INIT.
 +      * buffer.h (struct buffer): Add next member.
 +      (BUFFER_LISP_SIZE, BUFFER_REST_SIZE, BUFFER_PVEC_INIT):
 +      New macros.
 +      (FOR_EACH_BUFFER): Adjust to match struct buffer change.
 +      * fns.c (internal_equal): Adjust to match enum pvec_type change.
 +      (copy_hash_table): Adjust to match vector header change.
 +      * lread.c (defsubr): Use XSETPVECTYPE.
 +      * .gdbinit (xpr, xbacktrace): Adjust to match vector header change.
 +      (xvectype): Likewise.  Print PVEC_NORMAL_VECTOR for regular vectors.
 +      (xvecsize): New command.
 +
 +2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c (event_to_kboard): Do not dereference
 +      frame_or_window field of SELECTION_REQUEST_EVENT
 +      and SELECTION_CLEAR_EVENT events (Bug#12814).
 +      * xterm.h (struct selection_input_event): Adjust comment.
 +
 +2012-11-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (modifier_set): Don't report modifiers from toggle key,
 +      such as Scroll Lock, if the respective keys are treated as
 +      function keys, not as modifiers.  This avoids destroying non-ASCII
 +      keyboard input when Scroll Lock is toggled ON.  (Bug#12806)
 +
 +2012-11-07  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfns.c (Fx_wm_set_size_hint): Use check_x_frame.  Adjust docstring.
 +
 +2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Restore some duplicate definitions (Bug#12814).
 +      This undoes part of the 2012-11-03 changes.  Some people build
 +      with plain -g rather than with -g3, and they need the duplicate
 +      definitions for .gdbinit to work; see <http://bugs.gnu.org/12814#26>.
 +      * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK):
 +      Define as macros, as well as as enums or as constants.
 +
 +2012-11-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask
 +      to keypad keys (Bug#12816).
 +
 +2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor adjustments of recently-changed frame functions.
 +      * buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already
 +      known to be a frame (we're in the FRAMEP branch).
 +      * lisp.h (Qframep): Remove decl.  frame.h declares this.
 +      * window.c (quad): Args are of type EMACS_INT, not ptrdiff_t,
 +      since they're meant for Lisp fixnum values.
 +
 +2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * window.c (Fwindow_combination_limit): Revert to the only
 +      required argument and adjust docstring as suggested in
 +      http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html
 +      by Martin Rudalics <rudalics@gmx.at>.
 +
 +2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Widely used frame validity and checking functions.
 +      * frame.h (decode_live_frame, decode_any_frame): Add prototypes.
 +      * frame.c (decode_live_frame, decode_any_frame): New functions.
 +      (delete_frame, Fredirect_frame_focus, Fframe_parameters)
 +      (Fframe_parameter, Fframe_char_height, Fframe_char_width)
 +      (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width)
 +      (Fframe_pointer_visible_p): Use decode_any_frame.
 +      (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame)
 +      (Fraise_frame, Flower_frame, Fmodify_frame_parameters)
 +      (Fset_frame_height, Fset_frame_width): Use decode_live_frame.
 +      (Fframe_focus): Likewise.  Allow zero number of arguments.
 +      Adjust docstring.
 +      (frame_buffer_list, frame_buffer_predicate): Remove.
 +      * lisp.h (frame_buffer_predicate): Remove prototype.
 +      * buffer.c (Fother_buffer): Use decode_any_frame.
 +      * xdisp.c (Ftool_bar_lines_needed): Likewise.
 +      * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise.
 +      * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font)
 +      (Fclose_font, Ffont_info): Use decode_live_frame.
 +      * fontset.c (check_fontset_name): Likewise.
 +      * terminal.c (Fframe_terminal): Likewise.
 +      * w32fns.c (check_x_frame): Likewise.
 +      * window.c (Fminibuffer_window, Fwindow_at)
 +      (Fcurrent_window_configuration): Likewise.
 +      (Frun_window_configuration_change_hook, Fwindow_resize_apply):
 +      Likewise.  Allow zero number of arguments.  Adjust docstring.
 +      * dispnew.c (Fredraw_frame): Likewise.
 +      * xfaces.c (frame_or_selected_frame): Remove.
 +      (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font)
 +      (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p)
 +      (Fframe_face_alist): Use decode_live_frame.
 +      * xfns.c (check_x_frame): Likewise.
 +
 +2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * window.c (quad): New function.
 +      (Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges)
 +      (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges)
 +      (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p)
 +      (Fwindow_line_height): Use it.
 +      (Fwindow_fringes): Use list3.
 +      (Fwindow_scroll_bars): Use list4.
 +      (Fwindow_frame, Fwindow_top_child, Fwindow_left_child)
 +      (Fwindow_combination_limit): Allow zero number of arguments.
 +
 +2012-11-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h.
 +
 +      * w32fns.c: Include unistd.h, to avoid compiler warnings on Cygwin.
 +      (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use
 +      file descriptor 2 for standard error.  (Bug#12805)
 +
 +2012-11-05  Chong Yidong  <cyd@gnu.org>
 +
 +      * process.c (wait_reading_process_output): Revert previous change.
 +
 +2012-11-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800).
 +      This removes code that has been obsolete since around 1990.
 +      * callproc.c (Fcall_process):
 +      * emacs.c (main):
 +      * process.c (create_process):
 +      * term.c (dissociate_if_controlling_tty):
 +      Assume setsid exists.
 +      * callproc.c (child_setup): Assume setpgid exists and behaves as
 +      per POSIX.1-1988 or later.
 +      * conf_post.h (setpgid) [!HAVE_SETPGID]: Remove.
 +      * emacs.c (shut_down_emacs):
 +      * sysdep.c (sys_suspend, init_foreground_group):
 +      Assume getpgrp behaves as per POSIX.1-1998 or later.
 +      * msdos.c (setpgrp): Remove.
 +      (tcgetpgrp, setpgid, setsid): New functions.
 +      * systty.h (EMACS_GETPGRP): Remove.  All callers now use getpgrp.
 +      * term.c (no_controlling_tty): Remove; unused.
 +      * w32proc.c (setpgrp): Remove.
 +      (setsid, tcgetpgrp): New functions.
 +
 +      Simplify by assuming __fpending.
 +      * dispnew.c: Include <fpending.h>, not <stdio_ext.h>.
 +      (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT.
 +      Do not assume that __fpending's result fits in int.
 +
 +2012-11-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove EMACS_OUTQSIZE+sleep hack.
 +      * dispnew.c (update_frame_1): Remove hack for terminals slower
 +      than 2400 bps, which throttled Emacs by having it sleep.
 +      This code hasn't worked since at least 2007, when the multi-tty stuff
 +      was added, and anyway those old terminals are long dead.
 +      * systty.h (EMACS_OUTQSIZE): Remove; unused.  The macro isn't used even
 +      without the dispnew.c change, as dispnew.c doesn't include systty.h.
 +
 +      Fix data-loss with --version (Bug#9574).
 +      * emacs.c (close_output_streams): Use strerror, not emacs_strerror,
 +      as we can't assume that emacs_strerror is initialized, and strerror
 +      is good enough here.
 +      (main): Invoke atexit earlier, to catch earlier instances of
 +      sending data to stdout and exiting, e.g., "emacs --version >/dev/full".
 +
 +2012-11-04  Michael Marchionna  <tralfaz@pacbell.net>
 +
 +      * nsterm.m: Add NSClearLineFunctionKey and keypad keys (Bug#8680).
 +      (keyDown): Remap keypad keys to X11 virtual key codes.
 +
 +2012-11-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix data-loss with --batch (Bug#9574).
 +      * emacs.c: Include <close-stream.h>.
 +      (close_output_streams): New function.
 +      (main): Pass it to atexit, so that Emacs closes stdout and stderr
 +      and handles errors appropriately.
 +      (Fkill_emacs): Don't worry about flushing, as close_output_stream
 +      does that now.
 +
 +      Fix a race condition that causes Emacs to mess up glib (Bug#8855).
 +      The symptom is a diagnostic "GLib-WARNING **: In call to
 +      g_spawn_sync(), exit status of a child process was requested but
 +      SIGCHLD action was set to SIG_IGN and ECHILD was received by
 +      waitpid(), so exit status can't be returned."  The diagnostic
 +      is partly wrong, as the SIGCHLD action is not set to SIG_IGN.
 +      The real bug is a race condition between Emacs and glib: Emacs
 +      does a waitpid (-1, ...) and reaps glib's subprocess by mistake,
 +      so that glib can't find it.  Work around the bug by invoking
 +      waitpid only on subprocesses that Emacs itself creates.
 +      * process.c (create_process, record_child_status_change):
 +      Don't use special value -1 in pid field, as the caller now must
 +      know the pid rather than having the callee infer it.
 +      The inference was sometimes incorrect anyway, due to another race.
 +      (create_process): Set new 'alive' member if child is created.
 +      (process_status_retrieved): New function.
 +      (record_child_status_change): Use it.
 +      Accept negative 1st argument, which means to wait for the
 +      processes that Emacs already knows about.  Move special-case code
 +      for DOS_NT (which lacks WNOHANG) here, from caller.  Keep track of
 +      processes that have already been waited for, by testing and
 +      clearing new 'alive' member.
 +      (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change
 +      now does this internally.
 +      (handle_child_signal): Let record_child_status_change do all
 +      the work, since we do not want to reap all exited child processes,
 +      only the child processes that Emacs itself created.
 +      * process.h (Lisp_Process): New boolean member 'alive'.
 +
 +      Omit duplicate definitions no longer needed with gcc -g3.
 +      * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG)
 +      (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM):
 +      Define only as macros.  There's no longer any need to also define
 +      these symbols as enums or as constants, since we now assume
 +      gcc -g3 when debugging.
 +
  2012-11-03  Eli Zaretskii  <eliz@gnu.org>
  
        * lisp.mk: Adjust comments to the fact that term/internal is now
        iterator when starting in the middle of a display or overlay
        string.  (Bug#12745)
  
 -2012-11-03  Jan Djärv  <jan.h.d@swipnet.se>
 +2012-11-03  Chong Yidong  <cyd@gnu.org>
 +
 +      * process.c (wait_reading_process_output): Clean up the last
 +      change.
 +
 +2012-11-03  Jim Paris  <jim@jtan.com>  (tiny change)
 +
 +      * process.c (wait_reading_process_output): Avoid a race condition
 +      with SIGIO delivery (Bug#11536).
 +
 +2012-11-03  Chong Yidong  <cyd@gnu.org>
 +
 +      * buffer.c (cursor_type): Untabify docstring.
 +
 +2012-11-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (struct frame): Drop can_have_scroll_bars member
 +      which is meaningless for a long time.  Adjust comments.
 +      (FRAME_CAN_HAVE_SCROLL_BARS): Remove.
 +      * frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users.
 +
 +2012-11-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * window.c (decode_next_window_args): Update window arg after
 +      calling decode_live_window and so fix crash reported at
 +      http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html
 +      by Juanma Barranquero <lekktu@gmail.com>.
 +      (Fwindow_body_width, Fwindow_body_height): Simplify a bit.
 +      * font.c (Ffont_at): Likewise.
 +
 +2012-11-01  Jan Djärv  <jan.h.d@swipnet.se>
  
        * widget.c (resize_cb): New function.
        (EmacsFrameRealize): Add resize_cb as event handler (Bug#12733).
        (EmacsFrameResize): Check if all is up to date before changing frame
        size.
  
 +2012-11-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement backtrace output for fatal errors on MS-Windows.
 +      * w32fns.c (CaptureStackBackTrace_proc): New typedef.
 +      (BACKTRACE_LIMIT_MAX): New macro.
 +      (w32_backtrace): New function.
 +      (emacs_abort): Use w32_backtrace when the user chooses not to
 +      attach a debugger.  Update the text of the abort dialog.
 +
 +2012-11-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Window-related stuff cleanup here and there.
 +      * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p):
 +      Use decode_any_window.
 +      * fringe.c (Ffringe_bitmaps_at_pos): Likewise.
 +      * xdisp.c (Fformat_mode_line): Likewise.
 +      * font.c (Ffont_at): Use decode_live_window.
 +      * indent.c (Fcompute_motion, Fvertical_motion): Likewise.
 +      * window.c (decode_next_window_args): Likewise.
 +      (decode_any_window): Remove static.
 +      * window.h (decode_any_window): Add prototype.
 +      * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here...
 +      * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P,
 +      respectively.
 +
 +2012-11-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Remove pad from struct input_event.
 +      * termhooks.h (struct input_event): Remove padding field.
 +      Adjust comment.
 +      * keyboard.c (event_to_kboard): Simplify because frame_or_window
 +      member is never cons for a long time.  Adjust comment.
 +      (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and
 +      SELECTION_CLEAR_EVENT has no Lisp_Objects to mark.  Add comment.
 +      * xterm.c (handle_one_xevent): Do not initialize frame_or_window
 +      field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT.
 +
  2012-11-01  Eli Zaretskii  <eliz@gnu.org>
  
        * w32proc.c (getpgrp, setpgid): New functions.  (Bug#12776)
  
  2012-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * fns.c (Fnreverse): Include the problem element when signalling an
 +      * fns.c (Fnreverse): Include the problem element when signaling an
        error (bug#12677).
  
  2012-10-18  Jan Djärv  <jan.h.d@swipnet.se>
        now a supported configuration.
  
        * Makefile.in: consolidate image variables into LIBIMAGE; add
 -      W32_OBJ and W32_LIBS. Compile new files.
 +      W32_OBJ and W32_LIBS.  Compile new files.
  
        * conf_post.h:
        (_DebPrint) declare tracing facility for W32 debugging.  We need
  2012-05-09  Michael Albinus  <michael.albinus@gmx.de>
  
        * dbusbind.c (xd_registered_buses): New internal Lisp object.
 -      Rename all occurences of Vdbus_registered_buses to xd_registered_buses.
 +      Rename all occurrences of Vdbus_registered_buses to xd_registered_buses.
        (syms_of_dbusbind): Remove declaration of Vdbus_registered_buses.
        Initialize xd_registered_buses.
  
diff --combined src/window.c
@@@ -244,7 -244,7 +244,7 @@@ decode_live_window (register Lisp_Objec
    return XWINDOW (window);
  }
  
 -static struct window *
 +struct window *
  decode_any_window (register Lisp_Object window)
  {
    struct window *w;
@@@ -270,44 -270,6 +270,44 @@@ decode_valid_window (register Lisp_Obje
    return w;
  }
  
 +/* Called when W's buffer slot is changed.  ARG -1 means that W is about to
 +   cease its buffer, and 1 means that W is about to set up the new one.  */
 +
 +static void
 +adjust_window_count (struct window *w, int arg)
 +{
 +  eassert (eabs (arg) == 1);
 +  if (BUFFERP (w->buffer))
 +    {
 +      struct buffer *b = XBUFFER (w->buffer);
 +
 +      if (b->base_buffer)
 +      b = b->base_buffer;
 +      b->window_count += arg;
 +      eassert (b->window_count >= 0);
 +    }
 +}
 +
 +/* Set W's buffer slot to VAL and recompute number
 +   of windows showing VAL if it is a buffer.  */
 +
 +void
 +wset_buffer (struct window *w, Lisp_Object val)
 +{
 +  adjust_window_count (w, -1);
 +  w->buffer = val;
 +  adjust_window_count (w, 1);
 +}
 +
 +/* Build a frequently used 4-integer (X Y W H) list.  */
 +
 +static Lisp_Object
 +list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h)
 +{
 +  return list4 (make_number (x), make_number (y),
 +              make_number (w), make_number (h));
 +}
 +
  DEFUN ("windowp", Fwindowp, Swindowp, 1, 1, 0,
         doc: /* Return t if OBJECT is a window and nil otherwise.  */)
    (Lisp_Object object)
@@@ -334,7 -296,7 +334,7 @@@ Internal windows and deleted windows ar
  }
  \f
  /* Frames and windows.  */
 -DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
 +DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 0, 1, 0,
         doc: /* Return the frame that window WINDOW is on.
  WINDOW must be a valid window and defaults to the selected one.  */)
    (Lisp_Object window)
@@@ -369,7 -331,10 +369,7 @@@ DEFUN ("minibuffer-window", Fminibuffer
  If FRAME is omitted or nil, it defaults to the selected frame.  */)
    (Lisp_Object frame)
  {
 -  if (NILP (frame))
 -    frame = selected_frame;
 -  CHECK_LIVE_FRAME (frame);
 -  return FRAME_MINIBUF_WINDOW (XFRAME (frame));
 +  return FRAME_MINIBUF_WINDOW (decode_live_frame (frame));
  }
  
  DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p,
@@@ -487,6 -452,7 +487,6 @@@ static Lisp_Objec
  select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
  {
    register struct window *w;
 -  register struct window *ow;
    struct frame *sf;
  
    CHECK_LIVE_WINDOW (window);
    else
      fset_selected_window (sf, window);
  
 +  select_window_1 (window, inhibit_point_swap);
 +
 +  bset_last_selected_window (XBUFFER (w->buffer), window);
 +  windows_or_buffers_changed++;
 +  return window;
 +}
 +
 +/* Select window with a minimum of fuss, i.e. don't record the change anywhere
 +   (not even for redisplay's benefit), and assume that the window's frame is
 +   already selected.  */
 +void
 +select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 +{
    /* Store the old selected window's buffer's point in pointm of the old
       selected window.  It belongs to that window, and when the window is
       not selected, must be in the window.  */
    if (!inhibit_point_swap)
      {
 -      ow = XWINDOW (selected_window);
 +      struct window *ow = XWINDOW (selected_window);
        if (! NILP (ow->buffer))
        set_marker_both (ow->pointm, ow->buffer,
                         BUF_PT (XBUFFER (ow->buffer)),
      }
  
    selected_window = window;
 -  bset_last_selected_window (XBUFFER (w->buffer), window);
  
    /* Go to the point recorded in the window.
       This is important when the buffer is in more
       redisplay_window has altered point after scrolling,
       because it makes the change only in the window.  */
    {
 -    register ptrdiff_t new_point = marker_position (w->pointm);
 +    register ptrdiff_t new_point = marker_position (XWINDOW (window)->pointm);
      if (new_point < BEGV)
        SET_PT (BEGV);
      else if (new_point > ZV)
      else
        SET_PT (new_point);
    }
 -
 -  windows_or_buffers_changed++;
 -  return window;
  }
  
  DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
-        doc: /* Select WINDOW.  Most editing will apply to WINDOW's buffer.
- Also make WINDOW's buffer current and make WINDOW the frame's selected
- window.  Return WINDOW.
+        doc: /* Select WINDOW which must be a live window.
+ Also make WINDOW's frame the selected frame and WINDOW that frame's
+ selected window.  In addition, make WINDOW's buffer current and set that
+ buffer's value of `point' to the value of WINDOW's `window-point'.
+ Return WINDOW.
  
  Optional second arg NORECORD non-nil means do not put this buffer at the
  front of the buffer list and do not make this window the most recently
@@@ -599,7 -558,7 +601,7 @@@ Return nil for a window with no parent 
    return decode_valid_window (window)->parent;
  }
  
 -DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 1, 1, 0,
 +DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 0, 1, 0,
         doc: /* Return the topmost child window of window WINDOW.
  WINDOW must be a valid window and defaults to the selected one.
  Return nil if WINDOW is a live window (live windows have no children).
@@@ -607,10 -566,11 +609,10 @@@ Return nil if WINDOW is an internal win
  horizontal combination.  */)
    (Lisp_Object window)
  {
 -  CHECK_WINDOW (window);
    return decode_valid_window (window)->vchild;
  }
  
 -DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 1, 1, 0,
 +DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0,
         doc: /* Return the leftmost child window of window WINDOW.
  WINDOW must be a valid window and defaults to the selected one.
  Return nil if WINDOW is a live window (live windows have no children).
@@@ -618,6 -578,7 +620,6 @@@ Return nil if WINDOW is an internal win
  vertical combination.  */)
    (Lisp_Object window)
  {
 -  CHECK_WINDOW (window);
    return decode_valid_window (window)->hchild;
  }
  
@@@ -641,16 -602,15 +643,16 @@@ Return nil if WINDOW has no previous si
  
  DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0,
         doc: /* Return combination limit of window WINDOW.
 -If the return value is nil, child windows of WINDOW can be recombined
 -with WINDOW's siblings.  A return value of t means that child windows of
 +If the return value is nil, child windows of WINDOW can be recombined with
 +WINDOW's siblings.  A return value of t means that child windows of
  WINDOW are never \(re-)combined with WINDOW's siblings.
  
  WINDOW must be a valid window.  The return value is meaningful for
  internal windows only.  */)
    (Lisp_Object window)
  {
 -  return decode_valid_window (window)->combination_limit;
 +  CHECK_VALID_WINDOW (window);
 +  return XWINDOW (window)->combination_limit;
  }
  
  DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0,
@@@ -820,7 -780,8 +822,7 @@@ area is only partially visible, that co
  exclude partially-visible lines, use `window-text-height'.  */)
    (Lisp_Object window)
  {
 -  struct window *w = decode_live_window (window);
 -  return make_number (window_body_lines (w));
 +  return make_number (window_body_lines (decode_live_window (window)));
  }
  
  DEFUN ("window-body-width", Fwindow_body_width, Swindow_body_width, 0, 1, 0,
@@@ -832,7 -793,8 +834,7 @@@ marginal areas, or scroll bars.  On a g
  expressed as an integer multiple of the default character width.  */)
    (Lisp_Object window)
  {
 -  struct window *w = decode_live_window (window);
 -  return make_number (window_body_cols (w));
 +  return make_number (window_body_cols (decode_live_window (window)));
  }
  
  DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0,
@@@ -875,8 -837,10 +877,8 @@@ Note that if `automatic-hscrolling' is 
  window so that the location of point moves off-window.  */)
    (Lisp_Object window, Lisp_Object ncol)
  {
 -  struct window *w = decode_live_window (window);
 -
    CHECK_NUMBER (ncol);
 -  return set_window_hscroll (w, XINT (ncol));
 +  return set_window_hscroll (decode_live_window (window), XINT (ncol));
  }
  
  DEFUN ("window-redisplay-end-trigger", Fwindow_redisplay_end_trigger,
@@@ -921,8 -885,11 +923,8 @@@ header line, and/or mode line.  For th
  {
    register struct window *w = decode_valid_window (window);
  
 -  return Fcons (make_number (WINDOW_LEFT_EDGE_COL (w)),
 -       Fcons (make_number (WINDOW_TOP_EDGE_LINE (w)),
 -       Fcons (make_number (WINDOW_RIGHT_EDGE_COL (w)),
 -       Fcons (make_number (WINDOW_BOTTOM_EDGE_LINE (w)),
 -              Qnil))));
 +  return list4i (WINDOW_LEFT_EDGE_COL (w), WINDOW_TOP_EDGE_LINE (w),
 +               WINDOW_RIGHT_EDGE_COL (w), WINDOW_BOTTOM_EDGE_LINE (w));
  }
  
  DEFUN ("window-pixel-edges", Fwindow_pixel_edges, Swindow_pixel_edges, 0, 1, 0,
@@@ -941,8 -908,11 +943,8 @@@ of just the text area, use `window-insi
  {
    register struct window *w = decode_valid_window (window);
  
 -  return Fcons (make_number (WINDOW_LEFT_EDGE_X (w)),
 -       Fcons (make_number (WINDOW_TOP_EDGE_Y (w)),
 -       Fcons (make_number (WINDOW_RIGHT_EDGE_X (w)),
 -       Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w)),
 -              Qnil))));
 +  return list4i (WINDOW_LEFT_EDGE_X (w), WINDOW_TOP_EDGE_Y (w),
 +               WINDOW_RIGHT_EDGE_X (w), WINDOW_BOTTOM_EDGE_Y (w));
  }
  
  static void
@@@ -984,13 -954,13 +986,13 @@@ of just the text area, use `window-insi
  {
    register struct window *w = decode_valid_window (window);
    int add_x, add_y;
 +
    calc_absolute_offset (w, &add_x, &add_y);
  
 -  return Fcons (make_number (WINDOW_LEFT_EDGE_X (w) + add_x),
 -         Fcons (make_number (WINDOW_TOP_EDGE_Y (w) + add_y),
 -       Fcons (make_number (WINDOW_RIGHT_EDGE_X (w) + add_x),
 -       Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w) + add_y),
 -              Qnil))));
 +  return list4i (WINDOW_LEFT_EDGE_X (w) + add_x,
 +               WINDOW_TOP_EDGE_Y (w) + add_y,
 +               WINDOW_RIGHT_EDGE_X (w) + add_x,
 +               WINDOW_BOTTOM_EDGE_Y (w) + add_y);
  }
  
  DEFUN ("window-inside-edges", Fwindow_inside_edges, Swindow_inside_edges, 0, 1, 0,
@@@ -1009,16 -979,16 +1011,16 @@@ display margins, fringes, header line, 
  {
    register struct window *w = decode_live_window (window);
  
 -  return list4 (make_number (WINDOW_BOX_LEFT_EDGE_COL (w)
 -                           + WINDOW_LEFT_MARGIN_COLS (w)
 -                           + WINDOW_LEFT_FRINGE_COLS (w)),
 -              make_number (WINDOW_TOP_EDGE_LINE (w)
 -                           + WINDOW_HEADER_LINE_LINES (w)),
 -              make_number (WINDOW_BOX_RIGHT_EDGE_COL (w)
 -                           - WINDOW_RIGHT_MARGIN_COLS (w)
 -                           - WINDOW_RIGHT_FRINGE_COLS (w)),
 -              make_number (WINDOW_BOTTOM_EDGE_LINE (w)
 -                           - WINDOW_MODE_LINE_LINES (w)));
 +  return list4i ((WINDOW_BOX_LEFT_EDGE_COL (w)
 +                + WINDOW_LEFT_MARGIN_COLS (w)
 +                + WINDOW_LEFT_FRINGE_COLS (w)),
 +               (WINDOW_TOP_EDGE_LINE (w)
 +                + WINDOW_HEADER_LINE_LINES (w)),
 +               (WINDOW_BOX_RIGHT_EDGE_COL (w)
 +                - WINDOW_RIGHT_MARGIN_COLS (w)
 +                - WINDOW_RIGHT_FRINGE_COLS (w)),
 +               (WINDOW_BOTTOM_EDGE_LINE (w)
 +                - WINDOW_MODE_LINE_LINES (w)));
  }
  
  DEFUN ("window-inside-pixel-edges", Fwindow_inside_pixel_edges, Swindow_inside_pixel_edges, 0, 1, 0,
@@@ -1036,16 -1006,16 +1038,16 @@@ display margins, fringes, header line, 
  {
    register struct window *w = decode_live_window (window);
  
 -  return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w)
 -                           + WINDOW_LEFT_MARGIN_WIDTH (w)
 -                           + WINDOW_LEFT_FRINGE_WIDTH (w)),
 -              make_number (WINDOW_TOP_EDGE_Y (w)
 -                           + WINDOW_HEADER_LINE_HEIGHT (w)),
 -              make_number (WINDOW_BOX_RIGHT_EDGE_X (w)
 -                           - WINDOW_RIGHT_MARGIN_WIDTH (w)
 -                           - WINDOW_RIGHT_FRINGE_WIDTH (w)),
 -              make_number (WINDOW_BOTTOM_EDGE_Y (w)
 -                           - WINDOW_MODE_LINE_HEIGHT (w)));
 +  return list4i ((WINDOW_BOX_LEFT_EDGE_X (w)
 +                + WINDOW_LEFT_MARGIN_WIDTH (w)
 +                + WINDOW_LEFT_FRINGE_WIDTH (w)),
 +               (WINDOW_TOP_EDGE_Y (w)
 +                + WINDOW_HEADER_LINE_HEIGHT (w)),
 +               (WINDOW_BOX_RIGHT_EDGE_X (w)
 +                - WINDOW_RIGHT_MARGIN_WIDTH (w)
 +                - WINDOW_RIGHT_FRINGE_WIDTH (w)),
 +               (WINDOW_BOTTOM_EDGE_Y (w)
 +                - WINDOW_MODE_LINE_HEIGHT (w)));
  }
  
  DEFUN ("window-inside-absolute-pixel-edges",
@@@ -1065,19 -1035,18 +1067,19 @@@ display margins, fringes, header line, 
  {
    register struct window *w = decode_live_window (window);
    int add_x, add_y;
 +
    calc_absolute_offset (w, &add_x, &add_y);
  
 -  return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w)
 -                           + WINDOW_LEFT_MARGIN_WIDTH (w)
 -                           + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x),
 -              make_number (WINDOW_TOP_EDGE_Y (w)
 -                           + WINDOW_HEADER_LINE_HEIGHT (w) + add_y),
 -              make_number (WINDOW_BOX_RIGHT_EDGE_X (w)
 -                           - WINDOW_RIGHT_MARGIN_WIDTH (w)
 -                           - WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x),
 -              make_number (WINDOW_BOTTOM_EDGE_Y (w)
 -                           - WINDOW_MODE_LINE_HEIGHT (w) + add_y));
 +  return list4i ((WINDOW_BOX_LEFT_EDGE_X (w)
 +                + WINDOW_LEFT_MARGIN_WIDTH (w)
 +                + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x),
 +               (WINDOW_TOP_EDGE_Y (w)
 +                + WINDOW_HEADER_LINE_HEIGHT (w) + add_y),
 +               (WINDOW_BOX_RIGHT_EDGE_X (w)
 +                - WINDOW_RIGHT_MARGIN_WIDTH (w)
 +                - WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x),
 +               (WINDOW_BOTTOM_EDGE_Y (w)
 +                - WINDOW_MODE_LINE_HEIGHT (w) + add_y));
  }
  
  /* Test if the character at column X, row Y is within window W.
@@@ -1410,7 -1379,12 +1412,7 @@@ The top left corner of the frame is con
  column 0.  */)
    (Lisp_Object x, Lisp_Object y, Lisp_Object frame)
  {
 -  struct frame *f;
 -
 -  if (NILP (frame))
 -    frame = selected_frame;
 -  CHECK_LIVE_FRAME (frame);
 -  f = XFRAME (frame);
 +  struct frame *f = decode_live_frame (frame);
  
    /* Check that arguments are integers or floats.  */
    CHECK_NUMBER_OR_FLOAT (x);
@@@ -1500,7 -1474,6 +1502,7 @@@ if it isn't already recorded.  */
        && !noninteractive)
      {
        struct text_pos startp;
 +      ptrdiff_t charpos = marker_position (w->start);
        struct it it;
        struct buffer *old_buffer = NULL;
        void *itdata = NULL;
           `-l' containing a call to `rmail' with subsequent other
           commands.  At the end, W->start happened to be BEG, while
           rmail had already narrowed the buffer.  */
 -      if (XMARKER (w->start)->charpos < BEGV)
 +      if (charpos < BEGV)
        SET_TEXT_POS (startp, BEGV, BEGV_BYTE);
 -      else if (XMARKER (w->start)->charpos > ZV)
 +      else if (charpos > ZV)
        SET_TEXT_POS (startp, ZV, ZV_BYTE);
        else
        SET_TEXT_POS_FROM_MARKER (startp, w->start);
@@@ -1643,7 -1616,7 +1645,7 @@@ display row, and VPOS is the row numbe
    else if (w == XWINDOW (selected_window))
      posint = PT;
    else
 -    posint = XMARKER (w->pointm)->charpos;
 +    posint = marker_position (w->pointm);
  
    /* If position is above window start or outside buffer boundaries,
       or if window start is out of range, position is not visible.  */
      {
        Lisp_Object part = Qnil;
        if (!fully_p)
 -      part = list4 (make_number (rtop), make_number (rbot),
 -                      make_number (rowh), make_number (vpos));
 +      part = list4i (rtop, rbot, rowh, vpos);
        in_window = Fcons (make_number (x),
                         Fcons (make_number (y), part));
      }
@@@ -1725,19 -1699,23 +1727,19 @@@ Return nil if window display is not up-
        if (!WINDOW_WANTS_HEADER_LINE_P (w))
        return Qnil;
        row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
 -      if (!row->enabled_p)
 -      return Qnil;
 -      return list4 (make_number (row->height),
 -                  make_number (0), make_number (0),
 -                  make_number (0));
 +      return row->enabled_p ? list4i (row->height, 0, 0, 0) : Qnil;
      }
  
    if (EQ (line, Qmode_line))
      {
        row = MATRIX_MODE_LINE_ROW (w->current_matrix);
 -      if (!row->enabled_p)
 -      return Qnil;
 -      return list4 (make_number (row->height),
 -                  make_number (0), /* not accurate */
 -                  make_number (WINDOW_HEADER_LINE_HEIGHT (w)
 -                               + window_text_bottom_y (w)),
 -                  make_number (0));
 +      return (row->enabled_p ?
 +            list4i (row->height,
 +                    0, /* not accurate */
 +                    (WINDOW_HEADER_LINE_HEIGHT (w)
 +                     + window_text_bottom_y (w)),
 +                    0)
 +            : Qnil);
      }
  
    CHECK_NUMBER (line);
  
   found_row:
    crop = max (0, (row->y + row->height) - max_y);
 -  return list4 (make_number (row->height + min (0, row->y) - crop),
 -              make_number (i),
 -              make_number (row->y),
 -              make_number (crop));
 +  return list4i (row->height + min (0, row->y) - crop, i, row->y, crop);
  }
  
  DEFUN ("window-dedicated-p", Fwindow_dedicated_p, Swindow_dedicated_p,
@@@ -1989,7 -1970,7 +1991,7 @@@ unshow_buffer (register struct window *
           && EQ (buf, XWINDOW (BVAR (b, last_selected_window))->buffer)))
      temp_set_point_both (b,
                         clip_to_bounds (BUF_BEGV (b),
 -                                       XMARKER (w->pointm)->charpos,
 +                                       marker_position (w->pointm),
                                         BUF_ZV (b)),
                         clip_to_bounds (BUF_BEGV_BYTE (b),
                                         marker_byte_position (w->pointm),
@@@ -2171,10 -2152,10 +2173,10 @@@ window_list (void
  {
    if (!CONSP (Vwindow_list))
      {
 -      Lisp_Object tail;
 +      Lisp_Object tail, frame;
  
        Vwindow_list = Qnil;
 -      for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
 +      FOR_EACH_FRAME (tail, frame)
        {
          Lisp_Object args[2];
  
             new windows at the front of args[1], which means we
             have to reverse this list at the end.  */
          args[1] = Qnil;
 -        foreach_window (XFRAME (XCAR (tail)), add_window_to_list, &args[1]);
 +        foreach_window (XFRAME (frame), add_window_to_list, &args[1]);
          args[0] = Vwindow_list;
          args[1] = Fnreverse (args[1]);
          Vwindow_list = Fnconc (2, args);
@@@ -2277,9 -2258,11 +2279,9 @@@ candidate_window_p (Lisp_Object window
  static void
  decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object *all_frames)
  {
 -  if (NILP (*window))
 -    *window = selected_window;
 -  else
 -    CHECK_LIVE_WINDOW (*window);
 +  struct window *w = decode_live_window (*window);
  
 +  XSETWINDOW (*window, w);
    /* MINIBUF nil may or may not include minibuffers.  Decide if it
       does.  */
    if (NILP (*minibuf))
    if (NILP (*all_frames))
      *all_frames
        = (!EQ (*minibuf, Qlambda)
 -       ? FRAME_MINIBUF_WINDOW (XFRAME (XWINDOW (*window)->frame))
 +       ? FRAME_MINIBUF_WINDOW (XFRAME (w->frame))
         : Qnil);
    else if (EQ (*all_frames, Qvisible))
      ;
@@@ -2996,24 -2979,22 +2998,24 @@@ replace_buffer_in_windows (Lisp_Object 
    call1 (Qreplace_buffer_in_windows, buffer);
  }
  
 -
 -/* Safely replace BUFFER with some other buffer in all windows of all
 -   frames, even those on other keyboards.  */
 +/* If BUFFER is shown in a window, safely replace it with some other
 +   buffer in all windows of all frames, even those on other keyboards.  */
  
  void
  replace_buffer_in_windows_safely (Lisp_Object buffer)
  {
 -  Lisp_Object tail, frame;
 +  if (buffer_window_count (XBUFFER (buffer)))
 +    {
 +      Lisp_Object tail, frame;
  
 -  /* A single call to window_loop won't do the job because it only
 -     considers frames on the current keyboard.  So loop manually over
 -     frames, and handle each one.  */
 -  FOR_EACH_FRAME (tail, frame)
 -    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, 1, frame);
 +      /* A single call to window_loop won't do the job because it only
 +       considers frames on the current keyboard.  So loop manually over
 +       frames, and handle each one.  */
 +      FOR_EACH_FRAME (tail, frame)
 +      window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, 1, frame);
 +    }
  }
 -\f
 +
  /* If *ROWS or *COLS are too small a size for FRAME, set them to the
     minimum allowable size.  */
  
@@@ -3147,12 -3128,12 +3149,12 @@@ run_window_configuration_change_hook (s
  }
  
  DEFUN ("run-window-configuration-change-hook", Frun_window_configuration_change_hook,
 -       Srun_window_configuration_change_hook, 1, 1, 0,
 -       doc: /* Run `window-configuration-change-hook' for FRAME.  */)
 +       Srun_window_configuration_change_hook, 0, 1, 0,
 +       doc: /* Run `window-configuration-change-hook' for FRAME.
 +If FRAME is omitted or nil, it defaults to the selected frame.  */)
    (Lisp_Object frame)
  {
 -  CHECK_LIVE_FRAME (frame);
 -  run_window_configuration_change_hook (XFRAME (frame));
 +  run_window_configuration_change_hook (decode_live_frame (frame));
    return Qnil;
  }
  
@@@ -3290,7 -3271,8 +3292,7 @@@ This function runs `window-scroll-funct
    tem = w->buffer;
    if (NILP (tem))
      error ("Window is deleted");
 -  else if (!EQ (tem, Qt))
 -    /* w->buffer is t when the window is first being set up.  */
 +  else
      {
        if (!EQ (tem, buffer))
        {
@@@ -3348,11 -3330,11 +3350,11 @@@ displaying that buffer.  */
  
    if (STRINGP (object))
      object = Fget_buffer (object);
 -  if (BUFFERP (object) && BUFFER_LIVE_P (XBUFFER (object)))
 +  if (BUFFERP (object) && BUFFER_LIVE_P (XBUFFER (object))
 +      && buffer_window_count (XBUFFER (object)))
      {
 -      /* Walk all windows looking for buffer, and force update
 -       of each of those windows.  */
 -
 +      /* If buffer is live and shown in at least one window, find
 +       all windows showing this buffer and force update of them.  */
        object = window_loop (REDISPLAY_BUFFER_WINDOWS, object, 0, Qvisible);
        return NILP (object) ? Qnil : Qt;
      }
@@@ -3431,8 -3413,6 +3433,8 @@@ make_parent_window (Lisp_Object window
    memcpy ((char *) p + sizeof (struct vectorlike_header),
          (char *) o + sizeof (struct vectorlike_header),
          word_size * VECSIZE (struct window));
 +  /* P's buffer slot may change from nil to a buffer.  */
 +  adjust_window_count (p, 1);
    XSETWINDOW (parent, p);
  
    p->sequence_number = ++sequence_number;
@@@ -3680,12 -3660,10 +3682,12 @@@ window_resize_apply (struct window *w, 
  }
  
  
 -DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 1, 2, 0,
 +DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 0, 2, 0,
         doc: /* Apply requested size values for window-tree of FRAME.
 -Optional argument HORIZONTAL omitted or nil means apply requested height
 -values.  HORIZONTAL non-nil means apply requested width values.
 +If FRAME is omitted or nil, it defaults to the selected frame.
 +
 +Optional argument HORIZONTAL omitted or nil means apply requested
 +height values.  HORIZONTAL non-nil means apply requested width values.
  
  This function checks whether the requested values sum up to a valid
  window layout, recursively assigns the new sizes of all child windows
@@@ -3696,10 -3674,17 +3698,10 @@@ Note: This function does not check any 
  be applied on the Elisp level.  */)
       (Lisp_Object frame, Lisp_Object horizontal)
  {
 -  struct frame *f;
 -  struct window *r;
 +  struct frame *f = decode_live_frame (frame);
 +  struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f));
    int horflag = !NILP (horizontal);
  
 -  if (NILP (frame))
 -    frame = selected_frame;
 -  CHECK_LIVE_FRAME (frame);
 -
 -  f = XFRAME (frame);
 -  r = XWINDOW (FRAME_ROOT_WINDOW (f));
 -
    if (!window_resize_check (r, horflag)
        || ! EQ (r->new_total,
               (horflag ? r->total_cols : r->total_lines)))
@@@ -3955,6 -3940,7 +3957,6 @@@ set correctly.  See the code of `split-
        wset_next (o, new);
      }
  
 -  wset_buffer (n, Qt);
    wset_window_end_valid (n, Qnil);
    memset (&n->last_cursor, 0, sizeof n->last_cursor);
  
@@@ -4627,7 -4613,7 +4629,7 @@@ window_scroll_pixel_based (Lisp_Object 
        /* Set the window start, and set up the window for redisplay.  */
        set_marker_restricted (w->start, make_number (pos),
                             w->buffer);
 -      bytepos = XMARKER (w->start)->bytepos;
 +      bytepos = marker_byte_position (w->start);
        w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n');
        w->update_mode_line = 1;
        w->last_modified = 0;
@@@ -5127,7 -5113,6 +5129,7 @@@ displayed_window_lines (struct window *
  {
    struct it it;
    struct text_pos start;
 +  ptrdiff_t charpos = marker_position (w->start);
    int height = window_box_height (w);
    struct buffer *old_buffer;
    int bottom_y;
    /* In case W->start is out of the accessible range, do something
       reasonable.  This happens in Info mode when Info-scroll-down
       calls (recenter -1) while W->start is 1.  */
 -  if (XMARKER (w->start)->charpos < BEGV)
 +  if (charpos < BEGV)
      SET_TEXT_POS (start, BEGV, BEGV_BYTE);
 -  else if (XMARKER (w->start)->charpos > ZV)
 +  else if (charpos > ZV)
      SET_TEXT_POS (start, ZV, ZV_BYTE);
    else
      SET_TEXT_POS_FROM_MARKER (start, w->start);
@@@ -5355,8 -5340,8 +5357,8 @@@ and redisplay normally--don't erase an
        iarg += ht;
  
        /* Don't let it get into the margin at either top or bottom.  */
 -      iarg = max (iarg, this_scroll_margin);
 -      iarg = min (iarg, ht - this_scroll_margin - 1);
 +      iarg = clip_to_bounds (this_scroll_margin, iarg,
 +                           ht - this_scroll_margin - 1);
  
        pos = *vmotion (PT, - iarg, w);
        charpos = pos.bufpos;
@@@ -5574,7 -5559,7 +5576,7 @@@ the return value is nil.  Otherwise th
            && WINDOWP (selected_window)
            && EQ (XWINDOW (selected_window)->buffer, new_current_buffer)
            && !EQ (selected_window, data->current_window))
 -        old_point = XMARKER (XWINDOW (data->current_window)->pointm)->charpos;
 +        old_point = marker_position (XWINDOW (data->current_window)->pointm);
        else
          old_point = PT;
        else
        if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)
            /* If current_window = selected_window, its point is in BUF_PT.  */
            && !EQ (selected_window, data->current_window))
 -        old_point = XMARKER (XWINDOW (data->current_window)->pointm)->charpos;
 +        old_point = marker_position (XWINDOW (data->current_window)->pointm);
        else
          old_point = BUF_PT (XBUFFER (new_current_buffer));
      }
@@@ -6183,7 -6168,12 +6185,7 @@@ saved by this function.  */
    register int n_windows;
    register struct save_window_data *data;
    register int i;
 -  FRAME_PTR f;
 -
 -  if (NILP (frame))
 -    frame = selected_frame;
 -  CHECK_LIVE_FRAME (frame);
 -  f = XFRAME (frame);
 +  struct frame *f = decode_live_frame (frame);
  
    n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
    data = ALLOCATE_PSEUDOVECTOR (struct save_window_data, frame_cols,
@@@ -6336,9 -6326,10 +6338,9 @@@ Value is a list of the form (LEFT-WIDT
  {
    struct window *w = decode_live_window (window);
  
 -  return Fcons (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)),
 -              Fcons (make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)),
 -                     Fcons ((WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
 -                             ? Qt : Qnil), Qnil)));
 +  return list3 (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)),
 +              make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)),
 +              WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) ? Qt : Qnil);
  }
  
  
@@@ -6407,12 -6398,12 +6409,12 @@@ value.  */
    (Lisp_Object window)
  {
    struct window *w = decode_live_window (window);
 -  return Fcons (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
 +
 +  return list4 (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
                              ? WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
                              : WINDOW_SCROLL_BAR_AREA_WIDTH (w))),
 -              Fcons (make_number (WINDOW_SCROLL_BAR_COLS (w)),
 -                     Fcons (w->vertical_scroll_bar_type,
 -                            Fcons (Qnil, Qnil))));
 +              make_number (WINDOW_SCROLL_BAR_COLS (w)),
 +              w->vertical_scroll_bar_type, Qnil);
  }