Commit | Line | Data |
---|---|---|
1cd7adc6 | 1 | ;;; cus-start.el --- define customization properties of builtins |
1444b0c0 | 2 | ;; |
0d30b337 | 3 | ;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, |
409cc4a3 | 4 | ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
1444b0c0 PA |
5 | ;; |
6 | ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> | |
7 | ;; Keywords: internal | |
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 | |
e047f448 | 36 | (let ((all '(;; alloc.c |
1444b0c0 | 37 | (gc-cons-threshold alloc integer) |
0f014aa1 | 38 | (garbage-collection-messages alloc boolean) |
1444b0c0 | 39 | ;; buffer.c |
e45db0fb | 40 | (mode-line-format mode-line sexp) ;Hard to do right. |
1444b0c0 | 41 | (default-major-mode internal function) |
924ef223 | 42 | (enable-multibyte-characters mule boolean) |
1444b0c0 PA |
43 | (case-fold-search matching boolean) |
44 | (fill-column fill integer) | |
45 | (left-margin fill integer) | |
46 | (tab-width editing-basics integer) | |
47 | (ctl-arrow display boolean) | |
48 | (truncate-lines display boolean) | |
1444b0c0 | 49 | (selective-display-ellipses display boolean) |
516b77a3 | 50 | (indicate-empty-lines fringe boolean) |
eb94dac6 LT |
51 | (indicate-buffer-boundaries |
52 | fringe | |
53 | (choice | |
54 | (const :tag "No indicators" nil) | |
55 | (const :tag "On left, with arrows" left) | |
56 | (const :tag "On right, with arrows" right) | |
a4fbb790 LT |
57 | (set :tag "Pick your own design" |
58 | :value ((t . nil)) | |
59 | :format "%{%t%}:\n%v\n%d" | |
60 | :doc "You can specify a default and then override it \ | |
61 | for individual indicators. | |
62 | Leaving \"Default\" unchecked is equivalent with specifying a default of | |
63 | \"Do not show\"." | |
64 | (choice :tag "Default" | |
65 | :value (t . nil) | |
66 | (const :tag "Do not show" (t . nil)) | |
67 | (const :tag "On the left" (t . left)) | |
68 | (const :tag "On the right" (t . right))) | |
69 | (choice :tag "Top" | |
70 | :value (top . left) | |
71 | (const :tag "Do not show" (top . nil)) | |
72 | (const :tag "On the left" (top . left)) | |
73 | (const :tag "On the right" (top . right))) | |
74 | (choice :tag "Bottom" | |
75 | :value (bottom . left) | |
76 | (const :tag "Do not show" (bottom . nil)) | |
77 | (const :tag "On the left" (bottom . left)) | |
78 | (const :tag "On the right" (bottom . right))) | |
79 | (choice :tag "Up arrow" | |
80 | :value (up . left) | |
81 | (const :tag "Do not show" (up . nil)) | |
82 | (const :tag "On the left" (up . left)) | |
83 | (const :tag "On the right" (up . right))) | |
84 | (choice :tag "Down arrow" | |
85 | :value (down . left) | |
86 | (const :tag "Do not show" (down . nil)) | |
87 | (const :tag "On the left" (down . left)) | |
88 | (const :tag "On the right" (down . right)))) | |
516b77a3 | 89 | (other :tag "On left, no arrows" t))) |
c6d57325 RS |
90 | (scroll-up-aggressively windows |
91 | (choice (const :tag "off" nil) number) | |
92 | "21.1") | |
93 | (scroll-down-aggressively windows | |
94 | (choice (const :tag "off" nil) number) | |
95 | "21.1") | |
6671cab3 MR |
96 | (line-spacing display (choice (const :tag "none" nil) integer) |
97 | "22.1") | |
1444b0c0 PA |
98 | ;; callint.c |
99 | (mark-even-if-inactive editing-basics boolean) | |
100 | ;; callproc.c | |
101 | (shell-file-name execute file) | |
102 | (exec-path execute | |
f747a488 | 103 | (repeat (choice (const :tag "default directory" nil) |
72e869ba | 104 | (directory :format "%v")))) |
5e3097cd | 105 | ;; charset.c |
c11f69e1 KH |
106 | (charset-map-path installation |
107 | (repeat (directory :format "%v"))) | |
5fc9eb7c DL |
108 | ;; coding.c |
109 | (inhibit-eol-conversion mule boolean) | |
de0d1fc5 EZ |
110 | (eol-mnemonic-undecided mule string) |
111 | (eol-mnemonic-unix mule string) | |
112 | (eol-mnemonic-dos mule string) | |
113 | (eol-mnemonic-mac mule string) | |
13eb63ff DL |
114 | (file-coding-system-alist |
115 | mule | |
116 | (alist | |
117 | :key-type (regexp :tag "File regexp") | |
118 | :value-type (choice | |
119 | :value (undecided . undecided) | |
120 | (cons :tag "Encoding/decoding pair" | |
121 | :value (undecided . undecided) | |
122 | (coding-system :tag "Decoding") | |
123 | (coding-system :tag "Encoding")) | |
70c2811c KY |
124 | (coding-system |
125 | :tag "Single coding system" | |
126 | :value undecided | |
127 | :match (lambda (widget value) | |
128 | (and value (not (functionp value))))) | |
13eb63ff | 129 | (function :value ignore)))) |
1444b0c0 | 130 | ;; dired.c |
71296446 | 131 | (completion-ignored-extensions dired |
1444b0c0 | 132 | (repeat (string :format "%v"))) |
0849a37e | 133 | ;; dispnew.c |
1444b0c0 PA |
134 | (baud-rate display integer) |
135 | (inverse-video display boolean) | |
136 | (visible-bell display boolean) | |
137 | (no-redraw-on-reenter display boolean) | |
138 | ;; editfns.c | |
139 | (user-full-name mail string) | |
140 | ;; eval.c | |
141 | (max-specpdl-size limits integer) | |
142 | (max-lisp-eval-depth limits integer) | |
f8add097 RS |
143 | (max-mini-window-height limits |
144 | (choice (const :tag "quarter screen" nil) | |
6671cab3 | 145 | number) "23.1") |
1444b0c0 PA |
146 | (stack-trace-on-error debug |
147 | (choice (const :tag "off") | |
148 | (repeat :menu-tag "When" | |
149 | :value (nil) | |
150 | (symbol :format "%v")) | |
151 | (const :tag "always" t))) | |
71296446 | 152 | (debug-on-error debug |
1444b0c0 PA |
153 | (choice (const :tag "off") |
154 | (repeat :menu-tag "When" | |
155 | :value (nil) | |
156 | (symbol :format "%v")) | |
157 | (const :tag "always" t))) | |
158 | (debug-ignored-errors debug (repeat (choice symbol regexp))) | |
507c9247 RS |
159 | (debug-on-quit debug |
160 | (choice (const :tag "off") | |
161 | (repeat :menu-tag "When" | |
162 | :value (nil) | |
163 | (symbol :format "%v")) | |
164 | (const :tag "always" t))) | |
78976e0a | 165 | ;; fns.c |
37328bcd | 166 | (use-dialog-box menu boolean "21.1") |
bf247b6e | 167 | (use-file-dialog menu boolean "22.1") |
f4c307a5 | 168 | (focus-follows-mouse frames boolean "20.3") |
1444b0c0 PA |
169 | ;; frame.c |
170 | (default-frame-alist frames | |
171 | (repeat (cons :format "%v" | |
172 | (symbol :tag "Parameter") | |
173 | (sexp :tag "Value")))) | |
140fb7ff KS |
174 | (mouse-highlight mouse (choice (const :tag "disabled" nil) |
175 | (const :tag "always shown" t) | |
6671cab3 MR |
176 | (other :tag "hidden by keypress" 1)) |
177 | "22.1") | |
48d707c5 | 178 | ;; fringe.c |
516b77a3 | 179 | (overflow-newline-into-fringe fringe boolean) |
1444b0c0 | 180 | ;; indent.c |
01892a52 | 181 | (indent-tabs-mode indent boolean) |
1444b0c0 PA |
182 | ;; keyboard.c |
183 | (meta-prefix-char keyboard character) | |
184 | (auto-save-interval auto-save integer) | |
185 | (auto-save-timeout auto-save (choice (const :tag "off" nil) | |
186 | (integer :format "%v"))) | |
ac1b1728 | 187 | (echo-keystrokes minibuffer number) |
1444b0c0 | 188 | (polling-period keyboard integer) |
4db2b1c7 RS |
189 | (double-click-time mouse (restricted-sexp |
190 | :match-alternatives (integerp 'nil 't))) | |
6671cab3 | 191 | (double-click-fuzz mouse integer "22.1") |
1444b0c0 PA |
192 | (inhibit-local-menu-bar-menus menu boolean) |
193 | (help-char keyboard character) | |
194 | (help-event-list keyboard (repeat (sexp :format "%v"))) | |
195 | (menu-prompting menu boolean) | |
1444b0c0 PA |
196 | (suggest-key-bindings keyboard (choice (const :tag "off" nil) |
197 | (integer :tag "time" 2) | |
79221864 | 198 | (other :tag "on"))) |
2f566b18 YM |
199 | ;; macselect.c |
200 | (mac-dnd-known-types mac (repeat string) "22.1") | |
814b36fe YM |
201 | ;; macterm.c |
202 | (mac-control-modifier mac (choice (const :tag "No modifier" nil) | |
203 | (const control) (const meta) | |
204 | (const alt) (const hyper) | |
205 | (const super)) "22.1") | |
206 | (mac-command-modifier mac (choice (const :tag "No modifier" nil) | |
207 | (const control) (const meta) | |
208 | (const alt) (const hyper) | |
209 | (const super)) "22.1") | |
210 | (mac-option-modifier mac (choice (const :tag "No modifier (work as option)" nil) | |
211 | (const control) (const meta) | |
212 | (const alt) (const hyper) | |
213 | (const super)) "22.1") | |
214 | (mac-function-modifier mac | |
215 | (choice (const :tag "No modifier (work as function)" nil) | |
216 | (const control) (const meta) | |
217 | (const alt) (const hyper) | |
218 | (const super)) "22.1") | |
219 | (mac-emulate-three-button-mouse mac | |
220 | (choice (const :tag "No emulation" nil) | |
221 | (const :tag "Option->2, Command->3" t) | |
222 | (const :tag "Command->2, Option->3" reverse)) | |
223 | "22.1") | |
224 | (mac-wheel-button-is-mouse-2 mac boolean "22.1") | |
225 | (mac-pass-command-to-system mac boolean "22.1") | |
226 | (mac-pass-control-to-system mac boolean "22.1") | |
227 | (mac-allow-anti-aliasing mac boolean "22.1") | |
2d4a5c50 YM |
228 | (mac-ts-script-language-on-focus mac |
229 | (choice (const :tag "System default behavior" nil) | |
230 | (const :tag "Restore to script/language used in the last focus frame" t) | |
231 | (cons :tag "Specify script/language" | |
232 | (integer :tag "Script code") | |
233 | (integer :tag "Language code"))) | |
234 | "22.1") | |
5f537e54 | 235 | |
37328bcd DL |
236 | ;; This is not good news because it will use the wrong |
237 | ;; version-specific directories when you upgrade. We need | |
238 | ;; customization of the front of the list, maintaining the standard | |
239 | ;; value intact at the back. | |
71296446 | 240 | ;;; (load-path environment |
37328bcd DL |
241 | ;;; (repeat (choice :tag "[Current dir?]" |
242 | ;;; :format "%[Current dir?%] %v" | |
243 | ;;; (const :tag " current dir" nil) | |
244 | ;;; (directory :format "%v")))) | |
1444b0c0 | 245 | ;; minibuf.c |
1444b0c0 | 246 | (enable-recursive-minibuffers minibuffer boolean) |
408f56b2 | 247 | (history-length minibuffer |
6671cab3 MR |
248 | (choice (const :tag "Infinite" t) integer) |
249 | "22.1") | |
250 | (history-delete-duplicates minibuffer boolean "22.1") | |
8f62f2b8 MB |
251 | (minibuffer-prompt-properties |
252 | minibuffer | |
253 | (list | |
254 | (checklist :inline t | |
255 | (const :tag "Read-Only" | |
256 | :doc "Prevent prompt from being modified" | |
257 | :format "%t%n%h" | |
258 | :inline t | |
259 | (read-only t)) | |
c9133fa6 | 260 | (const :tag "Don't Enter" |
8f62f2b8 MB |
261 | :doc "Prevent point from ever entering prompt" |
262 | :format "%t%n%h" | |
263 | :inline t | |
264 | (point-entered minibuffer-avoid-prompt))) | |
265 | (repeat :inline t | |
266 | :tag "Other Properties" | |
267 | (list :inline t | |
268 | :format "%v" | |
269 | (symbol :tag "Property") | |
ecf5279a DL |
270 | (sexp :tag "Value")))) |
271 | "21.1") | |
1444b0c0 | 272 | (minibuffer-auto-raise minibuffer boolean) |
ecf5279a | 273 | ;; options property set at end |
a8a1b05d DL |
274 | (read-buffer-function minibuffer |
275 | (choice (const nil) | |
276 | (function-item iswitchb-read-buffer) | |
277 | function)) | |
b78fba02 EZ |
278 | ;; msdos.c |
279 | (dos-unsupported-char-glyph display integer) | |
1444b0c0 | 280 | ;; process.c |
4883633e | 281 | (delete-exited-processes processes-basics boolean) |
1444b0c0 PA |
282 | ;; syntax.c |
283 | (parse-sexp-ignore-comments editing-basics boolean) | |
284 | (words-include-escapes editing-basics boolean) | |
6b61353c KH |
285 | (open-paren-in-column-0-is-defun-start editing-basics boolean |
286 | "21.1") | |
98e071b5 SM |
287 | ;; term.c |
288 | (visible-cursor cursor boolean "22.1") | |
0f08b956 LT |
289 | ;; undo.c |
290 | (undo-limit undo integer) | |
291 | (undo-strong-limit undo integer) | |
292 | (undo-outer-limit undo | |
293 | (choice integer | |
294 | (const :tag "No limit" | |
295 | :format "%t\n%d" | |
296 | :doc | |
297 | "With this choice, \ | |
298 | the undo info for the current command never gets discarded. | |
299 | This should only be chosen under exceptional circumstances, | |
300 | since it could result in memory overflow and make Emacs crash." | |
301 | nil)) | |
302 | "22.1") | |
1444b0c0 | 303 | ;; window.c |
4cb464b7 | 304 | (temp-buffer-show-function windows (choice (const nil) function)) |
74f54b54 | 305 | (next-screen-context-lines windows integer) |
1444b0c0 PA |
306 | (window-min-height windows integer) |
307 | (window-min-width windows integer) | |
7704b6b1 KS |
308 | (scroll-preserve-screen-position |
309 | windows (choice | |
310 | (const :tag "Off (nil)" :value nil) | |
311 | (const :tag "Full screen (t)" :value t) | |
6671cab3 | 312 | (other :tag "Always" 1)) "22.1") |
1444b0c0 PA |
313 | ;; xdisp.c |
314 | (scroll-step windows integer) | |
ccbb360e RS |
315 | (scroll-conservatively windows integer) |
316 | (scroll-margin windows integer) | |
4e371ce8 EZ |
317 | (hscroll-margin windows integer "22.1") |
318 | (hscroll-step windows number "22.1") | |
1444b0c0 | 319 | (truncate-partial-width-windows display boolean) |
e45db0fb MR |
320 | (mode-line-inverse-video mode-line boolean) |
321 | (mode-line-in-non-selected-windows mode-line boolean "22.1") | |
37328bcd DL |
322 | (line-number-display-limit display |
323 | (choice integer | |
324 | (const :tag "No limit" nil))) | |
6671cab3 | 325 | (line-number-display-limit-width display integer "22.1") |
1444b0c0 PA |
326 | (highlight-nonselected-windows display boolean) |
327 | (message-log-max debug (choice (const :tag "Disable" nil) | |
328 | (integer :menu-tag "lines" | |
329 | :format "%v") | |
79221864 | 330 | (other :tag "Unlimited" t))) |
daba3e25 | 331 | (unibyte-display-via-language-environment mule boolean) |
bf247b6e | 332 | (blink-cursor-alist cursor alist "22.1") |
03c25271 | 333 | (overline-margin display integer "22.1") |
2a3bd2e1 | 334 | (underline-minimum-offset display integer "23.1") |
612c16f1 CY |
335 | (mouse-autoselect-window |
336 | display (choice | |
337 | (const :tag "Off (nil)" :value nil) | |
338 | (const :tag "Immediate" :value t) | |
339 | (number :tag "Delay by secs" :value 0.5)) "22.1") | |
e5f51929 | 340 | ;; xfaces.c |
6671cab3 | 341 | (scalable-fonts-allowed display boolean "22.1") |
1444b0c0 PA |
342 | ;; xfns.c |
343 | (x-bitmap-file-path installation | |
0849a37e | 344 | (repeat (directory :format "%v"))) |
c4823934 | 345 | (x-gtk-use-old-file-dialog menu boolean "22.1") |
91b5a204 | 346 | (x-gtk-show-hidden-files menu boolean "22.1") |
c4823934 | 347 | (x-gtk-file-dialog-help-text menu boolean "22.1") |
0dd95b49 | 348 | (x-gtk-whole-detached-tool-bar x boolean "22.1") |
0849a37e | 349 | ;; xterm.c |
4e371ce8 | 350 | (x-use-underline-position-properties display boolean "22.1") |
03c25271 | 351 | (x-underline-at-descent-line display boolean "22.1") |
37328bcd | 352 | (x-stretch-cursor display boolean "21.1"))) |
a200d998 | 353 | this symbol group type standard version native-p |
4883633e RS |
354 | ;; This function turns a value |
355 | ;; into an expression which produces that value. | |
356 | (quoter (lambda (sexp) | |
357 | (if (or (memq sexp '(t nil)) | |
017266f8 | 358 | (keywordp sexp) |
4883633e RS |
359 | (and (listp sexp) |
360 | (memq (car sexp) '(lambda))) | |
361 | (stringp sexp) | |
37328bcd | 362 | (numberp sexp)) |
4883633e RS |
363 | sexp |
364 | (list 'quote sexp))))) | |
71296446 | 365 | (while all |
1444b0c0 PA |
366 | (setq this (car all) |
367 | all (cdr all) | |
368 | symbol (nth 0 this) | |
369 | group (nth 1 this) | |
00377857 | 370 | type (nth 2 this) |
37328bcd | 371 | version (nth 3 this) |
a200d998 RS |
372 | ;; If we did not specify any standard value expression above, |
373 | ;; use the current value as the standard value. | |
374 | standard (if (nthcdr 4 this) | |
375 | (nth 4 this) | |
720f4c79 | 376 | (when (default-boundp symbol) |
92233e7e | 377 | (funcall quoter (default-value symbol)))) |
00377857 EZ |
378 | ;; Don't complain about missing variables which are |
379 | ;; irrelevant to this platform. | |
380 | native-p (save-match-data | |
381 | (cond | |
382 | ((string-match "\\`dos-" (symbol-name symbol)) | |
383 | (eq system-type 'ms-dos)) | |
384 | ((string-match "\\`w32-" (symbol-name symbol)) | |
385 | (eq system-type 'windows-nt)) | |
feba0cd6 | 386 | ((string-match "\\`mac-" (symbol-name symbol)) |
ce00d093 | 387 | (featurep 'mac-carbon)) |
2702394e | 388 | ((string-match "\\`x-.*gtk" (symbol-name symbol)) |
79cf2123 | 389 | (featurep 'gtk)) |
197a09bf EZ |
390 | ((string-match "\\`x-" (symbol-name symbol)) |
391 | (fboundp 'x-create-frame)) | |
6eb33acb EZ |
392 | ((string-match "selection" (symbol-name symbol)) |
393 | (fboundp 'x-selection-exists-p)) | |
394 | ((string-match "fringe" (symbol-name symbol)) | |
395 | (fboundp 'define-fringe-bitmap)) | |
00377857 | 396 | (t t)))) |
1444b0c0 PA |
397 | (if (not (boundp symbol)) |
398 | ;; If variables are removed from C code, give an error here! | |
00377857 EZ |
399 | (and native-p |
400 | (message "Note, built-in variable `%S' not bound" symbol)) | |
4883633e RS |
401 | ;; Save the standard value, unless we already did. |
402 | (or (get symbol 'standard-value) | |
a200d998 | 403 | (put symbol 'standard-value (list standard))) |
4883633e RS |
404 | ;; If this is NOT while dumping Emacs, |
405 | ;; set up the rest of the customization info. | |
406 | (unless purify-flag | |
407 | ;; Add it to the right group. | |
408 | (custom-add-to-group group symbol 'custom-variable) | |
409 | ;; Set the type. | |
37328bcd DL |
410 | (put symbol 'custom-type type) |
411 | (put symbol 'custom-version version))))) | |
4883633e | 412 | |
ecf5279a | 413 | (custom-add-to-group 'iswitchb 'read-buffer-function 'custom-variable) |
6b61353c KH |
414 | (custom-add-to-group 'font-lock 'open-paren-in-column-0-is-defun-start |
415 | 'custom-variable) | |
ecf5279a | 416 | |
4883633e RS |
417 | ;; Record cus-start as loaded |
418 | ;; if we have set up all the info that we can set up. | |
419 | ;; Don't record cus-start as loaded | |
420 | ;; if we have set up only the standard values. | |
421 | (unless purify-flag | |
422 | (provide 'cus-start)) | |
1444b0c0 | 423 | |
c8f1ea76 | 424 | ;; arch-tag: 4502730d-bcb3-4f5e-99a3-a86f2d54af60 |
1cd7adc6 | 425 | ;;; cus-start.el ends here |