changeset 107012:64f5a4a297e8

Merge from trunk
author Jason Rumney <jasonr@gnu.org>
date Thu, 21 Jan 2010 07:04:21 +0800
parents b8a94cebfcbd (current diff) 89b4f7566280 (diff)
children ef5fafbceb01
files admin/notes/commits admin/notes/cvslogs admin/revdiff
diffstat 86 files changed, 1020 insertions(+), 600 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Sat Jan 16 07:16:26 2010 +0800
+++ b/admin/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -1,3 +1,8 @@
+2010-01-20  Glenn Morris  <rgm@gnu.org>
+
+	* revdiff: Remove file that only works with CVS, and isn't really
+	needed with Bazaar (given the in-built revision options of bzr diff).
+
 2010-01-12  Glenn Morris  <rgm@gnu.org>
 
 	* emacs-pretesters, make-announcement: Use bug-gnu-emacs rather
--- a/admin/notes/BRANCH	Sat Jan 16 07:16:26 2010 +0800
+++ b/admin/notes/BRANCH	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/admin/notes/copyright	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ /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/admin/revdiff	Sat Jan 16 07:16:26 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#! /usr/bin/perl
-
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-#   2010  Free Software Foundation, Inc.
-#
-# This file is part of GNU Emacs.
-
-# GNU Emacs is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# GNU Emacs is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-use File::Basename;
-
-if (@ARGV < 3)
-{
-  print <<USAGE;
-revdiff FILE OLD NEW
-
-Get a diff of FILE between revisions OLD and NEW.  Store the
-diff in a file named FILE-OLD-NEW.diff.
-
-If OLD is `-' use FILE's current revision for OLD.  If OLD is
-`-<number>', use the Nth revision before the current one for OLD.
-
-If NEW is +<number> or -<number>, build diffs between revisions OLD
-and OLD +/- <number>.
-
-Examples:
-
-revdiff FILE - -1      get the latest change of FILE
-revdiff FILE -1 +1     also gets the latest change of FILE
-revdiff FILE 1.500 +2  get diffs 1.500-1.501 and 1.501-1.502.
-
-USAGE
-  exit 1;
-}
-
-$file = shift @ARGV;
-$old  = shift @ARGV;
-
-sub diffit
-{
-  my ($old, $new) = @_;
-  print "cvs diff -r$old -r$new $file >$file-$old-$new.diff\n";
-  system "cvs diff -r$old -r$new $file >$file-$old-$new.diff";
-}
-
-sub current_revision ($)
-{
-  my ($file) = @_;
-  my $dir = dirname ($file);
-  my $base = basename ($file);
-  my $entries = "$dir/CVS/Entries";
-  die "Can't find $entries" unless -f $entries;
-  open (IN, "<$entries") or die "Cannot open $entries";
-  my $rev;
-  while ($line = <IN>)
-    {
-      if ($line =~ m,/$base/([^/]+),)
-	{
-	  $rev = $1;
-	  break;
-	}
-    }
-  die "Cannot determine current revision of $file" unless $rev;
-  close (IN);
-  return $rev;
-}
-
-if ($old eq "-")
-  {
-    $old = current_revision ($file);
-  }
-elsif ($old =~ /^-(\d+)$/)
-  {
-    my $offset = $1;
-    $old = current_revision ($file);
-    die "Internal error" unless $old =~ /(.*)\.(\d+)$/;
-    my $minor = $2 - $offset;
-    $old = sprintf ("%d.%d", $1, $minor);
-  }
-
-while (@ARGV)
-  {
-    my $new = shift @ARGV;
-    if ($new =~ /^[+]\d+$/)
-      {
-	my $n = $new;
-	for ($i = 0; $i < $n; ++$i)
-	  {
-	    unless ($old =~ /(.*)\.(\d+)$/)
-	      {
-		die "Internal error";
-	      }
-	    my $j = $2 + 1;
-	    $new = "$1.$j";
-	    diffit ($old, $new);
-	    $old = $new;
-	  }
-      }
-    elsif ($new =~ /^[-]\d+$/)
-      {
-	my $n = - $new;
-	for ($i = 0; $i < $n; ++$i)
-	  {
-	    unless ($old =~ /(.*)\.(\d+)$/)
-	      {
-		die "Internal error";
-	      }
-	    my $j = $2 - 1;
-	    $new = "$1.$j";
-	    diffit ($new, $old);
-	    $old = $new;
-	  }
-      }
-    else
-      {
-	diffit ($old, $new);
-	$old = $new;
-      }
-  }
-
-# Local Variables:
-# mode: cperl
-# End:
-
-# arch-tag: 2798b20d-c7f2-4c78-8378-7bb529c36a09
--- a/doc/lispref/ChangeLog	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/lispref/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/lispref/elisp.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/lispref/two.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -1,3 +1,37 @@
+2010-01-18  Juanma Barranquero  <lekktu@gmail.com>
+
+	* ada-mode.texi (Project File Overview): Fix typo.
+
+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/ada-mode.texi	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/ada-mode.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -396,7 +396,7 @@
 src_dir=/Projects/my_project/src_2
 @end example
 
-Some variables (like @code{src_dir}) are lists; multiple occurances
+Some variables (like @code{src_dir}) are lists; multiple occurrences
 are concatenated.
 
 There must be no space between the variable name and ``='', and no
--- a/doc/misc/calc.texi	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/calc.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/ede.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/eieio.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/faq.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/org.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/semantic.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/doc/misc/woman.texi	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/etc/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/etc/srecode/doc-cpp.srt	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/etc/srecode/doc-default.srt	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/etc/srecode/doc-java.srt	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lib-src/etags.c	Thu Jan 21 07:04:21 2010 +0800
@@ -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/lib-src/make-docfile.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/lib-src/make-docfile.c	Thu Jan 21 07:04:21 2010 +0800
@@ -240,10 +240,10 @@
   /* A keyword we look for at the beginning of lines.  If found, it is
      not copied, and SAW_KEYWORD is set to true.  */
   char *keyword;
-  /* The current point we've reached in an occurance of KEYWORD in
+  /* The current point we've reached in an occurrence of KEYWORD in
      the input stream.  */
   char *cur_keyword_ptr;
-  /* Set to true if we saw an occurance of KEYWORD.  */
+  /* Set to true if we saw an occurrence of KEYWORD.  */
   int saw_keyword;
 };
 
@@ -354,7 +354,7 @@
    PRINTFLAG is positive, output string contents to outfile.  If it is
    negative, store contents in buf.  Convert escape sequences \n and
    \t to newline and tab; discard \ followed by newline.
-   If SAW_USAGE is non-zero, then any occurances of the string `usage:'
+   If SAW_USAGE is non-zero, then any occurrences of the string `usage:'
    at the beginning of a line will be removed, and *SAW_USAGE set to
    true if any were encountered.  */
 
--- a/lisp/ChangeLog	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -1,3 +1,209 @@
+2010-01-20  Glenn Morris  <rgm@gnu.org>
+
+	* indent.el (tab-always-indent): Fix custom-type.
+
+2010-01-19  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-defs.el: Fix bug#5395: typing '#' in an empty
+	buffer throws "args out of range".
+	(c-set-cpp-delimiters, c-clear-cpp-delimiters): Check for EOB
+	playing the role of delimiter.
+
+2010-01-18  Stephen Leake  <stephen_leake@member.fsf.org>
+
+	* lisp/progmodes/ada-mode.el: Fix bug#5400.
+	(ada-matching-decl-start-re): Move into ada-goto-decl-start.
+	(ada-goto-decl-start): Rename from ada-goto-matching-decl-start; callers
+	changed.  Delete RECURSIVE parameter; never used.  Improve doc string.
+	Improve comments in "is" portion.  Handle null procedure declaration.
+	(ada-move-to-end): Improve doc string.
+
+2010-01-18  Óscar Fuentes  <ofv@wanadoo.es>
+
+	* ido.el (ido-cur-list): Initialize to nil.
+	Remove obsolete information from commentary.
+	(ido-choice-list): Initialize to nil.
+	(ido-get-bufname): Reject minibuffers.
+	(ido-make-buffer-list): If "default" is a nonexistent
+	buffer, ignore it, as per the function's comment.
+	(ido-kill-buffer-internal): New function.
+	(ido-kill-buffer-at-head): Use it.
+	(ido-visit-buffer): Likewise.
+
+2010-01-18  Chong Yidong  <cyd@stupidchicken.com>
+
+	* calendar/time-date.el (date-to-time): Doc fix (Bug#5408).
+
+2010-01-18  Juanma Barranquero  <lekktu@gmail.com>
+
+	* cedet/ede/locate.el (ede-locate-file-in-project)
+	(ede-locate-file-in-project-impl): Fix typos in docstrings.
+	(ede-enable-locate-on-project): Fix typos in error messages.
+
+	* cedet/semantic/util-modes.el (semantic-unmatched-syntax-face)
+	(semantic-stickyfunc-old-hlf, semantic-stickyfunc-header-line-format)
+	(semantic-stickyfunc-sticky-classes, semantic-highlight-func-mode-setup)
+	(semantic-stickyfunc-fetch-stickyline): Fix typos in docstrings.
+	(semantic-stickyfunc-popup-menu, semantic-highlight-func-popup-menu):
+	Fix typos in menu help.
+
+	* emacs-lisp/chart.el (chart-file-count, chart-rmail-from):
+	Fix typos in chart titles.
+
+	* whitespace.el (whitespace-style, global-whitespace-newline-mode):
+	* cedet/semantic.el (semantic-require-version, semantic--buffer-cache)
+	(semantic-unmatched-syntax-cache-check, semantic-unmatched-syntax-hook)
+	(semantic--before-fetch-tags-hook, semantic-new-buffer-fcn-was-run)
+	(semantic--umatched-syntax-needs-refresh-p, semantic-elapsed-time)
+	(semantic-parse-stream, semantic-parse-region)
+	(semantic-parse-region-default, semantic--set-buffer-cache)
+	(semantic-minimum-working-buffer-size, semantic-refresh-tags-safe)
+	(semantic-bovinate-toplevel, semantic-load-system-cache-loaded)
+	(semantic-default-submodes):
+	* cedet/semantic/db-ebrowse.el (semanticdb-table-ebrowse)
+	(semanticdb-create-ebrowse-database)
+	(semanticdb-find-tags-for-completion-method)
+	(semanticdb-find-tags-by-class-method)
+	(semanticdb-deep-find-tags-by-name-method)
+	(semanticdb-deep-find-tags-for-completion-method):
+	* cedet/semantic/db-el.el (semanticdb-elisp-mapatom-collector)
+	(semanticdb-find-tags-by-name-method, emacs-lisp-mode)
+	(semanticdb-find-tags-for-completion-method)
+	(semanticdb-find-tags-by-class-method)
+	(semanticdb-deep-find-tags-for-completion-method):
+	* cedet/semantic/db-find.el (semanticdb-find-translate-path)
+	(semanticdb-find-need-cache-update-p, semanticdb-find-result-with-nil-p)
+	(semanticdb-find-scanned-include-tags, semanticdb-find-tags-collector)
+	(semanticdb-find-tags-by-name-method)
+	(semanticdb-find-tags-by-name-regexp-method)
+	(semanticdb-find-tags-for-completion-method)
+	(semanticdb-find-tags-by-class-method)
+	(semanticdb-find-tags-external-children-of-type-method)
+	(semanticdb-find-tags-subclasses-of-type-method)
+	(semanticdb-deep-find-tags-by-name-method)
+	(semanticdb-deep-find-tags-by-name-regexp-method)
+	(semanticdb-deep-find-tags-for-completion-method):
+	* cedet/semantic/db-global.el (semanticdb-enable-gnu-global-hook)
+	(semanticdb-enable-gnu-global-in-buffer)
+	(semanticdb-find-tags-for-completion-method)
+	(semanticdb-deep-find-tags-by-name-method)
+	(semanticdb-deep-find-tags-for-completion-method):
+	* cedet/semantic/db-javascript.el (semanticdb-javascript-tags)
+	(javascript-mode, semanticdb-find-translate-path)
+	(semanticdb-find-tags-for-completion-method)
+	(semanticdb-find-tags-by-class-method)
+	(semanticdb-deep-find-tags-by-name-method)
+	(semanticdb-deep-find-tags-for-completion-method)
+	(semanticdb-find-tags-external-children-of-type-method):
+	* cedet/semantic/idle.el (semantic-idle-work-core-handler)
+	(define-semantic-idle-service, semantic-idle-summary-useful-context-p)
+	(global-semantic-idle-scheduler-mode):
+	* cedet/srecode/dictionary.el (srecode-field-value)
+	(srecode-dictionary-add-section-dictionary):
+	* emacs-lisp/eieio.el (eieio-error-unsupported-class-tags)
+	(eieio-generic-form, eieio-help-mode-augmentation-maybee, eieio-browse)
+	(describe-class, eieio-describe-generic, describe-generic):
+	* emacs-lisp/eieio-speedbar.el (eieio-speedbar-handle-click)
+	(eieio-speedbar-expand):
+	* emulation/viper-cmd.el (viper-exec-form-in-vi)
+	(viper-exec-form-in-emacs, viper-harness-minor-mode, viper-ESC)
+	(viper-repeat, viper-replace-state-exit-cmd, viper-toggle-search-style)
+	(viper-del-backward-char-in-replace, viper-backward-indent)
+	(viper-brac-function, viper-register-to-point, viper-submit-report):
+	* net/tramp.el (tramp-remote-coding-commands):
+	* term/x-win.el (emacs-session-save, x-menu-bar-open, icon-map-list):
+	Fix typos in docstrings.
+
+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.
+	(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
@@ -6,7 +212,7 @@
 2010-01-15  Kenichi Handa  <handa@m17n.org>
 
 	* international/mule-cmds.el (canonicalize-coding-system-name):
-	Convert "msXXX", "ibmXXX", "windows-XXX" to "cpXXX".
+	Convert "msXXX", "ibmXXX", "windows-XXX" to "cpXXX" (Bug#5387).
 
 2010-01-15  Glenn Morris  <rgm@gnu.org>
 
@@ -1473,7 +1679,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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/calc/calc.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/calendar/time-date.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/calendar/time-date.el	Thu Jan 21 07:04:21 2010 +0800
@@ -98,7 +98,8 @@
 
 ;;;###autoload
 (defun date-to-time (date)
-  "Parse a string DATE that represents a date-time and return a time value."
+  "Parse a string DATE that represents a date-time and return a time value.
+If DATE lacks timezone information, GMT is assumed."
   (condition-case ()
       (apply 'encode-time
 	     (parse-time-string
--- a/lisp/cedet/cedet-files.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/cedet-files.el	Thu Jan 21 07:04:21 2010 +0800
@@ -69,7 +69,7 @@
   (let ((file referencefile))
     ;; Replace the ! with /
     (setq file (subst-char-in-string ?! ?/ file))
-    ;; Occurances of // meant there was once a single !.
+    ;; Occurrences of // meant there was once a single !.
     (setq file (replace-regexp-in-string "//" "!" file))
 
     ;; Handle Windows special cases
--- a/lisp/cedet/ede/cpp-root.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/ede/cpp-root.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/ede/files.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/locate.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/ede/locate.el	Thu Jan 21 07:04:21 2010 +0800
@@ -97,7 +97,7 @@
       (setq ans 'ede-locate-base))
     (oset proj locate-obj (make-instance ans "Loc" :root root))
     (when (called-interactively-p 'interactive)
-      (message "Setting locator to %s." ans))
+      (message "Setting locator to %s" ans))
     ))
 
 ;;; LOCATE BASECLASS
@@ -142,9 +142,9 @@
 (defmethod ede-locate-file-in-project ((loc ede-locate-base)
 				       filesubstring
 				       )
-  "Locate with LOC occurances of FILESUBSTRING.
+  "Locate with LOC occurrences of FILESUBSTRING.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   (let ((ans (ede-locate-file-in-project-impl loc filesubstring))
 	)
     (oset loc file filesubstring)
@@ -154,9 +154,9 @@
 (defmethod ede-locate-file-in-project-impl ((loc ede-locate-base)
 					    filesubstring
 					    )
-  "Locate with LOC occurances of FILESUBSTRING.
+  "Locate with LOC occurrences of FILESUBSTRING.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   nil
   )
 
@@ -180,9 +180,9 @@
 
 (defmethod ede-locate-file-in-project-impl ((loc ede-locate-locate)
 					    filesubstring)
-  "Locate with LOC occurances of FILESUBSTRING under PROJECTROOT.
+  "Locate with LOC occurrences of FILESUBSTRING under PROJECTROOT.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   ;; We want something like:
   ;;  /my/project/root*/filesubstring.c
   (let* ((searchstr (concat (directory-file-name (oref loc root))
@@ -235,9 +235,9 @@
 
 (defmethod ede-locate-file-in-project-impl ((loc ede-locate-global)
 					    filesubstring)
-  "Locate with LOC occurances of FILESUBSTRING under PROJECTROOT.
+  "Locate with LOC occurrences of FILESUBSTRING under PROJECTROOT.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   (require 'cedet-global)
   (let ((default-directory (oref loc root)))
     (cedet-gnu-global-expand-filename filesubstring)))
@@ -273,9 +273,9 @@
 
 (defmethod ede-locate-file-in-project-impl ((loc ede-locate-idutils)
 					    filesubstring)
-  "Locate with LOC occurances of FILESUBSTRING under PROJECTROOT.
+  "Locate with LOC occurrences of FILESUBSTRING under PROJECTROOT.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   (require 'cedet-idutils)
   (let ((default-directory (oref loc root)))
     (cedet-idutils-expand-filename filesubstring)))
@@ -309,9 +309,9 @@
 
 (defmethod ede-locate-file-in-project-impl ((loc ede-locate-cscope)
 					    filesubstring)
-  "Locate with LOC occurances of FILESUBSTRING under PROJECTROOT.
+  "Locate with LOC occurrences of FILESUBSTRING under PROJECTROOT.
 Searches are done under the current root of the EDE project
-that crated this ede locat object."
+that created this EDE locate object."
   (let ((default-directory (oref loc root)))
     (cedet-cscope-expand-filename filesubstring)))
 
--- a/lisp/cedet/ede/proj-aux.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/ede/proj-aux.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/ede/simple.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic.el	Thu Jan 21 07:04:21 2010 +0800
@@ -45,7 +45,7 @@
 (declare-function semanticdb-load-ebrowse-caches "semantic/db-ebrowse")
 
 (defun semantic-require-version (major minor &optional beta)
-  "Non-nil if this version of semantic does not satisfy a specific version.
+  "Non-nil if this version of Semantic does not satisfy a specific version.
 Arguments can be:
 
   (MAJOR MINOR &optional BETA)
@@ -130,7 +130,7 @@
   DO NOT USE THIS VARIABLE IN PROGRAMS.
 
 If you need a tag list, use `semantic-fetch-tags'.  If you need the
-cached values for some reason, chances are you can, add a hook to
+cached values for some reason, chances are you can add a hook to
 `semantic-after-toplevel-cache-change-hook'.")
 (make-variable-buffer-local 'semantic--buffer-cache)
 (semantic-varalias-obsolete 'semantic-toplevel-bovine-cache
@@ -141,7 +141,7 @@
 (make-variable-buffer-local 'semantic-unmatched-syntax-cache)
 
 (defvar semantic-unmatched-syntax-cache-check nil
-  "Non nil if the unmatched syntax cache is out of date.
+  "Non-nil if the unmatched syntax cache is out of date.
 This is tracked with `semantic-change-function'.")
 (make-variable-buffer-local 'semantic-unmatched-syntax-cache-check)
 
@@ -154,18 +154,18 @@
 `top-level' comments.")
 
 (defvar semantic-unmatched-syntax-hook nil
-  "Hooks run when semantic detects syntax not matched in a grammar.
+  "Hooks run when Semantic detects syntax not matched in a grammar.
 Each individual piece of syntax (such as a symbol or punctuation
 character) is called with this hook when it doesn't match in the
 grammar, and multiple unmatched syntax elements are not grouped
-together.  Each hook is called with one argument, which is a list of
-syntax tokens created by the semantic lexer.  Use the functions
+together.  Each hook is called with one argument, which is a list
+of syntax tokens created by the semantic lexer.  Use the functions
 `semantic-lex-token-start', `semantic-lex-token-end' and
-`semantic-lex-token-text' to get information about these tokens.  The
-current buffer is the buffer these tokens are derived from.")
+`semantic-lex-token-text' to get information about these tokens.
+The current buffer is the buffer these tokens are derived from.")
 
 (defvar semantic--before-fetch-tags-hook nil
-  "Hooks run before a buffer is parses for tags.
+  "Hooks run before a buffer is parsed for tags.
 It is called before any request for tags is made via the function
 `semantic-fetch-tags' by an application.
 If any hook returns a nil value, the cached value is returned
@@ -311,7 +311,7 @@
 			    'semantic-init-db-hook "23.2")
 
 (defvar semantic-new-buffer-fcn-was-run nil
-  "Non nil after `semantic-new-buffer-fcn' has been executed.")
+  "Non-nil after `semantic-new-buffer-fcn' has been executed.")
 (make-variable-buffer-local 'semantic-new-buffer-fcn-was-run)
 
 (defsubst semantic-active-p ()
@@ -320,7 +320,7 @@
 
 (defsubst semantic--umatched-syntax-needs-refresh-p  ()
   "Return non-nil if the unmatched syntax cache needs a refresh.
-That is if it is dirty or if the current parse tree isn't up to date."
+That is, if it is dirty or if the current parse tree isn't up to date."
   (or semantic-unmatched-syntax-cache-check
       (not (semantic-parse-tree-up-to-date-p))))
 
@@ -377,7 +377,7 @@
 Do not set this yourself.  Call `semantic-debug'.")
 
 (defun semantic-elapsed-time (start end)
-  "Copied from elp.el.  Was elp-elapsed-time.
+  "Copied from elp.el.  Was `elp-elapsed-time'.
 Argument START and END bound the time being calculated."
   (+ (* (- (car end) (car start)) 65536.0)
      (- (car (cdr end)) (car (cdr start)))
@@ -410,14 +410,14 @@
 (define-overloadable-function semantic-parse-stream (stream nonterminal)
   "Parse STREAM, starting at the first NONTERMINAL rule.
 For bovine and wisent based parsers, STREAM is from the output of
-`semantic-lex', and NONTERMINAL is a rule in the apropriate language
+`semantic-lex', and NONTERMINAL is a rule in the appropriate language
 specific rules file.
 The default parser table used for bovine or wisent based parsers is
 `semantic--parse-table'.
 
 Must return a list: (STREAM TAGS) where STREAM is the unused elements
-from STREAM, and TAGS is the list of semantic tags found, usually only
-one tag is returned with the exception of compound statements")
+from STREAM, and TAGS is the list of semantic tags found; usually only
+one tag is returned with the exception of compound statements.")
 
 (define-overloadable-function semantic-parse-changes ()
   "Reparse changes in the current buffer.
@@ -433,7 +433,7 @@
 
 Optional arguments:
 NONTERMINAL is the rule to start parsing at.
-DEPTH specifies the lexical depth to decend for parser that use
+DEPTH specifies the lexical depth to descend for parser that use
 lexical analysis as their first step.
 RETURNONERROR specifies that parsing should stop on the first
 unmatched syntax encountered.  When nil, parsing skips the syntax,
@@ -447,8 +447,8 @@
 (defun semantic-parse-region-default
   (start end &optional nonterminal depth returnonerror)
   "Parse the area between START and END, and return any tags found.
-If END needs to be extended due to a lexical token being too large, it
-will be silently ignored.
+If END needs to be extended due to a lexical token being too large,
+it will be silently ignored.
 Optional arguments:
 NONTERMINAL is the rule to start parsing at if it is known.
 DEPTH specifies the lexical depth to scan.
@@ -532,7 +532,7 @@
 (defvar semantic-bovinate-nonterminal-check-obarray)
 
 (defun semantic--set-buffer-cache (tagtable)
-  "Set the toplevel cache cache to TAGTABLE."
+  "Set the toplevel tag cache to TAGTABLE."
   (setq semantic--buffer-cache tagtable
         semantic-unmatched-syntax-cache-check nil)
   ;; This is specific to the bovine parser.
@@ -560,7 +560,7 @@
 
 (defvar semantic-minimum-working-buffer-size (* 1024 5)
   "*The minimum size of a buffer before working messages are displayed.
-Buffers smaller than will parse silently.
+Buffers smaller than this will parse silently.
 Buffers larger than this will display the working progress bar.")
 
 (defsubst semantic-parser-working-message (&optional arg)
@@ -652,7 +652,7 @@
   semantic--buffer-cache)
 
 (defun semantic-refresh-tags-safe ()
-  "Refreshes the current buffer's tags safely.
+  "Refresh the current buffer's tags safely.
 
 Return non-nil if the refresh was successful.
 Return nil if there is some sort of syntax error preventing a reparse.
@@ -694,7 +694,7 @@
       lexically-safe))))
 
 (defun semantic-bovinate-toplevel (&optional ignored)
-  "Backward Compatibility Function."
+  "Backward compatibility function."
   (semantic-fetch-tags))
 (make-obsolete 'semantic-bovinate-toplevel 'semantic-fetch-tags "23.2")
 
@@ -1014,10 +1014,10 @@
 
 ;; 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.
+  "Non-nil when the Semantic system caches have been loaded.
 Prevent this load system from loading files in twice.")
 
 (defconst semantic-submode-list
@@ -1045,7 +1045,7 @@
  `global-semantic-highlight-func-mode' - Highlight the current tag.
  `global-semantic-stickyfunc-mode'     - Show current fun in header line.
  `global-semantic-mru-bookmark-mode'   - Provide `switch-to-buffer'-like
-                                    keybinding for tag names."
+                                         keybinding for tag names."
   :group 'semantic
   :type `(set ,@(mapcar (lambda (c) (list 'const c))
 			semantic-submode-list)))
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/complete.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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-ebrowse.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db-ebrowse.el	Thu Jan 21 07:04:21 2010 +0800
@@ -90,7 +90,7 @@
 		   :initarg :global-extract
 		   :documentation
 		   "Table of ebrowse tags specific to this file.
-This table is compisited from the ebrowse *Globals* section.")
+This table is composited from the ebrowse *Globals* section.")
    )
   "A table for returning search results from ebrowse.")
 
@@ -128,7 +128,7 @@
 	   )))
 
 (defun semanticdb-create-ebrowse-database (dir)
-  "Create an EBROSE database for directory DIR.
+  "Create an EBROWSE database for directory DIR.
 The database file is stored in ~/.semanticdb, or whichever directory
 is specified by `semanticdb-default-save-directory'."
   (interactive "DDirectory: ")
@@ -597,7 +597,7 @@
 
 (defmethod semanticdb-find-tags-for-completion-method
   ((table semanticdb-table-ebrowse) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -607,7 +607,7 @@
 
 (defmethod semanticdb-find-tags-by-class-method
   ((table semanticdb-table-ebrowse) class &optional tags)
-  "In TABLE, find all occurances of tags of CLASS.
+  "In TABLE, find all occurrences of tags of CLASS.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -625,7 +625,7 @@
 (defmethod semanticdb-deep-find-tags-by-name-method
   ((table semanticdb-table-ebrowse) name &optional tags)
   "Find all tags name NAME in TABLE.
-Optional argument TAGS is a list of tags t
+Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-by-name-method' for ebrowse."
   ;;(semanticdb-find-tags-by-name-method table name tags)
   (call-next-method))
@@ -640,7 +640,7 @@
 
 (defmethod semanticdb-deep-find-tags-for-completion-method
   ((table semanticdb-table-ebrowse) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-for-completion-method' for ebrowse."
   ;;(semanticdb-find-tags-for-completion-method table prefix tags)
--- a/lisp/cedet/semantic/db-el.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db-el.el	Thu Jan 21 07:04:21 2010 +0800
@@ -76,7 +76,7 @@
 (defvar-mode-local emacs-lisp-mode semanticdb-find-default-throttle
   '(project omniscience)
   "Search project files, then search this omniscience database.
-It is not necessary to to system or recursive searching because of
+It is not necessary to do system or recursive searching because of
 the omniscience database.")
 
 ;;; Filename based methods
@@ -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)))
@@ -246,12 +246,12 @@
 ;;; Search Overrides
 ;;
 (defvar semanticdb-elisp-mapatom-collector nil
-  "Variable used to collect mapatoms output.")
+  "Variable used to collect `mapatoms' output.")
 
 (defmethod semanticdb-find-tags-by-name-method
   ((table semanticdb-table-emacs-lisp) name &optional tags)
-  "Find all tags name NAME in TABLE.
-Uses `inter-soft' to match NAME to emacs symbols.
+  "Find all tags named NAME in TABLE.
+Uses `intern-soft' to match NAME to Emacs symbols.
 Return a list of tags."
   (if tags (call-next-method)
     ;; No need to search.  Use `intern-soft' which does the same thing for us.
@@ -281,7 +281,7 @@
 
 (defmethod semanticdb-find-tags-for-completion-method
   ((table semanticdb-table-emacs-lisp) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -290,7 +290,7 @@
 
 (defmethod semanticdb-find-tags-by-class-method
   ((table semanticdb-table-emacs-lisp) class &optional tags)
-  "In TABLE, find all occurances of tags of CLASS.
+  "In TABLE, find all occurrences of tags of CLASS.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -316,7 +316,7 @@
 
 (defmethod semanticdb-deep-find-tags-for-completion-method
   ((table semanticdb-table-emacs-lisp) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-for-completion-method' for Emacs Lisp."
   (semanticdb-find-tags-for-completion-method table prefix tags))
--- a/lisp/cedet/semantic/db-find.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db-find.el	Thu Jan 21 07:04:21 2010 +0800
@@ -281,7 +281,7 @@
 scan every available table.
 
 The return value is a list of objects of type `semanticdb-table' or
-it's children.  In the case of passing in a find result, the result
+their children.  In the case of passing in a find result, the result
 is returned unchanged.
 
 This routine uses `semanticdb-find-table-for-include' to translate
@@ -366,7 +366,7 @@
     ans))
 
 (defun semanticdb-find-need-cache-update-p (table)
-  "Non nil if the semanticdb TABLE cache needs to be updated."
+  "Non-nil if the semanticdb TABLE cache needs to be updated."
   ;; If we were passed in something related to a TABLE,
   ;; do a caching lookup.
   (let* ((index (semanticdb-get-table-index table))
@@ -431,7 +431,7 @@
   "All include tags scanned, plus action taken on the tag.
 Each entry is an alist:
   (ACTION . TAG)
-where ACTION is one of 'scanned, 'duplicate, 'lost.
+where ACTION is one of 'scanned, 'duplicate, 'lost
 and TAG is a clone of the include tag that was found.")
 (make-variable-buffer-local 'semanticdb-find-scanned-include-tags)
 
@@ -927,7 +927,7 @@
 
 (defun semanticdb-find-result-with-nil-p (resultp)
   "Non-nil of RESULTP is in the form of a semanticdb search result.
-nil is a valid value where a TABLE usually is, but only if the TAG
+The value nil is valid where a TABLE usually is, but only if the TAG
 results include overlays.
 This query only really tests the first entry in the list that is RESULTP,
 but should be good enough for debugging assertions."
@@ -1090,8 +1090,8 @@
   "Collect all tags returned by FUNCTION over PATH.
 The FUNCTION must take two arguments.  The first is TABLE,
 which is a semanticdb table containing tags.  The second argument
-to FUNCTION is TAGS.  TAGS may be a list of tags.  If TAGS is non-nil, then
-FUNCTION should search the TAG list, not through TABLE.
+to FUNCTION is TAGS.  TAGS may be a list of tags.  If TAGS is non-nil,
+then FUNCTION should search the TAG list, not through TABLE.
 
 See `semanticdb-find-translate-path' for details on PATH.
 FIND-FILE-MATCH indicates that any time a match is found, the file
@@ -1296,38 +1296,38 @@
 
 ;;; Top level Searches
 (defmethod semanticdb-find-tags-by-name-method ((table semanticdb-abstract-table) name &optional tags)
-  "In TABLE, find all occurances of tags with NAME.
+  "In TABLE, find all occurrences of tags with NAME.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (semantic-find-tags-by-name name (or tags (semanticdb-get-tags table))))
 
 (defmethod semanticdb-find-tags-by-name-regexp-method ((table semanticdb-abstract-table) regexp &optional tags)
-  "In TABLE, find all occurances of tags matching REGEXP.
+  "In TABLE, find all occurrences of tags matching REGEXP.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (semantic-find-tags-by-name-regexp regexp (or tags (semanticdb-get-tags table))))
 
 (defmethod semanticdb-find-tags-for-completion-method ((table semanticdb-abstract-table) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (semantic-find-tags-for-completion prefix (or tags (semanticdb-get-tags table))))
 
 (defmethod semanticdb-find-tags-by-class-method ((table semanticdb-abstract-table) class &optional tags)
-  "In TABLE, find all occurances of tags of CLASS.
+  "In TABLE, find all occurrences of tags of CLASS.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (semantic-find-tags-by-class class (or tags (semanticdb-get-tags table))))
 
 (defmethod semanticdb-find-tags-external-children-of-type-method ((table semanticdb-abstract-table) parent &optional tags)
-   "In TABLE, find all occurances of tags whose parent is the PARENT type.
+   "In TABLE, find all occurrences of tags whose parent is the PARENT type.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
    (require 'semantic/find)
    (semantic-find-tags-external-children-of-type parent (or tags (semanticdb-get-tags table))))
 
 (defmethod semanticdb-find-tags-subclasses-of-type-method ((table semanticdb-abstract-table) parent &optional tags)
-   "In TABLE, find all occurances of tags whose parent is the PARENT type.
+   "In TABLE, find all occurrences of tags whose parent is the PARENT type.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
    (require 'semantic/find)
@@ -1335,7 +1335,7 @@
 
 ;;; Deep Searches
 (defmethod semanticdb-deep-find-tags-by-name-method ((table semanticdb-abstract-table) name &optional tags)
-  "In TABLE, find all occurances of tags with NAME.
+  "In TABLE, find all occurrences of tags with NAME.
 Search in all tags in TABLE, and all components of top level tags in
 TABLE.
 Optional argument TAGS is a list of tags to search.
@@ -1343,7 +1343,7 @@
   (semantic-find-tags-by-name name (semantic-flatten-tags-table (or tags (semanticdb-get-tags table)))))
 
 (defmethod semanticdb-deep-find-tags-by-name-regexp-method ((table semanticdb-abstract-table) regexp &optional tags)
-  "In TABLE, find all occurances of tags matching REGEXP.
+  "In TABLE, find all occurrences of tags matching REGEXP.
 Search in all tags in TABLE, and all components of top level tags in
 TABLE.
 Optional argument TAGS is a list of tags to search.
@@ -1351,7 +1351,7 @@
   (semantic-find-tags-by-name-regexp regexp (semantic-flatten-tags-table (or tags (semanticdb-get-tags table)))))
 
 (defmethod semanticdb-deep-find-tags-for-completion-method ((table semanticdb-abstract-table) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Search in all tags in TABLE, and all components of top level tags in
 TABLE.
 Optional argument TAGS is a list of tags to search.
--- a/lisp/cedet/semantic/db-global.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db-global.el	Thu Jan 21 07:04:21 2010 +0800
@@ -66,7 +66,7 @@
   )
 
 (defun semanticdb-enable-gnu-global-hook ()
-  "Add support for GNU Global in the current buffer via semantic-init-hook.
+  "Add support for GNU Global in the current buffer via `semantic-init-hook'.
 MODE is the major mode to support."
   (semanticdb-enable-gnu-global-in-buffer t))
 
@@ -78,8 +78,8 @@
 
 (defun semanticdb-enable-gnu-global-in-buffer (&optional dont-err-if-not-available)
   "Enable a GNU Global database in the current buffer.
-Argument DONT-ERR-IF-NOT-AVAILABLE will throw an error if GNU Global
-is not available for this directory."
+When GNU Global is not available for this directory, display a message
+if optional DONT-ERR-IF-NOT-AVAILABLE is non-nil; else throw an error."
   (interactive "P")
   (if (cedet-gnu-global-root)
       (setq
@@ -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)
@@ -168,7 +168,7 @@
 
 (defmethod semanticdb-find-tags-for-completion-method
   ((table semanticdb-table-global) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -195,7 +195,7 @@
 (defmethod semanticdb-deep-find-tags-by-name-method
   ((table semanticdb-table-global) name &optional tags)
   "Find all tags name NAME in TABLE.
-Optional argument TAGS is a list of tags t
+Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-by-name-method' for global."
   (semanticdb-find-tags-by-name-method table name tags))
 
@@ -208,7 +208,7 @@
 
 (defmethod semanticdb-deep-find-tags-for-completion-method
   ((table semanticdb-table-global) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-for-completion-method' for global."
   (semanticdb-find-tags-for-completion-method table prefix tags))
--- a/lisp/cedet/semantic/db-javascript.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db-javascript.el	Thu Jan 21 07:04:21 2010 +0800
@@ -77,7 +77,7 @@
       (("uriComponent" variable nil nil nil)))
      nil nil))
   "Hard-coded list of javascript tags for semanticdb.
-See bottom of this file for instruction on managing this list.")
+See bottom of this file for instructions on managing this list.")
 
 ;;; Classes:
 (defclass semanticdb-table-javascript (semanticdb-search-results-table)
@@ -87,7 +87,7 @@
 
 (defclass semanticdb-project-database-javascript
   (semanticdb-project-database
-   eieio-singleton ;this db is for js globals, so singleton is apropriate
+   eieio-singleton ;this db is for js globals, so singleton is appropriate
    )
   ((new-table-class :initform semanticdb-table-javascript
 		    :type class
@@ -107,7 +107,7 @@
 (defvar-mode-local javascript-mode semanticdb-find-default-throttle
   '(project omniscience)
   "Search project files, then search this omniscience database.
-It is not necessary to to system or recursive searching because of
+It is not necessary to do system or recursive searching because of
 the omniscience database.")
 
 ;;; Filename based methods
@@ -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)))
@@ -157,7 +157,7 @@
 ;; to a search list.
 (define-mode-local-override semanticdb-find-translate-path javascript-mode
   (path brutish)
-  "Return a list of semanticdb tables asociated with PATH.
+  "Return a list of semanticdb tables associated with PATH.
 If brutish, do the default action.
 If not brutish, do the default action, and append the system
 database (if available.)"
@@ -216,7 +216,7 @@
 
 (defmethod semanticdb-find-tags-for-completion-method
   ((table semanticdb-table-javascript) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -226,7 +226,7 @@
 
 (defmethod semanticdb-find-tags-by-class-method
   ((table semanticdb-table-javascript) class &optional tags)
-  "In TABLE, find all occurances of tags of CLASS.
+  "In TABLE, find all occurrences of tags of CLASS.
 Optional argument TAGS is a list of tags to search.
 Returns a table of all matching tags."
   (if tags (call-next-method)
@@ -248,7 +248,7 @@
 (defmethod semanticdb-deep-find-tags-by-name-method
   ((table semanticdb-table-javascript) name &optional tags)
   "Find all tags name NAME in TABLE.
-Optional argument TAGS is a list of tags t
+Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-by-name-method' for javascript."
   (semanticdb-find-tags-by-name-method table name tags))
 
@@ -261,7 +261,7 @@
 
 (defmethod semanticdb-deep-find-tags-for-completion-method
   ((table semanticdb-table-javascript) prefix &optional tags)
-  "In TABLE, find all occurances of tags matching PREFIX.
+  "In TABLE, find all occurrences of tags matching PREFIX.
 Optional argument TAGS is a list of tags to search.
 Like `semanticdb-find-tags-for-completion-method' for javascript."
   (semanticdb-find-tags-for-completion-method table prefix tags))
@@ -270,7 +270,7 @@
 ;;
 (defmethod semanticdb-find-tags-external-children-of-type-method
   ((table semanticdb-table-javascript) type &optional tags)
-  "Find all nonterminals which are child elements of TYPE
+  "Find all nonterminals which are child elements of TYPE.
 Optional argument TAGS is a list of tags to search.
 Return a list of tags."
   (if tags (call-next-method)
--- a/lisp/cedet/semantic/db.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/db.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/decorate/include.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/idle.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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
@@ -367,7 +367,7 @@
 
 (defun semantic-idle-work-core-handler ()
   "Core handler for idle work processing of long running tasks.
-Visits semantic controlled buffers, and makes sure all needed
+Visits Semantic controlled buffers, and makes sure all needed
 include files have been parsed, and that the typecache is up to date.
 Uses `semantic-idle-work-for-on-buffer' to do the work."
   (let ((errbuf nil)
@@ -577,7 +577,7 @@
 DOC will be a documentation string describing FORMS.
 FORMS will be called during idle time after the current buffer's
 semantic tag information has been updated.
-This routines creates the following functions and variables:"
+This routine creates the following functions and variables:"
   (let ((global (intern (concat "global-" (symbol-name name) "-mode")))
 	(mode 	(intern (concat (symbol-name name) "-mode")))
 	(hook 	(intern (concat (symbol-name name) "-mode-hook")))
@@ -764,7 +764,7 @@
 	     jde-java-font-lock-code-face)))")
 
 (defun semantic-idle-summary-useful-context-p ()
-  "Non-nil of we should show a summary based on context."
+  "Non-nil if we should show a summary based on context."
   (if (and (boundp 'font-lock-mode)
 	   font-lock-mode
 	   (memq (get-text-property (point) 'face)
@@ -959,7 +959,7 @@
 ;;;###autoload
 (defun global-semantic-idle-scheduler-mode (&optional arg)
   "Toggle global use of option `semantic-idle-scheduler-mode'.
-The idle scheduler with automatically reparse buffers in idle time,
+The idle scheduler will automatically reparse buffers in idle time,
 and then schedule other jobs setup with `semantic-idle-scheduler-add'.
 If ARG is positive, enable, if it is negative, disable.
 If ARG is nil, then toggle."
--- a/lisp/cedet/semantic/util-modes.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/semantic/util-modes.el	Thu Jan 21 07:04:21 2010 +0800
@@ -337,7 +337,7 @@
     (((class color) (background light))
      (:underline "red")))
   "Face used to show unmatched syntax in.
-The face is used in  `semantic-show-unmatched-syntax-mode'."
+The face is used in `semantic-show-unmatched-syntax-mode'."
   :group 'semantic-faces)
 
 (defsubst semantic-unmatched-syntax-overlay-p (overlay)
@@ -767,7 +767,7 @@
       ]
     [ "Narrow To Headerline Tag" senator-narrow-to-defun
       :active (semantic-current-tag)
-      :help "Narrow to the bounds of the current tag."]
+      :help "Narrow to the bounds of the current tag"]
     [ "Fold Headerline Tag" senator-fold-tag-toggle
       :active (semantic-current-tag)
       :style toggle
@@ -854,7 +854,7 @@
   :type 'string)
 
 (defvar semantic-stickyfunc-old-hlf nil
-  "Value of the header line when entering sticky func mode.")
+  "Value of the header line when entering stickyfunc mode.")
 
 (defconst semantic-stickyfunc-header-line-format
   (cond ((featurep 'xemacs)
@@ -868,7 +868,7 @@
 	 '(:eval (list semantic-stickyfunc-indent-string
 		       (semantic-stickyfunc-fetch-stickyline))))
 	(t nil))
-  "The header line format used by sticky func mode.")
+  "The header line format used by stickyfunc mode.")
 
 (defun semantic-stickyfunc-mode-setup ()
   "Setup option `semantic-stickyfunc-mode'.
@@ -936,7 +936,7 @@
 
 (defvar semantic-stickyfunc-sticky-classes
   '(function type)
-  "List of tag classes which sticky func will display in the header line.")
+  "List of tag classes which stickyfunc will display in the header line.")
 (make-variable-buffer-local 'semantic-stickyfunc-sticky-classes)
 
 (defun semantic-stickyfunc-tag-to-stick ()
@@ -953,7 +953,7 @@
 
 (defun semantic-stickyfunc-fetch-stickyline ()
   "Make the function at the top of the current window sticky.
-Capture it's function declaration, and place it in the header line.
+Capture its function declaration, and place it in the header line.
 If there is no function, disable the header line."
   (let ((str
 	 (save-excursion
@@ -962,7 +962,7 @@
 	   (end-of-line)
 	   ;; Capture this function
 	   (let* ((tag (semantic-stickyfunc-tag-to-stick)))
-	     ;; TAG is nil if there was nothing of the apropriate type there.
+	     ;; TAG is nil if there was nothing of the appropriate type there.
 	     (if (not tag)
 		 ;; Set it to be the text under the header line
 		 (buffer-substring (point-at-bol) (point-at-eol))
@@ -1080,7 +1080,7 @@
       ]
     [ "Narrow To Tag" senator-narrow-to-defun
       :active (semantic-current-tag)
-      :help "Narrow to the bounds of the current tag."]
+      :help "Narrow to the bounds of the current tag"]
     [ "Fold Tag" senator-fold-tag-toggle
       :active (semantic-current-tag)
       :style toggle
@@ -1129,7 +1129,7 @@
 
 (defun semantic-highlight-func-mode-setup ()
   "Setup option `semantic-highlight-func-mode'.
-For semantic enabled buffers, highlight the first line of the
+For Semantic enabled buffers, highlight the first line of the
 current tag declaration."
   (if semantic-highlight-func-mode
       (progn
@@ -1202,7 +1202,7 @@
 	(setq semantic-highlight-func-ct-overlay ol)
 	)
 
-      ;; TAG is nil if there was nothing of the apropriate type there.
+      ;; TAG is nil if there was nothing of the appropriate type there.
       (if (or (not tag) disable)
 	  ;; No tag, make the overlay go away.
 	  (progn
--- a/lisp/cedet/srecode/dictionary.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/srecode/dictionary.el	Thu Jan 21 07:04:21 2010 +0800
@@ -240,7 +240,7 @@
 For each dictionary added to a macro, the block of codes in the
 template will be repeated.
 
-If optional argument SHOW-ONLY is non-nil, then don't add a new dictionarly
+If optional argument SHOW-ONLY is non-nil, then don't add a new dictionary
 if there is already one in place.  Also, don't add FIRST/LAST entries.
 These entries are not needed when we are just showing a section.
 
@@ -402,7 +402,7 @@
 (defclass srecode-field-value (srecode-dictionary-compound-value)
   ((firstinserter :initarg :firstinserter
 		  :documentation
-		  "The inserter object for the first occurance of this field.")
+		  "The inserter object for the first occurrence of this field.")
    (defaultvalue :initarg :defaultvalue
      :documentation
      "The default value for this inserter.")
--- a/lisp/cedet/srecode/extract.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/cedet/srecode/extract.el	Thu Jan 21 07:04:21 2010 +0800
@@ -216,7 +216,7 @@
   (srecode-insert-include-lookup ins dict)
   ;; There are two modes for includes.  One is with no dict,
   ;; so it is inserted straight.  If the dict has a name, then
-  ;; we need to run once per dictionary occurance.
+  ;; we need to run once per dictionary occurrence.
   (if (not (string= (oref ins :object-name) ""))
       ;; With a name, do the insertion.
       (let ((subdict (srecode-dictionary-add-section-dictionary
--- a/lisp/emacs-lisp/advice.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/advice.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/chart.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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)))
@@ -644,7 +644,7 @@
     ;; Lets create the chart!
     (chart-bar-quickie 'vertical "Files Extension Distribution"
 		       extlst "File Extensions"
-		       cntlst "# of occurances"
+		       cntlst "# of occurrences"
 		       10
 		       '(lambda (a b) (> (cdr a) (cdr b))))
     ))
@@ -740,9 +740,9 @@
 		(setcar cell (1+ (car cell))))
 	    (setq nmlst (cons nam nmlst)
 		  cntlst (cons 1 cntlst))))))
-    (chart-bar-quickie 'vertical "Username Occurance in RMAIL box"
+    (chart-bar-quickie 'vertical "Username Occurrence in RMAIL box"
 		       nmlst "User Names"
-		       cntlst "# of occurances"
+		       cntlst "# of occurrences"
 		       10
 		       '(lambda (a b) (> (cdr a) (cdr b))))
     ))
--- a/lisp/emacs-lisp/cl-loaddefs.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/cl-loaddefs.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/cl-macs.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/emacs-lisp/eieio-speedbar.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/eieio-speedbar.el	Thu Jan 21 07:04:21 2010 +0800
@@ -227,7 +227,7 @@
 object edit buffer doing an in-place edit.
 
 If your object represents some other item, override this method
-and take the apropriate action."
+and take the appropriate action."
   (require 'eieio-custom)
   (speedbar-with-attached-buffer
    (eieio-customize-object object))
@@ -327,7 +327,7 @@
 
 (defmethod eieio-speedbar-expand ((object eieio-speedbar) depth)
   "Expand OBJECT at indentation DEPTH.
-Inserts a list of new tag lines representing expanded elements withing
+Inserts a list of new tag lines representing expanded elements within
 OBJECT."
   (let ((children (eieio-speedbar-object-children object)))
     (cond ((eieio-object-p (car children))
--- a/lisp/emacs-lisp/eieio.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emacs-lisp/eieio.el	Thu Jan 21 07:04:21 2010 +0800
@@ -79,7 +79,7 @@
   "*This hook is executed, then cleared each time `defclass' is called.")
 
 (defvar eieio-error-unsupported-class-tags nil
-  "*Non nil to throw an error if an encountered tag us unsupported.
+  "*Non-nil to throw an error if an encountered tag us unsupported.
 This may prevent classes from CLOS applications from being used with EIEIO
 since EIEIO does not support all CLOS tags.")
 
@@ -2021,7 +2021,7 @@
     (run-hook-with-args 'eieio-pre-method-execution-hooks
 			primarymethodlist)
 
-    ;; Now loop through all occurances forms which we must execute
+    ;; Now loop through all occurrences forms which we must execute
     ;; (which are happily sorted now) and execute them all!
     (let ((rval nil) (lastval nil) (rvalever nil) (found nil))
       (while lambdas
@@ -2101,7 +2101,7 @@
     (setq primarymethodlist  ;; Re-use even with bad name here
 	  (eieiomt-method-list method method-primary mclass))
 
-    ;; Now loop through all occurances forms which we must execute
+    ;; Now loop through all occurrences forms which we must execute
     ;; (which are happily sorted now) and execute them all!
     (let* ((rval nil) (lastval nil) (rvalever nil)
 	   (scoped-class (cdr lambdas))
@@ -2331,7 +2331,7 @@
 If CLASS is not a class then use `generic' instead.  If class has
 no form, but has a parent class, then trace to that parent class.
 The first time a form is requested from a symbol, an optimized path
-is memorized for future faster use."
+is memorized for faster future use."
  (let ((emto (aref (get method 'eieio-method-obarray)
 		   (if class key (+ key 3)))))
    (if (class-p class)
@@ -2814,13 +2814,13 @@
 ;;; Autoloading some external symbols, and hooking into the help system
 ;;
 
-(autoload 'eieio-help-mode-augmentation-maybee "eieio-opt" "For buffers thrown into help mode, augment for eieio.")
-(autoload 'eieio-browse "eieio-opt" "Create an object browser window" t)
+(autoload 'eieio-help-mode-augmentation-maybee "eieio-opt" "For buffers thrown into help mode, augment for EIEIO.")
+(autoload 'eieio-browse "eieio-opt" "Create an object browser window." t)
 (autoload 'eieio-describe-class "eieio-opt" "Describe CLASS defined by a string or symbol" t)
 (autoload 'eieio-describe-constructor "eieio-opt" "Describe the constructor function FCN." t)
-(autoload 'describe-class "eieio-opt" "Describe CLASS defined by a string or symbol" t)
-(autoload 'eieio-describe-generic "eieio-opt" "Describe GENERIC defined by a string or symbol" t)
-(autoload 'describe-generic "eieio-opt" "Describe GENERIC defined by a string or symbol" t)
+(autoload 'describe-class "eieio-opt" "Describe CLASS defined by a string or symbol." t)
+(autoload 'eieio-describe-generic "eieio-opt" "Describe GENERIC defined by a string or symbol." t)
+(autoload 'describe-generic "eieio-opt" "Describe GENERIC defined by a string or symbol." t)
 
 (autoload 'customize-object "eieio-custom" "Create a custom buffer editing OBJ.")
 
--- a/lisp/emulation/edt.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emulation/edt.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/emulation/viper-cmd.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/emulation/viper-cmd.el	Thu Jan 21 07:04:21 2010 +0800
@@ -479,7 +479,7 @@
 			  (assoc major-mode viper-emacs-state-modifier-alist))
 		       viper-empty-keymap))
 	       ))
-	
+
   ;; This var is not local in Emacs, so we make it local.  It must be local
   ;; because although the stack of minor modes can be the same for all buffers,
   ;; the associated *keymaps* can be different.  In Viper,
@@ -891,7 +891,7 @@
 
 
 (defun viper-exec-form-in-vi  (form)
-  "Execute FORM in Vi state, regardless of the Ccurrent Vi state."
+  "Execute FORM in Vi state, regardless of the current Vi state."
   (let ((buff (current-buffer))
 	result)
     (viper-set-mode-vars-for 'vi-state)
@@ -910,7 +910,7 @@
 
 (defun viper-exec-form-in-emacs  (form)
   "Execute FORM in Emacs, temporarily disabling Viper's minor modes.
-Similar to viper-escape-to-emacs, but accepts forms rather than keystrokes."
+Similar to `viper-escape-to-emacs', but accepts forms rather than keystrokes."
   (let ((buff (current-buffer))
 	result)
     (viper-set-mode-vars-for 'emacs-state)
@@ -939,7 +939,7 @@
 Usage:
     (viper-harness-minor-mode load-file)
 
-LOAD-FILE is a name of the file where the specific minor mode is defined.
+LOAD-FILE is the name of the file where the specific minor mode is defined.
 Suffixes such as .el or .elc should be stripped."
 
   (interactive "sEnter name of the load file: ")
@@ -961,9 +961,9 @@
 If viper-no-multiple-ESC is 'twice double ESC would ding in vi-state.
 Other ESC sequences are emulated via the current Emacs's major mode
 keymap.  This is more convenient on TTYs, since this won't block
-function keys such as up,down, etc.  ESC will also will also work as
-a Meta key in this case.  When viper-no-multiple-ESC is nil, ESC functions
-as a Meta key and any number of multiple escapes is allowed."
+function keys such as up, down, etc.  ESC will also will also work as
+a Meta key in this case.  When viper-no-multiple-ESC is nil, ESC works
+as a Meta key and any number of multiple escapes are allowed."
   (interactive "P")
   (let (char)
     (cond ((and (not viper-no-multiple-ESC) (eq viper-current-state 'vi-state))
@@ -1181,7 +1181,7 @@
 		((eq event-char 'delete) (setq event-char ?\C-?))
 		((eq event-char 'backspace) (setq event-char ?\C-h))
 		((eq event-char 'space) (setq event-char ?\ )))
-	  (setq last-command-event 
+	  (setq last-command-event
 		(if (featurep 'xemacs)
 		    (character-to-event (or com event-char))
 		  (or com event-char)))
@@ -1257,7 +1257,7 @@
 
       ;; as com is non-nil, this means that we have a command to execute
       (if (viper-memq-char (car com) '(?r ?R))
-	  ;; execute apropriate region command.
+	  ;; execute appropriate region command.
 	  (let ((char (car com)) (com (cdr com)))
 	    (setq prefix-arg (cons value com))
 	    (if (viper= char ?r)
@@ -1285,7 +1285,7 @@
 	 ;; gg  acts as G0
 	 ((equal (car com) ?g)   (viper-goto-line 0))
 	 (t (error "Viper bell")))))
-    
+
     (if cmd-to-exec-at-end
 	(progn
 	  (setq last-command-event
@@ -1621,7 +1621,7 @@
 where `com' is the command to be re-executed, `val' is the
 argument to `com', `ch' is a flag for repeat, and `reg' is optional;
 if it exists, it is the name of the register for `com'.
-If the prefix argument, ARG, is non-nil, it is used instead of `val'."
+If the prefix argument ARG is non-nil, it is used instead of `val'."
   (interactive "P")
   (let ((save-point (point)) ; save point before repeating prev cmd
 	;; Pass along that we are repeating a destructive command
@@ -1944,7 +1944,7 @@
 		 require-final-newline
 		 ;; add newline only if we actually edited buffer. otherwise it
 		 ;; might unintentionally modify binary buffers
-		 (buffer-modified-p) 
+		 (buffer-modified-p)
 		 (not (viper-is-in-minibuffer))
 		 (not buffer-read-only))
 	    ;; text property may be read-only
@@ -2539,7 +2539,7 @@
 
 (defun viper-replace-state-exit-cmd ()
   "Binding for keys that cause Replace state to switch to Vi or to Insert.
-These keys are ESC, RET, and LineFeed"
+These keys are ESC, RET, and LineFeed."
   (interactive)
   (if overwrite-mode   ; if in replace mode invoked via 'R'
       (viper-finish-R-mode)
@@ -3711,7 +3711,7 @@
 (defun viper-toggle-search-style (arg)
   "Toggle the value of viper-case-fold-search/viper-re-search.
 Without prefix argument, will ask which search style to toggle.  With prefix
-arg 1,toggles viper-case-fold-search; with arg 2 toggles viper-re-search.
+arg 1, toggles viper-case-fold-search; with arg 2 toggles viper-re-search.
 
 Although this function is bound to \\[viper-toggle-search-style], the most
 convenient way to use it is to bind `//' to the macro
@@ -4262,7 +4262,7 @@
 (defun viper-del-backward-char-in-replace ()
   "Delete one character in replace mode.
 If `viper-delete-backwards-in-replace' is t, then DEL key actually deletes
-charecters.  If it is nil, then the cursor just moves backwards, similarly
+characters.  If it is nil, then the cursor just moves backwards, similarly
 to Vi.  The variable `viper-ex-style-editing', if t, doesn't let the
 cursor move past the beginning of line."
   (interactive)
@@ -4614,7 +4614,7 @@
   (indent-to (+ (current-column) viper-shift-width)))
 
 (defun viper-backward-indent ()
-  "Backtab, C-d in VI"
+  "Backtab, `C-d' in Vi."
   (interactive)
   (if viper-cted
       (let ((p (point)) (c (current-column)) bol (indent t))
@@ -4689,7 +4689,7 @@
 	      viper-InvalidRegister reg)))))
 
 (defun viper-brac-function (arg)
-  "Function called by \[, the brac.  View textmarkers and call \[\["
+  "Function called by \[, the brac.  View textmarkers and call \[\[."
   (interactive "P")
   (let ((reg (read-char)))
     (cond ((viper= ?\[ reg)
@@ -4922,7 +4922,7 @@
 
 ;; if ENFORCE-BUFFER is not nil, error if CHAR is a marker in another buffer
 (defun viper-register-to-point (char &optional enforce-buffer)
-  "Like jump-to-register, but switches to another buffer in another window."
+  "Like `jump-to-register', but switches to another buffer in another window."
   (interactive "cViper register to point: ")
   (let ((val (get-register char)))
     (cond
@@ -5047,7 +5047,7 @@
 ------------------------------
 
 Before reporting a bug, please verify that it is related to Viper, and is
-not cause by other packages you are using.
+not caused by other packages you are using.
 
 Don't report compilation warnings, unless you are certain that there is a
 problem.  These warnings are normal and unavoidable.
--- a/lisp/files.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/files.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/gnus/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/gnus/message.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/gnus/nnmairix.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/ido.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/ido.el	Thu Jan 21 07:04:21 2010 +0800
@@ -1042,11 +1042,11 @@
 ;; Stores the current list of items that will be searched through.
 ;; The list is ordered, so that the most interesting item comes first,
 ;; although by default, the files visible in the current frame are put
-;; at the end of the list.  Created by `ido-make-item-list'.
-(defvar ido-cur-list)
+;; at the end of the list.
+(defvar ido-cur-list nil)
 
 ;; Stores the choice list for ido-completing-read
-(defvar ido-choice-list)
+(defvar ido-choice-list nil)
 
 ;; Stores the list of items which are ignored when building
 ;; `ido-cur-list'.  It is in no specific order.
@@ -3344,7 +3344,7 @@
     (if ido-temp-list
 	(nconc ido-temp-list ido-current-buffers)
       (setq ido-temp-list ido-current-buffers))
-    (if default
+    (if (and default (buffer-live-p (get-buffer default)))
 	(progn
 	  (setq ido-temp-list
 		(delete default ido-temp-list))
@@ -3590,6 +3590,7 @@
   ;; Used by `ido-get-buffers-in-frames' to walk through all windows
   (let ((buf (buffer-name (window-buffer win))))
 	(unless (or (member buf ido-bufs-in-frame)
+		    (minibufferp buf)
 		    (member buf ido-ignore-item-temp-list))
 	  ;; Only add buf if it is not already in list.
 	  ;; This prevents same buf in two different windows being
@@ -3830,6 +3831,27 @@
 	      ;;(add-hook 'completion-setup-hook 'completion-setup-function)
 	      (display-completion-list completion-list)))))))
 
+(defun ido-kill-buffer-internal (buf)
+  "Kill buffer BUF and rebuild ido's buffer list if needed."
+  (if (not (kill-buffer buf))
+      ;; buffer couldn't be killed.
+      (setq ido-rescan t)
+    ;; else buffer was killed so remove name from list.
+    (setq ido-cur-list (delq buf ido-cur-list))
+    ;; Some packages, like uniquify.el, may rename buffers when one
+    ;; is killed, so we need to test this condition to avoid using
+    ;; an outdated list of buffer names. We don't want to always
+    ;; rebuild the list of buffers, as this alters the previous
+    ;; buffer order that the user was seeing on the prompt. However,
+    ;; when we rebuild the list, we try to keep the previous second
+    ;; buffer as the first one.
+    (catch 'update
+      (dolist (b ido-cur-list)
+	(unless (get-buffer b)
+	  (setq ido-cur-list (ido-make-buffer-list (cadr ido-matches)))
+	  (setq ido-rescan t)
+	  (throw 'update nil))))))
+
 ;;; KILL CURRENT BUFFER
 (defun ido-kill-buffer-at-head ()
   "Kill the buffer at the head of `ido-matches'.
@@ -3840,7 +3862,7 @@
     (let ((enable-recursive-minibuffers t)
 	  (buf (ido-name (car ido-matches))))
       (when buf
-	(kill-buffer buf)
+	(ido-kill-buffer-internal buf)
 	;; Check if buffer still exists.
 	(if (get-buffer buf)
 	    ;; buffer couldn't be killed.
@@ -3884,7 +3906,7 @@
      ((eq method 'kill)
       (if record
 	  (ido-record-command 'kill-buffer buffer))
-      (kill-buffer buffer))
+      (ido-kill-buffer-internal buffer))
 
      ((eq method 'other-window)
       (if record
--- a/lisp/indent.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/indent.el	Thu Jan 21 07:04:21 2010 +0800
@@ -1,7 +1,7 @@
 ;;; indent.el --- indentation commands for Emacs
 
-;; Copyright (C) 1985, 1995, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;;   2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 
@@ -55,7 +55,11 @@
 Some programming language modes have their own variable to control this,
 e.g., `c-tab-always-indent', and do not respect this variable."
   :group 'indent
-  :type '(choice (const nil) (const t) (const always)))
+  :type '(choice
+	  (const :tag "Always indent" t)
+	  (const :tag "Indent if inside indentation, else TAB" nil)
+	  (const :tag "Indent, or if already indented complete" complete)))
+
 
 (defun indent-according-to-mode ()
   "Indent line in proper way for current major mode.
--- a/lisp/mail/sendmail.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/mail/sendmail.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/net/tramp.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/net/tramp.el	Thu Jan 21 07:04:21 2010 +0800
@@ -6890,7 +6890,7 @@
 
 If they are variables, this variable is a string containing a Perl
 implementation for this functionality.  This Perl program will be transferred
-to the remote host, and it is avalible as shell function with the same name.")
+to the remote host, and it is available as shell function with the same name.")
 
 (defun tramp-find-inline-encoding (vec)
   "Find an inline transfer encoding that works.
--- a/lisp/nxml/nxml-mode.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/nxml/nxml-mode.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/pcmpl-unix.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/progmodes/ada-mode.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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.
@@ -660,14 +677,6 @@
 	    "\\>"))
   "Regexp used in `ada-goto-matching-start'.")
 
-(defvar ada-matching-decl-start-re
-  (eval-when-compile
-    (concat "\\<"
-	    (regexp-opt
-	     '("is" "separate" "end" "declare" "if" "new" "begin" "generic" "when") t)
-	    "\\>"))
-  "Regexp used in `ada-goto-matching-decl-start'.")
-
 (defvar ada-loop-start-re
   "\\<\\(for\\|while\\|loop\\)\\>"
   "Regexp for the start of a loop.")
@@ -678,10 +687,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 +2113,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 +2348,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' =>
@@ -2455,7 +2468,7 @@
      ((and (= (downcase (char-after)) ?b)
 	   (looking-at "begin\\>"))
       (save-excursion
-	(if (ada-goto-matching-decl-start t)
+	(if (ada-goto-decl-start t)
 	    (list (progn (back-to-indentation) (point)) 0)
 	  (ada-indent-on-previous-lines nil orgpoint orgpoint))))
 
@@ -2648,8 +2661,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 +2688,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 +2717,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 +2738,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
@@ -2835,7 +2847,7 @@
 	      (if (looking-at "\\<begin\\>")
 		  (progn
 		    (setq indent (list (point) 0))
-		    (if (ada-goto-matching-decl-start t)
+		    (if (ada-goto-decl-start t)
 			(list (progn (back-to-indentation) (point)) 0)
 		      indent))
 		(list (progn (back-to-indentation) (point)) 0)
@@ -2960,6 +2972,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 +3071,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 +3103,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 +3135,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 +3153,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 +3312,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 +3330,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 +3352,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)))
@@ -3387,19 +3413,25 @@
 	match-dat
       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 +3458,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
 	;;
@@ -3463,13 +3493,13 @@
   (if (save-excursion
 	(ada-goto-previous-word)
 	(looking-at (concat "\\<" defun-name "\\> *:")))
-      t                                 ; do nothing
+      t                                 ; name matches
     ;; else
     ;;
     ;; 'accept' or 'package' ?
     ;;
     (unless (looking-at ada-subprog-start-re)
-      (ada-goto-matching-decl-start))
+      (ada-goto-decl-start))
     ;;
     ;; 'begin' of 'procedure'/'function'/'task' or 'declare'
     ;;
@@ -3502,14 +3532,20 @@
 	       (buffer-substring (point)
 				 (progn (forward-sexp 1) (point))))))))
 
-(defun ada-goto-matching-decl-start (&optional noerror recursive)
-  "Move point to the matching declaration start of the current 'begin'.
-If NOERROR is non-nil, it only returns nil if no match was found."
+(defun ada-goto-decl-start (&optional noerror)
+  "Move point to the declaration start of the current construct.
+If NOERROR is non-nil, return nil if no match was found;
+otherwise throw error."
   (let ((nest-count 1)
+        (regexp (eval-when-compile
+                  (concat "\\<"
+                          (regexp-opt
+                           '("is" "separate" "end" "declare" "if" "new" "begin" "generic" "when") t)
+                          "\\>")))
 
 	;;  first should be set to t if we should stop at the first
 	;;  "begin" we encounter.
-	(first (not recursive))
+	(first t)
 	(count-generic nil)
 	(stop-at-when nil)
 	)
@@ -3533,7 +3569,7 @@
     ;; search backward for interesting keywords
     (while (and
 	    (not (zerop nest-count))
-	    (ada-search-ignore-string-comment ada-matching-decl-start-re t))
+	    (ada-search-ignore-string-comment regexp t))
       ;;
       ;; calculate nest-depth
       ;;
@@ -3566,7 +3602,6 @@
 
 		  (if (looking-at "end")
 		      (ada-goto-matching-start 1 noerror t)
-		    ;; (ada-goto-matching-decl-start noerror t)
 
 		    (setq loop-again nil)
 		    (unless (looking-at "begin")
@@ -3594,34 +3629,50 @@
 	(setq first t))
        ;;
        ((looking-at "is")
-	;; check if it is only a type definition, but not a protected
-	;; type definition, which should be handled like a procedure.
-	(if (or (looking-at "is[ \t]+<>")
-		(save-excursion
-		  (forward-comment -10000)
-		  (forward-char -1)
-
-		  ;; Detect if we have a closing parenthesis (Could be
-		  ;; either the end of subprogram parameters or (<>)
-		  ;; in a type definition
-		  (if (= (char-after) ?\))
-		      (progn
-			(forward-char 1)
-			(backward-sexp 1)
-			(forward-comment -10000)
-			))
-		  (skip-chars-backward "a-zA-Z0-9_.'")
-		  (ada-goto-previous-word)
-		  (and
-		   (looking-at "\\<\\(sub\\)?type\\|case\\>")
+        ;; look for things to ignore
+        (if
+            (or
+             ;; generic formal parameter
+             (looking-at "is[ t]+<>")
+
+             ;; A type definition, or a case statement.  Note that the
+             ;; goto-matching-start above on 'end record' leaves us at
+             ;; 'record', not at 'type'.
+             ;;
+             ;; We get to a case statement here by calling
+             ;; 'ada-move-to-end' from inside a case statement; then
+             ;; we are not ignoring 'when'.
+             (save-excursion
+               ;; Skip type discriminants or case argument function call param list
+               (forward-comment -10000)
+               (forward-char -1)
+               (if (= (char-after) ?\))
+                   (progn
+                     (forward-char 1)
+                     (backward-sexp 1)
+                     (forward-comment -10000)
+                     ))
+               ;; skip type or case argument name
+               (skip-chars-backward "a-zA-Z0-9_.'")
+               (ada-goto-previous-word)
+               (and
+                ;; if it's a protected type, it's the decl start we
+                ;; are looking for; since we didn't see the 'end'
+                ;; above, we are inside it.
+                (looking-at "\\<\\(sub\\)?type\\|case\\>")
 		   (save-match-data
 		     (ada-goto-previous-word)
 		     (not (looking-at "\\<protected\\>"))))
-		  ))                    ; end of `or'
-	    (goto-char (match-beginning 0))
-	  (progn
-	    (setq nest-count (1- nest-count))
-	    (setq first nil))))
+               )                    ; end of type definition p
+
+             ;; null procedure declaration
+             (save-excursion (ada-goto-next-word) (looking-at "\\<null\\>"))
+             );; end or
+            ;; skip this construct
+            nil
+          ;; this is the right "is"
+          (setq nest-count (1- nest-count))
+          (setq first nil)))
 
        ;;
        ((looking-at "new")
@@ -4076,7 +4127,7 @@
 Assumes point to be at the end of a statement."
   (or (ada-in-paramlist-p)
       (save-excursion
-	(ada-goto-matching-decl-start t))))
+	(ada-goto-decl-start t))))
 
 
 (defun ada-looking-at-semi-or ()
@@ -4370,7 +4421,7 @@
 		  ;;
 		  ada-move-to-declaration
 		  (looking-at "\\<begin\\>")
-		  (ada-goto-matching-decl-start)
+		  (ada-goto-decl-start)
 		  (setq pos (point))))
 
 	    )                           ; end of save-excursion
@@ -4382,7 +4433,7 @@
       (set-syntax-table previous-syntax-table))))
 
 (defun ada-move-to-end ()
-  "Move point to the matching end of the block around point.
+  "Move point to the end of the block around point.
 Moves to 'begin' if in a declarative part."
   (interactive)
   (let ((pos (point))
@@ -4432,7 +4483,7 @@
 	      (ada-goto-matching-end 0))
 	     ;; package start
 	     ((save-excursion
-		(setq decl-start (and (ada-goto-matching-decl-start t) (point)))
+		(setq decl-start (and (ada-goto-decl-start t) (point)))
 		(and decl-start (looking-at "\\<package\\>")))
 	      (ada-goto-matching-end 1))
 
--- a/lisp/progmodes/cc-defs.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/progmodes/cc-defs.el	Thu Jan 21 07:04:21 2010 +0800
@@ -1217,12 +1217,14 @@
   ;; This macro does a hidden buffer change.
   `(progn
      (c-put-char-property ,beg 'category 'c-cpp-delimiter)
-     (c-put-char-property ,end 'category 'c-cpp-delimiter)))
+     (if (< ,end (point-max))
+	 (c-put-char-property ,end 'category 'c-cpp-delimiter))))
 (defmacro c-clear-cpp-delimiters (beg end)
   ;; This macro does a hidden buffer change.
   `(progn
      (c-clear-char-property ,beg 'category)
-     (c-clear-char-property ,end 'category)))
+     (if (< ,end (point-max))
+	 (c-clear-char-property ,end 'category))))
 
 (defsubst c-comment-out-cpps ()
   ;; Render all preprocessor constructs syntactically commented out.
--- a/lisp/startup.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/startup.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/term/x-win.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/term/x-win.el	Thu Jan 21 07:04:21 2010 +0800
@@ -133,9 +133,9 @@
 down, this function is called.  It calls the functions in the hook
 `emacs-save-session-functions'.  Functions are called with the current
 buffer set to a temporary buffer.  Functions should use `insert' to insert
-lisp code to save the session state.  The buffer is saved
-in a file in the home directory of the user running Emacs.  The file
-is evaluated when Emacs is restarted by the session manager.
+lisp code to save the session state.  The buffer is saved in a file in the
+home directory of the user running Emacs.  The file is evaluated when
+Emacs is restarted by the session manager.
 
 If any of the functions returns non-nil, no more functions are called
 and this function returns non-nil.  This will inform the session manager
@@ -1286,7 +1286,7 @@
 ")
 
 ;; Get a selection value of type TYPE by calling x-get-selection with
-;; an appropiate DATA-TYPE argument decided by `x-select-request-type'.
+;; an appropriate DATA-TYPE argument decided by `x-select-request-type'.
 ;; The return value is already decoded.  If x-get-selection causes an
 ;; error, this function return nil.
 
@@ -1425,7 +1425,7 @@
 (declare-function accelerate-menu "xmenu.c" (&optional frame) t)
 
 (defun x-menu-bar-open (&optional frame)
-  "Open the menu bar if `menu-bar-mode' is on. otherwise call `tmm-menubar'."
+  "Open the menu bar if `menu-bar-mode' is on, otherwise call `tmm-menubar'."
   (interactive "i")
   (if (and menu-bar-mode
 	   (fboundp 'accelerate-menu))
@@ -1482,7 +1482,7 @@
   ;; Create the standard fontset.
   (condition-case err
 	(create-fontset-from-fontset-spec standard-fontset-spec t)
-    (error (display-warning 
+    (error (display-warning
 	    'initialization
 	    (format "Creation of the standard fontset failed: %s" err)
 	    :error)))
@@ -1654,7 +1654,7 @@
   :group 'x)
 
 (defcustom icon-map-list '(x-gtk-stock-map)
-  "A list of alists that maps icon file names to stock/named icons.
+  "A list of alists that map icon file names to stock/named icons.
 The alists are searched in the order they appear.  The first match is used.
 The keys in the alists are file names without extension and with two directory
 components.  For example, to map /usr/share/emacs/22.1.1/etc/images/open.xpm
--- a/lisp/textmodes/artist.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/textmodes/artist.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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
@@ -5528,7 +5528,7 @@
 ;;         See `artist-draw-rect' for an example.
 ;;
 ;;         You must call the init-fn, the prep-fill-fn, arrow-set-fn
-;;         and the exit-fn at the apropriate points.
+;;         and the exit-fn at the appropriate points.
 ;;
 ;;         When artist-mouse-draw-xxx ends, the shape for your mode
 ;;         must be completely drawn.
@@ -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
@@ -5561,7 +5561,7 @@
 ;;         work.
 ;;
 ;;         You must call the init-fn, the prep-fill-fn, arrow-set-fn
-;;         and the exit-fn at the apropriate points.
+;;         and the exit-fn at the appropriate points.
 ;;
 ;;      e. Add your new mode to the master table, `artist-mt'.
 ;;
--- a/lisp/vc-dir.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/vc-dir.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/vc-dispatcher.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/vc.el	Thu Jan 21 07:04:21 2010 +0800
@@ -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/lisp/whitespace.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/lisp/whitespace.el	Thu Jan 21 07:04:21 2010 +0800
@@ -397,14 +397,14 @@
    spaces		SPACEs and HARD SPACEs are visualized via
 			faces.
 
-   lines		lines whose have columns beyond
+   lines		lines which have columns beyond
 			`whitespace-line-column' are highlighted via
-			faces .
+			faces.
 			Whole line is highlighted.
 			It has precedence over `lines-tail' (see
 			below).
 
-   lines-tail		lines whose have columns beyond
+   lines-tail		lines which have columns beyond
 			`whitespace-line-column' are highlighted via
 			faces.
 			But only the part of line which goes
@@ -462,7 +462,7 @@
 If nil, don't visualize TABs, (HARD) SPACEs and NEWLINEs via faces and
 via display table.
 
-There is an evaluation order for some values, if some values are
+There is an evaluation order for some values, if they are
 included in `whitespace-style' list.  For example, if
 indentation, indentation::tab and/or indentation::space are
 included in `whitespace-style' list.  The evaluation order for
@@ -1134,7 +1134,7 @@
 Use `global-whitespace-newline-mode' only for NEWLINE
 visualization exclusively.  For other visualizations, including
 NEWLINE visualization together with (HARD) SPACEs and/or TABs,
-please, use `global-whitespace-mode'.
+please use `global-whitespace-mode'.
 
 See also `whitespace-newline' and `whitespace-display-mappings'."
   :lighter    " NL"
@@ -2046,7 +2046,7 @@
 	((quit error)
 	 (whitespace-help-off)
 	 (error (error-message-string data)))))
-    (list sym)))			; return the apropriate symbol
+    (list sym)))			; return the appropriate symbol
 
 
 (defun whitespace-toggle-list (local-p arg the-list)
--- a/src/ChangeLog	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -1,3 +1,46 @@
+2010-01-20  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (consume_chars): If ! multibyte and the encoder is ccl,
+	treat the source as actual byte sequence.
+
+2010-01-19  Alan Mackenzie  <acm@muc.de>
+
+	Fix spurious before-change-functions invocation from (insert ?\n).
+	* textprop.c (set_text_properties): rename parameter
+	`signal_after_change_p' to `coherent_change_p', and make the
+	invocation of `modify_region' conditional on it.
+
+2010-01-19  Jan Djärv  <jan.h.d@swipnet.se>
+
+	* xsettings.c (apply_xft_settings): Save settings in Vxft_settings
+	for debug purpose.
+	(syms_of_xsettings): Declare xft-settings.
+
+2010-01-18  Chong Yidong  <cyd@stupidchicken.com>
+
+	* editfns.c (Fcurrent_time_string): Doc fix (Bug#5408).
+
+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	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/Makefile.in	Thu Jan 21 07:04:21 2010 +0800
@@ -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	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/atimer.h	Thu Jan 21 07:04:21 2010 +0800
@@ -43,7 +43,7 @@
   /* Timer is ripe at now plus an offset.  */
   ATIMER_RELATIVE,
 
-  /* Timer runs continously.  */
+  /* Timer runs continuously.  */
   ATIMER_CONTINUOUS
 };
 
--- a/src/coding.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/coding.c	Thu Jan 21 07:04:21 2010 +0800
@@ -7417,7 +7417,8 @@
 	{
 	  EMACS_INT bytes;
 
-	  if (coding->encoder == encode_coding_raw_text)
+	  if (coding->encoder == encode_coding_raw_text
+	      || coding->encoder == encode_coding_ccl)
 	    c = *src++, pos++;
 	  else if ((bytes = MULTIBYTE_LENGTH (src, src_end)) > 0)
 	    c = STRING_CHAR_ADVANCE_NO_UNIFY (src), pos += bytes;
--- a/src/editfns.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/editfns.c	Thu Jan 21 07:04:21 2010 +0800
@@ -1897,7 +1897,7 @@
 }
 
 DEFUN ("current-time-string", Fcurrent_time_string, Scurrent_time_string, 0, 1, 0,
-       doc: /* Return the current time, as a human-readable string.
+       doc: /* Return the current local time, as a human-readable string.
 Programs can use this function to decode a time,
 since the number of columns in each field is fixed
 if the year is in the range 1000-9999.
--- a/src/emacs.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/emacs.c	Thu Jan 21 07:04:21 2010 +0800
@@ -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/textprop.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/textprop.c	Thu Jan 21 07:04:21 2010 +0800
@@ -1346,13 +1346,15 @@
 /* Replace properties of text from START to END with new list of
    properties PROPERTIES.  OBJECT is the buffer or string containing
    the text.  OBJECT nil means use the current buffer.
-   SIGNAL_AFTER_CHANGE_P nil means don't signal after changes.  Value
-   is nil if the function _detected_ that it did not replace any
-   properties, non-nil otherwise.  */
+   COHERENT_CHANGE_P nil means this is being called as an internal
+   subroutine, rather than as a change primitive with checking of
+   read-only, invoking change hooks, etc..  Value is nil if the
+   function _detected_ that it did not replace any properties, non-nil
+   otherwise.  */
 
 Lisp_Object
-set_text_properties (start, end, properties, object, signal_after_change_p)
-     Lisp_Object start, end, properties, object, signal_after_change_p;
+set_text_properties (start, end, properties, object, coherent_change_p)
+     Lisp_Object start, end, properties, object, coherent_change_p;
 {
   register INTERVAL i;
   Lisp_Object ostart, oend;
@@ -1397,12 +1399,12 @@
 	return Qnil;
     }
 
-  if (BUFFERP (object))
+  if (BUFFERP (object) && !NILP (coherent_change_p))
     modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
 
   set_text_properties_1 (start, end, properties, object, i);
 
-  if (BUFFERP (object) && !NILP (signal_after_change_p))
+  if (BUFFERP (object) && !NILP (coherent_change_p))
     signal_after_change (XINT (start), XINT (end) - XINT (start),
 			 XINT (end) - XINT (start));
   return Qt;
--- a/src/xdisp.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/xdisp.c	Thu Jan 21 07:04:21 2010 +0800
@@ -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/xsettings.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/xsettings.c	Thu Jan 21 07:04:21 2010 +0800
@@ -42,6 +42,8 @@
 static struct x_display_info *first_dpyinfo;
 static Lisp_Object Qfont_name, Qfont_render;
 static int use_system_font;
+static Lisp_Object Vxft_settings;
+
 
 #ifdef HAVE_GCONF
 static GConfClient *gconf_client;
@@ -406,12 +408,13 @@
   FcPattern *pat;
   struct xsettings settings, oldsettings;
   int changed = 0;
+  char buf[256];
 
   if (!read_xft_settings (dpyinfo, &settings))
     return;
 
   memset (&oldsettings, 0, sizeof (oldsettings));
-
+  buf[0] = '\0';
   pat = FcPatternCreate ();
   XftDefaultSubstitute (dpyinfo->display,
                         XScreenNumberOfScreen (dpyinfo->screen),
@@ -428,20 +431,30 @@
       FcPatternDel (pat, FC_ANTIALIAS);
       FcPatternAddBool (pat, FC_ANTIALIAS, settings.aa);
       ++changed;
+      oldsettings.aa = settings.aa;
     }
+  sprintf (buf, "Antialias: %d", oldsettings.aa);
+
   if ((settings.seen & SEEN_HINTING) != 0
       && oldsettings.hinting != settings.hinting)
     {
       FcPatternDel (pat, FC_HINTING);
       FcPatternAddBool (pat, FC_HINTING, settings.hinting);
       ++changed;
+      oldsettings.hinting = settings.hinting;
     }
+  if (strlen (buf) > 0) strcat (buf, ", ");
+  sprintf (buf+strlen (buf), "Hinting: %d", oldsettings.hinting);
   if ((settings.seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings.rgba)
     {
       FcPatternDel (pat, FC_RGBA);
       FcPatternAddInteger (pat, FC_RGBA, settings.rgba);
+      oldsettings.rgba = settings.rgba;
       ++changed;
     }
+  if (strlen (buf) > 0) strcat (buf, ", ");
+  sprintf (buf+strlen (buf), "RGBA: %d", oldsettings.rgba);
+
   /* Older fontconfig versions don't have FC_LCD_FILTER. */
   if ((settings.seen & SEEN_LCDFILTER) != 0
       && oldsettings.lcdfilter != settings.lcdfilter)
@@ -449,14 +462,22 @@
       FcPatternDel (pat, FC_LCD_FILTER);
       FcPatternAddInteger (pat, FC_LCD_FILTER, settings.lcdfilter);
       ++changed;
+      oldsettings.lcdfilter = settings.lcdfilter;
     }
+  if (strlen (buf) > 0) strcat (buf, ", ");
+  sprintf (buf+strlen (buf), "LCDFilter: %d", oldsettings.lcdfilter);
+
   if ((settings.seen & SEEN_HINTSTYLE) != 0
       && oldsettings.hintstyle != settings.hintstyle)
     {
       FcPatternDel (pat, FC_HINT_STYLE);
       FcPatternAddInteger (pat, FC_HINT_STYLE, settings.hintstyle);
       ++changed;
+      oldsettings.hintstyle = settings.hintstyle;
     }
+  if (strlen (buf) > 0) strcat (buf, ", ");
+  sprintf (buf+strlen (buf), "Hintstyle: %d", oldsettings.hintstyle);
+
   if ((settings.seen & SEEN_DPI) != 0 && oldsettings.dpi != settings.dpi
       && settings.dpi > 0)
     {
@@ -465,7 +486,8 @@
       FcPatternDel (pat, FC_DPI);
       FcPatternAddDouble (pat, FC_DPI, settings.dpi);
       ++changed;
-
+      oldsettings.dpi = settings.dpi;
+      
       /* Change the DPI on this display and all frames on the display.  */
       dpyinfo->resy = dpyinfo->resx = settings.dpi;
       FOR_EACH_FRAME (tail, frame)
@@ -474,12 +496,16 @@
           XFRAME (frame)->resy = XFRAME (frame)->resx = settings.dpi;
     }
 
+  if (strlen (buf) > 0) strcat (buf, ", ");
+  sprintf (buf+strlen (buf), "DPI: %lf", oldsettings.dpi);
+
   if (changed)
     {
       XftDefaultSet (dpyinfo->display, pat);
       if (send_event_p)
         store_font_changed_event (Qfont_render,
                                   XCAR (dpyinfo->name_list_element));
+      Vxft_settings = make_string (buf, strlen (buf));
     }
   else
     FcPatternDestroy (pat);
@@ -638,6 +664,10 @@
     doc: /* *Non-nil means to use the system defined font.  */);
   use_system_font = 0;
 
+  DEFVAR_LISP ("xft-settings", &Vxft_settings,
+               doc: /* Font settings applied to Xft.  */);
+  Vxft_settings = make_string ("", 0);
+
 #ifdef HAVE_XFT
   Fprovide (intern_c_string ("font-render-setting"), Qnil);
 #ifdef HAVE_GCONF
--- a/src/xterm.c	Sat Jan 16 07:16:26 2010 +0800
+++ b/src/xterm.c	Thu Jan 21 07:04:21 2010 +0800
@@ -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.  */
--- a/test/ChangeLog	Sat Jan 16 07:16:26 2010 +0800
+++ b/test/ChangeLog	Thu Jan 21 07:04:21 2010 +0800
@@ -1,3 +1,10 @@
+2010-01-18  Juanma Barranquero  <lekktu@gmail.com>
+
+	* cedet/semantic-tests.el (semanticdb-test-gnu-global)
+	(semantic-lex-test-full-depth, semantic-symref-test-count-hits-in-tag):
+	Fix typos in docstrings and error messages.
+	(semanticdb-ebrowse-run-tests): Fix typos in error messages.
+
 2010-01-14  Juanma Barranquero  <lekktu@gmail.com>
 
 	* cedet/cedet-utests.el (cedet-utest-log-shutdown, pulse-test):
--- a/test/cedet/semantic-tests.el	Sat Jan 16 07:16:26 2010 +0800
+++ b/test/cedet/semantic-tests.el	Thu Jan 21 07:04:21 2010 +0800
@@ -58,7 +58,7 @@
   (when (not (or (eq major-mode 'c-mode)
 		 (eq major-mode 'c++-mode)))
     (error "Please make your default buffer be a C or C++ file, then
-run the test again..")))
+run the test again")))
 
 (defun semanticdb-ebrowse-dump ()
   "Find the first loaded ebrowse table, and dump out the contents."
@@ -83,7 +83,7 @@
 (defun semanticdb-test-gnu-global (searchfor &optional standardfile)
   "Test the GNU Global semanticdb.
 Argument SEARCHFOR is the text to search for.
-If optional arg STANDARDFILE is non nil, use a standard file w/ global enabled."
+If optional arg STANDARDFILE is non-nil, use a standard file w/ global enabled."
   (interactive "sSearch For Tag: \nP")
 
   (require 'data-debug)
@@ -235,7 +235,7 @@
 
 (defun semantic-lex-test-full-depth (arg)
   "Test the semantic lexer in the current buffer parsing through lists.
-Usually the lexer parses
+Usually the lexer parses.
 If universal argument ARG, then try the whole buffer."
   (interactive "P")
   (let* ((start (current-time))
@@ -309,7 +309,7 @@
 
 (defun semantic-symref-test-count-hits-in-tag ()
   "Lookup in the current tag the symbol under point.
-the count all the other references to the same symbol within the
+Then count all the other references to the same symbol within the
 tag that contains point, and return that."
   (interactive)
   (let* ((ctxt (semantic-analyze-current-context))
@@ -323,7 +323,7 @@
        (semantic-tag-start tag)
        (semantic-tag-end tag))
       (when (interactive-p)
-	(message "Found %d occurances of %s in %.2f seconds"
+	(message "Found %d occurrences of %s in %.2f seconds"
 		 Lcount (semantic-tag-name target)
 		 (semantic-elapsed-time start (current-time))))
       Lcount)))