changeset 108429:c944b55d017d

Merge from mainline.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sun, 07 Mar 2010 11:51:19 +0000
parents 9257c5632940 (current diff) 6ac7a46c38cc (diff)
children 73ea9db7efc3
files
diffstat 20 files changed, 295 insertions(+), 123 deletions(-) [+]
line wrap: on
line diff
--- a/doc/emacs/ChangeLog	Fri Mar 05 15:28:17 2010 +0000
+++ b/doc/emacs/ChangeLog	Sun Mar 07 11:51:19 2010 +0000
@@ -1,3 +1,10 @@
+2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* custom.texi (Init Examples): Add xref to Locals.
+
+	* major.texi (Choosing Modes): Mention usage of setq-default for
+	setting the default value of major-mode (Bug#5688).
+
 2010-03-02  Chong Yidong  <cyd@stupidchicken.com>
 
 	* frames.texi (Mouse Avoidance): Mention make-pointer-invisible.
--- a/doc/emacs/custom.texi	Fri Mar 05 15:28:17 2010 +0000
+++ b/doc/emacs/custom.texi	Sun Mar 07 11:51:19 2010 +0000
@@ -2256,9 +2256,10 @@
 @end example
 
 This sets the default value, which is effective in all buffers that do
-not have local values for the variable.  Setting @code{case-fold-search}
-with @code{setq} affects only the current buffer's local value, which
-is not what you probably want to do in an init file.
+not have local values for the variable (@pxref{Locals}).  Setting
+@code{case-fold-search} with @code{setq} affects only the current
+buffer's local value, which is probably not what you want to do in an
+init file.
 
 @item
 @vindex user-mail-address
--- a/doc/emacs/major.texi	Fri Mar 05 15:28:17 2010 +0000
+++ b/doc/emacs/major.texi	Sun Mar 07 11:51:19 2010 +0000
@@ -196,17 +196,33 @@
 @code{magic-fallback-mode-alist} contains forms that check for image
 files, HTML/XML/SGML files, and Postscript files.
 
-  When you visit a file that does not specify a major mode to use, or
-when you create a new buffer with @kbd{C-x b}, the default value of
-the variable @code{major-mode} specifies which major mode to use.  Normally
-its value is the symbol @code{fundamental-mode}, which specifies
-Fundamental mode.  If the default value of @code{major-mode} is @code{nil},
-the major mode is taken from the previously current buffer.
+@vindex major-mode
+  Once a major mode is chosen, Emacs sets the value of the variable
+@code{major-mode} to the symbol for that major mode (e.g.,
+@code{text-mode} for Text mode).  This is a per-buffer variable
+(@pxref{Locals}); its buffer-local value is set automatically, and you
+should not change it yourself.
+
+  The default value of @code{major-mode} determines the major mode to
+use for files that do not specify a major mode, and for new buffers
+created with @kbd{C-x b}.  Normally, this default value is the symbol
+@code{fundamental-mode}, which specifies Fundamental mode.  You can
+change it via the Customization interface (@pxref{Easy
+Customization}), or by adding a line like this to your init file
+(@pxref{Init File}):
+
+@smallexample
+(setq-default major-mode 'text-mode)
+@end smallexample
+
+@noindent
+If the default value of @code{major-mode} is @code{nil}, the major
+mode is taken from the previously current buffer.
 
 @findex normal-mode
-  If you change the major mode of a buffer, you can go back to the major
-mode Emacs would choose automatically: use the command @kbd{M-x
-normal-mode} to do this.  This is the same function that
+  If you have changed the major mode of a buffer, you can return to
+the major mode Emacs would have chosen automatically, by typing
+@kbd{M-x normal-mode}.  This is the same function that
 @code{find-file} calls to choose the major mode.  It also processes
 the file's @samp{-*-} line or local variables list (if any).
 @xref{File Variables}.
--- a/doc/lispref/ChangeLog	Fri Mar 05 15:28:17 2010 +0000
+++ b/doc/lispref/ChangeLog	Sun Mar 07 11:51:19 2010 +0000
@@ -1,3 +1,8 @@
+2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* objects.texi (Integer Type): Take note of the read syntax
+	exception for numbers that cannot fit in the integer type.
+
 2010-03-03  Glenn Morris  <rgm@gnu.org>
 
 	* numbers.texi (Integer Basics, Bitwise Operations):
--- a/doc/lispref/objects.texi	Fri Mar 05 15:28:17 2010 +0000
+++ b/doc/lispref/objects.texi	Sun Mar 07 11:51:19 2010 +0000
@@ -200,6 +200,13 @@
 @end group
 @end example
 
+@noindent
+As a special exception, if a sequence of digits specifies an integer
+too large or too small to be a valid integer object, the Lisp reader
+reads it as a floating-point number (@pxref{Floating Point Type}).
+For instance, on most machines @code{536870912} is read as the
+floating-point number @code{536870912.0}.
+
   @xref{Numbers}, for more information.
 
 @node Floating Point Type
--- a/etc/ChangeLog	Fri Mar 05 15:28:17 2010 +0000
+++ b/etc/ChangeLog	Sun Mar 07 11:51:19 2010 +0000
@@ -1,3 +1,7 @@
+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.
--- a/etc/NEWS	Fri Mar 05 15:28:17 2010 +0000
+++ b/etc/NEWS	Sun Mar 07 11:51:19 2010 +0000
@@ -432,6 +432,14 @@
 
 * Incompatible Lisp Changes in Emacs 23.2
 
++++
+** The Lisp reader turns integers that are too large/small into floats.
+For instance, on machines where `536870911' is the largest integer,
+reading `536870912' gives the floating-point object `536870912.0'.
+
+This change only concerns the Lisp reader; it does not affect how
+actual integer objects overflow.
+
 ---
 ** Several obsolete functions removed.
 The functions have been obsolete since Emacs 19, and are unlikely to
--- a/etc/srecode/default.srt	Fri Mar 05 15:28:17 2010 +0000
+++ b/etc/srecode/default.srt	Sun Mar 07 11:51:19 2010 +0000
@@ -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	Fri Mar 05 15:28:17 2010 +0000
+++ b/lisp/ChangeLog	Sun Mar 07 11:51:19 2010 +0000
@@ -1,3 +1,25 @@
+2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* calculator.el (calculator): Don't bind split-window-keep-point
+	(Bug#5674).
+
+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
@@ -27,19 +49,17 @@
 
 2010-03-01  Alan Mackenzie  <acm@muc.de>
 
-	* progmodes/cc-engine.el (c-remove-stale-state-cache): Correct
-	previous patch.
+	* 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): Renamed from
+	* language/burmese.el (burmese-composable-pattern): Rename from
 	myanmar-composable-pattern.
 
-	* international/characters.el (script-list): Change myanmar to
-	burmese.
-
-	* international/fontset.el (script-representative-chars): Change
-	myanmar to burmese.
+	* 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.
 
--- a/lisp/calculator.el	Fri Mar 05 15:28:17 2010 +0000
+++ b/lisp/calculator.el	Sun Mar 07 11:51:19 2010 +0000
@@ -724,8 +724,7 @@
     (progn
       (cond
         ((not (get-buffer-window calculator-buffer))
-         (let ((split-window-keep-point nil)
-               (window-min-height 2))
+         (let ((window-min-height 2))
            ;; maybe leave two lines for our window because of the normal
            ;; `raised' modeline in Emacs 21
            (select-window
--- a/lisp/cedet/semantic/grammar.el	Fri Mar 05 15:28:17 2010 +0000
+++ b/lisp/cedet/semantic/grammar.el	Sun Mar 07 11:51:19 2010 +0000
@@ -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/man.el	Fri Mar 05 15:28:17 2010 +0000
+++ b/lisp/man.el	Sun Mar 07 11:51:19 2010 +0000
@@ -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/vc-git.el	Fri Mar 05 15:28:17 2010 +0000
+++ b/lisp/vc-git.el	Sun Mar 07 11:51:19 2010 +0000
@@ -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	Fri Mar 05 15:28:17 2010 +0000
+++ b/src/ChangeLog	Sun Mar 07 11:51:19 2010 +0000
@@ -1,3 +1,15 @@
+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
--- a/src/bytecode.c	Fri Mar 05 15:28:17 2010 +0000
+++ b/src/bytecode.c	Sun Mar 07 11:51:19 2010 +0000
@@ -393,6 +393,7 @@
 	Fsignal (Qquit, Qnil);				\
 	AFTER_POTENTIAL_GC ();				\
       }							\
+    ELSE_PENDING_SIGNALS				\
   } while (0)
 
 
--- a/src/lisp.h	Fri Mar 05 15:28:17 2010 +0000
+++ b/src/lisp.h	Sun Mar 07 11:51:19 2010 +0000
@@ -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	Fri Mar 05 15:28:17 2010 +0000
+++ b/src/regex.c	Sun Mar 07 11:51:19 2010 +0000
@@ -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	Fri Mar 05 15:28:17 2010 +0000
+++ b/src/syntax.c	Sun Mar 07 11:51:19 2010 +0000
@@ -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/test/cedet/ede-tests.el	Fri Mar 05 15:28:17 2010 +0000
+++ b/test/cedet/ede-tests.el	Sun Mar 07 11:51:19 2010 +0000
@@ -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	Fri Mar 05 15:28:17 2010 +0000
+++ b/test/cedet/srecode-tests.el	Sun Mar 07 11:51:19 2010 +0000
@@ -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