+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.
@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
@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}.
+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):
@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
+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.
** 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.
-
\f
* Editing Changes in Emacs 23.2
\f
* 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
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 \
% 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
+% 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,
% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
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
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 "$"
* 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
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.
(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
;; 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:
;;
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))))
(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))
;; 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)
"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.")
;; * 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.
;;;###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))))
(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))
(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))
(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."
(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)")))
(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
(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)
" " (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"
(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"
(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."
(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)"))
(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))
'("--")))))))
(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)
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."
(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
(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)
+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
Fsignal (Qquit, Qnil); \
AFTER_POTENTIAL_GC (); \
} \
+ ELSE_PENDING_SIGNALS \
} while (0)
/* 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)
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))
{
/* 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))
{
/* 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;
{
local_map = get_local_map (XINT (pos),
current_buffer, Qlocal_map);
-
+
keymap = get_local_map (XINT (pos),
current_buffer, Qkeymap);
}
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)
keymap = map;
}
}
-
+
}
if (!NILP (local_map))
CONSP (sequences)))
{
Lisp_Object sequence, function;
-
+
sequence = XCAR (sequences);
sequences = XCDR (sequences);
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
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
#ifdef SYNC_INPUT
extern void process_pending_signals P_ ((void));
extern int pending_signals;
-
-#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); \
- } \
- else if (pending_signals) \
- process_pending_signals (); \
- } while (0)
-
+#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 { \
Fthrow (Vthrow_on_input, Qt); \
Fsignal (Qquit, Qnil); \
} \
+ ELSE_PENDING_SIGNALS \
} while (0)
-#endif /* not SYNC_INPUT */
-
/* Nonzero if ought to quit now. */
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);
}
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)
{
int fits_class = 0;
- while (! NILP (iso_classes))
+ while (CONSP (iso_classes))
{
Lisp_Object elt;
elt = XCAR (iso_classes);
+;;; 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)
)
;; arch-tag: 79fae12e-652f-4544-a20e-b24d87b4917d
+;;; ede-test.el ends here
+;;; 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)
(srecode-dump extract))))))
;; arch-tag: 7a467849-b415-4bdc-ba2a-284ace156a65
+;;; srecode-tests.el ends here