Refill some copyright headers.
[bpt/emacs.git] / lisp / cus-start.el
CommitLineData
1cd7adc6 1;;; cus-start.el --- define customization properties of builtins
1444b0c0 2;;
e9bffc61
GM
3;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
4;; 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
1444b0c0
PA
5;;
6;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
7;; Keywords: internal
bd78fa1d 8;; Package: emacs
1444b0c0 9
c2383d2d
RS
10;; This file is part of GNU Emacs.
11
eb3fa2cf 12;; GNU Emacs is free software: you can redistribute it and/or modify
c2383d2d 13;; it under the terms of the GNU General Public License as published by
eb3fa2cf
GM
14;; the Free Software Foundation, either version 3 of the License, or
15;; (at your option) any later version.
c2383d2d
RS
16
17;; GNU Emacs is distributed in the hope that it will be useful,
18;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;; GNU General Public License for more details.
21
22;; You should have received a copy of the GNU General Public License
eb3fa2cf 23;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
c2383d2d 24
1444b0c0
PA
25;;; Commentary:
26;;
4883633e 27;; This file adds customize support for built-in variables.
1444b0c0 28
4883633e
RS
29;; While dumping Emacs, this file is loaded, but it only records
30;; the standard values; it does not do the rest of the job.
31;; Later on, if the user makes a customization buffer,
32;; this file is loaded again with (require 'cus-start);
33;; then it does the whole job.
1444b0c0 34
4883633e 35;;; Code:
1444b0c0 36
0356de22
GM
37;; Elements of this list have the form:
38;; SYMBOL GROUP TYPE VERSION REST...
39;; SYMBOL is the name of the variable.
40;; GROUP is the custom group to which it belongs (may also be a list
41;; of groups)
42;; TYPE is the defcustom :type.
43;; VERSION is the defcustom :version (or nil).
44;; REST is a set of :KEYWORD VALUE pairs. Accepted :KEYWORDs are:
45;; :standard - standard value for SYMBOL (else use current value)
46;; :set - custom-set property
47;; :risky - risky-local-variable property
48;; :safe - safe-local-variable property
49;; :tag - custom-tag property
e047f448 50(let ((all '(;; alloc.c
1444b0c0 51 (gc-cons-threshold alloc integer)
0f014aa1 52 (garbage-collection-messages alloc boolean)
1444b0c0 53 ;; buffer.c
e45db0fb 54 (mode-line-format mode-line sexp) ;Hard to do right.
4e3b4528 55 (major-mode internal function)
1444b0c0
PA
56 (case-fold-search matching boolean)
57 (fill-column fill integer)
58 (left-margin fill integer)
59 (tab-width editing-basics integer)
60 (ctl-arrow display boolean)
61 (truncate-lines display boolean)
84975bbe 62 (word-wrap display boolean)
1444b0c0 63 (selective-display-ellipses display boolean)
516b77a3 64 (indicate-empty-lines fringe boolean)
eb94dac6
LT
65 (indicate-buffer-boundaries
66 fringe
67 (choice
68 (const :tag "No indicators" nil)
69 (const :tag "On left, with arrows" left)
70 (const :tag "On right, with arrows" right)
a4fbb790
LT
71 (set :tag "Pick your own design"
72 :value ((t . nil))
73 :format "%{%t%}:\n%v\n%d"
74 :doc "You can specify a default and then override it \
75for individual indicators.
76Leaving \"Default\" unchecked is equivalent with specifying a default of
77\"Do not show\"."
78 (choice :tag "Default"
79 :value (t . nil)
80 (const :tag "Do not show" (t . nil))
81 (const :tag "On the left" (t . left))
82 (const :tag "On the right" (t . right)))
83 (choice :tag "Top"
84 :value (top . left)
85 (const :tag "Do not show" (top . nil))
86 (const :tag "On the left" (top . left))
87 (const :tag "On the right" (top . right)))
88 (choice :tag "Bottom"
89 :value (bottom . left)
90 (const :tag "Do not show" (bottom . nil))
91 (const :tag "On the left" (bottom . left))
92 (const :tag "On the right" (bottom . right)))
93 (choice :tag "Up arrow"
94 :value (up . left)
95 (const :tag "Do not show" (up . nil))
96 (const :tag "On the left" (up . left))
97 (const :tag "On the right" (up . right)))
98 (choice :tag "Down arrow"
99 :value (down . left)
100 (const :tag "Do not show" (down . nil))
101 (const :tag "On the left" (down . left))
102 (const :tag "On the right" (down . right))))
516b77a3 103 (other :tag "On left, no arrows" t)))
c6d57325
RS
104 (scroll-up-aggressively windows
105 (choice (const :tag "off" nil) number)
106 "21.1")
107 (scroll-down-aggressively windows
108 (choice (const :tag "off" nil) number)
109 "21.1")
6671cab3
MR
110 (line-spacing display (choice (const :tag "none" nil) integer)
111 "22.1")
ec514007 112 (cursor-in-non-selected-windows
c8c59954
GM
113 cursor boolean nil
114 :tag "Cursor In Non-selected Windows"
ec514007
GM
115 :set #'(lambda (symbol value)
116 (set-default symbol value)
117 (force-mode-line-update t)))
9d794026 118 (transient-mark-mode editing-basics boolean nil
c8c59954 119 :standard (not noninteractive)
88f43c67
GM
120 :initialize custom-initialize-delay
121 :set custom-set-minor-mode)
1444b0c0
PA
122 ;; callint.c
123 (mark-even-if-inactive editing-basics boolean)
124 ;; callproc.c
125 (shell-file-name execute file)
126 (exec-path execute
f747a488 127 (repeat (choice (const :tag "default directory" nil)
72e869ba 128 (directory :format "%v"))))
5e3097cd 129 ;; charset.c
c11f69e1
KH
130 (charset-map-path installation
131 (repeat (directory :format "%v")))
5fc9eb7c
DL
132 ;; coding.c
133 (inhibit-eol-conversion mule boolean)
de0d1fc5
EZ
134 (eol-mnemonic-undecided mule string)
135 (eol-mnemonic-unix mule string)
136 (eol-mnemonic-dos mule string)
137 (eol-mnemonic-mac mule string)
13eb63ff
DL
138 (file-coding-system-alist
139 mule
140 (alist
141 :key-type (regexp :tag "File regexp")
142 :value-type (choice
143 :value (undecided . undecided)
144 (cons :tag "Encoding/decoding pair"
145 :value (undecided . undecided)
146 (coding-system :tag "Decoding")
147 (coding-system :tag "Encoding"))
70c2811c
KY
148 (coding-system
149 :tag "Single coding system"
150 :value undecided
151 :match (lambda (widget value)
152 (and value (not (functionp value)))))
13eb63ff 153 (function :value ignore))))
1444b0c0 154 ;; dired.c
71296446 155 (completion-ignored-extensions dired
1444b0c0 156 (repeat (string :format "%v")))
0849a37e 157 ;; dispnew.c
1444b0c0
PA
158 (baud-rate display integer)
159 (inverse-video display boolean)
160 (visible-bell display boolean)
161 (no-redraw-on-reenter display boolean)
162 ;; editfns.c
163 (user-full-name mail string)
164 ;; eval.c
165 (max-specpdl-size limits integer)
166 (max-lisp-eval-depth limits integer)
f8add097
RS
167 (max-mini-window-height limits
168 (choice (const :tag "quarter screen" nil)
6671cab3 169 number) "23.1")
1444b0c0
PA
170 (stack-trace-on-error debug
171 (choice (const :tag "off")
172 (repeat :menu-tag "When"
173 :value (nil)
174 (symbol :format "%v"))
175 (const :tag "always" t)))
71296446 176 (debug-on-error debug
1444b0c0
PA
177 (choice (const :tag "off")
178 (repeat :menu-tag "When"
179 :value (nil)
180 (symbol :format "%v"))
181 (const :tag "always" t)))
182 (debug-ignored-errors debug (repeat (choice symbol regexp)))
507c9247
RS
183 (debug-on-quit debug
184 (choice (const :tag "off")
185 (repeat :menu-tag "When"
186 :value (nil)
187 (symbol :format "%v"))
188 (const :tag "always" t)))
6cf29fe8
JR
189 ;; fileio.c
190 (delete-by-moving-to-trash auto-save boolean "23.1")
6ba7a6f0 191 (auto-save-visited-file-name auto-save boolean)
e088c02a
GM
192 ;; filelock.c
193 (temporary-file-directory
194 ;; Darwin section added 24.1, does not seem worth :version bump.
195 files directory nil
c8c59954 196 :standard
e088c02a
GM
197 (file-name-as-directory
198 ;; FIXME ? Should there be Ftemporary_file_directory to do this
199 ;; more robustly (cf set_local_socket in emacsclient.c).
200 ;; It could be used elsewhere, eg Fcall_process_region,
201 ;; server-socket-dir. See bug#7135.
202 (cond ((memq system-type '(ms-dos windows-nt))
203 (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP")
204 "c:/temp"))
205 ((eq system-type 'darwin)
206 (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
207 ;; See bug#7135.
208 (let ((tmp (ignore-errors
209 (shell-command-to-string
210 "getconf DARWIN_USER_TEMP_DIR"))))
211 (and (stringp tmp)
212 (setq tmp (replace-regexp-in-string
213 "\n\\'" "" tmp))
214 ;; Handles "getconf: Unrecognized variable..."
215 (file-directory-p tmp)
216 tmp))
217 "/tmp"))
218 (t
219 (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
220 "/tmp"))))
221 :initialize custom-initialize-delay)
78976e0a 222 ;; fns.c
37328bcd 223 (use-dialog-box menu boolean "21.1")
bf247b6e 224 (use-file-dialog menu boolean "22.1")
f4c307a5 225 (focus-follows-mouse frames boolean "20.3")
1444b0c0
PA
226 ;; frame.c
227 (default-frame-alist frames
228 (repeat (cons :format "%v"
229 (symbol :tag "Parameter")
230 (sexp :tag "Value"))))
140fb7ff
KS
231 (mouse-highlight mouse (choice (const :tag "disabled" nil)
232 (const :tag "always shown" t)
6671cab3
MR
233 (other :tag "hidden by keypress" 1))
234 "22.1")
e044e4fc 235 (make-pointer-invisible mouse boolean "23.2")
c8c59954 236 (menu-bar-mode frames boolean nil
88f43c67
GM
237 ;; FIXME?
238; :initialize custom-initialize-default
239 :set custom-set-minor-mode)
c8c59954 240 (tool-bar-mode (frames mouse) boolean nil
88f43c67
GM
241; :initialize custom-initialize-default
242 :set custom-set-minor-mode)
48d707c5 243 ;; fringe.c
516b77a3 244 (overflow-newline-into-fringe fringe boolean)
1444b0c0 245 ;; indent.c
01892a52 246 (indent-tabs-mode indent boolean)
1444b0c0
PA
247 ;; keyboard.c
248 (meta-prefix-char keyboard character)
249 (auto-save-interval auto-save integer)
250 (auto-save-timeout auto-save (choice (const :tag "off" nil)
251 (integer :format "%v")))
ac1b1728 252 (echo-keystrokes minibuffer number)
1444b0c0 253 (polling-period keyboard integer)
4db2b1c7
RS
254 (double-click-time mouse (restricted-sexp
255 :match-alternatives (integerp 'nil 't)))
6671cab3 256 (double-click-fuzz mouse integer "22.1")
1444b0c0
PA
257 (inhibit-local-menu-bar-menus menu boolean)
258 (help-char keyboard character)
259 (help-event-list keyboard (repeat (sexp :format "%v")))
260 (menu-prompting menu boolean)
9852377f 261 (select-active-regions killing
7c23dd44
CY
262 (choice (const :tag "always" t)
263 (const :tag "only shift-selection or mouse-drag" only)
9852377f
CY
264 (const :tag "off" nil))
265 "24.1")
1444b0c0
PA
266 (suggest-key-bindings keyboard (choice (const :tag "off" nil)
267 (integer :tag "time" 2)
79221864 268 (other :tag "on")))
5f537e54 269
37328bcd
DL
270;; This is not good news because it will use the wrong
271;; version-specific directories when you upgrade. We need
272;; customization of the front of the list, maintaining the standard
273;; value intact at the back.
71296446 274;;; (load-path environment
37328bcd
DL
275;;; (repeat (choice :tag "[Current dir?]"
276;;; :format "%[Current dir?%] %v"
277;;; (const :tag " current dir" nil)
278;;; (directory :format "%v"))))
1444b0c0 279 ;; minibuf.c
1444b0c0 280 (enable-recursive-minibuffers minibuffer boolean)
408f56b2 281 (history-length minibuffer
6671cab3
MR
282 (choice (const :tag "Infinite" t) integer)
283 "22.1")
284 (history-delete-duplicates minibuffer boolean "22.1")
ed278e5d
CY
285 (read-buffer-completion-ignore-case minibuffer boolean "23.1")
286
8f62f2b8
MB
287 (minibuffer-prompt-properties
288 minibuffer
289 (list
290 (checklist :inline t
291 (const :tag "Read-Only"
292 :doc "Prevent prompt from being modified"
293 :format "%t%n%h"
294 :inline t
295 (read-only t))
c9133fa6 296 (const :tag "Don't Enter"
8f62f2b8
MB
297 :doc "Prevent point from ever entering prompt"
298 :format "%t%n%h"
299 :inline t
300 (point-entered minibuffer-avoid-prompt)))
301 (repeat :inline t
302 :tag "Other Properties"
303 (list :inline t
304 :format "%v"
305 (symbol :tag "Property")
ecf5279a
DL
306 (sexp :tag "Value"))))
307 "21.1")
1444b0c0 308 (minibuffer-auto-raise minibuffer boolean)
ecf5279a 309 ;; options property set at end
a8a1b05d
DL
310 (read-buffer-function minibuffer
311 (choice (const nil)
312 (function-item iswitchb-read-buffer)
313 function))
b78fba02
EZ
314 ;; msdos.c
315 (dos-unsupported-char-glyph display integer)
bc9ebf41 316 ;; nsterm.m
77346ecd 317 (ns-control-modifier
ae2349fe 318 ns
bc9ebf41
DR
319 (choice (const :tag "No modifier" nil)
320 (const control) (const meta)
321 (const alt) (const hyper)
322 (const super)) "23.1")
b7d1e144
JD
323 (ns-right-control-modifier
324 ns
325 (choice (const :tag "No modifier (work as control)" none)
326 (const :tag "Use the value of ns-control-modifier"
327 left)
328 (const control) (const meta)
329 (const alt) (const hyper)
330 (const super)) "24.0")
77346ecd 331 (ns-command-modifier
ae2349fe 332 ns
bc9ebf41
DR
333 (choice (const :tag "No modifier" nil)
334 (const control) (const meta)
335 (const alt) (const hyper)
336 (const super)) "23.1")
b7d1e144
JD
337 (ns-right-command-modifier
338 ns
339 (choice (const :tag "No modifier (work as command)" none)
340 (const :tag "Use the value of ns-command-modifier"
341 left)
342 (const control) (const meta)
343 (const alt) (const hyper)
344 (const super)) "24.0")
77346ecd 345 (ns-alternate-modifier
ae2349fe 346 ns
bc9ebf41
DR
347 (choice (const :tag "No modifier (work as alternate/option)" none)
348 (const control) (const meta)
349 (const alt) (const hyper)
350 (const super)) "23.1")
a2e35ef5
JD
351 (ns-right-alternate-modifier
352 ns
353 (choice (const :tag "No modifier (work as alternate/option)" none)
354 (const :tag "Use the value of ns-alternate-modifier"
355 left)
356 (const control) (const meta)
357 (const alt) (const hyper)
358 (const super)) "23.3")
77346ecd 359 (ns-function-modifier
ae2349fe 360 ns
bc9ebf41
DR
361 (choice (const :tag "No modifier (work as function)" none)
362 (const control) (const meta)
363 (const alt) (const hyper)
364 (const super)) "23.1")
365 (ns-antialias-text ns boolean "23.1")
1444b0c0 366 ;; process.c
4883633e 367 (delete-exited-processes processes-basics boolean)
1444b0c0
PA
368 ;; syntax.c
369 (parse-sexp-ignore-comments editing-basics boolean)
370 (words-include-escapes editing-basics boolean)
6b61353c
KH
371 (open-paren-in-column-0-is-defun-start editing-basics boolean
372 "21.1")
98e071b5
SM
373 ;; term.c
374 (visible-cursor cursor boolean "22.1")
0f08b956
LT
375 ;; undo.c
376 (undo-limit undo integer)
377 (undo-strong-limit undo integer)
378 (undo-outer-limit undo
379 (choice integer
380 (const :tag "No limit"
381 :format "%t\n%d"
382 :doc
383 "With this choice, \
384the undo info for the current command never gets discarded.
385This should only be chosen under exceptional circumstances,
386since it could result in memory overflow and make Emacs crash."
387 nil))
388 "22.1")
1444b0c0 389 ;; window.c
4cb464b7 390 (temp-buffer-show-function windows (choice (const nil) function))
74f54b54 391 (next-screen-context-lines windows integer)
1444b0c0
PA
392 (window-min-height windows integer)
393 (window-min-width windows integer)
7704b6b1
KS
394 (scroll-preserve-screen-position
395 windows (choice
396 (const :tag "Off (nil)" :value nil)
397 (const :tag "Full screen (t)" :value t)
6671cab3 398 (other :tag "Always" 1)) "22.1")
666e158e
MB
399 (recenter-redisplay windows
400 (choice
401 (const :tag "Never (nil)" :value nil)
402 (const :tag "Only on ttys" :value tty)
403 (other :tag "Always" t))
404 "23.1")
1444b0c0 405 ;; xdisp.c
c8c59954 406 (show-trailing-whitespace whitespace-faces boolean nil
ec514007 407 :safe booleanp)
1444b0c0 408 (scroll-step windows integer)
ccbb360e
RS
409 (scroll-conservatively windows integer)
410 (scroll-margin windows integer)
4e371ce8
EZ
411 (hscroll-margin windows integer "22.1")
412 (hscroll-step windows number "22.1")
3a66cc91 413 (truncate-partial-width-windows display boolean "23.1")
e45db0fb
MR
414 (mode-line-inverse-video mode-line boolean)
415 (mode-line-in-non-selected-windows mode-line boolean "22.1")
37328bcd
DL
416 (line-number-display-limit display
417 (choice integer
418 (const :tag "No limit" nil)))
6671cab3 419 (line-number-display-limit-width display integer "22.1")
1444b0c0
PA
420 (highlight-nonselected-windows display boolean)
421 (message-log-max debug (choice (const :tag "Disable" nil)
422 (integer :menu-tag "lines"
423 :format "%v")
79221864 424 (other :tag "Unlimited" t)))
daba3e25 425 (unibyte-display-via-language-environment mule boolean)
bf247b6e 426 (blink-cursor-alist cursor alist "22.1")
03c25271 427 (overline-margin display integer "22.1")
2a3bd2e1 428 (underline-minimum-offset display integer "23.1")
612c16f1
CY
429 (mouse-autoselect-window
430 display (choice
431 (const :tag "Off (nil)" :value nil)
432 (const :tag "Immediate" :value t)
433 (number :tag "Delay by secs" :value 0.5)) "22.1")
f904c0f9
JD
434 (tool-bar-style
435 frames (choice
436 (const :tag "Images" :value image)
437 (const :tag "Text" :value text)
438 (const :tag "Both" :value both)
439 (const :tag "Both-horiz" :value both-horiz)
8a52f00a 440 (const :tag "Text-image-horiz" :value text-image-horiz)
f904c0f9
JD
441 (const :tag "System default" :value nil)) "23.3")
442 (tool-bar-max-label-size frames integer "23.3")
ec514007
GM
443 (auto-hscroll-mode scrolling boolean "21.1")
444 (display-hourglass cursor boolean)
445 (hourglass-delay cursor number)
f904c0f9 446
e5f51929 447 ;; xfaces.c
6671cab3 448 (scalable-fonts-allowed display boolean "22.1")
1444b0c0
PA
449 ;; xfns.c
450 (x-bitmap-file-path installation
0849a37e 451 (repeat (directory :format "%v")))
c4823934 452 (x-gtk-use-old-file-dialog menu boolean "22.1")
91b5a204 453 (x-gtk-show-hidden-files menu boolean "22.1")
c4823934 454 (x-gtk-file-dialog-help-text menu boolean "22.1")
0dd95b49 455 (x-gtk-whole-detached-tool-bar x boolean "22.1")
aa1859f5 456 (x-gtk-use-system-tooltips tooltip boolean "23.3")
0849a37e 457 ;; xterm.c
4e371ce8 458 (x-use-underline-position-properties display boolean "22.1")
03c25271 459 (x-underline-at-descent-line display boolean "22.1")
dfb3c4c6
JD
460 (x-stretch-cursor display boolean "21.1")
461 ;; xsettings.c
462 (font-use-system-font font-selection boolean "23.2")))
ec514007 463 this symbol group type standard version native-p rest prop propval
4883633e
RS
464 ;; This function turns a value
465 ;; into an expression which produces that value.
466 (quoter (lambda (sexp)
467 (if (or (memq sexp '(t nil))
017266f8 468 (keywordp sexp)
4883633e
RS
469 (and (listp sexp)
470 (memq (car sexp) '(lambda)))
471 (stringp sexp)
37328bcd 472 (numberp sexp))
4883633e
RS
473 sexp
474 (list 'quote sexp)))))
71296446 475 (while all
1444b0c0
PA
476 (setq this (car all)
477 all (cdr all)
478 symbol (nth 0 this)
479 group (nth 1 this)
00377857 480 type (nth 2 this)
37328bcd 481 version (nth 3 this)
c8c59954 482 rest (nthcdr 4 this)
a200d998
RS
483 ;; If we did not specify any standard value expression above,
484 ;; use the current value as the standard value.
c8c59954
GM
485 standard (if (setq prop (memq :standard rest))
486 (cadr prop)
487 (if (default-boundp symbol)
488 (funcall quoter (default-value symbol))))
00377857
EZ
489 ;; Don't complain about missing variables which are
490 ;; irrelevant to this platform.
491 native-p (save-match-data
492 (cond
493 ((string-match "\\`dos-" (symbol-name symbol))
494 (eq system-type 'ms-dos))
495 ((string-match "\\`w32-" (symbol-name symbol))
496 (eq system-type 'windows-nt))
77346ecd
EZ
497 ((string-match "\\`ns-" (symbol-name symbol))
498 (featurep 'ns))
2702394e 499 ((string-match "\\`x-.*gtk" (symbol-name symbol))
79cf2123 500 (featurep 'gtk))
197a09bf
EZ
501 ((string-match "\\`x-" (symbol-name symbol))
502 (fboundp 'x-create-frame))
6eb33acb
EZ
503 ((string-match "selection" (symbol-name symbol))
504 (fboundp 'x-selection-exists-p))
505 ((string-match "fringe" (symbol-name symbol))
506 (fboundp 'define-fringe-bitmap))
8b571bf3
JD
507 ((equal "font-use-system-font" (symbol-name symbol))
508 (featurep 'system-font-setting))
c0162ade
EZ
509 ;; Conditioned on x-create-frame, because that's
510 ;; the condition for loadup.el to preload tool-bar.el.
511 ((string-match "tool-bar-" (symbol-name symbol))
512 (fboundp 'x-create-frame))
00377857 513 (t t))))
1444b0c0
PA
514 (if (not (boundp symbol))
515 ;; If variables are removed from C code, give an error here!
00377857
EZ
516 (and native-p
517 (message "Note, built-in variable `%S' not bound" symbol))
4883633e
RS
518 ;; Save the standard value, unless we already did.
519 (or (get symbol 'standard-value)
a200d998 520 (put symbol 'standard-value (list standard)))
ec514007
GM
521 ;; We need these properties independent of whether cus-start is loaded.
522 (if (setq prop (memq :safe rest))
523 (put symbol 'safe-local-variable (cadr prop)))
524 (if (setq prop (memq :risky rest))
525 (put symbol 'risky-local-variable (cadr prop)))
88f43c67
GM
526 (if (setq prop (memq :set rest))
527 (put symbol 'custom-set (cadr prop)))
9d794026
GM
528 ;; Note this is the _only_ initialize property we handle.
529 (if (eq (cadr (memq :initialize rest)) 'custom-initialize-delay)
530 (push symbol custom-delayed-init-variables))
88f43c67
GM
531 ;; If this is NOT while dumping Emacs, set up the rest of the
532 ;; customization info. This is the stuff that is not needed
533 ;; until someone does M-x customize etc.
4883633e 534 (unless purify-flag
9d794026
GM
535 ;; Add it to the right group(s).
536 (if (listp group)
537 (dolist (g group)
538 (custom-add-to-group g symbol 'custom-variable))
539 (custom-add-to-group group symbol 'custom-variable))
4883633e 540 ;; Set the type.
37328bcd 541 (put symbol 'custom-type type)
c8c59954 542 (if version (put symbol 'custom-version version))
ec514007
GM
543 (while rest
544 (setq prop (car rest)
545 propval (cadr rest)
546 rest (nthcdr 2 rest))
c8c59954 547 (cond ((memq prop '(:standard :risky :safe :set))) ; handled above
ec514007
GM
548 ((eq prop :tag)
549 (put symbol 'custom-tag propval))))))))
4883633e 550
ecf5279a 551(custom-add-to-group 'iswitchb 'read-buffer-function 'custom-variable)
6b61353c
KH
552(custom-add-to-group 'font-lock 'open-paren-in-column-0-is-defun-start
553 'custom-variable)
ecf5279a 554
ec514007
GM
555;; Record cus-start as loaded if we have set up all the info that we can.
556;; Don't record it as loaded if we have only set up the standard values
557;; and safe/risky properties.
4883633e
RS
558(unless purify-flag
559 (provide 'cus-start))
1444b0c0 560
1cd7adc6 561;;; cus-start.el ends here