dynwind fixes
[bpt/emacs.git] / lisp / cus-start.el
CommitLineData
1cd7adc6 1;;; cus-start.el --- define customization properties of builtins
976f7668 2
ba318903 3;; Copyright (C) 1997, 1999-2014 Free Software Foundation, Inc.
976f7668 4
1444b0c0
PA
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 24;;; Commentary:
976f7668 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)
2bc356d7 51 (gc-cons-percentage alloc float)
0f014aa1 52 (garbage-collection-messages alloc boolean)
1444b0c0 53 ;; buffer.c
0f7b074f
CY
54 (cursor-type
55 display
56 (choice
57 (const :tag "Frame default" t)
58 (const :tag "Filled box" box)
59 (const :tag "Hollow cursor" hollow)
60 (const :tag "Vertical bar" bar)
61 (cons :tag "Vertical bar with specified width"
62 (const bar) integer)
63 (const :tag "Horizontal bar" hbar)
64 (cons :tag "Horizontal bar with specified width"
65 (const hbar) integer)
66 (const :tag "None "nil)))
e45db0fb 67 (mode-line-format mode-line sexp) ;Hard to do right.
4e3b4528 68 (major-mode internal function)
1444b0c0
PA
69 (case-fold-search matching boolean)
70 (fill-column fill integer)
71 (left-margin fill integer)
72 (tab-width editing-basics integer)
73 (ctl-arrow display boolean)
74 (truncate-lines display boolean)
84975bbe 75 (word-wrap display boolean)
1444b0c0 76 (selective-display-ellipses display boolean)
516b77a3 77 (indicate-empty-lines fringe boolean)
eb94dac6
LT
78 (indicate-buffer-boundaries
79 fringe
80 (choice
81 (const :tag "No indicators" nil)
82 (const :tag "On left, with arrows" left)
83 (const :tag "On right, with arrows" right)
a4fbb790
LT
84 (set :tag "Pick your own design"
85 :value ((t . nil))
86 :format "%{%t%}:\n%v\n%d"
87 :doc "You can specify a default and then override it \
88for individual indicators.
89Leaving \"Default\" unchecked is equivalent with specifying a default of
90\"Do not show\"."
91 (choice :tag "Default"
92 :value (t . nil)
93 (const :tag "Do not show" (t . nil))
94 (const :tag "On the left" (t . left))
95 (const :tag "On the right" (t . right)))
96 (choice :tag "Top"
97 :value (top . left)
98 (const :tag "Do not show" (top . nil))
99 (const :tag "On the left" (top . left))
100 (const :tag "On the right" (top . right)))
101 (choice :tag "Bottom"
102 :value (bottom . left)
103 (const :tag "Do not show" (bottom . nil))
104 (const :tag "On the left" (bottom . left))
105 (const :tag "On the right" (bottom . right)))
106 (choice :tag "Up arrow"
107 :value (up . left)
108 (const :tag "Do not show" (up . nil))
109 (const :tag "On the left" (up . left))
110 (const :tag "On the right" (up . right)))
111 (choice :tag "Down arrow"
112 :value (down . left)
113 (const :tag "Do not show" (down . nil))
114 (const :tag "On the left" (down . left))
115 (const :tag "On the right" (down . right))))
516b77a3 116 (other :tag "On left, no arrows" t)))
c6d57325 117 (scroll-up-aggressively windows
58cc0a01 118 (choice (const :tag "off" nil) float)
c6d57325
RS
119 "21.1")
120 (scroll-down-aggressively windows
58cc0a01 121 (choice (const :tag "off" nil) float)
c6d57325 122 "21.1")
58cc0a01 123 (line-spacing display (choice (const :tag "none" nil) number)
6671cab3 124 "22.1")
ec514007 125 (cursor-in-non-selected-windows
c8c59954
GM
126 cursor boolean nil
127 :tag "Cursor In Non-selected Windows"
e9c8529f
GM
128 :set (lambda (symbol value)
129 (set-default symbol value)
130 (force-mode-line-update t)))
9d794026 131 (transient-mark-mode editing-basics boolean nil
c8c59954 132 :standard (not noninteractive)
88f43c67
GM
133 :initialize custom-initialize-delay
134 :set custom-set-minor-mode)
b177498a
EZ
135 (bidi-paragraph-direction
136 paragraphs
137 (choice
138 (const :tag "Left to Right" left-to-right)
139 (const :tag "Right to Left" right-to-left)
904215d2
EZ
140 (const :tag "Dynamic, according to paragraph text" nil))
141 "24.1")
1444b0c0
PA
142 ;; callint.c
143 (mark-even-if-inactive editing-basics boolean)
144 ;; callproc.c
145 (shell-file-name execute file)
146 (exec-path execute
f747a488 147 (repeat (choice (const :tag "default directory" nil)
72e869ba 148 (directory :format "%v"))))
2bc356d7 149 (exec-suffixes execute (repeat string))
5e3097cd 150 ;; charset.c
c11f69e1
KH
151 (charset-map-path installation
152 (repeat (directory :format "%v")))
5fc9eb7c
DL
153 ;; coding.c
154 (inhibit-eol-conversion mule boolean)
de0d1fc5 155 (eol-mnemonic-undecided mule string)
57c3bd01
GM
156 ;; startup.el fiddles with the values. IMO, would be
157 ;; simpler to just use #ifdefs in coding.c.
158 (eol-mnemonic-unix mule string nil
159 :standard
160 (if (memq system-type '(ms-dos windows-nt))
161 "(Unix)" ":"))
162 (eol-mnemonic-dos mule string nil
163 :standard
164 (if (memq system-type '(ms-dos windows-nt))
165 "\\" "(DOS)"))
166 (eol-mnemonic-mac mule string nil
167 :standard "(Mac)")
13eb63ff
DL
168 (file-coding-system-alist
169 mule
170 (alist
171 :key-type (regexp :tag "File regexp")
172 :value-type (choice
173 :value (undecided . undecided)
174 (cons :tag "Encoding/decoding pair"
175 :value (undecided . undecided)
176 (coding-system :tag "Decoding")
177 (coding-system :tag "Encoding"))
70c2811c
KY
178 (coding-system
179 :tag "Single coding system"
180 :value undecided
181 :match (lambda (widget value)
182 (and value (not (functionp value)))))
13eb63ff 183 (function :value ignore))))
1444b0c0 184 ;; dired.c
71296446 185 (completion-ignored-extensions dired
1444b0c0 186 (repeat (string :format "%v")))
0849a37e 187 ;; dispnew.c
1444b0c0
PA
188 (baud-rate display integer)
189 (inverse-video display boolean)
190 (visible-bell display boolean)
191 (no-redraw-on-reenter display boolean)
2bc356d7
CY
192
193 ;; dosfns.c
194 (dos-display-scancodes display boolean)
195 (dos-hyper-key keyboard integer)
196 (dos-super-key keyboard integer)
197 (dos-keypad-mode keyboard integer)
198
1444b0c0
PA
199 ;; editfns.c
200 (user-full-name mail string)
7b207d6d
GM
201 ;; emacs.c
202 (report-emacs-bug-address emacsbug string)
1444b0c0
PA
203 ;; eval.c
204 (max-specpdl-size limits integer)
205 (max-lisp-eval-depth limits integer)
f8add097
RS
206 (max-mini-window-height limits
207 (choice (const :tag "quarter screen" nil)
6671cab3 208 number) "23.1")
71296446 209 (debug-on-error debug
1444b0c0
PA
210 (choice (const :tag "off")
211 (repeat :menu-tag "When"
212 :value (nil)
213 (symbol :format "%v"))
214 (const :tag "always" t)))
215 (debug-ignored-errors debug (repeat (choice symbol regexp)))
21ce8245 216 (debug-on-quit debug boolean)
2bc356d7
CY
217 (debug-on-signal debug boolean)
218 ;; fileio.c
219 (delete-by-moving-to-trash auto-save boolean "23.1")
6ba7a6f0 220 (auto-save-visited-file-name auto-save boolean)
e088c02a 221 ;; filelock.c
2a1e2476 222 (create-lockfiles files boolean "24.3")
e088c02a
GM
223 (temporary-file-directory
224 ;; Darwin section added 24.1, does not seem worth :version bump.
225 files directory nil
c8c59954 226 :standard
e088c02a
GM
227 (file-name-as-directory
228 ;; FIXME ? Should there be Ftemporary_file_directory to do this
229 ;; more robustly (cf set_local_socket in emacsclient.c).
230 ;; It could be used elsewhere, eg Fcall_process_region,
231 ;; server-socket-dir. See bug#7135.
232 (cond ((memq system-type '(ms-dos windows-nt))
233 (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP")
234 "c:/temp"))
235 ((eq system-type 'darwin)
236 (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
237 ;; See bug#7135.
238 (let ((tmp (ignore-errors
239 (shell-command-to-string
240 "getconf DARWIN_USER_TEMP_DIR"))))
241 (and (stringp tmp)
242 (setq tmp (replace-regexp-in-string
243 "\n\\'" "" tmp))
244 ;; Handles "getconf: Unrecognized variable..."
245 (file-directory-p tmp)
246 tmp))
247 "/tmp"))
248 (t
249 (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
250 "/tmp"))))
251 :initialize custom-initialize-delay)
78976e0a 252 ;; fns.c
37328bcd 253 (use-dialog-box menu boolean "21.1")
bf247b6e 254 (use-file-dialog menu boolean "22.1")
f4c307a5 255 (focus-follows-mouse frames boolean "20.3")
2bc356d7 256 ;; fontset.c
a931698a
GM
257 ;; FIXME nil is the initial value, fontset.el setqs it.
258 (vertical-centering-font-regexp display
259 (choice (const nil) regexp))
1444b0c0
PA
260 ;; frame.c
261 (default-frame-alist frames
262 (repeat (cons :format "%v"
263 (symbol :tag "Parameter")
264 (sexp :tag "Value"))))
140fb7ff
KS
265 (mouse-highlight mouse (choice (const :tag "disabled" nil)
266 (const :tag "always shown" t)
6671cab3
MR
267 (other :tag "hidden by keypress" 1))
268 "22.1")
e044e4fc 269 (make-pointer-invisible mouse boolean "23.2")
c8c59954 270 (menu-bar-mode frames boolean nil
88f43c67
GM
271 ;; FIXME?
272; :initialize custom-initialize-default
273 :set custom-set-minor-mode)
c8c59954 274 (tool-bar-mode (frames mouse) boolean nil
88f43c67
GM
275; :initialize custom-initialize-default
276 :set custom-set-minor-mode)
880e6158 277 (frame-resize-pixelwise windows boolean "24.4")
48d707c5 278 ;; fringe.c
516b77a3 279 (overflow-newline-into-fringe fringe boolean)
af008560
GM
280 ;; image.c
281 (imagemagick-render-type image integer "24.1")
1444b0c0 282 ;; indent.c
01892a52 283 (indent-tabs-mode indent boolean)
1444b0c0
PA
284 ;; keyboard.c
285 (meta-prefix-char keyboard character)
286 (auto-save-interval auto-save integer)
287 (auto-save-timeout auto-save (choice (const :tag "off" nil)
288 (integer :format "%v")))
ac1b1728 289 (echo-keystrokes minibuffer number)
1444b0c0 290 (polling-period keyboard integer)
4db2b1c7
RS
291 (double-click-time mouse (restricted-sexp
292 :match-alternatives (integerp 'nil 't)))
6671cab3 293 (double-click-fuzz mouse integer "22.1")
1444b0c0
PA
294 (help-char keyboard character)
295 (help-event-list keyboard (repeat (sexp :format "%v")))
296 (menu-prompting menu boolean)
9852377f 297 (select-active-regions killing
7c23dd44
CY
298 (choice (const :tag "always" t)
299 (const :tag "only shift-selection or mouse-drag" only)
9852377f
CY
300 (const :tag "off" nil))
301 "24.1")
0438ce91
DC
302 (debug-on-event debug
303 (choice (const :tag "None" nil)
304 (const :tag "When sent SIGUSR1" sigusr1)
305 (const :tag "When sent SIGUSR2" sigusr2))
306 "24.1")
5f537e54 307
99d0d6dc
SM
308 ;; This is not good news because it will use the wrong
309 ;; version-specific directories when you upgrade. We need
310 ;; customization of the front of the list, maintaining the
311 ;; standard value intact at the back.
312 ;;(load-path environment
313 ;; (repeat (choice :tag "[Current dir?]"
314 ;; :format "%[Current dir?%] %v"
315 ;; (const :tag " current dir" nil)
316 ;; (directory :format "%v"))))
1f41ee56 317 (load-prefer-newer lisp boolean "24.4")
1444b0c0 318 ;; minibuf.c
1444b0c0 319 (enable-recursive-minibuffers minibuffer boolean)
408f56b2 320 (history-length minibuffer
6671cab3 321 (choice (const :tag "Infinite" t) integer)
26e91130 322 "24.5") ; 30 -> 100
6671cab3 323 (history-delete-duplicates minibuffer boolean "22.1")
ed278e5d
CY
324 (read-buffer-completion-ignore-case minibuffer boolean "23.1")
325
8f62f2b8
MB
326 (minibuffer-prompt-properties
327 minibuffer
328 (list
329 (checklist :inline t
330 (const :tag "Read-Only"
331 :doc "Prevent prompt from being modified"
332 :format "%t%n%h"
333 :inline t
334 (read-only t))
c9133fa6 335 (const :tag "Don't Enter"
8f62f2b8
MB
336 :doc "Prevent point from ever entering prompt"
337 :format "%t%n%h"
338 :inline t
339 (point-entered minibuffer-avoid-prompt)))
340 (repeat :inline t
341 :tag "Other Properties"
342 (list :inline t
343 :format "%v"
344 (symbol :tag "Property")
ecf5279a
DL
345 (sexp :tag "Value"))))
346 "21.1")
1444b0c0 347 (minibuffer-auto-raise minibuffer boolean)
ecf5279a 348 ;; options property set at end
a8a1b05d
DL
349 (read-buffer-function minibuffer
350 (choice (const nil)
351 (function-item iswitchb-read-buffer)
352 function))
b78fba02
EZ
353 ;; msdos.c
354 (dos-unsupported-char-glyph display integer)
bc9ebf41 355 ;; nsterm.m
77346ecd 356 (ns-control-modifier
ae2349fe 357 ns
bc9ebf41
DR
358 (choice (const :tag "No modifier" nil)
359 (const control) (const meta)
360 (const alt) (const hyper)
361 (const super)) "23.1")
b7d1e144
JD
362 (ns-right-control-modifier
363 ns
364 (choice (const :tag "No modifier (work as control)" none)
365 (const :tag "Use the value of ns-control-modifier"
366 left)
367 (const control) (const meta)
368 (const alt) (const hyper)
18348234 369 (const super)) "24.1")
77346ecd 370 (ns-command-modifier
ae2349fe 371 ns
bc9ebf41
DR
372 (choice (const :tag "No modifier" nil)
373 (const control) (const meta)
374 (const alt) (const hyper)
375 (const super)) "23.1")
b7d1e144
JD
376 (ns-right-command-modifier
377 ns
378 (choice (const :tag "No modifier (work as command)" none)
379 (const :tag "Use the value of ns-command-modifier"
380 left)
381 (const control) (const meta)
382 (const alt) (const hyper)
18348234 383 (const super)) "24.1")
77346ecd 384 (ns-alternate-modifier
ae2349fe 385 ns
bc9ebf41
DR
386 (choice (const :tag "No modifier (work as alternate/option)" none)
387 (const control) (const meta)
388 (const alt) (const hyper)
389 (const super)) "23.1")
a2e35ef5
JD
390 (ns-right-alternate-modifier
391 ns
392 (choice (const :tag "No modifier (work as alternate/option)" none)
393 (const :tag "Use the value of ns-alternate-modifier"
394 left)
395 (const control) (const meta)
396 (const alt) (const hyper)
397 (const super)) "23.3")
77346ecd 398 (ns-function-modifier
ae2349fe 399 ns
bc9ebf41
DR
400 (choice (const :tag "No modifier (work as function)" none)
401 (const control) (const meta)
402 (const alt) (const hyper)
403 (const super)) "23.1")
404 (ns-antialias-text ns boolean "23.1")
18348234 405 (ns-auto-hide-menu-bar ns boolean "24.1")
6871e574 406 (ns-use-native-fullscreen ns boolean "24.4")
41cf3d11 407 (ns-use-srgb-colorspace ns boolean "24.4")
1444b0c0 408 ;; process.c
4883633e 409 (delete-exited-processes processes-basics boolean)
1444b0c0
PA
410 ;; syntax.c
411 (parse-sexp-ignore-comments editing-basics boolean)
412 (words-include-escapes editing-basics boolean)
6b61353c
KH
413 (open-paren-in-column-0-is-defun-start editing-basics boolean
414 "21.1")
98e071b5
SM
415 ;; term.c
416 (visible-cursor cursor boolean "22.1")
0f08b956
LT
417 ;; undo.c
418 (undo-limit undo integer)
419 (undo-strong-limit undo integer)
420 (undo-outer-limit undo
421 (choice integer
422 (const :tag "No limit"
423 :format "%t\n%d"
424 :doc
425 "With this choice, \
426the undo info for the current command never gets discarded.
427This should only be chosen under exceptional circumstances,
428since it could result in memory overflow and make Emacs crash."
429 nil))
430 "22.1")
1444b0c0 431 ;; window.c
4cb464b7 432 (temp-buffer-show-function windows (choice (const nil) function))
74f54b54 433 (next-screen-context-lines windows integer)
7704b6b1
KS
434 (scroll-preserve-screen-position
435 windows (choice
436 (const :tag "Off (nil)" :value nil)
437 (const :tag "Full screen (t)" :value t)
6671cab3 438 (other :tag "Always" 1)) "22.1")
562dd5e9
MR
439 (recenter-redisplay
440 windows (choice
441 (const :tag "Never (nil)" :value nil)
442 (const :tag "Only on ttys" :value tty)
443 (other :tag "Always" t)) "23.1")
a0c2d0ae 444 (window-combination-resize windows boolean "24.1")
8e17c9ba
MR
445 (window-combination-limit
446 windows (choice
447 (const :tag "Never (nil)" :value nil)
448 (const :tag "For Temp Buffer Resize mode (temp-buffer-resize)"
449 :value temp-buffer-resize)
450 (const :tag "For temporary buffers (temp-buffer)"
451 :value temp-buffer)
452 (const :tag "For buffer display (display-buffer)"
453 :value display-buffer)
454 (other :tag "Always (t)" :value t))
455 "24.3")
880e6158 456 (window-resize-pixelwise windows boolean "24.4")
1444b0c0 457 ;; xdisp.c
ed8be7ff
GM
458 ;; The whitespace group is for whitespace.el.
459 (show-trailing-whitespace editing-basics boolean nil
ec514007 460 :safe booleanp)
1444b0c0 461 (scroll-step windows integer)
ccbb360e
RS
462 (scroll-conservatively windows integer)
463 (scroll-margin windows integer)
4e371ce8
EZ
464 (hscroll-margin windows integer "22.1")
465 (hscroll-step windows number "22.1")
f0024d8c
GM
466 (truncate-partial-width-windows
467 display
468 (choice (integer :tag "Truncate if narrower than")
469 (const :tag "Respect `truncate-lines'" nil)
470 (other :tag "Truncate if not full-width" t))
471 "23.1")
2bc356d7 472 (make-cursor-line-fully-visible windows boolean)
e45db0fb 473 (mode-line-in-non-selected-windows mode-line boolean "22.1")
37328bcd
DL
474 (line-number-display-limit display
475 (choice integer
476 (const :tag "No limit" nil)))
6671cab3 477 (line-number-display-limit-width display integer "22.1")
1444b0c0
PA
478 (highlight-nonselected-windows display boolean)
479 (message-log-max debug (choice (const :tag "Disable" nil)
480 (integer :menu-tag "lines"
481 :format "%v")
57f1dee4
GM
482 (other :tag "Unlimited" t))
483 "24.3")
daba3e25 484 (unibyte-display-via-language-environment mule boolean)
bf247b6e 485 (blink-cursor-alist cursor alist "22.1")
03c25271 486 (overline-margin display integer "22.1")
2a3bd2e1 487 (underline-minimum-offset display integer "23.1")
612c16f1
CY
488 (mouse-autoselect-window
489 display (choice
490 (const :tag "Off (nil)" :value nil)
491 (const :tag "Immediate" :value t)
492 (number :tag "Delay by secs" :value 0.5)) "22.1")
f904c0f9
JD
493 (tool-bar-style
494 frames (choice
495 (const :tag "Images" :value image)
496 (const :tag "Text" :value text)
497 (const :tag "Both" :value both)
498 (const :tag "Both-horiz" :value both-horiz)
8a52f00a 499 (const :tag "Text-image-horiz" :value text-image-horiz)
0c3461de
GM
500 (const :tag "System default" :value nil)) "24.1")
501 (tool-bar-max-label-size frames integer "24.1")
ec514007 502 (auto-hscroll-mode scrolling boolean "21.1")
2bc356d7
CY
503 (void-text-area-pointer cursor
504 (choice
505 (const :tag "Standard (text pointer)" :value nil)
506 (const :tag "Arrow" :value arrow)
507 (const :tag "Text pointer" :value text)
508 (const :tag "Hand" :value hand)
509 (const :tag "Vertical dragger" :value vdrag)
510 (const :tag "Horizontal dragger" :value hdrag)
511 (const :tag "Same as mode line" :value modeline)
512 (const :tag "Hourglass" :value hourglass)))
ec514007
GM
513 (display-hourglass cursor boolean)
514 (hourglass-delay cursor number)
f904c0f9 515
e5f51929 516 ;; xfaces.c
6671cab3 517 (scalable-fonts-allowed display boolean "22.1")
1444b0c0
PA
518 ;; xfns.c
519 (x-bitmap-file-path installation
0849a37e 520 (repeat (directory :format "%v")))
c4823934 521 (x-gtk-use-old-file-dialog menu boolean "22.1")
91b5a204 522 (x-gtk-show-hidden-files menu boolean "22.1")
c4823934 523 (x-gtk-file-dialog-help-text menu boolean "22.1")
0dd95b49 524 (x-gtk-whole-detached-tool-bar x boolean "22.1")
aa1859f5 525 (x-gtk-use-system-tooltips tooltip boolean "23.3")
0849a37e 526 ;; xterm.c
4e371ce8 527 (x-use-underline-position-properties display boolean "22.1")
03c25271 528 (x-underline-at-descent-line display boolean "22.1")
dfb3c4c6 529 (x-stretch-cursor display boolean "21.1")
616763d5 530 (scroll-bar-adjust-thumb-portion windows boolean "24.4")
c1ca42b4
CY
531 ;; xselect.c
532 (x-select-enable-clipboard-manager killing boolean "24.1")
dfb3c4c6
JD
533 ;; xsettings.c
534 (font-use-system-font font-selection boolean "23.2")))
ec514007 535 this symbol group type standard version native-p rest prop propval
4883633e
RS
536 ;; This function turns a value
537 ;; into an expression which produces that value.
538 (quoter (lambda (sexp)
539 (if (or (memq sexp '(t nil))
017266f8 540 (keywordp sexp)
4883633e
RS
541 (and (listp sexp)
542 (memq (car sexp) '(lambda)))
543 (stringp sexp)
37328bcd 544 (numberp sexp))
4883633e
RS
545 sexp
546 (list 'quote sexp)))))
71296446 547 (while all
1444b0c0
PA
548 (setq this (car all)
549 all (cdr all)
550 symbol (nth 0 this)
551 group (nth 1 this)
00377857 552 type (nth 2 this)
37328bcd 553 version (nth 3 this)
c8c59954 554 rest (nthcdr 4 this)
a200d998
RS
555 ;; If we did not specify any standard value expression above,
556 ;; use the current value as the standard value.
c8c59954
GM
557 standard (if (setq prop (memq :standard rest))
558 (cadr prop)
559 (if (default-boundp symbol)
560 (funcall quoter (default-value symbol))))
00377857
EZ
561 ;; Don't complain about missing variables which are
562 ;; irrelevant to this platform.
563 native-p (save-match-data
564 (cond
565 ((string-match "\\`dos-" (symbol-name symbol))
566 (eq system-type 'ms-dos))
567 ((string-match "\\`w32-" (symbol-name symbol))
568 (eq system-type 'windows-nt))
77346ecd
EZ
569 ((string-match "\\`ns-" (symbol-name symbol))
570 (featurep 'ns))
2702394e 571 ((string-match "\\`x-.*gtk" (symbol-name symbol))
79cf2123 572 (featurep 'gtk))
78e8b10a
CY
573 ((string-match "clipboard-manager" (symbol-name symbol))
574 (boundp 'x-select-enable-clipboard-manager))
197a09bf
EZ
575 ((string-match "\\`x-" (symbol-name symbol))
576 (fboundp 'x-create-frame))
6eb33acb
EZ
577 ((string-match "selection" (symbol-name symbol))
578 (fboundp 'x-selection-exists-p))
579 ((string-match "fringe" (symbol-name symbol))
580 (fboundp 'define-fringe-bitmap))
af008560
GM
581 ((string-match "\\`imagemagick" (symbol-name symbol))
582 (fboundp 'imagemagick-types))
8b571bf3
JD
583 ((equal "font-use-system-font" (symbol-name symbol))
584 (featurep 'system-font-setting))
c0162ade
EZ
585 ;; Conditioned on x-create-frame, because that's
586 ;; the condition for loadup.el to preload tool-bar.el.
587 ((string-match "tool-bar-" (symbol-name symbol))
588 (fboundp 'x-create-frame))
f31237a4
EZ
589 ((equal "vertical-centering-font-regexp"
590 (symbol-name symbol))
591 ;; Any function from fontset.c will do.
592 (fboundp 'new-fontset))
ad33a799
EZ
593 ((equal "scroll-bar-adjust-thumb-portion"
594 (symbol-name symbol))
595 (featurep 'x))
00377857 596 (t t))))
1444b0c0
PA
597 (if (not (boundp symbol))
598 ;; If variables are removed from C code, give an error here!
00377857
EZ
599 (and native-p
600 (message "Note, built-in variable `%S' not bound" symbol))
4883633e
RS
601 ;; Save the standard value, unless we already did.
602 (or (get symbol 'standard-value)
a200d998 603 (put symbol 'standard-value (list standard)))
ec514007
GM
604 ;; We need these properties independent of whether cus-start is loaded.
605 (if (setq prop (memq :safe rest))
606 (put symbol 'safe-local-variable (cadr prop)))
607 (if (setq prop (memq :risky rest))
608 (put symbol 'risky-local-variable (cadr prop)))
88f43c67
GM
609 (if (setq prop (memq :set rest))
610 (put symbol 'custom-set (cadr prop)))
9d794026
GM
611 ;; Note this is the _only_ initialize property we handle.
612 (if (eq (cadr (memq :initialize rest)) 'custom-initialize-delay)
613 (push symbol custom-delayed-init-variables))
88f43c67
GM
614 ;; If this is NOT while dumping Emacs, set up the rest of the
615 ;; customization info. This is the stuff that is not needed
616 ;; until someone does M-x customize etc.
4883633e 617 (unless purify-flag
9d794026
GM
618 ;; Add it to the right group(s).
619 (if (listp group)
620 (dolist (g group)
621 (custom-add-to-group g symbol 'custom-variable))
622 (custom-add-to-group group symbol 'custom-variable))
4883633e 623 ;; Set the type.
37328bcd 624 (put symbol 'custom-type type)
c8c59954 625 (if version (put symbol 'custom-version version))
ec514007
GM
626 (while rest
627 (setq prop (car rest)
628 propval (cadr rest)
629 rest (nthcdr 2 rest))
c8c59954 630 (cond ((memq prop '(:standard :risky :safe :set))) ; handled above
ec514007
GM
631 ((eq prop :tag)
632 (put symbol 'custom-tag propval))))))))
4883633e 633
ecf5279a 634(custom-add-to-group 'iswitchb 'read-buffer-function 'custom-variable)
6b61353c
KH
635(custom-add-to-group 'font-lock 'open-paren-in-column-0-is-defun-start
636 'custom-variable)
ecf5279a 637
ec514007
GM
638;; Record cus-start as loaded if we have set up all the info that we can.
639;; Don't record it as loaded if we have only set up the standard values
640;; and safe/risky properties.
4883633e
RS
641(unless purify-flag
642 (provide 'cus-start))
1444b0c0 643
1cd7adc6 644;;; cus-start.el ends here