changeset 107638:772da445ced7

Merge from mainline.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 06 Mar 2010 05:16:27 -0500
parents 59df2de8b31d (current diff) 8bc19ba3da90 (diff)
children 844012bdb5dd
files src/buffer.c
diffstat 90 files changed, 788 insertions(+), 384 deletions(-) [+]
line wrap: on
line diff
--- a/admin/FOR-RELEASE	Sat Feb 27 07:43:30 2010 -0500
+++ b/admin/FOR-RELEASE	Sat Mar 06 05:16:27 2010 -0500
@@ -252,8 +252,6 @@
 
 * PLANNED ADDITIONS
 
-** CEDET (not for 23.1 due to paperwork issues, perhaps for 23.2)
-** js2-mode
 ** pov-mode (probably not for Emacs-23: waiting for a Free POV-Ray).
 ** gas-mode ?
 
--- a/doc/emacs/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/emacs/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,10 @@
+2010-03-02  Chong Yidong  <cyd@stupidchicken.com>
+
+	* frames.texi (Mouse Avoidance): Mention make-pointer-invisible.
+
+	* display.texi (Display Custom): Document make-pointer-invisible and
+	underline-minimum-offset.  Remove inverse-video.
+
 2010-02-21  Chong Yidong  <cyd@stupidchicken.com>
 
 	* frames.texi (Frame Commands): Note that the last ordinary frame can
--- a/doc/emacs/display.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/emacs/display.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -1278,10 +1278,6 @@
 @c the reason for that pxref is because an xref early in the
 @c ``echo area'' section leads here.
 
-@vindex inverse-video
-  If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
-to invert all the lines of the display from what they normally are.
-
 @vindex visible-bell
   If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
 to make the whole screen blink when it would normally make an audible bell
@@ -1296,35 +1292,51 @@
 
 @vindex baud-rate
   The variable @anchor{baud-rate}@code{baud-rate} holds the output
-speed of the terminal, as far as Emacs knows.  Setting this variable
-does not change the speed of actual data transmission, but the value
-is used for calculations.  On text-only terminals, it affects padding,
-and decisions about whether to scroll part of the screen or redraw it
-instead.  It also affects the behavior of incremental search.
-
-  On graphical displays, @code{baud-rate} is only used to determine
-how frequently to look for pending input during display updating.  A
+speed of the terminal.  Setting this variable does not change the
+speed of actual data transmission, but the value is used for
+calculations.  On text-only terminals, it affects padding, and
+decisions about whether to scroll part of the screen or redraw it
+instead.  It also affects the behavior of incremental search.  On
+graphical displays, @code{baud-rate} is only used to determine how
+frequently to look for pending input during display updating.  A
 higher value of @code{baud-rate} means that check for pending input
 will be done less frequently.
 
+@cindex mouse pointer
 @cindex hourglass pointer display
+@vindex display-hourglass
 @vindex hourglass-delay
-  On graphical displays, Emacs can optionally display the mouse pointer
-in a special shape to say that Emacs is busy.  To turn this feature on
-or off, customize the group @code{cursor}.  You can also control the
-amount of time Emacs must remain busy before the busy indicator is
-displayed, by setting the variable @code{hourglass-delay}.
+  On graphical displays, Emacs displays the mouse pointer as an
+hourglass if Emacs is busy.  To disable this feature, set the variable
+@code{display-hourglass} to @code{nil}.  The variable
+@code{hourglass-delay} determines the number of seconds of ``busy
+time'' before the hourglass is shown; the default is 1.
+
+@vindex make-pointer-invisible
+  If the mouse pointer lies inside an Emacs frame, Emacs makes it
+invisible each time you type a character to insert text, to prevent it
+from obscuring the text.  (To be precise, the hiding occurs when you
+type a ``self-inserting'' character.  @xref{Inserting Text}.)  Moving
+the mouse pointer makes it visible again.  To disable this feature,
+set the variable @code{make-pointer-invisible} to @code{nil}.
+
+@vindex underline-minimum-offset
+@vindex x-underline-at-descent-line
+  On graphical displays, the variable @code{underline-minimum-offset}
+determines the minimum distance between the baseline and underline, in
+pixels, for underlined text.  By default, the value is 1; increasing
+it may improve the legibility of underlined text for certain fonts.
+(However, Emacs will never draw the underline below the current line
+area.)  The variable @code{x-underline-at-descent-line} determines how
+to draw underlined text.  The default is @code{nil}, which means to
+draw it at the baseline level of the font; if you change it to
+@code{nil}, Emacs draws the underline at the same height as the font's
+descent line.
 
 @vindex overline-margin
-  On graphical displays, the variable @code{overline-margin} specifies
-the vertical position of an overline above the text, including the
-height of the overline itself, in pixels.  The default value is 2.
-
-@vindex x-underline-at-descent-line
-  On graphical displays, Emacs normally draws an underline at the
-baseline level of the font.  If @code{x-underline-at-descent-line} is
-non-@code{nil}, Emacs draws the underline at the same height as the
-font's descent line.
+  The variable @code{overline-margin} specifies the vertical position
+of an overline above the text, including the height of the overline
+itself, in pixels; the default is 2.
 
 @findex tty-suppress-bold-inverse-default-colors
   On some text-only terminals, bold face and inverse video together
--- a/doc/emacs/frames.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/emacs/frames.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -50,7 +50,7 @@
 * Tool Bars::           Enabling and disabling the tool bar.
 * Dialog Boxes::        Controlling use of dialog boxes.
 * Tooltips::            Displaying information at the current mouse position.
-* Mouse Avoidance::     Moving the mouse pointer out of the way.
+* Mouse Avoidance::     Preventing the mouse pointer from obscuring text.
 * Non-Window Terminals::  Multiple frames on terminals that show only one.
 * Text-Only Mouse::     Using the mouse in text-only terminals.
 @end menu
@@ -1072,12 +1072,20 @@
 @cindex avoiding mouse in the way of your typing
 @cindex mouse avoidance
 
+  On graphical terminals, the mouse pointer may obscure the text in
+the Emacs frame.  Emacs provides two methods to avoid this problem.
+
+@vindex make-pointer-invisible
+  Firstly, Emacs hides the mouse pointer each time you type a
+self-inserting character, if the pointer lies inside an Emacs frame;
+moving the mouse pointer makes it visible again.  To disable this
+feature, set the variable @code{make-pointer-invisible} to @code{nil}.
+
 @vindex mouse-avoidance-mode
-Mouse Avoidance mode keeps the mouse pointer away from point, to avoid
-obscuring text you want to edit.  Whenever it moves the mouse, it also
-raises the frame.  To use Mouse Avoidance mode, customize the variable
-@code{mouse-avoidance-mode}.  You can set this to various values to
-move the mouse in several ways:
+  Secondly, you can use Mouse Avoidance mode, a minor mode, to keep
+the mouse pointer away from point.  To use Mouse Avoidance mode,
+customize the variable @code{mouse-avoidance-mode}.  You can set this
+to various values to move the mouse in several ways:
 
 @table @code
 @item banish
@@ -1098,7 +1106,8 @@
 
 @findex mouse-avoidance-mode
 You can also use the command @kbd{M-x mouse-avoidance-mode} to enable
-the mode.
+the mode.  Whenever Mouse Avoidance mode moves the mouse, it also
+raises the frame.
 
 @node Non-Window Terminals
 @section Non-Window Terminals
--- a/doc/lispref/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/lispref/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,12 @@
+2010-03-03  Glenn Morris  <rgm@gnu.org>
+
+	* numbers.texi (Integer Basics, Bitwise Operations):
+	* objects.texi (Integer Type): Update for integers now being 30-bit.
+
+2010-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+	* display.texi (Low-Level Font): Document :otf font-spec property.
+
 2010-02-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* display.texi (Line Height): Avoid obsolete special default variables
--- a/doc/lispref/display.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/lispref/display.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -3068,6 +3068,26 @@
 
 @item :script
 The script that the font must support (a symbol).
+
+@item :otf
+The font must be an OpenType font that supports these OpenType
+features, provided Emacs is compiled with support for @samp{libotf} (a
+library for performing complex text layout in certain scripts).  The
+value must be a list of the form
+
+@smallexample
+@code{(@var{script-tag} @var{langsys-tag} @var{gsub} @var{gpos})}
+@end smallexample
+
+where @var{script-tag} is the OpenType script tag symbol;
+@var{langsys-tag} is the OpenType language system tag symbol, or
+@code{nil} to use the default language system; @code{gsub} is a list
+of OpenType GSUB feature tag symbols, or @code{nil} if none is
+required; and @code{gpos} is a list of OpenType GPOS feature tag
+symbols, or @code{nil} if none is required.  If @code{gsub} or
+@code{gpos} is a list, a @code{nil} element in that list means that
+the font must not match any of the remaining tag symbols.  The
+@code{gpos} element may be omitted.
 @end table
 @end defun
 
--- a/doc/lispref/numbers.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/lispref/numbers.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -1,7 +1,8 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+@c   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c   Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../../info/numbers
 @node Numbers, Strings and Characters, Lisp Data Types, Top
@@ -36,22 +37,22 @@
 @section Integer Basics
 
   The range of values for an integer depends on the machine.  The
-minimum range is @minus{}268435456 to 268435455 (29 bits; i.e.,
+minimum range is @minus{}536870912 to 536870911 (30 bits; i.e.,
 @ifnottex
--2**28
+-2**29
 @end ifnottex
 @tex
-@math{-2^{28}}
+@math{-2^{29}}
 @end tex
 to
 @ifnottex
-2**28 - 1),
+2**29 - 1),
 @end ifnottex
 @tex
-@math{2^{28}-1}),
+@math{2^{29}-1}),
 @end tex
 but some machines may provide a wider range.  Many examples in this
-chapter assume an integer has 29 bits.
+chapter assume an integer has 30 bits.
 @cindex overflow
 
   The Lisp reader reads an integer as a sequence of digits with optional
@@ -62,7 +63,7 @@
  1.              ; @r{The integer 1.}
 +1               ; @r{Also the integer 1.}
 -1               ; @r{The integer @minus{}1.}
- 536870913       ; @r{Also the integer 1, due to overflow.}
+ 1073741825      ; @r{Also the integer 1, due to overflow.}
  0               ; @r{The integer 0.}
 -0               ; @r{The integer 0.}
 @end example
@@ -93,10 +94,10 @@
 bitwise operators (@pxref{Bitwise Operations}), it is often helpful to
 view the numbers in their binary form.
 
-  In 29-bit binary, the decimal integer 5 looks like this:
+  In 30-bit binary, the decimal integer 5 looks like this:
 
 @example
-0 0000  0000 0000  0000 0000  0000 0101
+00 0000  0000 0000  0000 0000  0000 0101
 @end example
 
 @noindent
@@ -106,12 +107,12 @@
   The integer @minus{}1 looks like this:
 
 @example
-1 1111  1111 1111  1111 1111  1111 1111
+11 1111  1111 1111  1111 1111  1111 1111
 @end example
 
 @noindent
 @cindex two's complement
-@minus{}1 is represented as 29 ones.  (This is called @dfn{two's
+@minus{}1 is represented as 30 ones.  (This is called @dfn{two's
 complement} notation.)
 
   The negative integer, @minus{}5, is creating by subtracting 4 from
@@ -119,24 +120,24 @@
 @minus{}5 looks like this:
 
 @example
-1 1111  1111 1111  1111 1111  1111 1011
+11 1111  1111 1111  1111 1111  1111 1011
 @end example
 
-  In this implementation, the largest 29-bit binary integer value is
-268,435,455 in decimal.  In binary, it looks like this:
+  In this implementation, the largest 30-bit binary integer value is
+536,870,911 in decimal.  In binary, it looks like this:
 
 @example
-0 1111  1111 1111  1111 1111  1111 1111
+01 1111  1111 1111  1111 1111  1111 1111
 @end example
 
   Since the arithmetic functions do not check whether integers go
-outside their range, when you add 1 to 268,435,455, the value is the
-negative integer @minus{}268,435,456:
+outside their range, when you add 1 to 536,870,911, the value is the
+negative integer @minus{}536,870,912:
 
 @example
-(+ 1 268435455)
-     @result{} -268435456
-     @result{} 1 0000  0000 0000  0000 0000  0000 0000
+(+ 1 536870911)
+     @result{} -536870912
+     @result{} 10 0000  0000 0000  0000 0000  0000 0000
 @end example
 
   Many of the functions described in this chapter accept markers for
@@ -820,19 +821,19 @@
 The function @code{lsh}, like all Emacs Lisp arithmetic functions, does
 not check for overflow, so shifting left can discard significant bits
 and change the sign of the number.  For example, left shifting
-268,435,455 produces @minus{}2 on a 29-bit machine:
+536,870,911 produces @minus{}2 on a 30-bit machine:
 
 @example
-(lsh 268435455 1)          ; @r{left shift}
+(lsh 536870911 1)          ; @r{left shift}
      @result{} -2
 @end example
 
-In binary, in the 29-bit implementation, the argument looks like this:
+In binary, in the 30-bit implementation, the argument looks like this:
 
 @example
 @group
-;; @r{Decimal 268,435,455}
-0 1111  1111 1111  1111 1111  1111 1111
+;; @r{Decimal 536,870,911}
+01 1111  1111 1111  1111 1111  1111 1111
 @end group
 @end example
 
@@ -842,7 +843,7 @@
 @example
 @group
 ;; @r{Decimal @minus{}2}
-1 1111  1111 1111  1111 1111  1111 1110
+11 1111  1111 1111  1111 1111  1111 1110
 @end group
 @end example
 @end defun
@@ -865,9 +866,9 @@
 @group
 (ash -6 -1) @result{} -3
 ;; @r{Decimal @minus{}6 becomes decimal @minus{}3.}
-1 1111  1111 1111  1111 1111  1111 1010
+11 1111  1111 1111  1111 1111  1111 1010
      @result{}
-1 1111  1111 1111  1111 1111  1111 1101
+11 1111  1111 1111  1111 1111  1111 1101
 @end group
 @end example
 
@@ -876,11 +877,11 @@
 
 @example
 @group
-(lsh -6 -1) @result{} 268435453
-;; @r{Decimal @minus{}6 becomes decimal 268,435,453.}
-1 1111  1111 1111  1111 1111  1111 1010
+(lsh -6 -1) @result{} 536870909
+;; @r{Decimal @minus{}6 becomes decimal 536,870,909.}
+11 1111  1111 1111  1111 1111  1111 1010
      @result{}
-0 1111  1111 1111  1111 1111  1111 1101
+01 1111  1111 1111  1111 1111  1111 1101
 @end group
 @end example
 
@@ -890,34 +891,34 @@
 @c     with smallbook but not with regular book! --rjc 16mar92
 @smallexample
 @group
-                   ;  @r{             29-bit binary values}
+                   ;  @r{             30-bit binary values}
 
-(lsh 5 2)          ;   5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-     @result{} 20         ;      =  @r{0 0000  0000 0000  0000 0000  0001 0100}
+(lsh 5 2)          ;   5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+     @result{} 20         ;      =  @r{00 0000  0000 0000  0000 0000  0001 0100}
 @end group
 @group
 (ash 5 2)
      @result{} 20
-(lsh -5 2)         ;  -5  =  @r{1 1111  1111 1111  1111 1111  1111 1011}
-     @result{} -20        ;      =  @r{1 1111  1111 1111  1111 1111  1110 1100}
+(lsh -5 2)         ;  -5  =  @r{11 1111  1111 1111  1111 1111  1111 1011}
+     @result{} -20        ;      =  @r{11 1111  1111 1111  1111 1111  1110 1100}
 (ash -5 2)
      @result{} -20
 @end group
 @group
-(lsh 5 -2)         ;   5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-     @result{} 1          ;      =  @r{0 0000  0000 0000  0000 0000  0000 0001}
+(lsh 5 -2)         ;   5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+     @result{} 1          ;      =  @r{00 0000  0000 0000  0000 0000  0000 0001}
 @end group
 @group
 (ash 5 -2)
      @result{} 1
 @end group
 @group
-(lsh -5 -2)        ;  -5  =  @r{1 1111  1111 1111  1111 1111  1111 1011}
-     @result{} 134217726  ;      =  @r{0 0111  1111 1111  1111 1111  1111 1110}
+(lsh -5 -2)        ;  -5  =  @r{11 1111  1111 1111  1111 1111  1111 1011}
+     @result{} 268435454  ;      =  @r{00 0111  1111 1111  1111 1111  1111 1110}
 @end group
 @group
-(ash -5 -2)        ;  -5  =  @r{1 1111  1111 1111  1111 1111  1111 1011}
-     @result{} -2         ;      =  @r{1 1111  1111 1111  1111 1111  1111 1110}
+(ash -5 -2)        ;  -5  =  @r{11 1111  1111 1111  1111 1111  1111 1011}
+     @result{} -2         ;      =  @r{11 1111  1111 1111  1111 1111  1111 1110}
 @end group
 @end smallexample
 @end defun
@@ -952,23 +953,23 @@
 
 @smallexample
 @group
-                   ; @r{               29-bit binary values}
+                   ; @r{               30-bit binary values}
 
-(logand 14 13)     ; 14  =  @r{0 0000  0000 0000  0000 0000  0000 1110}
-                   ; 13  =  @r{0 0000  0000 0000  0000 0000  0000 1101}
-     @result{} 12         ; 12  =  @r{0 0000  0000 0000  0000 0000  0000 1100}
+(logand 14 13)     ; 14  =  @r{00 0000  0000 0000  0000 0000  0000 1110}
+                   ; 13  =  @r{00 0000  0000 0000  0000 0000  0000 1101}
+     @result{} 12         ; 12  =  @r{00 0000  0000 0000  0000 0000  0000 1100}
 @end group
 
 @group
-(logand 14 13 4)   ; 14  =  @r{0 0000  0000 0000  0000 0000  0000 1110}
-                   ; 13  =  @r{0 0000  0000 0000  0000 0000  0000 1101}
-                   ;  4  =  @r{0 0000  0000 0000  0000 0000  0000 0100}
-     @result{} 4          ;  4  =  @r{0 0000  0000 0000  0000 0000  0000 0100}
+(logand 14 13 4)   ; 14  =  @r{00 0000  0000 0000  0000 0000  0000 1110}
+                   ; 13  =  @r{00 0000  0000 0000  0000 0000  0000 1101}
+                   ;  4  =  @r{00 0000  0000 0000  0000 0000  0000 0100}
+     @result{} 4          ;  4  =  @r{00 0000  0000 0000  0000 0000  0000 0100}
 @end group
 
 @group
 (logand)
-     @result{} -1         ; -1  =  @r{1 1111  1111 1111  1111 1111  1111 1111}
+     @result{} -1         ; -1  =  @r{11 1111  1111 1111  1111 1111  1111 1111}
 @end group
 @end smallexample
 @end defun
@@ -982,18 +983,18 @@
 
 @smallexample
 @group
-                   ; @r{              29-bit binary values}
+                   ; @r{              30-bit binary values}
 
-(logior 12 5)      ; 12  =  @r{0 0000  0000 0000  0000 0000  0000 1100}
-                   ;  5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-     @result{} 13         ; 13  =  @r{0 0000  0000 0000  0000 0000  0000 1101}
+(logior 12 5)      ; 12  =  @r{00 0000  0000 0000  0000 0000  0000 1100}
+                   ;  5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+     @result{} 13         ; 13  =  @r{00 0000  0000 0000  0000 0000  0000 1101}
 @end group
 
 @group
-(logior 12 5 7)    ; 12  =  @r{0 0000  0000 0000  0000 0000  0000 1100}
-                   ;  5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-                   ;  7  =  @r{0 0000  0000 0000  0000 0000  0000 0111}
-     @result{} 15         ; 15  =  @r{0 0000  0000 0000  0000 0000  0000 1111}
+(logior 12 5 7)    ; 12  =  @r{00 0000  0000 0000  0000 0000  0000 1100}
+                   ;  5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+                   ;  7  =  @r{00 0000  0000 0000  0000 0000  0000 0111}
+     @result{} 15         ; 15  =  @r{00 0000  0000 0000  0000 0000  0000 1111}
 @end group
 @end smallexample
 @end defun
@@ -1007,18 +1008,18 @@
 
 @smallexample
 @group
-                   ; @r{              29-bit binary values}
+                   ; @r{              30-bit binary values}
 
-(logxor 12 5)      ; 12  =  @r{0 0000  0000 0000  0000 0000  0000 1100}
-                   ;  5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-     @result{} 9          ;  9  =  @r{0 0000  0000 0000  0000 0000  0000 1001}
+(logxor 12 5)      ; 12  =  @r{00 0000  0000 0000  0000 0000  0000 1100}
+                   ;  5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+     @result{} 9          ;  9  =  @r{00 0000  0000 0000  0000 0000  0000 1001}
 @end group
 
 @group
-(logxor 12 5 7)    ; 12  =  @r{0 0000  0000 0000  0000 0000  0000 1100}
-                   ;  5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
-                   ;  7  =  @r{0 0000  0000 0000  0000 0000  0000 0111}
-     @result{} 14         ; 14  =  @r{0 0000  0000 0000  0000 0000  0000 1110}
+(logxor 12 5 7)    ; 12  =  @r{00 0000  0000 0000  0000 0000  0000 1100}
+                   ;  5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
+                   ;  7  =  @r{00 0000  0000 0000  0000 0000  0000 0111}
+     @result{} 14         ; 14  =  @r{00 0000  0000 0000  0000 0000  0000 1110}
 @end group
 @end smallexample
 @end defun
@@ -1031,9 +1032,9 @@
 @example
 (lognot 5)
      @result{} -6
-;;  5  =  @r{0 0000  0000 0000  0000 0000  0000 0101}
+;;  5  =  @r{00 0000  0000 0000  0000 0000  0000 0101}
 ;; @r{becomes}
-;; -6  =  @r{1 1111  1111 1111  1111 1111  1111 1010}
+;; -6  =  @r{11 1111  1111 1111  1111 1111  1111 1010}
 @end example
 @end defun
 
--- a/doc/lispref/objects.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/lispref/objects.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -165,24 +165,24 @@
 @node Integer Type
 @subsection Integer Type
 
-  The range of values for integers in Emacs Lisp is @minus{}268435456 to
-268435455 (29 bits; i.e.,
+  The range of values for integers in Emacs Lisp is @minus{}536870912 to
+536870911 (30 bits; i.e.,
 @ifnottex
--2**28
+-2**29
 @end ifnottex
 @tex
-@math{-2^{28}}
+@math{-2^{29}}
 @end tex
 to
 @ifnottex
-2**28 - 1)
+2**29 - 1)
 @end ifnottex
 @tex
-@math{2^{28}-1})
+@math{2^{29}-1})
 @end tex
 on most machines.  (Some machines may provide a wider range.)  It is
 important to note that the Emacs Lisp arithmetic functions do not check
-for overflow.  Thus @code{(1+ 268435455)} is @minus{}268435456 on most
+for overflow.  Thus @code{(1+ 536870911)} is @minus{}536870912 on most
 machines.
 
   The read syntax for integers is a sequence of (base ten) digits with an
@@ -196,7 +196,7 @@
 1                ; @r{The integer 1.}
 1.               ; @r{Also the integer 1.}
 +1               ; @r{Also the integer 1.}
-536870913        ; @r{Also the integer 1 on a 29-bit implementation.}
+1073741825       ; @r{Also the integer 1 on a 30-bit implementation.}
 @end group
 @end example
 
--- a/doc/misc/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/misc/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,13 @@
+2010-03-03  Chong Yidong  <cyd@stupidchicken.com>
+
+	* faq.texi (Escape sequences in shell output): Note that ansi-color is
+	now enabled by default.
+
+2010-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+	* dbus.texi (Errors and Events): D-Bus messages are retrieved only,
+	when Emacs runs in interactive mode.  (Bug#5645)
+
 2010-02-16  Glenn Morris  <rgm@gnu.org>
 
 	* nxml-mode.texi (Commands for locating a schema): Fix keybinding.
--- a/doc/misc/dbus.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/misc/dbus.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -1591,8 +1591,9 @@
 @code{t}.
 @end defspec
 
-Incoming D-Bus messages are handled as Emacs events (see @pxref{Misc
-Events, , , elisp}).  The generated event has this form:
+Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc
+Events, , , elisp}.  They are retrieved only, when Emacs runs in
+interactive mode.  The generated event has this form:
 
 @lisp
 (dbus-event @var{bus} @var{type} @var{serial} @var{service} @var{path} @var{interface} @var{member} @var{handler}
--- a/doc/misc/faq.texi	Sat Feb 27 07:43:30 2010 -0500
+++ b/doc/misc/faq.texi	Sat Mar 06 05:16:27 2010 -0500
@@ -2617,22 +2617,19 @@
 @cindex Escape sequences in @code{ls} output
 @cindex @code{ls} in Shell mode
 
-This happens because @code{ls} is aliased to @samp{ls --color} in your
-shell init file.  You have two alternatives to solve this:
-
-@itemize @bullet
-@item
-Make the alias conditioned on the @code{EMACS} variable in the
-environment.  When Emacs runs a subsidiary shell, it exports the
-@code{EMACS} variable to that shell, with value equal to the absolute
-file name of Emacs.  You can
-unalias @code{ls} when that happens, thus limiting the alias to your
-interactive sessions.
-
-@item
-Install the @code{ansi-color} package (bundled with Emacs 21.1 and
-later), which converts these ANSI escape sequences into colors.
-@end itemize
+In many systems, @code{ls} is aliased to @samp{ls --color}, which
+prints using ANSI color escape sequences.  Emacs version 21.1 and
+later includes the @code{ansi-color} package, which lets Shell mode
+recognize these escape sequences.  In Emacs 23.2 and later, the
+package is enabled by default; in earlier versions you can enable it
+by typing @kbd{M-x ansi-color-for-comint-mode} in the Shell buffer, or
+by adding @code{(add-hook 'shell-mode-hook
+'ansi-color-for-comint-mode-on)} to your init file.
+
+In Emacs versions before 21.1, the @code{ansi-color} package is not
+included.  In that case, you need to unalias @code{ls} for interactive
+shells running in Emacs; this can be done by checking the @code{EMACS}
+variable in the environment.
 
 @node Fullscreen mode on MS-Windows
 @section How can I start Emacs in fullscreen mode on MS-Windows?
--- a/etc/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,41 @@
+2010-03-06  Glenn Morris  <rgm@gnu.org>
+
+	* srecode/default.srt (COPYRIGHT): Update template copyright to GPLv3+.
+
+2010-03-05  Glenn Morris  <rgm@gnu.org>
+
+	* refcards/orgcard.tex: Use pdflayout.sty.
+	* refcards/Makefile (orgcard.pdf): Special rule no longer needed.
+
+2010-03-02  Glenn Morris  <rgm@gnu.org>
+
+	* refcards/Makefile: For cs- and sk-, use pdfcsplain if available.
+	(pl-refcard.pdf): Let presence of pdfmex be another test for the
+	required TeX files.  Pass explicit output-format to tex command.
+	(orgcard.pdf): Use ps2pdf, since pdftex tends to produce a
+	portrait layout rather than the desired landscape.
+
+2010-03-01  Glenn Morris  <rgm@gnu.org>
+
+	* refcards/pl-refcard.tex: Double forward-slashes in URL for Mex.
+
+	* refcards/de-refcard.tex: Fix paren typo.
+
+	* refcards/ru-refcard.tex: Rename \year command to \cyear, since
+	the former seems to be already used in some TeX installations.
+
+	* refcards/calccard.tex, refcards/cs-dired-ref.tex:
+	* refcards/cs-refcard.tex, refcards/cs-survival.tex:
+	* refcards/de-refcard.tex, refcards/dired-ref.tex:
+	* refcards/fr-dired-ref.tex, refcards/fr-refcard.tex:
+	* refcards/fr-survival.tex, refcards/orgcard.pdf:
+	* refcards/orgcard.tex, refcards/pl-refcard.tex:
+	* refcards/pt-br-refcard.tex, refcards/refcard.tex:
+	* refcards/ru-refcard.tex, refcards/sk-dired-ref.tex:
+	* refcards/sk-refcard.tex, refcards/sk-survival.tex:
+	* refcards/survival.tex, refcards/vipcard.tex:
+	* refcards/viperCard.tex: Update short copyright year to 2010.
+
 2010-02-26  Glenn Morris  <rgm@gnu.org>
 
 	* tutorials/TUTORIAL.es, tutorials/TUTORIAL.pt_BR:
@@ -5,9 +43,9 @@
 
 2010-02-14  Chong Yidong  <cyd@stupidchicken.com>
 
-	* etc/images/custom/down-pushed.xpm, etc/images/custom/down.xpm:
-	* etc/images/custom/right-pushed.xpm:
-	* etc/images/custom/right-pushed.xpm: Increase height by four
+	* images/custom/down-pushed.xpm, images/custom/down.xpm:
+	* images/custom/right-pushed.xpm:
+	* images/custom/right-pushed.xpm: Increase height by four
 	pixels, to improve text alignment.
 
 2010-01-16  Mario Lang  <mlang@delysid.org>
@@ -17,10 +55,10 @@
 
 2010-01-14  Nick Roberts  <nickrob@snap.net.nz>
 
-	* etc/images/gud/recstart.xpm, etc/images/gud/recstop.xpm:
-	* etc/images/gud/rcont.xpm, etc/images/gud/rnext.xpm:
-	* etc/images/gud/rfinish.xpm, etc/images/gud/rnexti.xpm:
-	* etc/images/gud/rstep.xpm, etc/images/gud/rstepi.xpm:
+	* images/gud/recstart.xpm, images/gud/recstop.xpm:
+	* images/gud/rcont.xpm, images/gud/rnext.xpm:
+	* images/gud/rfinish.xpm, images/gud/rnexti.xpm:
+	* images/gud/rstep.xpm, images/gud/rstepi.xpm:
 	New icons for reverse debugging.
 
 2010-01-14  Juanma Barranquero  <lekktu@gmail.com>
@@ -2559,7 +2597,7 @@
 	* images/gud/ni.xpm, images/gud/ni.xpm
 	* images/gud/s.xpm, images/gud/s.xpm
 	* images/gud/si.xpm, images/gud/si.xpm: Rename to
-	next.*, nexti.*, step.*, and stepi.* , respectively, as the
+	next.*, nexti.*, step.*, and stepi.*, respectively, as the
 	file-name no longer clashes on 8+3 filesystems.
 
 2005-10-14  Bill Wohler  <wohler@newt.com>
--- a/etc/NEWS	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/NEWS	Sat Mar 06 05:16:27 2010 -0500
@@ -66,6 +66,7 @@
 KDE, and XFCE desktops.  (This change has no effect on Windows, which
 uses `system-move-file-to-trash' for trashing.)
 
++++
 ** The pointer now becomes invisible when typing.
 Customize `make-pointer-invisible' to disable this feature.
 
@@ -122,11 +123,6 @@
 ** Function arguments in *Help* buffers are now shown in upper-case.
 Customize `help-downcase-arguments' to t to show them in lower-case.
 
-** Delete Auto Composition Mode.  Now the variable
-`auto-composition-mode' is simply a buffer local variable.  The
-commands `auto-composition-mode' and `global-auto-composition-mode'
-still works as before.
-
 
 * Editing Changes in Emacs 23.2
 
@@ -281,7 +277,7 @@
 ** nXML mode is now the default for editing XML files.
 
 ** Shell
-
++++
 *** ansi-color is now enabled by default.
 To disable it, set ansi-color-for-comint-mode to nil.
 
@@ -362,7 +358,7 @@
 *** Customize `elint-ignored-warnings' to suppress some warnings.
 
 ** Miscellaneous
-
++++
 *** The new command `async-shell-command' bound globally to `M-&' executes
 the command asynchronously without the need to manually add ampersand to
 the end of the command.  Its output appears in the buffer `*Async Shell
@@ -436,6 +432,7 @@
 
 * Incompatible Lisp Changes in Emacs 23.2
 
+---
 ** Several obsolete functions removed.
 The functions have been obsolete since Emacs 19, and are unlikely to
 be in use:
--- a/etc/refcards/Makefile	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/Makefile	Sat Mar 06 05:16:27 2010 -0500
@@ -55,13 +55,19 @@
 
 cs-refcard.pdf cs-dired-ref.pdf cs-survival.pdf sk-refcard.pdf \
 sk-dired-ref.pdf sk-survival.pdf: %.pdf:	%.tex
-	csplain "\pdfoutput=1\input $<"
+	if pdfcsplain --version > /dev/null 2> /dev/null; then \
+	  pdfcsplain $<; \
+	else \
+	  csplain "\pdfoutput=1\input $<"; \
+	fi
 
+## Some versions of pdfmex seem to create dvi by default, hence output-format.
 pl-refcard.pdf: %.pdf: %.tex
-	if ! kpsewhich -format=fmt mex > /dev/null; then \
+	if ! kpsewhich -format=fmt mex > /dev/null && \
+	  ! pdfmex --version > /dev/null 2> /dev/null; then \
 	  echo "No mex format found."; false; \
 	fi
-	pdftex $<
+	pdftex -output-format=pdf $<
 
 ru-refcard.pdf: %.pdf: %.tex
 	pdflatex $<
@@ -80,7 +86,6 @@
 	pdftex $<
 
 
-
 ## dvi files.
 
 cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi sk-refcard.dvi \
Binary file etc/refcards/calccard.pdf has changed
--- a/etc/refcards/calccard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/calccard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -20,8 +20,8 @@
 % Typical command to format:  tex calccard.tex
 % Typical command to print (3 cols):  dvips -t landscape calccard.dvi
 
-% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004,
-%   2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+%   2008, 2009, 2010  Free Software Foundation, Inc.
 
 % This file is part of GNU Emacs.
 
@@ -65,7 +65,7 @@
 %  Internet: gildea@stop.mail-abuse.org
 
 \def\emacsversionnumber{23}
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 \def\shortcopyrightnotice{\vskip 1ex plus 2 fill
   \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Binary file etc/refcards/cs-dired-ref.pdf has changed
--- a/etc/refcards/cs-dired-ref.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/cs-dired-ref.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -43,7 +43,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
Binary file etc/refcards/cs-refcard.pdf has changed
--- a/etc/refcards/cs-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/cs-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -60,7 +60,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
--- a/etc/refcards/cs-survival.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/cs-survival.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -56,7 +56,7 @@
 \chyph
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 \def\copyrightnotice{\penalty-1\vfill
   \vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
Binary file etc/refcards/de-refcard.pdf has changed
--- a/etc/refcards/de-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/de-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -62,7 +62,7 @@
 \mdqoff               % deactivates the "-char
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed below this line.
 
@@ -83,7 +83,7 @@
 
 F\"ur Kopien des Handbuchs zu GNU Emacs:
 
-\tt http://www.gnu.org/software/emacs/\#Manuals}
+{\tt http://www.gnu.org/software/emacs/\#Manuals}
 \endgroup}
 
 % make \bye not \outer so that the \def\bye in the \else clause below
Binary file etc/refcards/dired-ref.pdf has changed
--- a/etc/refcards/dired-ref.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/dired-ref.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -45,7 +45,7 @@
 \pdflayout=(1)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
Binary file etc/refcards/fr-dired-ref.pdf has changed
--- a/etc/refcards/fr-dired-ref.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/fr-dired-ref.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -37,7 +37,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
Binary file etc/refcards/fr-refcard.pdf has changed
--- a/etc/refcards/fr-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/fr-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -57,7 +57,7 @@
 \pdflayout=(0l)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed below this line.
 
--- a/etc/refcards/fr-survival.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/fr-survival.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -51,7 +51,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 \def\copyrightnotice{\penalty-1\vfill
   \vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
Binary file etc/refcards/gnus-booklet.pdf has changed
Binary file etc/refcards/gnus-refcard.pdf has changed
Binary file etc/refcards/orgcard.pdf has changed
--- a/etc/refcards/orgcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/orgcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -1,7 +1,7 @@
 % Reference Card for Org Mode
 \def\orgversionnumber{6.33x}
 \def\versionyear{2009}          % latest update
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 %**start of header
 \newcount\columnsperpage
@@ -9,13 +9,16 @@
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
 % Specify how many you want here.
-
 \columnsperpage=3
 
 % Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
 % only when columnsperpage is 2 or 3.
+\letterpaper=0
 
-\letterpaper=0
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+\input pdflayout.sty
+\pdflayout=(0l)
 
 % Nothing else needs to be changed below this line.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
Binary file etc/refcards/pl-refcard.pdf has changed
--- a/etc/refcards/pl-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/pl-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -71,7 +71,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
@@ -92,7 +92,7 @@
 
 For copies of the GNU Emacs manual, see:
 
-{\tt http://www.gnu.org/software/emacs/\#Manuals}
+{\tt http:////www.gnu.org//software//emacs//\#Manuals}
 \endgroup}
 
 % make \bye not \outer so that the \def\bye in the \else clause below
Binary file etc/refcards/pt-br-refcard.pdf has changed
--- a/etc/refcards/pt-br-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/pt-br-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -63,7 +63,7 @@
 \pdflayout=(0l)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed below this line.
 
Binary file etc/refcards/refcard.pdf has changed
--- a/etc/refcards/refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -64,7 +64,7 @@
 % Nothing else needs to be changed below this line.
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % copyright year
+\def\year{2010}                 % copyright year
 
 \def\shortcopyrightnotice{\vskip 1ex plus 2 fill
   \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Binary file etc/refcards/ru-refcard.pdf has changed
--- a/etc/refcards/ru-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/ru-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -23,15 +23,15 @@
 \setlength{\ColThreeWidth}{25mm}
 
 \newcommand{\versionemacs}[0]{23} % version of Emacs this is for
-\newcommand{\year}[0]{2009}       % copyright year
+\newcommand{\cyear}[0]{2010}       % copyright year
 
 \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
-  \centerline{\footnotesize \copyright\ \year\ Free Software Foundation, Inc.
+  \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc.
   Permissions on back.}}
 
 \newcommand\copyrightnotice[0]{
 \vskip 1ex plus 2 fill\begingroup\footnotesize
-\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
+\centerline{Copyright \copyright\ \cyear\ Free Software Foundation, Inc.}
 \centerline{For GNU Emacs version \versionemacs}
 \centerline{Designed by Stephen Gildea}
 \centerline{ðÅÒÅ×ÏÄ Alex Ott <alexott@gmail.com>}
Binary file etc/refcards/sk-dired-ref.pdf has changed
--- a/etc/refcards/sk-dired-ref.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/sk-dired-ref.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -44,7 +44,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
Binary file etc/refcards/sk-refcard.pdf has changed
--- a/etc/refcards/sk-refcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/sk-refcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -61,7 +61,7 @@
 \pdflayout=(0)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 % Nothing else needs to be changed.
 
--- a/etc/refcards/sk-survival.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/sk-survival.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -57,7 +57,7 @@
 \shyph
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 \def\copyrightnotice{\penalty-1\vfill
   \vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
--- a/etc/refcards/survival.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/survival.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -46,7 +46,7 @@
 \pdflayout=(1)
 
 \def\versionemacs{23}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 
 \def\copyrightnotice{\penalty-1\vfill
   \vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
--- a/etc/refcards/vipcard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/vipcard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -51,7 +51,7 @@
 \pdflayout=(1)
 
 \def\versionemacs{18}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 \def\versionvip{3.5}
 
 % Nothing else needs to be changed.
--- a/etc/refcards/viperCard.tex	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/refcards/viperCard.tex	Sat Mar 06 05:16:27 2010 -0500
@@ -54,7 +54,7 @@
 \pdflayout=(1)
 
 \def\versionemacs{21}           % version of Emacs this is for
-\def\year{2009}                 % latest copyright year
+\def\year{2010}                 % latest copyright year
 \def\versionxemacs{20}          % version of XEmacs this is for
 \def\versionviper{3.0}          % version of Viper this is for
 
--- a/etc/srecode/default.srt	Sat Feb 27 07:43:30 2010 -0500
+++ b/etc/srecode/default.srt	Sat Mar 06 05:16:27 2010 -0500
@@ -25,8 +25,8 @@
 
 set COPYRIGHT "This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2, or (at
-your option) any later version.
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -34,9 +34,7 @@
 General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA."
+along with this program.  If not, see http://www.gnu.org/licenses/."
 
 set DOLLAR "$"
 
--- a/lisp/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,7 +1,114 @@
+2010-03-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* vc-git.el: Re-flow to fit into 80 columns.
+	(vc-git-after-dir-status-stage, vc-git-dir-status-goto-stage):
+	Remove spurious `quote' element in each case alternative.
+	(vc-git-show-log-entry): Use prog1.
+	(vc-git-after-dir-status-stage): Remove unused var `remaining'.
+
+2010-03-06  Glenn Morris  <rgm@gnu.org>
+
+	* cedet/semantic/grammar.el (semantic-grammar-header-template):
+	Update template copyright to GPLv3+.
+
+2010-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* man.el (Man-files-regexp): Tighten up the regexp (bug#5686).
+
+2010-03-03  Chong Yidong  <cyd@stupidchicken.com>
+
+	* macros.el (insert-kbd-macro): Look up keyboard macro using the
+	definition, not the name (Bug#5481).
+
+2010-03-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
+
+	* subr.el (momentary-string-display): Don't overwrite the MESSAGE
+	argument with a local variable.  (Bug#5670)
+
+2010-03-02  Juri Linkov  <juri@jurta.org>
+
+	* info.el (Info-index-next): Decrement line number by 2.  (Bug#5652)
+
+2010-03-02  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix an
+	error when FILENAME and NEWNAME are existing remote directories.
+
+	* net/tramp-compat.el (tramp-compat-make-temp-file): Add optional
+	parameter DIR-FLAG.
+
+2010-03-02  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/cal-hebrew.el (holiday-hebrew-passover): Fix date
+	of Yom HaAtzma'ut when it falls on a Monday (rule changed in 2004).
+
+2010-03-01  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-engine.el (c-remove-stale-state-cache):
+	Correct previous patch.
+
+2010-03-01  Kenichi Handa  <handa@m17n.org>
+
+	* language/burmese.el (burmese-composable-pattern): Rename from
+	myanmar-composable-pattern.
+
+	* international/characters.el (script-list):
+	* international/fontset.el (script-representative-chars):
+	Change myanmar to burmese.
+	(otf-script-alist): Likewise.
+	(setup-default-fontset): Likewise.  Re-fix :otf spec.
+
+2010-03-01  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	* cc-engine.el (c-remove-stale-state-cache): Take account of when
+	`good-pos' is in the same macro as `here'.  Fixes bug 5649.
+
+2010-02-28  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* menu-bar.el (menu-bar-manuals-menu): Fix typo.
+
+2010-02-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+	* scroll-bar.el (scroll-bar-drag-1): Add save-excursion, bug #5654.
+
+2010-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-handle-write-region): START can be a string.
+	Take care in the checks.  Reported by Dan Davison
+	<davison@stats.ox.ac.uk>.
+
+2010-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/dbus.el (dbus-introspect, dbus-get-property)
+	(dbus-set-property, dbus-get-all-properties): Use
+	`dbus-call-method' when noninteractive.  (Bug#5645)
+
+2010-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+	* textmodes/reftex-toc.el (reftex-toc-promote-prepare):
+	* emacs-lisp/elint.el (elint-add-required-env):
+	* cedet/semantic/db-find.el
+	(semanticdb-find-translate-path-brutish-default):
+	* cedet/ede/make.el (ede-make-check-version):
+	* calendar/icalendar.el (icalendar--add-diary-entry):
+	* calc/calcalg2.el (math-tracing-integral):
+	* files.el (recover-session-finish): Use with-current-buffer
+	instead of save-excursion.
+
+2010-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	Fix in-buffer completion when after-change-functions modify the buffer.
+	* minibuffer.el (completion--replace): New function.
+	(completion--do-completion): Use it and use relative movement.
+
+2010-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+	* international/fontset.el (setup-default-fontset): Fix :otf spec.
+
 2010-02-27  Jeremy Whitlock  <jcscoobyrs@gmail.com>  (tiny change)
 
-	* progmodes/python.el (python-pdbtrack-stack-entry-regexp): Allow
-	the characters _<> in the stack entry (Bug#5653).
+	* progmodes/python.el (python-pdbtrack-stack-entry-regexp):
+	Allow the characters _<> in the stack entry (Bug#5653).
 
 2010-02-26  Kenichi Handa  <handa@m17n.org>
 
--- a/lisp/calc/calcalg2.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/calc/calcalg2.el	Sat Mar 06 05:16:27 2010 -0500
@@ -670,8 +670,8 @@
 (defmacro math-tracing-integral (&rest parts)
   (list 'and
 	'trace-buffer
-	(list 'save-excursion
-	      '(set-buffer trace-buffer)
+	(list 'with-current-buffer
+	      'trace-buffer
 	      '(goto-char (point-max))
 	      (list 'and
 		    '(bolp)
--- a/lisp/calendar/cal-hebrew.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/calendar/cal-hebrew.el	Sat Mar 06 05:16:27 2010 -0500
@@ -505,7 +505,9 @@
                       (+ abs-p 18)
                     (if (= (% abs-p 7) 6)
                         (+ abs-p 19)
-                      (+ abs-p 20))))
+                      (if (= (% abs-p 7) 2)
+                          (+ abs-p 21)
+                        (+ abs-p 20)))))
                  "Yom HaAtzma'ut")
            (list (calendar-gregorian-from-absolute (+ abs-p 33))
                  "Lag BaOmer")
--- a/lisp/calendar/icalendar.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/calendar/icalendar.el	Sat Mar 06 05:16:27 2010 -0500
@@ -2246,8 +2246,7 @@
                  'make-diary-entry)
                string non-marking diary-file)))
   ;; Würgaround to remove the trailing blank char
-  (save-excursion
-    (set-buffer (find-file diary-file))
+  (with-current-buffer (find-file diary-file)
     (goto-char (point-max))
     (if (= (char-before) ? )
         (delete-char -1)))
--- a/lisp/cedet/ede/make.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/cedet/ede/make.el	Sat Mar 06 05:16:27 2010 -0500
@@ -76,9 +76,8 @@
 	(rev nil)
 	(ans nil)
 	)
-    (save-excursion
+    (with-current-buffer b
       ;; Setup, and execute make.
-      (set-buffer b)
       (setq default-directory cd)
       (erase-buffer)
       (call-process ede-make-command nil b nil
--- a/lisp/cedet/semantic/db-find.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/cedet/semantic/db-find.el	Sat Mar 06 05:16:27 2010 -0500
@@ -326,9 +326,8 @@
 	 (cond ((null path) semanticdb-current-database)
 	       ((semanticdb-table-p path) (oref path parent-db))
 	       (t (let ((tt (semantic-something-to-tag-table path)))
-		    (save-excursion
-		      ;; @todo - What does this DO ??!?!
-		      (set-buffer (semantic-tag-buffer (car tt)))
+		    ;; @todo - What does this DO ??!?!
+		    (with-current-buffer (semantic-tag-buffer (car tt))
 		      semanticdb-current-database))))))
     (apply
      #'nconc
--- a/lisp/cedet/semantic/grammar.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/cedet/semantic/grammar.el	Sat Mar 06 05:16:27 2010 -0500
@@ -573,21 +573,19 @@
 ;; X-RCS: " vcid "
 
 ;; This file is not part of GNU Emacs.
-;;
+
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-;;
+;; published by the Free Software Foundation, either version 3 of
+;; the License, or (at your option) any later version.
+
 ;; This software 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; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 ;;
--- a/lisp/emacs-lisp/elint.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/emacs-lisp/elint.el	Sat Mar 06 05:16:27 2010 -0500
@@ -505,11 +505,10 @@
 	;; (Messes up the "Initializing elint..." message.)
 ;;;	(message nil)
 	(if lib
-	    (save-excursion
+	    (with-current-buffer (find-file-noselect lib)
 	      ;; FIXME this doesn't use a temp buffer, because it
 	      ;; stores the result in buffer-local variables so that
 	      ;; it can be reused.
-	      (set-buffer (find-file-noselect lib))
 	      (elint-update-env)
 	      (setq env (elint-env-add-env env elint-buffer-env)))
 	      ;;; (with-temp-buffer
--- a/lisp/files.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/files.el	Sat Mar 06 05:16:27 2010 -0500
@@ -5034,9 +5034,8 @@
     (dired-unmark 1)
     (dired-do-flagged-delete t)
     (unwind-protect
-	(save-excursion
+	(with-current-buffer buffer
 	  ;; Read in the auto-save-list file.
-	  (set-buffer buffer)
 	  (erase-buffer)
 	  (insert-file-contents file)
 	  ;; Loop thru the text of that file
--- a/lisp/info.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/info.el	Sat Mar 06 05:16:27 2010 -0500
@@ -3062,7 +3062,9 @@
 	  num (1- num)))
   (Info-goto-node (nth 1 (car Info-index-alternatives)))
   (if (> (nth 3 (car Info-index-alternatives)) 0)
-      (forward-line (1- (nth 3 (car Info-index-alternatives))))
+      ;; Forward 2 lines less because `Info-find-node-2' initially
+      ;; puts point to the 2nd line.
+      (forward-line (- (nth 3 (car Info-index-alternatives)) 2))
     (forward-line 3)			; don't search in headers
     (let ((name (car (car Info-index-alternatives))))
       (Info-find-index-name name)))
--- a/lisp/international/characters.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/international/characters.el	Sat Mar 06 05:16:27 2010 -0500
@@ -1124,7 +1124,7 @@
 	 (#x0E00 #x0E5F thai)
 	 (#x0E80 #x0EDF lao)
 	 (#x0F00 #x0FFF tibetan)
-	 (#x1000 #x109F myanmar)
+	 (#x1000 #x109F burmese)
 	 (#x10A0 #x10FF georgian)
 	 (#x1100 #x11FF hangul)
 	 (#x1200 #x139F ethiopic)
@@ -1151,7 +1151,7 @@
 	 (#x3400 #x9FAF han)
 	 (#xA000 #xA4CF yi)
 	 (#xAA00 #xAA5F cham)
-	 (#xAA60 #xAA7B myanmar)
+	 (#xAA60 #xAA7B burmese)
 	 (#xAA80 #xAADF tai-viet)
 	 (#xAC00 #xD7AF hangul)
 	 (#xF900 #xFAFF han)
--- a/lisp/international/fontset.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/international/fontset.el	Sat Mar 06 05:16:27 2010 -0500
@@ -169,7 +169,7 @@
 	(thai #xE17)
 	(lao #xEA5)
 	(tibetan #xF40)
-	(myanmar #x1000)
+	(burmese #x1000)
 	(georgian #x10D3)
 	(ethiopic #x1208)
 	(cherokee #x13B6)
@@ -260,7 +260,7 @@
 	(math . mathematical)
 	(mong . mongolian)
 	(musc . musical-symbol)
-	(mymr . myanmar)
+	(mymr . burmese)
 	(nko\  . nko)
 	(ogam . ogham)
 	(ital . old_italic)
@@ -415,8 +415,8 @@
      (sinhala ,(font-spec :registry "iso10646-1" :otf '(sinh nil (akhn))))
      (malayalam ,(font-spec :registry "iso10646-1" :otf '(mlym nil (akhn))))
 
-     (myanmar ,(font-spec :registry "iso10646-1" :otf '(mymr))
-	      ,(font-spec :registry "iso10646-1" :script 'myanmar))
+     (burmese ,(font-spec :registry "iso10646-1" :otf '(mymr nil nil))
+	      ,(font-spec :registry "iso10646-1" :script 'burmese))
 
      (lao ,(font-spec :registry "iso10646-1" :otf '(lao\  nil nil (mark)))
 	  ,(font-spec :registry "iso10646-1" :script 'lao)
--- a/lisp/language/burmese.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/language/burmese.el	Sat Mar 06 05:16:27 2010 -0500
@@ -36,7 +36,7 @@
 	     (sample-text . "Burmese (မ္ရန္‌မာ)	မင္â€á€‚လာပာ")
 	     (documentation . t)))
 
-(defvar myanmar-composable-pattern
+(defvar burmese-composable-pattern
   (let ((table
 	 '(("K" . "[\u1004\u105A]\u103A\u1039") ; KINZI sequence
 	   ("C" . "[\u1000-\u102A\u103F\u1041-\u1049\u104E\u105A-\u105D\u1061\u1065-\u1066\u106E\u1071\u1075\u1081\u108E\uAA60-\uAA6F\uAA71-\uAA76]") ; consonant and vowel letter
@@ -52,7 +52,7 @@
 					       regexp t t))))
     regexp))
 
-(let ((elt (list (vector myanmar-composable-pattern 0 'font-shape-gstring)
+(let ((elt (list (vector burmese-composable-pattern 0 'font-shape-gstring)
 		 (vector "." 0 'font-shape-gstring))))
   (set-char-table-range composition-function-table '(#x1000 . #x107F) elt)
   (set-char-table-range composition-function-table '(#xAA60 . #xAA7B) elt))
--- a/lisp/macros.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/macros.el	Sat Mar 06 05:16:27 2010 -0500
@@ -138,7 +138,8 @@
 	(prin1 definition (current-buffer))))
     (insert ")\n")
     (if keys
-	(let ((keys (where-is-internal macroname '(keymap))))
+	(let ((keys (where-is-internal (symbol-function macroname)
+				       '(keymap))))
 	  (while keys
 	    (insert "(global-set-key ")
 	    (prin1 (car keys) (current-buffer))
--- a/lisp/man.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/man.el	Sat Mar 06 05:16:27 2010 -0500
@@ -283,7 +283,8 @@
   "Regular expression for SYNOPSIS heading (or your equivalent).
 This regexp should not start with a `^' character.")
 
-(defvar Man-files-regexp "FILES"
+(defvar Man-files-regexp "FILES\\>"
+  ;; Add \> so as not to match mount(8)'s FILESYSTEM INDEPENDENT MOUNT OPTIONS.
   "Regular expression for FILES heading (or your equivalent).
 This regexp should not start with a `^' character.")
 
--- a/lisp/menu-bar.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/menu-bar.el	Sat Mar 06 05:16:27 2010 -0500
@@ -1500,7 +1500,7 @@
 (define-key menu-bar-manuals-menu [emacs-lisp-reference]
   `(menu-item ,(purecopy "Emacs Lisp Reference") menu-bar-read-lispref
 	      :help ,(purecopy "Read the Emacs Lisp Reference manual")))
-(define-key menu-bar-manuals-menu [emac-lisp-intro]
+(define-key menu-bar-manuals-menu [emacs-lisp-intro]
   `(menu-item ,(purecopy "Introduction to Emacs Lisp") menu-bar-read-lispintro
 	      :help ,(purecopy "Read the Introduction to Emacs Lisp Programming")))
 
--- a/lisp/minibuffer.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/minibuffer.el	Sat Mar 06 05:16:27 2010 -0500
@@ -59,6 +59,8 @@
 
 ;; - extend `boundaries' to provide various other meta-data about the
 ;;   output of `all-completions':
+;;   - preferred sorting order when displayed in *Completions*.
+;;   - annotations/text-properties to add when displayed in *Completions*.
 ;;   - quoting/unquoting (so we can complete files names with envvars
 ;;     and backslashes, and all-completion can list names without
 ;;     quoting backslashes and dollars).
@@ -444,6 +446,17 @@
           (if completions 2 0)
           (if exact       1 0)))
 
+(defun completion--replace (beg end newtext)
+  "Replace the buffer text between BEG and END with NEWTEXT.
+Moves point to the end of the new text."
+  ;; This should be in subr.el.
+  ;; You'd think this is trivial to do, but details matter if you want
+  ;; to keep markers "at the right place" and be robust in the face of
+  ;; after-change-functions that may themselves modify the buffer.
+  (goto-char beg)
+  (insert newtext)
+  (delete-region (point) (+ (point) (- end beg))))
+
 (defun completion--do-completion (&optional try-completion-function)
   "Do the completion and return a summary of what happened.
 M = completion was performed, the text was Modified.
@@ -486,14 +499,12 @@
 						    string nil nil t))))
 	     (unchanged (eq t (compare-strings completion nil nil
 					       string nil nil nil))))
-        (unless unchanged
-
-          ;; Insert in minibuffer the chars we got.
+        (if unchanged
           (goto-char end)
-          (insert completion)
-          (delete-region beg end))
-	;; Move point.
-	(goto-char (+ beg comp-pos))
+          ;; Insert in minibuffer the chars we got.
+          (completion--replace beg end completion))
+	;; Move point to its completion-mandated destination.
+	(forward-char (- comp-pos (length completion)))
 
         (if (not (or unchanged completed))
 	   ;; The case of the string changed, but that's all.  We're not sure
@@ -1813,7 +1824,6 @@
   (when completions
     (let* ((re (completion-pcm--pattern->regex pattern '(point)))
            (case-fold-search completion-ignore-case))
-      ;; Remove base-size during mapcar, and add it back later.
       (mapcar
        (lambda (str)
 	 ;; Don't modify the string itself.
--- a/lisp/net/dbus.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/net/dbus.el	Sat Mar 06 05:16:27 2010 -0500
@@ -573,7 +573,8 @@
   ;; is used, because the handler can be registered in our Emacs
   ;; instance; caller an callee would block each other.
   (dbus-ignore-errors
-    (dbus-call-method-non-blocking
+    (funcall
+     (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
      bus service path dbus-interface-introspectable "Introspect")))
 
 (defun dbus-introspect-xml (bus service path)
@@ -831,7 +832,8 @@
   (dbus-ignore-errors
     ;; "Get" returns a variant, so we must use the `car'.
     (car
-     (dbus-call-method-non-blocking
+     (funcall
+      (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
       bus service path dbus-interface-properties
       "Get" :timeout 500 interface property))))
 
@@ -842,7 +844,8 @@
 returned."
   (dbus-ignore-errors
     ;; "Set" requires a variant.
-    (dbus-call-method-non-blocking
+    (funcall
+     (if noninteractive 'dbus-call-method 'dbus-call-method-non-blocking)
      bus service path dbus-interface-properties
      "Set" :timeout 500 interface property (list :variant value))
     ;; Return VALUE.
@@ -857,7 +860,10 @@
     ;; "GetAll" returns "a{sv}".
     (let (result)
       (dolist (dict
-	       (dbus-call-method-non-blocking
+	       (funcall
+		(if noninteractive
+		    'dbus-call-method
+		  'dbus-call-method-non-blocking)
 		bus service path dbus-interface-properties
 		"GetAll" :timeout 500 interface)
 	       result)
--- a/lisp/net/tramp-compat.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/net/tramp-compat.el	Sat Mar 06 05:16:27 2010 -0500
@@ -215,7 +215,7 @@
 ;; has been introduced with Emacs 22.  We try it, if it fails, we fall
 ;; back to `make-temp-name', creating the temporary file immediately
 ;; in order to avoid a security hole.
-(defsubst tramp-compat-make-temp-file (filename)
+(defsubst tramp-compat-make-temp-file (filename &optional dir-flag)
   "Create a temporary file (compat function).
 Add the extension of FILENAME, if existing."
   (let* (file-name-handler-alist
@@ -226,21 +226,24 @@
 	 result)
     (condition-case nil
 	(setq result
-	      (funcall (symbol-function 'make-temp-file) prefix nil extension))
+	      (funcall
+	       (symbol-function 'make-temp-file) prefix dir-flag extension))
       (error
        ;; We use our own implementation, taken from files.el.
        (while
 	   (condition-case ()
 	       (progn
 		 (setq result (concat (make-temp-name prefix) extension))
-		 (write-region
-		  "" nil result nil 'silent nil
-		  ;; 7th parameter is MUSTBENEW in Emacs, and
-		  ;; CODING-SYSTEM in XEmacs.  It is not a security
-		  ;; hole in XEmacs if we cannot use this parameter,
-		  ;; because XEmacs uses a user-specific subdirectory
-		  ;; with 0700 permissions.
-		  (when (not (featurep 'xemacs)) 'excl))
+		 (if dir-flag
+		     (make-directory result)
+		   (write-region
+		    "" nil result nil 'silent nil
+		    ;; 7th parameter is MUSTBENEW in Emacs, and
+		    ;; CODING-SYSTEM in XEmacs.  It is not a security
+		    ;; hole in XEmacs if we cannot use this parameter,
+		    ;; because XEmacs uses a user-specific
+		    ;; subdirectory with 0700 permissions.
+		    (when (not (featurep 'xemacs)) 'excl)))
 		 nil)
 	     (file-already-exists t))
 	 ;; The file was somehow created by someone else between
--- a/lisp/net/tramp.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/net/tramp.el	Sat Mar 06 05:16:27 2010 -0500
@@ -3798,13 +3798,12 @@
 
 	  ;; Both are Tramp files.  We shall optimize it, when the
 	  ;; methods for filename and newname are the same.
-	  (let ((tmpfile
-		 (if (file-regular-p filename)
-		     (tramp-compat-make-temp-file localname)
-		   (make-temp-name
-		    (expand-file-name
-		     tramp-temp-name-prefix
-		     (tramp-compat-temporary-file-directory))))))
+	  (let* ((dir-flag (file-directory-p filename))
+		 (tmpfile (tramp-compat-make-temp-file localname dir-flag)))
+	    (if dir-flag
+		(setq tmpfile
+		      (expand-file-name
+		       (file-name-nondirectory newname) tmpfile)))
 	    (unwind-protect
 		(progn
 		  (tramp-do-copy-or-rename-file-out-of-band
@@ -3813,9 +3812,10 @@
 		   'rename tmpfile newname keep-date))
 	      ;; Save exit.
 	      (condition-case nil
-		  (if (file-regular-p tmpfile)
-		      (delete-file tmpfile)
-		    (delete-directory tmpfile 'recursive))
+		  (if dir-flag
+		      (delete-directory
+		       (expand-file-name ".." tmpfile) 'recursive)
+		    (delete-file tmpfile))
 		(error))))
 
 	;; Expand hops.  Might be necessary for gateway methods.
@@ -5045,11 +5045,12 @@
 	  ;; encoding function, then that is used for encoding the
 	  ;; contents of the tmp file.
 	  (cond
-	   ;; `rename-file' handles direct copy and out-of-band methods.
+	   ;; `copy-file' handles direct copy and out-of-band methods.
 	   ((or (tramp-local-host-p v)
 		(tramp-method-out-of-band-p
-		 v (- (or end (point-max)) (or start (point-min)))))
-	    (if (and (= (or end (point-max)) (point-max))
+		 v (nth 7 (file-attributes tmpfile))))
+	    (if (and (not (stringp start))
+		     (= (or end (point-max)) (point-max))
 		     (= (or start (point-min)) (point-min))
 		     (tramp-get-method-parameter
 		      method 'tramp-copy-keep-tmpfile))
--- a/lisp/progmodes/cc-engine.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/progmodes/cc-engine.el	Sat Mar 06 05:16:27 2010 -0500
@@ -2591,7 +2591,7 @@
   (save-restriction
     (narrow-to-region 1 (point-max))
     (save-excursion
-      (let* ((in-macro-start   ; point-max or beginning of macro containing it
+      (let* ((in-macro-start   ; start of macro containing (point-max) or nil.
 	      (save-excursion
 		(goto-char (point-max))
 		(and (c-beginning-of-macro)
@@ -2641,7 +2641,9 @@
 	;; (car c-state-cache).  There can be no open parens/braces/brackets
 	;; between `good-pos'/`good-pos-actual-macro-start' and (point-max),
 	;; due to the interface spec to this function.
-	(setq pos (if good-pos-actual-macro-end
+	(setq pos (if (and good-pos-actual-macro-end
+			   (not (eq good-pos-actual-macro-start
+				    in-macro-start)))
 		      (1+ good-pos-actual-macro-end) ; get outside the macro as
 					; marked by a `category' text property.
 		    good-pos))
--- a/lisp/progmodes/sh-script.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/progmodes/sh-script.el	Sat Mar 06 05:16:27 2010 -0500
@@ -1186,7 +1186,7 @@
   "Variables controlling indentation in shell scripts.
 
 Note: customizing these variables will not affect existing buffers if
-`sh-make-vars-local' is no-nil.  See the documentation for
+`sh-make-vars-local' is non-nil.  See the documentation for
 variable `sh-make-vars-local', command `sh-make-vars-local'
 and command `sh-reset-indent-vars-to-global-values'."
   :group 'sh-script)
--- a/lisp/scroll-bar.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/scroll-bar.el	Sat Mar 06 05:16:27 2010 -0500
@@ -210,13 +210,14 @@
   (let* ((start-position (event-start event))
 	 (window (nth 0 start-position))
 	 (portion-whole (nth 2 start-position)))
-    (with-current-buffer (window-buffer window)
-      ;; Calculate position relative to the accessible part of the buffer.
-      (goto-char (+ (point-min)
-		    (scroll-bar-scale portion-whole
-				      (- (point-max) (point-min)))))
-      (vertical-motion 0 window)
-      (set-window-start window (point)))))
+    (save-excursion 
+      (with-current-buffer (window-buffer window)
+	;; Calculate position relative to the accessible part of the buffer.
+	(goto-char (+ (point-min)
+		      (scroll-bar-scale portion-whole
+					(- (point-max) (point-min)))))
+	(vertical-motion 0 window)
+	(set-window-start window (point))))))
 
 (defun scroll-bar-drag (event)
   "Scroll the window by dragging the scroll bar slider.
--- a/lisp/subr.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/subr.el	Sat Mar 06 05:16:27 2010 -0500
@@ -2196,15 +2196,15 @@
 If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
   (or exit-char (setq exit-char ?\s))
   (let ((ol (make-overlay pos pos))
-        (message (copy-sequence string)))
+        (str (copy-sequence string)))
     (unwind-protect
         (progn
           (save-excursion
-            (overlay-put ol 'after-string message)
+            (overlay-put ol 'after-string str)
             (goto-char pos)
             ;; To avoid trouble with out-of-bounds position
             (setq pos (point))
-            ;; If the message end is off screen, recenter now.
+            ;; If the string end is off screen, recenter now.
             (if (<= (window-end nil t) pos)
                 (recenter (/ (window-height) 2))))
           (message (or message "Type %s to continue editing.")
--- a/lisp/textmodes/reftex-toc.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/textmodes/reftex-toc.el	Sat Mar 06 05:16:27 2010 -0500
@@ -665,9 +665,8 @@
           (if (and (markerp marker) (marker-buffer marker))
               ;; Buffer is still live and we have the marker.
               (progn
-                (save-excursion
+                (with-current-buffer (marker-buffer marker)
                   ;; Goto the buffer and check of section is unchanged
-                  (set-buffer (marker-buffer marker))
                   (goto-char (marker-position marker))
                   (if (looking-at (regexp-quote literal))
                       ;; OK, get the makro name
--- a/lisp/vc-git.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/lisp/vc-git.el	Sat Mar 06 05:16:27 2010 -0500
@@ -69,8 +69,8 @@
 ;; * revert (file &optional contents-done)         OK
 ;; - rollback (files)                              COULD BE SUPPORTED
 ;; - merge (file rev1 rev2)                   It would be possible to merge
-;;                                          changes into a single file, but when
-;;                                          committing they wouldn't
+;;                                          changes into a single file, but
+;;                                          when committing they wouldn't
 ;;                                          be identified as a merge
 ;;                                          by git, so it's probably
 ;;                                          not a good idea.
@@ -130,7 +130,7 @@
 
 ;;;###autoload (defun vc-git-registered (file)
 ;;;###autoload   "Return non-nil if FILE is registered with git."
-;;;###autoload   (if (vc-find-root file ".git")       ; short cut
+;;;###autoload   (if (vc-find-root file ".git")       ; Short cut.
 ;;;###autoload       (progn
 ;;;###autoload         (load "vc-git")
 ;;;###autoload         (vc-git-registered file))))
@@ -149,9 +149,11 @@
 	       (str (ignore-errors
 		     (cd dir)
 		     (vc-git--out-ok "ls-files" "-c" "-z" "--" name)
-		     ;; if result is empty, use ls-tree to check for deleted file
+		     ;; If result is empty, use ls-tree to check for deleted
+                     ;; file.
 		     (when (eq (point-min) (point-max))
-		       (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD" "--" name))
+		       (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD"
+                                       "--" name))
 		     (buffer-string))))
 	  (and str
 	       (> (length str) (length name))
@@ -173,7 +175,8 @@
   (if (not (vc-git-registered file))
       'unregistered
     (vc-git--call nil "add" "--refresh" "--" (file-relative-name file))
-    (let ((diff (vc-git--run-command-string file "diff-index" "-z" "HEAD" "--")))
+    (let ((diff (vc-git--run-command-string
+                 file "diff-index" "-z" "HEAD" "--")))
       (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0"
 				  diff))
 	  (vc-git--state-code (match-string 1 diff))
@@ -206,11 +209,12 @@
 
 (defstruct (vc-git-extra-fileinfo
             (:copier nil)
-            (:constructor vc-git-create-extra-fileinfo (old-perm new-perm &optional rename-state orig-name))
+            (:constructor vc-git-create-extra-fileinfo
+                          (old-perm new-perm &optional rename-state orig-name))
             (:conc-name vc-git-extra-fileinfo->))
-  old-perm new-perm   ;; permission flags
-  rename-state        ;; rename or copy state
-  orig-name)          ;; original name for renames or copies
+  old-perm new-perm   ;; Permission flags.
+  rename-state        ;; Rename or copy state.
+  orig-name)          ;; Original name for renames or copies.
 
 (defun vc-git-escape-file-name (name)
   "Escape a file name if necessary."
@@ -232,23 +236,23 @@
   (let* ((old-type (lsh (or old-perm 0) -9))
 	 (new-type (lsh (or new-perm 0) -9))
 	 (str (case new-type
-		(?\100  ;; file
+		(?\100  ;; File.
 		 (case old-type
 		   (?\100 nil)
 		   (?\120 "   (type change symlink -> file)")
 		   (?\160 "   (type change subproject -> file)")))
-		 (?\120  ;; symlink
+		 (?\120  ;; Symlink.
 		  (case old-type
 		    (?\100 "   (type change file -> symlink)")
 		    (?\160 "   (type change subproject -> symlink)")
 		    (t "   (symlink)")))
-		  (?\160  ;; subproject
+		  (?\160  ;; Subproject.
 		   (case old-type
 		     (?\100 "   (type change file -> subproject)")
 		     (?\120 "   (type change symlink -> subproject)")
 		     (t "   (subproject)")))
-                  (?\110 nil)  ;; directory (internal, not a real git state)
-		  (?\000  ;; deleted or unknown
+                  (?\110 nil)  ;; Directory (internal, not a real git state).
+		  (?\000  ;; Deleted or unknown.
 		   (case old-type
 		     (?\120 "   (symlink)")
 		     (?\160 "   (subproject)")))
@@ -258,7 +262,8 @@
           (t ""))))
 
 (defun vc-git-rename-as-string (state extra)
-  "Return a string describing the copy or rename associated with INFO, or an empty string if none."
+  "Return a string describing the copy or rename associated with INFO,
+or an empty string if none."
   (let ((rename-state (when extra
 			(vc-git-extra-fileinfo->rename-state extra))))
     (if rename-state
@@ -267,8 +272,10 @@
                  (if (eq rename-state 'copy) "copied from "
                    (if (eq state 'added) "renamed from "
                      "renamed to "))
-                 (vc-git-escape-file-name (vc-git-extra-fileinfo->orig-name extra))
-                 ")") 'face 'font-lock-comment-face)
+                 (vc-git-escape-file-name
+                  (vc-git-extra-fileinfo->orig-name extra))
+                 ")")
+         'face 'font-lock-comment-face)
       "")))
 
 (defun vc-git-permissions-as-string (old-perm new-perm)
@@ -302,7 +309,8 @@
      "  " (vc-git-permissions-as-string old-perm new-perm)
      "    "
      (propertize (vc-git-escape-file-name (vc-dir-fileinfo->name info))
-                 'face (if isdir 'font-lock-comment-delimiter-face 'font-lock-function-name-face)
+                 'face (if isdir 'font-lock-comment-delimiter-face
+                         'font-lock-function-name-face)
 		 'help-echo
 		 (if isdir
 		     "Directory\nVC operations can be applied to it\nmouse-3: Pop-up menu"
@@ -314,32 +322,39 @@
 
 (defun vc-git-after-dir-status-stage (stage files update-function)
   "Process sentinel for the various dir-status stages."
-  (let (remaining next-stage result)
+  (let (next-stage result)
     (goto-char (point-min))
     (case stage
-      ('update-index
+      (update-index
        (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added
                           (if files 'ls-files-up-to-date 'diff-index))))
-      ('ls-files-added
+      (ls-files-added
        (setq next-stage 'ls-files-unknown)
        (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
          (let ((new-perm (string-to-number (match-string 1) 8))
                (name (match-string 2)))
-           (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm)) result))))
-      ('ls-files-up-to-date
+           (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm))
+                 result))))
+      (ls-files-up-to-date
        (setq next-stage 'diff-index)
        (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
          (let ((perm (string-to-number (match-string 1) 8))
                (name (match-string 2)))
-           (push (list name 'up-to-date (vc-git-create-extra-fileinfo perm perm)) result))))
-      ('ls-files-unknown
+           (push (list name 'up-to-date
+                       (vc-git-create-extra-fileinfo perm perm))
+                 result))))
+      (ls-files-unknown
        (when files (setq next-stage 'ls-files-ignored))
        (while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
-         (push (list (match-string 1) 'unregistered (vc-git-create-extra-fileinfo 0 0)) result)))
-      ('ls-files-ignored
+         (push (list (match-string 1) 'unregistered
+                     (vc-git-create-extra-fileinfo 0 0))
+               result)))
+      (ls-files-ignored
        (while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
-         (push (list (match-string 1) 'ignored (vc-git-create-extra-fileinfo 0 0)) result)))
-      ('diff-index
+         (push (list (match-string 1) 'ignored
+                     (vc-git-create-extra-fileinfo 0 0))
+               result)))
+      (diff-index
        (setq next-stage 'ls-files-unknown)
        (while (re-search-forward
                ":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0"
@@ -349,41 +364,60 @@
                (state (or (match-string 4) (match-string 6)))
                (name (or (match-string 5) (match-string 7)))
                (new-name (match-string 8)))
-           (if new-name  ; copy or rename
+           (if new-name  ; Copy or rename.
                (if (eq ?C (string-to-char state))
-                   (push (list new-name 'added (vc-git-create-extra-fileinfo old-perm new-perm 'copy name)) result)
-                 (push (list name 'removed (vc-git-create-extra-fileinfo 0 0 'rename new-name)) result)
-                 (push (list new-name 'added (vc-git-create-extra-fileinfo old-perm new-perm 'rename name)) result))
-             (push (list name (vc-git--state-code state) (vc-git-create-extra-fileinfo old-perm new-perm)) result))))))
+                   (push (list new-name 'added
+                               (vc-git-create-extra-fileinfo old-perm new-perm
+                                                             'copy name))
+                         result)
+                 (push (list name 'removed
+                             (vc-git-create-extra-fileinfo 0 0
+                                                           'rename new-name))
+                       result)
+                 (push (list new-name 'added
+                             (vc-git-create-extra-fileinfo old-perm new-perm
+                                                           'rename name))
+                       result))
+             (push (list name (vc-git--state-code state)
+                         (vc-git-create-extra-fileinfo old-perm new-perm))
+                   result))))))
     (when result
       (setq result (nreverse result))
       (when files
         (dolist (entry result) (setq files (delete (car entry) files)))
         (unless files (setq next-stage nil))))
-    (when (or result (not next-stage)) (funcall update-function result next-stage))
-    (when next-stage (vc-git-dir-status-goto-stage next-stage files update-function))))
+    (when (or result (not next-stage))
+      (funcall update-function result next-stage))
+    (when next-stage
+      (vc-git-dir-status-goto-stage next-stage files update-function))))
 
 (defun vc-git-dir-status-goto-stage (stage files update-function)
   (erase-buffer)
   (case stage
-    ('update-index
+    (update-index
      (if files
          (vc-git-command (current-buffer) 'async files "add" "--refresh" "--")
-       (vc-git-command (current-buffer) 'async nil "update-index" "--refresh")))
-    ('ls-files-added
-     (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-c" "-s" "--"))
-    ('ls-files-up-to-date
-     (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-c" "-s" "--"))
-    ('ls-files-unknown
-     (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-o"
-                     "--directory" "--no-empty-directory" "--exclude-standard" "--"))
-    ('ls-files-ignored
-     (vc-git-command (current-buffer) 'async files "ls-files" "-z" "-o" "-i"
-                     "--directory" "--no-empty-directory" "--exclude-standard" "--"))
-    ('diff-index
-     (vc-git-command (current-buffer) 'async files "diff-index" "--relative" "-z" "-M" "HEAD" "--")))
+       (vc-git-command (current-buffer) 'async nil
+                       "update-index" "--refresh")))
+    (ls-files-added
+     (vc-git-command (current-buffer) 'async files
+                     "ls-files" "-z" "-c" "-s" "--"))
+    (ls-files-up-to-date
+     (vc-git-command (current-buffer) 'async files
+                     "ls-files" "-z" "-c" "-s" "--"))
+    (ls-files-unknown
+     (vc-git-command (current-buffer) 'async files
+                     "ls-files" "-z" "-o" "--directory"
+                     "--no-empty-directory" "--exclude-standard" "--"))
+    (ls-files-ignored
+     (vc-git-command (current-buffer) 'async files
+                     "ls-files" "-z" "-o" "-i" "--directory"
+                     "--no-empty-directory" "--exclude-standard" "--"))
+    (diff-index
+     (vc-git-command (current-buffer) 'async files
+                     "diff-index" "--relative" "-z" "-M" "HEAD" "--")))
   (vc-exec-after
-   `(vc-git-after-dir-status-stage (quote ,stage) (quote ,files) (quote ,update-function))))
+   `(vc-git-after-dir-status-stage ',stage  ',files ',update-function)))
 
 (defun vc-git-dir-status (dir update-function)
   "Return a list of (FILE STATE EXTRA) entries for DIR."
@@ -439,14 +473,16 @@
 	  (setq remote
 		(with-output-to-string
 		  (with-current-buffer standard-output
-		    (vc-git--out-ok "config" (concat "branch." branch ".remote")))))
+		    (vc-git--out-ok "config"
+                                    (concat "branch." branch ".remote")))))
 	  (when (string-match "\\([^\n]+\\)" remote)
 	    (setq remote (match-string 1 remote)))
 	  (when remote
 	    (setq remote-url
 		  (with-output-to-string
 		    (with-current-buffer standard-output
-		      (vc-git--out-ok "config" (concat "remote." remote ".url"))))))
+		      (vc-git--out-ok "config"
+                                      (concat "remote." remote ".url"))))))
 	  (when (string-match "\\([^\n]+\\)" remote-url)
 	    (setq remote-url (match-string 1 remote-url))))
       (setq branch "not (detached HEAD)"))
@@ -550,8 +586,8 @@
 	       (append
 		'("log" "--no-color")
 		(when shortlog
-		  '("--graph" "--decorate"
-		    "--date=short" "--pretty=format:%d%h  %ad  %s" "--abbrev-commit"))
+		  '("--graph" "--decorate" "--date=short"
+                    "--pretty=format:%d%h  %ad  %s" "--abbrev-commit"))
 		(when limit (list "-n" (format "%s" limit)))
 		(when start-revision (list start-revision))
 		'("--")))))))
@@ -565,7 +601,7 @@
 (defvar vc-short-log)
 
 (define-derived-mode vc-git-log-view-mode log-view-mode "Git-Log-View"
-  (require 'add-log) ;; we need the faces add-log
+  (require 'add-log) ;; We need the faces add-log.
   ;; Don't have file markers, so use impossible regexp.
   (set (make-local-variable 'log-view-file-re) "\\`a\\`")
   (set (make-local-variable 'log-view-per-file-logs) nil)
@@ -610,17 +646,16 @@
 REVISION may have the form BRANCH, BRANCH~N,
 or BRANCH^ (where \"^\" can be repeated)."
   (goto-char (point-min))
-  (let (found)
-    (when revision
-      (setq found
-	    (search-forward (format "\ncommit %s" revision) nil t
-			    (cond ((string-match "~\\([0-9]\\)$" revision)
-				   (1+ (string-to-number (match-string 1 revision))))
-				  ((string-match "\\^+$" revision)
-				   (1+ (length (match-string 0 revision))))
-				  (t nil)))))
-    (beginning-of-line)
-    found))
+  (prog1
+      (when revision
+        (search-forward
+         (format "\ncommit %s" revision) nil t
+         (cond ((string-match "~\\([0-9]\\)\\'" revision)
+                (1+ (string-to-number (match-string 1 revision))))
+               ((string-match "\\^+\\'" revision)
+                (1+ (length (match-string 0 revision))))
+               (t nil))))
+    (beginning-of-line)))
 
 (defun vc-git-diff (files &optional rev1 rev2 buffer)
   "Get a difference report using Git between two revisions of FILES."
@@ -948,7 +983,8 @@
                       (goto-char (point-min))
                       (= (forward-line 2) 1)
                       (bolp)
-                      (buffer-substring-no-properties (point-min) (1- (point-max)))))))
+                      (buffer-substring-no-properties (point-min)
+                                                      (1- (point-max)))))))
          (and name (not (string= name "undefined")) name))))
 
 (provide 'vc-git)
--- a/src/ChangeLog	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/ChangeLog	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,47 @@
+2010-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	Make it possible to C-g in a tight bytecode loop again (bug#5680).
+	* lisp.h (ELSE_PENDING_SIGNALS): New macro.
+	(QUIT): Use it to consolidate code and remove redundancy.
+	* bytecode.c (BYTE_CODE_QUIT): Use it as well.
+
+	* regex.c (regex_compile): Setup gl_state as well.
+
+	* syntax.c (skip_chars): Setup gl_state (bug#3823).
+	(in_classes): Use CONSP before XCAR/XCDR.
+
+2010-03-03  Chong Yidong  <cyd@stupidchicken.com>
+
+	* keymap.c (Fwhere_is_internal): Use Fequal to compare
+	definitions, so that keyboard macros are correctly handled
+	(Bug#5481).
+
+2010-03-02  Eli Zaretskii  <eliz@gnu.org>
+
+	* coding.c (decode_coding_emacs_mule): Fixup pointers to buffer
+	text that could be relocated inside the call to emacs_mule_char.
+	(emacs_mule_char): Use CODING_DECODE_CHAR instead of DECODE_CHAR.
+	(CODING_DECODE_CHAR): Add a comment describing its purpose.
+
+2010-03-02  Kenichi Handa  <handa@m17n.org>
+
+	* character.c (parse_str_as_multibyte): Fix handling of the
+	multibyte form of raw-bytes.
+	(str_as_multibyte): Likewise.
+
+	* buffer.c (Fset_buffer_multibyte): Fix handling of the multibyte
+	form of raw-bytes.
+
+2010-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+	* charset.c (load_charset_map_from_file)
+	(load_charset_map_from_vector): Zero out allocated
+	charset_map_entries before using them.
+
+2010-02-27  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* w32uniscribe.c (uniscribe_check_otf): Fix length check.
+
 2010-02-27  Chong Yidong  <cyd@stupidchicken.com>
 
 	* font.c (font_parse_fcname): Recognize "Book", "Condensed",
--- a/src/buffer.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/buffer.c	Sat Mar 06 05:16:27 2010 -0500
@@ -2499,7 +2499,9 @@
 
 	  if (ASCII_BYTE_P (*p))
 	    p++, pos++;
-	  else if (EQ (flag, Qt) && (bytes = MULTIBYTE_LENGTH (p, pend)) > 0)
+	  else if (EQ (flag, Qt)
+		   && ! CHAR_BYTE8_HEAD_P (*p)
+		   && (bytes = MULTIBYTE_LENGTH (p, pend)) > 0)
 	    p += bytes, pos += bytes;
 	  else
 	    {
--- a/src/bytecode.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/bytecode.c	Sat Mar 06 05:16:27 2010 -0500
@@ -393,6 +393,7 @@
 	Fsignal (Qquit, Qnil);				\
 	AFTER_POTENTIAL_GC ();				\
       }							\
+    ELSE_PENDING_SIGNALS				\
   } while (0)
 
 
--- a/src/character.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/character.c	Sat Mar 06 05:16:27 2010 -0500
@@ -630,7 +630,8 @@
       const unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
       while (str < adjusted_endp)
 	{
-	  if ((n = MULTIBYTE_LENGTH_NO_CHECK (str)) > 0)
+	  if (! CHAR_BYTE8_HEAD_P (*str)
+	      && (n = MULTIBYTE_LENGTH_NO_CHECK (str)) > 0)
 	    str += n, bytes += n;
 	  else
 	    str++, bytes += 2;
@@ -639,7 +640,8 @@
     }
   while (str < endp)
     {
-      if ((n = MULTIBYTE_LENGTH (str, endp)) > 0)
+      if (! CHAR_BYTE8_HEAD_P (*str)
+	  && (n = MULTIBYTE_LENGTH (str, endp)) > 0)
 	str += n, bytes += n;
       else
 	str++, bytes += 2;
@@ -673,10 +675,13 @@
     {
       unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
       while (p < adjusted_endp
+	     && ! CHAR_BYTE8_HEAD_P (*p)
 	     && (n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
 	p += n, chars++;
     }
-  while ((n = MULTIBYTE_LENGTH (p, endp)) > 0)
+  while (p < endp
+	 && ! CHAR_BYTE8_HEAD_P (*p)
+	 && (n = MULTIBYTE_LENGTH (p, endp)) > 0)
     p += n, chars++;
   if (nchars)
     *nchars = chars;
@@ -694,7 +699,8 @@
       unsigned char *adjusted_endp = endp - MAX_MULTIBYTE_LENGTH;
       while (p < adjusted_endp)
 	{
-	  if ((n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
+	  if (! CHAR_BYTE8_HEAD_P (*p)
+	      && (n = MULTIBYTE_LENGTH_NO_CHECK (p)) > 0)
 	    {
 	      while (n--)
 		*to++ = *p++;
@@ -710,7 +716,8 @@
     }
   while (p < endp)
     {
-      if ((n = MULTIBYTE_LENGTH (p, endp)) > 0)
+      if (! CHAR_BYTE8_HEAD_P (*p)
+	  && (n = MULTIBYTE_LENGTH (p, endp)) > 0)
 	{
 	  while (n--)
 	    *to++ = *p++;
--- a/src/charset.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/charset.c	Sat Mar 06 05:16:27 2010 -0500
@@ -531,6 +531,7 @@
   SAFE_ALLOCA (head, struct charset_map_entries *,
 	       sizeof (struct charset_map_entries));
   entries = head;
+  bzero (entries, sizeof (struct charset_map_entries));
 
   n_entries = 0;
   eof = 0;
@@ -557,6 +558,7 @@
 	  SAFE_ALLOCA (entries->next, struct charset_map_entries *,
 		       sizeof (struct charset_map_entries));
 	  entries = entries->next;
+	  bzero (entries, sizeof (struct charset_map_entries));
 	}
       idx = n_entries % 0x10000;
       entries->entry[idx].from = from;
@@ -596,6 +598,7 @@
   SAFE_ALLOCA (head, struct charset_map_entries *,
 	       sizeof (struct charset_map_entries));
   entries = head;
+  bzero (entries, sizeof (struct charset_map_entries));
 
   n_entries = 0;
   for (i = 0; i < len; i += 2)
@@ -632,6 +635,7 @@
 	  SAFE_ALLOCA (entries->next, struct charset_map_entries *,
 		       sizeof (struct charset_map_entries));
 	  entries = entries->next;
+	  bzero (entries, sizeof (struct charset_map_entries));
 	}
       idx = n_entries % 0x10000;
       entries->entry[idx].from = from;
--- a/src/coding.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/coding.c	Sat Mar 06 05:16:27 2010 -0500
@@ -1005,6 +1005,10 @@
     }
 }
 
+/* This wrapper macro is used to preserve validity of pointers into
+   buffer text across calls to decode_char, which could cause
+   relocation of buffers if it loads a charset map, because loading a
+   charset map allocates large structures.  */
 #define CODING_DECODE_CHAR(coding, src, src_base, src_end, charset, code, c) \
   do {									     \
     charset_map_loaded = 0;						     \
@@ -2061,7 +2065,7 @@
 /* Parse emacs-mule multibyte sequence at SRC and return the decoded
    character.  If CMP_STATUS indicates that we must expect MSEQ or
    RULE described above, decode it and return the negative value of
-   the deocded character or rule.  If an invalid byte is found, return
+   the decoded character or rule.  If an invalid byte is found, return
    -1.  If SRC is too short, return -2.  */
 
 int
@@ -2178,7 +2182,7 @@
 	default:
 	  abort ();
 	}
-      c = DECODE_CHAR (charset, code);
+      CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c);
       if (c < 0)
 	goto invalid_code;
     }
@@ -2525,9 +2529,23 @@
       else
 	{
 	  int nchars, nbytes;
+	  /* emacs_mule_char can load a charset map from a file, which
+	     allocates a large structure and might cause buffer text
+	     to be relocated as result.  Thus, we need to remember the
+	     original pointer to buffer text, and fixup all related
+	     pointers after the call.  */
+	  const unsigned char *orig = coding->source;
+	  EMACS_INT offset;
 
 	  c = emacs_mule_char (coding, src_base, &nbytes, &nchars, &id,
 			       cmp_status);
+	  offset = coding->source - orig;
+	  if (offset)
+	    {
+	      src += offset;
+	      src_base += offset;
+	      src_end += offset;
+	    }
 	  if (c < 0)
 	    {
 	      if (c == -1)
--- a/src/keymap.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/keymap.c	Sat Mar 06 05:16:27 2010 -0500
@@ -1633,13 +1633,13 @@
   /* If a mouse click position is given, our variables are based on
      the buffer clicked on, not the current buffer.  So we may have to
      switch the buffer here. */
-  
+
   if (CONSP (position))
     {
       Lisp_Object window;
-      
+
       window = POSN_WINDOW (position);
-	  
+
       if (WINDOWP (window)
 	  && BUFFERP (XWINDOW (window)->buffer)
 	  && XBUFFER (XWINDOW (window)->buffer) != current_buffer)
@@ -1651,14 +1651,14 @@
 	     would not be a problem here, but it is easier to keep
 	     things the same.
 	  */
-	      
+
 	  record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
-	  
+
 	  set_buffer_internal (XBUFFER (XWINDOW (window)->buffer));
 	}
     }
 
-  keymaps = Fcons (current_global_map, Qnil);  
+  keymaps = Fcons (current_global_map, Qnil);
 
   if (!NILP (olp))
     {
@@ -1685,8 +1685,8 @@
       /* Get the buffer local maps, possibly overriden by text or
 	 overlay properties */
 
-      local_map = get_local_map (pt, current_buffer, Qlocal_map); 
-      keymap = get_local_map (pt, current_buffer, Qkeymap); 
+      local_map = get_local_map (pt, current_buffer, Qlocal_map);
+      keymap = get_local_map (pt, current_buffer, Qkeymap);
 
       if (CONSP (position))
 	{
@@ -1694,7 +1694,7 @@
 
 	  /* For a mouse click, get the local text-property keymap
 	     of the place clicked on, rather than point.  */
-	  
+
 	  if (POSN_INBUFFER_P (position))
 	    {
 	      Lisp_Object pos;
@@ -1705,7 +1705,7 @@
 		{
 		  local_map = get_local_map (XINT (pos),
 					     current_buffer, Qlocal_map);
-		  
+
 		  keymap = get_local_map (XINT (pos),
 					  current_buffer, Qkeymap);
 		}
@@ -1716,12 +1716,12 @@
 	     string displayed via the `display' property,
 	     consider `local-map' and `keymap' properties of
 	     that string.  */
-	  
+
 	  if (string = POSN_STRING (position),
 	      (CONSP (string) && STRINGP (XCAR (string))))
 	    {
 	      Lisp_Object pos, map;
-	      
+
 	      pos = XCDR (string);
 	      string = XCAR (string);
 	      if (INTEGERP (pos)
@@ -1737,7 +1737,7 @@
 		    keymap = map;
 		}
 	    }
-	  
+
 	}
 
       if (!NILP (local_map))
@@ -2890,7 +2890,7 @@
 	     CONSP (sequences)))
     {
       Lisp_Object sequence, function;
-	  
+
       sequence = XCAR (sequences);
       sequences = XCDR (sequences);
 
@@ -2903,8 +2903,8 @@
 
 	 Either nil or number as value from Flookup_key
 	 means undefined.  */
-      if (!EQ (shadow_lookup (keymaps, sequence, Qnil, remapped),
-	       definition))
+      if (NILP (Fequal (shadow_lookup (keymaps, sequence, Qnil, remapped),
+			definition)))
 	continue;
 
       /* If the current sequence is a command remapping with
@@ -2933,12 +2933,12 @@
 	    Faset (sequence, make_number (ASIZE (sequence) - 1),
 		   build_string ("(any string)"));
 	}
-      
+
       /* It is a true unshadowed match.  Record it, unless it's already
 	 been seen (as could happen when inheriting keymaps).  */
       if (NILP (Fmember (sequence, found)))
 	found = Fcons (sequence, found);
-      
+
       /* If firstonly is Qnon_ascii, then we can return the first
 	 binding we find.  If firstonly is not Qnon_ascii but not
 	 nil, then we should return the first ascii-only binding
--- a/src/lisp.h	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/lisp.h	Sat Mar 06 05:16:27 2010 -0500
@@ -1933,6 +1933,12 @@
 #ifdef SYNC_INPUT
 extern void process_pending_signals P_ ((void));
 extern int pending_signals;
+#define ELSE_PENDING_SIGNALS				\
+  else if (pending_signals)				\
+    process_pending_signals ();
+#else  /* not SYNC_INPUT */
+#define ELSE_PENDING_SIGNALS
+#endif	/* not SYNC_INPUT */
 
 #define QUIT						\
   do {							\
@@ -1944,26 +1950,9 @@
 	  Fthrow (Vthrow_on_input, Qt);			\
 	Fsignal (Qquit, Qnil);				\
       }							\
-    else if (pending_signals)				\
-      process_pending_signals ();			\
+    ELSE_PENDING_SIGNALS				\
   } while (0)
 
-#else  /* not SYNC_INPUT */
-
-#define QUIT						\
-  do {							\
-    if (!NILP (Vquit_flag) && NILP (Vinhibit_quit))	\
-      {							\
-        Lisp_Object flag = Vquit_flag;			\
-	Vquit_flag = Qnil;				\
-	if (EQ (Vthrow_on_input, flag))			\
-	  Fthrow (Vthrow_on_input, Qt);			\
-	Fsignal (Qquit, Qnil);				\
-      }							\
-  } while (0)
-
-#endif	/* not SYNC_INPUT */
-
 
 /* Nonzero if ought to quit now.  */
 
--- a/src/regex.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/regex.c	Sat Mar 06 05:16:27 2010 -0500
@@ -3065,6 +3065,13 @@
 			   don't need to handle them for multibyte.
 			   They are distinguished by a negative wctype.  */
 
+			/* Setup the gl_state object to its buffer-defined
+			   value.  This hardcodes the buffer-global
+			   syntax-table for ASCII chars, while the other chars
+			   will obey syntax-table properties.  It's not ideal,
+			   but it's the way it's been done until now.  */
+			SETUP_SYNTAX_TABLE (BEGV, 0);
+
 			for (ch = 0; ch < 256; ++ch)
 			  {
 			    c = RE_CHAR_TO_MULTIBYTE (ch);
--- a/src/syntax.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/syntax.c	Sat Mar 06 05:16:27 2010 -0500
@@ -1747,6 +1747,12 @@
       }
 
     immediate_quit = 1;
+    /* This code may look up syntax tables using macros that rely on the
+       gl_state object.  To make sure this object is not out of date,
+       let's initialize it manually.
+       We ignore syntax-table text-properties for now, since that's
+       what we've done in the past.  */
+    SETUP_SYNTAX_TABLE (BEGV, 0);
     if (forwardp)
       {
 	if (multibyte)
@@ -2072,7 +2078,7 @@
 {
   int fits_class = 0;
 
-  while (! NILP (iso_classes))
+  while (CONSP (iso_classes))
     {
       Lisp_Object elt;
       elt = XCAR (iso_classes);
--- a/src/w32uniscribe.c	Sat Feb 27 07:43:30 2010 -0500
+++ b/src/w32uniscribe.c	Sat Mar 06 05:16:27 2010 -0500
@@ -666,7 +666,7 @@
   struct gcpro gcpro1;
 
   /* Check the spec is in the right format.  */
-  if (!CONSP (otf_spec) || Flength (otf_spec) < 3)
+  if (!CONSP (otf_spec) || XINT (Flength (otf_spec)) < 3)
     return 0;
 
   /* Break otf_spec into its components.  */
--- a/test/cedet/ede-tests.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/test/cedet/ede-tests.el	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,30 @@
+;;; ede-tests.el --- Some tests for the Emacs Development Environment
+
+;; Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+
+;; 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/>.
+
+;;; Commentary:
+
+;; Extracted from ede-locate.el in the CEDET distribution.
+
+;;; Code:
+
 ;;; From ede-locate:
 
 (require 'ede/locate)
@@ -58,3 +85,4 @@
   )
 
 ;; arch-tag: 79fae12e-652f-4544-a20e-b24d87b4917d
+;;; ede-test.el ends here
--- a/test/cedet/srecode-tests.el	Sat Feb 27 07:43:30 2010 -0500
+++ b/test/cedet/srecode-tests.el	Sat Mar 06 05:16:27 2010 -0500
@@ -1,3 +1,31 @@
+;;; srecode-tests.el --- Some tests for CEDET's srecode
+
+;; Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+
+;; 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/>.
+
+;;; Commentary:
+
+;; Extracted from srecode-fields.el and srecode-document.el in the
+;; CEDET distribution.
+
+;;; Code:
+
 ;;; From srecode-fields:
 
 (require 'srecode/fields)
@@ -266,3 +294,4 @@
 	  (srecode-dump extract))))))
 
 ;; arch-tag: 7a467849-b415-4bdc-ba2a-284ace156a65
+;;; srecode-tests.el ends here