Mercurial > emacs
changeset 107352:2c10bcb56f5b
from trunk
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 08 Mar 2010 10:53:37 +0900 |
parents | 4cec4e49a7ae (current diff) 1cbedcbd728f (diff) |
children | 14a34dbaa721 7199654c719e |
files | lisp/ChangeLog |
diffstat | 26 files changed, 370 insertions(+), 175 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/emacs/ChangeLog Mon Mar 08 10:52:57 2010 +0900 +++ b/doc/emacs/ChangeLog Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/doc/emacs/custom.texi Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/doc/emacs/major.texi Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/doc/lispref/ChangeLog Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/doc/lispref/objects.texi Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/etc/ChangeLog Mon Mar 08 10:53:37 2010 +0900 @@ -1,3 +1,12 @@ +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.
--- a/etc/NEWS Mon Mar 08 10:52:57 2010 +0900 +++ b/etc/NEWS Mon Mar 08 10:53:37 2010 +0900 @@ -123,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 @@ -437,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/refcards/Makefile Mon Mar 08 10:52:57 2010 +0900 +++ b/etc/refcards/Makefile Mon Mar 08 10:53:37 2010 +0900 @@ -81,16 +81,11 @@ gnus-booklet.pdf: gnus-refcard.tex gnus-logo.pdf pdflatex -jobname=gnus-booklet '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}' -## FIXME just pdftex produces portrait rather than landscape. -orgcard.pdf: orgcard.ps - ps2pdf $< - ## Everything not explicitly listed above. %.pdf: %.tex pdftex $< - ## dvi files. cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi sk-refcard.dvi \
--- a/etc/refcards/orgcard.tex Mon Mar 08 10:52:57 2010 +0900 +++ b/etc/refcards/orgcard.tex Mon Mar 08 10:53:37 2010 +0900 @@ -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,
--- a/etc/srecode/default.srt Mon Mar 08 10:52:57 2010 +0900 +++ b/etc/srecode/default.srt Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/ChangeLog Mon Mar 08 10:53:37 2010 +0900 @@ -3,6 +3,43 @@ * language/misc-lang.el (windows-1256): New coding system. (cp1256): New alias of windows-1256 (bug#5684). +2010-03-07 Andreas Schwab <schwab@linux-m68k.org> + + * mail/rfc822.el (rfc822-addresses): Move catch clause down around + call to rfc822-bad-address. (Bug#5692) + +2010-03-07 Štěpán Němec <stepnem@gmail.com> (tiny change) + + * vc-git.el (vc-git-annotate-extract-revision-at-line): Use + vc-git-root as default direcotry for revision path (Bug#5657). + +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 + 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 @@ -27,19 +64,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 Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/calculator.el Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/cedet/semantic/grammar.el Mon Mar 08 10:53:37 2010 +0900 @@ -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/info.el Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/info.el Mon Mar 08 10:53:37 2010 +0900 @@ -3062,6 +3062,8 @@ num (1- num))) (Info-goto-node (nth 1 (car Info-index-alternatives))) (if (> (nth 3 (car Info-index-alternatives)) 0) + ;; 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))))
--- a/lisp/macros.el Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/macros.el Mon Mar 08 10:53:37 2010 +0900 @@ -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/mail/rfc822.el Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/mail/rfc822.el Mon Mar 08 10:53:37 2010 +0900 @@ -296,26 +296,26 @@ ;; initial value to prevent rfc822-bad-address from ;; raising a wrong-type-argument error (rfc822-address-start (point))) - (catch 'address ; this is for rfc822-bad-address - (rfc822-nuke-whitespace) - (while (not (eobp)) - (setq rfc822-address-start (point)) - (setq tem - (cond ((rfc822-looking-at ?\,) - nil) - ((looking-at "[][\000-\037@;:\\.>)]") - (forward-char) - (rfc822-bad-address - (format "Strange character \\%c found" - (preceding-char)))) - (t - (rfc822-addresses-1 t)))) - (cond ((null tem)) - ((stringp tem) - (setq list (cons tem list))) - (t - (setq list (nconc (nreverse tem) list))))) - (nreverse list)))) + (rfc822-nuke-whitespace) + (while (not (eobp)) + (setq rfc822-address-start (point)) + (setq tem + (cond ((rfc822-looking-at ?\,) + nil) + ((looking-at "[][\000-\037@;:\\.>)]") + (forward-char) + (catch 'address ; this is for rfc822-bad-address + (rfc822-bad-address + (format "Strange character \\%c found" + (preceding-char))))) + (t + (rfc822-addresses-1 t)))) + (cond ((null tem)) + ((stringp tem) + (setq list (cons tem list))) + (t + (setq list (nconc (nreverse tem) list))))) + (nreverse list))) (and buf (kill-buffer buf)))))) (provide 'rfc822)
--- a/lisp/man.el Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/man.el Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/lisp/vc-git.el Mon Mar 08 10:53:37 2010 +0900 @@ -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." @@ -668,7 +703,8 @@ (when (looking-at "\\([0-9a-f^][0-9a-f]+\\) \\(\\([^(]+\\) \\)?") (let ((revision (match-string-no-properties 1))) (if (match-beginning 2) - (cons revision (expand-file-name (match-string-no-properties 3))) + (cons revision (expand-file-name (match-string-no-properties 3) + (vc-git-root default-directory))) revision))))) ;;; TAG SYSTEM @@ -948,7 +984,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 Mon Mar 08 10:52:57 2010 +0900 +++ b/src/ChangeLog Mon Mar 08 10:53:37 2010 +0900 @@ -1,3 +1,21 @@ +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
--- a/src/bytecode.c Mon Mar 08 10:52:57 2010 +0900 +++ b/src/bytecode.c Mon Mar 08 10:53:37 2010 +0900 @@ -393,6 +393,7 @@ Fsignal (Qquit, Qnil); \ AFTER_POTENTIAL_GC (); \ } \ + ELSE_PENDING_SIGNALS \ } while (0)
--- a/src/keymap.c Mon Mar 08 10:52:57 2010 +0900 +++ b/src/keymap.c Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/src/lisp.h Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/src/regex.c Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/src/syntax.c Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/test/cedet/ede-tests.el Mon Mar 08 10:53:37 2010 +0900 @@ -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 Mon Mar 08 10:52:57 2010 +0900 +++ b/test/cedet/srecode-tests.el Mon Mar 08 10:53:37 2010 +0900 @@ -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