]> code.delx.au - gnu-emacs/blobdiff - lisp/cus-edit.el
(custom-initialize-safe-set, custom-initialize-safe-default): Doc fixes.
[gnu-emacs] / lisp / cus-edit.el
index 5be34dd4adb9214a5a52f94fe1b77e0a2d727f7e..5c3ff9448c0af8ef56f06e4102e7aac5a3ca9736 100644 (file)
@@ -21,8 +21,8 @@
 
 ;; 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., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 ;;
   :group 'development)
 
 (defgroup minibuffer nil
-  "Controling the behaviour of the minibuffer."
+  "Controling the behavior of the minibuffer."
   :link '(custom-manual "(emacs)Minibuffer")
   :group 'environment)
 
   "Input from the menus."
   :group 'environment)
 
+(defgroup dnd nil
+  "Handling data from drag and drop."
+  :group 'environment)
+
 (defgroup auto-save nil
   "Preventing accidential loss of data."
   :group 'files)
@@ -1017,9 +1021,12 @@ then prompt for the MODE to customize."
 (defun customize-option (symbol)
   "Customize SYMBOL, which must be a user option variable."
   (interactive (custom-variable-prompt))
-  (custom-buffer-create (list (list symbol 'custom-variable))
-                       (format "*Customize Option: %s*"
-                               (custom-unlispify-tag-name symbol))))
+  (let ((basevar (indirect-variable symbol)))
+    (custom-buffer-create (list (list basevar 'custom-variable))
+                         (format "*Customize Option: %s*"
+                                 (custom-unlispify-tag-name basevar)))
+    (unless (eq symbol basevar)
+      (message "`%s' is an alias for `%s'" symbol basevar))))
 
 ;;;###autoload
 (defalias 'customize-variable-other-window 'customize-option-other-window)
@@ -1029,9 +1036,12 @@ then prompt for the MODE to customize."
   "Customize SYMBOL, which must be a user option variable.
 Show the buffer in another window, but don't select it."
   (interactive (custom-variable-prompt))
-  (custom-buffer-create-other-window
-   (list (list symbol 'custom-variable))
-   (format "*Customize Option: %s*" (custom-unlispify-tag-name symbol))))
+  (let ((basevar (indirect-variable symbol)))
+    (custom-buffer-create-other-window
+     (list (list basevar 'custom-variable))
+     (format "*Customize Option: %s*" (custom-unlispify-tag-name basevar)))
+    (unless (eq symbol basevar)
+      (message "`%s' is an alias for `%s'" symbol basevar))))
 
 (defvar customize-changed-options-previous-release "20.2"
   "Version for `customize-changed-options' to refer back to by default.")
@@ -1112,7 +1122,8 @@ version."
 ;;;###autoload
 (defun customize-face (&optional face)
   "Customize FACE, which should be a face name or nil.
-If FACE is nil, customize all faces.
+If FACE is nil, customize all faces.  If FACE is actually a
+face-alias, customize the face it is aliased to.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
@@ -1129,6 +1140,9 @@ suggest to customize that face, if it's customizable."
                                     face)
                             t nil)
                            "*Customize Faces*")
+    ;; If FACE is actually an alias, customize the face it is aliased to.
+    (if (get face 'face-alias)
+        (setq face (get face 'face-alias)))
     (unless (facep face)
       (error "Invalid face %S" face))
     (custom-buffer-create (list (list face 'custom-face))
@@ -1138,6 +1152,7 @@ suggest to customize that face, if it's customizable."
 ;;;###autoload
 (defun customize-face-other-window (&optional face)
   "Show customization buffer for face FACE in other window.
+If FACE is actually a face-alias, customize the face it is aliased to.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
@@ -1155,6 +1170,8 @@ suggest to customize that face, if it's customizable."
                face)
        t nil)
        "*Customize Faces*")
+    (if (get face 'face-alias)
+        (setq face (get face 'face-alias)))
     (unless (facep face)
       (error "Invalid face %S" face))
     (custom-buffer-create-other-window
@@ -1632,50 +1649,62 @@ item in another window.\n\n"))
   :group 'custom-faces
   :group 'custom-buffer)
 
-(defface custom-invalid-face '((((class color))
-                               (:foreground "yellow1" :background "red1"))
-                              (t
-                               (:weight bold :slant italic :underline t)))
+(defface custom-invalid '((((class color))
+                          (:foreground "yellow1" :background "red1"))
+                         (t
+                          (:weight bold :slant italic :underline t)))
   "Face used when the customize item is invalid."
   :group 'custom-magic-faces)
+;; backward-compatibility alias
+(put 'custom-invalid-face 'face-alias 'custom-invalid)
 
-(defface custom-rogue-face '((((class color))
-                             (:foreground "pink" :background "black"))
-                            (t
-                             (:underline t)))
+(defface custom-rogue '((((class color))
+                        (:foreground "pink" :background "black"))
+                       (t
+                        (:underline t)))
   "Face used when the customize item is not defined for customization."
   :group 'custom-magic-faces)
+;; backward-compatibility alias
+(put 'custom-rogue-face 'face-alias 'custom-rogue)
 
-(defface custom-modified-face '(((min-colors 88) ((class color))
-                                (:foreground "white" :background "blue1"))
-                               (((class color))
-                                (:foreground "white" :background "blue"))
-                               (t
-                                (:slant italic :bold)))
-  "Face used when the customize item has been modified."
-  :group 'custom-magic-faces)
-
-(defface custom-set-face '((((min-colors 88) (class color))
-                           (:foreground "blue1" :background "white"))
+(defface custom-modified '((((min-colors 88) (class color))
+                           (:foreground "white" :background "blue1"))
                           (((class color))
-                           (:foreground "blue" :background "white"))
+                           (:foreground "white" :background "blue"))
                           (t
-                           (:slant italic)))
+                           (:slant italic :bold)))
+  "Face used when the customize item has been modified."
+  :group 'custom-magic-faces)
+;; backward-compatibility alias
+(put 'custom-modified-face 'face-alias 'custom-modified)
+
+(defface custom-set '((((min-colors 88) (class color))
+                      (:foreground "blue1" :background "white"))
+                     (((class color))
+                      (:foreground "blue" :background "white"))
+                     (t
+                      (:slant italic)))
   "Face used when the customize item has been set."
   :group 'custom-magic-faces)
-
-(defface custom-changed-face '((((min-colors 88) (class color))
-                               (:foreground "white" :background "blue1"))
-                              (((class color))
-                               (:foreground "white" :background "blue"))
-                              (t
-                               (:slant italic)))
+;; backward-compatibility alias
+(put 'custom-set-face 'face-alias 'custom-set)
+
+(defface custom-changed '((((min-colors 88) (class color))
+                          (:foreground "white" :background "blue1"))
+                         (((class color))
+                          (:foreground "white" :background "blue"))
+                         (t
+                          (:slant italic)))
   "Face used when the customize item has been changed."
   :group 'custom-magic-faces)
+;; backward-compatibility alias
+(put 'custom-changed-face 'face-alias 'custom-changed)
 
-(defface custom-saved-face '((t (:underline t)))
+(defface custom-saved '((t (:underline t)))
   "Face used when the customize item has been saved."
   :group 'custom-magic-faces)
+;; backward-compatibility alias
+(put 'custom-saved-face 'face-alias 'custom-saved)
 
 (defconst custom-magic-alist
   '((nil "#" underline "\
@@ -1685,21 +1714,21 @@ UNKNOWN, you should not see this.")
     (hidden "-" default "\
 HIDDEN, invoke \"Show\" in the previous line to show." "\
 group now hidden, invoke \"Show\", above, to show contents.")
-    (invalid "x" custom-invalid-face "\
+    (invalid "x" custom-invalid "\
 INVALID, the displayed value cannot be set.")
-    (modified "*" custom-modified-face "\
+    (modified "*" custom-modified "\
 EDITED, shown value does not take effect until you set or save it." "\
 something in this group has been edited but not set.")
-    (set "+" custom-set-face "\
+    (set "+" custom-set "\
 SET for current session only." "\
 something in this group has been set but not saved.")
-    (changed ":" custom-changed-face "\
+    (changed ":" custom-changed "\
 CHANGED outside Customize; operating on it here may be unreliable." "\
 something in this group has been changed outside customize.")
-    (saved "!" custom-saved-face "\
+    (saved "!" custom-saved "\
 SAVED and set." "\
 something in this group has been set and saved.")
-    (rogue "@" custom-rogue-face "\
+    (rogue "@" custom-rogue "\
 NO CUSTOMIZATION DATA; you should not see this." "\
 something in this group is not prepared for customization.")
     (standard " " nil "\
@@ -1826,7 +1855,7 @@ and `face'."
               (insert " (lisp)"))
              ((eq form 'mismatch)
               (insert " (mismatch)")))
-       (put-text-property start (point) 'face 'custom-state-face))
+       (put-text-property start (point) 'face 'custom-state))
       (insert "\n"))
     (when (and (eq category 'group)
               (not (and (eq custom-buffer-style 'links)
@@ -1860,7 +1889,7 @@ and `face'."
 
 ;;; The `custom' Widget.
 
-(defface custom-button-face
+(defface custom-button
   '((((type x w32 mac) (class color))          ; Like default modeline
      (:box (:line-width 2 :style released-button)
           :background "lightgrey" :foreground "black"))
@@ -1869,8 +1898,10 @@ and `face'."
   "Face used for buttons in customization buffers."
   :version "21.1"
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-button-face 'face-alias 'custom-button)
 
-(defface custom-button-pressed-face
+(defface custom-button-pressed
   '((((type x w32 mac) (class color))
      (:box (:line-width 2 :style pressed-button)
           :background "lightgrey" :foreground "black"))
@@ -1879,20 +1910,26 @@ and `face'."
   "Face used for buttons in customization buffers."
   :version "21.1"
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-button-pressed-face 'face-alias 'custom-button-pressed)
 
-(defface custom-documentation-face nil
+(defface custom-documentation nil
   "Face used for documentation strings in customization buffers."
   :group 'custom-faces)
-
-(defface custom-state-face '((((class color)
-                              (background dark))
-                             (:foreground "lime green"))
-                            (((class color)
-                              (background light))
-                             (:foreground "dark green"))
-                            (t nil))
+;; backward-compatibility alias
+(put 'custom-documentation-face 'face-alias 'custom-documentation)
+
+(defface custom-state '((((class color)
+                         (background dark))
+                        (:foreground "lime green"))
+                       (((class color)
+                         (background light))
+                        (:foreground "dark green"))
+                       (t nil))
   "Face used for State descriptions in the customize buffer."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-state-face 'face-alias 'custom-state)
 
 (define-widget 'custom 'default
   "Customize a user option."
@@ -2088,20 +2125,22 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
 ;;; The `custom-comment' Widget.
 
 ;; like the editable field
-(defface custom-comment-face '((((class grayscale color)
-                                (background light))
-                               (:background "gray85"))
-                              (((class grayscale color)
-                                (background dark))
-                               (:background "dim gray"))
-                              (t
-                               (:slant italic)))
+(defface custom-comment '((((class grayscale color)
+                           (background light))
+                          (:background "gray85"))
+                         (((class grayscale color)
+                           (background dark))
+                          (:background "dim gray"))
+                         (t
+                          (:slant italic)))
   "Face used for comments on variables or faces"
   :version "21.1"
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-comment-face 'face-alias 'custom-comment)
 
 ;; like font-lock-comment-face
-(defface custom-comment-tag-face
+(defface custom-comment-tag
   '((((class color) (background dark)) (:foreground "gray80"))
     (((class color) (background light)) (:foreground "blue4"))
     (((class grayscale) (background light))
@@ -2111,6 +2150,8 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
     (t (:weight bold)))
   "Face used for variables or faces comment tags"
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-comment-tag-face 'face-alias 'custom-comment-tag)
 
 (define-widget 'custom-comment 'string
   "User comment."
@@ -2150,7 +2191,7 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
 
 ;; When this was underlined blue, users confused it with a
 ;; Mosaic-style hyperlink...
-(defface custom-variable-tag-face
+(defface custom-variable-tag
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
@@ -2159,14 +2200,18 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
      (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
-     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))    
+     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
     (t (:weight bold)))
   "Face used for unpushable variable tags."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-variable-tag-face 'face-alias 'custom-variable-tag)
 
-(defface custom-variable-button-face '((t (:underline t :weight bold)))
+(defface custom-variable-button '((t (:underline t :weight bold)))
   "Face used for pushable variable tags."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-variable-button-face 'face-alias 'custom-variable-button)
 
 (defcustom custom-variable-default-form 'edit
   "Default form of displaying variable values."
@@ -2870,10 +2915,12 @@ Only match frames that support the specified face attributes.")
 
 ;;; The `custom-face' Widget.
 
-(defface custom-face-tag-face
+(defface custom-face-tag
   `((t (:weight bold :height 1.2 :inherit variable-pitch)))
   "Face used for face tags."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-face-tag-face 'face-alias 'custom-face-tag)
 
 (defcustom custom-face-default-form 'selected
   "Default form of displaying face definition."
@@ -3392,12 +3439,11 @@ restoring it to the state of a face that has never been customized."
   ;; Fixme: make it do so in Emacs.
   "Face used for group tags.
 The first member is used for level 1 groups, the second for level 2,
-and so forth.  The remaining group tags are shown with
-`custom-group-tag-face'."
+and so forth.  The remaining group tags are shown with `custom-group-tag'."
   :type '(repeat face)
   :group 'custom-faces)
 
-(defface custom-group-tag-face-1
+(defface custom-group-tag-1
   `((((class color)
       (background dark))
      (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
@@ -3410,8 +3456,10 @@ and so forth.  The remaining group tags are shown with
     (t (:weight bold)))
   "Face used for group tags."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-group-tag-face-1 'face-alias 'custom-group-tag-1)
 
-(defface custom-group-tag-face
+(defface custom-group-tag
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2))
@@ -3424,6 +3472,8 @@ and so forth.  The remaining group tags are shown with
     (t (:weight bold)))
   "Face used for low level group tags."
   :group 'custom-faces)
+;; backward-compatibility alias
+(put 'custom-group-tag-face 'face-alias 'custom-group-tag)
 
 (define-widget 'custom-group 'custom
   "Customize group."
@@ -3444,7 +3494,7 @@ and so forth.  The remaining group tags are shown with
 (defun custom-group-sample-face-get (widget)
   ;; Use :sample-face.
   (or (nth (1- (widget-get widget :custom-level)) custom-group-tag-faces)
-      'custom-group-tag-face))
+      'custom-group-tag))
 
 (define-widget 'custom-group-visibility 'visibility
   "An indicator and manipulator for hidden group contents."
@@ -3831,20 +3881,21 @@ if only the first line of the docstring is shown."))
 
 (defun custom-file ()
   "Return the file name for saving customizations."
-  (or custom-file
-      (let ((user-init-file user-init-file)
-           (default-init-file
-             (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
-       (when (null user-init-file)
-         (if (or (file-exists-p default-init-file)
-                 (and (eq system-type 'windows-nt)
-                      (file-exists-p "~/_emacs")))
-             ;; Started with -q, i.e. the file containing
-             ;; Custom settings hasn't been read.  Saving
-             ;; settings there would overwrite other settings.
-             (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
-         (setq user-init-file default-init-file))
-       user-init-file)))
+  (file-chase-links
+   (or custom-file
+       (let ((user-init-file user-init-file)
+            (default-init-file
+              (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
+        (when (null user-init-file)
+          (if (or (file-exists-p default-init-file)
+                  (and (eq system-type 'windows-nt)
+                       (file-exists-p "~/_emacs")))
+              ;; Started with -q, i.e. the file containing
+              ;; Custom settings hasn't been read.  Saving
+              ;; settings there would overwrite other settings.
+              (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
+          (setq user-init-file default-init-file))
+        user-init-file))))
 
 (defun custom-save-delete (symbol)
   "Visit `custom-file' and delete all calls to SYMBOL from it.
@@ -4256,13 +4307,12 @@ if that value is non-nil."
   (make-local-variable 'custom-options)
   (make-local-variable 'custom-local-buffer)
   (make-local-variable 'widget-documentation-face)
-  (setq widget-documentation-face 'custom-documentation-face)
+  (setq widget-documentation-face 'custom-documentation)
   (make-local-variable 'widget-button-face)
-  (setq widget-button-face 'custom-button-face)
-  (set (make-local-variable 'widget-button-pressed-face)
-       'custom-button-pressed-face)
+  (setq widget-button-face 'custom-button)
+  (set (make-local-variable 'widget-button-pressed-face) 'custom-button-pressed)
   (set (make-local-variable 'widget-mouse-face)
-       'custom-button-pressed-face)    ; buttons `depress' when moused
+       'custom-button-pressed)         ; buttons `depress' when moused
   ;; When possible, use relief for buttons, not bracketing.  This test
   ;; may not be optimal.
   (when custom-raised-buttons
@@ -4271,7 +4321,7 @@ if that value is non-nil."
     (set (make-local-variable 'widget-link-prefix) "")
     (set (make-local-variable 'widget-link-suffix) ""))
   (add-hook 'widget-edit-functions 'custom-state-buffer-message nil t)
-  (run-hooks 'custom-mode-hook))
+  (run-mode-hooks 'custom-mode-hook))
 
 (put 'custom-mode 'mode-class 'special)