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