changeset 106916:401176c64983

from trunk
author Kenichi Handa <handa@m17n.org>
date Mon, 18 Jan 2010 09:58:26 +0900
parents ef4635609200 (current diff) 2bef3a4193f8 (diff)
children f2b3ddaeec24
files admin/notes/commits admin/notes/cvslogs
diffstat 59 files changed, 564 insertions(+), 235 deletions(-) [+]
line wrap: on
line diff
--- a/admin/notes/BRANCH	Mon Jan 18 09:58:15 2010 +0900
+++ b/admin/notes/BRANCH	Mon Jan 18 09:58:26 2010 +0900
@@ -1,11 +1,10 @@
-This file describes the CVS branch in which it is maintained.
+This file describes the bzr branch in which it is maintained.
 Everything below the line is branch-specific.
 ________________________________________________________________________
 
 This is the trunk (sometimes mistakenly called "HEAD").
-When people say "use CVS emacs", this is the branch they are talking
-about.  Likewise, a "cvs checkout" without the "-r" option results in
-this branch.
+When people say "use the development version of Emacs" or the
+"bzr version of Emacs", this is the branch they are talking about.
 
 Emacs development takes place on the trunk.  Most of the time, Emacs
 hackers add to it relatively free of constraint (aside from proper
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin/notes/commits	Mon Jan 18 09:58:26 2010 +0900
@@ -0,0 +1,53 @@
+HOW TO COMMIT CHANGES TO EMACS
+
+http://lists.gnu.org/archive/html/emacs-devel/2009-03/msg00555.html
+From: 	 Miles Bader
+Subject: commit style redux
+Date: 	 Tue, 31 Mar 2009 12:21:20 +0900
+
+(1) Commit all changed files at once with a single log message (which
+    in CVS will result in an identical log message for all committed
+    files), not one-by-one.  This is pretty easy using vc-dir now.
+
+(2) Make the log message describe the entire changeset, perhaps
+    including relevant changelog entiries (I often don't bother with
+    the latter if it's a trivial sort of change).
+
+    Many modern source-control systems vaguely distinguish the first
+    line of the log message to use as a short summary for abbreviated
+    history listing (in arch this was explicitly called the summary,
+    but many other systems have a similar concept).  So it's nice if
+    you can format the log entry like:
+
+        SHORTISH ONE-LINE SUMMARY
+
+        MULTIPLE-LINE DETAILED DESCRIPTION POSSIBLY INCLUDING (OR
+        CONSISTING OF) CHANGELOG ENTRIES
+
+    [Even with CVS this style is useful, because web CVS browsing
+    interfaces often include the first N words of the log message of
+    the most recent commit as a short "most recent change"
+    description.]
+
+(3) Don't phrase log messages assuming the filename is known, because
+    in non-file-oriented systems (everything modern other than CVS),
+    the log listing tends to be treated as global information, and the
+    connection with specific files is less explicit.
+
+    For instance, currently I often see log messages like "Regenerate";
+    for modern source-control systems with a global log, it's better to
+    have something like "Regenerate configure".
+
+
+Followup discussion:
+http://lists.gnu.org/archive/html/emacs-devel/2010-01/msg00897.html
+
+
+PREVIOUS GUIDELINES FOR CVS
+
+For historical interest only, here is the old-style advice for CVS logs:
+http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01208.html
+
+From: Eli Zaretskii
+Subject: Re: Log messages in CVS
+Date: Sat, 29 Dec 2007 16:06:29 +0200
--- a/admin/notes/copyright	Mon Jan 18 09:58:15 2010 +0900
+++ b/admin/notes/copyright	Mon Jan 18 09:58:26 2010 +0900
@@ -24,9 +24,9 @@
 
 2. When installing code written by someone else, the ChangeLog entry
 should be in the name of the author of the code, not the person who
-installs it. I think it is helpful to put the author (if not yourself)
-in the CVS log as well; and to not install any of your own changes in
-the same commit.
+installs it.  I think it is helpful to put the author (if not yourself)
+in the commit log as well (you can also use bzr commit's "--author"
+option); and to not install any of your own changes in the same commit.
 
 3. With images, add the legal info to a README file in the directory
 containing the image.
@@ -38,17 +38,17 @@
 right thing to do.
 
 
-Every non-trivial file distributed through the Emacs CVS should be
+Every non-trivial file distributed through the Emacs repository should be
 self-explanatory in terms of copyright and license. This includes
 files that are not distributed in Emacs releases (for example, the
-admin/ directory), because the whole Emacs CVS is publicly
+admin/ directory), because the whole Emacs repository is publicly
 available.
 
 The definition of triviality is a little vague, but a rule of thumb is
 that any file with less than 15 lines of actual content is trivial. If
 a file is auto-generated (eg ldefs-boot.el) from another one in the
-CVS, then it does not really matter about adding a copyright statement
-to the generated file.
+repository, then it does not really matter about adding a copyright
+statement to the generated file.
 
 Legal advice says that we could, if we wished, put a license notice
 even in trivial files, because copyright law in general looks at the
@@ -67,8 +67,8 @@
 should display copyright notices (an exception to the rule about
 "generated" files), but these can just display the latest year. The
 full list of years should be kept in comments in the source file. If
-these are distributed in CVS, check in a regenerated version when the
-tex files are updated.
+these are distributed in the repository, check in a regenerated
+version when the tex files are updated.
 
 Copyright changes should be propagated to any associated repositories
 (eg Gnus, MH-E), but I think in every case this happens automatically
@@ -115,7 +115,7 @@
 else it is possible the file should not be in Emacs at all (please
 report!).
 
-Note that it seems painfully clear that one cannot rely on CVS logs,
+Note that it seems painfully clear that one cannot rely on commit logs,
 or even ChangeLogs, for older changes. People often installed changes
 from others, without recording the true authorship.
 
@@ -555,10 +555,10 @@
     obviously good):
 
 
-Is it OK to just `cvs remove' a file for legal reasons, or is
+Is it OK to just `bzr remove' a file for legal reasons, or is
 something more drastic needed? A removed file is still available from
-CVS, if suitable options are applied. (This CVS issue obviously does
-not affect a release).
+the repository, if suitable options are applied. (This issue obviously
+does not affect a release).
   rms: will ask lawyer
 
 
@@ -600,7 +600,7 @@
 Some notes:
 (see http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg01431.html)
 
-1. There are some files in Emacs CVS which are not part of Emacs (eg
+1. There are some files in the Emacs tree which are not part of Emacs (eg
 those included from Gnulib). These are all copyright FSF and (at time
 of writing) GPL >= 2. rms says may as well leave the licenses of these
 alone (may import them from Gnulib again). These are:
--- a/admin/notes/cvslogs	Mon Jan 18 09:58:15 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01208.html
-
-From: Eli Zaretskii
-Subject: Re: Log messages in CVS
-Date: Sat, 29 Dec 2007 16:06:29 +0200
-
-I once posted a summary that I know about; see:
-
-  http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00229.html
-  http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00234.html
-  http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00312.html
-
-Richard commented here, basically approving my summary:
-
-  http://lists.gnu.org/archive/html/emacs-devel/2006-11/msg00276.html
--- a/doc/lispref/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/lispref/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,11 @@
+2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
+
+	* elisp.texi: Remove duplicate edition information (Bug#5407).
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+	* two.el (volume-header-toc-markup): Fix typos in docstring.
+
 2010-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	Avoid dubious uses of save-excursions.
--- a/doc/lispref/elisp.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/lispref/elisp.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -100,9 +100,6 @@
 @node Top, Introduction, (dir), (dir)
 @top Emacs Lisp
 
-This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
-Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
-
 @insertcopying
 @end ifnottex
 
--- a/doc/lispref/two.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/lispref/two.el	Mon Jan 18 09:58:26 2010 +0900
@@ -54,8 +54,8 @@
 
 (defun volume-header-toc-markup ()
   "Insert Volume I and Volume II text into .toc file.
-NOTE: this auxilary function is file specific.
-This is for the *Elisp Ref Manual*"
+NOTE: this auxiliary function is file specific.
+This is for the *Elisp Ref Manual*."
   (interactive)
   (goto-char (point-min))
   (insert "\\unnumbchapentry {Volume 1}{}\n\\unnumbchapentry {}{}\n")
--- a/doc/misc/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,33 @@
+2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
+
+	* semantic.texi: Add Richard Y. Kim credit.
+
+	* eieio.texi (Making New Objects): Fix typo (Bug#5406).
+
+2010-01-17  Michael Albinus  <michael.albinus@gmx.de>
+
+	* tramp.texi (Frequently Asked Questions): Add GNU Emacs 23 and
+	SXEmacs	22 to the supported systems.  New item for hung ssh sessions.
+
+2010-01-17  Glenn Morris  <rgm@gnu.org>
+
+	* calc.texi (Reporting Bugs): Don't mention format of repository.
+
+	* woman.texi (Bugs): Make "Emacs repository" less specific,
+	and the URL for same more specific.
+
+	* faq.texi (Latest version of Emacs): The repository is now Bazaar.
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+	* ede.texi (ede-step-project, ede-proj-target):
+	* tramp.texi (Remote processes): Fix typos.
+
+2010-01-16  Mario Lang  <mlang@delysid.org>
+
+	* ede.texi (ede-target):
+	* org.texi (Refiling notes): Remove duplicated words.
+
 2010-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* gnus.texi (Posting Styles): Use with-current-buffer.
--- a/doc/misc/calc.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/calc.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -35269,7 +35269,7 @@
 so any efforts can be coordinated.
 
 The latest version of Calc is available from Savannah, in the Emacs
-CVS tree.  See @uref{http://savannah.gnu.org/projects/emacs}.
+repository.  See @uref{http://savannah.gnu.org/projects/emacs}.
 
 @c [summary]
 @node Summary, Key Index, Reporting Bugs, Top
--- a/doc/misc/ede.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/ede.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -1728,7 +1728,7 @@
 Type: @code{(or null list)} @*
 Default Value: @code{(quote ("GNUmakefile.preamble"))}
 
-The auxilliary makefile for additional variables.
+The auxiliary makefile for additional variables.
 Included just before the specific target files.
 @refill
 
@@ -1736,7 +1736,7 @@
 Type: @code{(or null list)} @*
 Default Value: @code{(quote ("GNUmakefile.postamble"))}
 
-The auxilliary makefile for additional rules.
+The auxiliary makefile for additional rules.
 Included just after the specific target files.
 @refill
 
@@ -1968,7 +1968,7 @@
 
 @deffn Method ede-expand-filename :AFTER this filename &optional force
 Return a fully qualified file name based on target @var{THIS}.
-@var{FILENAME} should a a filename which occurs in a directory in which @var{THIS} works.
+@var{FILENAME} should be a filename which occurs in a directory in which @var{THIS} works.
 Optional argument @var{FORCE} forces the default filename to be provided even if it
 doesn't exist.
 @end deffn
@@ -2083,7 +2083,7 @@
 Type: @code{list} @*
 Default Value: @code{nil}
 
-Auxilliary source files included in this target.
+Auxiliary source files included in this target.
 Each of these is considered equivalent to a source file, but it is not
 distributed, and each should have a corresponding rule to build it.
 @refill
--- a/doc/misc/eieio.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/eieio.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -645,7 +645,7 @@
 @comment  node-name,  next,  previous,  up
 @chapter Making New Objects
 
-Suppose we have defined a simple class is defined, such as:
+Suppose we have a simple class is defined, such as:
 
 @example
 (defclass record ()
--- a/doc/misc/faq.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/faq.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -1008,9 +1008,7 @@
 @cindex Latest version of Emacs
 @cindex Development, Emacs
 @cindex Repository, Emacs
-@cindex CVS repository, Emacs
-@cindex Arch repository, Emacs
-@cindex Git repository, Emacs
+@cindex Bazaar repository, Emacs
 
 Emacs @value{VER} is the current version as of this writing.  A version
 number with two components (e.g. @samp{22.1}) indicates a released
@@ -1020,9 +1018,8 @@
 Emacs is under active development, hosted at
 @uref{http://savannah.gnu.org/projects/emacs/, Savannah}.  The source
 code can be retrieved anonymously following the
-@uref{http://savannah.gnu.org/cvs/?group=emacs, instructions}.
-The primary repository is CVS, but Arch and Git mirrors are also
-available.
+@uref{http://savannah.gnu.org/bzr/?group=emacs, instructions}.
+The repository is GNU Bazaar.
 
 Because Emacs undergoes many changes before a release, the version
 number of a development version is not especially meaningful.  It is
--- a/doc/misc/org.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/org.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -6181,7 +6181,7 @@
 select a location via a file-path-like completion along the outline path, see
 the variables @code{org-refile-use-outline-path} and
 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
-create new nodes as new parents for for refiling on the fly, check the
+create new nodes as new parents for refiling on the fly, check the
 variable @code{org-refile-allow-creating-parent-nodes}.
 @kindex C-u C-c C-w
 @item C-u C-c C-w
--- a/doc/misc/semantic.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/semantic.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -1,7 +1,7 @@
 \input texinfo
 @setfilename ../../info/semantic
 @set TITLE  Semantic Manual
-@set AUTHOR Eric M. Ludlam and David Ponce
+@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
 @settitle @value{TITLE}
 
 @c *************************************************************************
Binary file doc/misc/tramp.texi has changed
--- a/doc/misc/woman.texi	Mon Jan 18 09:58:15 2010 +0900
+++ b/doc/misc/woman.texi	Mon Jan 18 09:58:26 2010 +0900
@@ -4,7 +4,7 @@
 @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man''
 @c FIXME
 @c Manual last updated:
-@set UPDATED Time-stamp: <2009-02-16 09:25:50 karl>
+@set UPDATED Time-stamp: <Sat 16-Jan-2010 19:18:43 gm on grasmoor>
 @c Software version:
 @set VERSION 0.54 (beta)
 @afourpaper
@@ -18,8 +18,8 @@
 This file documents WoMan: A program to browse Unix manual pages `W.O.
 (without) man'.
 
-Copyright @copyright{} 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -1319,8 +1319,8 @@
 
 @enumerate
 @item
-try the latest version of @file{woman.el} from the Emacs CVS repository
-on @uref{http://savannah.gnu.org/}.  If it still fails, please
+try the latest version of @file{woman.el} from the Emacs repository
+on @uref{http://savannah.gnu.org/projects/emacs/}.  If it still fails, please
 
 @item
 send a bug report to @email{bug-gnu-emacs@@gnu.org} and to
--- a/etc/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/etc/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,8 @@
+2010-01-16  Mario Lang  <mlang@delysid.org>
+
+	* srecode/doc-cpp.srt, srecode/doc-default.srt:
+	* srecode/doc-java.srt: Remove duplicated words.
+
 2010-01-14  Nick Roberts  <nickrob@snap.net.nz>
 
 	* etc/images/gud/recstart.xpm, etc/images/gud/recstop.xpm:
--- a/etc/srecode/doc-cpp.srt	Mon Jan 18 09:58:15 2010 +0900
+++ b/etc/srecode/doc-cpp.srt	Mon Jan 18 09:58:26 2010 +0900
@@ -58,7 +58,7 @@
 ----
 
 template group-comment-end :blank :indent
-"A comment occurring at the end of a a group of declarations.
+"A comment occurring at the end of a group of declarations.
 Recycle doxygen comment code from the more general template set."
 ----
 {{>:classdecl:doxygen-function-group-end}}
@@ -75,7 +75,7 @@
 ----
 
 template group-comment-end :blank :indent
-"A comment occurring at the end of a a group of declarations.
+"A comment occurring at the end of a group of declarations.
 Recycle doxygen comment code from the more general template set."
 ----
 {{>:classdecl:doxygen-function-group-end}}
--- a/etc/srecode/doc-default.srt	Mon Jan 18 09:58:15 2010 +0900
+++ b/etc/srecode/doc-default.srt	Mon Jan 18 09:58:26 2010 +0900
@@ -57,7 +57,7 @@
 ----
 
 template group-comment-end :indent
-"A comment occurring at the end of a a group of declarations."
+"A comment occurring at the end of a group of declarations."
 ----
 {{comment_start}} End {{?GROUPNAME}} {{comment_end}}
 ----
@@ -72,7 +72,7 @@
 ----
 
 template group-comment-end :indent
-"A comment occurring at the end of a a group of declarations."
+"A comment occurring at the end of a group of declarations."
 ----
 {{>:declaration:group-comment-end}}
 ----
--- a/etc/srecode/doc-java.srt	Mon Jan 18 09:58:15 2010 +0900
+++ b/etc/srecode/doc-java.srt	Mon Jan 18 09:58:26 2010 +0900
@@ -59,7 +59,7 @@
 ----
 
 template group-comment-end :blank :indent
-"A comment occurring at the end of a a group of declarations.
+"A comment occurring at the end of a group of declarations.
 Recycle javadoc comment code from the more general template set."
 ----
 {{>:classdecl:javadoc-function-group-end}}
@@ -76,7 +76,7 @@
 ----
 
 template group-comment-end :blank :indent
-"A comment occurring at the end of a a group of declarations.
+"A comment occurring at the end of a group of declarations.
 Recycle javadoc comment code from the more general template set."
 ----
 {{>:classdecl:javadoc-function-group-end}}
--- a/lib-src/etags.c	Mon Jan 18 09:58:15 2010 +0900
+++ b/lib-src/etags.c	Mon Jan 18 09:58:26 2010 +0900
@@ -6297,7 +6297,7 @@
 		  readline (lbp, stream);
 		  return;
 		} /* if a real #line directive */
-	    } /* if #line is followed by a a number */
+	    } /* if #line is followed by a number */
 	} /* if line begins with "#line " */
 
       /* If we are here, no #line directive was found. */
--- a/lisp/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,93 @@
+2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
+
+	* mail/sendmail.el (mail-yank-original): Set the mark if the
+	specified function for yanking does not do it.
+
+2010-01-17  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc.el (with-vc-properties): Deal with directory arguments.  (Bug#5298)
+
+	* vc-dir.el (vc-dir-resynch-file): Update the vc-dir header when
+	resyncing a directory.
+
+2010-01-17  Stephen Leake  <stephen_leake@member.fsf.org>
+
+	* progmodes/ada-mode.el: Fix bug#1920, bug#5400.
+	(ada-ident-re): Delete ., allow multibyte characters.
+	(ada-goto-label-re): New; matches goto labels.
+	(ada-block-label-re): New; matches block labels.
+	(ada-label-re): New; matches both.
+	(ada-named-block-re): Deleted; callers changed to use
+	`ada-block-label-re' instead.
+	(ada-get-current-indent, ada-get-indent-noindent, ada-get-indent-loop):
+	Use `ada-block-label-re'.
+	(ada-indent-on-previous-lines): Improve handling of goto labels.
+	(ada-get-indent-block-start): Special-case block label.
+	(ada-get-indent-label): Split into `ada-indent-block-label' and
+	`ada-indent-goto-label'.
+	(ada-goto-stmt-start, ada-goto-next-non-ws):
+	Optionally ignore goto labels.
+	(ada-goto-next-word): Simplify.
+	(ada-indent-newline-indent-conditional): Insert newline before
+	trying to fix indentation; doc fix.
+
+2010-01-17  Jay Belanger  <jay.p.belanger@gmail.com>
+
+	* calc/calc.el (calc-command-flags): Give it an initial value.
+
+2010-01-17  Glenn Morris  <rgm@gnu.org>
+
+	* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+	* cedet/semantic.el (semantic-mode):
+	* files.el (minibuffer-with-setup-hook):
+	* textmodes/artist.el (artist-mt, artist-key-undraw-continously)
+	(artist-key-draw-continously, artist-key-do-continously-continously)
+	(artist-key-set-point-continously, artist-mouse-draw-continously):
+	Fix typos in docstrings.
+
+2010-01-16  Lennart Borgman  <lennart.borgman@gmail.com>
+
+	* nxml/nxml-mode.el (nxml-extend-after-change-region): Never
+	return t (Bug#3898).
+
+2010-01-16  Frédéric Perrin  <frederic.perrin@resel.fr>  (tiny change)
+
+	* vc-dispatcher.el (vc-do-command): Set LC_MESSAGES, so that we
+	can parse the output of the external commands (Bug#5279).
+
+2010-01-16  Jari Aalto  <jari.aalto@cante.net>
+
+	* pcmpl-unix.el (pcmpl-unix-read-passwd-file): Doc fix.
+
+2010-01-16  Chong Yidong  <cyd@stupidchicken.com>
+
+	* emacs-lisp/advice.el (ad-add-advice): Doc fix (Bug#5274)
+
+	* emacs-lisp/cl-macs.el (defstruct): Doc fix (Bug#5267).
+
+	* startup.el (command-line): Remove unused --icon-type arg.
+	Handle --display arg, passing it to command-line-1 (Bug#5392).
+
+2010-01-16  Mario Lang  <mlang@delysid.org>
+
+	* cedet/ede/cpp-root.el (ede-cpp-root-project):
+	* cedet/ede/files.el (ede-expand-filename):
+	* cedet/ede/simple.el (ede-simple-project):
+	* cedet/semantic/complete.el (semantic-complete-read-tag-engine)
+	(semantic-complete-inline-tag-engine):
+	* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
+	* cedet/semantic/db-global.el (semanticdb-equivalent-mode):
+	* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
+	* cedet/semantic/db.el (semanticdb-equivalent-mode):
+	* cedet/semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
+	* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
+	* emacs-lisp/chart.el (chart-translate-namezone):
+	* textmodes/artist.el (artist-compute-popup-menu-table):
+	Remove duplicated words in doc-strings.
+
 2010-01-15   David Abrahams  <dave@boostpro.com>  (tiny change)
 
 	* net/mairix.el (mairix-widget-send-query): Send -1 instead of nil
@@ -1473,7 +1563,7 @@
 2009-12-01  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	Make vc-print-log buttons work.
-	* log-view.el (log-view-mode-map): Inherit from from widget-keymap.
+	* log-view.el (log-view-mode-map): Inherit from widget-keymap.
 
 2009-11-30  Ryan C. Thompson  <rct@thompsonclan.org>  (tiny change)
 
--- a/lisp/calc/calc.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/calc/calc.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1546,7 +1546,7 @@
 
 (defvar calc-aborted-prefix nil)
 (defvar calc-start-time nil)
-(defvar calc-command-flags)
+(defvar calc-command-flags nil)
 (defvar calc-final-point-line)
 (defvar calc-final-point-column)
 ;;; Note that modifications to this function may break calc-pass-errors.
--- a/lisp/cedet/ede/cpp-root.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/ede/cpp-root.el	Mon Jan 18 09:58:26 2010 +0900
@@ -324,7 +324,7 @@
 	       )
    )
   "EDE cpp-root project class.
-Each directory needs a a project file to control it.")
+Each directory needs a project file to control it.")
 
 ;;; INIT
 ;;
--- a/lisp/cedet/ede/files.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/ede/files.el	Mon Jan 18 09:58:26 2010 +0900
@@ -487,7 +487,7 @@
 
 (defmethod ede-expand-filename ((this ede-target) filename &optional force)
   "Return a fully qualified file name based on target THIS.
-FILENAME should a a filename which occurs in a directory in which THIS works.
+FILENAME should be a filename which occurs in a directory in which THIS works.
 Optional argument FORCE forces the default filename to be provided even if it
 doesn't exist."
   (ede-expand-filename (ede-target-parent this) filename force))
--- a/lisp/cedet/ede/proj-aux.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/ede/proj-aux.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1,4 +1,4 @@
-;;; ede/proj-aux.el --- EDE Generic Project auxilliary file support
+;;; ede/proj-aux.el --- EDE Generic Project auxiliary file support
 
 ;; Copyright (C) 1998, 1999, 2000, 2007, 2009, 2010  Free Software Foundation, Inc.
 
--- a/lisp/cedet/ede/simple.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/ede/simple.el	Mon Jan 18 09:58:26 2010 +0900
@@ -87,7 +87,7 @@
    (file-header-line :initform ";; EDE Simple Project")
    )
   "EDE Simple project class.
-Each directory needs a a project file to control it.")
+Each directory needs a project file to control it.")
 
 (defmethod ede-commit-project ((proj ede-simple-project))
   "Commit any change to PROJ to its file."
--- a/lisp/cedet/semantic.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1014,7 +1014,7 @@
 
 ;; The `semantic-mode' command, in conjuction with the
 ;; `semantic-default-submodes' variable, toggles Semantic's various
-;; auxilliary minor modes.
+;; auxiliary minor modes.
 
 (defvar semantic-load-system-cache-loaded nil
   "Non nil when the Semantic system caches have been loaded.
@@ -1057,7 +1057,7 @@
 
 In Semantic mode, Emacs parses the buffers you visit for their
 semantic content.  This information is used by a variety of
-auxilliary minor modes, listed in `semantic-default-submodes';
+auxiliary minor modes, listed in `semantic-default-submodes';
 all the minor modes in this list are also enabled when you enable
 Semantic mode.
 
@@ -1067,7 +1067,7 @@
   (if semantic-mode
       ;; Turn on Semantic mode
       (progn
-	;; Enable all the global auxilliary minor modes in
+	;; Enable all the global auxiliary minor modes in
 	;; `semantic-submode-list'.
 	(dolist (mode semantic-submode-list)
 	  (if (memq mode semantic-default-submodes)
--- a/lisp/cedet/semantic/complete.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/complete.el	Mon Jan 18 09:58:26 2010 +0900
@@ -192,7 +192,7 @@
 						    default-tag initial-input
 						    history)
   "Read a semantic tag, and return a tag for the selection.
-Argument COLLECTOR is an object which can be used to to calculate
+Argument COLLECTOR is an object which can be used to calculate
 a list of possible hits.  See `semantic-completion-collector-engine'
 for details on COLLECTOR.
 Argument DISPLAYOR is an object used to display a list of possible
@@ -394,7 +394,7 @@
 
 ;;; Keybindings
 ;;
-;; Keys are bound to to perform completion using our mechanisms.
+;; Keys are bound to perform completion using our mechanisms.
 ;; Do that work here.
 (defun semantic-complete-done ()
   "Accept the current input."
@@ -738,7 +738,7 @@
 (defun semantic-complete-inline-tag-engine
   (collector displayor buffer start end)
   "Perform completion based on semantic tags in a buffer.
-Argument COLLECTOR is an object which can be used to to calculate
+Argument COLLECTOR is an object which can be used to calculate
 a list of possible hits.  See `semantic-completion-collector-engine'
 for details on COLLECTOR.
 Argument DISPLAYOR is an object used to display a list of possible
--- a/lisp/cedet/semantic/db-el.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/db-el.el	Mon Jan 18 09:58:26 2010 +0900
@@ -107,7 +107,7 @@
 
 (defmethod semanticdb-equivalent-mode ((table semanticdb-table-emacs-lisp) &optional buffer)
   "Return non-nil if TABLE's mode is equivalent to BUFFER.
-Equivalent modes are specified by by `semantic-equivalent-major-modes'
+Equivalent modes are specified by the `semantic-equivalent-major-modes'
 local variable."
   (with-current-buffer buffer
     (eq (or mode-local-active-mode major-mode) 'emacs-lisp-mode)))
--- a/lisp/cedet/semantic/db-global.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/db-global.el	Mon Jan 18 09:58:26 2010 +0900
@@ -105,7 +105,7 @@
 
 (defmethod semanticdb-equivalent-mode ((table semanticdb-table-global) &optional buffer)
   "Return t, pretend that this table's mode is equivalent to BUFFER.
-Equivalent modes are specified by by `semantic-equivalent-major-modes'
+Equivalent modes are specified by the `semantic-equivalent-major-modes'
 local variable."
   ;; @todo - hack alert!
   t)
--- a/lisp/cedet/semantic/db-javascript.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/db-javascript.el	Mon Jan 18 09:58:26 2010 +0900
@@ -145,7 +145,7 @@
 
 (defmethod semanticdb-equivalent-mode ((table semanticdb-table-javascript) &optional buffer)
   "Return non-nil if TABLE's mode is equivalent to BUFFER.
-Equivalent modes are specified by by `semantic-equivalent-major-modes'
+Equivalent modes are specified by the `semantic-equivalent-major-modes'
 local variable."
   (with-current-buffer buffer
     (eq (or mode-local-active-mode major-mode) 'javascript-mode)))
--- a/lisp/cedet/semantic/db.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/db.el	Mon Jan 18 09:58:26 2010 +0900
@@ -735,13 +735,13 @@
 
 (defmethod semanticdb-equivalent-mode ((table semanticdb-abstract-table) &optional buffer)
   "Return non-nil if TABLE's mode is equivalent to BUFFER.
-Equivalent modes are specified by by `semantic-equivalent-major-modes'
+Equivalent modes are specified by the `semantic-equivalent-major-modes'
 local variable."
   nil)
 
 (defmethod semanticdb-equivalent-mode ((table semanticdb-table) &optional buffer)
   "Return non-nil if TABLE's mode is equivalent to BUFFER.
-Equivalent modes are specified by by `semantic-equivalent-major-modes'
+Equivalent modes are specified by the `semantic-equivalent-major-modes'
 local variable."
   (save-excursion
     (if buffer (set-buffer buffer))
--- a/lisp/cedet/semantic/decorate/include.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/decorate/include.el	Mon Jan 18 09:58:26 2010 +0900
@@ -461,7 +461,7 @@
 
       (when (or (eq mm 'c++-mode) (eq mm 'c-mode))
 	(princ "
-For C/C++ includes located within a a project, you can use a special
+For C/C++ includes located within a project, you can use a special
 EDE project that will wrap an existing build system.  You can do that
 like this in your .emacs file:
 
--- a/lisp/cedet/semantic/idle.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/cedet/semantic/idle.el	Mon Jan 18 09:58:26 2010 +0900
@@ -336,9 +336,9 @@
 
 
 (defun semantic-idle-work-for-one-buffer (buffer)
-  "Do long-processing work for for BUFFER.
+  "Do long-processing work for BUFFER.
 Uses `semantic-safe' and returns the output.
-Returns t of all processing succeeded."
+Returns t if all processing succeeded."
   (with-current-buffer buffer
     (not (and
 	  ;; Just in case
--- a/lisp/emacs-lisp/advice.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/emacs-lisp/advice.el	Mon Jan 18 09:58:26 2010 +0900
@@ -2422,16 +2422,28 @@
 ;;;###autoload
 (defun ad-add-advice (function advice class position)
   "Add a piece of ADVICE to FUNCTION's list of advices in CLASS.
-If FUNCTION already has one or more pieces of advice of the specified
-CLASS then POSITION determines where the new piece will go.  The value
-of POSITION can either be `first', `last' or a number where 0 corresponds
-to `first'.  Numbers outside the range will be mapped to the closest
-extreme position.  If there was already a piece of ADVICE with the same
-name, then the position argument will be ignored and the old advice
-will be overwritten with the new one.
-    If the FUNCTION was not advised already, then its advice info will be
-initialized.  Redefining a piece of advice whose name is part of the cache-id
-will clear the cache."
+
+ADVICE has the form (NAME PROTECTED ENABLED DEFINITION), where
+NAME is the advice name; PROTECTED is a flag specifying whether
+to protect against non-local exits; ENABLED is a flag specifying
+whether to initially enable the advice; and DEFINITION has the
+form (advice . LAMBDA), where LAMBDA is a lambda expression.
+
+If FUNCTION already has a piece of advice with the same name,
+then POSITION is ignored, and the old advice is overwritten with
+the new one.
+
+If FUNCTION already has one or more pieces of advice of the
+specified CLASS, then POSITION determines where the new piece
+goes.  POSITION can either be `first', `last' or a number (where
+0 corresponds to `first', and numbers outside the valid range are
+mapped to the closest extremal position).
+
+If FUNCTION was not advised already, its advice info will be
+initialized.  Redefining a piece of advice whose name is part of
+the cache-id will clear the cache.
+
+See Info node `(elisp)Computed Advice' for detailed documentation."
   (cond ((not (ad-is-advised function))
          (ad-initialize-advice-info function)
 	 (ad-set-advice-info-field
--- a/lisp/emacs-lisp/chart.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/emacs-lisp/chart.el	Mon Jan 18 09:58:26 2010 +0900
@@ -323,7 +323,7 @@
 (defmethod chart-translate-namezone ((c chart) n)
   "Return a dot-pair representing a positional range for a name.
 The name in chart C of the Nth name resides.
-Automatically compensates for for direction."
+Automatically compensates for direction."
   (let* ((dir (oref c direction))
 	 (w (if (eq dir 'vertical) (oref c x-width) (oref c y-width)))
 	 (m (if (eq dir 'vertical) (oref c y-margin) (oref c x-margin)))
--- a/lisp/emacs-lisp/cl-loaddefs.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/emacs-lisp/cl-loaddefs.el	Mon Jan 18 09:58:26 2010 +0900
@@ -282,7 +282,7 @@
 ;;;;;;  flet progv psetq do-all-symbols do-symbols dotimes dolist
 ;;;;;;  do* do loop return-from return block etypecase typecase ecase
 ;;;;;;  case load-time-value eval-when destructuring-bind function*
-;;;;;;  defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "3867c0613dfd69780f561012a1dfe67b")
+;;;;;;  defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "e10a7e42199c08dc39460f67dd2d424b")
 ;;; Generated autoloads from cl-macs.el
 
 (autoload 'gensym "cl-macs" "\
@@ -672,11 +672,21 @@
 
 (autoload 'defstruct "cl-macs" "\
 Define a struct type.
-This macro defines a new Lisp data type called NAME, which contains data
-stored in SLOTs.  This defines a `make-NAME' constructor, a `copy-NAME'
-copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors.
+This macro defines a new data type called NAME that stores data
+in SLOTs.  It defines a `make-NAME' constructor, a `copy-NAME'
+copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'.
+You can use the accessors to set the corresponding slots, via `setf'.
 
-\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" nil (quote macro))
+NAME may instead take the form (NAME OPTIONS...), where each
+OPTION is either a single keyword or (KEYWORD VALUE).
+See Info node `(cl)Structures' for a list of valid keywords.
+
+Each SLOT may instead take the form (SLOT SLOT-OPTS...), where
+SLOT-OPTS are keyword-value pairs for that slot.  Currently, only
+one keyword is supported, `:read-only'.  If this has a non-nil
+value, that slot cannot be set via `setf'.
+
+\(fn NAME SLOTS...)" nil (quote macro))
 
 (autoload 'cl-struct-setf-expander "cl-macs" "\
 Not documented
--- a/lisp/emacs-lisp/cl-macs.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/emacs-lisp/cl-macs.el	Mon Jan 18 09:58:26 2010 +0900
@@ -2191,11 +2191,21 @@
 ;;;###autoload
 (defmacro defstruct (struct &rest descs)
   "Define a struct type.
-This macro defines a new Lisp data type called NAME, which contains data
-stored in SLOTs.  This defines a `make-NAME' constructor, a `copy-NAME'
-copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors.
+This macro defines a new data type called NAME that stores data
+in SLOTs.  It defines a `make-NAME' constructor, a `copy-NAME'
+copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'.
+You can use the accessors to set the corresponding slots, via `setf'.
 
-\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)"
+NAME may instead take the form (NAME OPTIONS...), where each
+OPTION is either a single keyword or (KEYWORD VALUE).
+See Info node `(cl)Structures' for a list of valid keywords.
+
+Each SLOT may instead take the form (SLOT SLOT-OPTS...), where
+SLOT-OPTS are keyword-value pairs for that slot.  Currently, only
+one keyword is supported, `:read-only'.  If this has a non-nil
+value, that slot cannot be set via `setf'.
+
+\(fn NAME SLOTS...)"
   (let* ((name (if (consp struct) (car struct) struct))
 	 (opts (cdr-safe struct))
 	 (slots nil)
--- a/lisp/emulation/edt.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/emulation/edt.el	Mon Jan 18 09:58:26 2010 +0900
@@ -2107,7 +2107,7 @@
       (setq edt-term "pc")
     (if (or (not edt-window-system) (eq edt-window-system 'tty))
 	(setq edt-term (getenv "TERM"))))
-  ;; Look for for terminal configuration file for this terminal type.
+  ;; Look for a terminal configuration file for this terminal type.
   ;; Otherwise, load the user's custom configuration file.
   (if (or (not edt-window-system) (memq edt-window-system '(pc tty)))
       (progn
--- a/lisp/files.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/files.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1289,7 +1289,7 @@
 Recursive uses of the minibuffer are unaffected (FUN is not
 called additional times).
 
-This macro actually adds an auxilliary function that calls FUN,
+This macro actually adds an auxiliary function that calls FUN,
 rather than FUN itself, to `minibuffer-setup-hook'."
   (declare (indent 1) (debug t))
   (let ((hook (make-symbol "setup-hook")))
--- a/lisp/gnus/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/gnus/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,17 @@
+2010-01-17  Chong Yidong  <cyd@stupidchicken.com>
+
+	* message.el (message-mail): Just pass yank-action on to message-setup.
+	(message-setup): Handle (FUN . ARGS) form of yank-action.
+	(message-with-reply-buffer, message-widen-reply)
+	(message-yank-original): Handle non-buffer values of
+	message-reply-buffer (Bug#4080).
+	(message-setup-1): Prefer to save message-reply-buffer as a buffer.
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+	* nnmairix.el (nnmairix-group-delete-recreate-this-group):
+	Fix typo in docstring.
+
 2010-01-08  Jason Rumney  <jasonr@gnu.org>
 
 	* sieve-manage.el (sieve-manage-parse-capability-1): Loosely match OK
--- a/lisp/gnus/message.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/gnus/message.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1139,6 +1139,8 @@
 		 (string :tag "name")
 		 (sexp :tag "none" :format "%t" t)))
 
+;; This can be the name of a buffer, or a cons cell (FUNCTION . ARGS)
+;; for yanking the original buffer.
 (defvar message-reply-buffer nil)
 (defvar message-reply-headers nil
   "The headers of the current replied article.
@@ -1997,7 +1999,7 @@
 
 (defmacro message-with-reply-buffer (&rest forms)
   "Evaluate FORMS in the reply buffer, if it exists."
-  `(when (and message-reply-buffer
+  `(when (and (bufferp message-reply-buffer)
 	      (buffer-name message-reply-buffer))
      (with-current-buffer message-reply-buffer
        ,@forms)))
@@ -3179,7 +3181,7 @@
   "Widen the reply to include maximum recipients."
   (interactive)
   (let ((follow-to
-	 (and message-reply-buffer
+	 (and (bufferp message-reply-buffer)
 	      (buffer-name message-reply-buffer)
 	      (with-current-buffer message-reply-buffer
 		(message-get-reply-headers t)))))
@@ -3674,9 +3676,16 @@
 				      (point-max)))
 	      (delete-region (message-goto-body) (point-max)))
 	  (set (make-local-variable 'message-cite-reply-above) nil)))
-      (delete-windows-on message-reply-buffer t)
+      (if (bufferp message-reply-buffer)
+	  (delete-windows-on message-reply-buffer t))
       (push-mark (save-excursion
-		   (insert-buffer-substring message-reply-buffer)
+		   (cond
+		    ((bufferp message-reply-buffer)
+		     (insert-buffer-substring message-reply-buffer))
+		    ((and (consp message-reply-buffer)
+			  (functionp (car message-reply-buffer)))
+		     (apply (car message-reply-buffer)
+			    (cdr message-reply-buffer))))
 		   (unless (bolp)
 		     (insert ?\n))
 		   (point)))
@@ -6251,14 +6260,14 @@
 	nil
       mua)))
 
-(defun message-setup (headers &optional replybuffer actions
+;; YANK-ACTION, if non-nil, can be a buffer or a yank action of the
+;; form (FUNCTION . ARGS).
+(defun message-setup (headers &optional yank-action actions
 			      continue switch-function)
   (let ((mua (message-mail-user-agent))
-	subject to field yank-action)
+	subject to field)
     (if (not (and message-this-is-mail mua))
-	(message-setup-1 headers replybuffer actions)
-      (if replybuffer
-	  (setq yank-action (list 'insert-buffer replybuffer)))
+	(message-setup-1 headers yank-action actions)
       (setq headers (copy-sequence headers))
       (setq field (assq 'Subject headers))
       (when field
@@ -6275,7 +6284,11 @@
 				 (format "%s" (car item))
 				 (cdr item)))
 			      headers)
-		      continue switch-function yank-action actions)))))
+		      continue switch-function
+		      (if (bufferp yank-action)
+			  (list 'insert-buffer yank-action)
+			yank-action)
+		      actions)))))
 
 (defun message-headers-to-generate (headers included-headers excluded-headers)
   "Return a list that includes all headers from HEADERS.
@@ -6302,12 +6315,16 @@
 	(push header result)))
     (nreverse result)))
 
-(defun message-setup-1 (headers &optional replybuffer actions)
+(defun message-setup-1 (headers &optional yank-action actions)
   (dolist (action actions)
     (condition-case nil
 	(add-to-list 'message-send-actions
 		     `(apply ',(car action) ',(cdr action)))))
-  (setq message-reply-buffer replybuffer)
+  (setq message-reply-buffer
+	(if (and (consp yank-action)
+		 (eq (car yank-action) 'insert-buffer))
+	    (nth 1 yank-action)
+	  yank-action))
   (goto-char (point-min))
   ;; Insert all the headers.
   (mail-header-format
@@ -6438,7 +6455,7 @@
 to continue editing a message already being composed.  SWITCH-FUNCTION
 is a function used to switch to and display the mail buffer."
   (interactive)
-  (let ((message-this-is-mail t) replybuffer)
+  (let ((message-this-is-mail t))
     (unless (message-mail-user-agent)
       (message-pop-to-buffer
        ;; Search for the existing message buffer if `continue' is non-nil.
@@ -6449,15 +6466,11 @@
 		message-generate-new-buffers)))
 	 (message-buffer-name "mail" to))
        switch-function))
-    ;; FIXME: message-mail should do something if YANK-ACTION is not
-    ;; insert-buffer.
-    (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
-	 (setq replybuffer (nth 1 yank-action)))
     (message-setup
      (nconc
       `((To . ,(or to "")) (Subject . ,(or subject "")))
       (when other-headers other-headers))
-     replybuffer send-actions continue switch-function)
+     yank-action send-actions continue switch-function)
     ;; FIXME: Should return nil if failure.
     t))
 
--- a/lisp/gnus/nnmairix.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/gnus/nnmairix.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1104,7 +1104,7 @@
 
 (defun nnmairix-group-delete-recreate-this-group ()
   "Deletes and recreates group on the back end.
-You can use this function on nnmairix groups which continously
+You can use this function on nnmairix groups which continuously
 show wrong article counts."
   (interactive)
   (let* ((group (gnus-group-group-name))
--- a/lisp/mail/sendmail.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/mail/sendmail.el	Mon Jan 18 09:58:26 2010 +0900
@@ -1505,14 +1505,18 @@
   (interactive "P")
   (if mail-reply-action
       (let ((start (point))
-	    (original mail-reply-action))
+	    (original mail-reply-action)
+	    (omark (mark t)))
 	(and (consp original) (eq (car original) 'insert-buffer)
 	     (setq original (nth 1 original)))
 	(if (consp original)
-	    (apply (car original) (cdr original))
-	  ;; If the original message is in another window in the same frame,
-	  ;; delete that window to save screen space.
-	  ;; t means don't alter other frames.
+	    (progn
+	      ;; Call yank function, and set the mark if it doesn't.
+	      (apply (car original) (cdr original))
+	      (if (eq omark (mark t))
+		  (push-mark (point))))
+	  ;; If the original message is in another window in the same
+	  ;; frame, delete that window to save space.
 	  (delete-windows-on original t)
 	  (with-no-warnings
 	    ;; We really want this to set mark.
--- a/lisp/nxml/nxml-mode.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/nxml/nxml-mode.el	Mon Jan 18 09:58:26 2010 +0900
@@ -882,16 +882,17 @@
 (defun nxml-extend-after-change-region (start end pre-change-length)
   (unless nxml-degraded
     (setq nxml-last-fontify-end nil)
-
-    (nxml-with-degradation-on-error 'nxml-extend-after-change-region
-	(save-excursion
-	  (save-restriction
-	    (widen)
-	    (save-match-data
-	      (nxml-with-invisible-motion
-		(nxml-with-unmodifying-text-property-changes
-                  (nxml-extend-after-change-region1
-                   start end pre-change-length)))))))))
+    (let ((region (nxml-with-degradation-on-error
+		   'nxml-extend-after-change-region
+		   (save-excursion
+		     (save-restriction
+		       (widen)
+		       (save-match-data
+			 (nxml-with-invisible-motion
+			   (nxml-with-unmodifying-text-property-changes
+			     (nxml-extend-after-change-region1
+			      start end pre-change-length)))))))))
+      (if (consp region) region))))
 
 (defun nxml-extend-after-change-region1 (start end pre-change-length)
   (let* ((region (nxml-after-change1 start end pre-change-length))
--- a/lisp/pcmpl-unix.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/pcmpl-unix.el	Mon Jan 18 09:58:26 2010 +0900
@@ -85,7 +85,10 @@
   (while (pcomplete-here (funcall pcomplete-command-completion-function))))
 
 (defun pcmpl-unix-read-passwd-file (file)
-  "Return an alist correlating gids to group names in FILE."
+  "Return an alist correlating gids to group names in FILE.
+
+If FILE is in hashed format (as described in the OpenSSH
+documentation), this function returns nil."
   (let (names)
     (when (file-readable-p file)
       (with-temp-buffer
--- a/lisp/progmodes/ada-mode.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/progmodes/ada-mode.el	Mon Jan 18 09:58:26 2010 +0900
@@ -590,8 +590,25 @@
 ;; FIXME: make this customizable
 
 (defconst ada-ident-re
-  "\\(\\sw\\|[_.]\\)+"
-  "Regexp matching Ada (qualified) identifiers.")
+  "[[:alpha:]]\\(?:[_[:alnum:]]\\)*"
+  ;; [:alnum:] matches any multibyte word constituent, as well as
+  ;; Latin-1 letters and numbers. This allows __ and trailing _;
+  ;; someone (emacs bug#1919) proposed [^\W_] to fix that, but \W does
+  ;; _not_ mean "not word constituent" inside a character alternative.
+  "Regexp matching an Ada identifier.")
+
+(defconst ada-goto-label-re
+  (concat "<<" ada-ident-re ">>")
+  "Regexp matching a goto label.")
+
+(defconst ada-block-label-re
+  (concat ada-ident-re "[ \t\n]*:[^=]")
+  "Regexp matching a block label.
+Note that this also matches a variable declaration.")
+
+(defconst ada-label-re
+  (concat "\\(?:" ada-block-label-re "\\)\\|\\(?:" ada-goto-label-re "\\)")
+  "Regexp matching a goto or block label.")
 
 ;;  "with" needs to be included in the regexp, to match generic subprogram parameters
 ;;  Similarly, we put '[not] overriding' on the same line with 'procedure' etc.
@@ -678,10 +695,6 @@
 				"protected" "task") t) "\\>"))
   "Regexp for the start of a subprogram.")
 
-(defvar ada-named-block-re
-  "[ \t]*\\(\\sw\\|_\\)+[ \t]*:[^=]"
-  "Regexp of the name of a block or loop.")
-
 (defvar ada-contextual-menu-on-identifier nil
   "Set to true when the right mouse button was clicked on an identifier.")
 
@@ -2108,10 +2121,18 @@
 
 (defun ada-indent-newline-indent-conditional ()
   "Insert a newline and indent it.
-The original line is indented first if `ada-indent-after-return' is non-nil."
+The original line is re-indented if `ada-indent-after-return' is non-nil."
   (interactive "*")
-  (if ada-indent-after-return (ada-indent-current))
+  ;; If at end of buffer (entering brand new code), some indentation
+  ;; fails.  For example, a block label requires whitespace following
+  ;; the : to be recognized.  So we do the newline first, then
+  ;; go back and indent the original line.
   (newline)
+  (if ada-indent-after-return
+      (progn
+        (forward-char -1)
+        (ada-indent-current)
+        (forward-char 1)))
   (ada-indent-current))
 
 (defun ada-justified-indent-current ()
@@ -2335,8 +2356,8 @@
 		      (progn
 			(goto-char (car match-cons))
 			(save-excursion
-			  (beginning-of-line)
-			  (if (looking-at ada-named-block-re)
+			  (back-to-indentation)
+			  (if (looking-at ada-block-label-re)
 			      (setq label (- ada-label-indent))))))))
 
 	    ;; found 'record' =>
@@ -2648,8 +2669,9 @@
      ;; label
      ;;---------------------------------
 
-     ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]")
+     ((looking-at ada-label-re)
       (if (ada-in-decl-p)
+          ;; ada-block-label-re matches variable declarations
 	  (ada-indent-on-previous-lines nil orgpoint orgpoint)
 	(append (ada-indent-on-previous-lines nil orgpoint orgpoint)
 		'(ada-label-indent))))
@@ -2674,9 +2696,10 @@
     (if (ada-in-paramlist-p)
 	(ada-get-indent-paramlist)
 
-      ;; move to beginning of current statement
+      ;; Move to beginning of current statement. If already at a
+      ;; statement start, move to beginning of enclosing statement.
       (unless nomove
-	(ada-goto-stmt-start))
+	(ada-goto-stmt-start t))
 
       ;; no beginning found => don't change indentation
       (if (and (eq oldpoint (point))
@@ -2702,6 +2725,12 @@
 	 ((looking-at ada-block-start-re)
 	  (ada-get-indent-block-start orgpoint))
 	 ;;
+	 ((looking-at ada-block-label-re) ; also variable declaration
+	  (ada-get-indent-block-label orgpoint))
+	 ;;
+	 ((looking-at ada-goto-label-re)
+	  (ada-get-indent-goto-label orgpoint))
+	 ;;
 	 ((looking-at "\\(sub\\)?type\\>")
 	  (ada-get-indent-type orgpoint))
 	 ;;
@@ -2717,17 +2746,8 @@
 	 ((looking-at "when\\>")
 	  (ada-get-indent-when orgpoint))
 	 ;;
-	 ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]")
-	  (ada-get-indent-label orgpoint))
-	 ;;
 	 ((looking-at "separate\\>")
 	  (ada-get-indent-nochange))
-
-	 ;; A label
-	 ((looking-at "<<")
-	  (list (+ (save-excursion (back-to-indentation) (point))
-		   (- ada-label-indent))))
-
 	 ;;
 	 ((looking-at "with\\>\\|use\\>")
 	  ;;  Are we still in that statement, or are we in fact looking at
@@ -2960,6 +2980,10 @@
 		(car (ada-search-ignore-string-comment "\\<type\\>" t)))
 	      'ada-indent)))
 
+     ;; Special case for label:
+     ((looking-at ada-block-label-re)
+      (list (- (save-excursion (back-to-indentation) (point)) ada-label-indent) 'ada-indent))
+
      ;; nothing follows the block-start
      (t
       (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))))
@@ -3055,10 +3079,10 @@
 	(list (save-excursion (back-to-indentation) (point))
 	      'ada-broken-decl-indent))
 
-       ;;  This one is called in every over case when indenting a line at the
+       ;;  This one is called in every other case when indenting a line at the
        ;;  top level
        (t
-	(if (looking-at ada-named-block-re)
+	(if (looking-at (concat "[ \t]*" ada-block-label-re))
 	    (setq label (- ada-label-indent))
 
 	  (let (p)
@@ -3087,7 +3111,7 @@
 	  (list (+ (save-excursion (back-to-indentation) (point)) label)
 		'ada-broken-indent)))))))
 
-(defun ada-get-indent-label (orgpoint)
+(defun ada-get-indent-block-label (orgpoint)
   "Calculate the indentation when before a label or variable declaration.
 ORGPOINT is the limit position used in the calculation."
   (let ((match-cons nil)
@@ -3119,6 +3143,16 @@
      (t
       (list cur-indent '(- ada-label-indent))))))
 
+(defun ada-get-indent-goto-label (orgpoint)
+  "Calculate the indentation when at a goto label."
+  (search-forward ">>")
+  (ada-goto-next-non-ws)
+  (if (>= (point) orgpoint)
+      ;; labeled statement is the one we need to indent
+      (list (- (point) ada-label-indent))
+    ;; else indentation is indent for labeled statement
+    (ada-indent-on-previous-lines t orgpoint)))
+
 (defun ada-get-indent-loop (orgpoint)
   "Calculate the indentation when just before a loop or a for ... use.
 ORGPOINT is the limit position used in the calculation."
@@ -3127,8 +3161,8 @@
 
 	;; If looking at a named block, skip the label
 	(label (save-excursion
-		 (beginning-of-line)
-		 (if (looking-at ada-named-block-re)
+		 (back-to-indentation)
+		 (if (looking-at ada-block-label-re)
 		     (- ada-label-indent)
 		   0))))
 
@@ -3286,7 +3320,7 @@
 ;; -- searching and matching
 ;; -----------------------------------------------------------
 
-(defun ada-goto-stmt-start ()
+(defun ada-goto-stmt-start (&optional ignore-goto-label)
   "Move point to the beginning of the statement that point is in or after.
 Return the new position of point.
 As a special case, if we are looking at a closing parenthesis, skip to the
@@ -3304,7 +3338,7 @@
 	  (progn
 	    (unless (save-excursion
 		      (goto-char (cdr match-dat))
-		      (ada-goto-next-non-ws orgpoint))
+		      (ada-goto-next-non-ws orgpoint ignore-goto-label))
 	      ;;
 	      ;; nothing follows => it's the end-statement directly in
 	      ;;                    front of point => search again
@@ -3326,7 +3360,7 @@
 	(goto-char (point-min))
 	;;
 	;; skip to the very first statement, if there is one
-	  ;;
+	;;
 	(unless (ada-goto-next-non-ws orgpoint)
 	  (goto-char orgpoint))))
     (point)))
@@ -3388,18 +3422,25 @@
       nil)))
 
 
-(defun ada-goto-next-non-ws (&optional limit)
-  "Skip white spaces, newlines and comments to next non-ws character.
+(defun ada-goto-next-non-ws (&optional limit skip-goto-label)
+  "Skip to next non-whitespace character.
+Skips spaces, newlines and comments, and possibly goto labels.
+Return `point' if moved, nil if not.
 Stop the search at LIMIT.
 Do not call this function from within a string."
   (unless limit
     (setq limit (point-max)))
   (while (and (<= (point) limit)
-	      (progn (forward-comment 10000)
-		     (if (and (not (eobp))
-			      (save-excursion (forward-char 1)
-					      (ada-in-string-p)))
-			 (progn (forward-sexp 1) t)))))
+	      (or (progn (forward-comment 10000)
+                         (if (and (not (eobp))
+                                  (save-excursion (forward-char 1)
+                                                  (ada-in-string-p)))
+                             (progn (forward-sexp 1) t)))
+                  (and skip-goto-label
+                       (looking-at ada-goto-label-re)
+                       (progn
+                         (goto-char (match-end 0))
+                         t)))))
   (if (< (point) limit)
       (point)
     nil)
@@ -3426,9 +3467,7 @@
     (unless backward
       (skip-syntax-forward "w"))
     (if (setq match-cons
-	     (if backward
-		 (ada-search-ignore-string-comment "\\w" t nil t)
-	       (ada-search-ignore-string-comment "\\w" nil nil t)))
+              (ada-search-ignore-string-comment "\\w" backward nil t))
 	;;
 	;; move to the beginning of the word found
 	;;
--- a/lisp/startup.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/startup.el	Mon Jan 18 09:58:26 2010 +0900
@@ -758,7 +758,8 @@
       (pop args)))
 
   (let ((done nil)
-	(args (cdr command-line-args)))
+	(args (cdr command-line-args))
+	display-arg)
 
     ;; Figure out which user's init file to load,
     ;; either from the environment or from the options.
@@ -794,6 +795,11 @@
 		(setq argval nil
                       argi orig-argi)))))
 	(cond
+	 ;; The --display arg is handled partly in C, partly in Lisp.
+	 ;; When it shows up here, we just put it back to be handled
+	 ;; by `command-line-1'.
+	 ((member argi '("-d" "-display"))
+	  (setq display-arg (list argi (pop args))))
 	 ((member argi '("-Q" "-quick"))
 	  (setq init-file-user nil
 		site-run-file nil
@@ -813,8 +819,6 @@
 	  (setq init-file-debug t))
 	 ((equal argi "-iconic")
 	  (push '(visibility . icon) initial-frame-alist))
-	 ((member argi '("-icon-type" "-i" "-itype"))
-	  (push '(icon-type . t) default-frame-alist))
 	 ((member argi '("-nbc" "-no-blinking-cursor"))
 	  (setq no-blinking-cursor t))
 	 ;; Push the popped arg back on the list of arguments.
@@ -825,6 +829,9 @@
 	(and argval
 	     (error "Option `%s' doesn't allow an argument" argi))))
 
+    ;; Re-attach the --display arg.
+    (and display-arg (setq args (append display-arg args)))
+
     ;; Re-attach the program name to the front of the arg list.
     (and command-line-args
          (setcdr command-line-args args)))
--- a/lisp/textmodes/artist.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/textmodes/artist.el	Mon Jan 18 09:58:26 2010 +0900
@@ -870,7 +870,7 @@
   is done.  Arguments and return values for this funcion are
   described below.
 DRAW-HOW defines the kind of shape.  The kinds of shapes are:
-  `artist-do-continously'  -- Do drawing operation continously,
+  `artist-do-continously'  -- Do drawing operation continuously,
                               as long as the mouse button is held down.
   `artist-do-poly'         -- Do drawing operation many times.
   1                        -- Do drawing operation only once.
@@ -1477,7 +1477,7 @@
 ;
 
 (defun artist-compute-popup-menu-table (menu-table)
-  "Create a menu from from MENU-TABLE data.
+  "Create a menu from MENU-TABLE data.
 The returned value is suitable for the `x-popup-menu' function."
   (cons "Artist menu"
 	(artist-compute-popup-menu-table-sub menu-table)))
@@ -3879,8 +3879,8 @@
 ;;
 
 (defun artist-key-undraw-continously (x y)
-  "Undraw current continous shape with point at X, Y."
-  ;; No undraw-info for continous shapes
+  "Undraw current continuous shape with point at X, Y."
+  ;; No undraw-info for continuous shapes
   nil)
 
 (defun artist-key-undraw-poly (x y)
@@ -3937,7 +3937,7 @@
 ;; user has released the button, so the timer will always be cancelled
 ;; at that point.
 (defun artist-key-draw-continously (x y)
-  "Draw current continous shape at X,Y."
+  "Draw current continuous shape at X,Y."
   (let ((draw-fn   (artist-go-get-draw-fn-from-symbol artist-curr-go)))
     (setq artist-key-shape (artist-funcall draw-fn x y))))
 
@@ -4018,7 +4018,7 @@
 ;;
 
 (defun artist-key-do-continously-continously (x y)
-  "Update current continous shape at X,Y."
+  "Update current continuous shape at X,Y."
   (let ((draw-fn   (artist-go-get-draw-fn-from-symbol artist-curr-go)))
     (artist-funcall draw-fn x y)))
 
@@ -4045,7 +4045,7 @@
 
 (defun artist-key-do-continously-1point (x y)
   "Update current 1-point shape at X,Y."
-  ;; Nothing to do continously for operations
+  ;; Nothing to do continuously for operations
   ;; where we have only one input point
   nil)
 
@@ -4094,8 +4094,8 @@
 
 
 (defun artist-key-set-point-continously (x y)
-  "Set point for current continous shape at X,Y."
-  ;; Maybe set arrow-points for continous shapes
+  "Set point for current continuous shape at X,Y."
+  ;; Maybe set arrow-points for continuous shapes
   (let ((arrow-pred   (artist-go-get-arrow-pred-from-symbol artist-curr-go))
 	(arrow-set-fn (artist-go-get-arrow-set-fn-from-symbol artist-curr-go))
 	(init-fn      (artist-go-get-init-fn-from-symbol artist-curr-go))
@@ -4914,7 +4914,7 @@
 
 (defun artist-mouse-draw-continously (ev)
   "Generic function for shapes that require 1 point as input.
-Operation is done continously while the mouse button is hold down.
+Operation is done continuously while the mouse button is hold down.
 The event, EV, is the mouse event."
   (let* ((unshifted    (artist-go-get-symbol-shift artist-curr-go nil))
 	 (shifted      (artist-go-get-symbol-shift artist-curr-go t))
@@ -5395,8 +5395,8 @@
 ;; 1.   If your new drawing mode falls into one of the following
 ;;      categories, goto point 2, otherwise goto point 3.
 ;;
-;;         - Modes where the shapes are drawn continously, as long as
-;;           the mouse button is held down (continous modes).
+;;         - Modes where the shapes are drawn continuously, as long as
+;;           the mouse button is held down (continuous modes).
 ;;           Example: the erase-char mode, the pen and pen-line modes.
 ;;
 ;;         - Modes where the shape is made up of from 2 points to an
@@ -5408,7 +5408,7 @@
 ;;           Example: lines, rectangles
 ;;
 ;;         - Modes where the shape is made up of 1 point (1-point
-;;           modes). This mode differs from the continous modes in
+;;           modes). This mode differs from the continuous modes in
 ;;           that the shape is drawn only once when the mouse button
 ;;           is pressed.
 ;;           Examples: paste, a flood-fill, vaporize modes
@@ -5426,7 +5426,7 @@
 ;;    For each of the cases below, the arguments given to the init-fn,
 ;;    prep-fill-fn, arrow-set-fn and exit-fn are stated.
 ;;
-;;    If your mode matches the continous mode or the 1-point mode:
+;;    If your mode matches the continuous mode or the 1-point mode:
 ;;
 ;;      a. Create a draw-function that draws your shape. Your function
 ;;         must take x and y as arguments. The return value is not
@@ -5538,8 +5538,8 @@
 ;;         - artist-key-set-point-xxx for setting a point in the
 ;;           mode, to be called from `artist-key-set-point-common'.
 ;;
-;;         - artist-key-do-continously-xxx to be called from
-;;           `artist-key-do-continously-common' whenever the user
+;;         - artist-key-do-continuously-xxx to be called from
+;;           `artist-key-do-continuously-common' whenever the user
 ;;           moves around.
 ;;
 ;;         As for the artist-mouse-draw-xxx, these two functions must
--- a/lisp/vc-dir.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/vc-dir.el	Mon Jan 18 09:58:26 2010 +0900
@@ -874,7 +874,10 @@
             (let ((ddir default-directory))
               (when (vc-string-prefix-p ddir file)
                 (if (file-directory-p file)
-                    (vc-dir-resync-directory-files file)
+		    (progn
+		      (vc-dir-resync-directory-files file)
+		      (ewoc-set-hf vc-ewoc
+				   (vc-dir-headers vc-dir-backend default-directory) ""))
                   (let ((state (vc-dir-recompute-file-state file ddir)))
                     (vc-dir-update
                      (list state)
--- a/lisp/vc-dispatcher.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/vc-dispatcher.el	Mon Jan 18 09:58:26 2010 +0900
@@ -320,11 +320,14 @@
 	  (setq squeezed (nconc squeezed files)))
 	(let ((exec-path (append vc-path exec-path))
 	      ;; Add vc-path to PATH for the execution of this command.
+	      ;; Also, since some functions need to parse the output
+	      ;; from external commands, set LC_MESSAGES to C.
 	      (process-environment
 	       (cons (concat "PATH=" (getenv "PATH")
 			     path-separator
 			     (mapconcat 'identity vc-path path-separator))
-		     process-environment))
+		     (cons "LC_MESSAGES=C"
+			   process-environment)))
 	      (w32-quote-process-args t))
 	  (if (eq okstatus 'async)
 	      ;; Run asynchronously.
--- a/lisp/vc.el	Mon Jan 18 09:58:15 2010 +0900
+++ b/lisp/vc.el	Mon Jan 18 09:58:26 2010 +0900
@@ -791,13 +791,23 @@
 
 (defmacro with-vc-properties (files form settings)
   "Execute FORM, then maybe set per-file properties for FILES.
+If any of FILES is actually a directory, then do the same for all
+buffers for files in that directory.
 SETTINGS is an association list of property/value pairs.  After
 executing FORM, set those properties from SETTINGS that have not yet
 been updated to their corresponding values."
   (declare (debug t))
-  `(let ((vc-touched-properties (list t)))
+  `(let ((vc-touched-properties (list t))
+	 (flist nil))
+     (dolist (file ,files)
+       (if (file-directory-p file)
+	   (dolist (buffer (buffer-list))
+	     (let ((fname (buffer-file-name buffer)))
+	       (when (and fname (vc-string-prefix-p file fname))
+		 (push fname flist))))
+	 (push file flist)))
      ,form
-     (dolist (file ,files)
+     (dolist (file flist)
        (dolist (setting ,settings)
          (let ((property (car setting)))
            (unless (memq property vc-touched-properties)
--- a/src/ChangeLog	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/ChangeLog	Mon Jan 18 09:58:26 2010 +0900
@@ -1,3 +1,24 @@
+2010-01-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* xterm.c (event_handler_gdk): Block input (Bug#5037).
+
+2010-01-16  Chong Yidong  <cyd@stupidchicken.com>
+
+	* emacs.c (standard_args): Adjust arg priorities to reflect how
+	they are processed in startup.el.
+
+2010-01-16  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* Makefile.in (lisp, shortlisp): Update.
+
+2010-01-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* xterm.c (x_term_init): Instead of inhibiting GC while running Lisp
+	code, link the new kboard into all_kboard before running Lisp code,
+	and protect the new terminal with GCPRO (Bug#5365).
+	(x_term_init): Remove unused var `atom'.
+	(x_delete_display, x_delete_terminal): Remove unused var `i'.
+
 2010-01-15  Jan Djärv  <jan.h.d@swipnet.se>
 
 	* xfns.c (x_get_current_desktop, x_get_desktop_workarea): New functions.
--- a/src/Makefile.in	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/Makefile.in	Mon Jan 18 09:58:26 2010 +0900
@@ -736,13 +736,13 @@
 	${lispsource}emacs-lisp/map-ynp.elc \
 	${lispsource}menu-bar.elc \
 	${lispsource}international/mule.elc \
-	${lispsource}international/mule-conf.el \
+	${lispsource}international/mule-conf.elc \
 	${lispsource}international/mule-cmds.elc \
 	${lispsource}international/characters.elc \
 	${lispsource}international/charprop.el \
 	${lispsource}case-table.elc \
-	${lispsource}language/chinese.el \
-	${lispsource}language/cyrillic.el \
+	${lispsource}language/chinese.elc \
+	${lispsource}language/cyrillic.elc \
 	${lispsource}language/indian.elc \
 	${lispsource}language/sinhala.el \
 	${lispsource}language/english.el \
@@ -760,7 +760,7 @@
 	${lispsource}language/tai-viet.el \
 	${lispsource}language/thai.el \
 	${lispsource}language/tibetan.elc \
-	${lispsource}language/vietnamese.el \
+	${lispsource}language/vietnamese.elc \
 	${lispsource}language/misc-lang.el \
 	${lispsource}language/utf-8-lang.el \
 	${lispsource}language/georgian.el \
@@ -829,12 +829,12 @@
 	../lisp/emacs-lisp/map-ynp.elc \
 	../lisp/env.elc \
 	../lisp/international/mule.elc \
-	../lisp/international/mule-conf.el \
+	../lisp/international/mule-conf.elc \
 	../lisp/international/mule-cmds.elc \
 	../lisp/international/characters.elc \
 	../lisp/case-table.elc \
-	../lisp/language/chinese.el \
-	../lisp/language/cyrillic.el \
+	../lisp/language/chinese.elc \
+	../lisp/language/cyrillic.elc \
 	../lisp/language/indian.elc \
 	../lisp/language/sinhala.el \
 	../lisp/language/english.el \
@@ -852,7 +852,7 @@
 	../lisp/language/tai-viet.el \
 	../lisp/language/thai.el \
 	../lisp/language/tibetan.elc \
-	../lisp/language/vietnamese.el \
+	../lisp/language/vietnamese.elc \
 	../lisp/language/misc-lang.el \
 	../lisp/language/utf-8-lang.el \
 	../lisp/language/georgian.el \
--- a/src/atimer.h	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/atimer.h	Mon Jan 18 09:58:26 2010 +0900
@@ -43,7 +43,7 @@
   /* Timer is ripe at now plus an offset.  */
   ATIMER_RELATIVE,
 
-  /* Timer runs continously.  */
+  /* Timer runs continuously.  */
   ATIMER_CONTINUOUS
 };
 
--- a/src/emacs.c	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/emacs.c	Mon Jan 18 09:58:26 2010 +0900
@@ -1869,7 +1869,7 @@
   /* -d must come last before the options handled in startup.el.  */
   { "-d", "--display", 60, 1 },
   { "-display", 0, 60, 1 },
-  /* Now for the options handled in startup.el.  */
+  /* Now for the options handled in `command-line' (startup.el).  */
   { "-Q", "--quick", 55, 0 },
   { "-quick", 0, 55, 0 },
   { "-q", "--no-init-file", 50, 0 },
@@ -1878,10 +1878,12 @@
   { "-u", "--user", 30, 1 },
   { "-user", 0, 30, 1 },
   { "-debug-init", "--debug-init", 20, 0 },
-  { "-nbi", "--no-bitmap-icon", 15, 0 },
   { "-iconic", "--iconic", 15, 0 },
   { "-D", "--basic-display", 12, 0},
   { "-basic-display", 0, 12, 0},
+  { "-nbc", "--no-blinking-cursor", 12, 0 },
+  /* Now for the options handled in `command-line-1' (startup.el).  */
+  { "-nbi", "--no-bitmap-icon", 10, 0 },
   { "-bg", "--background-color", 10, 1 },
   { "-background", 0, 10, 1 },
   { "-fg", "--foreground-color", 10, 1 },
@@ -1891,7 +1893,6 @@
   { "-ib", "--internal-border", 10, 1 },
   { "-ms", "--mouse-color", 10, 1 },
   { "-cr", "--cursor-color", 10, 1 },
-  { "-nbc", "--no-blinking-cursor", 10, 0 },
   { "-fn", "--font", 10, 1 },
   { "-font", 0, 10, 1 },
   { "-fs", "--fullscreen", 10, 0 },
--- a/src/xdisp.c	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/xdisp.c	Mon Jan 18 09:58:26 2010 +0900
@@ -1,7 +1,8 @@
 /* Display generation from window structure and buffer text.
    Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
                  1997, 1998, 1999, 2000, 2001, 2002, 2003,
-                 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+                 2004, 2005, 2006, 2007, 2008, 2009, 2010
+                 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
--- a/src/xterm.c	Mon Jan 18 09:58:15 2010 +0900
+++ b/src/xterm.c	Mon Jan 18 09:58:26 2010 +0900
@@ -5797,6 +5797,7 @@
 {
   XEvent *xev = (XEvent *) gxev;
 
+  BLOCK_INPUT;
   if (current_count >= 0)
     {
       struct x_display_info *dpyinfo;
@@ -5807,23 +5808,27 @@
       /* Filter events for the current X input method.
          GTK calls XFilterEvent but not for key press and release,
          so we do it here.  */
-      if (xev->type == KeyPress || xev->type == KeyRelease)
-        if (dpyinfo && x_filter_event (dpyinfo, xev))
-          return GDK_FILTER_REMOVE;
+      if ((xev->type == KeyPress || xev->type == KeyRelease)
+	  && dpyinfo
+	  && x_filter_event (dpyinfo, xev))
+	{
+	  UNBLOCK_INPUT;
+	  return GDK_FILTER_REMOVE;
+	}
 #endif
 
       if (! dpyinfo)
         current_finish = X_EVENT_NORMAL;
       else
-	{
-	  current_count +=
-	    handle_one_xevent (dpyinfo, xev, &current_finish,
-			       current_hold_quit);
-	}
+	current_count +=
+	  handle_one_xevent (dpyinfo, xev, &current_finish,
+			     current_hold_quit);
     }
   else
     current_finish = x_dispatch_event (xev, xev->xany.display);
 
+  UNBLOCK_INPUT;
+
   if (current_finish == X_EVENT_GOTO_OUT || current_finish == X_EVENT_DROP)
     return GDK_FILTER_REMOVE;
 
@@ -9821,7 +9826,7 @@
 {
   Pixmap icon_pixmap, icon_mask;
 
-#ifndef USE_X_TOOLKIT
+#if !defined USE_X_TOOLKIT && !defined USE_GTK
   Window window = FRAME_OUTER_WINDOW (f);
 #endif
 
@@ -10076,7 +10081,6 @@
     int argc;
     char *argv[NUM_ARGV];
     char **argv2 = argv;
-    GdkAtom atom;
     guint id;
 #ifndef HAVE_GTK_MULTIDISPLAY
     if (!EQ (Vinitial_window_system, Qx))
@@ -10215,25 +10219,36 @@
 	terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
 	init_kboard (terminal->kboard);
 	terminal->kboard->Vwindow_system = Qx;
+
+	/* Add the keyboard to the list before running Lisp code (via
+           Qvendor_specific_keysyms below), since these are not traced
+           via terminals but only through all_kboards.  */
+	terminal->kboard->next_kboard = all_kboards;
+	all_kboards = terminal->kboard;
+
 	if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
 	  {
 	    char *vendor = ServerVendor (dpy);
-	    /* Temporarily hide the partially initialized terminal,
-	       but make sure it doesn't get garbage collected.  */
-	    int count = inhibit_garbage_collection ();
+
+	    /* Protect terminal from GC before removing it from the
+	       list of terminals.  */
+	    struct gcpro gcpro1;
+	    Lisp_Object gcpro_term;
+	    XSETTERMINAL (gcpro_term, terminal);
+	    GCPRO1 (gcpro_term);
+
+	    /* Temporarily hide the partially initialized terminal.  */
 	    terminal_list = terminal->next_terminal;
 	    UNBLOCK_INPUT;
 	    terminal->kboard->Vsystem_key_alist
 	      = call1 (Qvendor_specific_keysyms,
 		       vendor ? build_string (vendor) : empty_unibyte_string);
 	    BLOCK_INPUT;
-	    unbind_to (count, Qnil);
 	    terminal->next_terminal = terminal_list;
  	    terminal_list = terminal;
+	    UNGCPRO;
 	  }
 
-	terminal->kboard->next_kboard = all_kboards;
-	all_kboards = terminal->kboard;
 	/* Don't let the initial kboard remain current longer than necessary.
 	   That would cause problems if a file loaded on startup tries to
 	   prompt in the mini-buffer.  */
@@ -10582,7 +10597,6 @@
 x_delete_display (dpyinfo)
      struct x_display_info *dpyinfo;
 {
-  int i;
   struct terminal *t;
 
   /* Close all frames and delete the generic struct terminal for this
@@ -10734,7 +10748,6 @@
 x_delete_terminal (struct terminal *terminal)
 {
   struct x_display_info *dpyinfo = terminal->display_info.x;
-  int i;
 
   /* Protect against recursive calls.  delete_frame in
      delete_terminal calls us back when it deletes our last frame.  */