annotate lisp/cus-edit.el @ 109614:e20f769083f9

* lisp/textmodes/fill.el (justify-current-line): Don't add 1 to nspaces when justifying. It seems useless and harmful for ncols=1.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 02 Aug 2010 12:25:27 +0200
parents 4d8277a44bb4
children 90428e3ef1f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37911
diff changeset
1 ;;; cus-edit.el --- tools for customizing Emacs and Lisp packages
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2 ;;
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
3 ;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106014
diff changeset
4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
5 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
6 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
7 ;; Maintainer: FSF
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
8 ;; Keywords: help, faces
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
9
17521
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
10 ;; This file is part of GNU Emacs.
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94463
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
17521
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94463
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94463
diff changeset
15 ;; (at your option) any later version.
17521
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
16
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
20 ;; GNU General Public License for more details.
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
21
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94463
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
17521
ddce9ecc6f6a (custom-face-set): Don't copy an empty face,
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
24
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
25 ;;; Commentary:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
26 ;;
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
27 ;; This file implements the code to create and edit customize buffers.
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
28 ;;
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
29 ;; See `custom.el'.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
30
18435
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
31 ;; No commands should have names starting with `custom-' because
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
32 ;; that interferes with completion. Use `customize-' for commands
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
33 ;; that the user will run with M-x, and `Custom-' for interactive commands.
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
34
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
35 ;; The identity of a customize option is represented by a Lisp symbol.
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
36 ;; The following values are associated with an option.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
37
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
38 ;; 0. The current value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
39
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
40 ;; This is the value of the option as seen by "the rest of Emacs".
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
41
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
42 ;; Usually extracted by 'default-value', but can be extracted with
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
43 ;; different means if the option symbol has the 'custom-get'
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
44 ;; property. Similarly, set-default (or the 'custom-set' property)
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
45 ;; can set it.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
46
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
47 ;; 1. The widget value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
48
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
49 ;; This is the value shown in the widget in a customize buffer.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
50
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
51 ;; 2. The customized value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
52
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
53 ;; This is the last value given to the option through customize.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
54
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
55 ;; It is stored in the 'customized-value' property of the option, in a
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
56 ;; cons-cell whose car evaluates to the customized value.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
57
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
58 ;; 3. The saved value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
59
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
60 ;; This is last value saved from customize.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
61
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
62 ;; It is stored in the 'saved-value' property of the option, in a
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
63 ;; cons-cell whose car evaluates to the saved value.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
64
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
65 ;; 4. The standard value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
66
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
67 ;; This is the value given in the 'defcustom' declaration.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
68
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
69 ;; It is stored in the 'standard-value' property of the option, in a
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
70 ;; cons-cell whose car evaluates to the standard value.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
71
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
72 ;; 5. The "think" value.
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
73
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
74 ;; This is what customize thinks the current value should be.
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
75
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
76 ;; This is the customized value, if any such value exists, otherwise
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
77 ;; the saved value, if that exists, and as a last resort the standard
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
78 ;; value.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
79
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
80 ;; The reason for storing values unevaluated: This is so you can have
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
81 ;; values that depend on the environment. For example, you can have a
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
82 ;; variable that has one value when Emacs is running under a window
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
83 ;; system, and another value on a tty. Since the evaluation is only done
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
84 ;; when the variable is first initialized, this is only relevant for the
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
85 ;; saved (and standard) values, but affect others values for
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
86 ;; compatibility.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
87
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
88 ;; You can see (and modify and save) this unevaluated value by selecting
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
89 ;; "Show Saved Lisp Expression" from the Lisp interface. This will
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
90 ;; give you the unevaluated saved value, if any, otherwise the
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
91 ;; unevaluated standard value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
92
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
93 ;; The possible states for a customize widget are:
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
94
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
95 ;; 0. unknown
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
96
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
97 ;; The state has not been determined yet.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
98
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
99 ;; 1. modified
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
100
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
101 ;; The widget value is different from the current value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
102
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
103 ;; 2. changed
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
104
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
105 ;; The current value is different from the "think" value.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
106
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
107 ;; 3. set
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
108
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
109 ;; The "think" value is the customized value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
110
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
111 ;; 4. saved
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
112
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
113 ;; The "think" value is the saved value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
114
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
115 ;; 5. standard
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
116
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
117 ;; The "think" value is the standard value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
118
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
119 ;; 6. rogue
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
120
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
121 ;; There is no standard value. This means that the variable was
67600
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
122 ;; not defined with defcustom, nor handled in cus-start.el. Most
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
123 ;; standard interactive Custom commands do not let you create a
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
124 ;; Custom buffer containing such variables. However, such Custom
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
125 ;; buffers can be created, for instance, by calling
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
126 ;; `customize-apropos' with a prefix arg or by calling
60296
7090a1e062e2 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60295
diff changeset
127 ;; `customize-option' non-interactively.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
128
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
129 ;; 7. hidden
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
130
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
131 ;; There is no widget value.
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
132
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
133 ;; 8. mismatch
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
134
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
135 ;; The widget value is not valid member of the :type specified for the
60214
7cc86e0f08f6 Comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60034
diff changeset
136 ;; option.
60004
2832745c4aee (custom-buffer-create-internal): Improve help-echo.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
137
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
138 ;;; Code:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
139
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
140 (require 'cus-face)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
141 (require 'wid-edit)
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
142
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
143 (defvar custom-versions-load-alist) ; from cus-load
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
144 (defvar recentf-exclude) ; from recentf.el
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
145
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
146 (condition-case nil
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
147 (require 'cus-load)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
148 (error nil))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
149
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
150 (condition-case nil
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
151 (require 'cus-start)
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
152 (error nil))
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
153
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
154 (put 'custom-define-hook 'custom-type 'hook)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
155 (put 'custom-define-hook 'standard-value '(nil))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
156 (custom-add-to-group 'customize 'custom-define-hook 'custom-variable)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
157
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
158 ;;; Customization Groups.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
159
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
160 (defgroup emacs nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
161 "Customization of the One True Editor."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
162 :link '(custom-manual "(emacs)Top"))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
163
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
164 ;; Most of these groups are stolen from `finder.el',
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
165 (defgroup editing nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
166 "Basic text editing facilities."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
167 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
168
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
169 (defgroup convenience nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
170 "Convenience features for faster editing."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
171 :group 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
172
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
173 (defgroup files nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
174 "Support for editing files."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
175 :group 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
176
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
177 (defgroup wp nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
178 "Support for editing text files."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
179 :tag "Text"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
180 :group 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
181
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
182 (defgroup data nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
183 "Support for editing binary data files."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
184 :group 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
185
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
186 (defgroup abbrev nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
187 "Abbreviation handling, typing shortcuts, macros."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
188 :tag "Abbreviations"
107378
904ccd8f2acb Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 107370
diff changeset
189 :group 'convenience)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
190
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
191 (defgroup matching nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
192 "Various sorts of searching and matching."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
193 :group 'editing)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
194
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
195 (defgroup emulations nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
196 "Emulations of other editors."
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
197 :link '(custom-manual "(emacs)Emulation")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
198 :group 'editing)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
199
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
200 (defgroup mouse nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
201 "Mouse support."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
202 :group 'editing)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
203
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
204 (defgroup outlines nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
205 "Support for hierarchical outlining."
107378
904ccd8f2acb Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 107370
diff changeset
206 :group 'wp)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
207
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
208 (defgroup external nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
209 "Interfacing to external utilities."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
210 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
211
107379
3c0cd76e49ff Fix last change to use existing comm Custom group instead of `net'.
Chong Yidong <cyd@stupidchicken.com>
parents: 107378
diff changeset
212 (defgroup comm nil
3c0cd76e49ff Fix last change to use existing comm Custom group instead of `net'.
Chong Yidong <cyd@stupidchicken.com>
parents: 107378
diff changeset
213 "Communications, networking, and remote access to files."
3c0cd76e49ff Fix last change to use existing comm Custom group instead of `net'.
Chong Yidong <cyd@stupidchicken.com>
parents: 107378
diff changeset
214 :tag "Communication"
107378
904ccd8f2acb Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 107370
diff changeset
215 :group 'emacs)
904ccd8f2acb Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 107370
diff changeset
216
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
217 (defgroup processes nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
218 "Process, subshell, compilation, and job control support."
107378
904ccd8f2acb Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 107370
diff changeset
219 :group 'external)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
220
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
221 (defgroup programming nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
222 "Support for programming in other languages."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
223 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
224
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
225 (defgroup languages nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
226 "Specialized modes for editing programming languages."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
227 :group 'programming)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
228
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
229 (defgroup lisp nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
230 "Lisp support, including Emacs Lisp."
66957
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
231 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
232 :group 'languages
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
233 :group 'development)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
234
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
235 (defgroup c nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
236 "Support for the C language and related languages."
66957
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
237 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
238 :link '(custom-manual "(ccmode)")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
239 :group 'languages)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
240
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
241 (defgroup tools nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
242 "Programming tools."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
243 :group 'programming)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
244
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
245 (defgroup applications nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
246 "Applications written in Emacs."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
247 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
248
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
249 (defgroup calendar nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
250 "Calendar and time management support."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
251 :group 'applications)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
252
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
253 (defgroup mail nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
254 "Modes for electronic-mail handling."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
255 :group 'applications)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
256
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
257 (defgroup news nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
258 "Support for netnews reading and posting."
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
259 :link '(custom-manual "(gnus)")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
260 :group 'applications)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
261
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
262 (defgroup games nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
263 "Games, jokes and amusements."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
264 :group 'applications)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
265
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
266 (defgroup development nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
267 "Support for further development of Emacs."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
268 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
269
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
270 (defgroup docs nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
271 "Support for Emacs documentation."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
272 :group 'development)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
273
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
274 (defgroup extensions nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
275 "Emacs Lisp language extensions."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
276 :group 'development)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
277
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
278 (defgroup internal nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
279 "Code for Emacs internals, build process, defaults."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
280 :group 'development)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
281
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
282 (defgroup maint nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
283 "Maintenance aids for the Emacs development group."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
284 :tag "Maintenance"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
285 :group 'development)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
286
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
287 (defgroup environment nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
288 "Fitting Emacs with its environment."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
289 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
290
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
291 (defgroup hardware nil
107167
f6b8c73548b3 Minor tweaks to custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
292 "Support for interfacing with miscellaneous hardware."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
293 :group 'environment)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
294
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
295 (defgroup terminals nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
296 "Support for terminal types."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
297 :group 'environment)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
298
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
299 (defgroup unix nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
300 "Front-ends/assistants for, or emulators of, UNIX features."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
301 :group 'environment)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
302
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
303 (defgroup i18n nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
304 "Internationalization and alternate character-set support."
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
305 :link '(custom-manual "(emacs)International")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
306 :group 'environment
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
307 :group 'editing)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
308
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
309 (defgroup x nil
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
310 "The X Window system."
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
311 :group 'environment)
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
312
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
313 (defgroup frames nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
314 "Support for Emacs frames and window systems."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
315 :group 'environment)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
316
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
317 (defgroup tex nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
318 "Code related to the TeX formatter."
66957
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
319 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
320 :group 'wp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
321
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
322 (defgroup faces nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
323 "Support for multiple fonts."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
324 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
325
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
326 (defgroup help nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
327 "Support for on-line help systems."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
328 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
329
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
330 (defgroup multimedia nil
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
331 "Non-textual support, specifically images and sound."
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
332 :group 'emacs)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
333
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
334 (defgroup local nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
335 "Code local to your site."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
336 :group 'emacs)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
337
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
338 (defgroup customize '((widgets custom-group))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
339 "Customization of the Customization support."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
340 :prefix "custom-"
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
341 :group 'help)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
342
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
343 (defgroup custom-faces nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
344 "Faces used by customize."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
345 :group 'customize
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
346 :group 'faces)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
347
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
348 (defgroup custom-browse nil
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
349 "Control customize browser."
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
350 :prefix "custom-"
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
351 :group 'customize)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
352
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
353 (defgroup custom-buffer nil
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
354 "Control customize buffers."
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
355 :prefix "custom-"
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
356 :group 'customize)
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
357
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
358 (defgroup custom-menu nil
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
359 "Control customize menus."
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
360 :prefix "custom-"
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
361 :group 'customize)
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
362
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
363 (defgroup alloc nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
364 "Storage allocation and gc for GNU Emacs Lisp interpreter."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
365 :tag "Storage Allocation"
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
366 :group 'internal)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
367
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
368 (defgroup undo nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
369 "Undoing changes in buffers."
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
370 :link '(custom-manual "(emacs)Undo")
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
371 :group 'editing)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
372
72877
bbdd54e72794 (mode-line): Renamed from modeline. All uses changed.
Richard M. Stallman <rms@gnu.org>
parents: 72715
diff changeset
373 (defgroup mode-line nil
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
374 "Content of the modeline."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
375 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
376
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
377 (defgroup editing-basics nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
378 "Most basic editing facilities."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
379 :group 'editing)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
380
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
381 (defgroup display nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
382 "How characters are displayed in buffers."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
383 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
384
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
385 (defgroup execute nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
386 "Executing external commands."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
387 :group 'processes)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
388
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
389 (defgroup installation nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
390 "The Emacs installation."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
391 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
392
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
393 (defgroup dired nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
394 "Directory editing."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
395 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
396
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
397 (defgroup limits nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
398 "Internal Emacs limits."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
399 :group 'internal)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
400
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
401 (defgroup debug nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
402 "Debugging Emacs itself."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
403 :group 'development)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
404
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
405 (defgroup keyboard nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
406 "Input from the keyboard."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
407 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
408
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
409 (defgroup mouse nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
410 "Input from the mouse."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
411 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
412
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
413 (defgroup menu nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
414 "Input from the menus."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
415 :group 'environment)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
416
61475
89d32002193d * cus-edit.el (dnd): New group.
Jan Djärv <jan.h.d@swipnet.se>
parents: 61396
diff changeset
417 (defgroup dnd nil
89d32002193d * cus-edit.el (dnd): New group.
Jan Djärv <jan.h.d@swipnet.se>
parents: 61396
diff changeset
418 "Handling data from drag and drop."
89d32002193d * cus-edit.el (dnd): New group.
Jan Djärv <jan.h.d@swipnet.se>
parents: 61396
diff changeset
419 :group 'environment)
89d32002193d * cus-edit.el (dnd): New group.
Jan Djärv <jan.h.d@swipnet.se>
parents: 61396
diff changeset
420
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
421 (defgroup auto-save nil
77171
6540b56c4b3d (minibuffer, auto-save): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 76338
diff changeset
422 "Preventing accidental loss of data."
18320
bb83860447d0 (files): New group `files'.
Richard M. Stallman <rms@gnu.org>
parents: 18258
diff changeset
423 :group 'files)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
424
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
425 (defgroup processes-basics nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
426 "Basic stuff dealing with processes."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
427 :group 'processes)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
428
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
429 (defgroup mule nil
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
430 "MULE Emacs internationalization."
18053
941f5d1a241e (cus-start): Require cus-start.
Richard M. Stallman <rms@gnu.org>
parents: 18033
diff changeset
431 :group 'i18n)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
432
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
433 (defgroup windows nil
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
434 "Windows within a frame."
52281
5d588ea856f6 Add some :links.
Dave Love <fx@gnu.org>
parents: 51561
diff changeset
435 :link '(custom-manual "(emacs)Windows")
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
436 :group 'environment)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
437
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
438 ;;; Custom mode keymaps
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
439
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
440 (defvar custom-mode-map
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
441 ;; This keymap should be dense, but a dense keymap would prevent inheriting
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
442 ;; "\r" bindings from the parent map.
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
443 ;; Actually, this misfeature of dense keymaps was fixed on 2001-11-26.
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
444 (let ((map (make-keymap)))
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
445 (set-keymap-parent map widget-keymap)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
446 (define-key map [remap self-insert-command] 'Custom-no-edit)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
447 (define-key map "\^m" 'Custom-newline)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
448 (define-key map " " 'scroll-up)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
449 (define-key map "\177" 'scroll-down)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
450 (define-key map "\C-c\C-c" 'Custom-set)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
451 (define-key map "\C-x\C-s" 'Custom-save)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
452 (define-key map "q" 'Custom-buffer-done)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
453 (define-key map "u" 'Custom-goto-parent)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
454 (define-key map "n" 'widget-forward)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
455 (define-key map "p" 'widget-backward)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
456 map)
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
457 "Keymap for `Custom-mode'.")
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
458
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
459 (defvar custom-mode-link-map
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
460 (let ((map (make-keymap)))
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
461 (set-keymap-parent map custom-mode-map)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
462 (define-key map [down-mouse-2] nil)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
463 (define-key map [down-mouse-1] 'mouse-drag-region)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
464 (define-key map [mouse-2] 'widget-move-and-invoke)
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
465 map)
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
466 "Local keymap for links in `Custom-mode'.")
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
467
86232
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
468 (defvar custom-field-keymap
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
469 (let ((map (copy-keymap widget-field-keymap)))
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
470 (define-key map "\C-c\C-c" 'Custom-set)
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
471 (define-key map "\C-x\C-s" 'Custom-save)
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
472 map)
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
473 "Keymap used inside editable fields in customization buffers.")
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
474
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
475 (widget-put (get 'editable-field 'widget-type) :keymap custom-field-keymap)
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
476
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
477 ;;; Utilities.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
478
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
479 (defun custom-split-regexp-maybe (regexp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
480 "If REGEXP is a string, split it to a list at `\\|'.
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
481 You can get the original back from the result with:
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
482 (mapconcat 'identity result \"\\|\")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
483
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
484 IF REGEXP is not a string, return it unchanged."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
485 (if (stringp regexp)
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
486 (split-string regexp "\\\\|")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
487 regexp))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
488
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
489 (defun custom-variable-prompt ()
49104
b74a6560ecbb (custom-variable-prompt): Doc change. Use custom-variable-p.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49013
diff changeset
490 "Prompt for a custom variable, defaulting to the variable at point.
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
491 Return a list suitable for use in `interactive'."
66957
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
492 (let* ((v (variable-at-point))
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
493 (default (and (symbolp v) (custom-variable-p v) (symbol-name v)))
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
494 (enable-recursive-minibuffers t)
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
495 val)
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
496 (setq val (completing-read
67744
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
497 (if default (format "Customize variable (default %s): " default)
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
498 "Customize variable: ")
66957
38c5bc4332b9 (lisp, c, tex): Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 66941
diff changeset
499 obarray 'custom-variable-p t nil nil default))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
500 (list (if (equal val "")
18085
3da4eaba1fe8 (custom-variable-prompt): Handle variable-at-point returning 0.
Richard M. Stallman <rms@gnu.org>
parents: 18067
diff changeset
501 (if (symbolp v) v nil)
3da4eaba1fe8 (custom-variable-prompt): Handle variable-at-point returning 0.
Richard M. Stallman <rms@gnu.org>
parents: 18067
diff changeset
502 (intern val)))))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
503
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
504 (defun custom-menu-filter (menu widget)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
505 "Convert MENU to the form used by `widget-choose'.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
506 MENU should be in the same format as `custom-variable-menu'.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
507 WIDGET is the widget to apply the filter entries of MENU on."
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
508 (let ((result nil)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
509 current name action filter)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
510 (while menu
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
511 (setq current (car menu)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
512 name (nth 0 current)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
513 action (nth 1 current)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
514 filter (nth 2 current)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
515 menu (cdr menu))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
516 (if (or (null filter) (funcall filter widget))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
517 (push (cons name action) result)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
518 (push name result)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
519 (nreverse result)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
520
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
521 ;;; Unlispify.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
522
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
523 (defvar custom-prefix-list nil
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
524 "List of prefixes that should be ignored by `custom-unlispify'.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
525
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
526 (defcustom custom-unlispify-menu-entries t
73643
b99336492688 (custom-unlispify-menu-entries, custom-unlispify-tag-names,
Juanma Barranquero <lekktu@gmail.com>
parents: 73194
diff changeset
527 "Display menu entries as words instead of symbols if non-nil."
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
528 :group 'custom-menu
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
529 :type 'boolean)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
530
18812
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
531 (defcustom custom-unlispify-remove-prefixes nil
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
532 "Non-nil means remove group prefixes from option names in buffer."
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
533 :group 'custom-menu
43508
c092c3c65251 2002-02-24 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43246
diff changeset
534 :group 'custom-buffer
18812
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
535 :type 'boolean)
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
536
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
537 (defun custom-unlispify-menu-entry (symbol &optional no-suffix)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
538 "Convert SYMBOL into a menu entry."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
539 (cond ((not custom-unlispify-menu-entries)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
540 (symbol-name symbol))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
541 ((get symbol 'custom-tag)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
542 (if no-suffix
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
543 (get symbol 'custom-tag)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
544 (concat (get symbol 'custom-tag) "...")))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
545 (t
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
546 (with-current-buffer (get-buffer-create " *Custom-Work*")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
547 (erase-buffer)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
548 (princ symbol (current-buffer))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
549 (goto-char (point-min))
47168
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
550 ;; FIXME: Boolean variables are not predicates, so they shouldn't
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
551 ;; end with `-p'. -stef
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
552 ;; (when (and (eq (get symbol 'custom-type) 'boolean)
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
553 ;; (re-search-forward "-p\\'" nil t))
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
554 ;; (replace-match "" t t)
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
555 ;; (goto-char (point-min)))
18812
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
556 (if custom-unlispify-remove-prefixes
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
557 (let ((prefixes custom-prefix-list)
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
558 prefix)
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
559 (while prefixes
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
560 (setq prefix (car prefixes))
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
561 (if (search-forward prefix (+ (point) (length prefix)) t)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
562 (progn
18812
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
563 (setq prefixes nil)
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
564 (delete-region (point-min) (point)))
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
565 (setq prefixes (cdr prefixes))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
566 (subst-char-in-region (point-min) (point-max) ?- ?\ t)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
567 (capitalize-region (point-min) (point-max))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
568 (unless no-suffix
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
569 (goto-char (point-max))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
570 (insert "..."))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
571 (buffer-string)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
572
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
573 (defcustom custom-unlispify-tag-names t
73643
b99336492688 (custom-unlispify-menu-entries, custom-unlispify-tag-names,
Juanma Barranquero <lekktu@gmail.com>
parents: 73194
diff changeset
574 "Display tag names as words instead of symbols if non-nil."
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
575 :group 'custom-buffer
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
576 :type 'boolean)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
577
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
578 (defun custom-unlispify-tag-name (symbol)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
579 "Convert SYMBOL into a menu entry."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
580 (let ((custom-unlispify-menu-entries custom-unlispify-tag-names))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
581 (custom-unlispify-menu-entry symbol t)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
582
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
583 (defun custom-prefix-add (symbol prefixes)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
584 "Add SYMBOL to list of ignored PREFIXES."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
585 (cons (or (get symbol 'custom-prefix)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
586 (concat (symbol-name symbol) "-"))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
587 prefixes))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
588
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
589 ;;; Guess.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
590
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
591 (defcustom custom-guess-name-alist
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
592 '(("-p\\'" boolean)
71368
7c41e181974c (custom-guess-name-alist): Recognize `-flag'.
Richard M. Stallman <rms@gnu.org>
parents: 70179
diff changeset
593 ("-flag\\'" boolean)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
594 ("-hook\\'" hook)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
595 ("-face\\'" face)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
596 ("-file\\'" file)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
597 ("-function\\'" function)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
598 ("-functions\\'" (repeat function))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
599 ("-list\\'" (repeat sexp))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
600 ("-alist\\'" (repeat (cons sexp sexp))))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
601 "Alist of (MATCH TYPE).
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
602
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
603 MATCH should be a regexp matching the name of a symbol, and TYPE should
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
604 be a widget suitable for editing the value of that symbol. The TYPE
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
605 of the first entry where MATCH matches the name of the symbol will be
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
606 used.
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
607
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
608 This is used for guessing the type of variables not declared with
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
609 customize."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
610 :type '(repeat (group (regexp :tag "Match") (sexp :tag "Type")))
67983
eea3a49a9d6c * cus-edit.el (custom-guess-name-alist, custom-guess-doc-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 67977
diff changeset
611 :group 'custom-buffer)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
612
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
613 (defcustom custom-guess-doc-alist
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
614 '(("\\`\\*?Non-nil " boolean))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
615 "Alist of (MATCH TYPE).
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
616
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
617 MATCH should be a regexp matching a documentation string, and TYPE
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
618 should be a widget suitable for editing the value of a variable with
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
619 that documentation string. The TYPE of the first entry where MATCH
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
620 matches the name of the symbol will be used.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
621
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
622 This is used for guessing the type of variables not declared with
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
623 customize."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
624 :type '(repeat (group (regexp :tag "Match") (sexp :tag "Type")))
67983
eea3a49a9d6c * cus-edit.el (custom-guess-name-alist, custom-guess-doc-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 67977
diff changeset
625 :group 'custom-buffer)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
626
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
627 (defun custom-guess-type (symbol)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
628 "Guess a widget suitable for editing the value of SYMBOL.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
629 This is done by matching SYMBOL with `custom-guess-name-alist' and
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
630 if that fails, the doc string with `custom-guess-doc-alist'."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
631 (let ((name (symbol-name symbol))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
632 (names custom-guess-name-alist)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
633 current found)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
634 (while names
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
635 (setq current (car names)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
636 names (cdr names))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
637 (when (string-match (nth 0 current) name)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
638 (setq found (nth 1 current)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
639 names nil)))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
640 (unless found
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
641 (let ((doc (documentation-property symbol 'variable-documentation))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
642 (docs custom-guess-doc-alist))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
643 (when doc
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
644 (while docs
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
645 (setq current (car docs)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
646 docs (cdr docs))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
647 (when (string-match (nth 0 current) doc)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
648 (setq found (nth 1 current)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
649 docs nil))))))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
650 found))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
651
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
652 ;;; Sorting.
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
653
74921
2472ac8d27d2 (custom-browse-sort-alphabetically, custom-buffer-sort-alphabetically)
Richard M. Stallman <rms@gnu.org>
parents: 73942
diff changeset
654 ;;;###autoload
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
655 (defcustom custom-browse-sort-alphabetically nil
74921
2472ac8d27d2 (custom-browse-sort-alphabetically, custom-buffer-sort-alphabetically)
Richard M. Stallman <rms@gnu.org>
parents: 73942
diff changeset
656 "If non-nil, sort customization group alphabetically in `custom-browse'."
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
657 :type 'boolean
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
658 :group 'custom-browse)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
659
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
660 (defcustom custom-browse-order-groups nil
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
661 "If non-nil, order group members within each customization group.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
662 If `first', order groups before non-groups.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
663 If `last', order groups after non-groups."
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
664 :type '(choice (const first)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
665 (const last)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
666 (const :tag "none" nil))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
667 :group 'custom-browse)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
668
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
669 (defcustom custom-browse-only-groups nil
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
670 "If non-nil, show group members only within each customization group."
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
671 :type 'boolean
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
672 :group 'custom-browse)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
673
74921
2472ac8d27d2 (custom-browse-sort-alphabetically, custom-buffer-sort-alphabetically)
Richard M. Stallman <rms@gnu.org>
parents: 73942
diff changeset
674 ;;;###autoload
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
675 (defcustom custom-buffer-sort-alphabetically t
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
676 "Whether to sort customization groups alphabetically in Custom buffer."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
677 :type 'boolean
107723
d6963128f839 * cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
Chong Yidong <cyd@stupidchicken.com>
parents: 107381
diff changeset
678 :group 'custom-buffer
d6963128f839 * cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
Chong Yidong <cyd@stupidchicken.com>
parents: 107381
diff changeset
679 :version "24.1")
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
680
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
681 (defcustom custom-buffer-order-groups 'last
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
682 "If non-nil, order group members within each customization group.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
683 If `first', order groups before non-groups.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
684 If `last', order groups after non-groups."
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
685 :type '(choice (const first)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
686 (const last)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
687 (const :tag "none" nil))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
688 :group 'custom-buffer)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
689
74921
2472ac8d27d2 (custom-browse-sort-alphabetically, custom-buffer-sort-alphabetically)
Richard M. Stallman <rms@gnu.org>
parents: 73942
diff changeset
690 ;;;###autoload
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
691 (defcustom custom-menu-sort-alphabetically nil
74921
2472ac8d27d2 (custom-browse-sort-alphabetically, custom-buffer-sort-alphabetically)
Richard M. Stallman <rms@gnu.org>
parents: 73942
diff changeset
692 "If non-nil, sort each customization group alphabetically in menus."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
693 :type 'boolean
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
694 :group 'custom-menu)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
695
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
696 (defcustom custom-menu-order-groups 'first
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
697 "If non-nil, order group members within each customization group.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
698 If `first', order groups before non-groups.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
699 If `last', order groups after non-groups."
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
700 :type '(choice (const first)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
701 (const last)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
702 (const :tag "none" nil))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
703 :group 'custom-menu)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
704
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104988
diff changeset
705 ;;;###autoload (add-hook 'same-window-regexps (purecopy "\\`\\*Customiz.*\\*\\'"))
22332
7ad747c6c5a9 (customize-group, customize-group-other-window)
Karl Heuer <kwzh@gnu.org>
parents: 22068
diff changeset
706
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
707 (defun custom-sort-items (items sort-alphabetically order-groups)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
708 "Return a sorted copy of ITEMS.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
709 ITEMS should be a `custom-group' property.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
710 If SORT-ALPHABETICALLY non-nil, sort alphabetically.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
711 If ORDER-GROUPS is `first' order groups before non-groups, if `last' order
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
712 groups after non-groups, if nil do not order groups at all."
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
713 (sort (copy-sequence items)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
714 (lambda (a b)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
715 (let ((typea (nth 1 a)) (typeb (nth 1 b))
28568
cfff869d8a3d (custom-sort-items): Avoid symbol-name with new
Dave Love <fx@gnu.org>
parents: 28310
diff changeset
716 (namea (nth 0 a)) (nameb (nth 0 b)))
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
717 (cond ((not order-groups)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
718 ;; Since we don't care about A and B order, maybe sort.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
719 (when sort-alphabetically
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
720 (string-lessp namea nameb)))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
721 ((eq typea 'custom-group)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
722 ;; If B is also a group, maybe sort. Otherwise, order A and B.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
723 (if (eq typeb 'custom-group)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
724 (when sort-alphabetically
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
725 (string-lessp namea nameb))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
726 (eq order-groups 'first)))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
727 ((eq typeb 'custom-group)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
728 ;; Since A cannot be a group, order A and B.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
729 (eq order-groups 'last))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
730 (sort-alphabetically
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
731 ;; Since A and B cannot be groups, sort.
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
732 (string-lessp namea nameb)))))))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
733
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
734 ;;; Custom Mode Commands.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
735
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
736 ;; This variable is used by `custom-tool-bar-map', or directly by
99634
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
737 ;; `custom-buffer-create-internal' if `custom-buffer-verbose-help' is non-nil.
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
738
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
739 (defvar custom-commands
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
740 '(("Set for current session" Custom-set t
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
741 "Apply all settings in this buffer to the current session"
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
742 "index"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
743 "Apply")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
744 ("Save for future sessions" Custom-save
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
745 (or custom-file user-init-file)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
746 "Apply all settings in this buffer and save them for future Emacs sessions."
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
747 "save"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
748 "Save")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
749 ("Undo edits" Custom-reset-current t
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
750 "Restore all settings in this buffer to reflect their current values."
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
751 "refresh"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
752 "Undo")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
753 ("Reset to saved" Custom-reset-saved t
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
754 "Restore all settings in this buffer to their saved values (if any)."
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
755 "undo"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
756 "Reset")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
757 ("Erase customizations" Custom-reset-standard
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
758 (or custom-file user-init-file)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
759 "Un-customize all settings in this buffer and save them with standard values."
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
760 "delete"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
761 "Uncustomize")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
762 ("Help for Customize" Custom-help t
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
763 "Get help for using Customize."
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
764 "help"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
765 "Help")
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
766 ("Exit" Custom-buffer-done t "Exit Customize." "exit" "Exit")))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
767
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
768 (defun Custom-help ()
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
769 "Read the node on Easy Customization in the Emacs manual."
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
770 (interactive)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
771 (info "(emacs)Easy Customization"))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
772
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
773 (defvar custom-reset-menu
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
774 '(("Undo Edits" . Custom-reset-current)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
775 ("Reset to Saved" . Custom-reset-saved)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
776 ("Erase Customizations (use standard values)" . Custom-reset-standard))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
777 "Alist of actions for the `Reset' button.
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
778 The key is a string containing the name of the action, the value is a
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
779 Lisp function taking the widget as an element which will be called
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
780 when the action is chosen.")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
781
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
782 (defvar custom-options nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
783 "Customization widgets in the current buffer.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
784
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
785 (defun custom-command-apply (fun query &optional strong-query)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
786 "Call function FUN on all widgets in `custom-options'.
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
787 If there is more than one widget, ask user for confirmation using
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
788 the query string QUERY, using `y-or-n-p' if STRONG-QUERY is nil,
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
789 and `yes-or-no-p' otherwise."
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
790 (if (or (and (= 1 (length custom-options))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
791 (memq (widget-type (car custom-options))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
792 '(custom-variable custom-face)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
793 (funcall (if strong-query 'yes-or-no-p 'y-or-n-p) query))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
794 (progn (mapc fun custom-options) t)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
795 (message "Aborted")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
796 nil))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
797
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
798 (defun Custom-set (&rest ignore)
68086
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
799 "Set the current value of all edited settings in the buffer."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
800 (interactive)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
801 (custom-command-apply
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
802 (lambda (child)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
803 (when (eq (widget-get child :custom-state) 'modified)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
804 (widget-apply child :custom-set)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
805 "Set all values according to this buffer? "))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
806
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
807 (defun Custom-save (&rest ignore)
68086
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
808 "Set all edited settings, then save all settings that have been set.
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
809 If a setting was edited and set before, this saves it. If a
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
810 setting was merely edited before, this sets it then saves it."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
811 (interactive)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
812 (when (custom-command-apply
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
813 (lambda (child)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
814 (when (memq (widget-get child :custom-state)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
815 '(modified set changed rogue))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
816 (widget-apply child :custom-mark-to-save)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
817 "Save all settings in this buffer? " t)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
818 ;; Save changes to buffer and redraw.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
819 (custom-save-all)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
820 (dolist (child custom-options)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
821 (widget-apply child :custom-state-set-and-redraw))))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
822
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
823 (defun custom-reset (widget &optional event)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
824 "Select item from reset menu."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
825 (let* ((completion-ignore-case t)
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
826 (answer (widget-choose "Reset settings"
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
827 custom-reset-menu
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
828 event)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
829 (if answer
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
830 (funcall answer))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
831
18435
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
832 (defun Custom-reset-current (&rest ignore)
68086
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
833 "Reset all edited settings in the buffer to show their current values."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
834 (interactive)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
835 (custom-command-apply
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
836 (lambda (widget)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
837 (if (memq (widget-get widget :custom-state) '(modified changed))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
838 (widget-apply widget :custom-reset-current)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
839 "Reset all settings' buffer text to show current values? "))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
840
18435
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
841 (defun Custom-reset-saved (&rest ignore)
68086
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
842 "Reset all edited or set settings in the buffer to their saved value.
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
843 This also shows the saved values in the buffer."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
844 (interactive)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
845 (custom-command-apply
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
846 (lambda (widget)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
847 (if (memq (widget-get widget :custom-state) '(modified set changed rogue))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
848 (widget-apply widget :custom-reset-saved)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
849 "Reset all settings (current values and buffer text) to saved values? "))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
850
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
851 ;; The next two variables are bound to '(t) by `Custom-reset-standard'
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
852 ;; and `custom-group-reset-standard'. If these variables are nil, both
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
853 ;; `custom-variable-reset-standard' and `custom-face-reset-standard'
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
854 ;; save, reset and redraw the handled widget immediately. Otherwise,
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
855 ;; they add the widget to the corresponding list and leave it to
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
856 ;; `custom-reset-standard-save-and-update' to save, reset and redraw it.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
857 (defvar custom-reset-standard-variables-list nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
858 (defvar custom-reset-standard-faces-list nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
859
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
860 ;; The next function was excerpted from `custom-variable-reset-standard'
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
861 ;; and `custom-face-reset-standard' and is used to avoid calling
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
862 ;; `custom-save-all' repeatedly (and thus saving settings to file one by
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
863 ;; one) when erasing all customizations.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
864 (defun custom-reset-standard-save-and-update ()
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
865 "Save settings and redraw after erasing customizations."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
866 (when (or (and custom-reset-standard-variables-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
867 (not (eq custom-reset-standard-variables-list '(t))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
868 (and custom-reset-standard-faces-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
869 (not (eq custom-reset-standard-faces-list '(t)))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
870 ;; Save settings to file.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
871 (custom-save-all)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
872 ;; Set state of and redraw variables.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
873 (dolist (widget custom-reset-standard-variables-list)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
874 (unless (eq widget t)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
875 (widget-put widget :custom-state 'unknown)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
876 (custom-redraw widget)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
877 ;; Set state of and redraw faces.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
878 (dolist (widget custom-reset-standard-faces-list)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
879 (unless (eq widget t)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
880 (let* ((symbol (widget-value widget))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
881 (child (car (widget-get widget :children)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
882 (value (get symbol 'face-defface-spec))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
883 (comment-widget (widget-get widget :comment-widget)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
884 (put symbol 'face-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
885 (widget-value-set child
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
886 (custom-pre-filter-face-spec
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
887 (list (list t (custom-face-attributes-get
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
888 symbol nil)))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
889 ;; This call manages the comment visibility
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
890 (widget-value-set comment-widget "")
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
891 (custom-face-state-set widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
892 (custom-redraw-magic widget))))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
893
18435
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
894 (defun Custom-reset-standard (&rest ignore)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
895 "Erase all customizations (either current or saved) in current buffer.
67749
1607dd4159f5 (custom-reset-menu, custom-magic-alist, Custom-mode-menu):
Richard M. Stallman <rms@gnu.org>
parents: 67747
diff changeset
896 The immediate result is to restore them to their standard values.
1607dd4159f5 (custom-reset-menu, custom-magic-alist, Custom-mode-menu):
Richard M. Stallman <rms@gnu.org>
parents: 67747
diff changeset
897 This operation eliminates any saved values for the group members,
26625
faf989c7a28e (Custom-reset-standard): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26451
diff changeset
898 making them as if they had never been customized at all."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
899 (interactive)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
900 ;; Bind these temporarily.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
901 (let ((custom-reset-standard-variables-list '(t))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
902 (custom-reset-standard-faces-list '(t)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
903 (custom-command-apply
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
904 (lambda (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
905 (and (or (null (widget-get widget :custom-standard-value))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
906 (widget-apply widget :custom-standard-value))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
907 (memq (widget-get widget :custom-state)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
908 '(modified set changed saved rogue))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
909 (widget-apply widget :custom-mark-to-reset-standard)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
910 "Erase all customizations for settings in this buffer? " t)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
911 (custom-reset-standard-save-and-update)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
912
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
913 ;;; The Customize Commands
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
914
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
915 (defun custom-prompt-variable (prompt-var prompt-val &optional comment)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
916 "Prompt for a variable and a value and return them as a list.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
917 PROMPT-VAR is the prompt for the variable, and PROMPT-VAL is the
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
918 prompt for the value. The %s escape in PROMPT-VAL is replaced with
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
919 the name of the variable.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
920
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
921 If the variable has a `variable-interactive' property, that is used as if
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
922 it were the arg to `interactive' (which see) to interactively read the value.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
923
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
924 If the variable has a `custom-type' property, it must be a widget and the
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
925 `:prompt-value' property of that widget will be used for reading the value.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
926
73643
b99336492688 (custom-unlispify-menu-entries, custom-unlispify-tag-names,
Juanma Barranquero <lekktu@gmail.com>
parents: 73194
diff changeset
927 If optional COMMENT argument is non-nil, also prompt for a comment and return
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
928 it as the third element in the list."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
929 (let* ((var (read-variable prompt-var))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
930 (minibuffer-help-form '(describe-variable var))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
931 (val
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
932 (let ((prop (get var 'variable-interactive))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
933 (type (get var 'custom-type))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
934 (prompt (format prompt-val var)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
935 (unless (listp type)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
936 (setq type (list type)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
937 (cond (prop
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
938 ;; Use VAR's `variable-interactive' property
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
939 ;; as an interactive spec for prompting.
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
940 (call-interactively `(lambda (arg)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
941 (interactive ,prop)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
942 arg)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
943 (type
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
944 (widget-prompt-value type
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
945 prompt
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
946 (if (boundp var)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
947 (symbol-value var))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
948 (not (boundp var))))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
949 (t
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
950 (eval-minibuffer prompt))))))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
951 (if comment
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
952 (list var val
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
953 (read-string "Comment: " (get var 'variable-comment)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
954 (list var val))))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
955
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
956 ;;;###autoload
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
957 (defun customize-set-value (variable value &optional comment)
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
958 "Set VARIABLE to VALUE, and return VALUE. VALUE is a Lisp object.
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
959
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
960 If VARIABLE has a `variable-interactive' property, that is used as if
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
961 it were the arg to `interactive' (which see) to interactively read the value.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
962
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
963 If VARIABLE has a `custom-type' property, it must be a widget and the
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
964 `:prompt-value' property of that widget will be used for reading the value.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
965
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
966 If given a prefix (or a COMMENT argument), also prompt for a comment."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
967 (interactive (custom-prompt-variable "Set variable: "
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
968 "Set %s to value: "
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
969 current-prefix-arg))
49521
c259d8177692 2003-01-29 Didier Verna <didier@xemacs.org>
John Paul Wallington <jpw@pobox.com>
parents: 49300
diff changeset
970
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
971 (cond ((string= comment "")
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
972 (put variable 'variable-comment nil))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
973 (comment
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
974 (put variable 'variable-comment comment)))
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
975 (set variable value))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
976
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
977 ;;;###autoload
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
978 (defun customize-set-variable (variable value &optional comment)
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
979 "Set the default for VARIABLE to VALUE, and return VALUE.
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
980 VALUE is a Lisp object.
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
981
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
982 If VARIABLE has a `custom-set' property, that is used for setting
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
983 VARIABLE, otherwise `set-default' is used.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
984
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
985 If VARIABLE has a `variable-interactive' property, that is used as if
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
986 it were the arg to `interactive' (which see) to interactively read the value.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
987
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
988 If VARIABLE has a `custom-type' property, it must be a widget and the
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
989 `:prompt-value' property of that widget will be used for reading the value.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
990
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
991 If given a prefix (or a COMMENT argument), also prompt for a comment."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
992 (interactive (custom-prompt-variable "Set variable: "
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
993 "Set customized value for %s to: "
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
994 current-prefix-arg))
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
995 (custom-load-symbol variable)
69007
b9e2a1b4b54a * cus-edit.el (customize-set-variable): Push setting to `user' theme.
Chong Yidong <cyd@stupidchicken.com>
parents: 69004
diff changeset
996 (custom-push-theme 'theme-value variable 'user 'set (custom-quote value))
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
997 (funcall (or (get variable 'custom-set) 'set-default) variable value)
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
998 (put variable 'customized-value (list (custom-quote value)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
999 (cond ((string= comment "")
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
1000 (put variable 'variable-comment nil)
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
1001 (put variable 'customized-variable-comment nil))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1002 (comment
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
1003 (put variable 'variable-comment comment)
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1004 (put variable 'customized-variable-comment comment)))
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1005 value)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1006
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1007 ;;;###autoload
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1008 (defun customize-save-variable (variable value &optional comment)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1009 "Set the default for VARIABLE to VALUE, and save it for future sessions.
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1010 Return VALUE.
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1011
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1012 If VARIABLE has a `custom-set' property, that is used for setting
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1013 VARIABLE, otherwise `set-default' is used.
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1014
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1015 If VARIABLE has a `variable-interactive' property, that is used as if
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1016 it were the arg to `interactive' (which see) to interactively read the value.
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1017
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1018 If VARIABLE has a `custom-type' property, it must be a widget and the
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1019 `:prompt-value' property of that widget will be used for reading the value.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1020
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1021 If given a prefix (or a COMMENT argument), also prompt for a comment."
43063
9f236506400a Fix typo in prompt.
Pavel Janík <Pavel@Janik.cz>
parents: 42930
diff changeset
1022 (interactive (custom-prompt-variable "Set and save variable: "
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1023 "Set and save value for %s as: "
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1024 current-prefix-arg))
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1025 (funcall (or (get variable 'custom-set) 'set-default) variable value)
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1026 (put variable 'saved-value (list (custom-quote value)))
67797
7bdbb812b2f9 * custom.el (custom-push-theme): Fix docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 67793
diff changeset
1027 (custom-push-theme 'theme-value variable 'user 'set (custom-quote value))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1028 (cond ((string= comment "")
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1029 (put variable 'variable-comment nil)
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1030 (put variable 'saved-variable-comment nil))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1031 (comment
45244
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1032 (put variable 'variable-comment comment)
3fe5828abc37 (customize-set-value): Rename `var' to `variable' and `val' to `value'.
Pavel Janík <Pavel@Janik.cz>
parents: 45102
diff changeset
1033 (put variable 'saved-variable-comment comment)))
76338
12695d523f37 (customize-save-variable): Clear customized-value property (saved
Chong Yidong <cyd@stupidchicken.com>
parents: 76100
diff changeset
1034 (put variable 'customized-value nil)
12695d523f37 (customize-save-variable): Clear customized-value property (saved
Chong Yidong <cyd@stupidchicken.com>
parents: 76100
diff changeset
1035 (put variable 'customized-variable-comment nil)
43246
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1036 (custom-save-all)
c187056ac630 2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43167
diff changeset
1037 value)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1038
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1039 ;;;###autoload
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1040 (defun customize ()
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1041 "Select a customization buffer which you can use to set user options.
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1042 User options are structured into \"groups\".
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1043 Initially the top-level group `Emacs' and its immediate subgroups
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1044 are shown; the contents of those subgroups are initially hidden."
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1045 (interactive)
17703
cd6ad557fb57 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 17702
diff changeset
1046 (customize-group 'emacs))
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1047
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1048 ;;;###autoload
47823
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1049 (defun customize-mode (mode)
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1050 "Customize options related to the current major mode.
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1051 If a prefix \\[universal-argument] was given (or if the current major mode has no known group),
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1052 then prompt for the MODE to customize."
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1053 (interactive
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1054 (list
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1055 (let ((completion-regexp-list '("-mode\\'"))
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1056 (group (custom-group-of-mode major-mode)))
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1057 (if (and group (not current-prefix-arg))
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1058 major-mode
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1059 (intern
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1060 (completing-read (if group
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1061 (format "Major mode (default %s): " major-mode)
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1062 "Major mode: ")
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1063 obarray
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1064 'custom-group-of-mode
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1065 t nil nil (if group (symbol-name major-mode))))))))
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1066 (customize-group (custom-group-of-mode mode)))
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1067
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1068 (defun customize-read-group ()
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1069 (let ((completion-ignore-case t))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1070 (completing-read "Customize group (default emacs): "
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1071 obarray
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1072 (lambda (symbol)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1073 (or (and (get symbol 'custom-loads)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1074 (not (get symbol 'custom-autoload)))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1075 (get symbol 'custom-group)))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1076 t)))
47823
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1077
4649d9cb92dd (customize-mode): New command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47809
diff changeset
1078 ;;;###autoload
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1079 (defun customize-group (&optional group)
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1080 "Customize GROUP, which must be a customization group."
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1081 (interactive (list (customize-read-group)))
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1082 (when (stringp group)
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1083 (if (string-equal "" group)
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1084 (setq group 'emacs)
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1085 (setq group (intern group))))
18359
057bb638549c (custom-nest-groups): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18352
diff changeset
1086 (let ((name (format "*Customize Group: %s*"
057bb638549c (custom-nest-groups): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18352
diff changeset
1087 (custom-unlispify-tag-name group))))
057bb638549c (custom-nest-groups): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18352
diff changeset
1088 (if (get-buffer name)
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1089 (pop-to-buffer name)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1090 (custom-buffer-create
22001
e35aafba190f (customize-group-other-window): Handle groups not
Richard M. Stallman <rms@gnu.org>
parents: 21669
diff changeset
1091 (list (list group 'custom-group))
e35aafba190f (customize-group-other-window): Handle groups not
Richard M. Stallman <rms@gnu.org>
parents: 21669
diff changeset
1092 name
e35aafba190f (customize-group-other-window): Handle groups not
Richard M. Stallman <rms@gnu.org>
parents: 21669
diff changeset
1093 (concat " for group "
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1094 (custom-unlispify-tag-name group))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1095
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1096 ;;;###autoload
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1097 (defun customize-group-other-window (&optional group)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1098 "Customize GROUP, which must be a customization group, in another window."
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1099 (interactive (list (customize-read-group)))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1100 (let ((pop-up-windows t)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1101 (same-window-buffer-names nil)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1102 (same-window-regexps nil))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1103 (customize-group group)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1104
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1105 ;;;###autoload
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1106 (defalias 'customize-variable 'customize-option)
18086
dbae3eb8b351 (customize-option): Renamed from custom-variable.
Richard M. Stallman <rms@gnu.org>
parents: 18085
diff changeset
1107
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1108 ;;;###autoload
18086
dbae3eb8b351 (customize-option): Renamed from custom-variable.
Richard M. Stallman <rms@gnu.org>
parents: 18085
diff changeset
1109 (defun customize-option (symbol)
dbae3eb8b351 (customize-option): Renamed from custom-variable.
Richard M. Stallman <rms@gnu.org>
parents: 18085
diff changeset
1110 "Customize SYMBOL, which must be a user option variable."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1111 (interactive (custom-variable-prompt))
71390
927d95604b99 (customize-option, customize-option-other-window): Error if SYMBOL is nil.
Richard M. Stallman <rms@gnu.org>
parents: 71368
diff changeset
1112 (unless symbol
927d95604b99 (customize-option, customize-option-other-window): Error if SYMBOL is nil.
Richard M. Stallman <rms@gnu.org>
parents: 71368
diff changeset
1113 (error "No variable specified"))
64151
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1114 (let ((basevar (indirect-variable symbol)))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1115 (custom-buffer-create (list (list basevar 'custom-variable))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1116 (format "*Customize Option: %s*"
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1117 (custom-unlispify-tag-name basevar)))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1118 (unless (eq symbol basevar)
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1119 (message "`%s' is an alias for `%s'" symbol basevar))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1120
48975
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1121 ;;;###autoload
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1122 (defalias 'customize-variable-other-window 'customize-option-other-window)
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1123
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1124 ;;;###autoload
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1125 (defun customize-option-other-window (symbol)
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1126 "Customize SYMBOL, which must be a user option variable.
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1127 Show the buffer in another window, but don't select it."
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1128 (interactive (custom-variable-prompt))
71390
927d95604b99 (customize-option, customize-option-other-window): Error if SYMBOL is nil.
Richard M. Stallman <rms@gnu.org>
parents: 71368
diff changeset
1129 (unless symbol
927d95604b99 (customize-option, customize-option-other-window): Error if SYMBOL is nil.
Richard M. Stallman <rms@gnu.org>
parents: 71368
diff changeset
1130 (error "No variable specified"))
64151
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1131 (let ((basevar (indirect-variable symbol)))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1132 (custom-buffer-create-other-window
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1133 (list (list basevar 'custom-variable))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1134 (format "*Customize Option: %s*" (custom-unlispify-tag-name basevar)))
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1135 (unless (eq symbol basevar)
292d83423c40 (customize-option, customize-option-other-window): Make them handle aliases.
Luc Teirlinck <teirllm@auburn.edu>
parents: 64091
diff changeset
1136 (message "`%s' is an alias for `%s'" symbol basevar))))
48975
227f251b919a (customize-group-other-window): Use pop-to-buffer in
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48958
diff changeset
1137
107370
934bc4b20344 * cus-edit.el (customize-changed-options-previous-release): Bump to 23.1.
Glenn Morris <rgm@gnu.org>
parents: 107167
diff changeset
1138 (defvar customize-changed-options-previous-release "23.1"
23105
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1139 "Version for `customize-changed-options' to refer back to by default.")
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1140
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1141 ;; Packages will update this variable, so make it available.
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1142 ;;;###autoload
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1143 (defvar customize-package-emacs-version-alist nil
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1144 "Alist mapping versions of a package to Emacs versions.
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1145 We use this for packages that have their own names, but are released
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1146 as part of Emacs itself.
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1147
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1148 Each elements looks like this:
70021
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1149
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1150 (PACKAGE (PVERSION . EVERSION)...)
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1151
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1152 Here PACKAGE is the name of a package, as a symbol. After
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1153 PACKAGE come one or more elements, each associating a
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1154 package version PVERSION with the first Emacs version
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1155 EVERSION in which it (or a subsequent version of PACKAGE)
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1156 was first released. Both PVERSION and EVERSION are strings.
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1157 PVERSION should be a string that this package used in
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1158 the :package-version keyword for `defcustom', `defgroup',
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1159 and `defface'.
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1160
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1161 For example, the MH-E package updates this alist as follows:
70021
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1162
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1163 (add-to-list 'customize-package-emacs-version-alist
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1164 '(MH-E (\"6.0\" . \"22.1\") (\"6.1\" . \"22.1\")
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1165 (\"7.0\" . \"22.1\") (\"7.1\" . \"22.1\")
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1166 (\"7.2\" . \"22.1\") (\"7.3\" . \"22.1\")
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1167 (\"7.4\" . \"22.1\") (\"8.0\" . \"22.1\")))
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1168
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1169 The value of PACKAGE needs to be unique and it needs to match the
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1170 PACKAGE value appearing in the :package-version keyword. Since
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1171 the user might see the value in a error message, a good choice is
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1172 the official name of the package, such as MH-E or Gnus.")
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1173
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1174 ;;;###autoload
67747
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1175 (defalias 'customize-changed 'customize-changed-options)
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1176
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1177 ;;;###autoload
79190
afa7fa1e71f4 (customize-changed-options): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 79040
diff changeset
1178 (defun customize-changed-options (&optional since-version)
67747
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1179 "Customize all settings whose meanings have changed in Emacs itself.
23105
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1180 This includes new user option variables and faces, and new
67747
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1181 customization groups, as well as older options and faces whose meanings
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1182 or default values have changed since the previous major Emacs release.
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1183
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1184 With argument SINCE-VERSION (a string), customize all settings
3b325979ccee (customize-changed-options-previous-release): Prev release is 21.1.
Richard M. Stallman <rms@gnu.org>
parents: 67745
diff changeset
1185 that were added or redefined since that version."
23105
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1186
69540
a22167168ac4 (customize-changed-options): Mention explicit version number as
Luc Teirlinck <teirllm@auburn.edu>
parents: 69268
diff changeset
1187 (interactive
a22167168ac4 (customize-changed-options): Mention explicit version number as
Luc Teirlinck <teirllm@auburn.edu>
parents: 69268
diff changeset
1188 (list
a22167168ac4 (customize-changed-options): Mention explicit version number as
Luc Teirlinck <teirllm@auburn.edu>
parents: 69268
diff changeset
1189 (read-from-minibuffer
a22167168ac4 (customize-changed-options): Mention explicit version number as
Luc Teirlinck <teirllm@auburn.edu>
parents: 69268
diff changeset
1190 (format "Customize options changed, since version (default %s): "
a22167168ac4 (customize-changed-options): Mention explicit version number as
Luc Teirlinck <teirllm@auburn.edu>
parents: 69268
diff changeset
1191 customize-changed-options-previous-release))))
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1192 (if (equal since-version "")
29762
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1193 (setq since-version nil)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1194 (unless (condition-case nil
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1195 (numberp (read since-version))
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1196 (error nil))
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1197 (signal 'wrong-type-argument (list 'numberp since-version))))
23105
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1198 (unless since-version
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1199 (setq since-version customize-changed-options-previous-release))
49218
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1200
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1201 ;; Load the information for versions since since-version. We use
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1202 ;; custom-load-symbol for this.
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1203 (put 'custom-versions-load-alist 'custom-loads nil)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1204 (dolist (elt custom-versions-load-alist)
49300
b99be2b86231 (customize-changed-options): Undo last doc change.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49218
diff changeset
1205 (if (customize-version-lessp since-version (car elt))
b99be2b86231 (customize-changed-options): Undo last doc change.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49218
diff changeset
1206 (dolist (load (cdr elt))
b99be2b86231 (customize-changed-options): Undo last doc change.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49218
diff changeset
1207 (custom-add-load 'custom-versions-load-alist load))))
49218
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1208 (custom-load-symbol 'custom-versions-load-alist)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1209 (put 'custom-versions-load-alist 'custom-loads nil)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1210
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1211 (let (found)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1212 (mapatoms
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1213 (lambda (symbol)
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1214 (let* ((package-version (get symbol 'custom-package-version))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1215 (version
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1216 (or (and package-version
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1217 (customize-package-emacs-version symbol
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1218 package-version))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1219 (get symbol 'custom-version))))
49218
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1220 (if version
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1221 (when (customize-version-lessp since-version version)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1222 (if (or (get symbol 'custom-group)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1223 (get symbol 'group-documentation))
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1224 (push (list symbol 'custom-group) found))
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1225 (if (custom-variable-p symbol)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1226 (push (list symbol 'custom-variable) found))
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1227 (if (custom-facep symbol)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1228 (push (list symbol 'custom-face) found)))))))
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1229 (if found
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1230 (custom-buffer-create (custom-sort-items found t 'first)
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1231 "*Customize Changed Options*")
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1232 (error "No user option defaults have been changed since Emacs %s"
ddeb57b6c977 (customize-changed-options): Doc addition. Load the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49126
diff changeset
1233 since-version))))
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1234
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1235 (defun customize-package-emacs-version (symbol package-version)
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1236 "Return the Emacs version in which SYMBOL's meaning last changed.
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1237 PACKAGE-VERSION has the form (PACKAGE . VERSION). We use
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1238 `customize-package-emacs-version-alist' to find the version of
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1239 Emacs that is associated with version VERSION of PACKAGE."
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1240 (let (package-versions emacs-version)
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1241 ;; Use message instead of error since we want user to be able to
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1242 ;; see the rest of the symbols even if a package author has
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1243 ;; botched things up.
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1244 (cond ((not (listp package-version))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1245 (message "Invalid package-version value for %s" symbol))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1246 ((setq package-versions (assq (car package-version)
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1247 customize-package-emacs-version-alist))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1248 (setq emacs-version
70021
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1249 (cdr (assoc (cdr package-version) package-versions)))
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1250 (unless emacs-version
70021
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1251 (message "%s version %s not found in %s" symbol
8991a6461375 * cus-edit.el (customize-package-emacs-version-alist): Update
Bill Wohler <wohler@newt.com>
parents: 69922
diff changeset
1252 (cdr package-version)
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1253 "customize-package-emacs-version-alist")))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1254 (t
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1255 (message "Package %s version %s lists no corresponding Emacs version"
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1256 (car package-version)
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
1257 (cdr package-version))))
69922
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1258 emacs-version))
dc1f0ab7e276 * custom.el (defcustom, custom-handle-keyword): Add :package-version
Bill Wohler <wohler@newt.com>
parents: 69624
diff changeset
1259
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1260 (defun customize-version-lessp (version1 version2)
29762
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1261 ;; Why are the versions strings, and given that they are, why aren't
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1262 ;; they converted to numbers and compared as such here? -- fx
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1263
23105
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1264 ;; In case someone made a mistake and left out the quotes
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1265 ;; in the :version value.
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1266 (if (numberp version2)
a47a69af14c8 (customize-version-lessp): Handle a number as VERSION2.
Karl Heuer <kwzh@gnu.org>
parents: 22667
diff changeset
1267 (setq version2 (prin1-to-string version2)))
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1268 (let (major1 major2 minor1 minor2)
29762
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1269 (string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version1)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1270 (setq major1 (read (or (match-string 1 version1)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1271 "0")))
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1272 (setq minor1 (read (or (match-string 3 version1)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1273 "0")))
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1274 (string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version2)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1275 (setq major2 (read (or (match-string 1 version2)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1276 "0")))
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1277 (setq minor2 (read (or (match-string 3 version2)
8c4512ba3671 (customize-changed-options): Check arg.
Dave Love <fx@gnu.org>
parents: 28941
diff changeset
1278 "0")))
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1279 (or (< major1 major2)
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1280 (and (= major1 major2)
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1281 (< minor1 minor2)))))
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
1282
20444
a9fbb6791eb7 (customize-changed-options): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20411
diff changeset
1283 ;;;###autoload
44887
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1284 (defun customize-face (&optional face)
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
1285 "Customize FACE, which should be a face name or nil.
63661
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1286 If FACE is nil, customize all faces. If FACE is actually a
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1287 face-alias, customize the face it is aliased to.
44841
ca88dc883a8d (customize-face-other-window, customize-face):
Gerd Moellmann <gerd@gnu.org>
parents: 44682
diff changeset
1288
ca88dc883a8d (customize-face-other-window, customize-face):
Gerd Moellmann <gerd@gnu.org>
parents: 44682
diff changeset
1289 Interactively, when point is on text which has a face specified,
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
1290 suggest to customize that face, if it's customizable."
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1291 (interactive (list (read-face-name "Customize face" "all faces" t)))
44887
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1292 (if (member face '(nil ""))
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1293 (setq face (face-list)))
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1294 (if (and (listp face) (null (cdr face)))
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1295 (setq face (car face)))
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1296 (if (listp face)
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1297 (custom-buffer-create
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1298 (custom-sort-items
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1299 (mapcar (lambda (s) (list s 'custom-face)) face)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1300 t nil)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1301 "*Customize Faces*")
63661
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1302 ;; If FACE is actually an alias, customize the face it is aliased to.
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1303 (if (get face 'face-alias)
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1304 (setq face (get face 'face-alias)))
44887
01a5b217fd7f (customize-face): Use read-face-name and handle multiple faces.
Richard M. Stallman <rms@gnu.org>
parents: 44846
diff changeset
1305 (unless (facep face)
49013
4a3d5b9c79b9 (customize-group, customize-group-other-window):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48997
diff changeset
1306 (error "Invalid face %S" face))
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1307 (custom-buffer-create
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1308 (list (list face 'custom-face))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1309 (format "*Customize Face: %s*"
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1310 (custom-unlispify-tag-name face)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1311
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1312 ;;;###autoload
44891
5d2dc0b4fd2f Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 44888
diff changeset
1313 (defun customize-face-other-window (&optional face)
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
1314 "Show customization buffer for face FACE in other window.
63661
49d95c194532 (customize-face, customize-face-other-window): Handle face aliases.
Glenn Morris <rgm@gnu.org>
parents: 63249
diff changeset
1315 If FACE is actually a face-alias, customize the face it is aliased to.
44841
ca88dc883a8d (customize-face-other-window, customize-face):
Gerd Moellmann <gerd@gnu.org>
parents: 44682
diff changeset
1316
ca88dc883a8d (customize-face-other-window, customize-face):
Gerd Moellmann <gerd@gnu.org>
parents: 44682
diff changeset
1317 Interactively, when point is on text which has a face specified,
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
1318 suggest to customize that face, if it's customizable."
82193
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1319 (interactive (list (read-face-name "Customize face" "all faces" t)))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1320 (let ((pop-up-windows t)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1321 (same-window-buffer-names nil)
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1322 (same-window-regexps nil))
6037be8575c3 (customize-read-group): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1323 (customize-face face)))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1324
75046
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1325 (defalias 'customize-customized 'customize-unsaved)
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1326
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1327 ;;;###autoload
75046
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1328 (defun customize-unsaved ()
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1329 "Customize all user options set in this session but not saved."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1330 (interactive)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1331 (let ((found nil))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1332 (mapatoms (lambda (symbol)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1333 (and (or (get symbol 'customized-face)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1334 (get symbol 'customized-face-comment))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1335 (custom-facep symbol)
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1336 (push (list symbol 'custom-face) found))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1337 (and (or (get symbol 'customized-value)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1338 (get symbol 'customized-variable-comment))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1339 (boundp symbol)
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1340 (push (list symbol 'custom-variable) found))))
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1341 (if (not found)
75046
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1342 (error "No user options are set but unsaved")
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1343 (custom-buffer-create (custom-sort-items found t nil)
75046
b644db4759fa (customize-unsaved): Renamed from customize-customized.
Richard M. Stallman <rms@gnu.org>
parents: 74921
diff changeset
1344 "*Customize Unsaved*"))))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1345
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1346 ;;;###autoload
50077
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1347 (defun customize-rogue ()
68232
4580b1bedd8a (customize-rogue): Minor doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 68194
diff changeset
1348 "Customize all user variables modified outside customize."
50077
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1349 (interactive)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1350 (let ((found nil))
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1351 (mapatoms (lambda (symbol)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1352 (let ((cval (or (get symbol 'customized-value)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1353 (get symbol 'saved-value)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1354 (get symbol 'standard-value))))
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1355 (when (and cval ;Declared with defcustom.
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1356 (default-boundp symbol) ;Has a value.
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
1357 (not (equal (eval (car cval))
50077
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1358 ;; Which does not match customize.
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1359 (default-value symbol))))
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1360 (push (list symbol 'custom-variable) found)))))
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1361 (if (not found)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1362 (error "No rogue user options")
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1363 (custom-buffer-create (custom-sort-items found t nil)
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1364 "*Customize Rogue*"))))
21135e13f9cd 2003-03-10 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 49556
diff changeset
1365 ;;;###autoload
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1366 (defun customize-saved ()
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1367 "Customize all already saved user options."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1368 (interactive)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1369 (let ((found nil))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1370 (mapatoms (lambda (symbol)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1371 (and (or (get symbol 'saved-face)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1372 (get symbol 'saved-face-comment))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1373 (custom-facep symbol)
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1374 (push (list symbol 'custom-face) found))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1375 (and (or (get symbol 'saved-value)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1376 (get symbol 'saved-variable-comment))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1377 (boundp symbol)
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1378 (push (list symbol 'custom-variable) found))))
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1379 (if (not found )
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1380 (error "No saved user options")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1381 (custom-buffer-create (custom-sort-items found t nil)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1382 "*Customize Saved*"))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1383
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1384 (declare-function apropos-parse-pattern "apropos" (pattern))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1385
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1386 ;;;###autoload
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1387 (defun customize-apropos (pattern &optional type)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1388 "Customize all loaded options, faces and groups matching PATTERN.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1389 PATTERN can be a word, a list of words (separated by spaces),
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1390 or a regexp (using some regexp special characters). If it is a word,
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1391 search for matches for that word as a substring. If it is a list of words,
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1392 search for matches for any two (or more) of those words.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1393
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1394 If TYPE is `options', include only options.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1395 If TYPE is `faces', include only faces.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1396 If TYPE is `groups', include only groups.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1397 If TYPE is t (interactively, with prefix arg), include variables
67677
acbc5122c634 (customize-apropos, customize-apropos-options): Docstring changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67660
diff changeset
1398 that are not customizable options, as well as faces and groups
acbc5122c634 (customize-apropos, customize-apropos-options): Docstring changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67660
diff changeset
1399 \(but we recommend using `apropos-variable' instead)."
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1400 (interactive (list (apropos-read-pattern "symbol") current-prefix-arg))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1401 (require 'apropos)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1402 (apropos-parse-pattern pattern)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1403 (let (found tests)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1404 (mapatoms
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1405 `(lambda (symbol)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1406 (when (string-match apropos-regexp (symbol-name symbol))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1407 ,(if (not (memq type '(faces options)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1408 '(if (get symbol 'custom-group)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1409 (push (list symbol 'custom-group) found)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1410 ,(if (not (memq type '(options groups)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1411 '(if (custom-facep symbol)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1412 (push (list symbol 'custom-face) found)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1413 ,(if (not (memq type '(groups faces)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1414 `(if (and (boundp symbol)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1415 (eq (indirect-variable symbol) symbol)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1416 (or (get symbol 'saved-value)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1417 (custom-variable-p symbol)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1418 ,(if (not (memq type '(nil options)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1419 '(get symbol 'variable-documentation))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1420 (push (list symbol 'custom-variable) found))))))
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1421 (if (not found)
82244
9928f84fd32b (customize-apropos): Make the error message indicate what kind of
Glenn Morris <rgm@gnu.org>
parents: 82225
diff changeset
1422 (error "No %s matching %s"
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1423 (if (eq type t)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1424 "items"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1425 (format "customizable %s"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1426 (if (memq type '(options faces groups))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1427 (symbol-name type)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1428 "items")))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1429 pattern)
71438
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
1430 (custom-buffer-create
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
1431 (custom-sort-items found t custom-buffer-order-groups)
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
1432 "*Customize Apropos*"))))
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1433
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1434 ;;;###autoload
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1435 (defun customize-apropos-options (regexp &optional arg)
67549
9732906a9ef7 (customize-apropos, customize-apropos-options)
Luc Teirlinck <teirllm@auburn.edu>
parents: 67510
diff changeset
1436 "Customize all loaded customizable options matching REGEXP.
99298
225286546090 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 98001
diff changeset
1437 With prefix ARG, include variables that are not customizable options
79655
4feb30a8db36 (custom-add-parent-links): Fill the "Parent documentation" text.
Richard M. Stallman <rms@gnu.org>
parents: 79190
diff changeset
1438 \(but it is better to use `apropos-variable' if you want to find those)."
78394
ec3c22479e73 (customize-apropos, customize-apropos-options)
Richard M. Stallman <rms@gnu.org>
parents: 78377
diff changeset
1439 (interactive "sCustomize options (regexp): \nP")
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1440 (customize-apropos regexp (or arg 'options)))
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1441
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1442 ;;;###autoload
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1443 (defun customize-apropos-faces (regexp)
67549
9732906a9ef7 (customize-apropos, customize-apropos-options)
Luc Teirlinck <teirllm@auburn.edu>
parents: 67510
diff changeset
1444 "Customize all loaded faces matching REGEXP."
78394
ec3c22479e73 (customize-apropos, customize-apropos-options)
Richard M. Stallman <rms@gnu.org>
parents: 78377
diff changeset
1445 (interactive "sCustomize faces (regexp): \n")
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1446 (customize-apropos regexp 'faces))
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1447
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1448 ;;;###autoload
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1449 (defun customize-apropos-groups (regexp)
67549
9732906a9ef7 (customize-apropos, customize-apropos-options)
Luc Teirlinck <teirllm@auburn.edu>
parents: 67510
diff changeset
1450 "Customize all loaded groups matching REGEXP."
78394
ec3c22479e73 (customize-apropos, customize-apropos-options)
Richard M. Stallman <rms@gnu.org>
parents: 78377
diff changeset
1451 (interactive "sCustomize groups (regexp): \n")
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
1452 (customize-apropos regexp 'groups))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1453
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1454 ;;; Buffer.
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1455
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1456 (defcustom custom-buffer-style 'links
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1457 "Control the presentation style for customization buffers.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1458 The value should be a symbol, one of:
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1459
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1460 brackets: groups nest within each other with big horizontal brackets.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1461 links: groups have links to subgroups."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1462 :type '(radio (const brackets)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1463 (const links))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1464 :group 'custom-buffer)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1465
59795
ba8c5b54e390 (custom-bury-buffer): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59760
diff changeset
1466 (defcustom custom-buffer-done-kill nil
99298
225286546090 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 98001
diff changeset
1467 "Non-nil means exiting a Custom buffer should kill it."
59795
ba8c5b54e390 (custom-bury-buffer): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59760
diff changeset
1468 :type 'boolean
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59795
diff changeset
1469 :version "22.1"
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1470 :group 'custom-buffer)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1471
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1472 (defcustom custom-buffer-indent 3
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1473 "Number of spaces to indent nested groups."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1474 :type 'integer
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1475 :group 'custom-buffer)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1476
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1477 (defun custom-get-fresh-buffer (name)
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1478 "Get a fresh new buffer with name NAME.
51381
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1479 If the buffer already exist, clean it up to be like new.
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1480 Beware: it's not quite like new. Good enough for custom, but maybe
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1481 not for everybody."
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1482 ;; To be more complete, we should also kill all permanent-local variables,
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1483 ;; but it's not needed for custom.
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1484 (let ((buf (get-buffer name)))
51429
b107764e9a67 (custom-get-fresh-buffer): Test for nonexistence buffer.
Lute Kamstra <lute@gnu.org>
parents: 51381
diff changeset
1485 (when (and buf (buffer-local-value 'buffer-file-name buf))
51381
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1486 ;; This will check if the file is not saved.
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1487 (kill-buffer buf)
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1488 (setq buf nil))
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1489 (if (null buf)
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1490 (get-buffer-create name)
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1491 (with-current-buffer buf
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1492 (kill-all-local-variables)
51381
a2b5bb57e1c9 (custom-get-fresh-buffer): Be extra paranoid,
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51362
diff changeset
1493 (run-hooks 'kill-buffer-hook)
51561
bed114065e35 (custom-get-fresh-buffer): Kill overlays before erasing the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51429
diff changeset
1494 ;; Delete overlays before erasing the buffer so the overlay hooks
bed114065e35 (custom-get-fresh-buffer): Kill overlays before erasing the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51429
diff changeset
1495 ;; don't get run spuriously when we erase the buffer.
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1496 (let ((ols (overlay-lists)))
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1497 (dolist (ol (nconc (car ols) (cdr ols)))
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1498 (delete-overlay ol)))
51561
bed114065e35 (custom-get-fresh-buffer): Kill overlays before erasing the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51429
diff changeset
1499 (erase-buffer)
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1500 buf))))
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1501
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1502 ;;;###autoload
18571
1beba85e8c62 (custom-buffer-create-internal): New arg DESCRIPTION
Richard M. Stallman <rms@gnu.org>
parents: 18562
diff changeset
1503 (defun custom-buffer-create (options &optional name description)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1504 "Create a buffer containing OPTIONS.
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
1505 Optional NAME is the name of the buffer.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1506 OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1507 SYMBOL is a customization option, and WIDGET is a widget for editing
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1508 that option."
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1509 (pop-to-buffer (custom-get-fresh-buffer (or name "*Customization*")))
18571
1beba85e8c62 (custom-buffer-create-internal): New arg DESCRIPTION
Richard M. Stallman <rms@gnu.org>
parents: 18562
diff changeset
1510 (custom-buffer-create-internal options description))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1511
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1512 ;;;###autoload
18571
1beba85e8c62 (custom-buffer-create-internal): New arg DESCRIPTION
Richard M. Stallman <rms@gnu.org>
parents: 18562
diff changeset
1513 (defun custom-buffer-create-other-window (options &optional name description)
57896
27e0c6aa31c5 (customize-group-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 56161
diff changeset
1514 "Create a buffer containing OPTIONS, and display it in another window.
27e0c6aa31c5 (customize-group-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 56161
diff changeset
1515 The result includes selecting that window.
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
1516 Optional NAME is the name of the buffer.
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1517 OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1518 SYMBOL is a customization option, and WIDGET is a widget for editing
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1519 that option."
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
1520 (unless name (setq name "*Customization*"))
57896
27e0c6aa31c5 (customize-group-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 56161
diff changeset
1521 (let ((pop-up-windows t)
22332
7ad747c6c5a9 (customize-group, customize-group-other-window)
Karl Heuer <kwzh@gnu.org>
parents: 22068
diff changeset
1522 (same-window-buffer-names nil)
7ad747c6c5a9 (customize-group, customize-group-other-window)
Karl Heuer <kwzh@gnu.org>
parents: 22068
diff changeset
1523 (same-window-regexps nil))
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1524 (pop-to-buffer (custom-get-fresh-buffer name))
57896
27e0c6aa31c5 (customize-group-other-window):
Richard M. Stallman <rms@gnu.org>
parents: 56161
diff changeset
1525 (custom-buffer-create-internal options description)))
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1526
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1527 (defcustom custom-reset-button-menu nil
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1528 "If non-nil, only show a single reset button in customize buffers.
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1529 This button will have a menu with all three reset operations."
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1530 :type 'boolean
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1531 :group 'custom-buffer)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
1532
45102
387844a1f703 (custom-buffer-verbose-help): New variable.
Kim F. Storm <storm@cua.dk>
parents: 44912
diff changeset
1533 (defcustom custom-buffer-verbose-help t
387844a1f703 (custom-buffer-verbose-help): New variable.
Kim F. Storm <storm@cua.dk>
parents: 44912
diff changeset
1534 "If non-nil, include explanatory text in the customization buffer."
387844a1f703 (custom-buffer-verbose-help): New variable.
Kim F. Storm <storm@cua.dk>
parents: 44912
diff changeset
1535 :type 'boolean
387844a1f703 (custom-buffer-verbose-help): New variable.
Kim F. Storm <storm@cua.dk>
parents: 44912
diff changeset
1536 :group 'custom-buffer)
387844a1f703 (custom-buffer-verbose-help): New variable.
Kim F. Storm <storm@cua.dk>
parents: 44912
diff changeset
1537
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1538 (defun Custom-buffer-done (&rest ignore)
59795
ba8c5b54e390 (custom-bury-buffer): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59760
diff changeset
1539 "Exit current Custom buffer according to `custom-buffer-done-kill'."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1540 (interactive)
59795
ba8c5b54e390 (custom-bury-buffer): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 59760
diff changeset
1541 (quit-window custom-buffer-done-kill))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1542
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1543 (defvar custom-button nil
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1544 "Face used for buttons in customization buffers.")
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1545
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
1546 (defvar custom-button-mouse nil
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
1547 "Mouse face used for buttons in customization buffers.")
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
1548
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1549 (defvar custom-button-pressed nil
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1550 "Face used for pressed buttons in customization buffers.")
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1551
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1552 (defcustom custom-search-field t
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1553 "If non-nil, show a search field in Custom buffers."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1554 :type 'boolean
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1555 :version "24.1"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1556 :group 'custom-buffer)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1557
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1558 (defcustom custom-raised-buttons (not (equal (face-valid-attribute-values :box)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1559 '(("unspecified" . unspecified))))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1560 "If non-nil, indicate active buttons in a `raised-button' style.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1561 Otherwise use brackets."
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1562 :type 'boolean
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1563 :version "21.1"
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1564 :group 'custom-buffer
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1565 :set (lambda (variable value)
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1566 (custom-set-default variable value)
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1567 (setq custom-button
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1568 (if value 'custom-button 'custom-button-unraised))
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
1569 (setq custom-button-mouse
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
1570 (if value 'custom-button-mouse 'highlight))
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1571 (setq custom-button-pressed
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1572 (if value
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1573 'custom-button-pressed
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
1574 'custom-button-pressed-unraised))))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1575
18571
1beba85e8c62 (custom-buffer-create-internal): New arg DESCRIPTION
Richard M. Stallman <rms@gnu.org>
parents: 18562
diff changeset
1576 (defun custom-buffer-create-internal (options &optional description)
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
1577 (Custom-mode)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1578 (let ((init-file (or custom-file user-init-file)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1579 ;; Insert verbose help at the top of the custom buffer.
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1580 (when custom-buffer-verbose-help
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1581 (widget-insert (if init-file
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1582 "To apply changes, use the Save or Set buttons."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1583 "Custom settings cannot be saved; maybe you started Emacs with `-q'.")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1584 "\nFor details, see ")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1585 (widget-create 'custom-manual
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1586 :tag "Saving Customizations"
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1587 "(emacs)Saving Customizations")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1588 (widget-insert " in the ")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1589 (widget-create 'custom-manual
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1590 :tag "Emacs manual"
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1591 :help-echo "Read the Emacs manual."
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1592 "(emacs)Top")
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1593 (widget-insert "."))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1594 (widget-insert "\n")
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1595
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1596 ;; Insert the search field.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1597 (when custom-search-field
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1598 (widget-insert "\n")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1599 (let* ((echo "Search for custom items")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1600 (search-widget
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1601 (widget-create
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1602 'editable-field
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1603 :size 40 :help-echo echo
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1604 :action `(lambda (widget &optional event)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1605 (customize-apropos (widget-value widget))))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1606 (widget-insert " ")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1607 (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1608 search-widget 'push-button
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1609 :tag "Search"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1610 :help-echo echo :action
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1611 (lambda (widget &optional event)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1612 (customize-apropos (widget-value (widget-get widget :parent)))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1613 (widget-insert "\n")))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1614
99634
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1615 ;; The custom command buttons are also in the toolbar, so for a
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1616 ;; time they were not inserted in the buffer if the toolbar was in use.
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1617 ;; But it can be a little confusing for the buffer layout to
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1618 ;; change according to whether or nor the toolbar is on, not to
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1619 ;; mention that a custom buffer can in theory be created in a
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1620 ;; frame with a toolbar, then later viewed in one without.
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1621 ;; So now the buttons are always inserted in the buffer. (Bug#1326)
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1622 (if custom-buffer-verbose-help
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1623 (widget-insert "
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
1624 Operate on all settings in this buffer:\n"))
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
1625 (let ((button (lambda (tag action active help icon label)
99634
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1626 (widget-insert " ")
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1627 (if (eval active)
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1628 (widget-create 'push-button :tag tag
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1629 :help-echo help :action action))))
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1630 (commands custom-commands))
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1631 (apply button (pop commands)) ; Set for current session
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1632 (apply button (pop commands)) ; Save for future sessions
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1633 (if custom-reset-button-menu
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1634 (progn
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1635 (widget-insert " ")
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1636 (widget-create 'push-button
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1637 :tag "Reset buffer"
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1638 :help-echo "Show a menu with reset operations."
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1639 :mouse-down-action 'ignore
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1640 :action 'custom-reset))
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1641 (widget-insert "\n")
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1642 (apply button (pop commands)) ; Undo edits
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1643 (apply button (pop commands)) ; Reset to saved
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1644 (apply button (pop commands)) ; Erase customization
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1645 (widget-insert " ")
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1646 (pop commands) ; Help (omitted)
4aa56c6b5ac5 (custom-buffer-create-internal): Always insert the
Glenn Morris <rgm@gnu.org>
parents: 99481
diff changeset
1647 (apply button (pop commands)))) ; Exit
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1648 (widget-insert "\n\n"))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1649
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
1650 ;; Now populate the custom buffer.
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1651 (message "Creating customization items...")
28700
a57bafeec17c (Custom-set, Custom-save, Custom-reset-current)
Dave Love <fx@gnu.org>
parents: 28612
diff changeset
1652 (buffer-disable-undo)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1653 (setq custom-options
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1654 (if (= (length options) 1)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1655 (mapcar (lambda (entry)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1656 (widget-create (nth 1 entry)
18139
ee3c0d09dcd3 Synched with 1.9908.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18131
diff changeset
1657 :documentation-shown t
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1658 :custom-state 'unknown
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1659 :tag (custom-unlispify-tag-name
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1660 (nth 0 entry))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1661 :value (nth 0 entry)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1662 options)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1663 (let ((count 0)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1664 (length (length options)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1665 (mapcar (lambda (entry)
33774
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1666 (prog2
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1667 (message "Creating customization items ...%2d%%"
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1668 (/ (* 100.0 count) length))
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1669 (widget-create (nth 1 entry)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1670 :tag (custom-unlispify-tag-name
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1671 (nth 0 entry))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1672 :value (nth 0 entry))
33774
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1673 (setq count (1+ count))
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1674 (unless (eq (preceding-char) ?\n)
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1675 (widget-insert "\n"))
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1676 (widget-insert "\n")))
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
1677 options))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1678 (unless (eq (preceding-char) ?\n)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1679 (widget-insert "\n"))
39153
001cb5cd0de9 (custom-buffer-create-internal): Remove "100%" from
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
1680 (message "Creating customization items ...done")
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
1681 (message "Resetting customization items...")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1682 (unless (eq custom-buffer-style 'tree)
28700
a57bafeec17c (Custom-set, Custom-save, Custom-reset-current)
Dave Love <fx@gnu.org>
parents: 28612
diff changeset
1683 (mapc 'custom-magic-reset custom-options))
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
1684 (message "Resetting customization items...done")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1685 (message "Creating customization setup...")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1686 (widget-setup)
28700
a57bafeec17c (Custom-set, Custom-save, Custom-reset-current)
Dave Love <fx@gnu.org>
parents: 28612
diff changeset
1687 (buffer-enable-undo)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1688 (goto-char (point-min))
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
1689 (message "Creating customization setup...done"))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1690
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1691 ;;; The Tree Browser.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1692
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1693 ;;;###autoload
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1694 (defun customize-browse (&optional group)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1695 "Create a tree browser for the customize hierarchy."
18812
82c80b23fa9d (custom-unlispify-remove-prefixes): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18669
diff changeset
1696 (interactive)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1697 (unless group
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1698 (setq group 'emacs))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1699 (let ((name "*Customize Browser*"))
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
1700 (pop-to-buffer (custom-get-fresh-buffer name)))
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
1701 (Custom-mode)
67745
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1702 (widget-insert (format "\
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1703 %s buttons; type RET or click mouse-1
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1704 on a button to invoke its action.
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1705 Invoke [+] to expand a group, and [-] to collapse an expanded group.\n"
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1706 (if custom-raised-buttons
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1707 "`Raised' text indicates"
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1708 "Square brackets indicate")))
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1709
1c2cd41aeda7 (customize-browse): Reword the top-of-buffer help intro.
Richard M. Stallman <rms@gnu.org>
parents: 67744
diff changeset
1710
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1711 (if custom-browse-only-groups
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1712 (widget-insert "\
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1713 Invoke the [Group] button below to edit that item in another window.\n\n")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1714 (widget-insert "Invoke the ")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1715 (widget-create 'item
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1716 :format "%t"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1717 :tag "[Group]"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1718 :tag-glyph "folder")
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1719 (widget-insert ", ")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1720 (widget-create 'item
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1721 :format "%t"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1722 :tag "[Face]"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1723 :tag-glyph "face")
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1724 (widget-insert ", and ")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1725 (widget-create 'item
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1726 :format "%t"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1727 :tag "[Option]"
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1728 :tag-glyph "option")
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1729 (widget-insert " buttons below to edit that
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1730 item in another window.\n\n"))
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1731 (let ((custom-buffer-style 'tree))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1732 (widget-create 'custom-group
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1733 :custom-last t
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1734 :custom-state 'unknown
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1735 :tag (custom-unlispify-tag-name group)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1736 :value group))
48997
eb9dca992edf (customize-browse): Call `widget-setup'.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48975
diff changeset
1737 (widget-setup)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
1738 (goto-char (point-min)))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1739
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1740 (define-widget 'custom-browse-visibility 'item
20600
323f33e3e92c (custom-browse-visibility): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 20562
diff changeset
1741 "Control visibility of items in the customize tree browser."
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1742 :format "%[[%t]%]"
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1743 :action 'custom-browse-visibility-action)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1744
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1745 (defun custom-browse-visibility-action (widget &rest ignore)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1746 (let ((custom-buffer-style 'tree))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1747 (custom-toggle-parent widget)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1748
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
1749 (define-widget 'custom-browse-group-tag 'custom-group-link
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1750 "Show parent in other window when activated."
18371
a32f9b2c2e0c (custom-add-parent-links): New arg INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 18370
diff changeset
1751 :tag "Group"
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1752 :tag-glyph "folder"
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1753 :action 'custom-browse-group-tag-action)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1754
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1755 (defun custom-browse-group-tag-action (widget &rest ignore)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1756 (let ((parent (widget-get widget :parent)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1757 (customize-group-other-window (widget-value parent))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1758
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
1759 (define-widget 'custom-browse-variable-tag 'custom-group-link
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1760 "Show parent in other window when activated."
18371
a32f9b2c2e0c (custom-add-parent-links): New arg INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 18370
diff changeset
1761 :tag "Option"
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1762 :tag-glyph "option"
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1763 :action 'custom-browse-variable-tag-action)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1764
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1765 (defun custom-browse-variable-tag-action (widget &rest ignore)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1766 (let ((parent (widget-get widget :parent)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1767 (customize-variable-other-window (widget-value parent))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1768
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
1769 (define-widget 'custom-browse-face-tag 'custom-group-link
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1770 "Show parent in other window when activated."
18371
a32f9b2c2e0c (custom-add-parent-links): New arg INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 18370
diff changeset
1771 :tag "Face"
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1772 :tag-glyph "face"
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1773 :action 'custom-browse-face-tag-action)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1774
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1775 (defun custom-browse-face-tag-action (widget &rest ignore)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1776 (let ((parent (widget-get widget :parent)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1777 (customize-face-other-window (widget-value parent))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
1778
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1779 (defconst custom-browse-alist '((" " "space")
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1780 (" | " "vertical")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1781 ("-\\ " "top")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1782 (" |-" "middle")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1783 (" `-" "bottom")))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1784
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1785 (defun custom-browse-insert-prefix (prefix)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1786 "Insert PREFIX. On XEmacs convert it to line graphics."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1787 ;; Fixme: do graphics.
85724
c717580e7817 * cus-edit.el (custom-browse-insert-prefix):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85710
diff changeset
1788 (if nil ; (featurep 'xemacs)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1789 (progn
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1790 (insert "*")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1791 (while (not (string-equal prefix ""))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1792 (let ((entry (substring prefix 0 3)))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1793 (setq prefix (substring prefix 3))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1794 (let ((overlay (make-overlay (1- (point)) (point) nil t nil))
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
1795 (name (nth 1 (assoc entry custom-browse-alist))))
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1796 (overlay-put overlay 'end-glyph (widget-glyph-find name entry))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1797 (overlay-put overlay 'start-open t)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1798 (overlay-put overlay 'end-open t)))))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1799 (insert prefix)))
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
1800
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1801 ;;; Modification of Basic Widgets.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1802 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1803 ;; We add extra properties to the basic widgets needed here. This is
94463
33cbbd41a93f Fix comment typo.
Glenn Morris <rgm@gnu.org>
parents: 93937
diff changeset
1804 ;; fine, as long as we are careful to stay within our own namespace.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1805 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1806 ;; We want simple widgets to be displayed by default, but complex
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1807 ;; widgets to be hidden.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1808
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1809 (widget-put (get 'item 'widget-type) :custom-show t)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1810 (widget-put (get 'editable-field 'widget-type)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1811 :custom-show (lambda (widget value)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1812 (let ((pp (pp-to-string value)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1813 (cond ((string-match "\n" pp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1814 nil)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1815 ((> (length pp) 40)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1816 nil)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1817 (t t)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1818 (widget-put (get 'menu-choice 'widget-type) :custom-show t)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1819
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1820 ;;; The `custom-manual' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1821
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1822 (define-widget 'custom-manual 'info-link
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1823 "Link to the manual entry for this customization option."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1824 :help-echo "Read the manual entry for this option."
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
1825 :keymap custom-mode-link-map
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
1826 :follow-link 'mouse-face
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
1827 :button-face 'custom-link
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
1828 :mouse-face 'highlight
68892
93b583aac002 * wid-edit.el (widget-button-click): Use :pressed-face property
Chong Yidong <cyd@stupidchicken.com>
parents: 68406
diff changeset
1829 :pressed-face 'highlight
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1830 :tag "Manual")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1831
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1832 ;;; The `custom-magic' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1833
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1834 (defgroup custom-magic-faces nil
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1835 "Faces used by the magic button."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1836 :group 'custom-faces
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1837 :group 'custom-buffer)
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1838
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1839 (defface custom-invalid '((((class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1840 (:foreground "yellow1" :background "red1"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1841 (t
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1842 (:weight bold :slant italic :underline t)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1843 "Face used when the customize item is invalid."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1844 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1845 (define-obsolete-face-alias 'custom-invalid-face 'custom-invalid "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1846
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1847 (defface custom-rogue '((((class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1848 (:foreground "pink" :background "black"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1849 (t
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1850 (:underline t)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1851 "Face used when the customize item is not defined for customization."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1852 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1853 (define-obsolete-face-alias 'custom-rogue-face 'custom-rogue "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1854
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1855 (defface custom-modified '((((min-colors 88) (class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1856 (:foreground "white" :background "blue1"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1857 (((class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1858 (:foreground "white" :background "blue"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1859 (t
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1860 (:slant italic :bold)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1861 "Face used when the customize item has been modified."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1862 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1863 (define-obsolete-face-alias 'custom-modified-face 'custom-modified "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1864
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1865 (defface custom-set '((((min-colors 88) (class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1866 (:foreground "blue1" :background "white"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1867 (((class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1868 (:foreground "blue" :background "white"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1869 (t
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1870 (:slant italic)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1871 "Face used when the customize item has been set."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1872 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1873 (define-obsolete-face-alias 'custom-set-face 'custom-set "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1874
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1875 (defface custom-changed '((((min-colors 88) (class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1876 (:foreground "white" :background "blue1"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1877 (((class color))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1878 (:foreground "white" :background "blue"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1879 (t
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1880 (:slant italic)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1881 "Face used when the customize item has been changed."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1882 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1883 (define-obsolete-face-alias 'custom-changed-face 'custom-changed "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1884
67783
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1885 (defface custom-themed '((((min-colors 88) (class color))
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1886 (:foreground "white" :background "blue1"))
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1887 (((class color))
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1888 (:foreground "white" :background "blue"))
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1889 (t
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1890 (:slant italic)))
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1891 "Face used when the customize item has been set by a theme."
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1892 :group 'custom-magic-faces)
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1893
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1894 (defface custom-saved '((t (:underline t)))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1895 "Face used when the customize item has been saved."
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1896 :group 'custom-magic-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
1897 (define-obsolete-face-alias 'custom-saved-face 'custom-saved "22.1")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1898
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
1899 (defconst custom-magic-alist
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
1900 '((nil "#" underline "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1901 UNINITIALIZED, you should not see this.")
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
1902 (unknown "?" italic "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1903 UNKNOWN, you should not see this.")
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
1904 (hidden "-" default "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1905 HIDDEN, invoke \"Show\" in the previous line to show." "\
18362
4655515f51cc (custom-magic-alist) <hidden>: Don't refer to "dots".
Richard M. Stallman <rms@gnu.org>
parents: 18360
diff changeset
1906 group now hidden, invoke \"Show\", above, to show contents.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1907 (invalid "x" custom-invalid "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1908 INVALID, the displayed value cannot be set.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1909 (modified "*" custom-modified "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1910 EDITED, shown value does not take effect until you set or save it." "\
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
1911 something in this group has been edited but not set.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1912 (set "+" custom-set "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1913 SET for current session only." "\
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
1914 something in this group has been set but not saved.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1915 (changed ":" custom-changed "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1916 CHANGED outside Customize; operating on it here may be unreliable." "\
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1917 something in this group has been changed outside customize.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1918 (saved "!" custom-saved "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1919 SAVED and set." "\
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1920 something in this group has been set and saved.")
67783
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1921 (themed "o" custom-themed "\
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1922 THEMED." "\
118df638c3ff 2005-12-23 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 67749
diff changeset
1923 visible group members are all at standard values.")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
1924 (rogue "@" custom-rogue "\
67600
d14352717f67 Introductory comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67549
diff changeset
1925 NO CUSTOMIZATION DATA; not intended to be customized." "\
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1926 something in this group is not prepared for customization.")
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
1927 (standard " " nil "\
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1928 STANDARD." "\
67749
1607dd4159f5 (custom-reset-menu, custom-magic-alist, Custom-mode-menu):
Richard M. Stallman <rms@gnu.org>
parents: 67747
diff changeset
1929 visible group members are all at standard values."))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1930 "Alist of customize option states.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1931 Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1932
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1933 STATE is one of the following symbols:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1934
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1935 `nil'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1936 For internal use, should never occur.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1937 `unknown'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1938 For internal use, should never occur.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1939 `hidden'
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
1940 This item is not being displayed.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1941 `invalid'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1942 This item is modified, but has an invalid form.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1943 `modified'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1944 This item is modified, and has a valid form.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1945 `set'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1946 This item has been set but not saved.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1947 `changed'
60295
53b5914886cc (custom-buffer-create-internal): Slightly reword text at top of Custom
Luc Teirlinck <teirllm@auburn.edu>
parents: 60280
diff changeset
1948 The current value of this item has been changed outside Customize.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1949 `saved'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1950 This item is marked for saving.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1951 `rogue'
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1952 This item has no customization information.
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1953 `standard'
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1954 This item is unchanged from the standard setting.
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1955
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1956 MAGIC is a string used to present that state.
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1957
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1958 FACE is a face used to present the state.
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1959
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1960 ITEM-DESC is a string describing the state for options.
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
1961
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1962 GROUP-DESC is a string describing the state for groups. If this is
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1963 left out, ITEM-DESC will be used.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1964
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1965 The string %c in either description will be replaced with the
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1966 category of the item. These are `group'. `option', and `face'.
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1967
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1968 The list should be sorted most significant first.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1969
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1970 (defcustom custom-magic-show 'long
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
1971 "If non-nil, show textual description of the state.
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
1972 If `long', show a full-line description, not just one word."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1973 :type '(choice (const :tag "no" nil)
22600
2f3b4c74e9a1 (custom-magic-show): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22538
diff changeset
1974 (const long)
2f3b4c74e9a1 (custom-magic-show): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22538
diff changeset
1975 (other :tag "short" short))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1976 :group 'custom-buffer)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1977
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1978 (defcustom custom-magic-show-hidden '(option face)
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
1979 "Control whether the State button is shown for hidden items.
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
1980 The value should be a list with the custom categories where the State
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1981 button should be visible. Possible categories are `group', `option',
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1982 and `face'."
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
1983 :type '(set (const group) (const option) (const face))
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1984 :group 'custom-buffer)
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
1985
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
1986 (defcustom custom-magic-show-button nil
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
1987 "Show a \"magic\" button indicating the state of each customization option."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1988 :type 'boolean
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
1989 :group 'custom-buffer)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1990
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1991 (define-widget 'custom-magic 'default
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1992 "Show and manipulate state for a customization option."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1993 :format "%v"
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
1994 :action 'widget-parent-action
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
1995 :notify 'ignore
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1996 :value-get 'ignore
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1997 :value-create 'custom-magic-value-create
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1998 :value-delete 'widget-children-value-delete)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
1999
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2000 (defun widget-magic-mouse-down-action (widget &optional event)
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2001 ;; Non-nil unless hidden.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2002 (not (eq (widget-get (widget-get (widget-get widget :parent) :parent)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2003 :custom-state)
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2004 'hidden)))
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2005
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2006 (defun custom-magic-value-create (widget)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
2007 "Create compact status report for WIDGET."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2008 (let* ((parent (widget-get widget :parent))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2009 (state (widget-get parent :custom-state))
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2010 (hidden (eq state 'hidden))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2011 (entry (assq state custom-magic-alist))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2012 (magic (nth 1 entry))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2013 (face (nth 2 entry))
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
2014 (category (widget-get parent :custom-category))
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
2015 (text (or (and (eq category 'group)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2016 (nth 4 entry))
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2017 (nth 3 entry)))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
2018 (form (widget-get parent :custom-form))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2019 children)
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2020 (unless (eq state 'hidden)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2021 (while (string-match "\\`\\(.*\\)%c\\(.*\\)\\'" text)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2022 (setq text (concat (match-string 1 text)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2023 (symbol-name category)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2024 (match-string 2 text))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2025 (when (and custom-magic-show
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2026 (or (not hidden)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2027 (memq category custom-magic-show-hidden)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2028 (insert " ")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2029 (when (and (eq category 'group)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2030 (not (and (eq custom-buffer-style 'links)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2031 (> (widget-get parent :custom-level) 1))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2032 (insert-char ?\ (* custom-buffer-indent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2033 (widget-get parent :custom-level))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2034 (push (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2035 widget 'choice-item
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2036 :help-echo "Change the state of this item."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2037 :format (if hidden "%t" "%[%t%]")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2038 :button-prefix 'widget-push-button-prefix
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2039 :button-suffix 'widget-push-button-suffix
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2040 :mouse-down-action 'widget-magic-mouse-down-action
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2041 :tag "State")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2042 children)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2043 (insert ": ")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2044 (let ((start (point)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2045 (if (eq custom-magic-show 'long)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2046 (insert text)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2047 (insert (symbol-name state)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2048 (cond ((eq form 'lisp)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2049 (insert " (lisp)"))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2050 ((eq form 'mismatch)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2051 (insert " (mismatch)")))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2052 (put-text-property start (point) 'face 'custom-state))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2053 (insert "\n"))
18367
f4682a047be1 (custom-magic-value-create):
Richard M. Stallman <rms@gnu.org>
parents: 18364
diff changeset
2054 (when (and (eq category 'group)
f4682a047be1 (custom-magic-value-create):
Richard M. Stallman <rms@gnu.org>
parents: 18364
diff changeset
2055 (not (and (eq custom-buffer-style 'links)
f4682a047be1 (custom-magic-value-create):
Richard M. Stallman <rms@gnu.org>
parents: 18364
diff changeset
2056 (> (widget-get parent :custom-level) 1))))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2057 (insert-char ?\ (* custom-buffer-indent
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2058 (widget-get parent :custom-level))))
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2059 (when custom-magic-show-button
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2060 (when custom-magic-show
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2061 (let ((indent (widget-get parent :indent)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2062 (when indent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2063 (insert-char ? indent))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2064 (push (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2065 widget 'choice-item
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2066 :mouse-down-action 'widget-magic-mouse-down-action
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2067 :button-face face
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2068 :button-prefix ""
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2069 :button-suffix ""
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2070 :help-echo "Change the state."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2071 :format (if hidden "%t" "%[%t%]")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2072 :tag (if (memq form '(lisp mismatch))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2073 (concat "(" magic ")")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2074 (concat "[" magic "]")))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2075 children)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2076 (insert " "))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2077 (widget-put widget :children children))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2078
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2079 (defun custom-magic-reset (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2080 "Redraw the :custom-magic property of WIDGET."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2081 (let ((magic (widget-get widget :custom-magic)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2082 (widget-value-set magic (widget-value magic))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2083
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2084 ;;; The `custom' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2085
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2086 (defface custom-button
97043
9592c50233ab Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96675
diff changeset
2087 '((((type x w32 ns) (class color)) ; Like default modeline
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31744
diff changeset
2088 (:box (:line-width 2 :style released-button)
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31744
diff changeset
2089 :background "lightgrey" :foreground "black"))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2090 (t
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2091 nil))
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2092 "Face for custom buffer buttons if `custom-raised-buttons' is non-nil."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2093 :version "21.1"
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2094 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2095 (define-obsolete-face-alias 'custom-button-face 'custom-button "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2096
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2097 (defface custom-button-mouse
97043
9592c50233ab Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96675
diff changeset
2098 '((((type x w32 ns) (class color))
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2099 (:box (:line-width 2 :style released-button)
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2100 :background "grey90" :foreground "black"))
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2101 (t
98001
c5c3ca209572 Move comment for last change to right place.
Eli Zaretskii <eliz@gnu.org>
parents: 97999
diff changeset
2102 ;; This is for text terminals that support mouse, like GPM mouse
c5c3ca209572 Move comment for last change to right place.
Eli Zaretskii <eliz@gnu.org>
parents: 97999
diff changeset
2103 ;; or the MS-DOS terminal: inverse-video makes the button stand
c5c3ca209572 Move comment for last change to right place.
Eli Zaretskii <eliz@gnu.org>
parents: 97999
diff changeset
2104 ;; out on mouse-over.
97999
8038a4df451c (custom-button-pressed): Default to inverse-video.
Eli Zaretskii <eliz@gnu.org>
parents: 97546
diff changeset
2105 (:inverse-video t)))
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2106 "Mouse face for custom buffer buttons if `custom-raised-buttons' is non-nil."
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2107 :version "22.1"
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2108 :group 'custom-faces)
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2109
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2110 (defface custom-button-unraised
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
2111 '((t :inherit underline))
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2112 "Face for custom buffer buttons if `custom-raised-buttons' is nil."
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2113 :version "22.1"
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2114 :group 'custom-faces)
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2115
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2116 (setq custom-button
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2117 (if custom-raised-buttons 'custom-button 'custom-button-unraised))
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2118
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2119 (setq custom-button-mouse
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2120 (if custom-raised-buttons 'custom-button-mouse 'highlight))
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
2121
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2122 (defface custom-button-pressed
97043
9592c50233ab Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96675
diff changeset
2123 '((((type x w32 ns) (class color))
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31744
diff changeset
2124 (:box (:line-width 2 :style pressed-button)
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31744
diff changeset
2125 :background "lightgrey" :foreground "black"))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2126 (t
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2127 (:inverse-video t)))
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2128 "Face for pressed custom buttons if `custom-raised-buttons' is non-nil."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2129 :version "21.1"
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2130 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2131 (define-obsolete-face-alias 'custom-button-pressed-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2132 'custom-button-pressed "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2133
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2134 (defface custom-button-pressed-unraised
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2135 '((default :inherit custom-button-unraised)
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2136 (((class color) (background light)) :foreground "magenta4")
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2137 (((class color) (background dark)) :foreground "violet"))
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2138 "Face for pressed custom buttons if `custom-raised-buttons' is nil."
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2139 :version "22.1"
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2140 :group 'custom-faces)
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2141
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2142 (setq custom-button-pressed
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2143 (if custom-raised-buttons
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2144 'custom-button-pressed
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2145 'custom-button-pressed-unraised))
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
2146
70179
bdc0573597a9 (custom-documentation): Avoid nil spec in defface.
Luc Teirlinck <teirllm@auburn.edu>
parents: 70021
diff changeset
2147 (defface custom-documentation '((t nil))
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2148 "Face used for documentation strings in customization buffers."
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2149 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2150 (define-obsolete-face-alias 'custom-documentation-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2151 'custom-documentation "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2152
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2153 (defface custom-state '((((class color)
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2154 (background dark))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2155 (:foreground "lime green"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2156 (((class color)
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2157 (background light))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2158 (:foreground "dark green"))
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2159 (t nil))
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2160 "Face used for State descriptions in the customize buffer."
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2161 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2162 (define-obsolete-face-alias 'custom-state-face 'custom-state "22.1")
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2163
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
2164 (defface custom-link
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
2165 '((t :inherit link))
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
2166 "Face for links in customization buffers."
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
2167 :version "22.1"
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
2168 :group 'custom-faces)
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
2169
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2170 (define-widget 'custom 'default
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2171 "Customize a user option."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2172 :format "%v"
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2173 :convert-widget 'custom-convert-widget
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2174 :notify 'custom-notify
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2175 :custom-prefix ""
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2176 :custom-level 1
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2177 :custom-state 'hidden
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2178 :documentation-property 'widget-subclass-responsibility
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2179 :value-create 'widget-subclass-responsibility
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2180 :value-delete 'widget-children-value-delete
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2181 :value-get 'widget-value-value-get
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2182 :validate 'widget-children-validate
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2183 :match (lambda (widget value) (symbolp value)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2184
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2185 (defun custom-convert-widget (widget)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
2186 "Initialize :value and :tag from :args in WIDGET."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2187 (let ((args (widget-get widget :args)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2188 (when args
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2189 (widget-put widget :value (widget-apply widget
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2190 :value-to-internal (car args)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2191 (widget-put widget :tag (custom-unlispify-tag-name (car args)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2192 (widget-put widget :args nil)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2193 widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2194
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2195 (defun custom-notify (widget &rest args)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2196 "Keep track of changes."
18090
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2197 (let ((state (widget-get widget :custom-state)))
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2198 (unless (eq state 'modified)
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2199 (unless (memq state '(nil unknown hidden))
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2200 (widget-put widget :custom-state 'modified))
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2201 (custom-magic-reset widget)
2983683a278b Synched with 1.9905
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18089
diff changeset
2202 (apply 'widget-default-notify widget args))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2203
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2204 (defun custom-redraw (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2205 "Redraw WIDGET with current settings."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2206 (let ((line (count-lines (point-min) (point)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2207 (column (current-column))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2208 (pos (point))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2209 (from (marker-position (widget-get widget :from)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2210 (to (marker-position (widget-get widget :to))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2211 (save-excursion
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2212 (widget-value-set widget (widget-value widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2213 (custom-redraw-magic widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2214 (when (and (>= pos from) (<= pos to))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2215 (condition-case nil
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2216 (progn
104543
da8b3e61b182 Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents: 103835
diff changeset
2217 (goto-char (point-min))
da8b3e61b182 Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents: 103835
diff changeset
2218 (forward-line (if (> column 0)
da8b3e61b182 Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents: 103835
diff changeset
2219 (1- line)
da8b3e61b182 Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents: 103835
diff changeset
2220 line))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2221 (move-to-column column))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2222 (error nil)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2223
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2224 (defun custom-redraw-magic (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2225 "Redraw WIDGET state with current settings."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2226 (while widget
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2227 (let ((magic (widget-get widget :custom-magic)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2228 (cond (magic
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2229 (widget-value-set magic (widget-value magic))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2230 (when (setq widget (widget-get widget :group))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2231 (custom-group-state-update widget)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2232 (t
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2233 (setq widget nil)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2234 (widget-setup))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2235
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2236 (defun custom-show (widget value)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2237 "Non-nil if WIDGET should be shown with VALUE by default."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2238 (let ((show (widget-get widget :custom-show)))
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2239 (if (functionp show)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2240 (funcall show widget value)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2241 show)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2242
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2243 (defun custom-load-widget (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2244 "Load all dependencies for WIDGET."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2245 (custom-load-symbol (widget-value widget)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2246
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2247 (defun custom-unloaded-symbol-p (symbol)
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
2248 "Return non-nil if the dependencies of SYMBOL have not yet been loaded."
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2249 (let ((found nil)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2250 (loads (get symbol 'custom-loads))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2251 load)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2252 (while loads
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2253 (setq load (car loads)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2254 loads (cdr loads))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2255 (cond ((symbolp load)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2256 (unless (featurep load)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2257 (setq found t)))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2258 ((assoc load load-history))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2259 ((assoc (locate-library load) load-history)
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2260 (message nil))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2261 (t
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2262 (setq found t))))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2263 found))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2264
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2265 (defun custom-unloaded-widget-p (widget)
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
2266 "Return non-nil if the dependencies of WIDGET have not yet been loaded."
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2267 (custom-unloaded-symbol-p (widget-value widget)))
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2268
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2269 (defun custom-toggle-hide (widget)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2270 "Toggle visibility of WIDGET."
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2271 (custom-load-widget widget)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2272 (let ((state (widget-get widget :custom-state)))
97546
57c9b0f7df3e (custom-toggle-hide): Allow hiding only if widget is saved.
Chong Yidong <cyd@stupidchicken.com>
parents: 97242
diff changeset
2273 (cond ((memq state '(invalid modified set))
57c9b0f7df3e (custom-toggle-hide): Allow hiding only if widget is saved.
Chong Yidong <cyd@stupidchicken.com>
parents: 97242
diff changeset
2274 (error "There are unsaved changes"))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2275 ((eq state 'hidden)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2276 (widget-put widget :custom-state 'unknown))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2277 (t
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2278 (widget-put widget :documentation-shown nil)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2279 (widget-put widget :custom-state 'hidden)))
18258
e83bc8150072 Synched with 1.9920.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18244
diff changeset
2280 (custom-redraw widget)
e83bc8150072 Synched with 1.9920.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18244
diff changeset
2281 (widget-setup)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2282
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2283 (defun custom-toggle-parent (widget &rest ignore)
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
2284 "Toggle visibility of parent of WIDGET."
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2285 (custom-toggle-hide (widget-get widget :parent)))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2286
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2287 (defun custom-add-see-also (widget &optional prefix)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2288 "Add `See also ...' to WIDGET if there are any links.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2289 Insert PREFIX first if non-nil."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2290 (let* ((symbol (widget-get widget :value))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2291 (links (get symbol 'custom-links))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2292 (many (> (length links) 2))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2293 (buttons (widget-get widget :buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2294 (indent (widget-get widget :indent)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2295 (when links
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2296 (when indent
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2297 (insert-char ?\ indent))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2298 (when prefix
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2299 (insert prefix))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2300 (insert "See also ")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2301 (while links
68178
08dc54e52e8e (custom-add-see-also, custom-add-parent-links): Make sure the links use
Eli Zaretskii <eliz@gnu.org>
parents: 68139
diff changeset
2302 (push (widget-create-child-and-convert
08dc54e52e8e (custom-add-see-also, custom-add-parent-links): Make sure the links use
Eli Zaretskii <eliz@gnu.org>
parents: 68139
diff changeset
2303 widget (car links)
08dc54e52e8e (custom-add-see-also, custom-add-parent-links): Make sure the links use
Eli Zaretskii <eliz@gnu.org>
parents: 68139
diff changeset
2304 :button-face 'custom-link
68892
93b583aac002 * wid-edit.el (widget-button-click): Use :pressed-face property
Chong Yidong <cyd@stupidchicken.com>
parents: 68406
diff changeset
2305 :mouse-face 'highlight
93b583aac002 * wid-edit.el (widget-button-click): Use :pressed-face property
Chong Yidong <cyd@stupidchicken.com>
parents: 68406
diff changeset
2306 :pressed-face 'highlight)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2307 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2308 (setq links (cdr links))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2309 (cond ((null links)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2310 (insert ".\n"))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2311 ((null (cdr links))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2312 (if many
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2313 (insert ", and ")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2314 (insert " and ")))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2315 (t
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2316 (insert ", "))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2317 (widget-put widget :buttons buttons))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2318
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2319 (defun custom-add-parent-links (widget &optional initial-string doc-initial-string)
18371
a32f9b2c2e0c (custom-add-parent-links): New arg INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 18370
diff changeset
2320 "Add \"Parent groups: ...\" to WIDGET if the group has parents.
66904
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2321 The value is non-nil if any parents were found.
18371
a32f9b2c2e0c (custom-add-parent-links): New arg INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 18370
diff changeset
2322 If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2323 (let ((name (widget-value widget))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2324 (type (widget-type widget))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2325 (buttons (widget-get widget :buttons))
18370
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
2326 (start (point))
53223
1fa5a4fc03e5 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 52401
diff changeset
2327 (parents nil))
79659
a4773f405434 (custom-add-parent-links): New arg DOC-INITIAL-STRING.
Richard M. Stallman <rms@gnu.org>
parents: 79655
diff changeset
2328 (insert (or initial-string "Groups:"))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2329 (mapatoms (lambda (symbol)
66904
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2330 (when (member (list name type) (get symbol 'custom-group))
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2331 (insert " ")
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2332 (push (widget-create-child-and-convert
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2333 widget 'custom-group-link
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2334 :tag (custom-unlispify-tag-name symbol)
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2335 symbol)
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2336 buttons)
b39a51cbc6b6 (custom-add-parent-links): Fix bug whereby, for instance,
Luc Teirlinck <teirllm@auburn.edu>
parents: 66859
diff changeset
2337 (setq parents (cons symbol parents)))))
53223
1fa5a4fc03e5 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 52401
diff changeset
2338 (if parents
1fa5a4fc03e5 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 52401
diff changeset
2339 (insert "\n")
1fa5a4fc03e5 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 52401
diff changeset
2340 (delete-region start (point)))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2341 (widget-put widget :buttons buttons)
53223
1fa5a4fc03e5 2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 52401
diff changeset
2342 parents))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2343
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2344 ;;; The `custom-comment' Widget.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2345
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2346 ;; like the editable field
68109
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2347 (defface custom-comment '((((type tty))
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2348 :background "yellow3"
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2349 :foreground "black")
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2350 (((class grayscale color)
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2351 (background light))
68109
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2352 :background "gray85")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2353 (((class grayscale color)
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2354 (background dark))
68109
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2355 :background "dim gray")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2356 (t
68109
d42505f2ff8c (custom-comment) <defface>: Add TTY definitions.
John Paul Wallington <jpw@pobox.com>
parents: 68086
diff changeset
2357 :slant italic))
99298
225286546090 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 98001
diff changeset
2358 "Face used for comments on variables or faces."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2359 :version "21.1"
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2360 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2361 (define-obsolete-face-alias 'custom-comment-face 'custom-comment "22.1")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2362
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2363 ;; like font-lock-comment-face
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2364 (defface custom-comment-tag
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2365 '((((class color) (background dark)) (:foreground "gray80"))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2366 (((class color) (background light)) (:foreground "blue4"))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2367 (((class grayscale) (background light))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
2368 (:foreground "DimGray" :weight bold :slant italic))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2369 (((class grayscale) (background dark))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
2370 (:foreground "LightGray" :weight bold :slant italic))
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
2371 (t (:weight bold)))
99403
e0a169f45c0e (custom-comment-tag): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 99298
diff changeset
2372 "Face used for the comment tag on variables or faces."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2373 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2374 (define-obsolete-face-alias 'custom-comment-tag-face 'custom-comment-tag "22.1")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2375
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2376 (define-widget 'custom-comment 'string
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2377 "User comment."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2378 :tag "Comment"
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2379 :help-echo "Edit a comment here."
99403
e0a169f45c0e (custom-comment-tag): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 99298
diff changeset
2380 :sample-face 'custom-comment-tag
e0a169f45c0e (custom-comment-tag): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 99298
diff changeset
2381 :value-face 'custom-comment
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2382 :shown nil
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2383 :create 'custom-comment-create)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2384
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2385 (defun custom-comment-create (widget)
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2386 (let* ((null-comment (equal "" (widget-value widget))))
25847
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2387 (if (or (widget-get (widget-get widget :parent) :comment-shown)
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2388 (not null-comment))
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2389 (widget-default-create widget)
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2390 ;; `widget-default-delete' expects markers in these slots --
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2391 ;; maybe it shouldn't.
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2392 (widget-put widget :from (point-marker))
f54121af02c8 (custom-comment-create): Fill :from and :to slots
Dave Love <fx@gnu.org>
parents: 25840
diff changeset
2393 (widget-put widget :to (point-marker)))))
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2394
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2395 (defun custom-comment-hide (widget)
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2396 (widget-put (widget-get widget :parent) :comment-shown nil))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2397
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2398 ;; Those functions are for the menu. WIDGET is NOT the comment widget. It's
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2399 ;; the global custom one
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2400 (defun custom-comment-show (widget)
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2401 (widget-put widget :comment-shown t)
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2402 (custom-redraw widget)
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2403 (widget-setup))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2404
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2405 (defun custom-comment-invisible-p (widget)
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2406 (let ((val (widget-value (widget-get widget :comment-widget))))
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2407 (and (equal "" val)
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2408 (not (widget-get widget :comment-shown)))))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2409
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2410 ;;; The `custom-variable' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2411
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2412 (defface custom-variable-tag
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
2413 `((((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
2414 (background dark))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
2415 (:foreground "light blue" :weight bold))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
2416 (((min-colors 88) (class color)
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
2417 (background light))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
2418 (:foreground "blue1" :weight bold))
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
2419 (((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
2420 (background light))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
2421 (:foreground "blue" :weight bold))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
2422 (t (:weight bold)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2423 "Face used for unpushable variable tags."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2424 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2425 (define-obsolete-face-alias 'custom-variable-tag-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2426 'custom-variable-tag "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2427
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
2428 (defface custom-variable-button '((t (:underline t :weight bold)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2429 "Face used for pushable variable tags."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2430 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2431 (define-obsolete-face-alias 'custom-variable-button-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
2432 'custom-variable-button "22.1")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2433
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2434 (defcustom custom-variable-default-form 'edit
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2435 "Default form of displaying variable values."
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2436 :type '(choice (const edit)
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2437 (const lisp))
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21649
diff changeset
2438 :group 'custom-buffer
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21649
diff changeset
2439 :version "20.3")
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2440
56161
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2441 (defun custom-variable-documentation (variable)
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2442 "Return documentation of VARIABLE for use in Custom buffer.
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2443 Normally just return the docstring. But if VARIABLE automatically
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2444 becomes buffer local when set, append a message to that effect."
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2445 (if (and (local-variable-if-set-p variable)
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2446 (or (not (local-variable-p variable))
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2447 (with-temp-buffer
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2448 (local-variable-if-set-p variable))))
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2449 (concat (documentation-property variable 'variable-documentation)
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2450 "\n
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2451 This variable automatically becomes buffer-local when set outside Custom.
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2452 However, setting it through Custom sets the default value.")
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2453 (documentation-property variable 'variable-documentation)))
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2454
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2455 (define-widget 'custom-variable 'custom
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2456 "A widget for displaying a Custom variable.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2457
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2458 The following property has a special meaning for this widget:
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2459 :hidden-states - A list of widget states for which the widget's initial
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2460 contents should be hidden."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2461 :format "%v"
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2462 :help-echo "Set or reset this variable."
56161
a8ce8bdfcee6 (custom-variable-documentation): New function.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55944
diff changeset
2463 :documentation-property #'custom-variable-documentation
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
2464 :custom-category 'option
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2465 :custom-state nil
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2466 :custom-menu 'custom-variable-menu-create
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2467 :custom-form nil ; defaults to value of `custom-variable-default-form'
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2468 :value-create 'custom-variable-value-create
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2469 :action 'custom-variable-action
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2470 :hidden-states '(standard)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2471 :custom-set 'custom-variable-set
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2472 :custom-mark-to-save 'custom-variable-mark-to-save
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2473 :custom-reset-current 'custom-redraw
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2474 :custom-reset-saved 'custom-variable-reset-saved
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
2475 :custom-reset-standard 'custom-variable-reset-standard
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2476 :custom-mark-to-reset-standard 'custom-variable-mark-to-reset-standard
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2477 :custom-standard-value 'custom-variable-standard-value
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2478 :custom-state-set-and-redraw 'custom-variable-state-set-and-redraw)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2479
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2480 (defun custom-variable-type (symbol)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2481 "Return a widget suitable for editing the value of SYMBOL.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2482 If SYMBOL has a `custom-type' property, use that.
77997
20578868cbb3 (custom-variable-type): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 77171
diff changeset
2483 Otherwise, try matching SYMBOL against `custom-guess-name-alist' and
20578868cbb3 (custom-variable-type): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 77171
diff changeset
2484 try matching its doc string against `custom-guess-doc-alist'."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2485 (let* ((type (or (get symbol 'custom-type)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2486 (and (not (get symbol 'standard-value))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2487 (custom-guess-type symbol))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2488 'sexp))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2489 (options (get symbol 'custom-options))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2490 (tmp (if (listp type)
17534
a5cf59eee84b (custom-variable-type): Use copy-sequence, not copy-list.
Richard M. Stallman <rms@gnu.org>
parents: 17521
diff changeset
2491 (copy-sequence type)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2492 (list type))))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2493 (when options
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2494 (widget-put tmp :options options))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2495 tmp))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2496
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2497 (defun custom-variable-value-create (widget)
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2498 "Here is where you edit the variable's value."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2499 (custom-load-widget widget)
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2500 (unless (widget-get widget :custom-form)
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
2501 (widget-put widget :custom-form custom-variable-default-form))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2502 (let* ((buttons (widget-get widget :buttons))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2503 (children (widget-get widget :children))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2504 (form (widget-get widget :custom-form))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2505 (symbol (widget-get widget :value))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2506 (tag (widget-get widget :tag))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
2507 (type (custom-variable-type symbol))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2508 (conv (widget-convert type))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2509 (get (or (get symbol 'custom-get) 'default-value))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2510 (prefix (widget-get widget :custom-prefix))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2511 (last (widget-get widget :custom-last))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2512 (value (if (default-boundp symbol)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2513 (funcall get symbol)
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2514 (widget-get conv :value)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2515 (state (or (widget-get widget :custom-state)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2516 (if (memq (custom-variable-state symbol value)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2517 (widget-get widget :hidden-states))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2518 'hidden))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2519
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2520 ;; If we don't know the state, see if we need to edit it in lisp form.
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2521 (unless state
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2522 (setq state (if (custom-show type value) 'unknown 'hidden)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2523 (when (eq state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2524 (unless (widget-apply conv :match value)
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
2525 (setq form 'mismatch)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2526 ;; Now we can create the child widget.
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2527 (cond ((eq custom-buffer-style 'tree)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
2528 (insert prefix (if last " `--- " " |--- "))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2529 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
2530 widget 'custom-browse-variable-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2531 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2532 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2533 (widget-put widget :buttons buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2534 ((eq state 'hidden)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2535 ;; Indicate hidden value.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2536 (push (widget-create-child-and-convert
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2537 widget 'custom-visibility
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2538 :help-echo "Show the value of this option."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2539 :on-image "down"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2540 :on "Hide"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2541 :off-image "right"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2542 :off "Show Value"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2543 :action 'custom-toggle-parent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2544 nil)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2545 buttons)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2546 (insert " ")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2547 (push (widget-create-child-and-convert
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2548 widget 'item
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2549 :format "%{%t%} "
99404
16c6946eeb2e (custom-variable-value-create, custom-face):
Glenn Morris <rgm@gnu.org>
parents: 99403
diff changeset
2550 :sample-face 'custom-variable-tag
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2551 :tag tag
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2552 :parent widget)
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2553 buttons))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
2554 ((memq form '(lisp mismatch))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2555 ;; In lisp mode edit the saved value when possible.
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2556 (push (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2557 widget 'custom-visibility
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2558 :help-echo "Hide the value of this option."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2559 :on "Hide"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2560 :off "Show"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2561 :on-image "down"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2562 :off-image "right"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2563 :action 'custom-toggle-parent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2564 t)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2565 buttons)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2566 (insert " ")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2567 (let* ((value (cond ((get symbol 'saved-value)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2568 (car (get symbol 'saved-value)))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2569 ((get symbol 'standard-value)
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2570 (car (get symbol 'standard-value)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2571 ((default-boundp symbol)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2572 (custom-quote (funcall get symbol)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2573 (t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2574 (custom-quote (widget-get conv :value))))))
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2575 (insert (symbol-name symbol) ": ")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2576 (push (widget-create-child-and-convert
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2577 widget 'sexp
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2578 :button-face 'custom-variable-button-face
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2579 :format "%v"
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2580 :tag (symbol-name symbol)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2581 :parent widget
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2582 :value value)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2583 children)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2584 (t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2585 ;; Edit mode.
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2586 (push (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2587 widget 'custom-visibility
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2588 :help-echo "Hide or show this option."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2589 :on "Hide"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2590 :off "Show"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2591 :on-image "down"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2592 :off-image "right"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2593 :action 'custom-toggle-parent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2594 t)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2595 buttons)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2596 (insert " ")
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2597 (let* ((format (widget-get type :format))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2598 tag-format value-format)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2599 (unless (string-match ":" format)
19883
519eab181c36 (custom-face-menu): Use custom-face-save-command. not custom-face-save.
Richard M. Stallman <rms@gnu.org>
parents: 19823
diff changeset
2600 (error "Bad format"))
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2601 (setq tag-format (substring format 0 (match-end 0)))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2602 (setq value-format (substring format (match-end 0)))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2603 (push (widget-create-child-and-convert
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2604 widget 'item
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2605 :format tag-format
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2606 :action 'custom-tag-action
18258
e83bc8150072 Synched with 1.9920.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18244
diff changeset
2607 :help-echo "Change value of this option."
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2608 :mouse-down-action 'custom-tag-mouse-down-action
99404
16c6946eeb2e (custom-variable-value-create, custom-face):
Glenn Morris <rgm@gnu.org>
parents: 99403
diff changeset
2609 :button-face 'custom-variable-button
16c6946eeb2e (custom-variable-value-create, custom-face):
Glenn Morris <rgm@gnu.org>
parents: 99403
diff changeset
2610 :sample-face 'custom-variable-tag
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2611 tag)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2612 buttons)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2613 (push (widget-create-child-and-convert
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2614 widget type
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2615 :format value-format
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2616 :value value)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2617 children))))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2618 (unless (eq custom-buffer-style 'tree)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2619 (unless (eq (preceding-char) ?\n)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2620 (widget-insert "\n"))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2621 ;; Create the magic button.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2622 (let ((magic (widget-create-child-and-convert
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2623 widget 'custom-magic nil)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2624 (widget-put widget :custom-magic magic)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2625 (push magic buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2626 (widget-put widget :buttons buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2627 ;; Insert documentation.
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
2628 (widget-put widget :documentation-indent 3)
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
2629 (widget-add-documentation-string-button
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
2630 widget :visibility-widget 'custom-visibility)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2631
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2632 ;; The comment field
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2633 (unless (eq state 'hidden)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2634 (let* ((comment (get symbol 'variable-comment))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2635 (comment-widget
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2636 (widget-create-child-and-convert
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2637 widget 'custom-comment
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2638 :parent widget
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2639 :value (or comment ""))))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2640 (widget-put widget :comment-widget comment-widget)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2641 ;; Don't push it !!! Custom assumes that the first child is the
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2642 ;; value one.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2643 (setq children (append children (list comment-widget)))))
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2644 ;; Update the rest of the properties.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2645 (widget-put widget :custom-form form)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2646 (widget-put widget :children children)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2647 ;; Now update the state.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2648 (if (eq state 'hidden)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2649 (widget-put widget :custom-state state)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2650 (custom-variable-state-set widget))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2651 ;; See also.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2652 (unless (eq state 'hidden)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2653 (when (eq (widget-get widget :custom-level) 1)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2654 (custom-add-parent-links widget))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
2655 (custom-add-see-also widget)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2656
18067
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2657 (defun custom-tag-action (widget &rest args)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2658 "Pass :action to first child of WIDGET's parent."
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2659 (apply 'widget-apply (car (widget-get (widget-get widget :parent) :children))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2660 :action args))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2661
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2662 (defun custom-tag-mouse-down-action (widget &rest args)
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2663 "Pass :mouse-down-action to first child of WIDGET's parent."
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2664 (apply 'widget-apply (car (widget-get (widget-get widget :parent) :children))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2665 :mouse-down-action args))
0e2aa3b58e16 Synched with version 1.9901.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18059
diff changeset
2666
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2667 (defun custom-variable-state (symbol val)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2668 "Return the state of SYMBOL if its value is VAL.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2669 If SYMBOL has a non-nil `custom-get' property, it overrides VAL.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2670 Possible return values are `standard', `saved', `set', `themed',
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2671 `changed', and `rogue'."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2672 (let* ((get (or (get symbol 'custom-get) 'default-value))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2673 (value (if (default-boundp symbol)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2674 (funcall get symbol)
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2675 val))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2676 (comment (get symbol 'variable-comment))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2677 tmp
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2678 temp)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2679 (cond ((progn (setq tmp (get symbol 'customized-value))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2680 (setq temp
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2681 (get symbol 'customized-variable-comment))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2682 (or tmp temp))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2683 (if (condition-case nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2684 (and (equal value (eval (car tmp)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2685 (equal comment temp))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2686 (error nil))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2687 'set
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2688 'changed))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2689 ((progn (setq tmp (get symbol 'theme-value))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2690 (setq temp (get symbol 'saved-variable-comment))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2691 (or tmp temp))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2692 (if (condition-case nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2693 (and (equal comment temp)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2694 (equal value
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2695 (eval
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2696 (car (custom-variable-theme-value
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2697 symbol)))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2698 (error nil))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2699 (cond
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2700 ((eq (caar tmp) 'user) 'saved)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2701 ((eq (caar tmp) 'changed)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2702 (if (condition-case nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2703 (and (null comment)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2704 (equal value
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2705 (eval
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2706 (car (get symbol 'standard-value)))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2707 (error nil))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2708 ;; The value was originally set outside
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2709 ;; custom, but it was set to the standard
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2710 ;; value (probably an autoloaded defcustom).
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2711 'standard
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2712 'changed))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2713 (t 'themed))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2714 'changed))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2715 ((setq tmp (get symbol 'standard-value))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2716 (if (condition-case nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2717 (and (equal value (eval (car tmp)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2718 (equal comment nil))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2719 (error nil))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2720 'standard
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2721 'changed))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2722 (t 'rogue))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2723
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2724 (defun custom-variable-state-set (widget &optional state)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2725 "Set the state of WIDGET to STATE.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2726 If STATE is nil, the value is computed by `custom-variable-state'."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2727 (widget-put widget :custom-state
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2728 (or state (custom-variable-state (widget-value widget)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
2729 (widget-get widget :value)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2730
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
2731 (defun custom-variable-standard-value (widget)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
2732 (get (widget-value widget) 'standard-value))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
2733
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2734 (defvar custom-variable-menu
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2735 `(("Set for Current Session" custom-variable-set
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
2736 (lambda (widget)
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2737 (eq (widget-get widget :custom-state) 'modified)))
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2738 ;; Note that in all the backquoted code in this file, we test
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2739 ;; init-file-user rather than user-init-file. This is in case
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2740 ;; cus-edit is loaded by something in site-start.el, because
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2741 ;; user-init-file is not set at that stage.
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2742 ;; http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00310.html
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2743 ,@(when (or custom-file init-file-user)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2744 '(("Save for Future Sessions" custom-variable-save
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2745 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2746 (memq (widget-get widget :custom-state)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2747 '(modified set changed rogue))))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2748 ("Undo Edits" custom-redraw
68021
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2749 (lambda (widget)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2750 (and (default-boundp (widget-value widget))
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2751 (memq (widget-get widget :custom-state) '(modified changed)))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2752 ("Reset to Saved" custom-variable-reset-saved
68021
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2753 (lambda (widget)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2754 (and (or (get (widget-value widget) 'saved-value)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2755 (get (widget-value widget) 'saved-variable-comment))
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2756 (memq (widget-get widget :custom-state)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
2757 '(modified set changed rogue)))))
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
2758 ,@(when (or custom-file init-file-user)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2759 '(("Erase Customization" custom-variable-reset-standard
67744
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
2760 (lambda (widget)
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
2761 (and (get (widget-value widget) 'standard-value)
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
2762 (memq (widget-get widget :custom-state)
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
2763 '(modified set changed saved rogue)))))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2764 ("Set to Backup Value" custom-variable-reset-backup
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2765 (lambda (widget)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2766 (get (widget-value widget) 'backup-value)))
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2767 ("---" ignore ignore)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2768 ("Add Comment" custom-comment-show custom-comment-invisible-p)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2769 ("---" ignore ignore)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2770 ("Show Current Value" custom-variable-edit
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2771 (lambda (widget)
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2772 (eq (widget-get widget :custom-form) 'lisp)))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
2773 ("Show Saved Lisp Expression" custom-variable-edit-lisp
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2774 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
2775 (eq (widget-get widget :custom-form) 'edit))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2776 "Alist of actions for the `custom-variable' widget.
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2777 Each entry has the form (NAME ACTION FILTER) where NAME is the name of
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2778 the menu entry, ACTION is the function to call on the widget when the
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2779 menu is selected, and FILTER is a predicate which takes a `custom-variable'
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2780 widget as an argument, and returns non-nil if ACTION is valid on that
26625
faf989c7a28e (Custom-reset-standard): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26451
diff changeset
2781 widget. If FILTER is nil, ACTION is always valid.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2782
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2783 (defun custom-variable-action (widget &optional event)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2784 "Show the menu for `custom-variable' WIDGET.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2785 Optional EVENT is the location for the menu."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2786 (if (eq (widget-get widget :custom-state) 'hidden)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2787 (custom-toggle-hide widget)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2788 (unless (eq (widget-get widget :custom-state) 'modified)
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2789 (custom-variable-state-set widget))
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
2790 (custom-redraw-magic widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2791 (let* ((completion-ignore-case t)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2792 (answer (widget-choose (concat "Operation on "
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2793 (custom-unlispify-tag-name
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2794 (widget-get widget :value)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2795 (custom-menu-filter custom-variable-menu
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2796 widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2797 event)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2798 (if answer
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2799 (funcall answer widget)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2800
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2801 (defun custom-variable-edit (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2802 "Edit value of WIDGET."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2803 (widget-put widget :custom-state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2804 (widget-put widget :custom-form 'edit)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2805 (custom-redraw widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2806
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2807 (defun custom-variable-edit-lisp (widget)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
2808 "Edit the Lisp representation of the value of WIDGET."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2809 (widget-put widget :custom-state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2810 (widget-put widget :custom-form 'lisp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2811 (custom-redraw widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2812
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2813 (defun custom-variable-set (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2814 "Set the current value for the variable being edited by WIDGET."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2815 (let* ((form (widget-get widget :custom-form))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2816 (state (widget-get widget :custom-state))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2817 (child (car (widget-get widget :children)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2818 (symbol (widget-value widget))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2819 (set (or (get symbol 'custom-set) 'set-default))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2820 (comment-widget (widget-get widget :comment-widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2821 (comment (widget-value comment-widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2822 val)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2823 (cond ((eq state 'hidden)
19883
519eab181c36 (custom-face-menu): Use custom-face-save-command. not custom-face-save.
Richard M. Stallman <rms@gnu.org>
parents: 19823
diff changeset
2824 (error "Cannot set hidden variable"))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2825 ((setq val (widget-apply child :validate))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2826 (goto-char (widget-get val :from))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2827 (error "%s" (widget-get val :error)))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
2828 ((memq form '(lisp mismatch))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2829 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2830 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2831 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2832 (custom-comment-hide comment-widget))
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2833 (custom-variable-backup-value widget)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
2834 (custom-push-theme 'theme-value symbol 'user
67797
7bdbb812b2f9 * custom.el (custom-push-theme): Fix docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 67793
diff changeset
2835 'set (custom-quote (widget-value child)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2836 (funcall set symbol (eval (setq val (widget-value child))))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2837 (put symbol 'customized-value (list val))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2838 (put symbol 'variable-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2839 (put symbol 'customized-variable-comment comment))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2840 (t
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2841 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2842 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2843 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2844 (custom-comment-hide comment-widget))
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2845 (custom-variable-backup-value widget)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
2846 (custom-push-theme 'theme-value symbol 'user
67797
7bdbb812b2f9 * custom.el (custom-push-theme): Fix docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 67793
diff changeset
2847 'set (custom-quote (widget-value child)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2848 (funcall set symbol (setq val (widget-value child)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2849 (put symbol 'customized-value (list (custom-quote val)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2850 (put symbol 'variable-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2851 (put symbol 'customized-variable-comment comment)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2852 (custom-variable-state-set widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2853 (custom-redraw-magic widget)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2854
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2855 (defun custom-variable-mark-to-save (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2856 "Set value and mark for saving the variable edited by WIDGET."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2857 (let* ((form (widget-get widget :custom-form))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2858 (state (widget-get widget :custom-state))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2859 (child (car (widget-get widget :children)))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2860 (symbol (widget-value widget))
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2861 (set (or (get symbol 'custom-set) 'set-default))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2862 (comment-widget (widget-get widget :comment-widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2863 (comment (widget-value comment-widget))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2864 val)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2865 (cond ((eq state 'hidden)
19883
519eab181c36 (custom-face-menu): Use custom-face-save-command. not custom-face-save.
Richard M. Stallman <rms@gnu.org>
parents: 19823
diff changeset
2866 (error "Cannot set hidden variable"))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2867 ((setq val (widget-apply child :validate))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2868 (goto-char (widget-get val :from))
33774
77d48dfb2b29 (custom-buffer-create-internal): Save some consing.
Dave Love <fx@gnu.org>
parents: 33110
diff changeset
2869 (error "Saving %s: %s" symbol (widget-get val :error)))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
2870 ((memq form '(lisp mismatch))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2871 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2872 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2873 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2874 (custom-comment-hide comment-widget))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2875 (put symbol 'saved-value (list (widget-value child)))
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
2876 (custom-push-theme 'theme-value symbol 'user
67797
7bdbb812b2f9 * custom.el (custom-push-theme): Fix docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 67793
diff changeset
2877 'set (custom-quote (widget-value child)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2878 (funcall set symbol (eval (widget-value child)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2879 (put symbol 'variable-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2880 (put symbol 'saved-variable-comment comment))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2881 (t
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2882 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2883 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2884 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2885 (custom-comment-hide comment-widget))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2886 (put symbol 'saved-value
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2887 (list (custom-quote (widget-value child))))
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
2888 (custom-push-theme 'theme-value symbol 'user
67797
7bdbb812b2f9 * custom.el (custom-push-theme): Fix docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 67793
diff changeset
2889 'set (custom-quote (widget-value child)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2890 (funcall set symbol (widget-value child))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2891 (put symbol 'variable-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2892 (put symbol 'saved-variable-comment comment)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2893 (put symbol 'customized-value nil)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2894 (put symbol 'customized-variable-comment nil)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2895
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2896 (defsubst custom-variable-state-set-and-redraw (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2897 "Set state of variable widget WIDGET and redraw with current settings."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2898 (custom-variable-state-set widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2899 (custom-redraw-magic widget))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2900
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2901 (defun custom-variable-save (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2902 "Save value of variable edited by widget WIDGET."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2903 (custom-variable-mark-to-save widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2904 (custom-save-all)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2905 (custom-variable-state-set-and-redraw widget))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2906
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2907 (defun custom-variable-reset-saved (widget)
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2908 "Restore the saved value for the variable being edited by WIDGET.
68086
742bf2516c24 (Custom-set, Custom-save): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68028
diff changeset
2909 This also updates the buffer to show that value.
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2910 The value that was current before this operation
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2911 becomes the backup value, so you can get it again."
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
2912 (let* ((symbol (widget-value widget))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2913 (set (or (get symbol 'custom-set) 'set-default))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2914 (value (get symbol 'saved-value))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2915 (comment (get symbol 'saved-variable-comment)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2916 (cond ((or value comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2917 (put symbol 'variable-comment comment)
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2918 (custom-variable-backup-value widget)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
2919 (custom-push-theme 'theme-value symbol 'user 'set (car-safe value))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2920 (condition-case nil
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2921 (funcall set symbol (eval (car value)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2922 (error nil)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2923 (t
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2924 (error "No saved value for %s" symbol)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2925 (put symbol 'customized-value nil)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2926 (put symbol 'customized-variable-comment nil)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2927 (widget-put widget :custom-state 'unknown)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2928 ;; This call will possibly make the comment invisible
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2929 (custom-redraw widget)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2930
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2931 (defun custom-variable-mark-to-reset-standard (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2932 "Mark to restore standard setting for the variable edited by widget WIDGET.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2933 If `custom-reset-standard-variables-list' is nil, save, reset and
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2934 redraw the widget immediately."
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
2935 (let* ((symbol (widget-value widget)))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
2936 (if (get symbol 'standard-value)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
2937 (custom-variable-backup-value widget)
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
2938 (error "No standard setting known for %S" symbol))
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
2939 (put symbol 'variable-comment nil)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2940 (put symbol 'customized-value nil)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
2941 (put symbol 'customized-variable-comment nil)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
2942 (custom-push-theme 'theme-value symbol 'user 'reset)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
2943 (custom-theme-recalc-variable symbol)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2944 (if (and custom-reset-standard-variables-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2945 (or (get symbol 'saved-value) (get symbol 'saved-variable-comment)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2946 (progn
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2947 (put symbol 'saved-value nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2948 (put symbol 'saved-variable-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2949 ;; Append this to `custom-reset-standard-variables-list' to
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2950 ;; have `custom-reset-standard-save-and-update' save setting
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2951 ;; to the file, update the widget's state, and redraw it.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2952 (setq custom-reset-standard-variables-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2953 (cons widget custom-reset-standard-variables-list)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2954 (when (or (get symbol 'saved-value) (get symbol 'saved-variable-comment))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2955 (put symbol 'saved-value nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2956 (put symbol 'saved-variable-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2957 (custom-save-all))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2958 (widget-put widget :custom-state 'unknown)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2959 ;; This call will possibly make the comment invisible
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2960 (custom-redraw widget))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2961
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2962 (defun custom-variable-reset-standard (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2963 "Restore standard setting for the variable edited by WIDGET.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2964 This operation eliminates any saved setting for the variable,
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2965 restoring it to the state of a variable that has never been customized.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2966 The value that was current before this operation
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2967 becomes the backup value, so you can get it again."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2968 (let (custom-reset-standard-variables-list)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
2969 (custom-variable-mark-to-reset-standard widget)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2970
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2971 (defun custom-variable-backup-value (widget)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2972 "Back up the current value for WIDGET's variable.
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2973 The backup value is kept in the car of the `backup-value' property."
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2974 (let* ((symbol (widget-value widget))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2975 (get (or (get symbol 'custom-get) 'default-value))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2976 (type (custom-variable-type symbol))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2977 (conv (widget-convert type))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2978 (value (if (default-boundp symbol)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2979 (funcall get symbol)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2980 (widget-get conv :value))))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2981 (put symbol 'backup-value (list value))))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2982
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2983 (defun custom-variable-reset-backup (widget)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2984 "Restore the backup value for the variable being edited by WIDGET.
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2985 The value that was current before this operation
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2986 becomes the backup value, so you can use this operation repeatedly
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2987 to switch between two values."
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2988 (let* ((symbol (widget-value widget))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2989 (set (or (get symbol 'custom-set) 'set-default))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2990 (value (get symbol 'backup-value))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2991 (comment-widget (widget-get widget :comment-widget))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2992 (comment (widget-value comment-widget)))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2993 (if value
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2994 (progn
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2995 (custom-variable-backup-value widget)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
2996 (custom-push-theme 'theme-value symbol 'user 'set value)
47503
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2997 (condition-case nil
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2998 (funcall set symbol (car value))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
2999 (error nil)))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3000 (error "No backup value for %s" symbol))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3001 (put symbol 'customized-value (list (car value)))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3002 (put symbol 'variable-comment comment)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3003 (put symbol 'customized-variable-comment comment)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3004 (custom-variable-state-set widget)
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3005 ;; This call will possibly make the comment invisible
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3006 (custom-redraw widget)))
8b3fa993e0ad (custom-variable-backup-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47315
diff changeset
3007
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3008 ;;; The `custom-visibility' Widget
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3009
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3010 (define-widget 'custom-visibility 'visibility
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3011 "Show or hide a documentation string."
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3012 :button-face 'custom-visibility
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3013 :pressed-face 'custom-visibility
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3014 :mouse-face 'highlight
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3015 :pressed-face 'highlight
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3016 :on-image nil
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3017 :off-image nil)
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3018
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3019 (defface custom-visibility
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3020 '((t :height 0.8 :inherit link))
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3021 "Face for the `custom-visibility' widget."
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3022 :version "23.1"
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3023 :group 'custom-faces)
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3024
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3025 ;;; The `custom-face-edit' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3026
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3027 (define-widget 'custom-face-edit 'checklist
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3028 "Edit face attributes."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3029 :format "%t: %v"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3030 :tag "Attributes"
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3031 :extra-offset 13
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3032 :button-args '(:help-echo "Control whether this attribute has any effect.")
42448
5269e6fd0fbc (custom-face-edit-fix-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41606
diff changeset
3033 :value-to-internal 'custom-face-edit-fix-value
5269e6fd0fbc (custom-face-edit-fix-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41606
diff changeset
3034 :match (lambda (widget value)
49521
c259d8177692 2003-01-29 Didier Verna <didier@xemacs.org>
John Paul Wallington <jpw@pobox.com>
parents: 49300
diff changeset
3035 (widget-checklist-match widget
42448
5269e6fd0fbc (custom-face-edit-fix-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41606
diff changeset
3036 (custom-face-edit-fix-value widget value)))
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3037 :convert-widget 'custom-face-edit-convert-widget
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3038 :args (mapcar (lambda (att)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3039 (list 'group
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3040 :inline t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3041 :sibling-args (widget-get (nth 1 att) :sibling-args)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3042 (list 'const :format "" :value (nth 0 att))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3043 (nth 1 att)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3044 custom-face-attributes))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3045
42448
5269e6fd0fbc (custom-face-edit-fix-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41606
diff changeset
3046 (defun custom-face-edit-fix-value (widget value)
48709
d1efe2b99d8a (custom-face-edit-fix-value): Change :reverse-video to :inverse-video.
Andreas Schwab <schwab@suse.de>
parents: 48633
diff changeset
3047 "Ignoring WIDGET, convert :bold and :italic in VALUE to new form.
d1efe2b99d8a (custom-face-edit-fix-value): Change :reverse-video to :inverse-video.
Andreas Schwab <schwab@suse.de>
parents: 48633
diff changeset
3048 Also change :reverse-video to :inverse-video."
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3049 (if (listp value)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3050 (let (result)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3051 (while value
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3052 (let ((key (car value))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3053 (val (car (cdr value))))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3054 (cond ((eq key :italic)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3055 (push :slant result)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3056 (push (if val 'italic 'normal) result))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3057 ((eq key :bold)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3058 (push :weight result)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3059 (push (if val 'bold 'normal) result))
48709
d1efe2b99d8a (custom-face-edit-fix-value): Change :reverse-video to :inverse-video.
Andreas Schwab <schwab@suse.de>
parents: 48633
diff changeset
3060 ((eq key :reverse-video)
d1efe2b99d8a (custom-face-edit-fix-value): Change :reverse-video to :inverse-video.
Andreas Schwab <schwab@suse.de>
parents: 48633
diff changeset
3061 (push :inverse-video result)
d1efe2b99d8a (custom-face-edit-fix-value): Change :reverse-video to :inverse-video.
Andreas Schwab <schwab@suse.de>
parents: 48633
diff changeset
3062 (push val result))
49521
c259d8177692 2003-01-29 Didier Verna <didier@xemacs.org>
John Paul Wallington <jpw@pobox.com>
parents: 49300
diff changeset
3063 (t
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3064 (push key result)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3065 (push val result))))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3066 (setq value (cdr (cdr value))))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3067 (setq result (nreverse result))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3068 result)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3069 value))
42448
5269e6fd0fbc (custom-face-edit-fix-value): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41606
diff changeset
3070
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3071 (defun custom-face-edit-convert-widget (widget)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3072 "Convert :args as widget types in WIDGET."
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3073 (widget-put
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3074 widget
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3075 :args (mapcar (lambda (arg)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3076 (widget-convert arg
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3077 :deactivate 'custom-face-edit-deactivate
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3078 :activate 'custom-face-edit-activate
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3079 :delete 'custom-face-edit-delete))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3080 (widget-get widget :args)))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3081 widget)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3082
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3083 (defun custom-face-edit-deactivate (widget)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3084 "Make face widget WIDGET inactive for user modifications."
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3085 (unless (widget-get widget :inactive)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3086 (let ((tag (custom-face-edit-attribute-tag widget))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3087 (from (copy-marker (widget-get widget :from)))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3088 (value (widget-value widget))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3089 (inhibit-read-only t)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3090 (inhibit-modification-hooks t))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3091 (save-excursion
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3092 (goto-char from)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3093 (widget-default-delete widget)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3094 (insert tag ": *\n")
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3095 (widget-put widget :inactive
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3096 (cons value (cons from (- (point) from))))))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3097
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3098 (defun custom-face-edit-activate (widget)
78803
6b503866d323 Drew Adams <drew.adams at oracle.com>
Glenn Morris <rgm@gnu.org>
parents: 78394
diff changeset
3099 "Make face widget WIDGET active for user modifications."
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3100 (let ((inactive (widget-get widget :inactive))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3101 (inhibit-read-only t)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3102 (inhibit-modification-hooks t))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3103 (when (consp inactive)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3104 (save-excursion
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3105 (goto-char (car (cdr inactive)))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3106 (delete-region (point) (+ (point) (cdr (cdr inactive))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3107 (widget-put widget :inactive nil)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3108 (widget-apply widget :create)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3109 (widget-value-set widget (car inactive))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3110 (widget-setup)))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3111
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3112 (defun custom-face-edit-delete (widget)
55789
e004c3c8a4b6 (customize-face, customize-face-other-window, custom-face-edit-delete):
Juanma Barranquero <lekktu@gmail.com>
parents: 55272
diff changeset
3113 "Remove WIDGET from the buffer."
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3114 (let ((inactive (widget-get widget :inactive))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3115 (inhibit-read-only t)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3116 (inhibit-modification-hooks t))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3117 (if (not inactive)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3118 ;; Widget is alive, we don't have to do anything special
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3119 (widget-default-delete widget)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3120 ;; WIDGET is already deleted because we did so to inactivate it;
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3121 ;; now just get rid of the label we put in its place.
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3122 (delete-region (car (cdr inactive))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3123 (+ (car (cdr inactive)) (cdr (cdr inactive))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3124 (widget-put widget :inactive nil))))
49521
c259d8177692 2003-01-29 Didier Verna <didier@xemacs.org>
John Paul Wallington <jpw@pobox.com>
parents: 49300
diff changeset
3125
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3126
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3127 (defun custom-face-edit-attribute-tag (widget)
99298
225286546090 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 98001
diff changeset
3128 "Return the first :tag property in WIDGET or one of its children."
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3129 (let ((tag (widget-get widget :tag)))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3130 (or (and (not (equal tag "")) tag)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3131 (let ((children (widget-get widget :children)))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3132 (while (and (null tag) children)
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3133 (setq tag (custom-face-edit-attribute-tag (pop children))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3134 tag))))
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3135
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3136 ;;; The `custom-display' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3137
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3138 (define-widget 'custom-display 'menu-choice
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3139 "Select a display type."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3140 :tag "Display"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3141 :value t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3142 :help-echo "Specify frames where the face attributes should be used."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3143 :args '((const :tag "all" t)
58941
a7271df99c36 (custom-display): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58940
diff changeset
3144 (const :tag "defaults" default)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3145 (checklist
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3146 :offset 0
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3147 :extra-offset 9
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3148 :args ((group :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3149 Only match the specified window systems.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3150 (const :format "Type: "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3151 type)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3152 (checklist :inline t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3153 :offset 0
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3154 (const :format "X "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3155 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3156 The X11 Window System.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3157 x)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3158 (const :format "PM "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3159 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3160 OS/2 Presentation Manager.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3161 pm)
19684
d5378da3dd73 (custom-display): Use w32 instead of win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19316
diff changeset
3162 (const :format "W32 "
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3163 :sibling-args (:help-echo "\
19684
d5378da3dd73 (custom-display): Use w32 instead of win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19316
diff changeset
3164 Windows NT/9X.")
d5378da3dd73 (custom-display): Use w32 instead of win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19316
diff changeset
3165 w32)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 94678
diff changeset
3166 (const :format "NS "
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 94678
diff changeset
3167 :sibling-args (:help-echo "\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 94678
diff changeset
3168 GNUstep or Macintosh OS Cocoa interface.")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 94678
diff changeset
3169 ns)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3170 (const :format "DOS "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3171 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3172 Plain MS-DOS.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3173 pc)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3174 (const :format "TTY%n"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3175 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3176 Plain text terminals.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3177 tty)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3178 (group :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3179 Only match the frames with the specified color support.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3180 (const :format "Class: "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3181 class)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3182 (checklist :inline t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3183 :offset 0
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3184 (const :format "Color "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3185 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3186 Match color frames.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3187 color)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3188 (const :format "Grayscale "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3189 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3190 Match grayscale frames.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3191 grayscale)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3192 (const :format "Monochrome%n"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3193 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3194 Match frames with no color support.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3195 mono)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3196 (group :sibling-args (:help-echo "\
55944
173cdf06168d (custom-display): Add `min-colors'.
Juri Linkov <juri@jurta.org>
parents: 55789
diff changeset
3197 The minimum number of colors the frame should support.")
173cdf06168d (custom-display): Add `min-colors'.
Juri Linkov <juri@jurta.org>
parents: 55789
diff changeset
3198 (const :format "" min-colors)
173cdf06168d (custom-display): Add `min-colors'.
Juri Linkov <juri@jurta.org>
parents: 55789
diff changeset
3199 (integer :tag "Minimum number of colors" ))
173cdf06168d (custom-display): Add `min-colors'.
Juri Linkov <juri@jurta.org>
parents: 55789
diff changeset
3200 (group :sibling-args (:help-echo "\
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3201 Only match frames with the specified intensity.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3202 (const :format "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3203 Background brightness: "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3204 background)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3205 (checklist :inline t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3206 :offset 0
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3207 (const :format "Light "
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3208 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3209 Match frames with light backgrounds.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3210 light)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3211 (const :format "Dark\n"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3212 :sibling-args (:help-echo "\
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3213 Match frames with dark backgrounds.")
45724
ee1a7b81cb0e (custom-display): Add support for `supports' predicate.
Miles Bader <miles@gnu.org>
parents: 45244
diff changeset
3214 dark)))
ee1a7b81cb0e (custom-display): Add support for `supports' predicate.
Miles Bader <miles@gnu.org>
parents: 45244
diff changeset
3215 (group :sibling-args (:help-echo "\
ee1a7b81cb0e (custom-display): Add support for `supports' predicate.
Miles Bader <miles@gnu.org>
parents: 45244
diff changeset
3216 Only match frames that support the specified face attributes.")
ee1a7b81cb0e (custom-display): Add support for `supports' predicate.
Miles Bader <miles@gnu.org>
parents: 45244
diff changeset
3217 (const :format "Supports attributes:" supports)
45725
abb237aa3c61 (custom-display): Use correct syntax for `supports' attributes.
Miles Bader <miles@gnu.org>
parents: 45724
diff changeset
3218 (custom-face-edit :inline t :format "%n%v"))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3219
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3220 ;;; The `custom-face' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3221
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3222 (defface custom-face-tag
97091
49ee444c9f1b (custom-face-tag): Inherit from custom-variable-tag
Juri Linkov <juri@jurta.org>
parents: 97043
diff changeset
3223 `((t :inherit custom-variable-tag))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3224 "Face used for face tags."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
3225 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
3226 (define-obsolete-face-alias 'custom-face-tag-face 'custom-face-tag "22.1")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3227
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3228 (defcustom custom-face-default-form 'selected
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3229 "Default form of displaying face definition."
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3230 :type '(choice (const all)
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3231 (const selected)
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3232 (const lisp))
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21649
diff changeset
3233 :group 'custom-buffer
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21649
diff changeset
3234 :version "20.3")
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3235
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3236 (define-widget 'custom-face 'custom
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3237 "Customize face."
99404
16c6946eeb2e (custom-variable-value-create, custom-face):
Glenn Morris <rgm@gnu.org>
parents: 99403
diff changeset
3238 :sample-face 'custom-face-tag
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3239 :help-echo "Set or reset this face."
28716
e9fb71a3e51d (custom-face): Fix parenthesis.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28700
diff changeset
3240 :documentation-property #'face-doc-string
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3241 :value-create 'custom-face-value-create
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3242 :action 'custom-face-action
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
3243 :custom-category 'face
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3244 :custom-form nil ; defaults to value of `custom-face-default-form'
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3245 :custom-set 'custom-face-set
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3246 :custom-mark-to-save 'custom-face-mark-to-save
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3247 :custom-reset-current 'custom-redraw
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3248 :custom-reset-saved 'custom-face-reset-saved
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
3249 :custom-reset-standard 'custom-face-reset-standard
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3250 :custom-mark-to-reset-standard 'custom-face-mark-to-reset-standard
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3251 :custom-standard-value 'custom-face-standard-value
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3252 :custom-state-set-and-redraw 'custom-face-state-set-and-redraw
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3253 :custom-menu 'custom-face-menu-create)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3254
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3255 (define-widget 'custom-face-all 'editable-list
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3256 "An editable list of display specifications and attributes."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3257 :entry-format "%i %d %v"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3258 :insert-button-args '(:help-echo "Insert new display specification here.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3259 :append-button-args '(:help-echo "Append new display specification here.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3260 :delete-button-args '(:help-echo "Delete this display specification.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3261 :args '((group :format "%v" custom-display custom-face-edit)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3262
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3263 (defconst custom-face-all (widget-convert 'custom-face-all)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3264 "Converted version of the `custom-face-all' widget.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3265
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3266 (define-widget 'custom-display-unselected 'item
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3267 "A display specification that doesn't match the selected display."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3268 :match 'custom-display-unselected-match)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3269
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3270 (defun custom-display-unselected-match (widget value)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3271 "Non-nil if VALUE is an unselected display specification."
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
3272 (not (face-spec-set-match-display value (selected-frame))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3273
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3274 (define-widget 'custom-face-selected 'group
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3275 "Edit the attributes of the selected display in a face specification."
58940
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3276 :args '((choice :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3277 (group :tag "With Defaults" :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3278 (group (const :tag "" default)
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3279 (custom-face-edit :tag " Default\n Attributes"))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3280 (repeat :format ""
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3281 :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3282 (group custom-display-unselected sexp))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3283 (group (sexp :format "")
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3284 (custom-face-edit :tag " Overriding\n Attributes"))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3285 (repeat :format ""
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3286 :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3287 sexp))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3288 (group :tag "No Defaults" :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3289 (repeat :format ""
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3290 :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3291 (group custom-display-unselected sexp))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3292 (group (sexp :format "")
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3293 (custom-face-edit :tag "\n Attributes"))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3294 (repeat :format ""
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3295 :inline t
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3296 sexp)))))
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3297
841754cd73c6 (custom-face-selected): Handle `default' specs.
Richard M. Stallman <rms@gnu.org>
parents: 58797
diff changeset
3298
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3299
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3300 (defconst custom-face-selected (widget-convert 'custom-face-selected)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3301 "Converted version of the `custom-face-selected' widget.")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3302
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3303 (defun custom-filter-face-spec (spec filter-index &optional default-filter)
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3304 "Return a canonicalized version of SPEC using.
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3305 FILTER-INDEX is the index in the entry for each attribute in
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3306 `custom-face-attributes' at which the appropriate filter function can be
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3307 found, and DEFAULT-FILTER is the filter to apply for attributes that
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3308 don't specify one."
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3309 (mapcar (lambda (entry)
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3310 ;; Filter a single face-spec entry
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3311 (let ((tests (car entry))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3312 (unfiltered-attrs
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3313 ;; Handle both old- and new-style attribute syntax
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3314 (if (listp (car (cdr entry)))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3315 (car (cdr entry))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3316 (cdr entry)))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3317 (filtered-attrs nil))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3318 ;; Filter each face attribute
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3319 (while unfiltered-attrs
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3320 (let* ((attr (pop unfiltered-attrs))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3321 (pre-filtered-value (pop unfiltered-attrs))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3322 (filter
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3323 (or (nth filter-index (assq attr custom-face-attributes))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3324 default-filter))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3325 (filtered-value
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3326 (if filter
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3327 (funcall filter pre-filtered-value)
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3328 pre-filtered-value)))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3329 (push filtered-value filtered-attrs)
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3330 (push attr filtered-attrs)))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3331 ;;
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3332 (list tests filtered-attrs)))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3333 spec))
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3334
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3335 (defun custom-pre-filter-face-spec (spec)
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3336 "Return SPEC changed as necessary for editing by the face customization widget.
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3337 SPEC must be a full face spec."
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3338 (custom-filter-face-spec spec 2))
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3339
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3340 (defun custom-post-filter-face-spec (spec)
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3341 "Return the customized SPEC in a form suitable for setting the face."
39606
1b4259bc2f74 (custom-face-edit-convert-widget)
Miles Bader <miles@gnu.org>
parents: 39153
diff changeset
3342 (custom-filter-face-spec spec 3))
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3343
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3344 (defun custom-face-value-create (widget)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3345 "Create a list of the display specifications for WIDGET."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3346 (let ((buttons (widget-get widget :buttons))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3347 children
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3348 (symbol (widget-get widget :value))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3349 (tag (widget-get widget :tag))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3350 (state (widget-get widget :custom-state))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3351 (begin (point))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3352 (is-last (widget-get widget :custom-last))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3353 (prefix (widget-get widget :custom-prefix)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3354 (unless tag
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3355 (setq tag (prin1-to-string symbol)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3356 (cond ((eq custom-buffer-style 'tree)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3357 (insert prefix (if is-last " `--- " " |--- "))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3358 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3359 widget 'custom-browse-face-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3360 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3361 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3362 (widget-put widget :buttons buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3363 (t
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3364 ;; Visibility.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3365 (push (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3366 widget 'custom-visibility
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3367 :help-echo "Hide or show this face."
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3368 :on "Hide"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3369 :off "Show"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3370 :on-image "down"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3371 :off-image "right"
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3372 :action 'custom-toggle-parent
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3373 (not (eq state 'hidden)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3374 buttons)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3375 (insert " ")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3376 ;; Create tag.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3377 (insert tag)
34041
40708840c132 (custom-face-value-create): Always emphasize tag.
Gerd Moellmann <gerd@gnu.org>
parents: 33986
diff changeset
3378 (widget-specify-sample widget begin (point))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3379 (if (eq custom-buffer-style 'face)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3380 (insert " ")
33024
42e118959715 (custom-face-value-create): If face name doesn't end with "face", add
Miles Bader <miles@gnu.org>
parents: 32936
diff changeset
3381 (if (string-match "face\\'" tag)
42e118959715 (custom-face-value-create): If face name doesn't end with "face", add
Miles Bader <miles@gnu.org>
parents: 32936
diff changeset
3382 (insert ":")
42e118959715 (custom-face-value-create): If face name doesn't end with "face", add
Miles Bader <miles@gnu.org>
parents: 32936
diff changeset
3383 (insert " face: ")))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3384 ;; Sample.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3385 (push (widget-create-child-and-convert widget 'item
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3386 :format "(%{%t%})"
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3387 :sample-face symbol
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3388 :tag "sample")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3389 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3390 ;; Magic.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3391 (insert "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3392 (let ((magic (widget-create-child-and-convert
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3393 widget 'custom-magic nil)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3394 (widget-put widget :custom-magic magic)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3395 (push magic buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3396 ;; Update buttons.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3397 (widget-put widget :buttons buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3398 ;; Insert documentation.
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3399 (widget-put widget :documentation-indent 3)
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3400 (widget-add-documentation-string-button
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3401 widget :visibility-widget 'custom-visibility)
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3402
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3403 ;; The comment field
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3404 (unless (eq state 'hidden)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3405 (let* ((comment (get symbol 'face-comment))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3406 (comment-widget
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3407 (widget-create-child-and-convert
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3408 widget 'custom-comment
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3409 :parent widget
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3410 :value (or comment ""))))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3411 (widget-put widget :comment-widget comment-widget)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3412 (push comment-widget children)))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3413 ;; See also.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3414 (unless (eq state 'hidden)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3415 (when (eq (widget-get widget :custom-level) 1)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3416 (custom-add-parent-links widget))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3417 (custom-add-see-also widget))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3418 ;; Editor.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3419 (unless (eq (preceding-char) ?\n)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3420 (insert "\n"))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3421 (unless (eq state 'hidden)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3422 (message "Creating face editor...")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3423 (custom-load-widget widget)
20411
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3424 (unless (widget-get widget :custom-form)
089ca3e66e6d (custom-unlispify-remove-prefixes): Reference to
Karl Heuer <kwzh@gnu.org>
parents: 20398
diff changeset
3425 (widget-put widget :custom-form custom-face-default-form))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3426 (let* ((symbol (widget-value widget))
40825
22caa22b7399 2001-11-07 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 40801
diff changeset
3427 (spec (or (get symbol 'customized-face)
22caa22b7399 2001-11-07 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 40801
diff changeset
3428 (get symbol 'saved-face)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3429 (get symbol 'face-defface-spec)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3430 ;; Attempt to construct it.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3431 (list (list t (custom-face-attributes-get
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3432 symbol (selected-frame))))))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3433 (form (widget-get widget :custom-form))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3434 (indent (widget-get widget :indent))
19097
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3435 edit)
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3436 ;; If the user has changed this face in some other way,
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3437 ;; edit it as the user has specified it.
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3438 (if (not (face-spec-match-p symbol spec (selected-frame)))
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3439 (setq spec (list (list t (face-attr-construct symbol (selected-frame))))))
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3440 (setq spec (custom-pre-filter-face-spec spec))
19097
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3441 (setq edit (widget-create-child-and-convert
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3442 widget
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3443 (cond ((and (eq form 'selected)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3444 (widget-apply custom-face-selected
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3445 :match spec))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3446 (when indent (insert-char ?\ indent))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3447 'custom-face-selected)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3448 ((and (not (eq form 'lisp))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3449 (widget-apply custom-face-all
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3450 :match spec))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3451 'custom-face-all)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3452 (t
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3453 (when indent (insert-char ?\ indent))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3454 'sexp))
19097
200ff7e7d620 (custom-face-value-create): Take account
Richard M. Stallman <rms@gnu.org>
parents: 19040
diff changeset
3455 :value spec))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3456 (custom-face-state-set widget)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3457 (push edit children)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3458 (widget-put widget :children children))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3459 (message "Creating face editor...done"))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3460
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3461 (defvar custom-face-menu
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3462 `(("Set for Current Session" custom-face-set)
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
3463 ,@(when (or custom-file init-file-user)
68278
125d04254c22 (custom-buffer-create-internal): State in the text above
Luc Teirlinck <teirllm@auburn.edu>
parents: 68232
diff changeset
3464 '(("Save for Future Sessions" custom-face-save)))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3465 ("Undo Edits" custom-redraw
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3466 (lambda (widget)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3467 (memq (widget-get widget :custom-state) '(modified changed))))
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3468 ("Reset to Saved" custom-face-reset-saved
68021
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
3469 (lambda (widget)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
3470 (or (get (widget-value widget) 'saved-face)
271ab3aed790 * cus-edit.el (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68020
diff changeset
3471 (get (widget-value widget) 'saved-face-comment))))
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
3472 ,@(when (or custom-file init-file-user)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3473 '(("Erase Customization" custom-face-reset-standard
67744
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
3474 (lambda (widget)
1c62bde28518 (custom-variable-prompt): Say "variable" in prompt.
Richard M. Stallman <rms@gnu.org>
parents: 67677
diff changeset
3475 (get (widget-value widget) 'face-defface-spec)))))
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
3476 ("---" ignore ignore)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3477 ("Add Comment" custom-comment-show custom-comment-invisible-p)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3478 ("---" ignore ignore)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3479 ("For Current Display" custom-face-edit-selected
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3480 (lambda (widget)
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3481 (not (eq (widget-get widget :custom-form) 'selected))))
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3482 ("For All Kinds of Displays" custom-face-edit-all
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
3483 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
3484 (not (eq (widget-get widget :custom-form) 'all))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
3485 ("Show Lisp Expression" custom-face-edit-lisp
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
3486 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
3487 (not (eq (widget-get widget :custom-form) 'lisp)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3488 "Alist of actions for the `custom-face' widget.
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3489 Each entry has the form (NAME ACTION FILTER) where NAME is the name of
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3490 the menu entry, ACTION is the function to call on the widget when the
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3491 menu is selected, and FILTER is a predicate which takes a `custom-face'
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3492 widget as an argument, and returns non-nil if ACTION is valid on that
26625
faf989c7a28e (Custom-reset-standard): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26451
diff changeset
3493 widget. If FILTER is nil, ACTION is always valid.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3494
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3495 (defun custom-face-edit-selected (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3496 "Edit selected attributes of the value of WIDGET."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3497 (widget-put widget :custom-state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3498 (widget-put widget :custom-form 'selected)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3499 (custom-redraw widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3500
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3501 (defun custom-face-edit-all (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3502 "Edit all attributes of the value of WIDGET."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3503 (widget-put widget :custom-state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3504 (widget-put widget :custom-form 'all)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3505 (custom-redraw widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3506
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3507 (defun custom-face-edit-lisp (widget)
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
3508 "Edit the Lisp representation of the value of WIDGET."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3509 (widget-put widget :custom-state 'unknown)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3510 (widget-put widget :custom-form 'lisp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3511 (custom-redraw widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3512
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3513 (defun custom-face-state-set (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3514 "Set the state of WIDGET."
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3515 (let* ((symbol (widget-value widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3516 (comment (get symbol 'face-comment))
51277
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3517 tmp temp
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3518 (state
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3519 (cond ((progn
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3520 (setq tmp (get symbol 'customized-face))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3521 (setq temp (get symbol 'customized-face-comment))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3522 (or tmp temp))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3523 (if (equal temp comment)
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3524 'set
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3525 'changed))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3526 ((progn
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3527 (setq tmp (get symbol 'saved-face))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3528 (setq temp (get symbol 'saved-face-comment))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3529 (or tmp temp))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3530 (if (equal temp comment)
67784
7c9d6a4a35c7 (custom-face-state-set): Check theme-value.
Chong Yidong <cyd@stupidchicken.com>
parents: 67783
diff changeset
3531 (cond
7c9d6a4a35c7 (custom-face-state-set): Check theme-value.
Chong Yidong <cyd@stupidchicken.com>
parents: 67783
diff changeset
3532 ((eq 'user (caar (get symbol 'theme-face)))
7c9d6a4a35c7 (custom-face-state-set): Check theme-value.
Chong Yidong <cyd@stupidchicken.com>
parents: 67783
diff changeset
3533 'saved)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
3534 ((eq 'changed (caar (get symbol 'theme-face)))
67784
7c9d6a4a35c7 (custom-face-state-set): Check theme-value.
Chong Yidong <cyd@stupidchicken.com>
parents: 67783
diff changeset
3535 'changed)
7c9d6a4a35c7 (custom-face-state-set): Check theme-value.
Chong Yidong <cyd@stupidchicken.com>
parents: 67783
diff changeset
3536 (t 'themed))
51277
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3537 'changed))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3538 ((get symbol 'face-defface-spec)
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3539 (if (equal comment nil)
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3540 'standard
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3541 'changed))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3542 (t
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3543 'rogue))))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3544 ;; If the user called set-face-attribute to change the default
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3545 ;; for new frames, this face is "set outside of Customize".
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3546 (if (and (not (eq state 'rogue))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3547 (get symbol 'face-modified))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3548 (setq state 'changed))
caaa4fda6808 (custom-face-state-set): non-nil `face-modified'
Richard M. Stallman <rms@gnu.org>
parents: 50283
diff changeset
3549 (widget-put widget :custom-state state)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3550
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3551 (defun custom-face-action (widget &optional event)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3552 "Show the menu for `custom-face' WIDGET.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3553 Optional EVENT is the location for the menu."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3554 (if (eq (widget-get widget :custom-state) 'hidden)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3555 (custom-toggle-hide widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3556 (let* ((completion-ignore-case t)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3557 (symbol (widget-get widget :value))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
3558 (answer (widget-choose (concat "Operation on "
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
3559 (custom-unlispify-tag-name symbol))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3560 (custom-menu-filter custom-face-menu
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3561 widget)
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
3562 event)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3563 (if answer
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3564 (funcall answer widget)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3565
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3566 (defun custom-face-set (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3567 "Make the face attributes in WIDGET take effect."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3568 (let* ((symbol (widget-value widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3569 (child (car (widget-get widget :children)))
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3570 (value (custom-post-filter-face-spec (widget-value child)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3571 (comment-widget (widget-get widget :comment-widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3572 (comment (widget-value comment-widget)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3573 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3574 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3575 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
3576 (custom-comment-hide comment-widget))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3577 (put symbol 'customized-face value)
69624
efd1add5bedf * cus-edit.el (custom-face-set): Call custom-push-theme before
Chong Yidong <cyd@stupidchicken.com>
parents: 69540
diff changeset
3578 (custom-push-theme 'theme-face symbol 'user 'set value)
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3579 (if (face-spec-choose value)
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3580 (face-spec-set symbol value t)
33843
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3581 ;; face-set-spec ignores empty attribute lists, so just give it
388a61e78c53 (custom-filter-face-spec, custom-pre-filter-face-spec)
Miles Bader <miles@gnu.org>
parents: 33774
diff changeset
3582 ;; something harmless instead.
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3583 (face-spec-set symbol '((t :foreground unspecified)) t))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3584 (put symbol 'customized-face-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3585 (put symbol 'face-comment comment)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3586 (custom-face-state-set widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3587 (custom-redraw-magic widget)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3588
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3589 (defun custom-face-mark-to-save (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3590 "Mark for saving the face edited by WIDGET."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3591 (let* ((symbol (widget-value widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3592 (child (car (widget-get widget :children)))
35441
d85fe63db92b (custom-face-save): Do post-processing on the face's new value like
Miles Bader <miles@gnu.org>
parents: 35265
diff changeset
3593 (value (custom-post-filter-face-spec (widget-value child)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3594 (comment-widget (widget-get widget :comment-widget))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3595 (comment (widget-value comment-widget)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3596 (when (equal comment "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3597 (setq comment nil)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3598 ;; Make the comment invisible by hand if it's empty
25824
0d1ba90ad774 (custom-comment): Change widget definition.
Dave Love <fx@gnu.org>
parents: 25685
diff changeset
3599 (custom-comment-hide comment-widget))
68026
c7ec296cf313 * cus-edit.el (custom-face-save): Push to theme-face before
Chong Yidong <cyd@stupidchicken.com>
parents: 68021
diff changeset
3600 (custom-push-theme 'theme-face symbol 'user 'set value)
35441
d85fe63db92b (custom-face-save): Do post-processing on the face's new value like
Miles Bader <miles@gnu.org>
parents: 35265
diff changeset
3601 (if (face-spec-choose value)
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3602 (face-spec-set symbol value t)
35441
d85fe63db92b (custom-face-save): Do post-processing on the face's new value like
Miles Bader <miles@gnu.org>
parents: 35265
diff changeset
3603 ;; face-set-spec ignores empty attribute lists, so just give it
d85fe63db92b (custom-face-save): Do post-processing on the face's new value like
Miles Bader <miles@gnu.org>
parents: 35265
diff changeset
3604 ;; something harmless instead.
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3605 (face-spec-set symbol '((t :foreground unspecified)) t))
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3606 (unless (eq (widget-get widget :custom-state) 'standard)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3607 (put symbol 'saved-face value))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3608 (put symbol 'customized-face nil)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3609 (put symbol 'face-comment comment)
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3610 (put symbol 'customized-face-comment nil)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3611 (put symbol 'saved-face-comment comment)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3612
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3613 (defsubst custom-face-state-set-and-redraw (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3614 "Set state of face widget WIDGET and redraw with current settings."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3615 (custom-face-state-set widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3616 (custom-redraw-magic widget))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3617
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3618 (defun custom-face-save (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3619 "Save the face edited by WIDGET."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3620 (custom-face-mark-to-save widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3621 (custom-save-all)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3622 (custom-face-state-set-and-redraw widget))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3623
68278
125d04254c22 (custom-buffer-create-internal): State in the text above
Luc Teirlinck <teirllm@auburn.edu>
parents: 68232
diff changeset
3624 ;; For backward compatibility.
125d04254c22 (custom-buffer-create-internal): State in the text above
Luc Teirlinck <teirllm@auburn.edu>
parents: 68232
diff changeset
3625 (define-obsolete-function-alias 'custom-face-save-command 'custom-face-save
125d04254c22 (custom-buffer-create-internal): State in the text above
Luc Teirlinck <teirllm@auburn.edu>
parents: 68232
diff changeset
3626 "22.1")
125d04254c22 (custom-buffer-create-internal): State in the text above
Luc Teirlinck <teirllm@auburn.edu>
parents: 68232
diff changeset
3627
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3628 (defun custom-face-reset-saved (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3629 "Restore WIDGET to the face's default attributes."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3630 (let* ((symbol (widget-value widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3631 (child (car (widget-get widget :children)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3632 (value (get symbol 'saved-face))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3633 (comment (get symbol 'saved-face-comment))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3634 (comment-widget (widget-get widget :comment-widget)))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3635 (unless (or value comment)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3636 (error "No saved value for this face"))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3637 (put symbol 'customized-face nil)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3638 (put symbol 'customized-face-comment nil)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
3639 (custom-push-theme 'theme-face symbol 'user 'set value)
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3640 (face-spec-set symbol value t)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3641 (put symbol 'face-comment comment)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3642 (widget-value-set child value)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3643 ;; This call manages the comment visibility
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3644 (widget-value-set comment-widget (or comment ""))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3645 (custom-face-state-set widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3646 (custom-redraw-magic widget)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3647
46408
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3648 (defun custom-face-standard-value (widget)
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3649 (get (widget-value widget) 'face-defface-spec))
ccaa90ab16a3 New operation :custom-standard-value.
Richard M. Stallman <rms@gnu.org>
parents: 45725
diff changeset
3650
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3651 (defun custom-face-mark-to-reset-standard (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3652 "Restore widget WIDGET to the face's standard attribute values.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3653 If `custom-reset-standard-faces-list' is nil, save, reset and
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3654 redraw the widget immediately."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3655 (let* ((symbol (widget-value widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3656 (child (car (widget-get widget :children)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3657 (value (get symbol 'face-defface-spec))
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3658 (comment-widget (widget-get widget :comment-widget)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3659 (unless value
17641
4650d25e48f6 Say "standard settings" instead of "factory settings".
Richard M. Stallman <rms@gnu.org>
parents: 17550
diff changeset
3660 (error "No standard setting for this face"))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3661 (put symbol 'customized-face nil)
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3662 (put symbol 'customized-face-comment nil)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
3663 (custom-push-theme 'theme-face symbol 'user 'reset)
87486
a4cfa0059507 (custom-face-set): Call `face-spec-set' with FOR-DEFFACE.
Richard M. Stallman <rms@gnu.org>
parents: 86334
diff changeset
3664 (face-spec-set symbol value t)
67792
1c774eee2980 * cus-edit.el (custom-variable-set, custom-variable-set)
Chong Yidong <cyd@stupidchicken.com>
parents: 67791
diff changeset
3665 (custom-theme-recalc-face symbol)
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3666 (if (and custom-reset-standard-faces-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3667 (or (get symbol 'saved-face) (get symbol 'saved-face-comment)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3668 ;; Do this later.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3669 (progn
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3670 (put symbol 'saved-face nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3671 (put symbol 'saved-face-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3672 ;; Append this to `custom-reset-standard-faces-list' and have
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3673 ;; `custom-reset-standard-save-and-update' save setting to the
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3674 ;; file, update the widget's state, and redraw it.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3675 (setq custom-reset-standard-faces-list
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3676 (cons widget custom-reset-standard-faces-list)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3677 (when (or (get symbol 'saved-face) (get symbol 'saved-face-comment))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3678 (put symbol 'saved-face nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3679 (put symbol 'saved-face-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3680 (custom-save-all))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3681 (put symbol 'face-comment nil)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3682 (widget-value-set child
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3683 (custom-pre-filter-face-spec
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3684 (list (list t (custom-face-attributes-get
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3685 symbol nil)))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3686 ;; This call manages the comment visibility
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3687 (widget-value-set comment-widget "")
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3688 (custom-face-state-set widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3689 (custom-redraw-magic widget))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3690
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3691 (defun custom-face-reset-standard (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3692 "Restore WIDGET to the face's standard attribute values.
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3693 This operation eliminates any saved attributes for the face,
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3694 restoring it to the state of a face that has never been customized."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3695 (let (custom-reset-standard-faces-list)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3696 (custom-face-mark-to-reset-standard widget)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3697
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3698 ;;; The `face' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3699
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3700 (defvar widget-face-prompt-value-history nil
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3701 "History of input to `widget-face-prompt-value'.")
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3702
61307
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3703 (define-widget 'face 'symbol
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3704 "A Lisp face name (with sample)."
66941
1710aca8150f (Custom-reset-standard): Verify that
Richard M. Stallman <rms@gnu.org>
parents: 66904
diff changeset
3705 :format "%{%t%}: (%{sample%}) %v"
61307
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3706 :tag "Face"
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3707 :value 'default
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3708 :sample-face-get 'widget-face-sample-face-get
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3709 :notify 'widget-face-notify
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3710 :match (lambda (widget value) (facep value))
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3711 :complete-function (lambda ()
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3712 (interactive)
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3713 (lisp-complete-symbol 'facep))
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3714 :prompt-match 'facep
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3715 :prompt-history 'widget-face-prompt-value-history
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3716 :validate (lambda (widget)
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3717 (unless (facep (widget-value widget))
61307
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3718 (widget-put widget
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3719 :error (format "Invalid face: %S"
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3720 (widget-value widget)))
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3721 widget)))
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3722
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3723 (defun widget-face-sample-face-get (widget)
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3724 (let ((value (widget-value widget)))
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3725 (if (facep value)
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3726 value
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3727 'default)))
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3728
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3729 (defun widget-face-notify (widget child &optional event)
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3730 "Update the sample, and notify the parent."
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3731 (overlay-put (widget-get widget :sample-overlay)
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3732 'face (widget-apply widget :sample-face-get))
0592ebb75598 (face): Derive from symbol widget. Display sample
David Ponce <david@dponce.com>
parents: 60296
diff changeset
3733 (widget-default-notify widget child event))
60280
f0850dec46a9 (custom-buffer-create-internal): Improve progress msgs.
Richard M. Stallman <rms@gnu.org>
parents: 60214
diff changeset
3734
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3735
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3736 ;;; The `hook' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3737
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3738 (define-widget 'hook 'list
73797
2e5ad09135ff (hook): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 73795
diff changeset
3739 "An Emacs Lisp hook."
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3740 :value-to-internal (lambda (widget value)
19886
539d06d1f0da (customize-group): Handle groups not yet loaded.
Richard M. Stallman <rms@gnu.org>
parents: 19883
diff changeset
3741 (if (and value (symbolp value))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3742 (list value)
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3743 value))
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3744 :match (lambda (widget value)
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3745 (or (symbolp value)
20174
e1ca1fe89e6e (hook): Use `widget-group-match' instead of
Karl Heuer <kwzh@gnu.org>
parents: 20100
diff changeset
3746 (widget-group-match widget value)))
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
3747 ;; Avoid adding undefined functions to the hook, especially for
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
3748 ;; things like `find-file-hook' or even more basic ones, to avoid
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
3749 ;; chaos.
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
3750 :set (lambda (symbol value)
28310
9ba6478b7a27 (hook): Use `dolist' instead of CL's `mapc'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28245
diff changeset
3751 (dolist (elt value)
9ba6478b7a27 (hook): Use `dolist' instead of CL's `mapc'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28245
diff changeset
3752 (if (fboundp elt)
9ba6478b7a27 (hook): Use `dolist' instead of CL's `mapc'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28245
diff changeset
3753 (add-hook symbol elt))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3754 :convert-widget 'custom-hook-convert-widget
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3755 :tag "Hook")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3756
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3757 (defun custom-hook-convert-widget (widget)
27250
807fc106b24c (custom-hook-convert-widget): Fix comment.
Gerd Moellmann <gerd@gnu.org>
parents: 26803
diff changeset
3758 ;; Handle `:options'.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3759 (let* ((options (widget-get widget :options))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3760 (other `(editable-list :inline t
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3761 :entry-format "%i %d%v"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3762 (function :format " %v")))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3763 (args (if options
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3764 (list `(checklist :inline t
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3765 ,@(mapcar (lambda (entry)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3766 `(function-item ,entry))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3767 options))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3768 other)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3769 (list other))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3770 (widget-put widget :args args)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3771 widget))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3772
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3773 ;;; The `custom-group-link' Widget.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3774
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3775 (define-widget 'custom-group-link 'link
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3776 "Show parent in other window when activated."
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
3777 :button-face 'custom-link
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
3778 :mouse-face 'highlight
68892
93b583aac002 * wid-edit.el (widget-button-click): Use :pressed-face property
Chong Yidong <cyd@stupidchicken.com>
parents: 68406
diff changeset
3779 :pressed-face 'highlight
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
3780 :help-echo "Create customization buffer for this group."
73795
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
3781 :keymap custom-mode-link-map
4064a5037466 (custom-mode-map): Move defvar above code using it.
Chong Yidong <cyd@stupidchicken.com>
parents: 73762
diff changeset
3782 :follow-link 'mouse-face
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3783 :action 'custom-group-link-action)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3784
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3785 (defun custom-group-link-action (widget &rest ignore)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3786 (customize-group (widget-value widget)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3787
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3788 ;;; The `custom-group' Widget.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3789
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
3790 (defcustom custom-group-tag-faces nil
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3791 ;; In XEmacs, this ought to play games with font size.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3792 ;; Fixme: make it do so in Emacs.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3793 "Face used for group tags.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3794 The first member is used for level 1 groups, the second for level 2,
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3795 and so forth. The remaining group tags are shown with `custom-group-tag'."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3796 :type '(repeat face)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
3797 :group 'custom-faces)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3798
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3799 (defface custom-group-tag-1
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3800 `((((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3801 (background dark))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
3802 (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
3803 (((min-colors 88) (class color)
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
3804 (background light))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
3805 (:foreground "red1" :weight bold :height 1.2 :inherit variable-pitch))
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3806 (((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3807 (background light))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
3808 (:foreground "red" :weight bold :height 1.2 :inherit variable-pitch))
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
3809 (t (:weight bold)))
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3810 "Face used for group tags."
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3811 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
3812 (define-obsolete-face-alias 'custom-group-tag-face-1 'custom-group-tag-1 "22.1")
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3813
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3814 (defface custom-group-tag
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3815 `((((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3816 (background dark))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3817 (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
3818 (((min-colors 88) (class color)
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61307
diff changeset
3819 (background light))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3820 (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
28172
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3821 (((class color)
b243caac6505 (custom-variable-tag-face): Handle case that
Gerd Moellmann <gerd@gnu.org>
parents: 28130
diff changeset
3822 (background light))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3823 (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
42451
cade20d9a300 (custom-face-edit-fix-value): Delete `assert' call.
Richard M. Stallman <rms@gnu.org>
parents: 42448
diff changeset
3824 (t (:weight bold)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3825 "Face used for low level group tags."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
3826 :group 'custom-faces)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104543
diff changeset
3827 (define-obsolete-face-alias 'custom-group-tag-face 'custom-group-tag "22.1")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3828
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3829 (define-widget 'custom-group 'custom
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3830 "Customize group."
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3831 :format "%v"
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3832 :sample-face-get 'custom-group-sample-face-get
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3833 :documentation-property 'group-documentation
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3834 :help-echo "Set or reset all members of this group."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3835 :value-create 'custom-group-value-create
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3836 :action 'custom-group-action
18089
bb0e09c8ada3 Synched with 1.9904
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18087
diff changeset
3837 :custom-category 'group
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3838 :custom-set 'custom-group-set
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3839 :custom-mark-to-save 'custom-group-mark-to-save
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3840 :custom-reset-current 'custom-group-reset-current
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3841 :custom-reset-saved 'custom-group-reset-saved
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
3842 :custom-reset-standard 'custom-group-reset-standard
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3843 :custom-mark-to-reset-standard 'custom-group-mark-to-reset-standard
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
3844 :custom-state-set-and-redraw 'custom-group-state-set-and-redraw
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3845 :custom-menu 'custom-group-menu-create)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3846
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3847 (defun custom-group-sample-face-get (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3848 ;; Use :sample-face.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3849 (or (nth (1- (widget-get widget :custom-level)) custom-group-tag-faces)
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
3850 'custom-group-tag))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3851
18430
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3852 (define-widget 'custom-group-visibility 'visibility
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3853 "An indicator and manipulator for hidden group contents."
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3854 :create 'custom-group-visibility-create)
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3855
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3856 (defun custom-group-visibility-create (widget)
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3857 (let ((visible (widget-value widget)))
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3858 (if visible
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3859 (insert "--------")))
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3860 (widget-default-create widget))
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
3861
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3862 (defun custom-group-members (symbol groups-only)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3863 "Return SYMBOL's custom group members.
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3864 If GROUPS-ONLY non-nil, return only those members that are groups."
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3865 (if (not groups-only)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3866 (get symbol 'custom-group)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3867 (let (members)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3868 (dolist (entry (get symbol 'custom-group))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3869 (when (eq (nth 1 entry) 'custom-group)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3870 (push entry members)))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3871 (nreverse members))))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3872
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
3873 (defun custom-group-value-create (widget)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3874 "Insert a customize group for WIDGET in the current buffer."
49126
697ca5db73b8 (customize-group, customize-group-other-window):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49104
diff changeset
3875 (unless (eq (widget-get widget :custom-state) 'hidden)
49300
b99be2b86231 (customize-changed-options): Undo last doc change.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49218
diff changeset
3876 (custom-load-widget widget))
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3877 (let* ((state (widget-get widget :custom-state))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3878 (level (widget-get widget :custom-level))
19040
c0dc58ad2d47 Synched with 1.9954.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19022
diff changeset
3879 ;; (indent (widget-get widget :indent))
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3880 (prefix (widget-get widget :custom-prefix))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3881 (buttons (widget-get widget :buttons))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3882 (tag (widget-get widget :tag))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3883 (symbol (widget-value widget))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3884 (members (custom-group-members symbol
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3885 (and (eq custom-buffer-style 'tree)
102101
93915a70e1a4 (custom-group-value-create): Don't throw an error
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
3886 custom-browse-only-groups)))
93915a70e1a4 (custom-group-value-create): Don't throw an error
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
3887 (doc (widget-docstring widget)))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3888 (cond ((and (eq custom-buffer-style 'tree)
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3889 (eq state 'hidden)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3890 (or members (custom-unloaded-widget-p widget)))
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3891 (custom-browse-insert-prefix prefix)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3892 (push (widget-create-child-and-convert
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3893 widget 'custom-browse-visibility
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3894 ;; :tag-glyph "plus"
18856
03eeb83520d8 (custom-group-value-create) <tree>: Don't distinguish
Richard M. Stallman <rms@gnu.org>
parents: 18812
diff changeset
3895 :tag "+")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3896 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3897 (insert "-- ")
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3898 ;; (widget-glyph-insert nil "-- " "horizontal")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3899 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3900 widget 'custom-browse-group-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3901 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3902 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3903 (widget-put widget :buttons buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3904 ((and (eq custom-buffer-style 'tree)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3905 (zerop (length members)))
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3906 (custom-browse-insert-prefix prefix)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3907 (insert "[ ]-- ")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3908 ;; (widget-glyph-insert nil "[ ]" "empty")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3909 ;; (widget-glyph-insert nil "-- " "horizontal")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3910 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3911 widget 'custom-browse-group-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3912 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3913 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3914 (widget-put widget :buttons buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3915 ((eq custom-buffer-style 'tree)
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3916 (custom-browse-insert-prefix prefix)
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3917 (if (zerop (length members))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3918 (progn
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3919 (custom-browse-insert-prefix prefix)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3920 (insert "[ ]-- ")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3921 ;; (widget-glyph-insert nil "[ ]" "empty")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3922 ;; (widget-glyph-insert nil "-- " "horizontal")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3923 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3924 widget 'custom-browse-group-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3925 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3926 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3927 (widget-put widget :buttons buttons))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3928 (push (widget-create-child-and-convert
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3929 widget 'custom-browse-visibility
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3930 ;; :tag-glyph "minus"
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3931 :tag "-")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3932 buttons)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3933 (insert "-\\ ")
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3934 ;; (widget-glyph-insert nil "-\\ " "top")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3935 (push (widget-create-child-and-convert
18562
e22e2a4e683a Synched with 1.9942.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18462
diff changeset
3936 widget 'custom-browse-group-tag)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3937 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3938 (insert " " tag "\n")
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3939 (widget-put widget :buttons buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3940 (message "Creating group...")
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3941 (let* ((members (custom-sort-items
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3942 members
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3943 ;; Never sort the top-level custom group.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3944 (unless (eq symbol 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
3945 custom-browse-sort-alphabetically)
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
3946 custom-browse-order-groups))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3947 (prefixes (widget-get widget :custom-prefixes))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3948 (custom-prefix-list (custom-prefix-add symbol prefixes))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3949 (extra-prefix (if (widget-get widget :custom-last)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3950 " "
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3951 " | "))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3952 (prefix (concat prefix extra-prefix))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3953 children entry)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3954 (while members
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3955 (setq entry (car members)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3956 members (cdr members))
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3957 (push (widget-create-child-and-convert
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3958 widget (nth 1 entry)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3959 :group widget
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3960 :tag (custom-unlispify-tag-name (nth 0 entry))
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3961 :custom-prefixes custom-prefix-list
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3962 :custom-level (1+ level)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3963 :custom-last (null members)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3964 :value (nth 0 entry)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3965 :custom-prefix prefix)
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
3966 children))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3967 (widget-put widget :children (reverse children)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3968 (message "Creating group...done")))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3969 ;; Nested style.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3970 ((eq state 'hidden)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3971 ;; Create level indicator.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3972 ;; Create tag.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3973 (if (eq custom-buffer-style 'links)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3974 (push (widget-create-child-and-convert
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3975 widget 'custom-group-link
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3976 :tag tag
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3977 symbol)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3978 buttons)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3979 (insert-char ?\ (* custom-buffer-indent (1- level)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3980 (insert "-- ")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
3981 (push (widget-create-child-and-convert
20100
0db4553d47cc (custom-group-value-create): Use
Karl Heuer <kwzh@gnu.org>
parents: 19886
diff changeset
3982 widget 'custom-group-visibility
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3983 :help-echo "Show members of this group."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3984 :action 'custom-toggle-parent
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3985 (not (eq state 'hidden)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3986 buttons))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
3987 (insert " : ")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3988 ;; Create magic button.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3989 (let ((magic (widget-create-child-and-convert
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3990 widget 'custom-magic nil)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3991 (widget-put widget :custom-magic magic)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3992 (push magic buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3993 ;; Update buttons.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3994 (widget-put widget :buttons buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
3995 ;; Insert documentation.
18367
f4682a047be1 (custom-magic-value-create):
Richard M. Stallman <rms@gnu.org>
parents: 18364
diff changeset
3996 (if (and (eq custom-buffer-style 'links) (> level 1))
f4682a047be1 (custom-magic-value-create):
Richard M. Stallman <rms@gnu.org>
parents: 18364
diff changeset
3997 (widget-put widget :documentation-indent 0))
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3998 (widget-add-documentation-string-button
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
3999 widget :visibility-widget 'custom-visibility))
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
4000
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4001 ;; Nested style.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4002 (t ;Visible.
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4003 ;; Draw a horizontal line (this works for both graphical
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4004 ;; and text displays):
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4005 (let ((p (point)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4006 (insert "\n")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4007 (put-text-property p (1+ p) 'face '(:underline t))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4008 (overlay-put (make-overlay p (1+ p))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4009 'before-string
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4010 (propertize "\n" 'face '(:underline t)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4011 'display '(space :align-to 999))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4012
18370
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4013 ;; Add parent groups references above the group.
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4014 (when (eq level 1)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4015 (if (custom-add-parent-links widget "Parent groups:")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4016 (insert "\n")))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4017 (insert-char ?\ (* custom-buffer-indent (1- level)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4018 ;; Create tag.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4019 (let ((start (point)))
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4020 (insert tag " group: ")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4021 (widget-specify-sample widget start (point)))
102104
be12df124dbd (custom-group-value-create): Insert some
Martin Rudalics <rudalics@gmx.at>
parents: 102101
diff changeset
4022 (cond
be12df124dbd (custom-group-value-create): Insert some
Martin Rudalics <rudalics@gmx.at>
parents: 102101
diff changeset
4023 ((not doc)
be12df124dbd (custom-group-value-create): Insert some
Martin Rudalics <rudalics@gmx.at>
parents: 102101
diff changeset
4024 (insert " Group definition missing. "))
be12df124dbd (custom-group-value-create): Insert some
Martin Rudalics <rudalics@gmx.at>
parents: 102101
diff changeset
4025 ((< (length doc) 50)
be12df124dbd (custom-group-value-create): Insert some
Martin Rudalics <rudalics@gmx.at>
parents: 102101
diff changeset
4026 (insert doc)))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4027 ;; Create visibility indicator.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4028 (unless (eq custom-buffer-style 'links)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4029 (insert "--------")
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4030 (push (widget-create-child-and-convert
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4031 widget 'visibility
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4032 :help-echo "Hide members of this group."
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4033 :action 'custom-toggle-parent
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4034 (not (eq state 'hidden)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4035 buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4036 (insert " "))
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4037 (insert "\n")
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4038 ;; Create magic button.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4039 (let ((magic (widget-create-child-and-convert
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4040 widget 'custom-magic
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4041 :indent 0
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4042 nil)))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4043 (widget-put widget :custom-magic magic)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4044 (push magic buttons))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4045 ;; Update buttons.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4046 (widget-put widget :buttons buttons)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4047 ;; Insert documentation.
102101
93915a70e1a4 (custom-group-value-create): Don't throw an error
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
4048 (when (and doc (>= (length doc) 50))
93915a70e1a4 (custom-group-value-create): Don't throw an error
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
4049 (widget-add-documentation-string-button
93915a70e1a4 (custom-group-value-create): Don't throw an error
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
4050 widget :visibility-widget 'custom-visibility))
81429
fb627c8fac18 (custom-split-regexp-maybe): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 77997
diff changeset
4051
18370
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4052 ;; Parent groups.
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4053 (if nil ;;; This should test that the buffer
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4054 ;;; was not made to display a group.
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4055 (when (eq level 1)
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4056 (insert-char ?\ custom-buffer-indent)
74558272517b (custom-group-value-create): Use group-visibility widget.
Richard M. Stallman <rms@gnu.org>
parents: 18368
diff changeset
4057 (custom-add-parent-links widget)))
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4058 (custom-add-see-also widget
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4059 (make-string (* custom-buffer-indent level)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4060 ?\ ))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4061 ;; Members.
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4062 (message "Creating group...")
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4063 (let* ((members (custom-sort-items
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4064 members
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4065 ;; Never sort the top-level custom group.
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4066 (unless (eq symbol 'emacs)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4067 custom-buffer-sort-alphabetically)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4068 custom-buffer-order-groups))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4069 (prefixes (widget-get widget :custom-prefixes))
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4070 (custom-prefix-list (custom-prefix-add symbol prefixes))
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4071 (len (length members))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4072 (count 0)
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4073 (reporter (make-progress-reporter
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4074 "Creating group entries..." 0 len))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4075 children)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4076 (setq children
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4077 (mapcar
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4078 (lambda (entry)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4079 (widget-insert "\n")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4080 (progress-reporter-update reporter (setq count (1+ count)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4081 (let ((sym (nth 0 entry))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4082 (type (nth 1 entry))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4083 hidden-p)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4084 (prog1
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4085 (widget-create-child-and-convert
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4086 widget type
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4087 :group widget
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4088 :tag (custom-unlispify-tag-name sym)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4089 :custom-prefixes custom-prefix-list
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4090 :custom-level (1+ level)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4091 :value sym)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4092 (unless (eq (preceding-char) ?\n)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4093 (widget-insert "\n")))))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4094 members))
28700
a57bafeec17c (Custom-set, Custom-save, Custom-reset-current)
Dave Love <fx@gnu.org>
parents: 28612
diff changeset
4095 (mapc 'custom-magic-reset children)
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4096 (widget-put widget :children children)
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4097 (custom-group-state-update widget)
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4098 (progress-reporter-done reporter))
18364
01666331d10f Synched with 1.9930.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18362
diff changeset
4099 ;; End line
107381
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4100 (let ((p (point)))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4101 (insert "\n")
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4102 (put-text-property p (1+ p) 'face '(:underline t))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4103 (overlay-put (make-overlay p (1+ p))
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4104 'before-string
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4105 (propertize "\n" 'face '(:underline t)
c97f25cea7c4 Improvements to the Custom interface.
Chong Yidong <cyd@stupidchicken.com>
parents: 107379
diff changeset
4106 'display '(space :align-to 999))))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4107
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4108 (defvar custom-group-menu
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
4109 `(("Set for Current Session" custom-group-set
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
4110 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
4111 (eq (widget-get widget :custom-state) 'modified)))
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
4112 ,@(when (or custom-file init-file-user)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
4113 '(("Save for Future Sessions" custom-group-save
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
4114 (lambda (widget)
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
4115 (memq (widget-get widget :custom-state) '(modified set))))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
4116 ("Undo Edits" custom-group-reset-current
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
4117 (lambda (widget)
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
4118 (memq (widget-get widget :custom-state) '(modified))))
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
4119 ("Reset to Saved" custom-group-reset-saved
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
4120 (lambda (widget)
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
4121 (memq (widget-get widget :custom-state) '(modified set))))
79040
853a17baf2b0 (custom-variable-menu, custom-face-menu)
Glenn Morris <rgm@gnu.org>
parents: 78803
diff changeset
4122 ,@(when (or custom-file init-file-user)
68139
058a6e577709 (custom-reset-menu, custom-buffer-create-internal)
Luc Teirlinck <teirllm@auburn.edu>
parents: 68109
diff changeset
4123 '(("Erase Customization" custom-group-reset-standard
68020
d8acae190ef7 * cus-edit.el (custom-reset-menu, custom-reset, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68017
diff changeset
4124 (lambda (widget)
68028
b0c2a07f73f6 (custom-reset-menu, Custom-mode-menu)
Chong Yidong <cyd@stupidchicken.com>
parents: 68026
diff changeset
4125 (memq (widget-get widget :custom-state) '(modified set saved)))))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4126 "Alist of actions for the `custom-group' widget.
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4127 Each entry has the form (NAME ACTION FILTER) where NAME is the name of
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4128 the menu entry, ACTION is the function to call on the widget when the
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4129 menu is selected, and FILTER is a predicate which takes a `custom-group'
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4130 widget as an argument, and returns non-nil if ACTION is valid on that
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4131 widget. If FILTER is nil, ACTION is always valid.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4132
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4133 (defun custom-group-action (widget &optional event)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4134 "Show the menu for `custom-group' WIDGET.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4135 Optional EVENT is the location for the menu."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4136 (if (eq (widget-get widget :custom-state) 'hidden)
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4137 (custom-toggle-hide widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4138 (let* ((completion-ignore-case t)
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4139 (answer (widget-choose (concat "Operation on "
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4140 (custom-unlispify-tag-name
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4141 (widget-get widget :value)))
17550
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4142 (custom-menu-filter custom-group-menu
d6545cfb6c5a Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17534
diff changeset
4143 widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4144 event)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4145 (if answer
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4146 (funcall answer widget)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4147
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4148 (defun custom-group-set (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4149 "Set changes in all modified group members."
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4150 (dolist (child (widget-get widget :children))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4151 (when (eq (widget-get child :custom-state) 'modified)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4152 (widget-apply child :custom-set))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4153
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4154 (defun custom-group-mark-to-save (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4155 "Mark all modified group members for saving."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4156 (dolist (child (widget-get widget :children))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4157 (when (memq (widget-get child :custom-state) '(modified set))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4158 (widget-apply child :custom-mark-to-save))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4159
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4160 (defsubst custom-group-state-set-and-redraw (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4161 "Set state of group widget WIDGET and redraw with current settings."
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4162 (dolist (child (widget-get widget :children))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4163 (when (memq (widget-get child :custom-state) '(modified set))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4164 (widget-apply child :custom-state-set-and-redraw))))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4165
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4166 (defun custom-group-save (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4167 "Save all modified group members."
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4168 (custom-group-mark-to-save widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4169 (custom-save-all)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4170 (custom-group-state-set-and-redraw widget))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4171
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4172 (defun custom-group-reset-current (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4173 "Reset all modified group members."
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4174 (dolist (child (widget-get widget :children))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4175 (when (eq (widget-get child :custom-state) 'modified)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4176 (widget-apply child :custom-reset-current))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4177
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4178 (defun custom-group-reset-saved (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4179 "Reset all modified or set group members."
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4180 (dolist (child (widget-get widget :children))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4181 (when (memq (widget-get child :custom-state) '(modified set))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4182 (widget-apply child :custom-reset-saved))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4183
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4184 (defun custom-group-reset-standard (widget)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4185 "Reset all modified, set, or saved group members."
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4186 (let ((custom-reset-standard-variables-list '(t))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4187 (custom-reset-standard-faces-list '(t)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4188 (custom-group-mark-to-reset-standard widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4189 (custom-reset-standard-save-and-update)))
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4190
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4191 (defun custom-group-mark-to-reset-standard (widget)
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4192 "Mark to reset all modified, set, or saved group members."
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4193 (dolist (child (widget-get widget :children))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4194 (when (memq (widget-get child :custom-state)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4195 '(modified set saved))
87795
299387a1f305 (custom-reset-standard-variables-list)
Martin Rudalics <rudalics@gmx.at>
parents: 87597
diff changeset
4196 (widget-apply child :custom-mark-to-reset-standard))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4197
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4198 (defun custom-group-state-update (widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4199 "Update magic."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4200 (unless (eq (widget-get widget :custom-state) 'hidden)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4201 (let* ((children (widget-get widget :children))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4202 (states (mapcar (lambda (child)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4203 (widget-get child :custom-state))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4204 children))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4205 (magics custom-magic-alist)
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4206 (found 'standard))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4207 (while magics
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4208 (let ((magic (car (car magics))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4209 (if (and (not (eq magic 'hidden))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4210 (memq magic states))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4211 (setq found magic
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4212 magics nil)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4213 (setq magics (cdr magics)))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4214 (widget-put widget :custom-state found)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4215 (custom-magic-reset widget))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4216
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4217 ;;; Reading and writing the custom file.
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4218
18336
325190603227 Synched with 1.9924.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18320
diff changeset
4219 ;;;###autoload
19822
b5c12a2d1c26 *** empty log message ***
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19684
diff changeset
4220 (defcustom custom-file nil
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4221 "File used for storing customization information.
19822
b5c12a2d1c26 *** empty log message ***
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 19684
diff changeset
4222 The default is nil, which means to use your init file
58797
0b90a17a09e1 (custom-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 58779
diff changeset
4223 as specified by `user-init-file'. If the value is not nil,
0b90a17a09e1 (custom-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 58779
diff changeset
4224 it should be an absolute file name.
0b90a17a09e1 (custom-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 58779
diff changeset
4225
59335
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4226 You can set this option through Custom, if you carefully read the
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4227 last paragraph below. However, usually it is simpler to write
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4228 something like the following in your init file:
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4229
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4230 \(setq custom-file \"~/.emacs-custom.el\")
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4231 \(load custom-file)
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4232
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4233 Note that both lines are necessary: the first line tells Custom to
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4234 save all customizations in this file, but does not load it.
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4235
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4236 When you change this variable outside Custom, look in the
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4237 previous custom file \(usually your init file) for the
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4238 forms `(custom-set-variables ...)' and `(custom-set-faces ...)',
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4239 and copy them (whichever ones you find) to the new custom file.
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4240 This will preserve your existing customizations.
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4241
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4242 If you save this option using Custom, Custom will write all
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4243 currently saved customizations, including the new one for this
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4244 option itself, into the file you specify, overwriting any
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4245 `custom-set-variables' and `custom-set-faces' forms already
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4246 present in that file. It will not delete any customizations from
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4247 the old custom file. You should do that manually if that is what you
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4248 want. You also have to put something like `\(load \"CUSTOM-FILE\")
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4249 in your init file, where CUSTOM-FILE is the actual name of the
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4250 file. Otherwise, Emacs will not load the file when it starts up,
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4251 and hence will not set `custom-file' to that file either."
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4252 :type '(choice (const :tag "Your Emacs init file" nil)
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4253 (file :format "%t:%v%d"
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4254 :doc
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4255 "Please read entire docstring below before setting \
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4256 this through Custom.
99298
225286546090 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 98001
diff changeset
4257 Click on \"More\" \(or position point there and press RETURN)
59335
45239c528a49 (custom-file): Doc fix for defcustom.
Luc Teirlinck <teirllm@auburn.edu>
parents: 58941
diff changeset
4258 if only the first line of the docstring is shown."))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4259 :group 'customize)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4260
20974
a49aafe4e242 (custom-file): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20600
diff changeset
4261 (defun custom-file ()
a49aafe4e242 (custom-file): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20600
diff changeset
4262 "Return the file name for saving customizations."
62211
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4263 (file-chase-links
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4264 (or custom-file
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4265 (let ((user-init-file user-init-file)
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4266 (default-init-file
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4267 (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4268 (when (null user-init-file)
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4269 (if (or (file-exists-p default-init-file)
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4270 (and (eq system-type 'windows-nt)
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4271 (file-exists-p "~/_emacs")))
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4272 ;; Started with -q, i.e. the file containing
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4273 ;; Custom settings hasn't been read. Saving
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4274 ;; settings there would overwrite other settings.
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4275 (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4276 (setq user-init-file default-init-file))
6e4e2882c013 (custom-file): Call file-chase-links.
Richard M. Stallman <rms@gnu.org>
parents: 61475
diff changeset
4277 user-init-file))))
20974
a49aafe4e242 (custom-file): New function.
Karl Heuer <kwzh@gnu.org>
parents: 20600
diff changeset
4278
86219
16c8cf994132 (recentf-expand-file-name): Declare as function.
Glenn Morris <rgm@gnu.org>
parents: 85724
diff changeset
4279 ;; If recentf-mode is non-nil, this is defined.
16c8cf994132 (recentf-expand-file-name): Declare as function.
Glenn Morris <rgm@gnu.org>
parents: 85724
diff changeset
4280 (declare-function recentf-expand-file-name "recentf" (name))
16c8cf994132 (recentf-expand-file-name): Declare as function.
Glenn Morris <rgm@gnu.org>
parents: 85724
diff changeset
4281
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4282 ;;;###autoload
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4283 (defun custom-save-all ()
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4284 "Save all customizations in `custom-file'."
73702
2bd04d2f629a (custom-save-all): Error if saving in .emacs and it had an error when loaded.
Richard M. Stallman <rms@gnu.org>
parents: 73643
diff changeset
4285 (when (and (null custom-file) init-file-had-error)
2bd04d2f629a (custom-save-all): Error if saving in .emacs and it had an error when loaded.
Richard M. Stallman <rms@gnu.org>
parents: 73643
diff changeset
4286 (error "Cannot save customizations; init file was not fully loaded"))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4287 (let* ((filename (custom-file))
76100
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4288 (recentf-exclude
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4289 (if recentf-mode
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4290 (cons (concat "\\`"
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4291 (regexp-quote
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4292 (recentf-expand-file-name (custom-file)))
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4293 "\\'")
3556f653e301 (custom-save-all): Canonicalize custom-file before storing it in
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4294 recentf-exclude)))
97242
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4295 (old-buffer (find-buffer-visiting filename))
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4296 old-buffer-name)
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4297
73942
a1e596bbf76d (custom-save-all): Use find-file-visit-truename for visiting the custom file.
Richard M. Stallman <rms@gnu.org>
parents: 73797
diff changeset
4298 (with-current-buffer (let ((find-file-visit-truename t))
a1e596bbf76d (custom-save-all): Use find-file-visit-truename for visiting the custom file.
Richard M. Stallman <rms@gnu.org>
parents: 73797
diff changeset
4299 (or old-buffer (find-file-noselect filename)))
97242
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4300 ;; We'll save using file-precious-flag, so avoid destroying
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4301 ;; symlinks. (If we're not already visiting the buffer, this is
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4302 ;; handled by find-file-visit-truename, above.)
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4303 (when old-buffer
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4304 (setq old-buffer-name (buffer-file-name))
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4305 (set-visited-file-name (file-chase-links filename)))
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4306
73169
f11aa3b5788d * cus-edit.el (custom-save-all): Switch to emacs-lisp mode before
Chong Yidong <cyd@stupidchicken.com>
parents: 73062
diff changeset
4307 (unless (eq major-mode 'emacs-lisp-mode)
f11aa3b5788d * cus-edit.el (custom-save-all): Switch to emacs-lisp mode before
Chong Yidong <cyd@stupidchicken.com>
parents: 73062
diff changeset
4308 (emacs-lisp-mode))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4309 (let ((inhibit-read-only t))
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4310 (custom-save-variables)
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4311 (custom-save-faces))
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4312 (let ((file-precious-flag t))
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4313 (save-buffer))
97242
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4314 (if old-buffer
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4315 (progn
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4316 (set-visited-file-name old-buffer-name)
cc5f94eeb1d8 (custom-save-all): Avoid destrying symlink if already visiting the
Chong Yidong <cyd@stupidchicken.com>
parents: 97142
diff changeset
4317 (set-buffer-modified-p nil))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4318 (kill-buffer (current-buffer))))))
67939
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4319
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4320 ;;;###autoload
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4321 (defun customize-save-customized ()
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4322 "Save all user options which have been set in this session."
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4323 (interactive)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4324 (mapatoms (lambda (symbol)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4325 (let ((face (get symbol 'customized-face))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4326 (value (get symbol 'customized-value))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4327 (face-comment (get symbol 'customized-face-comment))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4328 (variable-comment
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4329 (get symbol 'customized-variable-comment)))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4330 (when face
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4331 (put symbol 'saved-face face)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4332 (custom-push-theme 'theme-face symbol 'user 'set value)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4333 (put symbol 'customized-face nil))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4334 (when value
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4335 (put symbol 'saved-value value)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4336 (custom-push-theme 'theme-value symbol 'user 'set value)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4337 (put symbol 'customized-value nil))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4338 (when variable-comment
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4339 (put symbol 'saved-variable-comment variable-comment)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4340 (put symbol 'customized-variable-comment nil))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4341 (when face-comment
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4342 (put symbol 'saved-face-comment face-comment)
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4343 (put symbol 'customized-face-comment nil)))))
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4344 ;; We really should update all custom buffers here.
66965e79dd66 (custom-save-loaded-themes): Call custom-save-delete.
Richard M. Stallman <rms@gnu.org>
parents: 67797
diff changeset
4345 (custom-save-all))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4346
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4347 ;; Editing the custom file contents in a buffer.
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4348
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4349 (defun custom-save-delete (symbol)
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4350 "Delete all calls to SYMBOL from the contents of the current buffer.
26803
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4351 Leave point at the old location of the first such call,
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4352 or (if there were none) at the end of the buffer.
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4353
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4354 This function does not save the buffer."
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4355 (goto-char (point-min))
25058
af119d40c92d (custom-save-delete): Avoid error for empty .emacs.
Karl Heuer <kwzh@gnu.org>
parents: 24509
diff changeset
4356 ;; Skip all whitespace and comments.
af119d40c92d (custom-save-delete): Avoid error for empty .emacs.
Karl Heuer <kwzh@gnu.org>
parents: 24509
diff changeset
4357 (while (forward-comment 1))
af119d40c92d (custom-save-delete): Avoid error for empty .emacs.
Karl Heuer <kwzh@gnu.org>
parents: 24509
diff changeset
4358 (or (eobp)
af119d40c92d (custom-save-delete): Avoid error for empty .emacs.
Karl Heuer <kwzh@gnu.org>
parents: 24509
diff changeset
4359 (save-excursion (forward-sexp (buffer-size)))) ; Test for scan errors.
26803
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4360 (let (first)
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4361 (catch 'found
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4362 (while t ;; We exit this loop only via throw.
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4363 ;; Skip all whitespace and comments.
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4364 (while (forward-comment 1))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4365 (let ((start (point))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4366 (sexp (condition-case nil
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4367 (read (current-buffer))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4368 (end-of-file (throw 'found nil)))))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4369 (when (and (listp sexp)
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4370 (eq (car sexp) symbol))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4371 (delete-region start (point))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4372 (unless first
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4373 (setq first (point)))))))
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4374 (if first
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4375 (goto-char first)
36628
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4376 ;; Move in front of local variables, otherwise long Custom
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4377 ;; entries would make them ineffective.
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4378 (let ((pos (point-max))
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4379 (case-fold-search t))
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4380 (save-excursion
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4381 (goto-char (point-max))
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4382 (search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4383 'move)
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4384 (when (search-forward "Local Variables:" nil t)
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4385 (setq pos (line-beginning-position))))
d1106e82508b (custom-save-delete): Move in front of local
Gerd Moellmann <gerd@gnu.org>
parents: 35441
diff changeset
4386 (goto-char pos)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4387
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4388 (defun custom-save-variables ()
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4389 "Save all customized variables in `custom-file'."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4390 (save-excursion
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4391 (custom-save-delete 'custom-set-variables)
25059
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4392 (let ((standard-output (current-buffer))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4393 (saved-list (make-list 1 0))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4394 sort-fold-case)
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4395 ;; First create a sorted list of saved variables.
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4396 (mapatoms
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4397 (lambda (symbol)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
4398 (if (and (get symbol 'saved-value)
69004
f4a06252f47c * cus-edit.el (custom-save-variables): Allow unthemed values.
Chong Yidong <cyd@stupidchicken.com>
parents: 68913
diff changeset
4399 ;; ignore theme values
f4a06252f47c * cus-edit.el (custom-save-variables): Allow unthemed values.
Chong Yidong <cyd@stupidchicken.com>
parents: 68913
diff changeset
4400 (or (null (get symbol 'theme-value))
f4a06252f47c * cus-edit.el (custom-save-variables): Allow unthemed values.
Chong Yidong <cyd@stupidchicken.com>
parents: 68913
diff changeset
4401 (eq 'user (caar (get symbol 'theme-value)))))
25059
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4402 (nconc saved-list (list symbol)))))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4403 (setq saved-list (sort (cdr saved-list) 'string<))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4404 (unless (bolp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4405 (princ "\n"))
26653
ea8ae3c8fad5 (custom-save-variables, custom-save-faces): Write a
Dave Love <fx@gnu.org>
parents: 26625
diff changeset
4406 (princ "(custom-set-variables
47315
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4407 ;; custom-set-variables was added by Custom.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4408 ;; If you edit it by hand, you could mess it up, so be careful.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4409 ;; Your init file should contain only one such instance.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4410 ;; If there is more than one, they won't work right.\n")
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4411 (dolist (symbol saved-list)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4412 (let ((spec (car-safe (get symbol 'theme-value)))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4413 (value (get symbol 'saved-value))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4414 (requests (get symbol 'custom-requests))
72588
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4415 (now (and (not (custom-variable-p symbol))
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4416 (or (boundp symbol)
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4417 (eq (get symbol 'force-value)
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4418 'rogue))))
51362
0b5cb555fd17 (custom-get-fresh-buffer): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51277
diff changeset
4419 (comment (get symbol 'saved-variable-comment)))
73797
2e5ad09135ff (hook): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 73795
diff changeset
4420 ;; Check REQUESTS for validity.
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4421 (dolist (request requests)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4422 (when (and (symbolp request) (not (featurep request)))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4423 (message "Unknown requested feature: %s" request)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4424 (setq requests (delq request requests))))
72588
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4425 ;; Is there anything customized about this variable?
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
4426 (when (or (and spec (eq (car spec) 'user))
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4427 comment
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4428 (and (null spec) (get symbol 'saved-value)))
72588
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4429 ;; Output an element for this variable.
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4430 ;; It has the form (SYMBOL VALUE-FORM NOW REQUESTS COMMENT).
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4431 ;; SYMBOL is the variable name.
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4432 ;; VALUE-FORM is an expression to return the customized value.
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4433 ;; NOW if non-nil means always set the variable immediately
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4434 ;; when the customizations are reloaded. This is used
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4435 ;; for rogue variables
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4436 ;; REQUESTS is a list of packages to load before setting the
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4437 ;; variable. Each element of it will be passed to `require'.
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4438 ;; COMMENT is whatever comment the user has specified
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4439 ;; with the customize facility.
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4440 (unless (bolp)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4441 (princ "\n"))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4442 (princ " '(")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4443 (prin1 symbol)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4444 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4445 (prin1 (car value))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4446 (when (or now requests comment)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4447 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4448 (prin1 now)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4449 (when (or requests comment)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4450 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4451 (prin1 requests)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4452 (when comment
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4453 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4454 (prin1 comment))))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4455 (princ ")"))))
26803
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4456 (if (bolp)
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4457 (princ " "))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4458 (princ ")")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4459 (unless (looking-at "\n")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4460 (princ "\n")))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4461
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4462 (defun custom-save-faces ()
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4463 "Save all customized faces in `custom-file'."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4464 (save-excursion
48949
f216c93c4189 (customize-save-variable): Take themes into account.
Richard M. Stallman <rms@gnu.org>
parents: 48709
diff changeset
4465 (custom-save-delete 'custom-reset-faces)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4466 (custom-save-delete 'custom-set-faces)
25059
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4467 (let ((standard-output (current-buffer))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4468 (saved-list (make-list 1 0))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4469 sort-fold-case)
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4470 ;; First create a sorted list of saved faces.
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4471 (mapatoms
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4472 (lambda (symbol)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
4473 (if (and (get symbol 'saved-face)
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
4474 (eq 'user (car (car-safe (get symbol 'theme-face)))))
25059
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4475 (nconc saved-list (list symbol)))))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4476 (setq saved-list (sort (cdr saved-list) 'string<))
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4477 ;; The default face must be first, since it affects the others.
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4478 (if (memq 'default saved-list)
d6081fb56cda (custom-save-variables, custom-save-faces): Sort
Markus Rost <rost@math.uni-bielefeld.de>
parents: 25058
diff changeset
4479 (setq saved-list (cons 'default (delq 'default saved-list))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4480 (unless (bolp)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4481 (princ "\n"))
26653
ea8ae3c8fad5 (custom-save-variables, custom-save-faces): Write a
Dave Love <fx@gnu.org>
parents: 26625
diff changeset
4482 (princ "(custom-set-faces
47315
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4483 ;; custom-set-faces was added by Custom.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4484 ;; If you edit it by hand, you could mess it up, so be careful.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4485 ;; Your init file should contain only one such instance.
655350cd09e5 (custom-save-variables, custom-save-faces):
Richard M. Stallman <rms@gnu.org>
parents: 47168
diff changeset
4486 ;; If there is more than one, they won't work right.\n")
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4487 (dolist (symbol saved-list)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4488 (let ((spec (car-safe (get symbol 'theme-face)))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4489 (value (get symbol 'saved-face))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4490 (now (not (or (get symbol 'face-defface-spec)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4491 (and (not (custom-facep symbol))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4492 (not (get symbol 'force-face))))))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4493 (comment (get symbol 'saved-face-comment)))
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67972
diff changeset
4494 (when (or (and spec (eq (nth 0 spec) 'user))
49556
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4495 comment
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4496 (and (null spec) (get symbol 'saved-face)))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4497 ;; Don't print default face here.
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4498 (unless (bolp)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4499 (princ "\n"))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4500 (princ " '(")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4501 (prin1 symbol)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4502 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4503 (prin1 value)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4504 (when (or now comment)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4505 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4506 (prin1 now)
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4507 (when comment
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4508 (princ " ")
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4509 (prin1 comment)))
e8de2a4807e5 (custom-unlispify-menu-entry): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49521
diff changeset
4510 (princ ")"))))
26803
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4511 (if (bolp)
f7c68655bd5d (custom-save-delete): Delete all occurrences,
Richard M. Stallman <rms@gnu.org>
parents: 26653
diff changeset
4512 (princ " "))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4513 (princ ")")
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4514 (unless (looking-at "\n")
48958
6b4f6412de76 (custom-save-faces): Fix typo.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48949
diff changeset
4515 (princ "\n")))))
65225
131c93f081eb (custom-buffer-sort-alphabetically): Default to t.
Richard M. Stallman <rms@gnu.org>
parents: 64931
diff changeset
4516
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4517 ;;; The Customize Menu.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4518
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4519 ;;; Menu support
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4520
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4521 (defcustom custom-menu-nesting 2
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4522 "Maximum nesting in custom menus."
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4523 :type 'integer
18244
909a0f9169b8 Synched with 1.9914.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18139
diff changeset
4524 :group 'custom-menu)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4525
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4526 (defun custom-face-menu-create (widget symbol)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4527 "Ignoring WIDGET, create a menu entry for customization face SYMBOL."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4528 (vector (custom-unlispify-menu-entry symbol)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
4529 `(customize-face ',symbol)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4530 t))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4531
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4532 (defun custom-variable-menu-create (widget symbol)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4533 "Ignoring WIDGET, create a menu entry for customization variable SYMBOL."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4534 (let ((type (get symbol 'custom-type)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4535 (unless (listp type)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4536 (setq type (list type)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4537 (if (and type (widget-get type :custom-menu))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4538 (widget-apply type :custom-menu symbol)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4539 (vector (custom-unlispify-menu-entry symbol)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
4540 `(customize-variable ',symbol)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4541 t))))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4542
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4543 ;; Add checkboxes to boolean variable entries.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4544 (widget-put (get 'boolean 'widget-type)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4545 :custom-menu (lambda (widget symbol)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4546 (vector (custom-unlispify-menu-entry symbol)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
4547 `(customize-variable ',symbol)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4548 ':style 'toggle
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4549 ':selected symbol)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4550
30184
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4551 (defun custom-group-menu-create (widget symbol)
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4552 "Ignoring WIDGET, create a menu entry for customization group SYMBOL."
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4553 `( ,(custom-unlispify-menu-entry symbol t)
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4554 :filter (lambda (&rest junk)
72715
b51738f67f62 (custom-menu-create): Bind deactivate-mark here
Richard M. Stallman <rms@gnu.org>
parents: 72629
diff changeset
4555 (let* ((menu (custom-menu-create ',symbol)))
47168
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
4556 (if (consp menu) (cdr menu) menu)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4557
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4558 ;;;###autoload
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4559 (defun custom-menu-create (symbol)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4560 "Create menu for customization group SYMBOL.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4561 The menu is in a format applicable to `easy-menu-define'."
72715
b51738f67f62 (custom-menu-create): Bind deactivate-mark here
Richard M. Stallman <rms@gnu.org>
parents: 72629
diff changeset
4562 (let* ((deactivate-mark nil)
b51738f67f62 (custom-menu-create): Bind deactivate-mark here
Richard M. Stallman <rms@gnu.org>
parents: 72629
diff changeset
4563 (item (vector (custom-unlispify-menu-entry symbol)
17798
f59c9a63514b Synched with version 1.97.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17703
diff changeset
4564 `(customize-group ',symbol)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4565 t)))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4566 (if (and (or (not (boundp 'custom-menu-nesting))
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4567 (>= custom-menu-nesting 0))
49126
697ca5db73b8 (customize-group, customize-group-other-window):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49104
diff changeset
4568 (progn
697ca5db73b8 (customize-group, customize-group-other-window):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49104
diff changeset
4569 (custom-load-symbol symbol)
697ca5db73b8 (customize-group, customize-group-other-window):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49104
diff changeset
4570 (< (length (get symbol 'custom-group)) widget-menu-max-size)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4571 (let ((custom-prefix-list (custom-prefix-add symbol
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4572 custom-prefix-list))
18451
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
4573 (members (custom-sort-items (get symbol 'custom-group)
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
4574 custom-menu-sort-alphabetically
8eb08560287b Synched with 1.9936.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18437
diff changeset
4575 custom-menu-order-groups)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4576 `(,(custom-unlispify-menu-entry symbol t)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4577 ,item
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4578 "--"
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4579 ,@(mapcar (lambda (entry)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4580 (widget-apply (if (listp (nth 1 entry))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4581 (nth 1 entry)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4582 (list (nth 1 entry)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4583 :custom-menu (nth 0 entry)))
18033
bccd356a3b7c Synched with version 1.9900.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18032
diff changeset
4584 members)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4585 item)))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4586
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4587 ;;;###autoload
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4588 (defun customize-menu-create (symbol &optional name)
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4589 "Return a customize menu for customization group SYMBOL.
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4590 If optional NAME is given, use that as the name of the menu.
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4591 Otherwise the menu will be named `Customize'.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4592 The format is suitable for use with `easy-menu-define'."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4593 (unless name
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4594 (setq name "Customize"))
30184
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4595 `(,name
aa305b5e66ed (custom-group-menu-create, customize-menu-create): Use :filter, per old
Dave Love <fx@gnu.org>
parents: 29879
diff changeset
4596 :filter (lambda (&rest junk)
47168
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
4597 (let ((menu (custom-menu-create ',symbol)))
59fc9e6fd3e8 (custom-unlispify-menu-entry): Don't remove
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46580
diff changeset
4598 (if (consp menu) (cdr menu) menu)))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4599
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4600 ;;; Toolbar and menubar support
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4601
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4602 (easy-menu-define
86232
74f276f67957 (custom-field-keymap): Move to other Custom mode
Martin Rudalics <rudalics@gmx.at>
parents: 86219
diff changeset
4603 Custom-mode-menu (list custom-mode-map custom-field-keymap)
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4604 "Menu used in customization buffers."
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4605 (nconc (list "Custom"
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4606 (customize-menu-create 'customize))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4607 (mapcar (lambda (arg)
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4608 (let ((tag (nth 0 arg))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4609 (command (nth 1 arg))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4610 (active (nth 2 arg))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4611 (help (nth 3 arg)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4612 (vector tag command :active (eval active) :help help)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4613 custom-commands)))
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4614
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4615 (defvar tool-bar-map)
87597
d71a9a15e3d2 (custom-tool-bar-map): Move initialization of this
Martin Rudalics <rudalics@gmx.at>
parents: 87519
diff changeset
4616
d71a9a15e3d2 (custom-tool-bar-map): Move initialization of this
Martin Rudalics <rudalics@gmx.at>
parents: 87519
diff changeset
4617 ;;; `custom-tool-bar-map' used to be set up here. This will fail to
d71a9a15e3d2 (custom-tool-bar-map): Move initialization of this
Martin Rudalics <rudalics@gmx.at>
parents: 87519
diff changeset
4618 ;;; DTRT when `display-graphic-p' returns nil during compilation. Hence
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4619 ;;; we set this up lazily in `Custom-mode'.
87597
d71a9a15e3d2 (custom-tool-bar-map): Move initialization of this
Martin Rudalics <rudalics@gmx.at>
parents: 87519
diff changeset
4620 (defvar custom-tool-bar-map nil
d71a9a15e3d2 (custom-tool-bar-map): Move initialization of this
Martin Rudalics <rudalics@gmx.at>
parents: 87519
diff changeset
4621 "Keymap for toolbar in Custom mode.")
81707
cfd3797706aa (custom-commands): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 81429
diff changeset
4622
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4623 ;;; The Custom Mode.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4624
72588
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4625 (defun Custom-no-edit (pos &optional event)
72149
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
4626 "Invoke button at POS, or refuse to allow editing of Custom buffer."
dd56da5d679d (customize-package-emacs-version-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71953
diff changeset
4627 (interactive "@d")
72159
97e2fe60196f * cus-edit.el (custom-no-edit): Revert 2006-07-27 change, so that
Chong Yidong <cyd@stupidchicken.com>
parents: 72149
diff changeset
4628 (error "You can't edit this part of the Custom buffer"))
71847
61f3d6be1e92 (custom-no-edit): New command.
Richard M. Stallman <rms@gnu.org>
parents: 71438
diff changeset
4629
72588
97860dfadca5 (custom-save-variables): Slight cleanup.
Richard M. Stallman <rms@gnu.org>
parents: 72409
diff changeset
4630 (defun Custom-newline (pos &optional event)
72409
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4631 "Invoke button at POS, or refuse to allow editing of Custom buffer."
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4632 (interactive "@d")
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4633 (let ((button (get-char-property pos 'button)))
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4634 (if button
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4635 (widget-apply-action button event)
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4636 (error "You can't edit this part of the Custom buffer"))))
4130a8f38950 (custom-newline): New function.
Richard M. Stallman <rms@gnu.org>
parents: 72159
diff changeset
4637
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4638 (defun Custom-goto-parent ()
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4639 "Go to the parent group listed at the top of this buffer.
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4640 If several parents are listed, go to the first of them."
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4641 (interactive)
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4642 (save-excursion
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4643 (goto-char (point-min))
78377
8a9d5af6fdf2 Fix parent groups link
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 78236
diff changeset
4644 (if (search-forward "\nParent groups: " nil t)
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4645 (let* ((button (get-char-property (point) 'button))
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4646 (parent (downcase (widget-get button :tag))))
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4647 (customize-group parent)))))
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4648
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4649 (defcustom Custom-mode-hook nil
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4650 "Hook called when entering Custom mode."
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4651 :type 'hook
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4652 :group 'custom-buffer)
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4653
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4654 (defun custom-state-buffer-message (widget)
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4655 (if (eq (widget-get (widget-get widget :parent) :custom-state) 'modified)
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4656 (message "To install your edits, invoke [State] and choose the Set operation")))
18430
a8ae9c653696 (custom-group-visibility): Widget type
Richard M. Stallman <rms@gnu.org>
parents: 18373
diff changeset
4657
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4658 (define-derived-mode Custom-mode nil "Custom"
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4659 "Major mode for editing customization buffers.
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4660
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4661 The following commands are available:
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4662
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4663 \\<widget-keymap>\
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4664 Move to next button, link or editable field. \\[widget-forward]
104988
3edc5799260a (Custom-mode): Don't use advertised-widget-backward in the docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104778
diff changeset
4665 Move to previous button, link or editable field. \\[widget-backward]
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4666 \\<custom-field-keymap>\
19022
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
4667 Complete content of editable text field. \\[widget-complete]
904dcdbb8576 Synched with 1.9951.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 18856
diff changeset
4668 \\<custom-mode-map>\
68913
08407ff48591 * cus-edit.el (custom-mode): Update docstring.
Chong Yidong <cyd@stupidchicken.com>
parents: 68911
diff changeset
4669 Invoke button under the mouse pointer. \\[widget-button-click]
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4670 Invoke button under point. \\[widget-button-press]
67970
ece93c7b34d4 (Custom-set, Custom-save): Ask for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 67961
diff changeset
4671 Set all options from current text. \\[Custom-set]
ece93c7b34d4 (Custom-set, Custom-save): Ask for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 67961
diff changeset
4672 Make values in current text permanent. \\[Custom-save]
68343
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4673 Make text match actual option values. \\[Custom-reset-current]
05dbd20a248e (custom-buffer-create-internal): Use widget type
Juri Linkov <juri@jurta.org>
parents: 68278
diff changeset
4674 Reset options to permanent settings. \\[Custom-reset-saved]
67970
ece93c7b34d4 (Custom-set, Custom-save): Ask for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 67961
diff changeset
4675 Erase customizations; set options
ece93c7b34d4 (Custom-set, Custom-save): Ask for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 67961
diff changeset
4676 and buffer text to the standard values. \\[Custom-reset-standard]
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4677
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4678 Entry to this mode calls the value of `Custom-mode-hook'
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4679 if that value is non-nil."
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4680 (use-local-map custom-mode-map)
18435
2f906938425b (Custom-set): Renamed from custom-set.
Richard M. Stallman <rms@gnu.org>
parents: 18430
diff changeset
4681 (easy-menu-add Custom-mode-menu)
99481
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4682 (set (make-local-variable 'tool-bar-map)
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4683 (or custom-tool-bar-map
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4684 ;; Set up `custom-tool-bar-map'.
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4685 (let ((map (make-sparse-keymap)))
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4686 (mapc
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4687 (lambda (arg)
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4688 (tool-bar-local-item-from-menu
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
4689 (nth 1 arg) (nth 4 arg) map custom-mode-map
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107723
diff changeset
4690 :label (nth 5 arg)))
99481
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4691 custom-commands)
54d148d6078b (Custom-mode): Set up tool-bar-map unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 99404
diff changeset
4692 (setq custom-tool-bar-map map))))
17415
30a567b89fb6 Sync with 1.84.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 17334
diff changeset
4693 (make-local-variable 'custom-options)
50283
73ab8e5b6d65 2003-03-24 Luc Teirlinck <teirllm@mail.auburn.edu>
John Paul Wallington <jpw@pobox.com>
parents: 50077
diff changeset
4694 (make-local-variable 'custom-local-buffer)
18437
cbaf72286a2e (custom-documentation-face): New face.
Richard M. Stallman <rms@gnu.org>
parents: 18436
diff changeset
4695 (make-local-variable 'widget-documentation-face)
63194
acd4cec2decf Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Miles Bader <miles@gnu.org>
parents: 62722
diff changeset
4696 (setq widget-documentation-face 'custom-documentation)
18571
1beba85e8c62 (custom-buffer-create-internal): New arg DESCRIPTION
Richard M. Stallman <rms@gnu.org>
parents: 18562
diff changeset
4697 (make-local-variable 'widget-button-face)
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
4698 (setq widget-button-face custom-button)
86334
005ad07af670 (custom-mode): Define with `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 86232
diff changeset
4699 (setq show-trailing-whitespace nil)
73194
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4700
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4701 ;; We need this because of the "More" button on docstrings.
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4702 ;; Otherwise clicking on "More" can push point offscreen, which
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4703 ;; causes the window to recenter on point, which pushes the
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4704 ;; newly-revealed docstring offscreen; which is annoying. -- cyd.
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4705 (set (make-local-variable 'widget-button-click-moves-point) t)
1a9d85f409b8 * wid-edit.el (widget-button-click-moves-point): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 73169
diff changeset
4706
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
4707 (set (make-local-variable 'widget-button-pressed-face) custom-button-pressed)
67961
52f526ce11f6 * cus-edit.el (custom-button-mouse): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents: 67941
diff changeset
4708 (set (make-local-variable 'widget-mouse-face) custom-button-mouse)
66336
d9a2701e02cd * cus-edit.el (custom-button, custom-button-pressed): New vars.
Chong Yidong <cyd@stupidchicken.com>
parents: 66171
diff changeset
4709
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4710 ;; When possible, use relief for buttons, not bracketing. This test
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4711 ;; may not be optimal.
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4712 (when custom-raised-buttons
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4713 (set (make-local-variable 'widget-push-button-prefix) "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4714 (set (make-local-variable 'widget-push-button-suffix) "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4715 (set (make-local-variable 'widget-link-prefix) "")
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4716 (set (make-local-variable 'widget-link-suffix) ""))
86334
005ad07af670 (custom-mode): Define with `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 86232
diff changeset
4717 (add-hook 'widget-edit-functions 'custom-state-buffer-message nil t))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4718
92307
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4719 (put 'Custom-mode 'mode-class 'special)
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4720
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4721 ;; backward-compatibility
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4722 (defun custom-mode ()
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4723 "Non-interactive variant of `Custom-mode'."
55f83f57568d (custom-mode-map, custom-mode-link-map):
Juri Linkov <juri@jurta.org>
parents: 87795
diff changeset
4724 (Custom-mode))
92321
01ce588fc626 (custom-mode, custom-mode-hook): Use 23.1 as version
Juanma Barranquero <lekktu@gmail.com>
parents: 92307
diff changeset
4725 (make-obsolete 'custom-mode 'Custom-mode "23.1")
32904
2109c5fb0c3f (custom-mode): Add `special' mode-class property.
Dave Love <fx@gnu.org>
parents: 32883
diff changeset
4726 (put 'custom-mode 'mode-class 'special)
92321
01ce588fc626 (custom-mode, custom-mode-hook): Use 23.1 as version
Juanma Barranquero <lekktu@gmail.com>
parents: 92307
diff changeset
4727 (define-obsolete-variable-alias 'custom-mode-hook 'Custom-mode-hook "23.1")
32904
2109c5fb0c3f (custom-mode): Add `special' mode-class property.
Dave Love <fx@gnu.org>
parents: 32883
diff changeset
4728
71438
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4729 (dolist (regexp
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4730 '("^No user option defaults have been changed since Emacs "
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4731 "^Invalid face:? "
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4732 "^No \\(?:customized\\|rogue\\|saved\\) user options"
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4733 "^No customizable items matching "
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4734 "^There are unset changes"
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4735 "^Cannot set hidden variable"
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4736 "^No \\(?:saved\\|backup\\) value for "
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4737 "^No standard setting known for "
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4738 "^No standard setting for this face"
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4739 "^Saving settings from \"emacs -q\" would overwrite existing customizations"))
2c067711ec9e (customize-apropos): A better error message.
Eli Zaretskii <eliz@gnu.org>
parents: 71390
diff changeset
4740 (add-to-list 'debug-ignored-errors regexp))
28130
e419308bcc0c Doc fixes.
Dave Love <fx@gnu.org>
parents: 27250
diff changeset
4741
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4742 ;;; The End.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4743
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4744 (provide 'cus-edit)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
4745
59759
c8a0d09474af (customize-group-other-window, custom-buffer-create-other-window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59434
diff changeset
4746 ;; arch-tag: 64533aa4-1b1a-48c3-8812-f9dc718e8a6f
25685
fc2bfab28ed7 Don't define-widget-keywords.
Dave Love <fx@gnu.org>
parents: 25059
diff changeset
4747 ;;; cus-edit.el ends here