Mercurial > emacs
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