merging Emacs.app (NeXTstep port)
[bpt/emacs.git] / lisp / cus-face.el
index 76935a0..5581cff 100644 (file)
@@ -1,17 +1,17 @@
 ;;; cus-face.el --- customization support for faces
 ;;
 ;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, faces
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; 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 2, or (at your option)
-;; any later version.
+;; 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
@@ -19,9 +19,7 @@
 ;; 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 ;;
@@ -33,7 +31,6 @@
 
 ;;; Declaring a face.
 
-;;;###autoload
 (defun custom-declare-face (face spec doc &rest args)
   "Like `defface', but FACE is evaluated as a normal argument."
   (unless (get face 'face-defface-spec)
@@ -46,8 +43,8 @@
          (make-empty-face face)
          ;; Create frame-local faces
          (dolist (frame (frame-list))
-           (face-spec-set face value frame)
-           (when (memq (window-system frame) '(x w32 mac))
+           (face-spec-set-2 face frame value)
+           (when (memq (window-system frame) '(x w32 mac ns))
              (setq have-window-system t)))
          ;; When making a face after frames already exist
          (if have-window-system
 
 ;;; Face attributes.
 
-;;;###autoload
 (defconst custom-face-attributes
   '((:family
      (string :tag "Font Family"
             :help-echo "Font family or fontset alias name."))
 
+    (:foundry
+     (string :tag "Font Foundry"
+            :help-echo "Font foundry name."))
+
     (:width
      (choice :tag "Width"
             :help-echo "Font width."
             (const :tag "semibold" semi-bold)
             (const :tag "semilight" semi-light)
             (const :tag "ultralight" ultra-light)
-            (const :tag "ultrabold" ultra-bold)))
+            (const :tag "ultrabold" ultra-bold)
+            (const :tag "thin" thin)))
 
     (:slant
      (choice :tag "Slant"
             :value normal              ; default
             (const :tag "italic" italic)
             (const :tag "oblique" oblique)
-            (const :tag "normal" normal)))
+            (const :tag "normal" normal)
+            (const :tag "roman" roman)))
 
     (:underline
      (choice :tag "Underline"
@@ -269,7 +271,6 @@ If FRAME is nil, use the global defaults for FACE."
 
 ;;; Initializing.
 
-;;;###autoload
 (defun custom-set-faces (&rest args)
   "Initialize faces according to user preferences.
 This associates the settings with the `user' theme.
@@ -342,21 +343,21 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
                (unless (facep face)
                  (make-empty-face face))
                (put face 'face-comment comment)
-               (face-spec-set face spec))
-           (setq args (cdr args)))
-       ;; Old format, a plist of FACE SPEC pairs.
-       (let ((face (nth 0 args))
-             (spec (nth 1 args)))
-         (if (get face 'face-alias)
-                 (setq face (get face 'face-alias)))
-         (put face 'saved-face spec)
-         (custom-push-theme 'theme-face face theme 'set spec))
-       (setq args (cdr (cdr args))))))))
+               (put face 'face-override-spec nil)
+               (face-spec-set face spec t))
+             (setq args (cdr args)))
+         ;; Old format, a plist of FACE SPEC pairs.
+         (let ((face (nth 0 args))
+               (spec (nth 1 args)))
+           (if (get face 'face-alias)
+               (setq face (get face 'face-alias)))
+           (put face 'saved-face spec)
+           (custom-push-theme 'theme-face face theme 'set spec))
+         (setq args (cdr (cdr args))))))))
 
 ;; XEmacs compability function.  In XEmacs, when you reset a Custom
 ;; Theme, you have to specify the theme to reset it to.  We just apply
 ;; the next theme.
-;;;###autoload
 (defun custom-theme-reset-faces (theme &rest args)
   "Reset the specs in THEME of some faces to their specs in other themes.
 Each of the arguments ARGS has this form:
@@ -368,7 +369,6 @@ This means reset FACE.  The argument IGNORED is ignored."
   (dolist (arg args)
     (custom-push-theme 'theme-face (car arg) theme 'reset)))
 
-;;;###autoload
 (defun custom-reset-faces (&rest args)
   "Reset the specs of some faces to their specs in specified themes.
 This creates settings in the `user' theme.
@@ -384,5 +384,5 @@ This means reset FACE to its value in FROM-THEME."
 
 (provide 'cus-face)
 
-;;; arch-tag: 9a5c4b63-0d27-4c92-a5af-f2c7ed764c2b
+;; arch-tag: 9a5c4b63-0d27-4c92-a5af-f2c7ed764c2b
 ;;; cus-face.el ends here