aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--autogen/config.in3
-rwxr-xr-xautogen/configure3
-rw-r--r--doc/misc/ChangeLog11
-rw-r--r--doc/misc/mh-e.texi12
-rw-r--r--etc/NEWS10
-rw-r--r--lisp/ChangeLog44
-rw-r--r--lisp/cus-edit.el34
-rw-r--r--lisp/cus-face.el44
-rw-r--r--lisp/emacs-lisp/lisp-mode.el17
-rw-r--r--lisp/faces.el99
-rw-r--r--lisp/textmodes/reftex-parse.el2
-rw-r--r--lisp/textmodes/reftex-toc.el2
-rw-r--r--lisp/textmodes/reftex.el24
-rw-r--r--lisp/textmodes/sgml-mode.el4
-rw-r--r--src/ChangeLog4
-rw-r--r--src/sysdep.c2
16 files changed, 182 insertions, 133 deletions
diff --git a/autogen/config.in b/autogen/config.in
index c0fb1f34bf4..487fe9160e2 100644
--- a/autogen/config.in
+++ b/autogen/config.in
@@ -681,9 +681,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
681/* Define to 1 if you have a working `mmap' system call. */ 681/* Define to 1 if you have a working `mmap' system call. */
682#undef HAVE_MMAP 682#undef HAVE_MMAP
683 683
684/* Define if you have mouse support. */
685#undef HAVE_MOUSE
686
687/* Define to 1 if you have the `nanotime' function. */ 684/* Define to 1 if you have the `nanotime' function. */
688#undef HAVE_NANOTIME 685#undef HAVE_NANOTIME
689 686
diff --git a/autogen/configure b/autogen/configure
index fbb2efbc860..4571c89b85a 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -25494,9 +25494,6 @@ if test "$window_system" != "none"; then
25494 25494
25495$as_echo "#define HAVE_WINDOW_SYSTEM 1" >>confdefs.h 25495$as_echo "#define HAVE_WINDOW_SYSTEM 1" >>confdefs.h
25496 25496
25497
25498$as_echo "#define HAVE_MOUSE 1" >>confdefs.h
25499
25500 WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o" 25497 WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
25501fi 25498fi
25502 25499
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 3284e7b92c8..076dfd2bac5 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,14 @@
12012-11-25 Bill Wohler <wohler@newt.com>
2
3 Release MH-E manual version 8.4.
4
5 * mh-e.texi: (VERSION, EDITION, UPDATED, UPDATE-MONTH, Preface):
6 Update for release 8.4.
7
82012-11-25 Paul Eggert <eggert@cs.ucla.edu>
9
10 * mh-e.texi (Procmail): Fix two @ typos.
11
12012-11-24 Paul Eggert <eggert@cs.ucla.edu> 122012-11-24 Paul Eggert <eggert@cs.ucla.edu>
2 13
3 * doclicense.texi, gpl.texi: Update to latest version from FSF. 14 * doclicense.texi, gpl.texi: Update to latest version from FSF.
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 2ae0ed7ffce..08ef9e484b5 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -8,12 +8,12 @@
8@c %**end of header 8@c %**end of header
9 9
10@c Version of the software and manual. 10@c Version of the software and manual.
11@set VERSION 8.3 11@set VERSION 8.4
12@c Edition of the manual. It is either empty for the first edition or 12@c Edition of the manual. It is either empty for the first edition or
13@c has the form ", nth Edition" (without the quotes). 13@c has the form ", nth Edition" (without the quotes).
14@set EDITION 14@set EDITION
15@set UPDATED 2011-09-20 15@set UPDATED 2012-11-25
16@set UPDATE-MONTH September, 2011 16@set UPDATE-MONTH November, 2012
17 17
18@c Other variables. 18@c Other variables.
19@set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh 19@set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
@@ -212,7 +212,7 @@ more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
212them. 212them.
213 213
214The MH-E package is distributed with Emacs@footnote{Version 214The MH-E package is distributed with Emacs@footnote{Version
215@value{VERSION} of MH-E appeared in Emacs 24.1. It is supported in GNU 215@value{VERSION} of MH-E appeared in Emacs 24.4. It is supported in GNU
216Emacs 23 and higher, as well as XEmacs 21.4.22 and 21.5.31. MH-E is 216Emacs 23 and higher, as well as XEmacs 21.4.22 and 21.5.31. MH-E is
217known not to work with GNU Emacs versions 20 and below, and XEmacs 217known not to work with GNU Emacs versions 20 and below, and XEmacs
218version 21.5.9 - 21.5.16. It is compatible with MH versions 6.8.4 and 218version 21.5.9 - 21.5.16. It is compatible with MH versions 6.8.4 and
@@ -8525,7 +8525,7 @@ necessary, they are extremely useful.
8525[12] 8525[12]
8526[13] # Place mail sent to any MH-E mailing list in +mh-e. 8526[13] # Place mail sent to any MH-E mailing list in +mh-e.
8527[14] :0 w: mh-e$LOCKEXT 8527[14] :0 w: mh-e$LOCKEXT
8528[15] * ^TO.*mh-e-.*@.*sourceforge.net 8528[15] * ^TO.*mh-e-.*@@.*sourceforge.net
8529[16] | myrcvstore -create +mh-e 8529[16] | myrcvstore -create +mh-e
8530@end smallexample 8530@end smallexample
8531 8531
@@ -8631,7 +8631,7 @@ MAILDIR=$HOME/`mhparam Path`
8631# Place mail sent to the GnuCash mailing list in gnucash.spool, where 8631# Place mail sent to the GnuCash mailing list in gnucash.spool, where
8632# Gnus will pick it up. 8632# Gnus will pick it up.
8633:0: 8633:0:
8634* ^TO.*gnucash.*@.*gnucash.org 8634* ^TO.*gnucash.*@@.*gnucash.org
8635gnucash.spool 8635gnucash.spool
8636@end smallexample 8636@end smallexample
8637 8637
diff --git a/etc/NEWS b/etc/NEWS
index 130019b07af..f0f4e6fb84e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -87,6 +87,16 @@ spurious warnings about an unused var.
87 87
88* Lisp changes in Emacs 24.4 88* Lisp changes in Emacs 24.4
89 89
90** Face changes
91
92*** The `face-spec-set' is now analogous to `setq' for face specs.
93Its third arg now accepts values specifying exactly which face spec to
94set (defface, custom, or user spec), and it directly sets the relevant
95property using the supplied face spec.
96
97*** Face specs set via Custom themes now replace the `defface' spec
98rather than inheriting from it (as do face specs set via Customize).
99
90** time-to-seconds is not obsolete any more. 100** time-to-seconds is not obsolete any more.
91** New function special-form-p. 101** New function special-form-p.
92** Docstrings can be made dynamic by adding a `dynamic-docstring-function' 102** Docstrings can be made dynamic by adding a `dynamic-docstring-function'
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 37291cfa774..9e403af6416 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,47 @@
12012-11-25 Leo Liu <sdl.web@gmail.com>
2
3 * textmodes/sgml-mode.el (sgml-tag): Fix indentation for closing tag.
4 (Bug#12979)
5
62012-11-24 Vincent Belaïche <vincentb1@users.sourceforge.net>
7
8 * textmodes/reftex-parse.el (reftex-parse-from-file): Use variable
9 reftex-section-info-function in order to be compatible with
10 Texinfo integration.
11
12 * textmodes/reftex.el (reftex-section-pre-regexp)
13 (reftex-section-post-regexp, reftex-section-info-function): New
14 variable.
15 (reftex-compile-variables): Use variables
16 reftex-section-pre-regexp, reftex-section-post-regexp, and
17 reftex-section-info-function in order to be compatible with Texinfo integration.
18
19 * textmodes/reftex-toc.el (reftex-toc-promote-action): use
20 reftex-section-pre-regexp variable in order to be compatible with
21 Texinfo integration.
22
232012-11-25 Chong Yidong <cyd@gnu.org>
24
25 * faces.el: Make face-spec-set more analogous to setq.
26 (face-spec-set): Change the third arg to specify whether this
27 function is being called via defface, customize, or a third party.
28 Set the appropriate symbol properties. Clear the override spec if
29 setting via Custom. Initialize face if necessary. (Bug#4988)
30 (face-spec-recalc): Allow theme faces to completely replace the
31 defface spec, in the same way as custom faces (Bug#8454).
32
33 * cus-face.el (custom-declare-face): Move face initialization to
34 face-spec-set.
35 (custom-theme-set-faces): Don't initialize the face name here, as
36 that is now done in face-spec-set.
37
38 * cus-edit.el (custom-face-set, custom-face-mark-to-save)
39 (custom-face-reset-saved, custom-face-mark-to-reset-standard):
40 Simplify by using the new arg to face-spec-set.
41
42 * emacs-lisp/lisp-mode.el (eval-defun-1): When evaluating defface,
43 reset face-override-spec too, and use custom-declare-face.
44
12012-11-24 Jan Djärv <jan.h.d@swipnet.se> 452012-11-24 Jan Djärv <jan.h.d@swipnet.se>
2 46
3 * term/ns-win.el (ns-initialize-window-system): Move creation of 47 * term/ns-win.el (ns-initialize-window-system): Move creation of
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 8e06b16bd12..69e694bd14e 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -3679,15 +3679,10 @@ Optional EVENT is the location for the menu."
3679 (setq comment nil) 3679 (setq comment nil)
3680 ;; Make the comment invisible by hand if it's empty 3680 ;; Make the comment invisible by hand if it's empty
3681 (custom-comment-hide comment-widget)) 3681 (custom-comment-hide comment-widget))
3682 (put symbol 'customized-face value)
3683 (custom-push-theme 'theme-face symbol 'user 'set value) 3682 (custom-push-theme 'theme-face symbol 'user 'set value)
3684 (if (face-spec-choose value) 3683 (face-spec-set symbol value 'customized-face)
3685 (face-spec-set symbol value t)
3686 ;; face-set-spec ignores empty attribute lists, so just give it
3687 ;; something harmless instead.
3688 (face-spec-set symbol '((t :foreground unspecified)) t))
3689 (put symbol 'customized-face-comment comment)
3690 (put symbol 'face-comment comment) 3684 (put symbol 'face-comment comment)
3685 (put symbol 'customized-face-comment comment)
3691 (custom-face-state-set widget) 3686 (custom-face-state-set widget)
3692 (custom-redraw-magic widget))) 3687 (custom-redraw-magic widget)))
3693 3688
@@ -3696,20 +3691,14 @@ Optional EVENT is the location for the menu."
3696 (let* ((symbol (widget-value widget)) 3691 (let* ((symbol (widget-value widget))
3697 (value (custom-face-widget-to-spec widget)) 3692 (value (custom-face-widget-to-spec widget))
3698 (comment-widget (widget-get widget :comment-widget)) 3693 (comment-widget (widget-get widget :comment-widget))
3699 (comment (widget-value comment-widget))) 3694 (comment (widget-value comment-widget))
3695 (standard (eq (widget-get widget :custom-state) 'standard)))
3700 (when (equal comment "") 3696 (when (equal comment "")
3701 (setq comment nil) 3697 (setq comment nil)
3702 ;; Make the comment invisible by hand if it's empty 3698 ;; Make the comment invisible by hand if it's empty
3703 (custom-comment-hide comment-widget)) 3699 (custom-comment-hide comment-widget))
3704 (custom-push-theme 'theme-face symbol 'user 'set value) 3700 (custom-push-theme 'theme-face symbol 'user 'set value)
3705 (if (face-spec-choose value) 3701 (face-spec-set symbol value (if standard 'reset 'saved-face))
3706 (face-spec-set symbol value t)
3707 ;; face-set-spec ignores empty attribute lists, so just give it
3708 ;; something harmless instead.
3709 (face-spec-set symbol '((t :foreground unspecified)) t))
3710 (unless (eq (widget-get widget :custom-state) 'standard)
3711 (put symbol 'saved-face value))
3712 (put symbol 'customized-face nil)
3713 (put symbol 'face-comment comment) 3702 (put symbol 'face-comment comment)
3714 (put symbol 'customized-face-comment nil) 3703 (put symbol 'customized-face-comment nil)
3715 (put symbol 'saved-face-comment comment))) 3704 (put symbol 'saved-face-comment comment)))
@@ -3738,13 +3727,12 @@ uncustomized (themed or standard) face."
3738 (saved-face (get face 'saved-face)) 3727 (saved-face (get face 'saved-face))
3739 (comment (get face 'saved-face-comment)) 3728 (comment (get face 'saved-face-comment))
3740 (comment-widget (widget-get widget :comment-widget))) 3729 (comment-widget (widget-get widget :comment-widget)))
3741 (put face 'customized-face nil)
3742 (put face 'customized-face-comment nil)
3743 (custom-push-theme 'theme-face face 'user 3730 (custom-push-theme 'theme-face face 'user
3744 (if saved-face 'set 'reset) 3731 (if saved-face 'set 'reset)
3745 saved-face) 3732 saved-face)
3746 (face-spec-set face saved-face t) 3733 (face-spec-set face saved-face 'saved-face)
3747 (put face 'face-comment comment) 3734 (put face 'face-comment comment)
3735 (put face 'customized-face-comment nil)
3748 (widget-value-set child saved-face) 3736 (widget-value-set child saved-face)
3749 ;; This call manages the comment visibility 3737 ;; This call manages the comment visibility
3750 (widget-value-set comment-widget (or comment "")) 3738 (widget-value-set comment-widget (or comment ""))
@@ -3764,11 +3752,10 @@ redraw the widget immediately."
3764 (comment-widget (widget-get widget :comment-widget))) 3752 (comment-widget (widget-get widget :comment-widget)))
3765 (unless value 3753 (unless value
3766 (user-error "No standard setting for this face")) 3754 (user-error "No standard setting for this face"))
3767 (put symbol 'customized-face nil)
3768 (put symbol 'customized-face-comment nil)
3769 (custom-push-theme 'theme-face symbol 'user 'reset) 3755 (custom-push-theme 'theme-face symbol 'user 'reset)
3770 (face-spec-set symbol value t) 3756 (face-spec-set symbol value 'reset)
3771 (custom-theme-recalc-face symbol) 3757 (put symbol 'face-comment nil)
3758 (put symbol 'customized-face-comment nil)
3772 (if (and custom-reset-standard-faces-list 3759 (if (and custom-reset-standard-faces-list
3773 (or (get symbol 'saved-face) (get symbol 'saved-face-comment))) 3760 (or (get symbol 'saved-face) (get symbol 'saved-face-comment)))
3774 ;; Do this later. 3761 ;; Do this later.
@@ -3784,7 +3771,6 @@ redraw the widget immediately."
3784 (put symbol 'saved-face nil) 3771 (put symbol 'saved-face nil)
3785 (put symbol 'saved-face-comment nil) 3772 (put symbol 'saved-face-comment nil)
3786 (custom-save-all)) 3773 (custom-save-all))
3787 (put symbol 'face-comment nil)
3788 (widget-value-set child 3774 (widget-value-set child
3789 (custom-pre-filter-face-spec 3775 (custom-pre-filter-face-spec
3790 (list (list t (custom-face-attributes-get 3776 (list (list t (custom-face-attributes-get
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 06fd10149d3..bf18c917cff 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -32,35 +32,14 @@
32;;; Declaring a face. 32;;; Declaring a face.
33 33
34(defun custom-declare-face (face spec doc &rest args) 34(defun custom-declare-face (face spec doc &rest args)
35 "Like `defface', but FACE is evaluated as a normal argument." 35 "Like `defface', but with FACE evaluated as a normal argument."
36 (unless (get face 'face-defface-spec) 36 (unless (get face 'face-defface-spec)
37 (let ((facep (facep face))) 37 (face-spec-set face (purecopy spec) 'face-defface-spec)
38 (unless facep 38 (push (cons 'defface face) current-load-list)
39 ;; If the user has already created the face, respect that. 39 (when doc
40 (let ((value (or (get face 'saved-face) spec)) 40 (set-face-documentation face (purecopy doc)))
41 (have-window-system (memq initial-window-system '(x w32)))) 41 (custom-handle-all-keywords face args 'custom-face)
42 ;; Create global face. 42 (run-hooks 'custom-define-hook))
43 (make-empty-face face)
44 ;; Create frame-local faces
45 (dolist (frame (frame-list))
46 (face-spec-set-2 face frame value)
47 (when (memq (window-system frame) '(x w32 ns))
48 (setq have-window-system t)))
49 ;; When making a face after frames already exist
50 (if have-window-system
51 (make-face-x-resource-internal face))))
52 ;; Don't record SPEC until we see it causes no errors.
53 (put face 'face-defface-spec (purecopy spec))
54 (push (cons 'defface face) current-load-list)
55 (when (and doc (null (face-documentation face)))
56 (set-face-documentation face (purecopy doc)))
57 (custom-handle-all-keywords face args 'custom-face)
58 (run-hooks 'custom-define-hook)
59 ;; If the face had existing settings, recalculate it. For
60 ;; example, the user might load a theme with a face setting, and
61 ;; later load a library defining that face.
62 (if facep
63 (custom-theme-recalc-face face))))
64 face) 43 face)
65 44
66;;; Face attributes. 45;;; Face attributes.
@@ -343,10 +322,7 @@ Several properties of THEME and FACE are used in the process:
343 322
344If THEME property `theme-immediate' is non-nil, this is equivalent of 323If THEME property `theme-immediate' is non-nil, this is equivalent of
345providing the NOW argument to all faces in the argument list: FACE is 324providing the NOW argument to all faces in the argument list: FACE is
346created now. The only difference is FACE property `force-face': if NOW 325created now.
347is non-nil, FACE property `force-face' is set to the symbol `rogue', else
348if THEME property `theme-immediate' is non-nil, FACE property `force-face'
349is set to the symbol `immediate'.
350 326
351SPEC itself is saved in FACE property `saved-face' and it is stored in 327SPEC itself is saved in FACE property `saved-face' and it is stored in
352FACE's list property `theme-face' \(using `custom-push-theme')." 328FACE's list property `theme-face' \(using `custom-push-theme')."
@@ -371,15 +347,11 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
371 (when (not (and oldspec (eq 'user (caar oldspec)))) 347 (when (not (and oldspec (eq 'user (caar oldspec))))
372 (put face 'saved-face spec) 348 (put face 'saved-face spec)
373 (put face 'saved-face-comment comment)) 349 (put face 'saved-face-comment comment))
374 ;; Do this AFTER checking the `theme-face' property.
375 (custom-push-theme 'theme-face face theme 'set spec) 350 (custom-push-theme 'theme-face face theme 'set spec)
376 (when (or now immediate) 351 (when (or now immediate)
377 (put face 'force-face (if now 'rogue 'immediate))) 352 (put face 'force-face (if now 'rogue 'immediate)))
378 (when (or now immediate (facep face)) 353 (when (or now immediate (facep face))
379 (unless (facep face)
380 (make-empty-face face))
381 (put face 'face-comment comment) 354 (put face 'face-comment comment)
382 (put face 'face-override-spec nil)
383 (face-spec-set face spec t)))))))) 355 (face-spec-set face spec t))))))))
384 356
385;; XEmacs compatibility function. In XEmacs, when you reset a Custom 357;; XEmacs compatibility function. In XEmacs, when you reset a Custom
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 64aac4b81db..bc61a24d9dc 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -847,21 +847,8 @@ Reinitialize the face according to the `defface' specification."
847 (setq face-new-frame-defaults 847 (setq face-new-frame-defaults
848 (assq-delete-all face-symbol face-new-frame-defaults)) 848 (assq-delete-all face-symbol face-new-frame-defaults))
849 (put face-symbol 'face-defface-spec nil) 849 (put face-symbol 'face-defface-spec nil)
850 (put face-symbol 'face-documentation (nth 3 form)) 850 (put face-symbol 'face-override-spec nil))
851 ;; Setting `customized-face' to the new spec after calling 851 form)
852 ;; the form, but preserving the old saved spec in `saved-face',
853 ;; imitates the situation when the new face spec is set
854 ;; temporarily for the current session in the customize
855 ;; buffer, thus allowing `face-user-default-spec' to use the
856 ;; new customized spec instead of the saved spec.
857 ;; Resetting `saved-face' temporarily to nil is needed to let
858 ;; `defface' change the spec, regardless of a saved spec.
859 (prog1 `(prog1 ,form
860 (put ,(nth 1 form) 'saved-face
861 ',(get face-symbol 'saved-face))
862 (put ,(nth 1 form) 'customized-face
863 ,(nth 2 form)))
864 (put face-symbol 'saved-face nil))))
865 ((eq (car form) 'progn) 852 ((eq (car form) 'progn)
866 (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) 853 (cons 'progn (mapcar 'eval-defun-1 (cdr form))))
867 (t form))) 854 (t form)))
diff --git a/lisp/faces.el b/lisp/faces.el
index 928174c3954..2a0b77b19c4 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1587,44 +1587,79 @@ If SPEC is nil, return nil."
1587 (mapcar (lambda (x) (list (car x) 'unspecified)) 1587 (mapcar (lambda (x) (list (car x) 'unspecified))
1588 face-attribute-name-alist))))) 1588 face-attribute-name-alist)))))
1589 1589
1590(defun face-spec-set (face spec &optional for-defface) 1590(defun face-spec-set (face spec &optional spec-type)
1591 "Set and apply the face spec for FACE. 1591 "Set the face spec SPEC for FACE.
1592If the optional argument FOR-DEFFACE is omitted or nil, set the 1592See `defface' for the format of SPEC.
1593overriding spec to SPEC, recording it in the `face-override-spec' 1593
1594property of FACE. See `defface' for the format of SPEC. 1594The appearance of each face is controlled by its spec, and by the
1595 1595internal face attributes (which can be frame-specific and can be
1596If FOR-DEFFACE is non-nil, set the base spec (the one set by 1596set via `set-face-attribute').
1597`defface' and Custom). In this case, SPEC is ignored; the caller 1597
1598is responsible for putting the face spec in the `saved-face', 1598The argument SPEC-TYPE determines which spec to set:
1599`customized-face', or `face-defface-spec', as appropriate. 1599 nil or `face-override-spec' means the override spec (which is
1600 1600 usually what you want if calling this function outside of
1601The appearance of FACE is controlled by the base spec, by any 1601 Custom code);
1602custom theme specs on top of that, and by the overriding spec on 1602 `customized-face' or `saved-face' means the customized spec or
1603top of all the rest." 1603 the saved custom spec;
1604 (if for-defface 1604 `face-defface-spec' means the default spec
1605 ;; When we reset the face based on its custom spec, then it is 1605 (usually set only via `defface');
1606 ;; unmodified as far as Custom is concerned. 1606 `reset' means to ignore SPEC, but clear the `customized-face'
1607 (put (or (get face 'face-alias) face) 'face-modified nil) 1607 and `face-override-spec' specs;
1608 ;; When we change a face based on a spec from outside custom, 1608Any other value means not to set any spec, but to run the
1609 ;; record it for future frames. 1609function for its other effects.
1610 (put (or (get face 'face-alias) face) 'face-override-spec spec)) 1610
1611 ;; Reset each frame according to the rules implied by all its specs. 1611In addition to setting the face spec, this function defines FACE
1612 (dolist (frame (frame-list)) 1612as a valid face name if it is not already one, and (re)calculates
1613 (face-spec-recalc face frame))) 1613the face's attributes on existing frames."
1614 (if (get face 'face-alias)
1615 (setq face (get face 'face-alias)))
1616 ;; Save SPEC to the relevant symbol property.
1617 (unless spec-type
1618 (setq spec-type 'face-override-spec))
1619 (if (memq spec-type '(face-defface-spec face-override-spec
1620 customized-face saved-face))
1621 (put face spec-type spec))
1622 (if (memq spec-type '(reset saved-face))
1623 (put face 'customized-face nil))
1624 ;; Setting the face spec via Custom empties out any override spec,
1625 ;; similar to how setting a variable via Custom changes its valus.
1626 (if (memq spec-type '(customized-face saved-face reset))
1627 (put face 'face-override-spec nil))
1628 ;; If we reset the face based on its custom spec, it is unmodified
1629 ;; as far as Custom is concerned.
1630 (unless (eq face 'face-override-spec)
1631 (put face 'face-modified nil))
1632 (if (facep face)
1633 ;; If the face already exists, recalculate it.
1634 (dolist (frame (frame-list))
1635 (face-spec-recalc face frame))
1636 ;; Otherwise, initialize it on all frames.
1637 (make-empty-face face)
1638 (let ((value (face-user-default-spec face))
1639 (have-window-system (memq initial-window-system '(x w32 ns))))
1640 (dolist (frame (frame-list))
1641 (face-spec-set-2 face frame value)
1642 (when (memq (window-system frame) '(x w32 ns))
1643 (setq have-window-system t)))
1644 (if have-window-system
1645 (make-face-x-resource-internal face)))))
1614 1646
1615(defun face-spec-recalc (face frame) 1647(defun face-spec-recalc (face frame)
1616 "Reset the face attributes of FACE on FRAME according to its specs. 1648 "Reset the face attributes of FACE on FRAME according to its specs.
1617This applies the defface/custom spec first, then the custom theme specs, 1649This applies the defface/custom spec first, then the custom theme specs,
1618then the override spec." 1650then the override spec."
1651 (while (get face 'face-alias)
1652 (setq face (get face 'face-alias)))
1619 (face-spec-reset-face face frame) 1653 (face-spec-reset-face face frame)
1620 (let ((face-sym (or (get face 'face-alias) face))) 1654 ;; If FACE is customized or themed, set the custom spec from
1621 (or (get face 'customized-face) 1655 ;; `theme-face' records, which completely replace the defface spec
1622 (get face 'saved-face) 1656 ;; rather than inheriting from it.
1623 (face-spec-set-2 face frame (face-default-spec face))) 1657 (let ((theme-faces (get face 'theme-face)))
1624 (let ((theme-faces (reverse (get face-sym 'theme-face)))) 1658 (if theme-faces
1625 (dolist (spec theme-faces) 1659 (dolist (spec (reverse theme-faces))
1626 (face-spec-set-2 face frame (cadr spec)))) 1660 (face-spec-set-2 face frame (cadr spec)))
1627 (face-spec-set-2 face frame (get face-sym 'face-override-spec)))) 1661 (face-spec-set-2 face frame (face-default-spec face))))
1662 (face-spec-set-2 face frame (get face 'face-override-spec)))
1628 1663
1629(defun face-spec-set-2 (face frame spec) 1664(defun face-spec-set-2 (face frame spec)
1630 "Set the face attributes of FACE on FRAME according to SPEC." 1665 "Set the face attributes of FACE on FRAME according to SPEC."
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index 791b5d7b945..7169e70d6c4 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -251,7 +251,7 @@ of master file."
251 ;; the next parsing iteration. 251 ;; the next parsing iteration.
252 (when (eq (char-before) ?\\) (backward-char)) 252 (when (eq (char-before) ?\\) (backward-char))
253 ;; Insert in List 253 ;; Insert in List
254 (setq toc-entry (reftex-section-info file)) 254 (setq toc-entry (funcall reftex-section-info-function file))
255 (when toc-entry 255 (when toc-entry
256 ;; It can happen that section info returns nil 256 ;; It can happen that section info returns nil
257 (setq level (nth 5 toc-entry)) 257 (setq level (nth 5 toc-entry))
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 4f73322d3f5..eec15be4d83 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -785,7 +785,7 @@ PRO-OR-DE is assumed to be dynamically scoped into this function."
785 (marker (nth 4 data))) 785 (marker (nth 4 data)))
786 (with-current-buffer (marker-buffer marker) 786 (with-current-buffer (marker-buffer marker)
787 (goto-char (marker-position marker)) 787 (goto-char (marker-position marker))
788 (if (looking-at (concat "\\([ \t]*\\\\\\)" (regexp-quote name))) 788 (if (looking-at (concat "\\([ \t]*" reftex-section-pre-regexp "\\)" (regexp-quote name)))
789 (replace-match (concat "\\1" newname)) 789 (replace-match (concat "\\1" newname))
790 (error "Fatal error during %smotion" pro-or-de))))) 790 (error "Fatal error during %smotion" pro-or-de)))))
791 791
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index bdee0fcf1d4..dfbeda38fd9 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -301,7 +301,9 @@ on the menu bar.
301 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib) 301 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
302 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib) 302 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
303 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib) 303 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
304 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)) 304 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)
305
306 (run-hooks 'reftex-mode-hook))
305 ;; Mode was turned off 307 ;; Mode was turned off
306 (easy-menu-remove reftex-mode-menu))) 308 (easy-menu-remove reftex-mode-menu)))
307 309
@@ -664,6 +666,16 @@ will deactivate it."
664(defvar reftex-find-label-regexp-format nil) 666(defvar reftex-find-label-regexp-format nil)
665(defvar reftex-find-label-regexp-format2 nil) 667(defvar reftex-find-label-regexp-format2 nil)
666 668
669;; Constants for making RefTeX open to Texinfo hooking
670(defvar reftex-section-pre-regexp "\\\\")
671;; Including `\' as a character to be matched at the end of the regexp
672;; will allow stuff like \begin{foo}\label{bar} to be matched. This
673;; will make the parser to advance one char too much. Therefore
674;; `reftex-parse-from-file' will step one char back if a section is
675;; found.
676(defvar reftex-section-post-regexp "\\*?\\(\\[[^]]*\\]\\)?[[{ \t\r\n\\]")
677(defvar reftex-section-info-function 'reftex-section-info)
678
667(defvar reftex-memory nil 679(defvar reftex-memory nil
668 "Memorizes old variable values to indicate changes in these variables.") 680 "Memorizes old variable values to indicate changes in these variables.")
669 681
@@ -1083,16 +1095,10 @@ This enforces rescanning the buffer on next use."
1083 reftex-include-file-commands "\\|") 1095 reftex-include-file-commands "\\|")
1084 "\\)[{ \t]+\\([^} \t\n\r]+\\)")) 1096 "\\)[{ \t]+\\([^} \t\n\r]+\\)"))
1085 (section-re 1097 (section-re
1086 ;; Including `\' as a character to be matched at the end 1098 (concat wbol reftex-section-pre-regexp "\\("
1087 ;; of the regexp will allow stuff like
1088 ;; \begin{foo}\label{bar} to be matched. This will make
1089 ;; the parser to advance one char too much. Therefore
1090 ;; `reftex-parse-from-file' will step one char back if a
1091 ;; section is found.
1092 (concat wbol "\\\\\\("
1093 (mapconcat (lambda (x) (regexp-quote (car x))) 1099 (mapconcat (lambda (x) (regexp-quote (car x)))
1094 reftex-section-levels-all "\\|") 1100 reftex-section-levels-all "\\|")
1095 "\\)\\*?\\(\\[[^]]*\\]\\)?[[{ \t\r\n\\]")) 1101 "\\)" reftex-section-post-regexp))
1096 (appendix-re (concat wbol "\\(\\\\appendix\\)")) 1102 (appendix-re (concat wbol "\\(\\\\appendix\\)"))
1097 (macro-re 1103 (macro-re
1098 (if macros-with-labels 1104 (if macros-with-labels
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 46c65b25b37..ed031664246 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -671,13 +671,13 @@ in your `.emacs':
671 (if (eq v2 t) (setq v2 nil)) 671 (if (eq v2 t) (setq v2 nil))
672 ;; We use `identity' to prevent skeleton from passing 672 ;; We use `identity' to prevent skeleton from passing
673 ;; `str' through `skeleton-transformation-function' a second time. 673 ;; `str' through `skeleton-transformation-function' a second time.
674 '(("") v2 _ v2 "</" (identity ',str) ?>)) 674 '(("") v2 _ v2 "</" (identity ',str) ?> >))
675 ((eq (car v2) t) 675 ((eq (car v2) t)
676 (cons '("") (cdr v2))) 676 (cons '("") (cdr v2)))
677 (t 677 (t
678 (append '(("") (car v2)) 678 (append '(("") (car v2))
679 (cdr v2) 679 (cdr v2)
680 '(resume: (car v2) _ "</" (identity ',str) ?>)))))) 680 '(resume: (car v2) _ "</" (identity ',str) ?> >))))))
681 681
682(autoload 'skeleton-read "skeleton") 682(autoload 'skeleton-read "skeleton")
683 683
diff --git a/src/ChangeLog b/src/ChangeLog
index 859b3a7d254..c612c4dd365 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12012-11-25 Paul Eggert <eggert@cs.ucla.edu>
2
3 * sysdep.c (sys_subshell): Don't assume pid_t fits in int.
4
12012-11-24 Ken Brown <kbrown@cornell.edu> 52012-11-24 Ken Brown <kbrown@cornell.edu>
2 6
3 * keyboard.c (HAVE_MOUSE): 7 * keyboard.c (HAVE_MOUSE):
diff --git a/src/sysdep.c b/src/sysdep.c
index bc4dc91509f..1a3834f0379 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -453,7 +453,7 @@ sys_subshell (void)
453 int st; 453 int st;
454 char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */ 454 char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */
455#endif 455#endif
456 int pid; 456 pid_t pid;
457 struct save_signal saved_handlers[5]; 457 struct save_signal saved_handlers[5];
458 Lisp_Object dir; 458 Lisp_Object dir;
459 unsigned char *volatile str_volatile = 0; 459 unsigned char *volatile str_volatile = 0;