Now on revision 112062. ------------------------------------------------------------ revno: 112062 committer: Jay Belanger branch nick: trunk timestamp: Sat 2013-03-16 19:19:09 -0500 message: * lisp/calc/calc-ext.el (math-read-number-fancy): Check for an explicit radix before checking for HMS forms. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-03-16 22:08:22 +0000 +++ lisp/ChangeLog 2013-03-17 00:19:09 +0000 @@ -1,3 +1,8 @@ +2013-03-17 Jay Belanger + + * calc/calc-ext.el (math-read-number-fancy): Check for an explicit + radix before checking for HMS forms. + 2013-03-16 Leo Liu * progmodes/scheme.el: Add indentation and font-locking for λ. === modified file 'lisp/calc/calc-ext.el' --- lisp/calc/calc-ext.el 2013-01-01 09:11:05 +0000 +++ lisp/calc/calc-ext.el 2013-03-17 00:19:09 +0000 @@ -2945,50 +2945,6 @@ (and x sigma (math-scalarp x) (math-anglep sigma) (list 'sdev x sigma)))) - ;; Hours (or degrees) - ((or (string-match "^\\([^#^]+\\)[@oOhH]\\(.*\\)$" s) - (string-match "^\\([^#^]+\\)[dD][eE]?[gG]?\\(.*\\)$" s)) - (let* ((hours (math-match-substring s 1)) - (minsec (math-match-substring s 2)) - (hours (math-read-number hours)) - (minsec (if (> (length minsec) 0) (math-read-number minsec) 0))) - (and hours minsec - (math-num-integerp hours) - (not (math-negp hours)) (not (math-negp minsec)) - (cond ((math-num-integerp minsec) - (and (Math-lessp minsec 60) - (list 'hms hours minsec 0))) - ((and (eq (car-safe minsec) 'hms) - (math-zerop (nth 1 minsec))) - (math-add (list 'hms hours 0 0) minsec)) - (t nil))))) - - ;; Minutes - ((string-match "^\\([^'#^]+\\)[mM']\\(.*\\)$" s) - (let* ((minutes (math-match-substring s 1)) - (seconds (math-match-substring s 2)) - (minutes (math-read-number minutes)) - (seconds (if (> (length seconds) 0) (math-read-number seconds) 0))) - (and minutes seconds - (math-num-integerp minutes) - (not (math-negp minutes)) (not (math-negp seconds)) - (cond ((math-realp seconds) - (and (Math-lessp minutes 60) - (list 'hms 0 minutes seconds))) - ((and (eq (car-safe seconds) 'hms) - (math-zerop (nth 1 seconds)) - (math-zerop (nth 2 seconds))) - (math-add (list 'hms 0 minutes 0) seconds)) - (t nil))))) - - ;; Seconds - ((string-match "^\\([^\"#^]+\\)[sS\"]$" s) - (let ((seconds (math-read-number (math-match-substring s 1)))) - (and seconds (math-realp seconds) - (not (math-negp seconds)) - (Math-lessp seconds 60) - (list 'hms 0 0 seconds)))) - ;; Integer+fraction with explicit radix ((string-match "^\\([0-9]+\\)\\(#\\|\\^\\^\\)\\([0-9a-zA-Z]*\\)[:/]\\([0-9a-zA-Z]*\\)[:/]\\([0-9a-zA-Z]\\)$" s) (let ((radix (string-to-number (math-match-substring s 1))) @@ -3061,6 +3017,50 @@ (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) + ;; Hours (or degrees) + ((or (string-match "^\\([^#^]+\\)[@oOhH]\\(.*\\)$" s) + (string-match "^\\([^#^]+\\)[dD][eE]?[gG]?\\(.*\\)$" s)) + (let* ((hours (math-match-substring s 1)) + (minsec (math-match-substring s 2)) + (hours (math-read-number hours)) + (minsec (if (> (length minsec) 0) (math-read-number minsec) 0))) + (and hours minsec + (math-num-integerp hours) + (not (math-negp hours)) (not (math-negp minsec)) + (cond ((math-num-integerp minsec) + (and (Math-lessp minsec 60) + (list 'hms hours minsec 0))) + ((and (eq (car-safe minsec) 'hms) + (math-zerop (nth 1 minsec))) + (math-add (list 'hms hours 0 0) minsec)) + (t nil))))) + + ;; Minutes + ((string-match "^\\([^'#^]+\\)[mM']\\(.*\\)$" s) + (let* ((minutes (math-match-substring s 1)) + (seconds (math-match-substring s 2)) + (minutes (math-read-number minutes)) + (seconds (if (> (length seconds) 0) (math-read-number seconds) 0))) + (and minutes seconds + (math-num-integerp minutes) + (not (math-negp minutes)) (not (math-negp seconds)) + (cond ((math-realp seconds) + (and (Math-lessp minutes 60) + (list 'hms 0 minutes seconds))) + ((and (eq (car-safe seconds) 'hms) + (math-zerop (nth 1 seconds)) + (math-zerop (nth 2 seconds))) + (math-add (list 'hms 0 minutes 0) seconds)) + (t nil))))) + + ;; Seconds + ((string-match "^\\([^\"#^]+\\)[sS\"]$" s) + (let ((seconds (math-read-number (math-match-substring s 1)))) + (and seconds (math-realp seconds) + (not (math-negp seconds)) + (Math-lessp seconds 60) + (list 'hms 0 0 seconds)))) + ;; Fraction using "/" instead of ":" ((string-match "^\\([0-9]+\\)/\\([0-9/]+\\)$" s) (math-read-number (concat (math-match-substring s 1) ":" ------------------------------------------------------------ revno: 112061 [merge] committer: Stefan Monnier branch nick: trunk timestamp: Sat 2013-03-16 18:08:22 -0400 message: Merge from emacs-24 diff: === modified file 'admin/ChangeLog' --- admin/ChangeLog 2013-03-13 18:42:22 +0000 +++ admin/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,11 @@ +2013-03-16 Glenn Morris + + * admin.el (manual-pdf, manual-dvi): Pass -I to texi2pdf, texi2dvi. + +2013-03-16 Glenn Morris + + * admin.el (manual-html-mono, manual-html-node): Add -DWWW_GNU_ORG. + 2013-03-13 Paul Eggert File synchronization fixes (Bug#13944). === modified file 'admin/admin.el' --- admin/admin.el 2013-03-11 16:31:55 +0000 +++ admin/admin.el 2013-03-16 22:08:22 +0000 @@ -285,6 +285,7 @@ HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using the @import directive." (call-process "makeinfo" nil nil nil + "-D" "WWW_GNU_ORG" "-I" (expand-file-name "../emacs" (file-name-directory texi-file)) "-I" (expand-file-name "../misc" @@ -310,6 +311,7 @@ (unless (file-exists-p texi-file) (error "Manual file %s not found" texi-file)) (call-process "makeinfo" nil nil nil + "-D" "WWW_GNU_ORG" "-I" (expand-file-name "../emacs" (file-name-directory texi-file)) "-I" (expand-file-name "../misc" @@ -354,12 +356,22 @@ (defun manual-pdf (texi-file dest) "Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST." - (call-process "texi2pdf" nil nil nil texi-file "-o" dest)) + (call-process "texi2pdf" nil nil nil + "-I" (expand-file-name "../emacs" + (file-name-directory texi-file)) + "-I" (expand-file-name "../misc" + (file-name-directory texi-file)) + texi-file "-o" dest)) (defun manual-dvi (texi-file dest ps-dest) "Run texi2dvi on TEXI-FILE, emitting dvi output to DEST. Also generate PostScript output in PS-DEST." - (call-process "texi2dvi" nil nil nil texi-file "-o" dest) + (call-process "texi2dvi" nil nil nil + "-I" (expand-file-name "../emacs" + (file-name-directory texi-file)) + "-I" (expand-file-name "../misc" + (file-name-directory texi-file)) + texi-file "-o" dest) (call-process "dvips" nil nil nil dest "-o" ps-dest) (call-process "gzip" nil nil nil dest) (call-process "gzip" nil nil nil ps-dest)) === modified file 'admin/bzrmerge.el' --- admin/bzrmerge.el 2013-03-03 07:26:39 +0000 +++ admin/bzrmerge.el 2013-03-16 22:08:22 +0000 @@ -50,7 +50,7 @@ (call-process "bzr" nil t nil "status" "-v") (goto-char (point-min)) (when (re-search-forward "^conflicts:\n" nil t) - (error "You still have unresolved conflicts")) + (user-error "You still have unresolved conflicts")) (let ((merges ()) found) (if (not (re-search-forward "^pending merges:\n" nil t)) @@ -62,7 +62,7 @@ (setq found (not (equal "unknown" (match-string 1))))))) found) - (error "You still have uncommitted changes")) + (user-error "You still have uncommitted changes")) ;; This is really stupid, but it seems there's no easy way to figure ;; out which revisions have been merged already. The only info I can ;; find is the "pending merges" from "bzr status -v", which is not @@ -171,7 +171,7 @@ (enable-local-eval nil)) (find-file-noselect file)) (if (buffer-modified-p) - (error "Unsaved changes in %s" (current-buffer))) + (user-error "Unsaved changes in %s" (current-buffer))) (save-excursion (cond ((derived-mode-p 'change-log-mode) @@ -323,7 +323,7 @@ BEWARE! Important metadata is kept in this Emacs session! Do not commit without re-running `M-x bzrmerge' first!" :warning bzrmerge-warning-buffer)) - (error "Resolve conflicts manually"))))) + (user-error "Resolve conflicts manually"))))) (cons merge skip))))) (defun bzrmerge (from) === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-03-11 16:31:55 +0000 +++ doc/emacs/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,11 @@ +2013-03-16 Glenn Morris + + * emacs.texi (Top): Add some stuff specific to www.gnu.org. + +2013-03-16 Glenn Morris + + * Version 24.3 released. + 2013-03-04 Paul Eggert Prefer UTF-8 for documentation. === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2013-03-04 08:45:03 +0000 +++ doc/emacs/emacs.texi 2013-03-16 22:08:22 +0000 @@ -111,10 +111,21 @@ @top The Emacs Editor Emacs is the extensible, customizable, self-documenting real-time -display editor. This Info file describes how to edit with Emacs and +display editor. This manual describes how to edit with Emacs and some of the ways to customize it; it corresponds to GNU Emacs version @value{EMACSVER}. +@ifset WWW_GNU_ORG +@html +The homepage for GNU Emacs is at +http://www.gnu.org/software/emacs/.
+To view this manual in other formats, click +here.
+You can also purchase a printed copy from the +FSF store. +@end html +@end ifset + @ifinfo If you are reading this in Emacs, type @kbd{h} to read a basic introduction to the Info documentation system. === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2013-03-11 16:31:55 +0000 +++ doc/lispintro/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,11 @@ +2013-03-16 Glenn Morris + + * emacs-lisp-intro.texi: Add some stuff specific to www.gnu.org. + +2013-03-16 Glenn Morris + + * Version 24.3 released. + 2013-03-03 Glenn Morris * emacs-lisp-intro.texi (Digression into C): Update example. === modified file 'doc/lispintro/emacs-lisp-intro.texi' --- doc/lispintro/emacs-lisp-intro.texi 2013-03-05 03:59:35 +0000 +++ doc/lispintro/emacs-lisp-intro.texi 2013-03-16 22:08:22 +0000 @@ -227,6 +227,14 @@ people who are not programmers. @sp 1 Edition @value{edition-number}, @value{update-date} +@ifset WWW_GNU_ORG +@html +

The homepage for GNU Emacs is at +http://www.gnu.org/software/emacs/. +
To view this manual in other formats, click +here. +@end html +@end ifset @sp 1 Copyright @copyright{} 1990--1995, 1997, 2001--2013 Free Software Foundation, Inc. === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-03-11 17:05:30 +0000 +++ doc/lispref/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,10 @@ +2013-03-16 Glenn Morris + + * elisp.texi: Add some stuff specific to www.gnu.org. + +2013-03-16 Glenn Morris + + * Version 24.3 released. 2013-03-11 Teodor Zlatanov * control.texi (Pattern matching case statement): Fix typo. === modified file 'doc/lispref/elisp.texi' --- doc/lispref/elisp.texi 2013-03-04 08:45:03 +0000 +++ doc/lispref/elisp.texi 2013-03-16 22:08:22 +0000 @@ -97,6 +97,16 @@ This is the @cite{GNU Emacs Lisp Reference Manual} @end ifnottex corresponding to Emacs version @value{EMACSVER}. +@ifset WWW_GNU_ORG +@html +

The homepage for GNU Emacs is at +http://www.gnu.org/software/emacs/.
+For information on using Emacs, refer to +the Emacs +Manual.
To view this manual in other formats, +click here. +@end html +@end ifset Copyright @copyright{} 1990--1996, 1998--2013 Free Software Foundation, Inc. === modified file 'leim/ChangeLog' --- leim/ChangeLog 2013-03-11 16:31:55 +0000 +++ leim/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,15 @@ +2013-03-16 Stefan Monnier + + * quail/latin-ltx.el: Resolve conflicts (bug#13950). + (latin-ltx--mark-map, latin-ltx--mark-re): New constants. + (latin-ltx--define-rules): Check for conflicts. Eval `re's. + (rules): Use tighter regexps to avoid conflicts. + Consolidate the various rules for combining marks. + +2013-03-16 Glenn Morris + + * Version 24.3 released. + 2013-02-08 Stefan Monnier * quail/latin-ltx.el: Add greek superscripts. === modified file 'leim/quail/latin-ltx.el' --- leim/quail/latin-ltx.el 2013-02-08 15:48:36 +0000 +++ leim/quail/latin-ltx.el 2013-03-16 22:08:22 +0000 @@ -43,6 +43,26 @@ t t nil nil nil nil nil nil nil t) (eval-when-compile + (require 'cl-lib) + + (defconst latin-ltx--mark-map + '(("DOT BELOW" . "d") + ("DOT ABOVE" . ".") + ("OGONEK" . "k") + ("CEDILLA" . "c") + ("CARON" . "v") + ;; ("HOOK ABOVE" . ??) + ("MACRON" . "=") + ("BREVE" . "u") + ("TILDE" . "~") + ("GRAVE" . "`") + ("CIRCUMFLEX" . "^") + ("DIAERESIS" . "\"") + ("DOUBLE ACUTE" . "H") + ("ACUTE" . "'"))) + + (defconst latin-ltx--mark-re (regexp-opt (mapcar #'car latin-ltx--mark-map))) + (defun latin-ltx--ascii-p (char) (and (characterp char) (< char 128))) @@ -53,7 +73,8 @@ (pcase rule (`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail rule. (`(,seq ,re) - (let ((count 0)) + (let ((count 0) + (re (eval re t))) (dolist (pair (ucs-names)) (let ((name (car pair)) (char (cdr pair))) @@ -68,9 +89,27 @@ (push (list x char) newrules)) (setq count (1+ count)) (push (list keys char) newrules)))))) - ;(message "latin-ltx: %d mapping for %S" count re) + ;; (message "latin-ltx: %d mappings for %S" count re) )))) - `(quail-define-rules ,@(nreverse (delete-dups newrules)))))) + (setq newrules (delete-dups newrules)) + (let ((rules (copy-sequence newrules))) + (while rules + (let ((rule (pop rules))) + (when (assoc (car rule) rules) + (let ((conflicts (list (cadr rule))) + (tail rules) + c) + (while (setq c (assoc (car rule) tail)) + (push (cadr c) conflicts) + (setq tail (cdr (memq c tail))) + (setq rules (delq c rules))) + (message "Conflict for %S: %S" + (car rule) (apply #'string conflicts))))))) + (let ((inputs (mapcar #'car newrules))) + (setq inputs (delete-dups inputs)) + (message "latin-ltx: %d rules (+ %d conflicts)!" + (length inputs) (- (length newrules) (length inputs)))) + `(quail-define-rules ,@(nreverse newrules))))) (latin-ltx--define-rules ("!`" ?¡) @@ -89,69 +128,35 @@ ("$^o$" ?º) ("?`" ?¿) - ("\\`" ?̀) - ("\\`{}" ?`) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\`{%s}" c) (format "\\`%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH GRAVE") - - ("\\'" ?́) - ("\\'{}" ?´) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\'{%s}" c) (format "\\'%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH ACUTE") - - ("\\^" ?̂) - ("\\^{}" ?^) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\^{%s}" c) (format "\\^%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CIRCUMFLEX") - - ("\\~" ?̃) - ("\\~{}" ?˜) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\~{%s}" c) (format "\\~%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH TILDE") - - ("\\\"" ?̈) - ("\\\"{}" ?¨) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\\"{%s}" c) (format "\\\"%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DIAERESIS") - - ("\\k" ?̨) - ("\\k{}" ?˛) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\k{%s}" c) ;; (format "\\k%s" c) - ))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH OGONEK") - - ("\\c" ?̧) - ("\\c{}" ?¸) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\c{%s}" c) (format "\\c%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CEDILLA") + ((lambda (name char) + (let* ((c (if (match-end 1) + (downcase (match-string 2 name)) + (match-string 2 name))) + (mark1 (cdr (assoc (match-string 3 name) latin-ltx--mark-map))) + (mark2 (if (match-end 4) + (cdr (assoc (match-string 4 name) latin-ltx--mark-map)))) + (marks (if mark2 (concat mark1 "\\" mark2) mark1))) + (cl-assert mark1) + (cons (format "\\%s{%s}" marks c) + ;; Exclude "d" because we use "\\dh" for something else. + (unless (member (or mark2 mark1) '("d"));; "k" + (list (format "\\%s%s" marks c)))))) + (concat "\\`LATIN \\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH \\(" + latin-ltx--mark-re "\\)\\(?: AND \\(" + latin-ltx--mark-re "\\)\\)?\\'")) + + ((lambda (name char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map)))) + (cl-assert mark) + (list (format "\\%s" mark)))) + (concat "\\`COMBINING \\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'")) + + ((lambda (name char) + (unless (latin-ltx--ascii-p char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map)))) + (cl-assert mark) + (list (format "\\%s{}" mark))))) + (concat "\\`\\(?:SPACING \\)?\\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'")) ("\\AA" ?Å) ;; ("{\\AA}" ?Å) ("\\AE" ?Æ) ;; ("{\\AE}" ?Æ) @@ -166,42 +171,6 @@ ("$\\div$" ?÷) ("\\div" ?÷) ("\\o" ?ø) ;; ("{\\o}" ?ø) - ("\\=" ?̄) - ("\\={}" ?¯) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\={%s}" c) (format "\\=%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON") - - ("\\u" ?̆) - ("\\u{}" ?˘) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\u{%s}" c) (format "\\u%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH BREVE") - - ("\\." ?̇) - ("\\.{}" ?˙) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\.{%s}" c) (format "\\.%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT ABOVE") - - ("\\v" ?̌) - ("\\v{}" ?ˇ) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\v{%s}" c) (format "\\v%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CARON") - ("\\~{\\i}" ?ĩ) ("\\={\\i}" ?ī) ("\\u{\\i}" ?ĭ) @@ -214,12 +183,6 @@ ("\\H" ?̋) ("\\H{}" ?˝) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\H{%s}" c) (format "\\H%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOUBLE ACUTE") ("\\U{o}" ?ő) ("\\Uo" ?ő) ;; FIXME: Was it just a typo? ("\\OE" ?Œ) ;; ("{\\OE}" ?Œ) @@ -248,19 +211,11 @@ (string (if (match-end 2) ?^ ?_) basechar)))) "\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)") - ((lambda (name char) + ((lambda (name _char) (let* ((basename (match-string 2 name)) - (lbase (format "LATIN %s LETTER %s" - (match-string 1 name) basename)) - (gbase (format "GREEK %s LETTER %s" - (match-string 1 name) basename)) - tmp) - (cond - ((assoc gbase (ucs-names)) (concat "^\\" (downcase basename))) - ((latin-ltx--ascii-p (setq tmp (cdr (assoc lbase (ucs-names))))) - (string ?^ tmp)) - (t (message "Unknown modifier letter %s" basename))))) - "MODIFIER LETTER \\(SMALL\\|CAPITAL\\) \\(.*\\)") + (name (if (match-end 1) (capitalize basename) (downcase basename)))) + (concat "^" (if (> (length name) 1) "\\") name))) + "\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'") ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name)))) ;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'") @@ -272,22 +227,14 @@ ("\\b" ?̱) - ("\\d" ?̣) - ;; ("\\d{}" ?) ;; FIXME: can't find the DOT BELOW character. - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\d{%s}" c) ;; (format "\\d%s" c) - ))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT BELOW") - ("\\rq" ?’) ;; FIXME: Provides some useful entries (yen, euro, copyright, registered, ;; currency, minus, micro), but also a lot of dubious ones. ((lambda (name char) - (unless (latin-ltx--ascii-p char) + (unless (or (latin-ltx--ascii-p char) + ;; We prefer COMBINING LONG SOLIDUS OVERLAY for \not. + (member name '("NOT SIGN"))) (concat "\\" (downcase (match-string 1 name))))) "\\`\\([^- ]+\\) SIGN\\'") @@ -377,7 +324,6 @@ ("\\circledcirc" ?⊚) ("\\circleddash" ?⊝) ("\\clubsuit" ?♣) - ("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN" ₡. ("\\coloneq" ?≔) ("\\complement" ?∁) ("\\cong" ?≅) @@ -400,7 +346,6 @@ ("\\ddots" ?⋱) ("\\diamond" ?⋄) ("\\diamondsuit" ?♢) - ("\\digamma" ?Ϝ) ("\\divideontimes" ?⋇) ("\\doteq" ?≐) ("\\doteqdot" ?≑) === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2013-03-13 18:42:22 +0000 +++ lib-src/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,13 @@ +2013-03-16 Paul Eggert + + * pop.c: Fix ERRMAX typo (Bug#13925). + (socket_connection) [!HAVE_KRB5_ERROR_TEXT && HAVE_KRB5_ERROR_E_TEXT]: + Use ERROR_MAX, not ERRMAX. + +2013-03-16 Glenn Morris + + * Version 24.3 released. + 2013-03-13 Paul Eggert File synchronization fixes (Bug#13944). @@ -6,8 +16,8 @@ * emacsclient.c (main): Use fdatasync, not fsync, since we don't care about metadata. Keep trying if interrupted. * movemail.c (main, popmail): Don't worry about BSD_SYSTEM, since - fsync is available everywhere (or there is a substitute). Don't - report an error if fsync returns EINVAL. + fsync is available everywhere (or there is a substitute). + Don't report an error if fsync returns EINVAL. Static checking by Sun C 5.12. * etags.c (analyse_regex): Omit unreachable code. @@ -5182,7 +5192,7 @@ (longopts): New long options without short counterpart are globals, members, no-globals, no-members. Regexp options are now defined conditionally to ETAGS_REGEXPS. - (print_help): Updated. + (print_help): Update. 1997-05-22 Francesco Potortì === modified file 'lib-src/pop.c' --- lib-src/pop.c 2013-01-01 09:11:05 +0000 +++ lib-src/pop.c 2013-03-12 22:00:07 +0000 @@ -1198,7 +1198,7 @@ } #elif defined HAVE_KRB5_ERROR_E_TEXT if (err_ret && err_ret->e_text && **err_ret->e_text) - snprintf (pop_error + pop_error_len, ERRMAX - pop_error_len, + snprintf (pop_error + pop_error_len, ERROR_MAX - pop_error_len, " [server says '%s']", *err_ret->e_text); #endif if (err_ret) === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-03-16 08:20:36 +0000 +++ lisp/ChangeLog 2013-03-16 22:08:22 +0000 @@ -1,3 +1,21 @@ +2013-03-16 Leo Liu + + * progmodes/scheme.el: Add indentation and font-locking for λ. + (Bug#13975) + +2013-03-16 Stefan Monnier + + * emacs-lisp/smie.el (smie-auto-fill): Don't inf-loop if there's no + token before point (bug#13942). + +2013-03-16 Leo Liu + + * thingatpt.el (end-of-sexp): Fix bug#13952. Use syntax-after. + +2013-03-16 Glenn Morris + + * Version 24.3 released. + 2013-03-16 Eli Zaretskii * startup.el (command-line-normalize-file-name): Fix handling of @@ -571,6 +589,11 @@ Let-bind `isearch-other-end' to `start', `isearch-forward' to t and `isearch-error' to nil. +2013-03-16 Fabián Ezequiel Gallina + + * progmodes/python.el (python-info-current-defun): + Enhance match-data cluttering prevention. + 2013-02-22 Michael Albinus * net/tramp.el (tramp-tramp-file-p): Fix docstring. === modified file 'lisp/emacs-lisp/smie.el' --- lisp/emacs-lisp/smie.el 2013-01-01 09:11:05 +0000 +++ lisp/emacs-lisp/smie.el 2013-03-14 14:48:03 +0000 @@ -1631,31 +1631,34 @@ (defun smie-auto-fill () (let ((fc (current-fill-column))) (while (and fc (> (current-column) fc)) - (cond - ((not (or (nth 8 (save-excursion - (syntax-ppss (line-beginning-position)))) - (nth 8 (syntax-ppss)))) - (save-excursion - (beginning-of-line) - (smie-indent-forward-token) - (let ((bsf (point)) - (gain 0) - curcol) - (while (<= (setq curcol (current-column)) fc) - ;; FIXME? `smie-indent-calculate' can (and often will) - ;; return a result that actually depends on the presence/absence - ;; of a newline, so the gain computed here may not be accurate, - ;; but in practice it seems to works well enough. - (let* ((newcol (smie-indent-calculate)) - (newgain (- curcol newcol))) - (when (> newgain gain) - (setq gain newgain) - (setq bsf (point)))) - (smie-indent-forward-token)) - (when (> gain 0) - (goto-char bsf) - (newline-and-indent))))) - (t (do-auto-fill)))))) + (or (unless (or (nth 8 (save-excursion + (syntax-ppss (line-beginning-position)))) + (nth 8 (syntax-ppss))) + (save-excursion + (let ((end (point)) + (bsf (progn (beginning-of-line) + (smie-indent-forward-token) + (point))) + (gain 0) + curcol) + (while (and (<= (point) end) + (<= (setq curcol (current-column)) fc)) + ;; FIXME? `smie-indent-calculate' can (and often will) + ;; return a result that actually depends on the + ;; presence/absence of a newline, so the gain computed here + ;; may not be accurate, but in practice it seems to works + ;; well enough. + (let* ((newcol (smie-indent-calculate)) + (newgain (- curcol newcol))) + (when (> newgain gain) + (setq gain newgain) + (setq bsf (point)))) + (smie-indent-forward-token)) + (when (> gain 0) + (goto-char bsf) + (newline-and-indent) + 'done)))) + (do-auto-fill))))) (defun smie-setup (grammar rules-function &rest keywords) === modified file 'lisp/progmodes/scheme.el' --- lisp/progmodes/scheme.el 2013-01-02 16:13:04 +0000 +++ lisp/progmodes/scheme.el 2013-03-16 22:08:22 +0000 @@ -310,7 +310,7 @@ "(" (regexp-opt '("begin" "call-with-current-continuation" "call/cc" "call-with-input-file" "call-with-output-file" "case" "cond" - "do" "else" "for-each" "if" "lambda" + "do" "else" "for-each" "if" "lambda" "λ" "let" "let*" "let-syntax" "letrec" "letrec-syntax" ;; SRFI 11 usage comes up often enough. "let-values" "let*-values" @@ -410,6 +410,7 @@ (put 'make 'scheme-indent-function 1) (put 'style 'scheme-indent-function 1) (put 'root 'scheme-indent-function 1) +(put 'λ 'scheme-indent-function 1) (defvar dsssl-font-lock-keywords (eval-when-compile === modified file 'lisp/thingatpt.el' --- lisp/thingatpt.el 2013-02-04 12:02:25 +0000 +++ lisp/thingatpt.el 2013-03-16 22:08:22 +0000 @@ -182,7 +182,7 @@ (defun end-of-sexp () "Move point to the end of the current sexp. \[This is an internal function.]" - (let ((char-syntax (char-syntax (char-after)))) + (let ((char-syntax (syntax-after (point)))) (if (or (eq char-syntax ?\)) (and (eq char-syntax ?\") (in-string-p))) (forward-char 1) ------------------------------------------------------------ revno: 112060 committer: Jan D. branch nick: trunk timestamp: Sat 2013-03-16 15:22:37 +0100 message: * nsterm.m (ns_select): Don't return with result uninitialized. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-16 14:15:42 +0000 +++ src/ChangeLog 2013-03-16 14:22:37 +0000 @@ -1,6 +1,7 @@ 2013-03-16 Jan Djärv * nsterm.m (updateFrameSize:): Change resize increments if needed. + (ns_select): Don't return with result uninitialized. * nsterm.h (EmacsSavePanel, EmacsOpenPanel): Add getFilename and getDirectory. === modified file 'src/nsterm.m' --- src/nsterm.m 2013-03-16 14:15:42 +0000 +++ src/nsterm.m 2013-03-16 14:22:37 +0000 @@ -3601,6 +3601,11 @@ result = t; } } + else + { + errno = EINTR; + result = -1; + } return result; } ------------------------------------------------------------ revno: 112059 committer: Jan D. branch nick: trunk timestamp: Sat 2013-03-16 15:15:42 +0100 message: * nsterm.m (updateFrameSize:): Change resize increments if needed. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-16 13:52:12 +0000 +++ src/ChangeLog 2013-03-16 14:15:42 +0000 @@ -1,5 +1,7 @@ 2013-03-16 Jan Djärv + * nsterm.m (updateFrameSize:): Change resize increments if needed. + * nsterm.h (EmacsSavePanel, EmacsOpenPanel): Add getFilename and getDirectory. === modified file 'src/nsterm.m' --- src/nsterm.m 2013-02-05 12:16:35 +0000 +++ src/nsterm.m 2013-03-16 14:15:42 +0000 @@ -5448,12 +5448,26 @@ if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) { + struct frame *f = emacsframe; NSView *view = FRAME_NS_VIEW (emacsframe); + NSWindow *win = [view window]; + NSSize sz = [win resizeIncrements]; + FRAME_PIXEL_WIDTH (emacsframe) = neww; FRAME_PIXEL_HEIGHT (emacsframe) = newh; change_frame_size (emacsframe, rows, cols, 0, delay, 0); SET_FRAME_GARBAGED (emacsframe); cancel_mouse_face (emacsframe); + + // Did resize increments change because of a font change? + if (sz.width != FRAME_COLUMN_WIDTH (emacsframe) || + sz.height != FRAME_LINE_HEIGHT (emacsframe)) + { + sz.width = FRAME_COLUMN_WIDTH (emacsframe); + sz.height = FRAME_LINE_HEIGHT (emacsframe); + [win setResizeIncrements: sz]; + } + [view setFrame: NSMakeRect (0, 0, neww, newh)]; [self windowDidMove:nil]; // Update top/left. } ------------------------------------------------------------ revno: 112058 fixes bug: http://debbugs.gnu.org/13932 committer: Jan D. branch nick: trunk timestamp: Sat 2013-03-16 14:52:12 +0100 message: * nsfns.m (ns_filename_from_panel, ns_directory_from_panel): New functions. (Fns_read_file_name): ret is BOOL. If ! dir_only_p, don't choose directories. If filename is nil, get directory name. Use getFilename and getDirectory. (getFilename, getDirectory): New methods for EmacsSavePanel and EmacsOpenPanel. (ok:): In EmacsOpenPanel, if we can't choose directories, just return. * nsterm.h (EmacsSavePanel, EmacsOpenPanel): Add getFilename and getDirectory. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-15 20:03:31 +0000 +++ src/ChangeLog 2013-03-16 13:52:12 +0000 @@ -1,3 +1,17 @@ +2013-03-16 Jan Djärv + + * nsterm.h (EmacsSavePanel, EmacsOpenPanel): Add getFilename + and getDirectory. + + * nsfns.m (ns_filename_from_panel, ns_directory_from_panel): New + functions. + (Fns_read_file_name): ret is BOOL. If ! dir_only_p, don't choose + directories. If filename is nil, get directory name (Bug#13932). + Use getFilename and getDirectory. + (getFilename, getDirectory): New methods for EmacsSavePanel and + EmacsOpenPanel. + (ok:): In EmacsOpenPanel, if we can't choose directories, just return. + 2013-03-15 Paul Eggert * coding.c (decode_coding_gap): Fix typo caught by static checking. === modified file 'src/nsfns.m' --- src/nsfns.m 2013-03-07 03:01:17 +0000 +++ src/nsfns.m 2013-03-16 13:52:12 +0000 @@ -261,6 +261,29 @@ return dpyinfo; } +static NSString * +ns_filename_from_panel (NSSavePanel *panel) +{ +#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + NSURL *url = [panel URL]; + NSString *str = [url path]; + return str; +#else + return [panel filename]; +#endif +} + +static NSString * +ns_directory_from_panel (NSSavePanel *panel) +{ +#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + NSURL *url = [panel directoryURL]; + NSString *str = [url path]; + return str; +#else + return [panel directory]; +#endif +} static Lisp_Object interpret_services_menu (NSMenu *menu, Lisp_Object prefix, Lisp_Object old) @@ -1471,7 +1494,7 @@ Lisp_Object init, Lisp_Object dir_only_p) { static id fileDelegate = nil; - int ret; + BOOL ret; id panel; Lisp_Object fname; @@ -1508,6 +1531,13 @@ [panel setCanChooseDirectories: YES]; [panel setCanChooseFiles: NO]; } + else + { + /* This is not quite what the documentation says, but it is compatible + with the Gtk+ code. Also, the menu entry says "Open File...". */ + [panel setCanChooseDirectories: NO]; + [panel setCanChooseFiles: YES]; + } block_input (); #if defined (NS_IMPL_COCOA) && \ @@ -1528,15 +1558,19 @@ } else { - [panel setCanChooseDirectories: YES]; ret = [panel runModalForDirectory: dirS file: initS types: nil]; } #endif ret = (ret == NSOKButton) || panelOK; - if (ret) - fname = build_string ([[panel filename] UTF8String]); + if (ret) + { + NSString *str = [panel getFilename]; + if (! str) str = [panel getDirectory]; + if (! str) ret = NO; + else fname = build_string ([str UTF8String]); + } [[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow]; unblock_input (); @@ -2603,6 +2637,14 @@ [NSApp stop: self]; } #endif +- (NSString *) getFilename +{ + return ns_filename_from_panel (self); +} +- (NSString *) getDirectory +{ + return ns_directory_from_panel (self); +} @end @@ -2616,6 +2658,12 @@ - (void) ok: (id)sender { [super ok: sender]; + + // If not choosing directories, and Open is pressed on a directory, return. + if (! [self canChooseDirectories] && [self getDirectory] && + ! [self getFilename]) + return; + panelOK = 1; [NSApp stop: self]; } @@ -2624,7 +2672,17 @@ [super cancel: sender]; [NSApp stop: self]; } + #endif +- (NSString *) getFilename +{ + return ns_filename_from_panel (self); +} +- (NSString *) getDirectory +{ + return ns_directory_from_panel (self); +} + @end === modified file 'src/nsterm.h' --- src/nsterm.h 2013-02-05 12:16:35 +0000 +++ src/nsterm.h 2013-03-16 13:52:12 +0000 @@ -267,10 +267,14 @@ @interface EmacsSavePanel : NSSavePanel { } +- (NSString *) getFilename; +- (NSString *) getDirectory; @end @interface EmacsOpenPanel : NSOpenPanel { } +- (NSString *) getFilename; +- (NSString *) getDirectory; @end @interface EmacsFileDelegate : NSObject ------------------------------------------------------------ revno: 112057 committer: Jan D. branch nick: trunk timestamp: Sat 2013-03-16 13:58:47 +0100 message: * Makefile.in (${ns_appdir}): Add touch to avoid removal with equal timestamps. diff: === modified file 'nextstep/ChangeLog' --- nextstep/ChangeLog 2013-03-11 16:31:55 +0000 +++ nextstep/ChangeLog 2013-03-16 12:58:47 +0000 @@ -1,3 +1,7 @@ +2013-03-16 Jan Djärv + + * Makefile.in (${ns_appdir}): Add touch. + 2012-09-17 Glenn Morris * templates/Info-gnustep.plist.in, templates/InfoPlist.strings.in: === modified file 'nextstep/Makefile.in' --- nextstep/Makefile.in 2013-01-01 09:11:05 +0000 +++ nextstep/Makefile.in 2013-03-16 12:58:47 +0000 @@ -40,6 +40,7 @@ [ `cd ${srcdir} && /bin/pwd` = `/bin/pwd` ] || \ ( cd ${ns_appsrc} ; tar cfh - . ) | \ ( cd ${ns_appdir} ; umask 022; tar xf - ) + touch ${ns_appdir} ${ns_appbindir}/Emacs: ${ns_appdir} ../src/emacs${EXEEXT} ${MKDIR_P} ${ns_appbindir} ------------------------------------------------------------ revno: 112056 fixes bug: http://debbugs.gnu.org/13939 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-16 10:55:38 +0200 message: Fix problems with MSVC build reported in bug #13939. nt/inc/stdint.h (UINTPTR_MAX): Define. nt/nmake.defs (libc): Fix syntax of !if conditional. diff: === modified file 'nt/ChangeLog' --- nt/ChangeLog 2013-03-15 17:12:03 +0000 +++ nt/ChangeLog 2013-03-16 08:55:38 +0000 @@ -1,3 +1,10 @@ +2013-03-16 Eli Zaretskii + + Fix the MSVC build. (Bug#13939) + * inc/stdint.h (UINTPTR_MAX): Define. + + * nmake.defs (libc): Fix syntax of !if conditional. + 2013-03-15 Juanma Barranquero * config.nt: Sync with autogen/config.in. === modified file 'nt/inc/stdint.h' --- nt/inc/stdint.h 2013-01-01 09:11:05 +0000 +++ nt/inc/stdint.h 2013-03-16 08:55:38 +0000 @@ -38,6 +38,7 @@ #define INT64_MIN (~INT64_MAX) #define INTPTR_MAX INT64_MAX #define INTPTR_MIN INT64_MIN +#define UINTPTR_MAX UINT64_MAX #define UINTMAX_MAX UINT64_MAX #define UINTMAX_MIN UINT64_MIN #define INTMAX_MAX INT64_MAX @@ -53,6 +54,7 @@ #define INT32_MIN (~INT32_MAX) #define INTPTR_MAX INT32_MAX #define INTPTR_MIN INT32_MIN +#define UINTPTR_MAX UINT32_MAX #define UINTMAX_MAX UINT32_MAX #define UINTMAX_MIN UINT32_MIN #define INTMAX_MAX INT32_MAX === modified file 'nt/nmake.defs' --- nt/nmake.defs 2013-01-02 16:13:04 +0000 +++ nt/nmake.defs 2013-03-16 08:55:38 +0000 @@ -117,7 +117,7 @@ USE_CRT_DLL = 1 -!if USE_CRT_DLL +!if $(USE_CRT_DLL) libc = msvcrt$(D).lib EMACS_EXTRA_C_FLAGS= -D_DLL -D_MT -DUSE_CRT_DLL=1 !else ------------------------------------------------------------ revno: 112055 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-16 10:22:31 +0200 message: Revert inadvertently committed changes in lispref/frames.texi. diff: === modified file 'doc/lispref/frames.texi' --- doc/lispref/frames.texi 2013-03-15 10:07:29 +0000 +++ doc/lispref/frames.texi 2013-03-16 08:22:31 +0000 @@ -632,9 +632,8 @@ the height shall be set to the size of the screen. The value @code{maximized} specifies that the frame shall be maximized. The difference between @code{maximized} and @code{fullboth} is that the -former can still be resized by dragging window manager decorations -with the mouse, while the latter really covers the whole screen and -does not allow resizing by mouse dragging. +former still has window manager decorations while the latter really +covers the whole screen. @end table @node Layout Parameters ------------------------------------------------------------ revno: 112054 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-03-16 10:20:36 +0200 message: Fix command-line-normalize-file-name for DOS/Windows file names. lisp/startup.el (command-line-normalize-file-name): Fix handling of backslashes in DOS and Windows file names. Reported by Xue Fuqiao in http://lists.gnu.org/archive/html/help-gnu-emacs/2013-03/msg00245.html. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-03-15 14:17:25 +0000 +++ lisp/ChangeLog 2013-03-16 08:20:36 +0000 @@ -1,3 +1,10 @@ +2013-03-16 Eli Zaretskii + + * startup.el (command-line-normalize-file-name): Fix handling of + backslashes in DOS and Windows file names. Reported by Xue Fuqiao + in + http://lists.gnu.org/archive/html/help-gnu-emacs/2013-03/msg00245.html. + 2013-03-15 Michael Albinus Sync with Tramp 2.2.7. === modified file 'lisp/startup.el' --- lisp/startup.el 2013-02-12 04:46:18 +0000 +++ lisp/startup.el 2013-03-16 08:20:36 +0000 @@ -2399,13 +2399,17 @@ ;; Use arg 1 so that we don't collapse // at the start of the file name. ;; That is significant on some systems. ;; However, /// at the beginning is supposed to mean just /, not //. - (if (string-match "^///+" file) + (if (string-match + (if (memq system-type '(ms-dos windows-nt)) + "^\\([\\/][\\/][\\/]\\)+" + "^///+") + file) (setq file (replace-match "/" t t file))) - (and (memq system-type '(ms-dos windows-nt)) - (string-match "^[A-Za-z]:\\(\\\\[\\\\/]\\)" file) ; C:\/ or C:\\ - (setq file (replace-match "/" t t file 1))) - (while (string-match "//+" file 1) - (setq file (replace-match "/" t t file))) + (if (memq system-type '(ms-dos windows-nt)) + (while (string-match "\\([\\/][\\/]\\)+" file 1) + (setq file (replace-match "/" t t file))) + (while (string-match "//+" file 1) + (setq file (replace-match "/" t t file)))) file)) ;;; startup.el ends here ------------------------------------------------------------ revno: 112053 committer: Paul Eggert branch nick: trunk timestamp: Fri 2013-03-15 13:03:31 -0700 message: * coding.c (decode_coding_gap): Fix typo caught by static checking. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-15 16:04:47 +0000 +++ src/ChangeLog 2013-03-15 20:03:31 +0000 @@ -1,3 +1,7 @@ +2013-03-15 Paul Eggert + + * coding.c (decode_coding_gap): Fix typo caught by static checking. + 2013-03-15 handa * insdel.c (insert_from_gap): New arg text_at_gap_tail. === modified file 'src/coding.c' --- src/coding.c 2013-03-15 16:03:54 +0000 +++ src/coding.c 2013-03-15 20:03:31 +0000 @@ -7632,7 +7632,7 @@ if (coding->eol_seen == EOL_SEEN_CR) { unsigned char *src_end = GAP_END_ADDR; - unsigned char *src = src - coding->src_bytes; + unsigned char *src = src_end - coding->src_bytes; while (src < src_end) { ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.