]> code.delx.au - gnu-emacs/blobdiff - lisp/cus-start.el
Merge from emacs-23
[gnu-emacs] / lisp / cus-start.el
index 4f3faf8a063c48941593dcf0180d34b26e818335..fbf8016c6df5ad13c5fc1c1cca202e1da902956f 100644 (file)
@@ -5,6 +5,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: internal
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
 
 ;;; 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)
@@ -95,6 +109,16 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
                                       "21.1")
             (line-spacing display (choice (const :tag "none" nil) integer)
                           "22.1")
+            (cursor-in-non-selected-windows
+             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
+                                 :standard (not noninteractive)
+                                 :initialize custom-initialize-delay
+                                 :set custom-set-minor-mode)
             ;; callint.c
             (mark-even-if-inactive editing-basics boolean)
             ;; callproc.c
@@ -165,6 +189,36 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
              ;; fileio.c
              (delete-by-moving-to-trash auto-save boolean "23.1")
             (auto-save-visited-file-name auto-save boolean)
+            ;; filelock.c
+            (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).
+              ;; It could be used elsewhere, eg Fcall_process_region,
+              ;; server-socket-dir.  See bug#7135.
+              (cond ((memq system-type '(ms-dos windows-nt))
+                     (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP")
+                         "c:/temp"))
+                    ((eq system-type 'darwin)
+                     (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
+                         ;; See bug#7135.
+                         (let ((tmp (ignore-errors
+                                      (shell-command-to-string
+                                       "getconf DARWIN_USER_TEMP_DIR"))))
+                           (and (stringp tmp)
+                                (setq tmp (replace-regexp-in-string
+                                           "\n\\'" "" tmp))
+                                ;; Handles "getconf: Unrecognized variable..."
+                                (file-directory-p tmp)
+                                tmp))
+                         "/tmp"))
+                    (t
+                     (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
+                         "/tmp"))))
+             :initialize custom-initialize-delay)
             ;; fns.c
             (use-dialog-box menu boolean "21.1")
             (use-file-dialog menu boolean "22.1")
@@ -179,6 +233,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 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
@@ -197,6 +258,11 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             (help-char keyboard character)
             (help-event-list keyboard (repeat (sexp :format "%v")))
             (menu-prompting menu boolean)
+            (select-active-regions killing
+                                   (choice (const :tag "always" t)
+                                           (const :tag "only shift-selection or mouse-drag" only)
+                                           (const :tag "off" nil))
+                                   "24.1")
             (suggest-key-bindings keyboard (choice (const :tag "off" nil)
                                                    (integer :tag "time" 2)
                                                    (other :tag "on")))
@@ -254,12 +320,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)
@@ -321,6 +403,8 @@ 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
+                                      :safe booleanp)
             (scroll-step windows integer)
             (scroll-conservatively windows integer)
             (scroll-margin windows integer)
@@ -347,6 +431,19 @@ since it could result in memory overflow and make Emacs crash."
                       (const :tag "Off (nil)" :value nil)
                       (const :tag "Immediate" :value t)
                       (number :tag "Delay by secs" :value 0.5)) "22.1")
+             (tool-bar-style
+             frames (choice
+                     (const :tag "Images" :value image)
+                     (const :tag "Text" :value text)
+                     (const :tag "Both" :value both)
+                     (const :tag "Both-horiz" :value both-horiz)
+                     (const :tag "Text-image-horiz" :value text-image-horiz)
+                     (const :tag "System default" :value nil)) "23.3")
+             (tool-bar-max-label-size frames integer "23.3")
+            (auto-hscroll-mode scrolling boolean "21.1")
+            (display-hourglass cursor boolean)
+            (hourglass-delay cursor number)
+
             ;; xfaces.c
             (scalable-fonts-allowed display boolean "22.1")
             ;; xfns.c
@@ -356,13 +453,14 @@ since it could result in memory overflow and make Emacs crash."
             (x-gtk-show-hidden-files menu boolean "22.1")
             (x-gtk-file-dialog-help-text menu boolean "22.1")
             (x-gtk-whole-detached-tool-bar x boolean "22.1")
+            (x-gtk-use-system-tooltips tooltip boolean "23.3")
             ;; xterm.c
             (x-use-underline-position-properties display boolean "22.1")
             (x-underline-at-descent-line display boolean "22.1")
             (x-stretch-cursor display boolean "21.1")
             ;; xsettings.c
             (font-use-system-font font-selection boolean "23.2")))
-      this symbol group type standard version native-p
+      this symbol group type standard version native-p rest prop propval
       ;; This function turns a value
       ;; into an expression which produces that value.
       (quoter (lambda (sexp)
@@ -381,12 +479,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))))
+         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
@@ -407,6 +506,10 @@ since it could result in memory overflow and make Emacs crash."
                       (fboundp 'define-fringe-bitmap))
                      ((equal "font-use-system-font" (symbol-name symbol))
                       (featurep 'system-font-setting))
+                     ;; Conditioned on x-create-frame, because that's
+                     ;; the condition for loadup.el to preload tool-bar.el.
+                     ((string-match "tool-bar-" (symbol-name symbol))
+                      (fboundp 'x-create-frame))
                      (t t))))
     (if (not (boundp symbol))
        ;; If variables are removed from C code, give an error here!
@@ -415,25 +518,44 @@ since it could result in memory overflow and make Emacs crash."
       ;; Save the standard value, unless we already did.
       (or (get symbol 'standard-value)
          (put symbol 'standard-value (list standard)))
-      ;; If this is NOT while dumping Emacs,
-      ;; set up the rest of the customization info.
+      ;; We need these properties independent of whether cus-start is loaded.
+      (if (setq prop (memq :safe rest))
+         (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.  This is the stuff that is not needed
+      ;; until someone does M-x customize etc.
       (unless purify-flag
-       ;; Add it to the right group.
-       (custom-add-to-group group symbol 'custom-variable)
+       ;; Add it to the right group(s).
+       (if (listp group)
+           (dolist (g group)
+             (custom-add-to-group g symbol 'custom-variable))
+         (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 '(:standard :risky :safe :set))) ; handled above
+               ((eq prop :tag)
+                (put symbol 'custom-tag propval))))))))
 
 (custom-add-to-group 'iswitchb 'read-buffer-function 'custom-variable)
 (custom-add-to-group 'font-lock 'open-paren-in-column-0-is-defun-start
                     'custom-variable)
 
-;; Record cus-start as loaded
-;; if we have set up all the info that we can set up.
-;; Don't record cus-start as loaded
-;; if we have set up only the standard values.
+;; Record cus-start as loaded if we have set up all the info that we can.
+;; Don't record it as loaded if we have only set up the standard values
+;; and safe/risky properties.
 (unless purify-flag
   (provide 'cus-start))
 
-;; arch-tag: 4502730d-bcb3-4f5e-99a3-a86f2d54af60
 ;;; cus-start.el ends here