Restrict regexp match in previous emacsbug.el change.
[bpt/emacs.git] / lisp / cus-start.el
index 90291fc..6113a43 100644 (file)
@@ -1,7 +1,6 @@
 ;;; cus-start.el --- define customization properties of builtins
 ;;
-;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999-2011  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: internal
 
 ;;; Code:
 
+;; Elements of this list have the form:
+;; SYMBOL GROUP TYPE VERSION REST...
+;; SYMBOL is the name of the variable.
+;; GROUP is the custom group to which it belongs (may also be a list
+;; of groups)
+;; TYPE is the defcustom :type.
+;; VERSION is the defcustom :version (or nil).
+;; REST is a set of :KEYWORD VALUE pairs.  Accepted :KEYWORDs are:
+;; :standard - standard value for SYMBOL (else use current value)
+;; :set - custom-set property
+;; :risky - risky-local-variable property
+;; :safe - safe-local-variable property
+;; :tag - custom-tag property
 (let ((all '(;; alloc.c
             (gc-cons-threshold alloc integer)
             (garbage-collection-messages alloc boolean)
@@ -97,13 +109,15 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             (line-spacing display (choice (const :tag "none" nil) integer)
                           "22.1")
             (cursor-in-non-selected-windows
-             cursor boolean nil t :tag "Cursor In Non-selected Windows"
-             :set #'(lambda (symbol value)
-                      (set-default symbol value)
-                      (force-mode-line-update t)))
+             cursor boolean nil
+             :tag "Cursor In Non-selected Windows"
+             :set (lambda (symbol value)
+                    (set-default symbol value)
+                    (force-mode-line-update t)))
             (transient-mark-mode editing-basics boolean nil
-                                 (not noninteractive)
-                                 :initialize custom-initialize-delay)
+                                 :standard (not noninteractive)
+                                 :initialize custom-initialize-delay
+                                 :set custom-set-minor-mode)
             ;; callint.c
             (mark-even-if-inactive editing-basics boolean)
             ;; callproc.c
@@ -152,12 +166,6 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             (max-mini-window-height limits
                                     (choice (const :tag "quarter screen" nil)
                                             number) "23.1")
-            (stack-trace-on-error debug
-                                  (choice (const :tag "off")
-                                          (repeat :menu-tag "When"
-                                                  :value (nil)
-                                                  (symbol :format "%v"))
-                                          (const :tag "always" t)))
             (debug-on-error debug
                             (choice (const :tag "off")
                                     (repeat :menu-tag "When"
@@ -178,6 +186,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             (temporary-file-directory
              ;; Darwin section added 24.1, does not seem worth :version bump.
              files directory nil
+             :standard
              (file-name-as-directory
               ;; FIXME ? Should there be Ftemporary_file_directory to do this
               ;; more robustly (cf set_local_socket in emacsclient.c).
@@ -217,8 +226,13 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
                                            (other :tag "hidden by keypress" 1))
                              "22.1")
             (make-pointer-invisible mouse boolean "23.2")
-            (menu-bar-mode frames boolean)
-            (tool-bar-mode (frames mouse) boolean)
+            (menu-bar-mode frames boolean nil
+                           ;; FIXME?
+;                          :initialize custom-initialize-default
+                           :set custom-set-minor-mode)
+            (tool-bar-mode (frames mouse) boolean nil
+;                          :initialize custom-initialize-default
+                           :set custom-set-minor-mode)
             ;; fringe.c
             (overflow-newline-into-fringe fringe boolean)
             ;; indent.c
@@ -245,6 +259,11 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             (suggest-key-bindings keyboard (choice (const :tag "off" nil)
                                                    (integer :tag "time" 2)
                                                    (other :tag "on")))
+             (debug-on-event debug
+                             (choice (const :tag "None" nil)
+                                     (const :tag "When sent SIGUSR1" sigusr1)
+                                     (const :tag "When sent SIGUSR2" sigusr2))
+                             "24.1")
 
 ;; This is not good news because it will use the wrong
 ;; version-specific directories when you upgrade.  We need
@@ -299,12 +318,28 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
                      (const control) (const meta)
                      (const alt) (const hyper)
                      (const super)) "23.1")
+            (ns-right-control-modifier
+             ns
+             (choice (const :tag "No modifier (work as control)" none)
+                     (const :tag "Use the value of ns-control-modifier"
+                            left)
+                     (const control) (const meta)
+                     (const alt) (const hyper)
+                     (const super)) "24.0")
             (ns-command-modifier
              ns
              (choice (const :tag "No modifier" nil)
                      (const control) (const meta)
                      (const alt) (const hyper)
                      (const super)) "23.1")
+            (ns-right-command-modifier
+             ns
+             (choice (const :tag "No modifier (work as command)" none)
+                     (const :tag "Use the value of ns-command-modifier"
+                            left)
+                     (const control) (const meta)
+                     (const alt) (const hyper)
+                     (const super)) "24.0")
             (ns-alternate-modifier
              ns
              (choice (const :tag "No modifier (work as alternate/option)" none)
@@ -326,6 +361,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
                      (const alt) (const hyper)
                      (const super)) "23.1")
             (ns-antialias-text ns boolean "23.1")
+            (ns-auto-hide-menu-bar ns boolean "24.0")
             ;; process.c
             (delete-exited-processes processes-basics boolean)
             ;; syntax.c
@@ -366,7 +402,7 @@ since it could result in memory overflow and make Emacs crash."
                                  (other :tag "Always" t))
                                 "23.1")
             ;; xdisp.c
-            (show-trailing-whitespace whitespace-faces boolean nil nil
+            (show-trailing-whitespace whitespace-faces boolean nil
                                       :safe booleanp)
             (scroll-step windows integer)
             (scroll-conservatively windows integer)
@@ -442,13 +478,13 @@ since it could result in memory overflow and make Emacs crash."
          group (nth 1 this)
          type (nth 2 this)
          version (nth 3 this)
+         rest (nthcdr 4 this)
          ;; If we did not specify any standard value expression above,
          ;; use the current value as the standard value.
-         standard (if (nthcdr 4 this)
-                      (nth 4 this)
-                    (when (default-boundp symbol)
-                      (funcall quoter (default-value symbol))))
-         rest (nthcdr 5 this)
+         standard (if (setq prop (memq :standard rest))
+                      (cadr prop)
+                    (if (default-boundp symbol)
+                        (funcall quoter (default-value symbol))))
          ;; Don't complain about missing variables which are
          ;; irrelevant to this platform.
          native-p (save-match-data
@@ -486,11 +522,14 @@ since it could result in memory overflow and make Emacs crash."
          (put symbol 'safe-local-variable (cadr prop)))
       (if (setq prop (memq :risky rest))
          (put symbol 'risky-local-variable (cadr prop)))
+      (if (setq prop (memq :set rest))
+         (put symbol 'custom-set (cadr prop)))
       ;; Note this is the _only_ initialize property we handle.
       (if (eq (cadr (memq :initialize rest)) 'custom-initialize-delay)
          (push symbol custom-delayed-init-variables))
-      ;; If this is NOT while dumping Emacs,
-      ;; set up the rest of the customization info.
+      ;; If this is NOT while dumping Emacs, set up the rest of the
+      ;; customization info.  This is the stuff that is not needed
+      ;; until someone does M-x customize etc.
       (unless purify-flag
        ;; Add it to the right group(s).
        (if (listp group)
@@ -499,14 +538,12 @@ since it could result in memory overflow and make Emacs crash."
          (custom-add-to-group group symbol 'custom-variable))
        ;; Set the type.
        (put symbol 'custom-type type)
-       (put symbol 'custom-version version)
+       (if version (put symbol 'custom-version version))
        (while rest
          (setq prop (car rest)
                propval (cadr rest)
                rest (nthcdr 2 rest))
-         (cond ((memq prop '(:risky :safe))) ; handled above
-               ((eq prop :set)
-                (put symbol 'custom-set propval))
+         (cond ((memq prop '(:standard :risky :safe :set))) ; handled above
                ((eq prop :tag)
                 (put symbol 'custom-tag propval))))))))