2001-07-16 12:23:00 +00:00
|
|
|
|
;;; cus-edit.el --- tools for customizing Emacs and Lisp packages
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;
|
2011-01-25 04:08:28 +00:00
|
|
|
|
;; Copyright (C) 1996-1997, 1999-2011 Free Software Foundation, Inc.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;
|
|
|
|
|
;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
|
2002-12-23 18:40:24 +00:00
|
|
|
|
;; Maintainer: FSF
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; Keywords: help, faces
|
2010-08-29 16:17:13 +00:00
|
|
|
|
;; Package: emacs
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-21 03:55:17 +00:00
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
1997-04-21 03:55:17 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
1997-04-21 03:55:17 +00:00
|
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
1997-04-21 03:55:17 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Commentary:
|
|
|
|
|
;;
|
1997-04-24 16:53:55 +00:00
|
|
|
|
;; This file implements the code to create and edit customize buffers.
|
2002-12-23 18:40:24 +00:00
|
|
|
|
;;
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; See `custom.el'.
|
|
|
|
|
|
1997-06-24 20:07:51 +00:00
|
|
|
|
;; No commands should have names starting with `custom-' because
|
|
|
|
|
;; that interferes with completion. Use `customize-' for commands
|
|
|
|
|
;; that the user will run with M-x, and `Custom-' for interactive commands.
|
|
|
|
|
|
2005-02-10 06:44:41 +00:00
|
|
|
|
;; The identity of a customize option is represented by a Lisp symbol.
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; The following values are associated with an option.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 0. The current value.
|
|
|
|
|
|
|
|
|
|
;; This is the value of the option as seen by "the rest of Emacs".
|
|
|
|
|
|
|
|
|
|
;; Usually extracted by 'default-value', but can be extracted with
|
|
|
|
|
;; different means if the option symbol has the 'custom-get'
|
|
|
|
|
;; property. Similarly, set-default (or the 'custom-set' property)
|
|
|
|
|
;; can set it.
|
|
|
|
|
|
|
|
|
|
;; 1. The widget value.
|
|
|
|
|
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; This is the value shown in the widget in a customize buffer.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 2. The customized value.
|
|
|
|
|
|
|
|
|
|
;; This is the last value given to the option through customize.
|
|
|
|
|
|
|
|
|
|
;; It is stored in the 'customized-value' property of the option, in a
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; cons-cell whose car evaluates to the customized value.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 3. The saved value.
|
|
|
|
|
|
|
|
|
|
;; This is last value saved from customize.
|
|
|
|
|
|
|
|
|
|
;; It is stored in the 'saved-value' property of the option, in a
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; cons-cell whose car evaluates to the saved value.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 4. The standard value.
|
|
|
|
|
|
|
|
|
|
;; This is the value given in the 'defcustom' declaration.
|
|
|
|
|
|
|
|
|
|
;; It is stored in the 'standard-value' property of the option, in a
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; cons-cell whose car evaluates to the standard value.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 5. The "think" value.
|
2005-02-22 23:12:15 +00:00
|
|
|
|
|
|
|
|
|
;; This is what customize thinks the current value should be.
|
|
|
|
|
|
|
|
|
|
;; This is the customized value, if any such value exists, otherwise
|
2005-02-10 06:44:41 +00:00
|
|
|
|
;; the saved value, if that exists, and as a last resort the standard
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; value.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; The reason for storing values unevaluated: This is so you can have
|
|
|
|
|
;; values that depend on the environment. For example, you can have a
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; variable that has one value when Emacs is running under a window
|
2005-02-10 06:44:41 +00:00
|
|
|
|
;; system, and another value on a tty. Since the evaluation is only done
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; when the variable is first initialized, this is only relevant for the
|
2005-02-10 06:44:41 +00:00
|
|
|
|
;; saved (and standard) values, but affect others values for
|
|
|
|
|
;; compatibility.
|
|
|
|
|
|
|
|
|
|
;; You can see (and modify and save) this unevaluated value by selecting
|
2006-01-12 02:25:59 +00:00
|
|
|
|
;; "Show Saved Lisp Expression" from the Lisp interface. This will
|
2005-02-10 06:44:41 +00:00
|
|
|
|
;; give you the unevaluated saved value, if any, otherwise the
|
|
|
|
|
;; unevaluated standard value.
|
|
|
|
|
|
|
|
|
|
;; The possible states for a customize widget are:
|
|
|
|
|
|
|
|
|
|
;; 0. unknown
|
|
|
|
|
|
|
|
|
|
;; The state has not been determined yet.
|
|
|
|
|
|
|
|
|
|
;; 1. modified
|
|
|
|
|
|
|
|
|
|
;; The widget value is different from the current value.
|
|
|
|
|
|
|
|
|
|
;; 2. changed
|
2005-02-22 23:12:15 +00:00
|
|
|
|
|
|
|
|
|
;; The current value is different from the "think" value.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 3. set
|
|
|
|
|
|
|
|
|
|
;; The "think" value is the customized value.
|
|
|
|
|
|
|
|
|
|
;; 4. saved
|
|
|
|
|
|
|
|
|
|
;; The "think" value is the saved value.
|
|
|
|
|
|
|
|
|
|
;; 5. standard
|
|
|
|
|
|
|
|
|
|
;; The "think" value is the standard value.
|
|
|
|
|
|
|
|
|
|
;; 6. rogue
|
|
|
|
|
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; There is no standard value. This means that the variable was
|
2005-12-16 03:43:51 +00:00
|
|
|
|
;; not defined with defcustom, nor handled in cus-start.el. Most
|
|
|
|
|
;; standard interactive Custom commands do not let you create a
|
|
|
|
|
;; Custom buffer containing such variables. However, such Custom
|
|
|
|
|
;; buffers can be created, for instance, by calling
|
|
|
|
|
;; `customize-apropos' with a prefix arg or by calling
|
2005-02-27 21:37:03 +00:00
|
|
|
|
;; `customize-option' non-interactively.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; 7. hidden
|
|
|
|
|
|
|
|
|
|
;; There is no widget value.
|
|
|
|
|
|
|
|
|
|
;; 8. mismatch
|
|
|
|
|
|
|
|
|
|
;; The widget value is not valid member of the :type specified for the
|
2005-02-22 23:12:15 +00:00
|
|
|
|
;; option.
|
2005-02-10 06:44:41 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
|
|
(require 'cus-face)
|
|
|
|
|
(require 'wid-edit)
|
2007-07-28 20:03:40 +00:00
|
|
|
|
|
|
|
|
|
(defvar custom-versions-load-alist) ; from cus-load
|
|
|
|
|
(defvar recentf-exclude) ; from recentf.el
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
(condition-case nil
|
|
|
|
|
(require 'cus-load)
|
|
|
|
|
(error nil))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-06-01 11:58:17 +00:00
|
|
|
|
(condition-case nil
|
|
|
|
|
(require 'cus-start)
|
|
|
|
|
(error nil))
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(put 'custom-define-hook 'custom-type 'hook)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(put 'custom-define-hook 'standard-value '(nil))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(custom-add-to-group 'customize 'custom-define-hook 'custom-variable)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Customization Groups.
|
|
|
|
|
|
|
|
|
|
(defgroup emacs nil
|
|
|
|
|
"Customization of the One True Editor."
|
|
|
|
|
:link '(custom-manual "(emacs)Top"))
|
|
|
|
|
|
|
|
|
|
;; Most of these groups are stolen from `finder.el',
|
|
|
|
|
(defgroup editing nil
|
|
|
|
|
"Basic text editing facilities."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(defgroup convenience nil
|
|
|
|
|
"Convenience features for faster editing."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup files nil
|
|
|
|
|
"Support for editing files."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup wp nil
|
|
|
|
|
"Support for editing text files."
|
|
|
|
|
:tag "Text"
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup data nil
|
|
|
|
|
"Support for editing binary data files."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defgroup abbrev nil
|
|
|
|
|
"Abbreviation handling, typing shortcuts, macros."
|
|
|
|
|
:tag "Abbreviations"
|
2010-03-12 17:47:22 +00:00
|
|
|
|
:group 'convenience)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defgroup matching nil
|
|
|
|
|
"Various sorts of searching and matching."
|
|
|
|
|
:group 'editing)
|
|
|
|
|
|
|
|
|
|
(defgroup emulations nil
|
|
|
|
|
"Emulations of other editors."
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(emacs)Emulation")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'editing)
|
|
|
|
|
|
|
|
|
|
(defgroup mouse nil
|
|
|
|
|
"Mouse support."
|
|
|
|
|
:group 'editing)
|
|
|
|
|
|
|
|
|
|
(defgroup outlines nil
|
|
|
|
|
"Support for hierarchical outlining."
|
2010-03-12 17:47:22 +00:00
|
|
|
|
:group 'wp)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defgroup external nil
|
|
|
|
|
"Interfacing to external utilities."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
2010-03-12 19:13:38 +00:00
|
|
|
|
(defgroup comm nil
|
|
|
|
|
"Communications, networking, and remote access to files."
|
|
|
|
|
:tag "Communication"
|
2010-03-12 17:47:22 +00:00
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defgroup processes nil
|
|
|
|
|
"Process, subshell, compilation, and job control support."
|
2010-03-12 17:47:22 +00:00
|
|
|
|
:group 'external)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defgroup programming nil
|
|
|
|
|
"Support for programming in other languages."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup languages nil
|
|
|
|
|
"Specialized modes for editing programming languages."
|
|
|
|
|
:group 'programming)
|
|
|
|
|
|
|
|
|
|
(defgroup lisp nil
|
|
|
|
|
"Lisp support, including Emacs Lisp."
|
2005-11-17 07:18:07 +00:00
|
|
|
|
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'languages
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup c nil
|
|
|
|
|
"Support for the C language and related languages."
|
2005-11-17 07:18:07 +00:00
|
|
|
|
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(ccmode)")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'languages)
|
|
|
|
|
|
|
|
|
|
(defgroup tools nil
|
|
|
|
|
"Programming tools."
|
|
|
|
|
:group 'programming)
|
|
|
|
|
|
|
|
|
|
(defgroup applications nil
|
|
|
|
|
"Applications written in Emacs."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup calendar nil
|
|
|
|
|
"Calendar and time management support."
|
|
|
|
|
:group 'applications)
|
|
|
|
|
|
|
|
|
|
(defgroup mail nil
|
|
|
|
|
"Modes for electronic-mail handling."
|
|
|
|
|
:group 'applications)
|
|
|
|
|
|
|
|
|
|
(defgroup news nil
|
|
|
|
|
"Support for netnews reading and posting."
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(gnus)")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'applications)
|
|
|
|
|
|
|
|
|
|
(defgroup games nil
|
|
|
|
|
"Games, jokes and amusements."
|
|
|
|
|
:group 'applications)
|
|
|
|
|
|
|
|
|
|
(defgroup development nil
|
|
|
|
|
"Support for further development of Emacs."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup docs nil
|
|
|
|
|
"Support for Emacs documentation."
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup extensions nil
|
|
|
|
|
"Emacs Lisp language extensions."
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup internal nil
|
|
|
|
|
"Code for Emacs internals, build process, defaults."
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup maint nil
|
|
|
|
|
"Maintenance aids for the Emacs development group."
|
|
|
|
|
:tag "Maintenance"
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup environment nil
|
|
|
|
|
"Fitting Emacs with its environment."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup hardware nil
|
2010-02-16 14:35:45 +00:00
|
|
|
|
"Support for interfacing with miscellaneous hardware."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup terminals nil
|
|
|
|
|
"Support for terminal types."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup unix nil
|
|
|
|
|
"Front-ends/assistants for, or emulators of, UNIX features."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup i18n nil
|
|
|
|
|
"Internationalization and alternate character-set support."
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(emacs)International")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'environment
|
|
|
|
|
:group 'editing)
|
|
|
|
|
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(defgroup x nil
|
|
|
|
|
"The X Window system."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defgroup frames nil
|
|
|
|
|
"Support for Emacs frames and window systems."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup tex nil
|
|
|
|
|
"Code related to the TeX formatter."
|
2005-11-17 07:18:07 +00:00
|
|
|
|
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'wp)
|
|
|
|
|
|
|
|
|
|
(defgroup faces nil
|
|
|
|
|
"Support for multiple fonts."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup help nil
|
|
|
|
|
"Support for on-line help systems."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defgroup multimedia nil
|
|
|
|
|
"Non-textual support, specifically images and sound."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defgroup local nil
|
|
|
|
|
"Code local to your site."
|
|
|
|
|
:group 'emacs)
|
|
|
|
|
|
|
|
|
|
(defgroup customize '((widgets custom-group))
|
|
|
|
|
"Customization of the Customization support."
|
|
|
|
|
:prefix "custom-"
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'help)
|
|
|
|
|
|
|
|
|
|
(defgroup custom-faces nil
|
|
|
|
|
"Faces used by customize."
|
|
|
|
|
:group 'customize
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'faces)
|
|
|
|
|
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(defgroup custom-browse nil
|
|
|
|
|
"Control customize browser."
|
|
|
|
|
:prefix "custom-"
|
|
|
|
|
:group 'customize)
|
|
|
|
|
|
1997-06-14 10:21:01 +00:00
|
|
|
|
(defgroup custom-buffer nil
|
1997-06-25 15:30:27 +00:00
|
|
|
|
"Control customize buffers."
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:prefix "custom-"
|
|
|
|
|
:group 'customize)
|
|
|
|
|
|
|
|
|
|
(defgroup custom-menu nil
|
1997-06-25 15:30:27 +00:00
|
|
|
|
"Control customize menus."
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:prefix "custom-"
|
|
|
|
|
:group 'customize)
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defgroup alloc nil
|
|
|
|
|
"Storage allocation and gc for GNU Emacs Lisp interpreter."
|
|
|
|
|
:tag "Storage Allocation"
|
|
|
|
|
:group 'internal)
|
|
|
|
|
|
|
|
|
|
(defgroup undo nil
|
|
|
|
|
"Undoing changes in buffers."
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(emacs)Undo")
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'editing)
|
|
|
|
|
|
2006-09-14 23:53:55 +00:00
|
|
|
|
(defgroup mode-line nil
|
1997-04-12 17:51:31 +00:00
|
|
|
|
"Content of the modeline."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup editing-basics nil
|
|
|
|
|
"Most basic editing facilities."
|
|
|
|
|
:group 'editing)
|
|
|
|
|
|
|
|
|
|
(defgroup display nil
|
|
|
|
|
"How characters are displayed in buffers."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup execute nil
|
|
|
|
|
"Executing external commands."
|
|
|
|
|
:group 'processes)
|
|
|
|
|
|
|
|
|
|
(defgroup installation nil
|
|
|
|
|
"The Emacs installation."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup dired nil
|
|
|
|
|
"Directory editing."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup limits nil
|
|
|
|
|
"Internal Emacs limits."
|
|
|
|
|
:group 'internal)
|
|
|
|
|
|
|
|
|
|
(defgroup debug nil
|
|
|
|
|
"Debugging Emacs itself."
|
|
|
|
|
:group 'development)
|
|
|
|
|
|
|
|
|
|
(defgroup keyboard nil
|
|
|
|
|
"Input from the keyboard."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup mouse nil
|
|
|
|
|
"Input from the mouse."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
|
|
|
|
(defgroup menu nil
|
|
|
|
|
"Input from the menus."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
2005-04-11 19:24:59 +00:00
|
|
|
|
(defgroup dnd nil
|
|
|
|
|
"Handling data from drag and drop."
|
|
|
|
|
:group 'environment)
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defgroup auto-save nil
|
2007-04-13 09:05:43 +00:00
|
|
|
|
"Preventing accidental loss of data."
|
1997-06-19 01:11:43 +00:00
|
|
|
|
:group 'files)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
|
|
|
|
(defgroup processes-basics nil
|
|
|
|
|
"Basic stuff dealing with processes."
|
|
|
|
|
:group 'processes)
|
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(defgroup mule nil
|
|
|
|
|
"MULE Emacs internationalization."
|
1997-05-31 00:54:45 +00:00
|
|
|
|
:group 'i18n)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defgroup windows nil
|
|
|
|
|
"Windows within a frame."
|
2003-08-20 18:31:54 +00:00
|
|
|
|
:link '(custom-manual "(emacs)Windows")
|
1997-05-14 17:22:46 +00:00
|
|
|
|
:group 'environment)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
2006-11-06 22:05:23 +00:00
|
|
|
|
;;; Custom mode keymaps
|
|
|
|
|
|
|
|
|
|
(defvar custom-mode-map
|
|
|
|
|
(let ((map (make-keymap)))
|
|
|
|
|
(set-keymap-parent map widget-keymap)
|
|
|
|
|
(define-key map [remap self-insert-command] 'Custom-no-edit)
|
|
|
|
|
(define-key map "\^m" 'Custom-newline)
|
2011-10-01 20:32:01 +00:00
|
|
|
|
(define-key map " " 'scroll-up-command)
|
|
|
|
|
(define-key map "\177" 'scroll-down-command)
|
2006-11-06 22:05:23 +00:00
|
|
|
|
(define-key map "\C-c\C-c" 'Custom-set)
|
|
|
|
|
(define-key map "\C-x\C-s" 'Custom-save)
|
|
|
|
|
(define-key map "q" 'Custom-buffer-done)
|
|
|
|
|
(define-key map "u" 'Custom-goto-parent)
|
|
|
|
|
(define-key map "n" 'widget-forward)
|
|
|
|
|
(define-key map "p" 'widget-backward)
|
|
|
|
|
map)
|
2008-02-28 20:45:37 +00:00
|
|
|
|
"Keymap for `Custom-mode'.")
|
2006-11-06 22:05:23 +00:00
|
|
|
|
|
|
|
|
|
(defvar custom-mode-link-map
|
|
|
|
|
(let ((map (make-keymap)))
|
|
|
|
|
(set-keymap-parent map custom-mode-map)
|
|
|
|
|
(define-key map [down-mouse-2] nil)
|
|
|
|
|
(define-key map [down-mouse-1] 'mouse-drag-region)
|
|
|
|
|
(define-key map [mouse-2] 'widget-move-and-invoke)
|
|
|
|
|
map)
|
2008-02-28 20:45:37 +00:00
|
|
|
|
"Local keymap for links in `Custom-mode'.")
|
2006-11-06 22:05:23 +00:00
|
|
|
|
|
2007-11-19 07:52:07 +00:00
|
|
|
|
(defvar custom-field-keymap
|
|
|
|
|
(let ((map (copy-keymap widget-field-keymap)))
|
|
|
|
|
(define-key map "\C-c\C-c" 'Custom-set)
|
|
|
|
|
(define-key map "\C-x\C-s" 'Custom-save)
|
|
|
|
|
map)
|
|
|
|
|
"Keymap used inside editable fields in customization buffers.")
|
|
|
|
|
|
|
|
|
|
(widget-put (get 'editable-field 'widget-type) :keymap custom-field-keymap)
|
2006-11-06 22:05:23 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Utilities.
|
|
|
|
|
|
|
|
|
|
(defun custom-split-regexp-maybe (regexp)
|
|
|
|
|
"If REGEXP is a string, split it to a list at `\\|'.
|
2007-06-14 23:08:20 +00:00
|
|
|
|
You can get the original back from the result with:
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(mapconcat 'identity result \"\\|\")
|
|
|
|
|
|
|
|
|
|
IF REGEXP is not a string, return it unchanged."
|
|
|
|
|
(if (stringp regexp)
|
2007-06-14 23:08:20 +00:00
|
|
|
|
(split-string regexp "\\\\|")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
regexp))
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defun custom-variable-prompt ()
|
2003-01-07 19:29:25 +00:00
|
|
|
|
"Prompt for a custom variable, defaulting to the variable at point.
|
1997-04-12 17:51:31 +00:00
|
|
|
|
Return a list suitable for use in `interactive'."
|
2005-11-17 07:18:07 +00:00
|
|
|
|
(let* ((v (variable-at-point))
|
|
|
|
|
(default (and (symbolp v) (custom-variable-p v) (symbol-name v)))
|
|
|
|
|
(enable-recursive-minibuffers t)
|
|
|
|
|
val)
|
|
|
|
|
(setq val (completing-read
|
2005-12-23 01:18:08 +00:00
|
|
|
|
(if default (format "Customize variable (default %s): " default)
|
|
|
|
|
"Customize variable: ")
|
2005-11-17 07:18:07 +00:00
|
|
|
|
obarray 'custom-variable-p t nil nil default))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(list (if (equal val "")
|
1997-06-01 05:58:36 +00:00
|
|
|
|
(if (symbolp v) v nil)
|
|
|
|
|
(intern val)))))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(defun custom-menu-filter (menu widget)
|
|
|
|
|
"Convert MENU to the form used by `widget-choose'.
|
|
|
|
|
MENU should be in the same format as `custom-variable-menu'.
|
|
|
|
|
WIDGET is the widget to apply the filter entries of MENU on."
|
|
|
|
|
(let ((result nil)
|
|
|
|
|
current name action filter)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(while menu
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(setq current (car menu)
|
|
|
|
|
name (nth 0 current)
|
|
|
|
|
action (nth 1 current)
|
|
|
|
|
filter (nth 2 current)
|
|
|
|
|
menu (cdr menu))
|
|
|
|
|
(if (or (null filter) (funcall filter widget))
|
|
|
|
|
(push (cons name action) result)
|
|
|
|
|
(push name result)))
|
|
|
|
|
(nreverse result)))
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;; Unlispify.
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defvar custom-prefix-list nil
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"List of prefixes that should be ignored by `custom-unlispify'.")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defcustom custom-unlispify-menu-entries t
|
2006-11-03 15:06:26 +00:00
|
|
|
|
"Display menu entries as words instead of symbols if non-nil."
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-menu
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:type 'boolean)
|
|
|
|
|
|
1997-07-15 19:21:04 +00:00
|
|
|
|
(defcustom custom-unlispify-remove-prefixes nil
|
|
|
|
|
"Non-nil means remove group prefixes from option names in buffer."
|
|
|
|
|
:group 'custom-menu
|
2002-02-24 09:14:41 +00:00
|
|
|
|
:group 'custom-buffer
|
1997-07-15 19:21:04 +00:00
|
|
|
|
:type 'boolean)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-unlispify-menu-entry (symbol &optional no-suffix)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Convert SYMBOL into a menu entry."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(cond ((not custom-unlispify-menu-entries)
|
|
|
|
|
(symbol-name symbol))
|
|
|
|
|
((get symbol 'custom-tag)
|
|
|
|
|
(if no-suffix
|
|
|
|
|
(get symbol 'custom-tag)
|
|
|
|
|
(concat (get symbol 'custom-tag) "...")))
|
|
|
|
|
(t
|
2003-02-01 00:39:58 +00:00
|
|
|
|
(with-current-buffer (get-buffer-create " *Custom-Work*")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(erase-buffer)
|
|
|
|
|
(princ symbol (current-buffer))
|
|
|
|
|
(goto-char (point-min))
|
2002-08-30 21:52:10 +00:00
|
|
|
|
;; FIXME: Boolean variables are not predicates, so they shouldn't
|
|
|
|
|
;; end with `-p'. -stef
|
|
|
|
|
;; (when (and (eq (get symbol 'custom-type) 'boolean)
|
|
|
|
|
;; (re-search-forward "-p\\'" nil t))
|
|
|
|
|
;; (replace-match "" t t)
|
|
|
|
|
;; (goto-char (point-min)))
|
1997-07-15 19:21:04 +00:00
|
|
|
|
(if custom-unlispify-remove-prefixes
|
|
|
|
|
(let ((prefixes custom-prefix-list)
|
|
|
|
|
prefix)
|
|
|
|
|
(while prefixes
|
|
|
|
|
(setq prefix (car prefixes))
|
|
|
|
|
(if (search-forward prefix (+ (point) (length prefix)) t)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(progn
|
1997-07-15 19:21:04 +00:00
|
|
|
|
(setq prefixes nil)
|
|
|
|
|
(delete-region (point-min) (point)))
|
|
|
|
|
(setq prefixes (cdr prefixes))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(subst-char-in-region (point-min) (point-max) ?- ?\ t)
|
|
|
|
|
(capitalize-region (point-min) (point-max))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(unless no-suffix
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(goto-char (point-max))
|
|
|
|
|
(insert "..."))
|
|
|
|
|
(buffer-string)))))
|
|
|
|
|
|
|
|
|
|
(defcustom custom-unlispify-tag-names t
|
2006-11-03 15:06:26 +00:00
|
|
|
|
"Display tag names as words instead of symbols if non-nil."
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:type 'boolean)
|
|
|
|
|
|
|
|
|
|
(defun custom-unlispify-tag-name (symbol)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Convert SYMBOL into a menu entry."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let ((custom-unlispify-menu-entries custom-unlispify-tag-names))
|
|
|
|
|
(custom-unlispify-menu-entry symbol t)))
|
|
|
|
|
|
|
|
|
|
(defun custom-prefix-add (symbol prefixes)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Add SYMBOL to list of ignored PREFIXES."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(cons (or (get symbol 'custom-prefix)
|
|
|
|
|
(concat (symbol-name symbol) "-"))
|
|
|
|
|
prefixes))
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;; Guess.
|
|
|
|
|
|
|
|
|
|
(defcustom custom-guess-name-alist
|
|
|
|
|
'(("-p\\'" boolean)
|
2006-06-16 15:12:09 +00:00
|
|
|
|
("-flag\\'" boolean)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
("-hook\\'" hook)
|
|
|
|
|
("-face\\'" face)
|
|
|
|
|
("-file\\'" file)
|
|
|
|
|
("-function\\'" function)
|
|
|
|
|
("-functions\\'" (repeat function))
|
|
|
|
|
("-list\\'" (repeat sexp))
|
2011-07-11 14:57:15 +00:00
|
|
|
|
("-alist\\'" (alist :key-type sexp :value-type sexp)))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
"Alist of (MATCH TYPE).
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
MATCH should be a regexp matching the name of a symbol, and TYPE should
|
1997-04-12 17:51:31 +00:00
|
|
|
|
be a widget suitable for editing the value of that symbol. The TYPE
|
|
|
|
|
of the first entry where MATCH matches the name of the symbol will be
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
used.
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
|
|
|
|
This is used for guessing the type of variables not declared with
|
|
|
|
|
customize."
|
|
|
|
|
:type '(repeat (group (regexp :tag "Match") (sexp :tag "Type")))
|
2006-01-02 22:27:08 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defcustom custom-guess-doc-alist
|
|
|
|
|
'(("\\`\\*?Non-nil " boolean))
|
|
|
|
|
"Alist of (MATCH TYPE).
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
MATCH should be a regexp matching a documentation string, and TYPE
|
|
|
|
|
should be a widget suitable for editing the value of a variable with
|
|
|
|
|
that documentation string. The TYPE of the first entry where MATCH
|
|
|
|
|
matches the name of the symbol will be used.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
This is used for guessing the type of variables not declared with
|
|
|
|
|
customize."
|
|
|
|
|
:type '(repeat (group (regexp :tag "Match") (sexp :tag "Type")))
|
2006-01-02 22:27:08 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defun custom-guess-type (symbol)
|
|
|
|
|
"Guess a widget suitable for editing the value of SYMBOL.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
This is done by matching SYMBOL with `custom-guess-name-alist' and
|
1997-04-12 17:51:31 +00:00
|
|
|
|
if that fails, the doc string with `custom-guess-doc-alist'."
|
|
|
|
|
(let ((name (symbol-name symbol))
|
|
|
|
|
(names custom-guess-name-alist)
|
|
|
|
|
current found)
|
|
|
|
|
(while names
|
|
|
|
|
(setq current (car names)
|
|
|
|
|
names (cdr names))
|
|
|
|
|
(when (string-match (nth 0 current) name)
|
|
|
|
|
(setq found (nth 1 current)
|
|
|
|
|
names nil)))
|
|
|
|
|
(unless found
|
|
|
|
|
(let ((doc (documentation-property symbol 'variable-documentation))
|
|
|
|
|
(docs custom-guess-doc-alist))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when doc
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(while docs
|
|
|
|
|
(setq current (car docs)
|
|
|
|
|
docs (cdr docs))
|
|
|
|
|
(when (string-match (nth 0 current) doc)
|
|
|
|
|
(setq found (nth 1 current)
|
|
|
|
|
docs nil))))))
|
|
|
|
|
found))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
;;; Sorting.
|
|
|
|
|
|
2006-12-26 21:48:17 +00:00
|
|
|
|
;;;###autoload
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(defcustom custom-browse-sort-alphabetically nil
|
2006-12-26 21:48:17 +00:00
|
|
|
|
"If non-nil, sort customization group alphabetically in `custom-browse'."
|
1997-06-25 15:30:27 +00:00
|
|
|
|
:type 'boolean
|
|
|
|
|
:group 'custom-browse)
|
|
|
|
|
|
|
|
|
|
(defcustom custom-browse-order-groups nil
|
|
|
|
|
"If non-nil, order group members within each customization group.
|
|
|
|
|
If `first', order groups before non-groups.
|
|
|
|
|
If `last', order groups after non-groups."
|
|
|
|
|
:type '(choice (const first)
|
|
|
|
|
(const last)
|
|
|
|
|
(const :tag "none" nil))
|
|
|
|
|
:group 'custom-browse)
|
|
|
|
|
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(defcustom custom-browse-only-groups nil
|
|
|
|
|
"If non-nil, show group members only within each customization group."
|
|
|
|
|
:type 'boolean
|
|
|
|
|
:group 'custom-browse)
|
|
|
|
|
|
2006-12-26 21:48:17 +00:00
|
|
|
|
;;;###autoload
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(defcustom custom-buffer-sort-alphabetically t
|
|
|
|
|
"Whether to sort customization groups alphabetically in Custom buffer."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:type 'boolean
|
2010-03-31 22:22:17 +00:00
|
|
|
|
:group 'custom-buffer
|
|
|
|
|
:version "24.1")
|
1997-05-30 00:39:40 +00:00
|
|
|
|
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(defcustom custom-buffer-order-groups 'last
|
|
|
|
|
"If non-nil, order group members within each customization group.
|
|
|
|
|
If `first', order groups before non-groups.
|
|
|
|
|
If `last', order groups after non-groups."
|
|
|
|
|
:type '(choice (const first)
|
|
|
|
|
(const last)
|
|
|
|
|
(const :tag "none" nil))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
|
2006-12-26 21:48:17 +00:00
|
|
|
|
;;;###autoload
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(defcustom custom-menu-sort-alphabetically nil
|
2006-12-26 21:48:17 +00:00
|
|
|
|
"If non-nil, sort each customization group alphabetically in menus."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:type 'boolean
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-menu)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(defcustom custom-menu-order-groups 'first
|
|
|
|
|
"If non-nil, order group members within each customization group.
|
|
|
|
|
If `first', order groups before non-groups.
|
|
|
|
|
If `last', order groups after non-groups."
|
|
|
|
|
:type '(choice (const first)
|
|
|
|
|
(const last)
|
|
|
|
|
(const :tag "none" nil))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-menu)
|
|
|
|
|
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(defun custom-sort-items (items sort-alphabetically order-groups)
|
|
|
|
|
"Return a sorted copy of ITEMS.
|
|
|
|
|
ITEMS should be a `custom-group' property.
|
|
|
|
|
If SORT-ALPHABETICALLY non-nil, sort alphabetically.
|
|
|
|
|
If ORDER-GROUPS is `first' order groups before non-groups, if `last' order
|
|
|
|
|
groups after non-groups, if nil do not order groups at all."
|
|
|
|
|
(sort (copy-sequence items)
|
|
|
|
|
(lambda (a b)
|
|
|
|
|
(let ((typea (nth 1 a)) (typeb (nth 1 b))
|
2000-04-13 19:05:10 +00:00
|
|
|
|
(namea (nth 0 a)) (nameb (nth 0 b)))
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(cond ((not order-groups)
|
|
|
|
|
;; Since we don't care about A and B order, maybe sort.
|
|
|
|
|
(when sort-alphabetically
|
|
|
|
|
(string-lessp namea nameb)))
|
|
|
|
|
((eq typea 'custom-group)
|
|
|
|
|
;; If B is also a group, maybe sort. Otherwise, order A and B.
|
|
|
|
|
(if (eq typeb 'custom-group)
|
|
|
|
|
(when sort-alphabetically
|
|
|
|
|
(string-lessp namea nameb))
|
|
|
|
|
(eq order-groups 'first)))
|
|
|
|
|
((eq typeb 'custom-group)
|
|
|
|
|
;; Since A cannot be a group, order A and B.
|
|
|
|
|
(eq order-groups 'last))
|
|
|
|
|
(sort-alphabetically
|
|
|
|
|
;; Since A and B cannot be groups, sort.
|
|
|
|
|
(string-lessp namea nameb)))))))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Custom Mode Commands.
|
|
|
|
|
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
;; This variable is used by `custom-tool-bar-map', or directly by
|
2008-11-16 23:27:52 +00:00
|
|
|
|
;; `custom-buffer-create-internal' if `custom-buffer-verbose-help' is non-nil.
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
|
|
|
|
|
(defvar custom-commands
|
2010-10-09 03:23:38 +00:00
|
|
|
|
'((" Set for current session " Custom-set t
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Apply all settings in this buffer to the current session"
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"index"
|
|
|
|
|
"Apply")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Save for future sessions " Custom-save
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(or custom-file user-init-file)
|
|
|
|
|
"Apply all settings in this buffer and save them for future Emacs sessions."
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"save"
|
|
|
|
|
"Save")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Undo edits " Custom-reset-current t
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Restore all settings in this buffer to reflect their current values."
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"refresh"
|
|
|
|
|
"Undo")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Reset to saved " Custom-reset-saved t
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Restore all settings in this buffer to their saved values (if any)."
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"undo"
|
|
|
|
|
"Reset")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Erase customizations " Custom-reset-standard
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(or custom-file user-init-file)
|
|
|
|
|
"Un-customize all settings in this buffer and save them with standard values."
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"delete"
|
|
|
|
|
"Uncustomize")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Help for Customize " Custom-help t
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Get help for using Customize."
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
"help"
|
|
|
|
|
"Help")
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(" Exit " Custom-buffer-done t "Exit Customize." "exit" "Exit")))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
|
|
|
|
|
(defun Custom-help ()
|
|
|
|
|
"Read the node on Easy Customization in the Emacs manual."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(interactive)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(info "(emacs)Easy Customization"))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defvar custom-reset-menu
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Undo Edits" . Custom-reset-current)
|
|
|
|
|
("Reset to Saved" . Custom-reset-saved)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
("Erase Customizations (use standard values)" . Custom-reset-standard))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Alist of actions for the `Reset' button.
|
|
|
|
|
The key is a string containing the name of the action, the value is a
|
2000-03-12 18:50:49 +00:00
|
|
|
|
Lisp function taking the widget as an element which will be called
|
1997-04-07 13:42:59 +00:00
|
|
|
|
when the action is chosen.")
|
|
|
|
|
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(defvar custom-options nil
|
|
|
|
|
"Customization widgets in the current buffer.")
|
|
|
|
|
|
|
|
|
|
(defun custom-command-apply (fun query &optional strong-query)
|
|
|
|
|
"Call function FUN on all widgets in `custom-options'.
|
|
|
|
|
If there is more than one widget, ask user for confirmation using
|
|
|
|
|
the query string QUERY, using `y-or-n-p' if STRONG-QUERY is nil,
|
|
|
|
|
and `yes-or-no-p' otherwise."
|
|
|
|
|
(if (or (and (= 1 (length custom-options))
|
|
|
|
|
(memq (widget-type (car custom-options))
|
|
|
|
|
'(custom-variable custom-face)))
|
|
|
|
|
(funcall (if strong-query 'yes-or-no-p 'y-or-n-p) query))
|
|
|
|
|
(progn (mapc fun custom-options) t)
|
|
|
|
|
(message "Aborted")
|
|
|
|
|
nil))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-set (&rest _ignore)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Set the current value of all edited settings in the buffer."
|
|
|
|
|
(interactive)
|
|
|
|
|
(custom-command-apply
|
|
|
|
|
(lambda (child)
|
|
|
|
|
(when (eq (widget-get child :custom-state) 'modified)
|
|
|
|
|
(widget-apply child :custom-set)))
|
|
|
|
|
"Set all values according to this buffer? "))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-save (&rest _ignore)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Set all edited settings, then save all settings that have been set.
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
If a setting was edited and set before, this saves it. If a
|
|
|
|
|
setting was merely edited before, this sets it then saves it."
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(interactive)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(when (custom-command-apply
|
|
|
|
|
(lambda (child)
|
|
|
|
|
(when (memq (widget-get child :custom-state)
|
|
|
|
|
'(modified set changed rogue))
|
|
|
|
|
(widget-apply child :custom-mark-to-save)))
|
|
|
|
|
"Save all settings in this buffer? " t)
|
|
|
|
|
;; Save changes to buffer and redraw.
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
(dolist (child custom-options)
|
|
|
|
|
(widget-apply child :custom-state-set-and-redraw))))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-reset (_widget &optional event)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Select item from reset menu."
|
|
|
|
|
(let* ((completion-ignore-case t)
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(answer (widget-choose "Reset settings"
|
1997-04-07 13:42:59 +00:00
|
|
|
|
custom-reset-menu
|
|
|
|
|
event)))
|
|
|
|
|
(if answer
|
|
|
|
|
(funcall answer))))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-reset-current (&rest _ignore)
|
2006-01-08 03:55:27 +00:00
|
|
|
|
"Reset all edited settings in the buffer to show their current values."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(interactive)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(custom-command-apply
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(if (memq (widget-get widget :custom-state) '(modified changed))
|
|
|
|
|
(widget-apply widget :custom-reset-current)))
|
|
|
|
|
"Reset all settings' buffer text to show current values? "))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-reset-saved (&rest _ignore)
|
2006-01-08 03:55:27 +00:00
|
|
|
|
"Reset all edited or set settings in the buffer to their saved value.
|
|
|
|
|
This also shows the saved values in the buffer."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(interactive)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(custom-command-apply
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(if (memq (widget-get widget :custom-state) '(modified set changed rogue))
|
|
|
|
|
(widget-apply widget :custom-reset-saved)))
|
|
|
|
|
"Reset all settings (current values and buffer text) to saved values? "))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
;; The next two variables are bound to '(t) by `Custom-reset-standard'
|
|
|
|
|
;; and `custom-group-reset-standard'. If these variables are nil, both
|
|
|
|
|
;; `custom-variable-reset-standard' and `custom-face-reset-standard'
|
|
|
|
|
;; save, reset and redraw the handled widget immediately. Otherwise,
|
|
|
|
|
;; they add the widget to the corresponding list and leave it to
|
|
|
|
|
;; `custom-reset-standard-save-and-update' to save, reset and redraw it.
|
|
|
|
|
(defvar custom-reset-standard-variables-list nil)
|
|
|
|
|
(defvar custom-reset-standard-faces-list nil)
|
|
|
|
|
|
|
|
|
|
;; The next function was excerpted from `custom-variable-reset-standard'
|
|
|
|
|
;; and `custom-face-reset-standard' and is used to avoid calling
|
|
|
|
|
;; `custom-save-all' repeatedly (and thus saving settings to file one by
|
|
|
|
|
;; one) when erasing all customizations.
|
|
|
|
|
(defun custom-reset-standard-save-and-update ()
|
|
|
|
|
"Save settings and redraw after erasing customizations."
|
|
|
|
|
(when (or (and custom-reset-standard-variables-list
|
|
|
|
|
(not (eq custom-reset-standard-variables-list '(t))))
|
|
|
|
|
(and custom-reset-standard-faces-list
|
|
|
|
|
(not (eq custom-reset-standard-faces-list '(t)))))
|
|
|
|
|
;; Save settings to file.
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
;; Set state of and redraw variables.
|
|
|
|
|
(dolist (widget custom-reset-standard-variables-list)
|
|
|
|
|
(unless (eq widget t)
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(custom-redraw widget)))
|
|
|
|
|
;; Set state of and redraw faces.
|
|
|
|
|
(dolist (widget custom-reset-standard-faces-list)
|
|
|
|
|
(unless (eq widget t)
|
|
|
|
|
(let* ((symbol (widget-value widget))
|
|
|
|
|
(child (car (widget-get widget :children)))
|
|
|
|
|
(comment-widget (widget-get widget :comment-widget)))
|
|
|
|
|
(put symbol 'face-comment nil)
|
|
|
|
|
(widget-value-set child
|
|
|
|
|
(custom-pre-filter-face-spec
|
|
|
|
|
(list (list t (custom-face-attributes-get
|
|
|
|
|
symbol nil)))))
|
|
|
|
|
;; This call manages the comment visibility
|
|
|
|
|
(widget-value-set comment-widget "")
|
|
|
|
|
(custom-face-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget))))))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-reset-standard (&rest _ignore)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
"Erase all customizations (either current or saved) in current buffer.
|
2005-12-23 01:39:01 +00:00
|
|
|
|
The immediate result is to restore them to their standard values.
|
|
|
|
|
This operation eliminates any saved values for the group members,
|
1999-11-26 19:47:26 +00:00
|
|
|
|
making them as if they had never been customized at all."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(interactive)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
;; Bind these temporarily.
|
|
|
|
|
(let ((custom-reset-standard-variables-list '(t))
|
|
|
|
|
(custom-reset-standard-faces-list '(t)))
|
|
|
|
|
(custom-command-apply
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(and (or (null (widget-get widget :custom-standard-value))
|
|
|
|
|
(widget-apply widget :custom-standard-value))
|
|
|
|
|
(memq (widget-get widget :custom-state)
|
|
|
|
|
'(modified set changed saved rogue))
|
|
|
|
|
(widget-apply widget :custom-mark-to-reset-standard)))
|
|
|
|
|
"Erase all customizations for settings in this buffer? " t)
|
|
|
|
|
(custom-reset-standard-save-and-update)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
;;; The Customize Commands
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defun custom-prompt-variable (prompt-var prompt-val &optional comment)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
"Prompt for a variable and a value and return them as a list.
|
|
|
|
|
PROMPT-VAR is the prompt for the variable, and PROMPT-VAL is the
|
|
|
|
|
prompt for the value. The %s escape in PROMPT-VAL is replaced with
|
|
|
|
|
the name of the variable.
|
|
|
|
|
|
|
|
|
|
If the variable has a `variable-interactive' property, that is used as if
|
|
|
|
|
it were the arg to `interactive' (which see) to interactively read the value.
|
|
|
|
|
|
|
|
|
|
If the variable has a `custom-type' property, it must be a widget and the
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
`:prompt-value' property of that widget will be used for reading the value.
|
2011-04-19 13:44:55 +00:00
|
|
|
|
If the variable also has a `custom-get' property, that is used for finding
|
2011-03-06 02:04:41 +00:00
|
|
|
|
the current value of the variable, otherwise `symbol-value' is used.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
2006-11-03 15:06:26 +00:00
|
|
|
|
If optional COMMENT argument is non-nil, also prompt for a comment and return
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
it as the third element in the list."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let* ((var (read-variable prompt-var))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(minibuffer-help-form '(describe-variable var))
|
|
|
|
|
(val
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let ((prop (get var 'variable-interactive))
|
|
|
|
|
(type (get var 'custom-type))
|
|
|
|
|
(prompt (format prompt-val var)))
|
|
|
|
|
(unless (listp type)
|
|
|
|
|
(setq type (list type)))
|
|
|
|
|
(cond (prop
|
|
|
|
|
;; Use VAR's `variable-interactive' property
|
|
|
|
|
;; as an interactive spec for prompting.
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(call-interactively `(lambda (arg)
|
|
|
|
|
(interactive ,prop)
|
|
|
|
|
arg)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(type
|
|
|
|
|
(widget-prompt-value type
|
|
|
|
|
prompt
|
|
|
|
|
(if (boundp var)
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(funcall
|
|
|
|
|
(or (get var 'custom-get) 'symbol-value)
|
2011-03-06 02:04:41 +00:00
|
|
|
|
var))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(not (boundp var))))
|
|
|
|
|
(t
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(eval-minibuffer prompt))))))
|
|
|
|
|
(if comment
|
|
|
|
|
(list var val
|
|
|
|
|
(read-string "Comment: " (get var 'variable-comment)))
|
|
|
|
|
(list var val))))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(defun customize-set-value (variable value &optional comment)
|
2002-02-11 16:47:55 +00:00
|
|
|
|
"Set VARIABLE to VALUE, and return VALUE. VALUE is a Lisp object.
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
If VARIABLE has a `variable-interactive' property, that is used as if
|
|
|
|
|
it were the arg to `interactive' (which see) to interactively read the value.
|
|
|
|
|
|
|
|
|
|
If VARIABLE has a `custom-type' property, it must be a widget and the
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
`:prompt-value' property of that widget will be used for reading the value.
|
|
|
|
|
|
|
|
|
|
If given a prefix (or a COMMENT argument), also prompt for a comment."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(interactive (custom-prompt-variable "Set variable: "
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
"Set %s to value: "
|
|
|
|
|
current-prefix-arg))
|
2003-01-29 21:44:18 +00:00
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(cond ((string= comment "")
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(put variable 'variable-comment nil))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(put variable 'variable-comment comment)))
|
|
|
|
|
(set variable value))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
2000-03-12 18:50:49 +00:00
|
|
|
|
(defun customize-set-variable (variable value &optional comment)
|
2002-02-11 16:47:55 +00:00
|
|
|
|
"Set the default for VARIABLE to VALUE, and return VALUE.
|
|
|
|
|
VALUE is a Lisp object.
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
If VARIABLE has a `custom-set' property, that is used for setting
|
|
|
|
|
VARIABLE, otherwise `set-default' is used.
|
|
|
|
|
|
|
|
|
|
If VARIABLE has a `variable-interactive' property, that is used as if
|
|
|
|
|
it were the arg to `interactive' (which see) to interactively read the value.
|
|
|
|
|
|
|
|
|
|
If VARIABLE has a `custom-type' property, it must be a widget and the
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
`:prompt-value' property of that widget will be used for reading the value.
|
|
|
|
|
|
|
|
|
|
If given a prefix (or a COMMENT argument), also prompt for a comment."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(interactive (custom-prompt-variable "Set variable: "
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
"Set customized value for %s to: "
|
|
|
|
|
current-prefix-arg))
|
2002-02-11 16:47:55 +00:00
|
|
|
|
(custom-load-symbol variable)
|
2006-02-19 17:27:37 +00:00
|
|
|
|
(custom-push-theme 'theme-value variable 'user 'set (custom-quote value))
|
2000-03-12 18:50:49 +00:00
|
|
|
|
(funcall (or (get variable 'custom-set) 'set-default) variable value)
|
|
|
|
|
(put variable 'customized-value (list (custom-quote value)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(cond ((string= comment "")
|
2000-03-12 18:50:49 +00:00
|
|
|
|
(put variable 'variable-comment nil)
|
|
|
|
|
(put variable 'customized-variable-comment nil))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment
|
2000-03-12 18:50:49 +00:00
|
|
|
|
(put variable 'variable-comment comment)
|
2002-02-11 16:47:55 +00:00
|
|
|
|
(put variable 'customized-variable-comment comment)))
|
|
|
|
|
value)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
1997-07-28 15:46:57 +00:00
|
|
|
|
;;;###autoload
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(defun customize-save-variable (variable value &optional comment)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
"Set the default for VARIABLE to VALUE, and save it for future sessions.
|
2002-02-11 16:47:55 +00:00
|
|
|
|
Return VALUE.
|
|
|
|
|
|
1997-07-28 15:46:57 +00:00
|
|
|
|
If VARIABLE has a `custom-set' property, that is used for setting
|
|
|
|
|
VARIABLE, otherwise `set-default' is used.
|
|
|
|
|
|
|
|
|
|
If VARIABLE has a `variable-interactive' property, that is used as if
|
|
|
|
|
it were the arg to `interactive' (which see) to interactively read the value.
|
|
|
|
|
|
|
|
|
|
If VARIABLE has a `custom-type' property, it must be a widget and the
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
`:prompt-value' property of that widget will be used for reading the value.
|
|
|
|
|
|
|
|
|
|
If given a prefix (or a COMMENT argument), also prompt for a comment."
|
2002-02-02 15:52:36 +00:00
|
|
|
|
(interactive (custom-prompt-variable "Set and save variable: "
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
"Set and save value for %s as: "
|
|
|
|
|
current-prefix-arg))
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(funcall (or (get variable 'custom-set) 'set-default) variable value)
|
|
|
|
|
(put variable 'saved-value (list (custom-quote value)))
|
2005-12-24 15:21:45 +00:00
|
|
|
|
(custom-push-theme 'theme-value variable 'user 'set (custom-quote value))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(cond ((string= comment "")
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(put variable 'variable-comment nil)
|
|
|
|
|
(put variable 'saved-variable-comment nil))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment
|
2002-05-12 15:19:59 +00:00
|
|
|
|
(put variable 'variable-comment comment)
|
|
|
|
|
(put variable 'saved-variable-comment comment)))
|
2007-03-05 15:16:08 +00:00
|
|
|
|
(put variable 'customized-value nil)
|
|
|
|
|
(put variable 'customized-variable-comment nil)
|
2011-07-11 20:12:07 +00:00
|
|
|
|
(if (custom-file t)
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
(message "Setting `%s' temporarily since \"emacs -q\" would overwrite customizations"
|
|
|
|
|
variable)
|
|
|
|
|
(set variable value))
|
2002-02-11 16:47:55 +00:00
|
|
|
|
value)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
|
2011-06-30 01:39:52 +00:00
|
|
|
|
;; Some parts of Emacs might prompt the user to save customizations,
|
|
|
|
|
;; during startup before customizations are loaded. This function
|
|
|
|
|
;; handles this corner case by avoiding calling `custom-save-variable'
|
|
|
|
|
;; too early, which could wipe out existing customizations.
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-push-and-save (list-var elts)
|
|
|
|
|
"Add ELTS to LIST-VAR and save for future sessions, safely.
|
|
|
|
|
ELTS should be a list. This function adds each entry to the
|
|
|
|
|
value of LIST-VAR using `add-to-list'.
|
|
|
|
|
|
|
|
|
|
If Emacs is initialized, call `customize-save-variable' to save
|
|
|
|
|
the resulting list value now. Otherwise, add an entry to
|
|
|
|
|
`after-init-hook' to save it after initialization."
|
|
|
|
|
(dolist (entry elts)
|
|
|
|
|
(add-to-list list-var entry))
|
|
|
|
|
(if after-init-time
|
|
|
|
|
(let ((coding-system-for-read nil))
|
|
|
|
|
(customize-save-variable list-var (eval list-var)))
|
|
|
|
|
(add-hook 'after-init-hook
|
|
|
|
|
`(lambda ()
|
|
|
|
|
(customize-push-and-save ',list-var ',elts)))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
1997-05-04 03:47:13 +00:00
|
|
|
|
(defun customize ()
|
|
|
|
|
"Select a customization buffer which you can use to set user options.
|
|
|
|
|
User options are structured into \"groups\".
|
|
|
|
|
Initially the top-level group `Emacs' and its immediate subgroups
|
|
|
|
|
are shown; the contents of those subgroups are initially hidden."
|
|
|
|
|
(interactive)
|
1997-05-08 16:04:55 +00:00
|
|
|
|
(customize-group 'emacs))
|
1997-05-04 03:47:13 +00:00
|
|
|
|
|
2002-10-10 13:10:53 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-mode (mode)
|
|
|
|
|
"Customize options related to the current major mode.
|
|
|
|
|
If a prefix \\[universal-argument] was given (or if the current major mode has no known group),
|
|
|
|
|
then prompt for the MODE to customize."
|
|
|
|
|
(interactive
|
|
|
|
|
(list
|
|
|
|
|
(let ((completion-regexp-list '("-mode\\'"))
|
|
|
|
|
(group (custom-group-of-mode major-mode)))
|
|
|
|
|
(if (and group (not current-prefix-arg))
|
|
|
|
|
major-mode
|
|
|
|
|
(intern
|
|
|
|
|
(completing-read (if group
|
|
|
|
|
(format "Major mode (default %s): " major-mode)
|
|
|
|
|
"Major mode: ")
|
|
|
|
|
obarray
|
|
|
|
|
'custom-group-of-mode
|
|
|
|
|
t nil nil (if group (symbol-name major-mode))))))))
|
|
|
|
|
(customize-group (custom-group-of-mode mode)))
|
|
|
|
|
|
2007-07-28 20:03:40 +00:00
|
|
|
|
(defun customize-read-group ()
|
|
|
|
|
(let ((completion-ignore-case t))
|
|
|
|
|
(completing-read "Customize group (default emacs): "
|
|
|
|
|
obarray
|
|
|
|
|
(lambda (symbol)
|
|
|
|
|
(or (and (get symbol 'custom-loads)
|
|
|
|
|
(not (get symbol 'custom-autoload)))
|
|
|
|
|
(get symbol 'custom-group)))
|
|
|
|
|
t)))
|
2002-10-10 13:10:53 +00:00
|
|
|
|
|
1997-05-04 03:47:13 +00:00
|
|
|
|
;;;###autoload
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(defun customize-group (&optional group other-window)
|
|
|
|
|
"Customize GROUP, which must be a customization group.
|
|
|
|
|
If OTHER-WINDOW is non-nil, display in another window."
|
2007-07-28 20:03:40 +00:00
|
|
|
|
(interactive (list (customize-read-group)))
|
1997-05-04 03:47:13 +00:00
|
|
|
|
(when (stringp group)
|
|
|
|
|
(if (string-equal "" group)
|
|
|
|
|
(setq group 'emacs)
|
|
|
|
|
(setq group (intern group))))
|
1997-06-21 04:54:54 +00:00
|
|
|
|
(let ((name (format "*Customize Group: %s*"
|
|
|
|
|
(custom-unlispify-tag-name group))))
|
2011-09-22 16:15:52 +00:00
|
|
|
|
(cond
|
|
|
|
|
((null (get-buffer name))
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(funcall (if other-window
|
|
|
|
|
'custom-buffer-create-other-window
|
|
|
|
|
'custom-buffer-create)
|
|
|
|
|
(list (list group 'custom-group))
|
|
|
|
|
name
|
|
|
|
|
(concat " for group "
|
2011-09-22 16:15:52 +00:00
|
|
|
|
(custom-unlispify-tag-name group))))
|
|
|
|
|
(other-window
|
|
|
|
|
(switch-to-buffer-other-window name))
|
|
|
|
|
(t
|
|
|
|
|
(pop-to-buffer-same-window name)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-24 16:53:55 +00:00
|
|
|
|
;;;###autoload
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(defun customize-group-other-window (&optional group)
|
|
|
|
|
"Customize GROUP, which must be a customization group, in another window."
|
2007-07-28 20:03:40 +00:00
|
|
|
|
(interactive (list (customize-read-group)))
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(customize-group group t))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
1997-06-01 11:58:17 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defalias 'customize-variable 'customize-option)
|
1997-06-01 06:41:08 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
1997-06-01 06:41:08 +00:00
|
|
|
|
(defun customize-option (symbol)
|
|
|
|
|
"Customize SYMBOL, which must be a user option variable."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(interactive (custom-variable-prompt))
|
2006-06-19 21:46:54 +00:00
|
|
|
|
(unless symbol
|
|
|
|
|
(error "No variable specified"))
|
2005-07-07 23:19:43 +00:00
|
|
|
|
(let ((basevar (indirect-variable symbol)))
|
|
|
|
|
(custom-buffer-create (list (list basevar 'custom-variable))
|
|
|
|
|
(format "*Customize Option: %s*"
|
|
|
|
|
(custom-unlispify-tag-name basevar)))
|
|
|
|
|
(unless (eq symbol basevar)
|
|
|
|
|
(message "`%s' is an alias for `%s'" symbol basevar))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2002-12-26 22:15:38 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defalias 'customize-variable-other-window 'customize-option-other-window)
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-option-other-window (symbol)
|
|
|
|
|
"Customize SYMBOL, which must be a user option variable.
|
|
|
|
|
Show the buffer in another window, but don't select it."
|
|
|
|
|
(interactive (custom-variable-prompt))
|
2006-06-19 21:46:54 +00:00
|
|
|
|
(unless symbol
|
|
|
|
|
(error "No variable specified"))
|
2005-07-07 23:19:43 +00:00
|
|
|
|
(let ((basevar (indirect-variable symbol)))
|
|
|
|
|
(custom-buffer-create-other-window
|
|
|
|
|
(list (list basevar 'custom-variable))
|
|
|
|
|
(format "*Customize Option: %s*" (custom-unlispify-tag-name basevar)))
|
|
|
|
|
(unless (eq symbol basevar)
|
|
|
|
|
(message "`%s' is an alias for `%s'" symbol basevar))))
|
2002-12-26 22:15:38 +00:00
|
|
|
|
|
2010-03-11 06:20:24 +00:00
|
|
|
|
(defvar customize-changed-options-previous-release "23.1"
|
1998-08-26 20:08:30 +00:00
|
|
|
|
"Version for `customize-changed-options' to refer back to by default.")
|
|
|
|
|
|
2006-04-10 23:43:34 +00:00
|
|
|
|
;; Packages will update this variable, so make it available.
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defvar customize-package-emacs-version-alist nil
|
2006-07-28 03:31:44 +00:00
|
|
|
|
"Alist mapping versions of a package to Emacs versions.
|
|
|
|
|
We use this for packages that have their own names, but are released
|
|
|
|
|
as part of Emacs itself.
|
|
|
|
|
|
|
|
|
|
Each elements looks like this:
|
2006-04-14 00:46:39 +00:00
|
|
|
|
|
|
|
|
|
(PACKAGE (PVERSION . EVERSION)...)
|
|
|
|
|
|
2006-07-28 03:31:44 +00:00
|
|
|
|
Here PACKAGE is the name of a package, as a symbol. After
|
|
|
|
|
PACKAGE come one or more elements, each associating a
|
|
|
|
|
package version PVERSION with the first Emacs version
|
|
|
|
|
EVERSION in which it (or a subsequent version of PACKAGE)
|
|
|
|
|
was first released. Both PVERSION and EVERSION are strings.
|
|
|
|
|
PVERSION should be a string that this package used in
|
|
|
|
|
the :package-version keyword for `defcustom', `defgroup',
|
|
|
|
|
and `defface'.
|
|
|
|
|
|
|
|
|
|
For example, the MH-E package updates this alist as follows:
|
2006-04-14 00:46:39 +00:00
|
|
|
|
|
|
|
|
|
(add-to-list 'customize-package-emacs-version-alist
|
|
|
|
|
'(MH-E (\"6.0\" . \"22.1\") (\"6.1\" . \"22.1\")
|
|
|
|
|
(\"7.0\" . \"22.1\") (\"7.1\" . \"22.1\")
|
|
|
|
|
(\"7.2\" . \"22.1\") (\"7.3\" . \"22.1\")
|
|
|
|
|
(\"7.4\" . \"22.1\") (\"8.0\" . \"22.1\")))
|
|
|
|
|
|
|
|
|
|
The value of PACKAGE needs to be unique and it needs to match the
|
|
|
|
|
PACKAGE value appearing in the :package-version keyword. Since
|
|
|
|
|
the user might see the value in a error message, a good choice is
|
|
|
|
|
the official name of the package, such as MH-E or Gnus.")
|
2006-04-10 23:43:34 +00:00
|
|
|
|
|
2005-12-23 01:34:27 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defalias 'customize-changed 'customize-changed-options)
|
|
|
|
|
|
1997-06-04 11:43:32 +00:00
|
|
|
|
;;;###autoload
|
2007-10-24 08:09:30 +00:00
|
|
|
|
(defun customize-changed-options (&optional since-version)
|
2005-12-23 01:34:27 +00:00
|
|
|
|
"Customize all settings whose meanings have changed in Emacs itself.
|
1998-08-26 20:08:30 +00:00
|
|
|
|
This includes new user option variables and faces, and new
|
2005-12-23 01:34:27 +00:00
|
|
|
|
customization groups, as well as older options and faces whose meanings
|
|
|
|
|
or default values have changed since the previous major Emacs release.
|
1998-08-26 20:08:30 +00:00
|
|
|
|
|
2005-12-23 01:34:27 +00:00
|
|
|
|
With argument SINCE-VERSION (a string), customize all settings
|
|
|
|
|
that were added or redefined since that version."
|
1998-08-26 20:08:30 +00:00
|
|
|
|
|
2006-03-17 23:12:14 +00:00
|
|
|
|
(interactive
|
|
|
|
|
(list
|
|
|
|
|
(read-from-minibuffer
|
|
|
|
|
(format "Customize options changed, since version (default %s): "
|
|
|
|
|
customize-changed-options-previous-release))))
|
1997-12-09 21:41:33 +00:00
|
|
|
|
(if (equal since-version "")
|
2000-06-20 09:48:09 +00:00
|
|
|
|
(setq since-version nil)
|
|
|
|
|
(unless (condition-case nil
|
|
|
|
|
(numberp (read since-version))
|
|
|
|
|
(error nil))
|
|
|
|
|
(signal 'wrong-type-argument (list 'numberp since-version))))
|
1998-08-26 20:08:30 +00:00
|
|
|
|
(unless since-version
|
|
|
|
|
(setq since-version customize-changed-options-previous-release))
|
2003-01-13 23:43:30 +00:00
|
|
|
|
|
|
|
|
|
;; Load the information for versions since since-version. We use
|
|
|
|
|
;; custom-load-symbol for this.
|
|
|
|
|
(put 'custom-versions-load-alist 'custom-loads nil)
|
|
|
|
|
(dolist (elt custom-versions-load-alist)
|
2003-01-18 03:19:28 +00:00
|
|
|
|
(if (customize-version-lessp since-version (car elt))
|
|
|
|
|
(dolist (load (cdr elt))
|
|
|
|
|
(custom-add-load 'custom-versions-load-alist load))))
|
2003-01-13 23:43:30 +00:00
|
|
|
|
(custom-load-symbol 'custom-versions-load-alist)
|
|
|
|
|
(put 'custom-versions-load-alist 'custom-loads nil)
|
|
|
|
|
|
|
|
|
|
(let (found)
|
|
|
|
|
(mapatoms
|
|
|
|
|
(lambda (symbol)
|
2006-04-10 23:43:34 +00:00
|
|
|
|
(let* ((package-version (get symbol 'custom-package-version))
|
|
|
|
|
(version
|
|
|
|
|
(or (and package-version
|
|
|
|
|
(customize-package-emacs-version symbol
|
|
|
|
|
package-version))
|
|
|
|
|
(get symbol 'custom-version))))
|
2003-01-13 23:43:30 +00:00
|
|
|
|
(if version
|
|
|
|
|
(when (customize-version-lessp since-version version)
|
|
|
|
|
(if (or (get symbol 'custom-group)
|
|
|
|
|
(get symbol 'group-documentation))
|
|
|
|
|
(push (list symbol 'custom-group) found))
|
|
|
|
|
(if (custom-variable-p symbol)
|
|
|
|
|
(push (list symbol 'custom-variable) found))
|
|
|
|
|
(if (custom-facep symbol)
|
|
|
|
|
(push (list symbol 'custom-face) found)))))))
|
|
|
|
|
(if found
|
|
|
|
|
(custom-buffer-create (custom-sort-items found t 'first)
|
|
|
|
|
"*Customize Changed Options*")
|
|
|
|
|
(error "No user option defaults have been changed since Emacs %s"
|
|
|
|
|
since-version))))
|
1997-12-09 21:41:33 +00:00
|
|
|
|
|
2006-04-10 23:43:34 +00:00
|
|
|
|
(defun customize-package-emacs-version (symbol package-version)
|
2006-07-28 03:31:44 +00:00
|
|
|
|
"Return the Emacs version in which SYMBOL's meaning last changed.
|
|
|
|
|
PACKAGE-VERSION has the form (PACKAGE . VERSION). We use
|
2006-04-10 23:43:34 +00:00
|
|
|
|
`customize-package-emacs-version-alist' to find the version of
|
2006-07-28 03:31:44 +00:00
|
|
|
|
Emacs that is associated with version VERSION of PACKAGE."
|
2006-04-10 23:43:34 +00:00
|
|
|
|
(let (package-versions emacs-version)
|
|
|
|
|
;; Use message instead of error since we want user to be able to
|
|
|
|
|
;; see the rest of the symbols even if a package author has
|
|
|
|
|
;; botched things up.
|
|
|
|
|
(cond ((not (listp package-version))
|
|
|
|
|
(message "Invalid package-version value for %s" symbol))
|
|
|
|
|
((setq package-versions (assq (car package-version)
|
|
|
|
|
customize-package-emacs-version-alist))
|
|
|
|
|
(setq emacs-version
|
2006-04-14 00:46:39 +00:00
|
|
|
|
(cdr (assoc (cdr package-version) package-versions)))
|
2006-04-10 23:43:34 +00:00
|
|
|
|
(unless emacs-version
|
2006-04-14 00:46:39 +00:00
|
|
|
|
(message "%s version %s not found in %s" symbol
|
|
|
|
|
(cdr package-version)
|
2006-04-10 23:43:34 +00:00
|
|
|
|
"customize-package-emacs-version-alist")))
|
|
|
|
|
(t
|
2006-07-28 03:31:44 +00:00
|
|
|
|
(message "Package %s version %s lists no corresponding Emacs version"
|
2006-04-10 23:43:34 +00:00
|
|
|
|
(car package-version)
|
2006-07-28 03:31:44 +00:00
|
|
|
|
(cdr package-version))))
|
2006-04-10 23:43:34 +00:00
|
|
|
|
emacs-version))
|
|
|
|
|
|
1997-12-09 21:41:33 +00:00
|
|
|
|
(defun customize-version-lessp (version1 version2)
|
2000-06-20 09:48:09 +00:00
|
|
|
|
;; Why are the versions strings, and given that they are, why aren't
|
|
|
|
|
;; they converted to numbers and compared as such here? -- fx
|
|
|
|
|
|
1998-08-26 20:08:30 +00:00
|
|
|
|
;; In case someone made a mistake and left out the quotes
|
|
|
|
|
;; in the :version value.
|
|
|
|
|
(if (numberp version2)
|
|
|
|
|
(setq version2 (prin1-to-string version2)))
|
1997-12-09 21:41:33 +00:00
|
|
|
|
(let (major1 major2 minor1 minor2)
|
2000-06-20 09:48:09 +00:00
|
|
|
|
(string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version1)
|
|
|
|
|
(setq major1 (read (or (match-string 1 version1)
|
|
|
|
|
"0")))
|
|
|
|
|
(setq minor1 (read (or (match-string 3 version1)
|
|
|
|
|
"0")))
|
|
|
|
|
(string-match "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" version2)
|
|
|
|
|
(setq major2 (read (or (match-string 1 version2)
|
|
|
|
|
"0")))
|
|
|
|
|
(setq minor2 (read (or (match-string 3 version2)
|
|
|
|
|
"0")))
|
1997-12-09 21:41:33 +00:00
|
|
|
|
(or (< major1 major2)
|
|
|
|
|
(and (= major1 major2)
|
|
|
|
|
(< minor1 minor2)))))
|
2002-12-23 18:40:24 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(defun customize-face (&optional face other-window)
|
2004-05-28 18:59:01 +00:00
|
|
|
|
"Customize FACE, which should be a face name or nil.
|
2005-06-22 14:22:02 +00:00
|
|
|
|
If FACE is nil, customize all faces. If FACE is actually a
|
|
|
|
|
face-alias, customize the face it is aliased to.
|
2002-04-25 14:21:47 +00:00
|
|
|
|
|
2011-09-10 20:14:02 +00:00
|
|
|
|
If OTHER-WINDOW is non-nil, display in another window.
|
|
|
|
|
|
2002-04-25 14:21:47 +00:00
|
|
|
|
Interactively, when point is on text which has a face specified,
|
2004-05-28 18:59:01 +00:00
|
|
|
|
suggest to customize that face, if it's customizable."
|
2007-07-28 20:03:40 +00:00
|
|
|
|
(interactive (list (read-face-name "Customize face" "all faces" t)))
|
2002-04-26 22:31:57 +00:00
|
|
|
|
(if (member face '(nil ""))
|
|
|
|
|
(setq face (face-list)))
|
|
|
|
|
(if (and (listp face) (null (cdr face)))
|
|
|
|
|
(setq face (car face)))
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(let ((display-fun (if other-window
|
|
|
|
|
'custom-buffer-create-other-window
|
|
|
|
|
'custom-buffer-create)))
|
|
|
|
|
(if (listp face)
|
|
|
|
|
(funcall display-fun
|
|
|
|
|
(custom-sort-items
|
|
|
|
|
(mapcar (lambda (s) (list s 'custom-face)) face)
|
|
|
|
|
t nil)
|
|
|
|
|
"*Customize Faces*")
|
|
|
|
|
;; If FACE is actually an alias, customize the face it is aliased to.
|
|
|
|
|
(if (get face 'face-alias)
|
|
|
|
|
(setq face (get face 'face-alias)))
|
|
|
|
|
(unless (facep face)
|
|
|
|
|
(error "Invalid face %S" face))
|
|
|
|
|
(funcall display-fun
|
|
|
|
|
(list (list face 'custom-face))
|
|
|
|
|
(format "*Customize Face: %s*"
|
|
|
|
|
(custom-unlispify-tag-name face))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;;###autoload
|
2002-04-27 03:14:21 +00:00
|
|
|
|
(defun customize-face-other-window (&optional face)
|
2004-05-28 18:59:01 +00:00
|
|
|
|
"Show customization buffer for face FACE in other window.
|
2005-06-22 14:22:02 +00:00
|
|
|
|
If FACE is actually a face-alias, customize the face it is aliased to.
|
2002-04-25 14:21:47 +00:00
|
|
|
|
|
|
|
|
|
Interactively, when point is on text which has a face specified,
|
2004-05-28 18:59:01 +00:00
|
|
|
|
suggest to customize that face, if it's customizable."
|
2007-07-28 20:03:40 +00:00
|
|
|
|
(interactive (list (read-face-name "Customize face" "all faces" t)))
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(customize-face face t))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
2007-01-02 20:55:54 +00:00
|
|
|
|
(defalias 'customize-customized 'customize-unsaved)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
2007-01-02 20:55:54 +00:00
|
|
|
|
(defun customize-unsaved ()
|
|
|
|
|
"Customize all user options set in this session but not saved."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(interactive)
|
|
|
|
|
(let ((found nil))
|
|
|
|
|
(mapatoms (lambda (symbol)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(and (or (get symbol 'customized-face)
|
|
|
|
|
(get symbol 'customized-face-comment))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-facep symbol)
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(push (list symbol 'custom-face) found))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(and (or (get symbol 'customized-value)
|
|
|
|
|
(get symbol 'customized-variable-comment))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(boundp symbol)
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(push (list symbol 'custom-variable) found))))
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(if (not found)
|
2007-01-02 20:55:54 +00:00
|
|
|
|
(error "No user options are set but unsaved")
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(custom-buffer-create (custom-sort-items found t nil)
|
2007-01-02 20:55:54 +00:00
|
|
|
|
"*Customize Unsaved*"))))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
2003-03-10 14:06:57 +00:00
|
|
|
|
(defun customize-rogue ()
|
2006-01-17 04:28:42 +00:00
|
|
|
|
"Customize all user variables modified outside customize."
|
2003-03-10 14:06:57 +00:00
|
|
|
|
(interactive)
|
|
|
|
|
(let ((found nil))
|
|
|
|
|
(mapatoms (lambda (symbol)
|
|
|
|
|
(let ((cval (or (get symbol 'customized-value)
|
|
|
|
|
(get symbol 'saved-value)
|
|
|
|
|
(get symbol 'standard-value))))
|
|
|
|
|
(when (and cval ;Declared with defcustom.
|
|
|
|
|
(default-boundp symbol) ;Has a value.
|
2004-05-28 18:59:01 +00:00
|
|
|
|
(not (equal (eval (car cval))
|
2003-03-10 14:06:57 +00:00
|
|
|
|
;; Which does not match customize.
|
|
|
|
|
(default-value symbol))))
|
|
|
|
|
(push (list symbol 'custom-variable) found)))))
|
|
|
|
|
(if (not found)
|
|
|
|
|
(error "No rogue user options")
|
|
|
|
|
(custom-buffer-create (custom-sort-items found t nil)
|
|
|
|
|
"*Customize Rogue*"))))
|
|
|
|
|
;;;###autoload
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(defun customize-saved ()
|
|
|
|
|
"Customize all already saved user options."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(interactive)
|
|
|
|
|
(let ((found nil))
|
|
|
|
|
(mapatoms (lambda (symbol)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(and (or (get symbol 'saved-face)
|
|
|
|
|
(get symbol 'saved-face-comment))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-facep symbol)
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(push (list symbol 'custom-face) found))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(and (or (get symbol 'saved-value)
|
|
|
|
|
(get symbol 'saved-variable-comment))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(boundp symbol)
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(push (list symbol 'custom-variable) found))))
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(if (not found )
|
|
|
|
|
(error "No saved user options")
|
|
|
|
|
(custom-buffer-create (custom-sort-items found t nil)
|
|
|
|
|
"*Customize Saved*"))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(declare-function apropos-parse-pattern "apropos" (pattern))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(defun customize-apropos (pattern &optional type)
|
|
|
|
|
"Customize all loaded options, faces and groups matching PATTERN.
|
|
|
|
|
PATTERN can be a word, a list of words (separated by spaces),
|
|
|
|
|
or a regexp (using some regexp special characters). If it is a word,
|
|
|
|
|
search for matches for that word as a substring. If it is a list of words,
|
|
|
|
|
search for matches for any two (or more) of those words.
|
|
|
|
|
|
|
|
|
|
If TYPE is `options', include only options.
|
|
|
|
|
If TYPE is `faces', include only faces.
|
|
|
|
|
If TYPE is `groups', include only groups.
|
|
|
|
|
If TYPE is t (interactively, with prefix arg), include variables
|
2005-12-19 23:17:19 +00:00
|
|
|
|
that are not customizable options, as well as faces and groups
|
|
|
|
|
\(but we recommend using `apropos-variable' instead)."
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(interactive (list (apropos-read-pattern "symbol") current-prefix-arg))
|
|
|
|
|
(require 'apropos)
|
|
|
|
|
(apropos-parse-pattern pattern)
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(let (found)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(mapatoms
|
|
|
|
|
`(lambda (symbol)
|
|
|
|
|
(when (string-match apropos-regexp (symbol-name symbol))
|
|
|
|
|
,(if (not (memq type '(faces options)))
|
|
|
|
|
'(if (get symbol 'custom-group)
|
|
|
|
|
(push (list symbol 'custom-group) found)))
|
|
|
|
|
,(if (not (memq type '(options groups)))
|
|
|
|
|
'(if (custom-facep symbol)
|
|
|
|
|
(push (list symbol 'custom-face) found)))
|
|
|
|
|
,(if (not (memq type '(groups faces)))
|
|
|
|
|
`(if (and (boundp symbol)
|
|
|
|
|
(eq (indirect-variable symbol) symbol)
|
|
|
|
|
(or (get symbol 'saved-value)
|
|
|
|
|
(custom-variable-p symbol)
|
|
|
|
|
,(if (not (memq type '(nil options)))
|
|
|
|
|
'(get symbol 'variable-documentation))))
|
|
|
|
|
(push (list symbol 'custom-variable) found))))))
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(if (not found)
|
2007-08-03 03:21:49 +00:00
|
|
|
|
(error "No %s matching %s"
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(if (eq type t)
|
|
|
|
|
"items"
|
|
|
|
|
(format "customizable %s"
|
|
|
|
|
(if (memq type '(options faces groups))
|
|
|
|
|
(symbol-name type)
|
|
|
|
|
"items")))
|
|
|
|
|
pattern)
|
2006-06-23 13:17:44 +00:00
|
|
|
|
(custom-buffer-create
|
|
|
|
|
(custom-sort-items found t custom-buffer-order-groups)
|
|
|
|
|
"*Customize Apropos*"))))
|
1997-06-19 11:30:04 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-apropos-options (regexp &optional arg)
|
2005-12-13 03:46:02 +00:00
|
|
|
|
"Customize all loaded customizable options matching REGEXP.
|
Fix typos in docstrings.
* cus-edit.el (customize-apropos-options, custom-comment)
(custom-comment-tag, custom-face-edit-attribute-tag):
Fix typos in docstrings.
(custom-buffer-done-kill): Remove * from defcustom docstring.
(custom-file): Fix typo in doc of defcustom choice.
* frame.el (display-visual-class): Fix typo in docstring.
(initial-frame-alist, minibuffer-frame-alist, pop-up-frame-alist)
(special-display-frame-alist, show-trailing-whitespace)
(auto-hscroll-mode, blink-cursor-delay, blink-cursor-interval)
(display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
Remove * from defcustom docstrings.
* md4.el (md4-buffer): Fix typo in docstring.
(md4, md4-64): Doc fixes.
(md4-pack-int32): Reflow docstring.
* paths.el (rmail-file-name): Remove * from defcustom docstring.
(prune-directory-list, gnus-nntp-service): Fix typos in docstrings.
* rect.el (open-rectangle): Reflow docstring.
(spaces-string): Fix docstring typo. Use "?\s" instead of "? ".
* select.el (x-get-cut-buffer): Fix typo in docstring.
* timezone.el (timezone-zone-to-minute, timezone-time-from-absolute)
(timezone-time-zone-from-absolute, timezone-leap-year-p):
Fix typos in docstrings.
* emacs-lisp/assoc.el (asort, aelement, aput, aget, amake):
Fix typos in docstrings.
2008-11-01 01:24:33 +00:00
|
|
|
|
With prefix ARG, include variables that are not customizable options
|
2007-12-29 19:26:14 +00:00
|
|
|
|
\(but it is better to use `apropos-variable' if you want to find those)."
|
2007-08-02 17:53:19 +00:00
|
|
|
|
(interactive "sCustomize options (regexp): \nP")
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(customize-apropos regexp (or arg 'options)))
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-apropos-faces (regexp)
|
2005-12-13 03:46:02 +00:00
|
|
|
|
"Customize all loaded faces matching REGEXP."
|
2007-08-02 17:53:19 +00:00
|
|
|
|
(interactive "sCustomize faces (regexp): \n")
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(customize-apropos regexp 'faces))
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-apropos-groups (regexp)
|
2005-12-13 03:46:02 +00:00
|
|
|
|
"Customize all loaded groups matching REGEXP."
|
2007-08-02 17:53:19 +00:00
|
|
|
|
(interactive "sCustomize groups (regexp): \n")
|
1997-06-19 11:30:04 +00:00
|
|
|
|
(customize-apropos regexp 'groups))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-24 16:53:55 +00:00
|
|
|
|
;;; Buffer.
|
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(defcustom custom-buffer-style 'links
|
|
|
|
|
"Control the presentation style for customization buffers.
|
|
|
|
|
The value should be a symbol, one of:
|
|
|
|
|
|
|
|
|
|
brackets: groups nest within each other with big horizontal brackets.
|
|
|
|
|
links: groups have links to subgroups."
|
|
|
|
|
:type '(radio (const brackets)
|
|
|
|
|
(const links))
|
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
2005-01-30 11:07:54 +00:00
|
|
|
|
(defcustom custom-buffer-done-kill nil
|
Fix typos in docstrings.
* cus-edit.el (customize-apropos-options, custom-comment)
(custom-comment-tag, custom-face-edit-attribute-tag):
Fix typos in docstrings.
(custom-buffer-done-kill): Remove * from defcustom docstring.
(custom-file): Fix typo in doc of defcustom choice.
* frame.el (display-visual-class): Fix typo in docstring.
(initial-frame-alist, minibuffer-frame-alist, pop-up-frame-alist)
(special-display-frame-alist, show-trailing-whitespace)
(auto-hscroll-mode, blink-cursor-delay, blink-cursor-interval)
(display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
Remove * from defcustom docstrings.
* md4.el (md4-buffer): Fix typo in docstring.
(md4, md4-64): Doc fixes.
(md4-pack-int32): Reflow docstring.
* paths.el (rmail-file-name): Remove * from defcustom docstring.
(prune-directory-list, gnus-nntp-service): Fix typos in docstrings.
* rect.el (open-rectangle): Reflow docstring.
(spaces-string): Fix docstring typo. Use "?\s" instead of "? ".
* select.el (x-get-cut-buffer): Fix typo in docstring.
* timezone.el (timezone-zone-to-minute, timezone-time-from-absolute)
(timezone-time-zone-from-absolute, timezone-leap-year-p):
Fix typos in docstrings.
* emacs-lisp/assoc.el (asort, aelement, aput, aget, amake):
Fix typos in docstrings.
2008-11-01 01:24:33 +00:00
|
|
|
|
"Non-nil means exiting a Custom buffer should kill it."
|
2005-01-30 11:07:54 +00:00
|
|
|
|
:type 'boolean
|
2005-02-09 15:50:47 +00:00
|
|
|
|
:version "22.1"
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(defcustom custom-buffer-indent 3
|
|
|
|
|
"Number of spaces to indent nested groups."
|
|
|
|
|
:type 'integer
|
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
2003-05-31 15:23:00 +00:00
|
|
|
|
(defun custom-get-fresh-buffer (name)
|
|
|
|
|
"Get a fresh new buffer with name NAME.
|
2003-06-01 18:40:10 +00:00
|
|
|
|
If the buffer already exist, clean it up to be like new.
|
|
|
|
|
Beware: it's not quite like new. Good enough for custom, but maybe
|
|
|
|
|
not for everybody."
|
|
|
|
|
;; To be more complete, we should also kill all permanent-local variables,
|
|
|
|
|
;; but it's not needed for custom.
|
2003-05-31 15:23:00 +00:00
|
|
|
|
(let ((buf (get-buffer name)))
|
2003-06-03 11:24:42 +00:00
|
|
|
|
(when (and buf (buffer-local-value 'buffer-file-name buf))
|
2003-06-01 18:40:10 +00:00
|
|
|
|
;; This will check if the file is not saved.
|
|
|
|
|
(kill-buffer buf)
|
|
|
|
|
(setq buf nil))
|
2003-05-31 15:23:00 +00:00
|
|
|
|
(if (null buf)
|
|
|
|
|
(get-buffer-create name)
|
|
|
|
|
(with-current-buffer buf
|
|
|
|
|
(kill-all-local-variables)
|
2003-06-01 18:40:10 +00:00
|
|
|
|
(run-hooks 'kill-buffer-hook)
|
2003-06-14 19:04:20 +00:00
|
|
|
|
;; Delete overlays before erasing the buffer so the overlay hooks
|
|
|
|
|
;; don't get run spuriously when we erase the buffer.
|
2003-05-31 15:23:00 +00:00
|
|
|
|
(let ((ols (overlay-lists)))
|
|
|
|
|
(dolist (ol (nconc (car ols) (cdr ols)))
|
|
|
|
|
(delete-overlay ol)))
|
2003-06-14 19:04:20 +00:00
|
|
|
|
(erase-buffer)
|
2003-05-31 15:23:00 +00:00
|
|
|
|
buf))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;;###autoload
|
1997-07-03 07:09:29 +00:00
|
|
|
|
(defun custom-buffer-create (options &optional name description)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Create a buffer containing OPTIONS.
|
1997-05-14 17:22:46 +00:00
|
|
|
|
Optional NAME is the name of the buffer.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
|
|
|
|
|
SYMBOL is a customization option, and WIDGET is a widget for editing
|
|
|
|
|
that option."
|
2011-09-22 16:15:52 +00:00
|
|
|
|
(pop-to-buffer-same-window (custom-get-fresh-buffer (or name "*Customization*")))
|
1997-07-03 07:09:29 +00:00
|
|
|
|
(custom-buffer-create-internal options description))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
1997-04-24 16:53:55 +00:00
|
|
|
|
;;;###autoload
|
1997-07-03 07:09:29 +00:00
|
|
|
|
(defun custom-buffer-create-other-window (options &optional name description)
|
2004-11-02 14:17:44 +00:00
|
|
|
|
"Create a buffer containing OPTIONS, and display it in another window.
|
|
|
|
|
The result includes selecting that window.
|
1997-05-14 17:22:46 +00:00
|
|
|
|
Optional NAME is the name of the buffer.
|
1997-04-12 17:51:31 +00:00
|
|
|
|
OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
|
|
|
|
|
SYMBOL is a customization option, and WIDGET is a widget for editing
|
|
|
|
|
that option."
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(unless name (setq name "*Customization*"))
|
Change modes that used same-window-* vars to use switch-to-buffer.
* cmuscheme.el (run-scheme, switch-to-scheme):
* ielm.el (ielm):
* shell.el (shell):
* net/rlogin.el (rlogin):
* net/telnet.el (telnet, rsh):
* progmodes/inf-lisp.el (inferior-lisp): Use switch-to-buffer.
* cus-edit.el (customize-group, custom-buffer-create)
(customize-browse, custom-buffer-create-other-window): Use
switch-to-buffer or switch-to-buffer-other-window.
* info.el (info, Info-find-node, Info-revert-find-node, Info-next)
(Info-prev, Info-up, Info-speedbar-goto-node)
(info-display-manual): Use switch-to-buffer.
(Info-speedbar-goto-node): Use switch-to-buffer-other-frame.
* lisp/gnus/message.el (message-pop-to-buffer): Default to switch-to-buffer.
(message-mail-other-window, message-mail-other-frame)
(message-news-other-window, message-news-other-frame): Use
switch-to-buffer-other-frame and switch-to-buffer-other-window instead
of setting buffer display varibles.
* mail/sendmail.el (mail): Use switch-to-buffer.
(mail-recover): Use switch-to-buffer-other-window.
* progmodes/gdb-mi.el (gdb-restore-windows, gdb-setup-windows):
Use switch-to-buffer.
2011-09-11 18:30:07 +00:00
|
|
|
|
(switch-to-buffer-other-window (custom-get-fresh-buffer name))
|
2011-09-10 20:14:02 +00:00
|
|
|
|
(custom-buffer-create-internal options description))
|
1997-06-01 11:58:17 +00:00
|
|
|
|
|
|
|
|
|
(defcustom custom-reset-button-menu nil
|
|
|
|
|
"If non-nil, only show a single reset button in customize buffers.
|
|
|
|
|
This button will have a menu with all three reset operations."
|
|
|
|
|
:type 'boolean
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
2002-05-03 22:50:08 +00:00
|
|
|
|
(defcustom custom-buffer-verbose-help t
|
|
|
|
|
"If non-nil, include explanatory text in the customization buffer."
|
|
|
|
|
:type 'boolean
|
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-buffer-done (&rest _ignore)
|
2005-01-30 11:07:54 +00:00
|
|
|
|
"Exit current Custom buffer according to `custom-buffer-done-kill'."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(interactive)
|
2005-01-30 11:07:54 +00:00
|
|
|
|
(quit-window custom-buffer-done-kill))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
2005-10-23 17:40:38 +00:00
|
|
|
|
(defvar custom-button nil
|
|
|
|
|
"Face used for buttons in customization buffers.")
|
|
|
|
|
|
2005-12-31 16:26:01 +00:00
|
|
|
|
(defvar custom-button-mouse nil
|
|
|
|
|
"Mouse face used for buttons in customization buffers.")
|
|
|
|
|
|
2005-10-23 17:40:38 +00:00
|
|
|
|
(defvar custom-button-pressed nil
|
|
|
|
|
"Face used for pressed buttons in customization buffers.")
|
|
|
|
|
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(defcustom custom-search-field t
|
|
|
|
|
"If non-nil, show a search field in Custom buffers."
|
|
|
|
|
:type 'boolean
|
|
|
|
|
:version "24.1"
|
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defcustom custom-raised-buttons (not (equal (face-valid-attribute-values :box)
|
|
|
|
|
'(("unspecified" . unspecified))))
|
|
|
|
|
"If non-nil, indicate active buttons in a `raised-button' style.
|
|
|
|
|
Otherwise use brackets."
|
|
|
|
|
:type 'boolean
|
|
|
|
|
:version "21.1"
|
2005-10-23 17:40:38 +00:00
|
|
|
|
:group 'custom-buffer
|
|
|
|
|
:set (lambda (variable value)
|
|
|
|
|
(custom-set-default variable value)
|
|
|
|
|
(setq custom-button
|
|
|
|
|
(if value 'custom-button 'custom-button-unraised))
|
2005-12-31 16:26:01 +00:00
|
|
|
|
(setq custom-button-mouse
|
|
|
|
|
(if value 'custom-button-mouse 'highlight))
|
2005-10-23 17:40:38 +00:00
|
|
|
|
(setq custom-button-pressed
|
|
|
|
|
(if value
|
|
|
|
|
'custom-button-pressed
|
|
|
|
|
'custom-button-pressed-unraised))))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-buffer-create-internal (options &optional _description)
|
2008-02-28 20:45:37 +00:00
|
|
|
|
(Custom-mode)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(let ((init-file (or custom-file user-init-file)))
|
|
|
|
|
;; Insert verbose help at the top of the custom buffer.
|
|
|
|
|
(when custom-buffer-verbose-help
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(widget-insert (if init-file
|
|
|
|
|
"To apply changes, use the Save or Set buttons."
|
|
|
|
|
"Custom settings cannot be saved; maybe you started Emacs with `-q'.")
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"\nFor details, see ")
|
|
|
|
|
(widget-create 'custom-manual
|
|
|
|
|
:tag "Saving Customizations"
|
|
|
|
|
"(emacs)Saving Customizations")
|
|
|
|
|
(widget-insert " in the ")
|
|
|
|
|
(widget-create 'custom-manual
|
|
|
|
|
:tag "Emacs manual"
|
|
|
|
|
:help-echo "Read the Emacs manual."
|
|
|
|
|
"(emacs)Top")
|
|
|
|
|
(widget-insert "."))
|
|
|
|
|
(widget-insert "\n")
|
2010-03-12 22:56:30 +00:00
|
|
|
|
|
|
|
|
|
;; Insert the search field.
|
|
|
|
|
(when custom-search-field
|
|
|
|
|
(widget-insert "\n")
|
|
|
|
|
(let* ((echo "Search for custom items")
|
|
|
|
|
(search-widget
|
|
|
|
|
(widget-create
|
|
|
|
|
'editable-field
|
|
|
|
|
:size 40 :help-echo echo
|
|
|
|
|
:action `(lambda (widget &optional event)
|
2011-03-04 02:24:47 +00:00
|
|
|
|
(customize-apropos (split-string (widget-value widget)))))))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(widget-insert " ")
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
search-widget 'push-button
|
2010-10-09 03:23:38 +00:00
|
|
|
|
:tag " Search "
|
2010-03-12 22:56:30 +00:00
|
|
|
|
:help-echo echo :action
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(lambda (widget &optional _event)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(customize-apropos (widget-value (widget-get widget :parent)))))
|
|
|
|
|
(widget-insert "\n")))
|
|
|
|
|
|
2008-11-16 23:27:52 +00:00
|
|
|
|
;; The custom command buttons are also in the toolbar, so for a
|
|
|
|
|
;; time they were not inserted in the buffer if the toolbar was in use.
|
|
|
|
|
;; But it can be a little confusing for the buffer layout to
|
|
|
|
|
;; change according to whether or nor the toolbar is on, not to
|
|
|
|
|
;; mention that a custom buffer can in theory be created in a
|
|
|
|
|
;; frame with a toolbar, then later viewed in one without.
|
|
|
|
|
;; So now the buttons are always inserted in the buffer. (Bug#1326)
|
|
|
|
|
(if custom-buffer-verbose-help
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(widget-insert "
|
|
|
|
|
Operate on all settings in this buffer:\n"))
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(let ((button (lambda (tag action active help _icon _label)
|
2008-11-16 23:27:52 +00:00
|
|
|
|
(widget-insert " ")
|
|
|
|
|
(if (eval active)
|
|
|
|
|
(widget-create 'push-button :tag tag
|
|
|
|
|
:help-echo help :action action))))
|
|
|
|
|
(commands custom-commands))
|
|
|
|
|
(apply button (pop commands)) ; Set for current session
|
|
|
|
|
(apply button (pop commands)) ; Save for future sessions
|
|
|
|
|
(if custom-reset-button-menu
|
|
|
|
|
(progn
|
|
|
|
|
(widget-insert " ")
|
|
|
|
|
(widget-create 'push-button
|
|
|
|
|
:tag "Reset buffer"
|
|
|
|
|
:help-echo "Show a menu with reset operations."
|
|
|
|
|
:mouse-down-action 'ignore
|
|
|
|
|
:action 'custom-reset))
|
|
|
|
|
(widget-insert "\n")
|
|
|
|
|
(apply button (pop commands)) ; Undo edits
|
|
|
|
|
(apply button (pop commands)) ; Reset to saved
|
|
|
|
|
(apply button (pop commands)) ; Erase customization
|
|
|
|
|
(widget-insert " ")
|
|
|
|
|
(pop commands) ; Help (omitted)
|
|
|
|
|
(apply button (pop commands)))) ; Exit
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(widget-insert "\n\n"))
|
|
|
|
|
|
|
|
|
|
;; Now populate the custom buffer.
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(message "Creating customization items...")
|
2000-04-24 20:11:27 +00:00
|
|
|
|
(buffer-disable-undo)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(setq custom-options
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(if (= (length options) 1)
|
|
|
|
|
(mapcar (lambda (entry)
|
|
|
|
|
(widget-create (nth 1 entry)
|
1997-06-04 11:43:32 +00:00
|
|
|
|
:documentation-shown t
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-state 'unknown
|
|
|
|
|
:tag (custom-unlispify-tag-name
|
|
|
|
|
(nth 0 entry))
|
|
|
|
|
:value (nth 0 entry)))
|
|
|
|
|
options)
|
|
|
|
|
(let ((count 0)
|
|
|
|
|
(length (length options)))
|
|
|
|
|
(mapcar (lambda (entry)
|
2000-11-22 17:52:24 +00:00
|
|
|
|
(prog2
|
|
|
|
|
(message "Creating customization items ...%2d%%"
|
|
|
|
|
(/ (* 100.0 count) length))
|
|
|
|
|
(widget-create (nth 1 entry)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:tag (custom-unlispify-tag-name
|
|
|
|
|
(nth 0 entry))
|
|
|
|
|
:value (nth 0 entry))
|
2000-11-22 17:52:24 +00:00
|
|
|
|
(setq count (1+ count))
|
|
|
|
|
(unless (eq (preceding-char) ?\n)
|
|
|
|
|
(widget-insert "\n"))
|
|
|
|
|
(widget-insert "\n")))
|
|
|
|
|
options))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(unless (eq (preceding-char) ?\n)
|
|
|
|
|
(widget-insert "\n"))
|
2001-09-06 08:25:31 +00:00
|
|
|
|
(message "Creating customization items ...done")
|
2005-02-27 10:34:05 +00:00
|
|
|
|
(message "Resetting customization items...")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(unless (eq custom-buffer-style 'tree)
|
2000-04-24 20:11:27 +00:00
|
|
|
|
(mapc 'custom-magic-reset custom-options))
|
2005-02-27 10:34:05 +00:00
|
|
|
|
(message "Resetting customization items...done")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(message "Creating customization setup...")
|
|
|
|
|
(widget-setup)
|
2000-04-24 20:11:27 +00:00
|
|
|
|
(buffer-enable-undo)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(goto-char (point-min))
|
2005-02-27 10:34:05 +00:00
|
|
|
|
(message "Creating customization setup...done"))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;;; The Tree Browser.
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(defun customize-browse (&optional group)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Create a tree browser for the customize hierarchy."
|
1997-07-15 19:21:04 +00:00
|
|
|
|
(interactive)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(unless group
|
|
|
|
|
(setq group 'emacs))
|
|
|
|
|
(let ((name "*Customize Browser*"))
|
2011-09-22 16:15:52 +00:00
|
|
|
|
(pop-to-buffer-same-window (custom-get-fresh-buffer name)))
|
2008-02-28 20:45:37 +00:00
|
|
|
|
(Custom-mode)
|
2005-12-23 01:21:16 +00:00
|
|
|
|
(widget-insert (format "\
|
|
|
|
|
%s buttons; type RET or click mouse-1
|
|
|
|
|
on a button to invoke its action.
|
|
|
|
|
Invoke [+] to expand a group, and [-] to collapse an expanded group.\n"
|
|
|
|
|
(if custom-raised-buttons
|
|
|
|
|
"`Raised' text indicates"
|
|
|
|
|
"Square brackets indicate")))
|
|
|
|
|
|
|
|
|
|
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(if custom-browse-only-groups
|
|
|
|
|
(widget-insert "\
|
1997-07-02 15:35:18 +00:00
|
|
|
|
Invoke the [Group] button below to edit that item in another window.\n\n")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(widget-insert "Invoke the ")
|
|
|
|
|
(widget-create 'item
|
1997-07-28 15:46:57 +00:00
|
|
|
|
:format "%t"
|
|
|
|
|
:tag "[Group]"
|
|
|
|
|
:tag-glyph "folder")
|
|
|
|
|
(widget-insert ", ")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(widget-create 'item
|
1997-07-28 15:46:57 +00:00
|
|
|
|
:format "%t"
|
|
|
|
|
:tag "[Face]"
|
|
|
|
|
:tag-glyph "face")
|
|
|
|
|
(widget-insert ", and ")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(widget-create 'item
|
1997-07-28 15:46:57 +00:00
|
|
|
|
:format "%t"
|
|
|
|
|
:tag "[Option]"
|
|
|
|
|
:tag-glyph "option")
|
|
|
|
|
(widget-insert " buttons below to edit that
|
1997-07-02 15:35:18 +00:00
|
|
|
|
item in another window.\n\n"))
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(let ((custom-buffer-style 'tree))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(widget-create 'custom-group
|
1997-07-28 15:46:57 +00:00
|
|
|
|
:custom-last t
|
|
|
|
|
:custom-state 'unknown
|
|
|
|
|
:tag (custom-unlispify-tag-name group)
|
|
|
|
|
:value group))
|
2002-12-29 19:15:58 +00:00
|
|
|
|
(widget-setup)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(goto-char (point-min)))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(define-widget 'custom-browse-visibility 'item
|
1998-01-07 10:45:56 +00:00
|
|
|
|
"Control visibility of items in the customize tree browser."
|
1997-06-25 15:30:27 +00:00
|
|
|
|
:format "%[[%t]%]"
|
1997-07-02 15:35:18 +00:00
|
|
|
|
:action 'custom-browse-visibility-action)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-browse-visibility-action (widget &rest _ignore)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(let ((custom-buffer-style 'tree))
|
|
|
|
|
(custom-toggle-parent widget)))
|
|
|
|
|
|
2006-01-23 01:21:24 +00:00
|
|
|
|
(define-widget 'custom-browse-group-tag 'custom-group-link
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Show parent in other window when activated."
|
1997-06-21 20:07:48 +00:00
|
|
|
|
:tag "Group"
|
1997-06-25 15:30:27 +00:00
|
|
|
|
:tag-glyph "folder"
|
1997-07-02 15:35:18 +00:00
|
|
|
|
:action 'custom-browse-group-tag-action)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-browse-group-tag-action (widget &rest _ignore)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(let ((parent (widget-get widget :parent)))
|
|
|
|
|
(customize-group-other-window (widget-value parent))))
|
|
|
|
|
|
2006-01-23 01:21:24 +00:00
|
|
|
|
(define-widget 'custom-browse-variable-tag 'custom-group-link
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Show parent in other window when activated."
|
1997-06-21 20:07:48 +00:00
|
|
|
|
:tag "Option"
|
1997-06-25 15:30:27 +00:00
|
|
|
|
:tag-glyph "option"
|
1997-07-02 15:35:18 +00:00
|
|
|
|
:action 'custom-browse-variable-tag-action)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-browse-variable-tag-action (widget &rest _ignore)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(let ((parent (widget-get widget :parent)))
|
|
|
|
|
(customize-variable-other-window (widget-value parent))))
|
|
|
|
|
|
2006-01-23 01:21:24 +00:00
|
|
|
|
(define-widget 'custom-browse-face-tag 'custom-group-link
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Show parent in other window when activated."
|
1997-06-21 20:07:48 +00:00
|
|
|
|
:tag "Face"
|
1997-06-25 15:30:27 +00:00
|
|
|
|
:tag-glyph "face"
|
1997-07-02 15:35:18 +00:00
|
|
|
|
:action 'custom-browse-face-tag-action)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-browse-face-tag-action (widget &rest _ignore)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(let ((parent (widget-get widget :parent)))
|
|
|
|
|
(customize-face-other-window (widget-value parent))))
|
|
|
|
|
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(defconst custom-browse-alist '((" " "space")
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(" | " "vertical")
|
|
|
|
|
("-\\ " "top")
|
|
|
|
|
(" |-" "middle")
|
|
|
|
|
(" `-" "bottom")))
|
|
|
|
|
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(defun custom-browse-insert-prefix (prefix)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
"Insert PREFIX. On XEmacs convert it to line graphics."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;; Fixme: do graphics.
|
2007-10-28 17:39:49 +00:00
|
|
|
|
(if nil ; (featurep 'xemacs)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(progn
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(insert "*")
|
|
|
|
|
(while (not (string-equal prefix ""))
|
|
|
|
|
(let ((entry (substring prefix 0 3)))
|
|
|
|
|
(setq prefix (substring prefix 3))
|
|
|
|
|
(let ((overlay (make-overlay (1- (point)) (point) nil t nil))
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(name (nth 1 (assoc entry custom-browse-alist))))
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(overlay-put overlay 'end-glyph (widget-glyph-find name entry))
|
|
|
|
|
(overlay-put overlay 'start-open t)
|
|
|
|
|
(overlay-put overlay 'end-open t)))))
|
|
|
|
|
(insert prefix)))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; Modification of Basic Widgets.
|
|
|
|
|
;;
|
|
|
|
|
;; We add extra properties to the basic widgets needed here. This is
|
2008-04-29 03:42:15 +00:00
|
|
|
|
;; fine, as long as we are careful to stay within our own namespace.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;
|
|
|
|
|
;; We want simple widgets to be displayed by default, but complex
|
|
|
|
|
;; widgets to be hidden.
|
|
|
|
|
|
2011-07-07 15:59:00 +00:00
|
|
|
|
;; This widget type is obsolete as of Emacs 24.1.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put (get 'item 'widget-type) :custom-show t)
|
|
|
|
|
(widget-put (get 'editable-field 'widget-type)
|
2011-04-19 13:44:55 +00:00
|
|
|
|
:custom-show (lambda (_widget value)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let ((pp (pp-to-string value)))
|
|
|
|
|
(cond ((string-match "\n" pp)
|
|
|
|
|
nil)
|
|
|
|
|
((> (length pp) 40)
|
|
|
|
|
nil)
|
|
|
|
|
(t t)))))
|
|
|
|
|
(widget-put (get 'menu-choice 'widget-type) :custom-show t)
|
|
|
|
|
|
|
|
|
|
;;; The `custom-manual' Widget.
|
|
|
|
|
|
|
|
|
|
(define-widget 'custom-manual 'info-link
|
|
|
|
|
"Link to the manual entry for this customization option."
|
|
|
|
|
:help-echo "Read the manual entry for this option."
|
2006-11-06 22:05:23 +00:00
|
|
|
|
:keymap custom-mode-link-map
|
|
|
|
|
:follow-link 'mouse-face
|
2006-01-04 15:56:08 +00:00
|
|
|
|
:button-face 'custom-link
|
|
|
|
|
:mouse-face 'highlight
|
2006-02-14 20:16:04 +00:00
|
|
|
|
:pressed-face 'highlight
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:tag "Manual")
|
|
|
|
|
|
|
|
|
|
;;; The `custom-magic' Widget.
|
|
|
|
|
|
1997-06-14 10:21:01 +00:00
|
|
|
|
(defgroup custom-magic-faces nil
|
|
|
|
|
"Faces used by the magic button."
|
|
|
|
|
:group 'custom-faces
|
|
|
|
|
:group 'custom-buffer)
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-invalid '((((class color))
|
|
|
|
|
(:foreground "yellow1" :background "red1"))
|
|
|
|
|
(t
|
|
|
|
|
(:weight bold :slant italic :underline t)))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
"Face used when the customize item is invalid."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-invalid-face 'custom-invalid "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-rogue '((((class color))
|
|
|
|
|
(:foreground "pink" :background "black"))
|
|
|
|
|
(t
|
|
|
|
|
(:underline t)))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
"Face used when the customize item is not defined for customization."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-rogue-face 'custom-rogue "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-modified '((((min-colors 88) (class color))
|
|
|
|
|
(:foreground "white" :background "blue1"))
|
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
high number of colors displays.
* textmodes/table.el (table-cell-face): Add special case for
displays supporting a high number of colors.
* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
(vhdl-font-lock-reserved-words-face)
(vhdl-speedbar-architecture-face)
(vhdl-speedbar-instantiation-face)
(vhdl-speedbar-architecture-selected-face)
(vhdl-speedbar-instantiation-selected-face): Likewise.
* progmodes/sh-script.el (sh-heredoc-face): Likewise.
* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
* progmodes/ebrowse.el (ebrowse-tree-mark-face)
(ebrowse-root-class-face, ebrowse-member-attribute-face)
(ebrowse-progress-face): Likewise.
* progmodes/compile.el (compilation-info-face): Likewise.
* progmodes/cc-fonts.el (c-invalid-face): Likewise.
* emacs-lisp/re-builder.el (reb-match-3): Likewise.
* calendar/calendar.el (diary-face): Likewise.
* woman.el (woman-italic-face, woman-bold-face)
(woman-unknown-face): Likewise.
* wid-edit.el (widget-button-pressed-face): Likewise.
* whitespace.el (whitespace-highlight-face): Likewise.
* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
* pcvs-info.el (cvs-marked-face): Likewise.
* info.el (info-xref): Likewise.
* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
* hilit-chg.el (highlight-changes-face)
(highlight-changes-delete-face): Likewise.
* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
(hi-red-b): Likewise.
* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
* font-lock.el (font-lock-keyword-face)
(font-lock-function-name-face, font-lock-warning-face): Likewise.
* cus-edit.el (custom-invalid-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-variable-tag-face)
(custom-group-tag-face-1, custom-group-tag-face): Likewise.
* comint.el (comint-highlight-prompt): Likewise.
2005-04-08 14:26:13 +00:00
|
|
|
|
(((class color))
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(:foreground "white" :background "blue"))
|
2004-12-13 19:39:01 +00:00
|
|
|
|
(t
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(:slant italic :bold)))
|
|
|
|
|
"Face used when the customize item has been modified."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-modified-face 'custom-modified "22.1")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
|
|
|
|
|
(defface custom-set '((((min-colors 88) (class color))
|
|
|
|
|
(:foreground "blue1" :background "white"))
|
|
|
|
|
(((class color))
|
|
|
|
|
(:foreground "blue" :background "white"))
|
|
|
|
|
(t
|
|
|
|
|
(:slant italic)))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
"Face used when the customize item has been set."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-set-face 'custom-set "22.1")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
|
|
|
|
|
(defface custom-changed '((((min-colors 88) (class color))
|
|
|
|
|
(:foreground "white" :background "blue1"))
|
|
|
|
|
(((class color))
|
|
|
|
|
(:foreground "white" :background "blue"))
|
|
|
|
|
(t
|
|
|
|
|
(:slant italic)))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
"Face used when the customize item has been changed."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-changed-face 'custom-changed "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2005-12-24 01:26:54 +00:00
|
|
|
|
(defface custom-themed '((((min-colors 88) (class color))
|
|
|
|
|
(:foreground "white" :background "blue1"))
|
|
|
|
|
(((class color))
|
|
|
|
|
(:foreground "white" :background "blue"))
|
|
|
|
|
(t
|
|
|
|
|
(:slant italic)))
|
|
|
|
|
"Face used when the customize item has been set by a theme."
|
|
|
|
|
:group 'custom-magic-faces)
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-saved '((t (:underline t)))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
"Face used when the customize item has been saved."
|
|
|
|
|
:group 'custom-magic-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-saved-face 'custom-saved "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2004-12-13 19:39:01 +00:00
|
|
|
|
(defconst custom-magic-alist
|
|
|
|
|
'((nil "#" underline "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
UNINITIALIZED, you should not see this.")
|
2004-12-13 19:39:01 +00:00
|
|
|
|
(unknown "?" italic "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
UNKNOWN, you should not see this.")
|
2004-12-13 19:39:01 +00:00
|
|
|
|
(hidden "-" default "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
HIDDEN, invoke \"Show\" in the previous line to show." "\
|
1997-06-21 05:19:46 +00:00
|
|
|
|
group now hidden, invoke \"Show\", above, to show contents.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(invalid "x" custom-invalid "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
INVALID, the displayed value cannot be set.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(modified "*" custom-modified "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
EDITED, shown value does not take effect until you set or save it." "\
|
2005-02-27 10:34:05 +00:00
|
|
|
|
something in this group has been edited but not set.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(set "+" custom-set "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
SET for current session only." "\
|
2005-02-27 10:34:05 +00:00
|
|
|
|
something in this group has been set but not saved.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(changed ":" custom-changed "\
|
2010-10-08 00:05:12 +00:00
|
|
|
|
CHANGED outside Customize." "\
|
1997-05-30 00:39:40 +00:00
|
|
|
|
something in this group has been changed outside customize.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(saved "!" custom-saved "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
SAVED and set." "\
|
1997-05-04 03:47:13 +00:00
|
|
|
|
something in this group has been set and saved.")
|
2005-12-24 01:26:54 +00:00
|
|
|
|
(themed "o" custom-themed "\
|
|
|
|
|
THEMED." "\
|
|
|
|
|
visible group members are all at standard values.")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(rogue "@" custom-rogue "\
|
2005-12-16 03:43:51 +00:00
|
|
|
|
NO CUSTOMIZATION DATA; not intended to be customized." "\
|
1997-05-30 00:39:40 +00:00
|
|
|
|
something in this group is not prepared for customization.")
|
2004-12-13 19:39:01 +00:00
|
|
|
|
(standard " " nil "\
|
2005-02-27 21:32:57 +00:00
|
|
|
|
STANDARD." "\
|
2005-12-23 01:39:01 +00:00
|
|
|
|
visible group members are all at standard values."))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Alist of customize option states.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
STATE is one of the following symbols:
|
|
|
|
|
|
|
|
|
|
`nil'
|
|
|
|
|
For internal use, should never occur.
|
|
|
|
|
`unknown'
|
|
|
|
|
For internal use, should never occur.
|
|
|
|
|
`hidden'
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
This item is not being displayed.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
`invalid'
|
|
|
|
|
This item is modified, but has an invalid form.
|
|
|
|
|
`modified'
|
|
|
|
|
This item is modified, and has a valid form.
|
|
|
|
|
`set'
|
|
|
|
|
This item has been set but not saved.
|
|
|
|
|
`changed'
|
2005-02-27 21:32:57 +00:00
|
|
|
|
The current value of this item has been changed outside Customize.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
`saved'
|
|
|
|
|
This item is marked for saving.
|
|
|
|
|
`rogue'
|
|
|
|
|
This item has no customization information.
|
1997-05-30 00:39:40 +00:00
|
|
|
|
`standard'
|
1997-05-04 03:47:13 +00:00
|
|
|
|
This item is unchanged from the standard setting.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
MAGIC is a string used to present that state.
|
|
|
|
|
|
|
|
|
|
FACE is a face used to present the state.
|
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
ITEM-DESC is a string describing the state for options.
|
|
|
|
|
|
|
|
|
|
GROUP-DESC is a string describing the state for groups. If this is
|
|
|
|
|
left out, ITEM-DESC will be used.
|
|
|
|
|
|
1997-06-01 11:58:17 +00:00
|
|
|
|
The string %c in either description will be replaced with the
|
|
|
|
|
category of the item. These are `group'. `option', and `face'.
|
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
The list should be sorted most significant first.")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defcustom custom-magic-show 'long
|
1997-05-31 06:34:12 +00:00
|
|
|
|
"If non-nil, show textual description of the state.
|
1997-06-24 22:42:54 +00:00
|
|
|
|
If `long', show a full-line description, not just one word."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:type '(choice (const :tag "no" nil)
|
1998-06-24 09:36:08 +00:00
|
|
|
|
(const long)
|
|
|
|
|
(other :tag "short" short))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-06-01 11:58:17 +00:00
|
|
|
|
(defcustom custom-magic-show-hidden '(option face)
|
1997-06-24 22:42:54 +00:00
|
|
|
|
"Control whether the State button is shown for hidden items.
|
|
|
|
|
The value should be a list with the custom categories where the State
|
1997-06-01 11:58:17 +00:00
|
|
|
|
button should be visible. Possible categories are `group', `option',
|
|
|
|
|
and `face'."
|
|
|
|
|
:type '(set (const group) (const option) (const face))
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-05-31 06:34:12 +00:00
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(defcustom custom-magic-show-button nil
|
1997-06-24 22:42:54 +00:00
|
|
|
|
"Show a \"magic\" button indicating the state of each customization option."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:type 'boolean
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(define-widget 'custom-magic 'default
|
|
|
|
|
"Show and manipulate state for a customization option."
|
|
|
|
|
:format "%v"
|
1997-05-14 17:22:46 +00:00
|
|
|
|
:action 'widget-parent-action
|
1997-04-24 16:53:55 +00:00
|
|
|
|
:notify 'ignore
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:value-get 'ignore
|
|
|
|
|
:value-create 'custom-magic-value-create
|
|
|
|
|
:value-delete 'widget-children-value-delete)
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun widget-magic-mouse-down-action (widget &optional _event)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
;; Non-nil unless hidden.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(not (eq (widget-get (widget-get (widget-get widget :parent) :parent)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
:custom-state)
|
|
|
|
|
'hidden)))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-magic-value-create (widget)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Create compact status report for WIDGET."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((parent (widget-get widget :parent))
|
|
|
|
|
(state (widget-get parent :custom-state))
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(hidden (eq state 'hidden))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(entry (assq state custom-magic-alist))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(magic (nth 1 entry))
|
|
|
|
|
(face (nth 2 entry))
|
1997-06-01 11:58:17 +00:00
|
|
|
|
(category (widget-get parent :custom-category))
|
|
|
|
|
(text (or (and (eq category 'group)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(nth 4 entry))
|
|
|
|
|
(nth 3 entry)))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
(form (widget-get parent :custom-form))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
children)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(unless (eq state 'hidden)
|
|
|
|
|
(while (string-match "\\`\\(.*\\)%c\\(.*\\)\\'" text)
|
|
|
|
|
(setq text (concat (match-string 1 text)
|
|
|
|
|
(symbol-name category)
|
|
|
|
|
(match-string 2 text))))
|
|
|
|
|
(when (and custom-magic-show
|
|
|
|
|
(or (not hidden)
|
|
|
|
|
(memq category custom-magic-show-hidden)))
|
|
|
|
|
(insert " ")
|
|
|
|
|
(when (and (eq category 'group)
|
|
|
|
|
(not (and (eq custom-buffer-style 'links)
|
|
|
|
|
(> (widget-get parent :custom-level) 1))))
|
|
|
|
|
(insert-char ?\ (* custom-buffer-indent
|
|
|
|
|
(widget-get parent :custom-level))))
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'choice-item
|
|
|
|
|
:help-echo "Change the state of this item."
|
|
|
|
|
:format (if hidden "%t" "%[%t%]")
|
|
|
|
|
:button-prefix 'widget-push-button-prefix
|
|
|
|
|
:button-suffix 'widget-push-button-suffix
|
|
|
|
|
:mouse-down-action 'widget-magic-mouse-down-action
|
2010-10-09 03:23:38 +00:00
|
|
|
|
:tag " State ")
|
2010-03-12 22:56:30 +00:00
|
|
|
|
children)
|
|
|
|
|
(insert ": ")
|
|
|
|
|
(let ((start (point)))
|
|
|
|
|
(if (eq custom-magic-show 'long)
|
|
|
|
|
(insert text)
|
|
|
|
|
(insert (symbol-name state)))
|
|
|
|
|
(cond ((eq form 'lisp)
|
|
|
|
|
(insert " (lisp)"))
|
|
|
|
|
((eq form 'mismatch)
|
|
|
|
|
(insert " (mismatch)")))
|
|
|
|
|
(put-text-property start (point) 'face 'custom-state))
|
|
|
|
|
(insert "\n"))
|
1997-06-21 18:20:23 +00:00
|
|
|
|
(when (and (eq category 'group)
|
|
|
|
|
(not (and (eq custom-buffer-style 'links)
|
|
|
|
|
(> (widget-get parent :custom-level) 1))))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(insert-char ?\ (* custom-buffer-indent
|
|
|
|
|
(widget-get parent :custom-level))))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(when custom-magic-show-button
|
|
|
|
|
(when custom-magic-show
|
|
|
|
|
(let ((indent (widget-get parent :indent)))
|
|
|
|
|
(when indent
|
|
|
|
|
(insert-char ? indent))))
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'choice-item
|
|
|
|
|
:mouse-down-action 'widget-magic-mouse-down-action
|
|
|
|
|
:button-face face
|
|
|
|
|
:button-prefix ""
|
|
|
|
|
:button-suffix ""
|
|
|
|
|
:help-echo "Change the state."
|
|
|
|
|
:format (if hidden "%t" "%[%t%]")
|
|
|
|
|
:tag (if (memq form '(lisp mismatch))
|
|
|
|
|
(concat "(" magic ")")
|
|
|
|
|
(concat "[" magic "]")))
|
|
|
|
|
children)
|
|
|
|
|
(insert " "))
|
|
|
|
|
(widget-put widget :children children))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-magic-reset (widget)
|
|
|
|
|
"Redraw the :custom-magic property of WIDGET."
|
|
|
|
|
(let ((magic (widget-get widget :custom-magic)))
|
2010-10-16 20:36:20 +00:00
|
|
|
|
(when magic
|
|
|
|
|
(widget-value-set magic (widget-value magic)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
;;; The `custom' Widget.
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-button
|
2008-07-27 18:24:48 +00:00
|
|
|
|
'((((type x w32 ns) (class color)) ; Like default modeline
|
Initial check-in: changes for building Emacs under Mac OS.
2000-10-23 Andrew Choi <akochoi@i-cable.com>
* dispextern.h [macintosh]: Include macgui.h instead of macterm.h.
* dispnew.c [macintosh]: Include macterm.h.
(init_display) [macintosh]: initialization for window system.
* emacs.c (main) [macintosh]: Call syms_of_textprop,
syms_of_macfns, syms_of_ccl, syms_of_fontset, syms_of_xterm,
syms_of_search, x_term_init, and init_keyboard before calling
init_window_once. Also, call syms_of_xmenu.
* fontset.c (syms_of_fontset) [macintosh]: Set ASCII font of
default fontset to Monaco.
* frame.c [macintosh]: Include macterm.h. Remove declarations of
NewMacWindow and DisposeMacWindow.
(make_terminal_frame) [macintosh]: Call make_mac_terminal_frame
instead of calling NewMacWindow and setting fields of
f->output_data.mac directly. Call init_frame_faces.
(Fdelete_frame) [macintosh]: Remove unused code.
(Fmodify_frame_parameters) [macintosh]: Call
x_set_frame_parameters instead of mac_set_frame_parameters.
* frame.h [macintosh]: Define menu_bar_lines field in struct
frame. Define FRAME_EXTERNAL_MENU_BAR macro.
* keyboard.c [macintosh]: Include macterm.h.
(kbd_buffer_get_event) [macintosh]: Generate delete_window_event
and menu_bar_activate_event type events as for X and NT.
(make_lispy_event) [macintosh]: Construct lisp events of type
MENU_BAR_EVENT as for X and NT.
* sysdep.c [macintosh]: Remove declaration for sys_signal.
Include stdlib.h. Remove definition of Vx_bitmap_file_path.
(sys_subshell) [macintosh]: Remove definition entirely.
(init_sys_modes) [macintosh]: Do not initialize Vwindow_system and
Vwindow_system_version here. Remove initialization of
Vx_bitmap_file_path.
(read_input_waiting): Correct the number of parameters passed to
read_socket_hook.
Move all Macintosh functions to mac/mac.c.
* term.c [macintosh]: Include macterm.h.
* window.c [macintosh]: Include macterm.h.
* xdisp.c [macintosh]: Include macterm.h. Declare
set_frame_menubar and pending_menu_activation.
(echo_area_display) [macintosh]: Do not return if terminal frame
is the selected frame.
(update_menu_bar) [macintosh]: Check FRAME_EXTERNAL_MENU_BAR (f).
Allow only the selected frame to set menu bar.
(redisplay_window) [macintosh]: Obtain menu bar to redisplay by
calling FRAME_EXTERNAL_MENU_BAR (f).
(display_menu_bar) [macintosh]: Check FRAME_MAC_P (f).
* xfaces.c [macintosh]: Include macterm.h. Define x_display_info
and check_x. Declare XCreateGC. Define x_create_gc and
x_free_gc. Initialize font_sort_order.
(x_face_list_fonts) [macintosh]: Use the same code as WINDOWSNT,
but call x_list_fonts instead of w32_list_fonts.
(Finternal_face_x_get_resource) [macintosh]: Do not call
display_x_get_resource.
(prepare_face_for_display) [macintosh]: Set xgcv.font.
(realize_x_face) [macintosh]: Load the font if it is specified in
ATTRS.
(syms_of_xfaces) [macintosh]: Initialize Vscalable_fonts_allowed
to Qt.
* cus-edit.el (custom-button-face): Use 3D look for mac.
(custom-button-pressed-face): Likewise.
* faces.el (set-face-attributes-from-resources): Handle mac frames
in the same way as x and w32 frames.
(face-valid-attribute-values): Likewise.
(read-face-attribute): Likewise.
(defined-colors): Likewise.
(color-defined-p): Likewise.
(color-values): Likewise.
(display-grayscale-p): Likewise.
(face-set-after-frame-default): Likewise.
(mode-line): Same default face as for x and w32.
(tool-bar): Likewise.
* frame.el: Remove call to frame-notice-user-settings at end of
the file.
* info.el (Info-fontify-node): make underlines invisible for mac
as for x, pc, and w32 frame types.
* term/mac-win.el: New file.
2000-10-22 16:50:16 +00:00
|
|
|
|
(:box (:line-width 2 :style released-button)
|
|
|
|
|
:background "lightgrey" :foreground "black"))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(t
|
|
|
|
|
nil))
|
2005-10-23 17:40:38 +00:00
|
|
|
|
"Face for custom buffer buttons if `custom-raised-buttons' is non-nil."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:version "21.1"
|
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-button-face 'custom-button "22.1")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
2005-12-31 16:26:01 +00:00
|
|
|
|
(defface custom-button-mouse
|
2008-07-27 18:24:48 +00:00
|
|
|
|
'((((type x w32 ns) (class color))
|
2005-12-31 16:26:01 +00:00
|
|
|
|
(:box (:line-width 2 :style released-button)
|
|
|
|
|
:background "grey90" :foreground "black"))
|
|
|
|
|
(t
|
2008-09-05 17:30:10 +00:00
|
|
|
|
;; This is for text terminals that support mouse, like GPM mouse
|
|
|
|
|
;; or the MS-DOS terminal: inverse-video makes the button stand
|
|
|
|
|
;; out on mouse-over.
|
2008-09-05 15:08:34 +00:00
|
|
|
|
(:inverse-video t)))
|
2005-12-31 16:26:01 +00:00
|
|
|
|
"Mouse face for custom buffer buttons if `custom-raised-buttons' is non-nil."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'custom-faces)
|
|
|
|
|
|
2005-10-23 17:40:38 +00:00
|
|
|
|
(defface custom-button-unraised
|
2006-01-23 01:21:24 +00:00
|
|
|
|
'((t :inherit underline))
|
2005-10-23 17:40:38 +00:00
|
|
|
|
"Face for custom buffer buttons if `custom-raised-buttons' is nil."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'custom-faces)
|
|
|
|
|
|
|
|
|
|
(setq custom-button
|
|
|
|
|
(if custom-raised-buttons 'custom-button 'custom-button-unraised))
|
|
|
|
|
|
2005-12-31 16:26:01 +00:00
|
|
|
|
(setq custom-button-mouse
|
|
|
|
|
(if custom-raised-buttons 'custom-button-mouse 'highlight))
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-button-pressed
|
2008-07-27 18:24:48 +00:00
|
|
|
|
'((((type x w32 ns) (class color))
|
Initial check-in: changes for building Emacs under Mac OS.
2000-10-23 Andrew Choi <akochoi@i-cable.com>
* dispextern.h [macintosh]: Include macgui.h instead of macterm.h.
* dispnew.c [macintosh]: Include macterm.h.
(init_display) [macintosh]: initialization for window system.
* emacs.c (main) [macintosh]: Call syms_of_textprop,
syms_of_macfns, syms_of_ccl, syms_of_fontset, syms_of_xterm,
syms_of_search, x_term_init, and init_keyboard before calling
init_window_once. Also, call syms_of_xmenu.
* fontset.c (syms_of_fontset) [macintosh]: Set ASCII font of
default fontset to Monaco.
* frame.c [macintosh]: Include macterm.h. Remove declarations of
NewMacWindow and DisposeMacWindow.
(make_terminal_frame) [macintosh]: Call make_mac_terminal_frame
instead of calling NewMacWindow and setting fields of
f->output_data.mac directly. Call init_frame_faces.
(Fdelete_frame) [macintosh]: Remove unused code.
(Fmodify_frame_parameters) [macintosh]: Call
x_set_frame_parameters instead of mac_set_frame_parameters.
* frame.h [macintosh]: Define menu_bar_lines field in struct
frame. Define FRAME_EXTERNAL_MENU_BAR macro.
* keyboard.c [macintosh]: Include macterm.h.
(kbd_buffer_get_event) [macintosh]: Generate delete_window_event
and menu_bar_activate_event type events as for X and NT.
(make_lispy_event) [macintosh]: Construct lisp events of type
MENU_BAR_EVENT as for X and NT.
* sysdep.c [macintosh]: Remove declaration for sys_signal.
Include stdlib.h. Remove definition of Vx_bitmap_file_path.
(sys_subshell) [macintosh]: Remove definition entirely.
(init_sys_modes) [macintosh]: Do not initialize Vwindow_system and
Vwindow_system_version here. Remove initialization of
Vx_bitmap_file_path.
(read_input_waiting): Correct the number of parameters passed to
read_socket_hook.
Move all Macintosh functions to mac/mac.c.
* term.c [macintosh]: Include macterm.h.
* window.c [macintosh]: Include macterm.h.
* xdisp.c [macintosh]: Include macterm.h. Declare
set_frame_menubar and pending_menu_activation.
(echo_area_display) [macintosh]: Do not return if terminal frame
is the selected frame.
(update_menu_bar) [macintosh]: Check FRAME_EXTERNAL_MENU_BAR (f).
Allow only the selected frame to set menu bar.
(redisplay_window) [macintosh]: Obtain menu bar to redisplay by
calling FRAME_EXTERNAL_MENU_BAR (f).
(display_menu_bar) [macintosh]: Check FRAME_MAC_P (f).
* xfaces.c [macintosh]: Include macterm.h. Define x_display_info
and check_x. Declare XCreateGC. Define x_create_gc and
x_free_gc. Initialize font_sort_order.
(x_face_list_fonts) [macintosh]: Use the same code as WINDOWSNT,
but call x_list_fonts instead of w32_list_fonts.
(Finternal_face_x_get_resource) [macintosh]: Do not call
display_x_get_resource.
(prepare_face_for_display) [macintosh]: Set xgcv.font.
(realize_x_face) [macintosh]: Load the font if it is specified in
ATTRS.
(syms_of_xfaces) [macintosh]: Initialize Vscalable_fonts_allowed
to Qt.
* cus-edit.el (custom-button-face): Use 3D look for mac.
(custom-button-pressed-face): Likewise.
* faces.el (set-face-attributes-from-resources): Handle mac frames
in the same way as x and w32 frames.
(face-valid-attribute-values): Likewise.
(read-face-attribute): Likewise.
(defined-colors): Likewise.
(color-defined-p): Likewise.
(color-values): Likewise.
(display-grayscale-p): Likewise.
(face-set-after-frame-default): Likewise.
(mode-line): Same default face as for x and w32.
(tool-bar): Likewise.
* frame.el: Remove call to frame-notice-user-settings at end of
the file.
* info.el (Info-fontify-node): make underlines invisible for mac
as for x, pc, and w32 frame types.
* term/mac-win.el: New file.
2000-10-22 16:50:16 +00:00
|
|
|
|
(:box (:line-width 2 :style pressed-button)
|
|
|
|
|
:background "lightgrey" :foreground "black"))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(t
|
|
|
|
|
(:inverse-video t)))
|
2005-10-23 17:40:38 +00:00
|
|
|
|
"Face for pressed custom buttons if `custom-raised-buttons' is non-nil."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:version "21.1"
|
1997-06-24 22:42:54 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-button-pressed-face
|
|
|
|
|
'custom-button-pressed "22.1")
|
1997-06-24 22:42:54 +00:00
|
|
|
|
|
2005-10-23 17:40:38 +00:00
|
|
|
|
(defface custom-button-pressed-unraised
|
|
|
|
|
'((default :inherit custom-button-unraised)
|
|
|
|
|
(((class color) (background light)) :foreground "magenta4")
|
|
|
|
|
(((class color) (background dark)) :foreground "violet"))
|
|
|
|
|
"Face for pressed custom buttons if `custom-raised-buttons' is nil."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'custom-faces)
|
|
|
|
|
|
|
|
|
|
(setq custom-button-pressed
|
|
|
|
|
(if custom-raised-buttons
|
|
|
|
|
'custom-button-pressed
|
|
|
|
|
'custom-button-pressed-unraised))
|
|
|
|
|
|
2006-04-21 23:38:54 +00:00
|
|
|
|
(defface custom-documentation '((t nil))
|
1997-06-24 22:42:54 +00:00
|
|
|
|
"Face used for documentation strings in customization buffers."
|
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-documentation-face
|
|
|
|
|
'custom-documentation "22.1")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
|
|
|
|
|
(defface custom-state '((((class color)
|
|
|
|
|
(background dark))
|
|
|
|
|
(:foreground "lime green"))
|
|
|
|
|
(((class color)
|
|
|
|
|
(background light))
|
|
|
|
|
(:foreground "dark green"))
|
|
|
|
|
(t nil))
|
1997-06-24 22:42:54 +00:00
|
|
|
|
"Face used for State descriptions in the customize buffer."
|
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-state-face 'custom-state "22.1")
|
1997-06-24 22:42:54 +00:00
|
|
|
|
|
2006-01-04 15:56:08 +00:00
|
|
|
|
(defface custom-link
|
2006-01-23 01:21:24 +00:00
|
|
|
|
'((t :inherit link))
|
|
|
|
|
"Face for links in customization buffers."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'custom-faces)
|
2006-01-04 15:56:08 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(define-widget 'custom 'default
|
|
|
|
|
"Customize a user option."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:format "%v"
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:convert-widget 'custom-convert-widget
|
|
|
|
|
:notify 'custom-notify
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:custom-prefix ""
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-level 1
|
|
|
|
|
:custom-state 'hidden
|
|
|
|
|
:documentation-property 'widget-subclass-responsibility
|
|
|
|
|
:value-create 'widget-subclass-responsibility
|
|
|
|
|
:value-delete 'widget-children-value-delete
|
1997-05-14 17:22:46 +00:00
|
|
|
|
:value-get 'widget-value-value-get
|
|
|
|
|
:validate 'widget-children-validate
|
2011-04-19 13:44:55 +00:00
|
|
|
|
:match (lambda (_widget value) (symbolp value)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-convert-widget (widget)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Initialize :value and :tag from :args in WIDGET."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let ((args (widget-get widget :args)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when args
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put widget :value (widget-apply widget
|
|
|
|
|
:value-to-internal (car args)))
|
|
|
|
|
(widget-put widget :tag (custom-unlispify-tag-name (car args)))
|
|
|
|
|
(widget-put widget :args nil)))
|
|
|
|
|
widget)
|
|
|
|
|
|
|
|
|
|
(defun custom-notify (widget &rest args)
|
|
|
|
|
"Keep track of changes."
|
1997-06-01 18:03:25 +00:00
|
|
|
|
(let ((state (widget-get widget :custom-state)))
|
|
|
|
|
(unless (eq state 'modified)
|
|
|
|
|
(unless (memq state '(nil unknown hidden))
|
|
|
|
|
(widget-put widget :custom-state 'modified))
|
|
|
|
|
(custom-magic-reset widget)
|
|
|
|
|
(apply 'widget-default-notify widget args))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-redraw (widget)
|
|
|
|
|
"Redraw WIDGET with current settings."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let ((line (count-lines (point-min) (point)))
|
|
|
|
|
(column (current-column))
|
|
|
|
|
(pos (point))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(from (marker-position (widget-get widget :from)))
|
|
|
|
|
(to (marker-position (widget-get widget :to))))
|
|
|
|
|
(save-excursion
|
|
|
|
|
(widget-value-set widget (widget-value widget))
|
|
|
|
|
(custom-redraw-magic widget))
|
|
|
|
|
(when (and (>= pos from) (<= pos to))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(condition-case nil
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(progn
|
2009-08-22 19:29:18 +00:00
|
|
|
|
(goto-char (point-min))
|
|
|
|
|
(forward-line (if (> column 0)
|
|
|
|
|
(1- line)
|
|
|
|
|
line))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(move-to-column column))
|
|
|
|
|
(error nil)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-redraw-magic (widget)
|
|
|
|
|
"Redraw WIDGET state with current settings."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(while widget
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let ((magic (widget-get widget :custom-magic)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(cond (magic
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(widget-value-set magic (widget-value magic))
|
|
|
|
|
(when (setq widget (widget-get widget :group))
|
|
|
|
|
(custom-group-state-update widget)))
|
|
|
|
|
(t
|
|
|
|
|
(setq widget nil)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-setup))
|
|
|
|
|
|
2011-07-07 15:59:00 +00:00
|
|
|
|
(make-obsolete 'custom-show "this widget type is no longer supported." "24.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-show (widget value)
|
|
|
|
|
"Non-nil if WIDGET should be shown with VALUE by default."
|
|
|
|
|
(let ((show (widget-get widget :custom-show)))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(if (functionp show)
|
|
|
|
|
(funcall show widget value)
|
|
|
|
|
show)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-load-widget (widget)
|
|
|
|
|
"Load all dependencies for WIDGET."
|
|
|
|
|
(custom-load-symbol (widget-value widget)))
|
|
|
|
|
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(defun custom-unloaded-symbol-p (symbol)
|
2004-05-28 18:59:01 +00:00
|
|
|
|
"Return non-nil if the dependencies of SYMBOL have not yet been loaded."
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(let ((found nil)
|
|
|
|
|
(loads (get symbol 'custom-loads))
|
|
|
|
|
load)
|
|
|
|
|
(while loads
|
|
|
|
|
(setq load (car loads)
|
|
|
|
|
loads (cdr loads))
|
|
|
|
|
(cond ((symbolp load)
|
|
|
|
|
(unless (featurep load)
|
|
|
|
|
(setq found t)))
|
|
|
|
|
((assoc load load-history))
|
|
|
|
|
((assoc (locate-library load) load-history)
|
|
|
|
|
(message nil))
|
|
|
|
|
(t
|
|
|
|
|
(setq found t))))
|
|
|
|
|
found))
|
|
|
|
|
|
|
|
|
|
(defun custom-unloaded-widget-p (widget)
|
2004-05-28 18:59:01 +00:00
|
|
|
|
"Return non-nil if the dependencies of WIDGET have not yet been loaded."
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-unloaded-symbol-p (widget-value widget)))
|
|
|
|
|
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(defun custom-toggle-hide (widget)
|
|
|
|
|
"Toggle visibility of WIDGET."
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-load-widget widget)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let ((state (widget-get widget :custom-state)))
|
2008-08-19 01:49:04 +00:00
|
|
|
|
(cond ((memq state '(invalid modified set))
|
|
|
|
|
(error "There are unsaved changes"))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
((eq state 'hidden)
|
|
|
|
|
(widget-put widget :custom-state 'unknown))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(t
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(widget-put widget :documentation-shown nil)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(widget-put widget :custom-state 'hidden)))
|
1997-06-15 15:31:32 +00:00
|
|
|
|
(custom-redraw widget)
|
|
|
|
|
(widget-setup)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-toggle-parent (widget &rest _ignore)
|
1997-06-24 22:42:54 +00:00
|
|
|
|
"Toggle visibility of parent of WIDGET."
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(custom-toggle-hide (widget-get widget :parent)))
|
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(defun custom-add-see-also (widget &optional prefix)
|
|
|
|
|
"Add `See also ...' to WIDGET if there are any links.
|
|
|
|
|
Insert PREFIX first if non-nil."
|
|
|
|
|
(let* ((symbol (widget-get widget :value))
|
|
|
|
|
(links (get symbol 'custom-links))
|
|
|
|
|
(many (> (length links) 2))
|
|
|
|
|
(buttons (widget-get widget :buttons))
|
|
|
|
|
(indent (widget-get widget :indent)))
|
|
|
|
|
(when links
|
|
|
|
|
(when indent
|
|
|
|
|
(insert-char ?\ indent))
|
|
|
|
|
(when prefix
|
|
|
|
|
(insert prefix))
|
|
|
|
|
(insert "See also ")
|
|
|
|
|
(while links
|
2006-01-13 19:50:10 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget (car links)
|
|
|
|
|
:button-face 'custom-link
|
2006-02-14 20:16:04 +00:00
|
|
|
|
:mouse-face 'highlight
|
|
|
|
|
:pressed-face 'highlight)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(setq links (cdr links))
|
|
|
|
|
(cond ((null links)
|
|
|
|
|
(insert ".\n"))
|
|
|
|
|
((null (cdr links))
|
|
|
|
|
(if many
|
|
|
|
|
(insert ", and ")
|
|
|
|
|
(insert " and ")))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(t
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(insert ", "))))
|
|
|
|
|
(widget-put widget :buttons buttons))))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-add-parent-links (widget &optional initial-string _doc-initial-string)
|
1997-06-21 20:07:48 +00:00
|
|
|
|
"Add \"Parent groups: ...\" to WIDGET if the group has parents.
|
2005-11-16 02:02:03 +00:00
|
|
|
|
The value is non-nil if any parents were found.
|
1997-06-21 20:07:48 +00:00
|
|
|
|
If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(let ((name (widget-value widget))
|
|
|
|
|
(type (widget-type widget))
|
|
|
|
|
(buttons (widget-get widget :buttons))
|
1997-06-21 18:51:28 +00:00
|
|
|
|
(start (point))
|
2003-12-02 15:01:52 +00:00
|
|
|
|
(parents nil))
|
2007-12-31 03:42:51 +00:00
|
|
|
|
(insert (or initial-string "Groups:"))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(mapatoms (lambda (symbol)
|
2005-11-16 02:02:03 +00:00
|
|
|
|
(when (member (list name type) (get symbol 'custom-group))
|
|
|
|
|
(insert " ")
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-group-link
|
|
|
|
|
:tag (custom-unlispify-tag-name symbol)
|
|
|
|
|
symbol)
|
|
|
|
|
buttons)
|
|
|
|
|
(setq parents (cons symbol parents)))))
|
2003-12-02 15:01:52 +00:00
|
|
|
|
(if parents
|
|
|
|
|
(insert "\n")
|
1997-06-21 18:51:28 +00:00
|
|
|
|
(delete-region start (point)))
|
2003-12-02 15:01:52 +00:00
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
parents))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;;; The `custom-comment' Widget.
|
|
|
|
|
|
|
|
|
|
;; like the editable field
|
2006-01-09 23:14:26 +00:00
|
|
|
|
(defface custom-comment '((((type tty))
|
|
|
|
|
:background "yellow3"
|
|
|
|
|
:foreground "black")
|
|
|
|
|
(((class grayscale color)
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(background light))
|
2006-01-09 23:14:26 +00:00
|
|
|
|
:background "gray85")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(((class grayscale color)
|
|
|
|
|
(background dark))
|
2006-01-09 23:14:26 +00:00
|
|
|
|
:background "dim gray")
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(t
|
2006-01-09 23:14:26 +00:00
|
|
|
|
:slant italic))
|
Fix typos in docstrings.
* cus-edit.el (customize-apropos-options, custom-comment)
(custom-comment-tag, custom-face-edit-attribute-tag):
Fix typos in docstrings.
(custom-buffer-done-kill): Remove * from defcustom docstring.
(custom-file): Fix typo in doc of defcustom choice.
* frame.el (display-visual-class): Fix typo in docstring.
(initial-frame-alist, minibuffer-frame-alist, pop-up-frame-alist)
(special-display-frame-alist, show-trailing-whitespace)
(auto-hscroll-mode, blink-cursor-delay, blink-cursor-interval)
(display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
Remove * from defcustom docstrings.
* md4.el (md4-buffer): Fix typo in docstring.
(md4, md4-64): Doc fixes.
(md4-pack-int32): Reflow docstring.
* paths.el (rmail-file-name): Remove * from defcustom docstring.
(prune-directory-list, gnus-nntp-service): Fix typos in docstrings.
* rect.el (open-rectangle): Reflow docstring.
(spaces-string): Fix docstring typo. Use "?\s" instead of "? ".
* select.el (x-get-cut-buffer): Fix typo in docstring.
* timezone.el (timezone-zone-to-minute, timezone-time-from-absolute)
(timezone-time-zone-from-absolute, timezone-leap-year-p):
Fix typos in docstrings.
* emacs-lisp/assoc.el (asort, aelement, aput, aget, amake):
Fix typos in docstrings.
2008-11-01 01:24:33 +00:00
|
|
|
|
"Face used for comments on variables or faces."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:version "21.1"
|
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-comment-face 'custom-comment "22.1")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; like font-lock-comment-face
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-comment-tag
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
'((((class color) (background dark)) (:foreground "gray80"))
|
|
|
|
|
(((class color) (background light)) (:foreground "blue4"))
|
|
|
|
|
(((class grayscale) (background light))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(:foreground "DimGray" :weight bold :slant italic))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(((class grayscale) (background dark))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(:foreground "LightGray" :weight bold :slant italic))
|
|
|
|
|
(t (:weight bold)))
|
2008-11-06 03:40:06 +00:00
|
|
|
|
"Face used for the comment tag on variables or faces."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-comment-tag-face 'custom-comment-tag "22.1")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
(define-widget 'custom-comment 'string
|
1999-09-28 22:09:42 +00:00
|
|
|
|
"User comment."
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:tag "Comment"
|
1999-09-28 22:09:42 +00:00
|
|
|
|
:help-echo "Edit a comment here."
|
2008-11-06 03:40:06 +00:00
|
|
|
|
:sample-face 'custom-comment-tag
|
|
|
|
|
:value-face 'custom-comment
|
1999-09-28 22:09:42 +00:00
|
|
|
|
:shown nil
|
|
|
|
|
:create 'custom-comment-create)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-comment-create (widget)
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(let* ((null-comment (equal "" (widget-value widget))))
|
1999-10-01 22:04:30 +00:00
|
|
|
|
(if (or (widget-get (widget-get widget :parent) :comment-shown)
|
|
|
|
|
(not null-comment))
|
|
|
|
|
(widget-default-create widget)
|
|
|
|
|
;; `widget-default-delete' expects markers in these slots --
|
|
|
|
|
;; maybe it shouldn't.
|
|
|
|
|
(widget-put widget :from (point-marker))
|
|
|
|
|
(widget-put widget :to (point-marker)))))
|
1999-09-28 22:09:42 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-comment-hide (widget)
|
|
|
|
|
(widget-put (widget-get widget :parent) :comment-shown nil))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; Those functions are for the menu. WIDGET is NOT the comment widget. It's
|
|
|
|
|
;; the global custom one
|
|
|
|
|
(defun custom-comment-show (widget)
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(widget-put widget :comment-shown t)
|
|
|
|
|
(custom-redraw widget)
|
|
|
|
|
(widget-setup))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-comment-invisible-p (widget)
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(let ((val (widget-value (widget-get widget :comment-widget))))
|
|
|
|
|
(and (equal "" val)
|
|
|
|
|
(not (widget-get widget :comment-shown)))))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The `custom-variable' Widget.
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-variable-tag
|
2000-03-16 22:15:26 +00:00
|
|
|
|
`((((class color)
|
|
|
|
|
(background dark))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "light blue" :weight bold))
|
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
high number of colors displays.
* textmodes/table.el (table-cell-face): Add special case for
displays supporting a high number of colors.
* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
(vhdl-font-lock-reserved-words-face)
(vhdl-speedbar-architecture-face)
(vhdl-speedbar-instantiation-face)
(vhdl-speedbar-architecture-selected-face)
(vhdl-speedbar-instantiation-selected-face): Likewise.
* progmodes/sh-script.el (sh-heredoc-face): Likewise.
* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
* progmodes/ebrowse.el (ebrowse-tree-mark-face)
(ebrowse-root-class-face, ebrowse-member-attribute-face)
(ebrowse-progress-face): Likewise.
* progmodes/compile.el (compilation-info-face): Likewise.
* progmodes/cc-fonts.el (c-invalid-face): Likewise.
* emacs-lisp/re-builder.el (reb-match-3): Likewise.
* calendar/calendar.el (diary-face): Likewise.
* woman.el (woman-italic-face, woman-bold-face)
(woman-unknown-face): Likewise.
* wid-edit.el (widget-button-pressed-face): Likewise.
* whitespace.el (whitespace-highlight-face): Likewise.
* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
* pcvs-info.el (cvs-marked-face): Likewise.
* info.el (info-xref): Likewise.
* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
* hilit-chg.el (highlight-changes-face)
(highlight-changes-delete-face): Likewise.
* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
(hi-red-b): Likewise.
* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
* font-lock.el (font-lock-keyword-face)
(font-lock-function-name-face, font-lock-warning-face): Likewise.
* cus-edit.el (custom-invalid-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-variable-tag-face)
(custom-group-tag-face-1, custom-group-tag-face): Likewise.
* comint.el (comint-highlight-prompt): Likewise.
2005-04-08 14:26:13 +00:00
|
|
|
|
(((min-colors 88) (class color)
|
|
|
|
|
(background light))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "blue1" :weight bold))
|
2000-03-16 22:15:26 +00:00
|
|
|
|
(((class color)
|
|
|
|
|
(background light))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "blue" :weight bold))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(t (:weight bold)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Face used for unpushable variable tags."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-variable-tag-face
|
|
|
|
|
'custom-variable-tag "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-variable-button '((t (:underline t :weight bold)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Face used for pushable variable tags."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-variable-button-face
|
|
|
|
|
'custom-variable-button "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-12-04 05:49:21 +00:00
|
|
|
|
(defcustom custom-variable-default-form 'edit
|
|
|
|
|
"Default form of displaying variable values."
|
|
|
|
|
:type '(choice (const edit)
|
|
|
|
|
(const lisp))
|
1998-04-20 02:34:53 +00:00
|
|
|
|
:group 'custom-buffer
|
|
|
|
|
:version "20.3")
|
1997-12-04 05:49:21 +00:00
|
|
|
|
|
2004-06-19 16:02:06 +00:00
|
|
|
|
(defun custom-variable-documentation (variable)
|
|
|
|
|
"Return documentation of VARIABLE for use in Custom buffer.
|
|
|
|
|
Normally just return the docstring. But if VARIABLE automatically
|
|
|
|
|
becomes buffer local when set, append a message to that effect."
|
|
|
|
|
(if (and (local-variable-if-set-p variable)
|
|
|
|
|
(or (not (local-variable-p variable))
|
|
|
|
|
(with-temp-buffer
|
|
|
|
|
(local-variable-if-set-p variable))))
|
|
|
|
|
(concat (documentation-property variable 'variable-documentation)
|
|
|
|
|
"\n
|
|
|
|
|
This variable automatically becomes buffer-local when set outside Custom.
|
|
|
|
|
However, setting it through Custom sets the default value.")
|
|
|
|
|
(documentation-property variable 'variable-documentation)))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(define-widget 'custom-variable 'custom
|
2010-03-12 22:56:30 +00:00
|
|
|
|
"A widget for displaying a Custom variable.
|
2010-10-08 00:05:12 +00:00
|
|
|
|
The following properties have special meanings for this widget:
|
|
|
|
|
|
|
|
|
|
:hidden-states should be a list of widget states for which the
|
|
|
|
|
widget's initial contents are to be hidden.
|
|
|
|
|
|
|
|
|
|
:custom-form should be a symbol describing how to display and
|
|
|
|
|
edit the variable---either `edit' (using edit widgets),
|
|
|
|
|
`lisp' (as a Lisp sexp), or `mismatch' (should not happen);
|
2010-10-16 00:16:34 +00:00
|
|
|
|
if nil, use the return value of `custom-variable-default-form'.
|
|
|
|
|
|
|
|
|
|
:shown-value, if non-nil, should be a list whose `car' is the
|
|
|
|
|
variable value to display in place of the current value.
|
|
|
|
|
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:custom-style describes the widget interface style; nil is the
|
|
|
|
|
default style, while `simple' means a simpler interface that
|
|
|
|
|
inhibits the magic custom-state widget."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:format "%v"
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:help-echo "Set or reset this variable."
|
2004-06-19 16:02:06 +00:00
|
|
|
|
:documentation-property #'custom-variable-documentation
|
1997-06-01 11:58:17 +00:00
|
|
|
|
:custom-category 'option
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-state nil
|
|
|
|
|
:custom-menu 'custom-variable-menu-create
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:custom-form nil
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:value-create 'custom-variable-value-create
|
|
|
|
|
:action 'custom-variable-action
|
2010-03-12 22:56:30 +00:00
|
|
|
|
:hidden-states '(standard)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-set 'custom-variable-set
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-save 'custom-variable-mark-to-save
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-reset-current 'custom-redraw
|
|
|
|
|
:custom-reset-saved 'custom-variable-reset-saved
|
2002-07-16 13:37:21 +00:00
|
|
|
|
:custom-reset-standard 'custom-variable-reset-standard
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-reset-standard 'custom-variable-mark-to-reset-standard
|
|
|
|
|
:custom-standard-value 'custom-variable-standard-value
|
|
|
|
|
:custom-state-set-and-redraw 'custom-variable-state-set-and-redraw)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defun custom-variable-type (symbol)
|
|
|
|
|
"Return a widget suitable for editing the value of SYMBOL.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
If SYMBOL has a `custom-type' property, use that.
|
2007-06-11 05:12:38 +00:00
|
|
|
|
Otherwise, try matching SYMBOL against `custom-guess-name-alist' and
|
|
|
|
|
try matching its doc string against `custom-guess-doc-alist'."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(let* ((type (or (get symbol 'custom-type)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(and (not (get symbol 'standard-value))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(custom-guess-type symbol))
|
|
|
|
|
'sexp))
|
|
|
|
|
(options (get symbol 'custom-options))
|
|
|
|
|
(tmp (if (listp type)
|
1997-04-22 16:55:19 +00:00
|
|
|
|
(copy-sequence type)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(list type))))
|
|
|
|
|
(when options
|
|
|
|
|
(widget-put tmp :options options))
|
|
|
|
|
tmp))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-variable-value-create (widget)
|
1999-09-28 22:09:42 +00:00
|
|
|
|
"Here is where you edit the variable's value."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-load-widget widget)
|
1997-12-04 05:49:21 +00:00
|
|
|
|
(unless (widget-get widget :custom-form)
|
|
|
|
|
(widget-put widget :custom-form custom-variable-default-form))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((buttons (widget-get widget :buttons))
|
|
|
|
|
(children (widget-get widget :children))
|
|
|
|
|
(form (widget-get widget :custom-form))
|
|
|
|
|
(symbol (widget-get widget :value))
|
|
|
|
|
(tag (widget-get widget :tag))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(type (custom-variable-type symbol))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(conv (widget-convert type))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(get (or (get symbol 'custom-get) 'default-value))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(prefix (widget-get widget :custom-prefix))
|
|
|
|
|
(last (widget-get widget :custom-last))
|
2010-10-17 00:00:34 +00:00
|
|
|
|
(style (widget-get widget :custom-style))
|
2010-10-16 00:16:34 +00:00
|
|
|
|
(value (let ((shown-value (widget-get widget :shown-value)))
|
|
|
|
|
(cond (shown-value
|
|
|
|
|
(car shown-value))
|
|
|
|
|
((default-boundp symbol)
|
|
|
|
|
(funcall get symbol))
|
|
|
|
|
(t (widget-get conv :value)))))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(state (or (widget-get widget :custom-state)
|
|
|
|
|
(if (memq (custom-variable-state symbol value)
|
|
|
|
|
(widget-get widget :hidden-states))
|
|
|
|
|
'hidden))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; If we don't know the state, see if we need to edit it in lisp form.
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(unless state
|
|
|
|
|
(setq state (if (custom-show type value) 'unknown 'hidden)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(when (eq state 'unknown)
|
|
|
|
|
(unless (widget-apply conv :match value)
|
1997-07-30 12:04:50 +00:00
|
|
|
|
(setq form 'mismatch)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; Now we can create the child widget.
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(cond ((eq custom-buffer-style 'tree)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(insert prefix (if last " `--- " " |--- "))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-07-02 15:35:18 +00:00
|
|
|
|
widget 'custom-browse-variable-tag)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons))
|
|
|
|
|
((eq state 'hidden)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; Indicate hidden value.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
2010-03-12 22:56:30 +00:00
|
|
|
|
widget 'custom-visibility
|
1997-06-15 15:31:32 +00:00
|
|
|
|
:help-echo "Show the value of this option."
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph "down"
|
2010-03-12 22:56:30 +00:00
|
|
|
|
:on "Hide"
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:off-glyph "right"
|
2002-07-20 22:14:36 +00:00
|
|
|
|
:off "Show Value"
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:action 'custom-toggle-hide-variable
|
1997-05-31 06:34:12 +00:00
|
|
|
|
nil)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " ")
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'item
|
|
|
|
|
:format "%{%t%} "
|
|
|
|
|
:sample-face 'custom-variable-tag
|
|
|
|
|
:tag tag
|
|
|
|
|
:parent widget)
|
1997-05-31 06:34:12 +00:00
|
|
|
|
buttons))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
((memq form '(lisp mismatch))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; In lisp mode edit the saved value when possible.
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-visibility
|
|
|
|
|
:help-echo "Hide the value of this option."
|
|
|
|
|
:on "Hide"
|
|
|
|
|
:off "Show"
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph "down"
|
|
|
|
|
:off-glyph "right"
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:action 'custom-toggle-hide-variable
|
2010-03-12 22:56:30 +00:00
|
|
|
|
t)
|
|
|
|
|
buttons)
|
|
|
|
|
(insert " ")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((value (cond ((get symbol 'saved-value)
|
|
|
|
|
(car (get symbol 'saved-value)))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
((get symbol 'standard-value)
|
|
|
|
|
(car (get symbol 'standard-value)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
((default-boundp symbol)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-quote (funcall get symbol)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(t
|
|
|
|
|
(custom-quote (widget-get conv :value))))))
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(insert (symbol-name symbol) ": ")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'sexp
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:button-face 'custom-variable-button-face
|
1997-05-31 06:34:12 +00:00
|
|
|
|
:format "%v"
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:tag (symbol-name symbol)
|
|
|
|
|
:parent widget
|
|
|
|
|
:value value)
|
|
|
|
|
children)))
|
|
|
|
|
(t
|
|
|
|
|
;; Edit mode.
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-visibility
|
|
|
|
|
:help-echo "Hide or show this option."
|
|
|
|
|
:on "Hide"
|
|
|
|
|
:off "Show"
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph "down"
|
|
|
|
|
:off-glyph "right"
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:action 'custom-toggle-hide-variable
|
2010-03-12 22:56:30 +00:00
|
|
|
|
t)
|
|
|
|
|
buttons)
|
|
|
|
|
(insert " ")
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(let* ((format (widget-get type :format))
|
|
|
|
|
tag-format value-format)
|
|
|
|
|
(unless (string-match ":" format)
|
1997-09-12 07:04:41 +00:00
|
|
|
|
(error "Bad format"))
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(setq tag-format (substring format 0 (match-end 0)))
|
|
|
|
|
(setq value-format (substring format (match-end 0)))
|
|
|
|
|
(push (widget-create-child-and-convert
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget 'item
|
1997-05-31 06:34:12 +00:00
|
|
|
|
:format tag-format
|
|
|
|
|
:action 'custom-tag-action
|
1997-06-15 15:31:32 +00:00
|
|
|
|
:help-echo "Change value of this option."
|
1997-05-31 06:34:12 +00:00
|
|
|
|
:mouse-down-action 'custom-tag-mouse-down-action
|
2008-11-06 03:46:24 +00:00
|
|
|
|
:button-face 'custom-variable-button
|
|
|
|
|
:sample-face 'custom-variable-tag
|
1997-05-31 06:34:12 +00:00
|
|
|
|
tag)
|
|
|
|
|
buttons)
|
|
|
|
|
(push (widget-create-child-and-convert
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget type
|
1997-05-31 06:34:12 +00:00
|
|
|
|
:format value-format
|
|
|
|
|
:value value)
|
|
|
|
|
children))))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(unless (eq custom-buffer-style 'tree)
|
|
|
|
|
(unless (eq (preceding-char) ?\n)
|
|
|
|
|
(widget-insert "\n"))
|
|
|
|
|
;; Create the magic button.
|
2010-10-17 00:00:34 +00:00
|
|
|
|
(unless (eq style 'simple)
|
2010-10-16 00:16:34 +00:00
|
|
|
|
(let ((magic (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-magic nil)))
|
|
|
|
|
(widget-put widget :custom-magic magic)
|
|
|
|
|
(push magic buttons)))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
;; Insert documentation.
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(widget-put widget :documentation-indent 3)
|
2010-10-17 00:00:34 +00:00
|
|
|
|
(unless (and (eq style 'simple)
|
|
|
|
|
(eq state 'hidden))
|
|
|
|
|
(widget-add-documentation-string-button
|
|
|
|
|
widget :visibility-widget 'custom-visibility))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
|
|
|
|
|
;; The comment field
|
|
|
|
|
(unless (eq state 'hidden)
|
|
|
|
|
(let* ((comment (get symbol 'variable-comment))
|
|
|
|
|
(comment-widget
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget 'custom-comment
|
|
|
|
|
:parent widget
|
|
|
|
|
:value (or comment ""))))
|
|
|
|
|
(widget-put widget :comment-widget comment-widget)
|
|
|
|
|
;; Don't push it !!! Custom assumes that the first child is the
|
|
|
|
|
;; value one.
|
|
|
|
|
(setq children (append children (list comment-widget)))))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
;; Update the rest of the properties.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(widget-put widget :custom-form form)
|
|
|
|
|
(widget-put widget :children children)
|
|
|
|
|
;; Now update the state.
|
|
|
|
|
(if (eq state 'hidden)
|
|
|
|
|
(widget-put widget :custom-state state)
|
|
|
|
|
(custom-variable-state-set widget))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; See also.
|
|
|
|
|
(unless (eq state 'hidden)
|
|
|
|
|
(when (eq (widget-get widget :custom-level) 1)
|
|
|
|
|
(custom-add-parent-links widget))
|
|
|
|
|
(custom-add-see-also widget)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-toggle-hide-variable (visibility-widget &rest _ignore)
|
2010-10-16 20:36:20 +00:00
|
|
|
|
"Toggle the visibility of a `custom-variable' parent widget.
|
|
|
|
|
By default, this signals an error if the parent has unsaved
|
|
|
|
|
changes. If the parent has a `simple' :custom-style property,
|
|
|
|
|
the present value is saved to its :shown-value property instead."
|
|
|
|
|
(let ((widget (widget-get visibility-widget :parent)))
|
|
|
|
|
(unless (eq (widget-type widget) 'custom-variable)
|
|
|
|
|
(error "Invalid widget type"))
|
|
|
|
|
(custom-load-widget widget)
|
|
|
|
|
(let ((state (widget-get widget :custom-state)))
|
|
|
|
|
(if (eq state 'hidden)
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
;; In normal interface, widget can't be hidden if modified.
|
|
|
|
|
(when (memq state '(invalid modified set))
|
|
|
|
|
(if (eq (widget-get widget :custom-style) 'simple)
|
|
|
|
|
(widget-put widget :shown-value
|
|
|
|
|
(list (widget-value
|
|
|
|
|
(car-safe
|
|
|
|
|
(widget-get widget :children)))))
|
|
|
|
|
(error "There are unsaved changes")))
|
|
|
|
|
(widget-put widget :documentation-shown nil)
|
|
|
|
|
(widget-put widget :custom-state 'hidden))
|
|
|
|
|
(custom-redraw widget)
|
|
|
|
|
(widget-setup))))
|
|
|
|
|
|
1997-05-31 06:34:12 +00:00
|
|
|
|
(defun custom-tag-action (widget &rest args)
|
|
|
|
|
"Pass :action to first child of WIDGET's parent."
|
|
|
|
|
(apply 'widget-apply (car (widget-get (widget-get widget :parent) :children))
|
|
|
|
|
:action args))
|
|
|
|
|
|
|
|
|
|
(defun custom-tag-mouse-down-action (widget &rest args)
|
|
|
|
|
"Pass :mouse-down-action to first child of WIDGET's parent."
|
|
|
|
|
(apply 'widget-apply (car (widget-get (widget-get widget :parent) :children))
|
|
|
|
|
:mouse-down-action args))
|
|
|
|
|
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(defun custom-variable-state (symbol val)
|
|
|
|
|
"Return the state of SYMBOL if its value is VAL.
|
|
|
|
|
If SYMBOL has a non-nil `custom-get' property, it overrides VAL.
|
|
|
|
|
Possible return values are `standard', `saved', `set', `themed',
|
|
|
|
|
`changed', and `rogue'."
|
|
|
|
|
(let* ((get (or (get symbol 'custom-get) 'default-value))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(value (if (default-boundp symbol)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(funcall get symbol)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
val))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment (get symbol 'variable-comment))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
tmp
|
2010-03-12 22:56:30 +00:00
|
|
|
|
temp)
|
|
|
|
|
(cond ((progn (setq tmp (get symbol 'customized-value))
|
|
|
|
|
(setq temp
|
|
|
|
|
(get symbol 'customized-variable-comment))
|
|
|
|
|
(or tmp temp))
|
|
|
|
|
(if (condition-case nil
|
|
|
|
|
(and (equal value (eval (car tmp)))
|
|
|
|
|
(equal comment temp))
|
|
|
|
|
(error nil))
|
|
|
|
|
'set
|
|
|
|
|
'changed))
|
|
|
|
|
((progn (setq tmp (get symbol 'theme-value))
|
|
|
|
|
(setq temp (get symbol 'saved-variable-comment))
|
|
|
|
|
(or tmp temp))
|
|
|
|
|
(if (condition-case nil
|
|
|
|
|
(and (equal comment temp)
|
|
|
|
|
(equal value
|
|
|
|
|
(eval
|
|
|
|
|
(car (custom-variable-theme-value
|
|
|
|
|
symbol)))))
|
|
|
|
|
(error nil))
|
|
|
|
|
(cond
|
|
|
|
|
((eq (caar tmp) 'user) 'saved)
|
|
|
|
|
((eq (caar tmp) 'changed)
|
|
|
|
|
(if (condition-case nil
|
|
|
|
|
(and (null comment)
|
|
|
|
|
(equal value
|
|
|
|
|
(eval
|
|
|
|
|
(car (get symbol 'standard-value)))))
|
|
|
|
|
(error nil))
|
|
|
|
|
;; The value was originally set outside
|
|
|
|
|
;; custom, but it was set to the standard
|
|
|
|
|
;; value (probably an autoloaded defcustom).
|
|
|
|
|
'standard
|
|
|
|
|
'changed))
|
|
|
|
|
(t 'themed))
|
|
|
|
|
'changed))
|
|
|
|
|
((setq tmp (get symbol 'standard-value))
|
|
|
|
|
(if (condition-case nil
|
|
|
|
|
(and (equal value (eval (car tmp)))
|
|
|
|
|
(equal comment nil))
|
|
|
|
|
(error nil))
|
|
|
|
|
'standard
|
|
|
|
|
'changed))
|
|
|
|
|
(t 'rogue))))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-state-set (widget &optional state)
|
|
|
|
|
"Set the state of WIDGET to STATE.
|
|
|
|
|
If STATE is nil, the value is computed by `custom-variable-state'."
|
|
|
|
|
(widget-put widget :custom-state
|
|
|
|
|
(or state (custom-variable-state (widget-value widget)
|
|
|
|
|
(widget-get widget :value)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2002-07-16 13:37:21 +00:00
|
|
|
|
(defun custom-variable-standard-value (widget)
|
|
|
|
|
(get (widget-value widget) 'standard-value))
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defvar custom-variable-menu
|
2006-01-12 02:25:59 +00:00
|
|
|
|
`(("Set for Current Session" custom-variable-set
|
2006-01-04 17:23:23 +00:00
|
|
|
|
(lambda (widget)
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(eq (widget-get widget :custom-state) 'modified)))
|
2007-10-12 02:56:23 +00:00
|
|
|
|
;; Note that in all the backquoted code in this file, we test
|
|
|
|
|
;; init-file-user rather than user-init-file. This is in case
|
|
|
|
|
;; cus-edit is loaded by something in site-start.el, because
|
|
|
|
|
;; user-init-file is not set at that stage.
|
|
|
|
|
;; http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00310.html
|
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Save for Future Sessions" custom-variable-save
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(memq (widget-get widget :custom-state)
|
|
|
|
|
'(modified set changed rogue))))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Undo Edits" custom-redraw
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(and (default-boundp (widget-value widget))
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(memq (widget-get widget :custom-state) '(modified changed)))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Reset to Saved" custom-variable-reset-saved
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(lambda (widget)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(and (or (get (widget-value widget) 'saved-value)
|
|
|
|
|
(get (widget-value widget) 'saved-variable-comment))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(memq (widget-get widget :custom-state)
|
|
|
|
|
'(modified set changed rogue)))))
|
2007-10-12 02:56:23 +00:00
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Erase Customization" custom-variable-reset-standard
|
2006-01-04 15:56:08 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(and (get (widget-value widget) 'standard-value)
|
|
|
|
|
(memq (widget-get widget :custom-state)
|
|
|
|
|
'(modified set changed saved rogue)))))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Set to Backup Value" custom-variable-reset-backup
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(get (widget-value widget) 'backup-value)))
|
|
|
|
|
("---" ignore ignore)
|
|
|
|
|
("Add Comment" custom-comment-show custom-comment-invisible-p)
|
2006-01-04 21:23:20 +00:00
|
|
|
|
("---" ignore ignore)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Show Current Value" custom-variable-edit
|
2006-01-04 15:56:08 +00:00
|
|
|
|
(lambda (widget)
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(eq (widget-get widget :custom-form) 'lisp)))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Show Saved Lisp Expression" custom-variable-edit-lisp
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(eq (widget-get widget :custom-form) 'edit))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Alist of actions for the `custom-variable' widget.
|
1997-04-24 16:53:55 +00:00
|
|
|
|
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
|
|
|
|
|
the menu entry, ACTION is the function to call on the widget when the
|
|
|
|
|
menu is selected, and FILTER is a predicate which takes a `custom-variable'
|
|
|
|
|
widget as an argument, and returns non-nil if ACTION is valid on that
|
1999-11-26 19:47:26 +00:00
|
|
|
|
widget. If FILTER is nil, ACTION is always valid.")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-variable-action (widget &optional event)
|
|
|
|
|
"Show the menu for `custom-variable' WIDGET.
|
|
|
|
|
Optional EVENT is the location for the menu."
|
|
|
|
|
(if (eq (widget-get widget :custom-state) 'hidden)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-toggle-hide widget)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(unless (eq (widget-get widget :custom-state) 'modified)
|
|
|
|
|
(custom-variable-state-set widget))
|
|
|
|
|
(custom-redraw-magic widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((completion-ignore-case t)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(answer (widget-choose (concat "Operation on "
|
|
|
|
|
(custom-unlispify-tag-name
|
|
|
|
|
(widget-get widget :value)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-menu-filter custom-variable-menu
|
|
|
|
|
widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
event)))
|
|
|
|
|
(if answer
|
|
|
|
|
(funcall answer widget)))))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-edit (widget)
|
|
|
|
|
"Edit value of WIDGET."
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(widget-put widget :custom-form 'edit)
|
|
|
|
|
(custom-redraw widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-edit-lisp (widget)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Edit the Lisp representation of the value of WIDGET."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(widget-put widget :custom-form 'lisp)
|
|
|
|
|
(custom-redraw widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-set (widget)
|
|
|
|
|
"Set the current value for the variable being edited by WIDGET."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let* ((form (widget-get widget :custom-form))
|
|
|
|
|
(state (widget-get widget :custom-state))
|
|
|
|
|
(child (car (widget-get widget :children)))
|
|
|
|
|
(symbol (widget-value widget))
|
|
|
|
|
(set (or (get symbol 'custom-set) 'set-default))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment-widget (widget-get widget :comment-widget))
|
|
|
|
|
(comment (widget-value comment-widget))
|
|
|
|
|
val)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(cond ((eq state 'hidden)
|
1997-09-12 07:04:41 +00:00
|
|
|
|
(error "Cannot set hidden variable"))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
((setq val (widget-apply child :validate))
|
|
|
|
|
(goto-char (widget-get val :from))
|
|
|
|
|
(error "%s" (widget-get val :error)))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
((memq form '(lisp mismatch))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
2002-09-16 15:20:20 +00:00
|
|
|
|
(custom-variable-backup-value widget)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user
|
2005-12-24 15:21:45 +00:00
|
|
|
|
'set (custom-quote (widget-value child)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(funcall set symbol (eval (setq val (widget-value child))))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-value (list val))
|
|
|
|
|
(put symbol 'variable-comment comment)
|
|
|
|
|
(put symbol 'customized-variable-comment comment))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(t
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
2002-09-16 15:20:20 +00:00
|
|
|
|
(custom-variable-backup-value widget)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user
|
2005-12-24 15:21:45 +00:00
|
|
|
|
'set (custom-quote (widget-value child)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(funcall set symbol (setq val (widget-value child)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-value (list (custom-quote val)))
|
|
|
|
|
(put symbol 'variable-comment comment)
|
|
|
|
|
(put symbol 'customized-variable-comment comment)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-variable-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget)))
|
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(defun custom-variable-mark-to-save (widget)
|
|
|
|
|
"Set value and mark for saving the variable edited by WIDGET."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let* ((form (widget-get widget :custom-form))
|
|
|
|
|
(state (widget-get widget :custom-state))
|
|
|
|
|
(child (car (widget-get widget :children)))
|
|
|
|
|
(symbol (widget-value widget))
|
|
|
|
|
(set (or (get symbol 'custom-set) 'set-default))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment-widget (widget-get widget :comment-widget))
|
|
|
|
|
(comment (widget-value comment-widget))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
val)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(cond ((eq state 'hidden)
|
1997-09-12 07:04:41 +00:00
|
|
|
|
(error "Cannot set hidden variable"))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
((setq val (widget-apply child :validate))
|
|
|
|
|
(goto-char (widget-get val :from))
|
2000-11-22 17:52:24 +00:00
|
|
|
|
(error "Saving %s: %s" symbol (widget-get val :error)))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
((memq form '(lisp mismatch))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'saved-value (list (widget-value child)))
|
2002-12-23 18:40:24 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user
|
2005-12-24 15:21:45 +00:00
|
|
|
|
'set (custom-quote (widget-value child)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(funcall set symbol (eval (widget-value child)))
|
|
|
|
|
(put symbol 'variable-comment comment)
|
|
|
|
|
(put symbol 'saved-variable-comment comment))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(t
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'saved-value
|
|
|
|
|
(list (custom-quote (widget-value child))))
|
2002-12-23 18:40:24 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user
|
2005-12-24 15:21:45 +00:00
|
|
|
|
'set (custom-quote (widget-value child)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(funcall set symbol (widget-value child))
|
|
|
|
|
(put symbol 'variable-comment comment)
|
|
|
|
|
(put symbol 'saved-variable-comment comment)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-value nil)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(put symbol 'customized-variable-comment nil)))
|
|
|
|
|
|
|
|
|
|
(defsubst custom-variable-state-set-and-redraw (widget)
|
|
|
|
|
"Set state of variable widget WIDGET and redraw with current settings."
|
|
|
|
|
(custom-variable-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-save (widget)
|
|
|
|
|
"Save value of variable edited by widget WIDGET."
|
|
|
|
|
(custom-variable-mark-to-save widget)
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
(custom-variable-state-set-and-redraw widget))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-variable-reset-saved (widget)
|
2002-09-16 15:20:20 +00:00
|
|
|
|
"Restore the saved value for the variable being edited by WIDGET.
|
2006-01-08 03:55:27 +00:00
|
|
|
|
This also updates the buffer to show that value.
|
2002-09-16 15:20:20 +00:00
|
|
|
|
The value that was current before this operation
|
|
|
|
|
becomes the backup value, so you can get it again."
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(let* ((symbol (widget-value widget))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(set (or (get symbol 'custom-set) 'set-default))
|
|
|
|
|
(value (get symbol 'saved-value))
|
|
|
|
|
(comment (get symbol 'saved-variable-comment)))
|
|
|
|
|
(cond ((or value comment)
|
|
|
|
|
(put symbol 'variable-comment comment)
|
2002-09-16 15:20:20 +00:00
|
|
|
|
(custom-variable-backup-value widget)
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user 'set (car-safe value))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(condition-case nil
|
|
|
|
|
(funcall set symbol (eval (car value)))
|
|
|
|
|
(error nil)))
|
|
|
|
|
(t
|
|
|
|
|
(error "No saved value for %s" symbol)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-value nil)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-variable-comment nil)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;; This call will possibly make the comment invisible
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-redraw widget)))
|
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(defun custom-variable-mark-to-reset-standard (widget)
|
|
|
|
|
"Mark to restore standard setting for the variable edited by widget WIDGET.
|
|
|
|
|
If `custom-reset-standard-variables-list' is nil, save, reset and
|
|
|
|
|
redraw the widget immediately."
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(let* ((symbol (widget-value widget)))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(if (get symbol 'standard-value)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-variable-backup-value widget)
|
1997-05-04 03:47:13 +00:00
|
|
|
|
(error "No standard setting known for %S" symbol))
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(put symbol 'variable-comment nil)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-value nil)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-variable-comment nil)
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user 'reset)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-theme-recalc-variable symbol)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(if (and custom-reset-standard-variables-list
|
|
|
|
|
(or (get symbol 'saved-value) (get symbol 'saved-variable-comment)))
|
|
|
|
|
(progn
|
|
|
|
|
(put symbol 'saved-value nil)
|
|
|
|
|
(put symbol 'saved-variable-comment nil)
|
|
|
|
|
;; Append this to `custom-reset-standard-variables-list' to
|
|
|
|
|
;; have `custom-reset-standard-save-and-update' save setting
|
|
|
|
|
;; to the file, update the widget's state, and redraw it.
|
|
|
|
|
(setq custom-reset-standard-variables-list
|
|
|
|
|
(cons widget custom-reset-standard-variables-list)))
|
|
|
|
|
(when (or (get symbol 'saved-value) (get symbol 'saved-variable-comment))
|
|
|
|
|
(put symbol 'saved-value nil)
|
|
|
|
|
(put symbol 'saved-variable-comment nil)
|
|
|
|
|
(custom-save-all))
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
;; This call will possibly make the comment invisible
|
|
|
|
|
(custom-redraw widget))))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-reset-standard (widget)
|
|
|
|
|
"Restore standard setting for the variable edited by WIDGET.
|
|
|
|
|
This operation eliminates any saved setting for the variable,
|
|
|
|
|
restoring it to the state of a variable that has never been customized.
|
|
|
|
|
The value that was current before this operation
|
|
|
|
|
becomes the backup value, so you can get it again."
|
|
|
|
|
(let (custom-reset-standard-variables-list)
|
|
|
|
|
(custom-variable-mark-to-reset-standard widget)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2002-09-16 15:20:20 +00:00
|
|
|
|
(defun custom-variable-backup-value (widget)
|
|
|
|
|
"Back up the current value for WIDGET's variable.
|
|
|
|
|
The backup value is kept in the car of the `backup-value' property."
|
|
|
|
|
(let* ((symbol (widget-value widget))
|
|
|
|
|
(get (or (get symbol 'custom-get) 'default-value))
|
|
|
|
|
(type (custom-variable-type symbol))
|
|
|
|
|
(conv (widget-convert type))
|
|
|
|
|
(value (if (default-boundp symbol)
|
|
|
|
|
(funcall get symbol)
|
|
|
|
|
(widget-get conv :value))))
|
|
|
|
|
(put symbol 'backup-value (list value))))
|
|
|
|
|
|
|
|
|
|
(defun custom-variable-reset-backup (widget)
|
|
|
|
|
"Restore the backup value for the variable being edited by WIDGET.
|
|
|
|
|
The value that was current before this operation
|
|
|
|
|
becomes the backup value, so you can use this operation repeatedly
|
|
|
|
|
to switch between two values."
|
|
|
|
|
(let* ((symbol (widget-value widget))
|
|
|
|
|
(set (or (get symbol 'custom-set) 'set-default))
|
|
|
|
|
(value (get symbol 'backup-value))
|
|
|
|
|
(comment-widget (widget-get widget :comment-widget))
|
|
|
|
|
(comment (widget-value comment-widget)))
|
|
|
|
|
(if value
|
|
|
|
|
(progn
|
|
|
|
|
(custom-variable-backup-value widget)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-push-theme 'theme-value symbol 'user 'set value)
|
2002-09-16 15:20:20 +00:00
|
|
|
|
(condition-case nil
|
|
|
|
|
(funcall set symbol (car value))
|
|
|
|
|
(error nil)))
|
|
|
|
|
(error "No backup value for %s" symbol))
|
|
|
|
|
(put symbol 'customized-value (list (car value)))
|
|
|
|
|
(put symbol 'variable-comment comment)
|
|
|
|
|
(put symbol 'customized-variable-comment comment)
|
|
|
|
|
(custom-variable-state-set widget)
|
|
|
|
|
;; This call will possibly make the comment invisible
|
|
|
|
|
(custom-redraw widget)))
|
|
|
|
|
|
2007-06-14 23:08:20 +00:00
|
|
|
|
;;; The `custom-visibility' Widget
|
|
|
|
|
|
|
|
|
|
(define-widget 'custom-visibility 'visibility
|
|
|
|
|
"Show or hide a documentation string."
|
|
|
|
|
:button-face 'custom-visibility
|
|
|
|
|
:pressed-face 'custom-visibility
|
|
|
|
|
:mouse-face 'highlight
|
2010-03-12 22:56:30 +00:00
|
|
|
|
:pressed-face 'highlight
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph nil
|
|
|
|
|
:off-glyph nil)
|
2007-06-14 23:08:20 +00:00
|
|
|
|
|
|
|
|
|
(defface custom-visibility
|
|
|
|
|
'((t :height 0.8 :inherit link))
|
|
|
|
|
"Face for the `custom-visibility' widget."
|
|
|
|
|
:version "23.1"
|
|
|
|
|
:group 'custom-faces)
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The `custom-face-edit' Widget.
|
|
|
|
|
|
|
|
|
|
(define-widget 'custom-face-edit 'checklist
|
2010-10-09 03:23:38 +00:00
|
|
|
|
"Widget for editing face attributes.
|
|
|
|
|
The following properties have special meanings for this widget:
|
|
|
|
|
|
|
|
|
|
:value is a plist of face attributes.
|
|
|
|
|
|
|
|
|
|
:default-face-attributes, if non-nil, is a plist of defaults for
|
|
|
|
|
face attributes (as specified by a `default' defface entry)."
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:format "%v"
|
|
|
|
|
:extra-offset 3
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
:button-args '(:help-echo "Control whether this attribute has any effect.")
|
2001-12-31 20:13:54 +00:00
|
|
|
|
:value-to-internal 'custom-face-edit-fix-value
|
|
|
|
|
:match (lambda (widget value)
|
2003-01-29 21:44:18 +00:00
|
|
|
|
(widget-checklist-match widget
|
2001-12-31 20:13:54 +00:00
|
|
|
|
(custom-face-edit-fix-value widget value)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:value-create 'custom-face-edit-value-create
|
2001-10-05 13:03:57 +00:00
|
|
|
|
:convert-widget 'custom-face-edit-convert-widget
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:args (mapcar (lambda (att)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(list 'group :inline t
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:sibling-args (widget-get (nth 1 att) :sibling-args)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(list 'const :format "" :value (nth 0 att))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(nth 1 att)))
|
|
|
|
|
custom-face-attributes))
|
|
|
|
|
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(defun custom-face-edit-value-create (widget)
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(let* ((alist (widget-checklist-match-find
|
|
|
|
|
widget (widget-get widget :value)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(args (widget-get widget :args))
|
|
|
|
|
(show-all (widget-get widget :show-all-attributes))
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(buttons (widget-get widget :buttons))
|
|
|
|
|
(defaults (widget-checklist-match-find
|
|
|
|
|
widget
|
|
|
|
|
(widget-get widget :default-face-attributes)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
entry)
|
|
|
|
|
(unless (looking-back "^ *")
|
|
|
|
|
(insert ?\n))
|
|
|
|
|
(insert-char ?\s (widget-get widget :extra-offset))
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(if (or alist defaults show-all)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(dolist (prop args)
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(setq entry (or (assq prop alist)
|
|
|
|
|
(assq prop defaults)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(if (or entry show-all)
|
|
|
|
|
(widget-checklist-add-item widget prop entry)))
|
|
|
|
|
(insert (propertize "-- Empty face --" 'face 'shadow) ?\n))
|
|
|
|
|
(let ((indent (widget-get widget :indent)))
|
|
|
|
|
(if indent (insert-char ?\s (widget-get widget :indent))))
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'visibility
|
|
|
|
|
:help-echo "Show or hide all face attributes."
|
|
|
|
|
:button-face 'custom-visibility
|
|
|
|
|
:pressed-face 'custom-visibility
|
|
|
|
|
:mouse-face 'highlight
|
|
|
|
|
:on "Hide Unused Attributes" :off "Show All Attributes"
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph nil :off-glyph nil
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:always-active t
|
|
|
|
|
:action 'custom-face-edit-value-visibility-action
|
|
|
|
|
show-all)
|
|
|
|
|
buttons)
|
|
|
|
|
(insert ?\n)
|
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
(widget-put widget :children (nreverse (widget-get widget :children)))))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-face-edit-value-visibility-action (widget &rest _ignore)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
;; Toggle hiding of face attributes.
|
|
|
|
|
(let ((parent (widget-get widget :parent)))
|
|
|
|
|
(widget-put parent :show-all-attributes
|
|
|
|
|
(not (widget-get parent :show-all-attributes)))
|
|
|
|
|
(custom-redraw parent)))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-face-edit-fix-value (_widget value)
|
2002-12-07 20:48:50 +00:00
|
|
|
|
"Ignoring WIDGET, convert :bold and :italic in VALUE to new form.
|
|
|
|
|
Also change :reverse-video to :inverse-video."
|
2010-10-11 04:49:59 +00:00
|
|
|
|
(custom-fix-face-spec value))
|
2001-12-31 20:13:54 +00:00
|
|
|
|
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(defun custom-face-edit-convert-widget (widget)
|
|
|
|
|
"Convert :args as widget types in WIDGET."
|
|
|
|
|
(widget-put
|
|
|
|
|
widget
|
|
|
|
|
:args (mapcar (lambda (arg)
|
|
|
|
|
(widget-convert arg
|
|
|
|
|
:deactivate 'custom-face-edit-deactivate
|
|
|
|
|
:activate 'custom-face-edit-activate
|
|
|
|
|
:delete 'custom-face-edit-delete))
|
|
|
|
|
(widget-get widget :args)))
|
|
|
|
|
widget)
|
|
|
|
|
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(defconst custom-face-edit (widget-convert 'custom-face-edit)
|
|
|
|
|
"Converted version of the `custom-face-edit' widget.")
|
|
|
|
|
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(defun custom-face-edit-deactivate (widget)
|
|
|
|
|
"Make face widget WIDGET inactive for user modifications."
|
|
|
|
|
(unless (widget-get widget :inactive)
|
|
|
|
|
(let ((tag (custom-face-edit-attribute-tag widget))
|
|
|
|
|
(from (copy-marker (widget-get widget :from)))
|
|
|
|
|
(value (widget-value widget))
|
|
|
|
|
(inhibit-read-only t)
|
|
|
|
|
(inhibit-modification-hooks t))
|
|
|
|
|
(save-excursion
|
|
|
|
|
(goto-char from)
|
|
|
|
|
(widget-default-delete widget)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(insert tag ": " (propertize "--" 'face 'shadow) "\n")
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(widget-put widget :inactive
|
|
|
|
|
(cons value (cons from (- (point) from))))))))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-activate (widget)
|
2007-09-16 03:06:30 +00:00
|
|
|
|
"Make face widget WIDGET active for user modifications."
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(let ((inactive (widget-get widget :inactive))
|
|
|
|
|
(inhibit-read-only t)
|
|
|
|
|
(inhibit-modification-hooks t))
|
|
|
|
|
(when (consp inactive)
|
|
|
|
|
(save-excursion
|
|
|
|
|
(goto-char (car (cdr inactive)))
|
|
|
|
|
(delete-region (point) (+ (point) (cdr (cdr inactive))))
|
|
|
|
|
(widget-put widget :inactive nil)
|
|
|
|
|
(widget-apply widget :create)
|
|
|
|
|
(widget-value-set widget (car inactive))
|
|
|
|
|
(widget-setup)))))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-delete (widget)
|
2004-05-28 18:59:01 +00:00
|
|
|
|
"Remove WIDGET from the buffer."
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(let ((inactive (widget-get widget :inactive))
|
|
|
|
|
(inhibit-read-only t)
|
|
|
|
|
(inhibit-modification-hooks t))
|
|
|
|
|
(if (not inactive)
|
|
|
|
|
;; Widget is alive, we don't have to do anything special
|
|
|
|
|
(widget-default-delete widget)
|
2011-11-27 18:17:40 +00:00
|
|
|
|
;; WIDGET is already deleted because we did so to deactivate it;
|
2001-10-05 13:03:57 +00:00
|
|
|
|
;; now just get rid of the label we put in its place.
|
|
|
|
|
(delete-region (car (cdr inactive))
|
|
|
|
|
(+ (car (cdr inactive)) (cdr (cdr inactive))))
|
|
|
|
|
(widget-put widget :inactive nil))))
|
2003-01-29 21:44:18 +00:00
|
|
|
|
|
2001-10-05 13:03:57 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-attribute-tag (widget)
|
Fix typos in docstrings.
* cus-edit.el (customize-apropos-options, custom-comment)
(custom-comment-tag, custom-face-edit-attribute-tag):
Fix typos in docstrings.
(custom-buffer-done-kill): Remove * from defcustom docstring.
(custom-file): Fix typo in doc of defcustom choice.
* frame.el (display-visual-class): Fix typo in docstring.
(initial-frame-alist, minibuffer-frame-alist, pop-up-frame-alist)
(special-display-frame-alist, show-trailing-whitespace)
(auto-hscroll-mode, blink-cursor-delay, blink-cursor-interval)
(display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
Remove * from defcustom docstrings.
* md4.el (md4-buffer): Fix typo in docstring.
(md4, md4-64): Doc fixes.
(md4-pack-int32): Reflow docstring.
* paths.el (rmail-file-name): Remove * from defcustom docstring.
(prune-directory-list, gnus-nntp-service): Fix typos in docstrings.
* rect.el (open-rectangle): Reflow docstring.
(spaces-string): Fix docstring typo. Use "?\s" instead of "? ".
* select.el (x-get-cut-buffer): Fix typo in docstring.
* timezone.el (timezone-zone-to-minute, timezone-time-from-absolute)
(timezone-time-zone-from-absolute, timezone-leap-year-p):
Fix typos in docstrings.
* emacs-lisp/assoc.el (asort, aelement, aput, aget, amake):
Fix typos in docstrings.
2008-11-01 01:24:33 +00:00
|
|
|
|
"Return the first :tag property in WIDGET or one of its children."
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(let ((tag (widget-get widget :tag)))
|
|
|
|
|
(or (and (not (equal tag "")) tag)
|
|
|
|
|
(let ((children (widget-get widget :children)))
|
|
|
|
|
(while (and (null tag) children)
|
|
|
|
|
(setq tag (custom-face-edit-attribute-tag (pop children))))
|
|
|
|
|
tag))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The `custom-display' Widget.
|
|
|
|
|
|
|
|
|
|
(define-widget 'custom-display 'menu-choice
|
|
|
|
|
"Select a display type."
|
|
|
|
|
:tag "Display"
|
|
|
|
|
:value t
|
|
|
|
|
:help-echo "Specify frames where the face attributes should be used."
|
|
|
|
|
:args '((const :tag "all" t)
|
2004-12-13 19:40:25 +00:00
|
|
|
|
(const :tag "defaults" default)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(checklist
|
|
|
|
|
:offset 0
|
|
|
|
|
:extra-offset 9
|
|
|
|
|
:args ((group :sibling-args (:help-echo "\
|
|
|
|
|
Only match the specified window systems.")
|
|
|
|
|
(const :format "Type: "
|
|
|
|
|
type)
|
|
|
|
|
(checklist :inline t
|
|
|
|
|
:offset 0
|
|
|
|
|
(const :format "X "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
The X11 Window System.")
|
|
|
|
|
x)
|
|
|
|
|
(const :format "PM "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
OS/2 Presentation Manager.")
|
|
|
|
|
pm)
|
1997-09-02 19:40:12 +00:00
|
|
|
|
(const :format "W32 "
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:sibling-args (:help-echo "\
|
1997-09-02 19:40:12 +00:00
|
|
|
|
Windows NT/9X.")
|
|
|
|
|
w32)
|
2008-07-15 18:15:18 +00:00
|
|
|
|
(const :format "NS "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
GNUstep or Macintosh OS Cocoa interface.")
|
|
|
|
|
ns)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(const :format "DOS "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Plain MS-DOS.")
|
|
|
|
|
pc)
|
|
|
|
|
(const :format "TTY%n"
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Plain text terminals.")
|
|
|
|
|
tty)))
|
|
|
|
|
(group :sibling-args (:help-echo "\
|
|
|
|
|
Only match the frames with the specified color support.")
|
|
|
|
|
(const :format "Class: "
|
|
|
|
|
class)
|
|
|
|
|
(checklist :inline t
|
|
|
|
|
:offset 0
|
|
|
|
|
(const :format "Color "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Match color frames.")
|
|
|
|
|
color)
|
|
|
|
|
(const :format "Grayscale "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Match grayscale frames.")
|
|
|
|
|
grayscale)
|
|
|
|
|
(const :format "Monochrome%n"
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Match frames with no color support.")
|
|
|
|
|
mono)))
|
|
|
|
|
(group :sibling-args (:help-echo "\
|
2004-06-06 02:45:28 +00:00
|
|
|
|
The minimum number of colors the frame should support.")
|
|
|
|
|
(const :format "" min-colors)
|
|
|
|
|
(integer :tag "Minimum number of colors" ))
|
|
|
|
|
(group :sibling-args (:help-echo "\
|
1997-04-07 13:42:59 +00:00
|
|
|
|
Only match frames with the specified intensity.")
|
|
|
|
|
(const :format "\
|
|
|
|
|
Background brightness: "
|
|
|
|
|
background)
|
|
|
|
|
(checklist :inline t
|
|
|
|
|
:offset 0
|
|
|
|
|
(const :format "Light "
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Match frames with light backgrounds.")
|
|
|
|
|
light)
|
|
|
|
|
(const :format "Dark\n"
|
|
|
|
|
:sibling-args (:help-echo "\
|
|
|
|
|
Match frames with dark backgrounds.")
|
2002-06-10 02:47:18 +00:00
|
|
|
|
dark)))
|
|
|
|
|
(group :sibling-args (:help-echo "\
|
|
|
|
|
Only match frames that support the specified face attributes.")
|
|
|
|
|
(const :format "Supports attributes:" supports)
|
2002-06-10 02:51:39 +00:00
|
|
|
|
(custom-face-edit :inline t :format "%n%v"))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
;;; The `custom-face' Widget.
|
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-face-tag
|
2008-07-29 17:14:45 +00:00
|
|
|
|
`((t :inherit custom-variable-tag))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Face used for face tags."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-face-tag-face 'custom-face-tag "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-12-04 05:49:21 +00:00
|
|
|
|
(defcustom custom-face-default-form 'selected
|
|
|
|
|
"Default form of displaying face definition."
|
|
|
|
|
:type '(choice (const all)
|
|
|
|
|
(const selected)
|
|
|
|
|
(const lisp))
|
1998-04-20 02:34:53 +00:00
|
|
|
|
:group 'custom-buffer
|
|
|
|
|
:version "20.3")
|
1997-12-04 05:49:21 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(define-widget 'custom-face 'custom
|
2010-10-08 00:05:12 +00:00
|
|
|
|
"Widget for customizing a face.
|
|
|
|
|
The following properties have special meanings for this widget:
|
|
|
|
|
|
2010-10-09 03:23:38 +00:00
|
|
|
|
:value is the face name (a symbol).
|
|
|
|
|
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:custom-form should be a symbol describing how to display and
|
|
|
|
|
edit the face attributes---either `selected' (attributes for
|
|
|
|
|
selected display only), `all' (all attributes), `lisp' (as a
|
|
|
|
|
Lisp sexp), or `mismatch' (should not happen); if nil, use
|
2010-10-09 03:23:38 +00:00
|
|
|
|
the return value of `custom-face-default-form'.
|
|
|
|
|
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:custom-style describes the widget interface style; nil is the
|
|
|
|
|
default style, while `simple' means a simpler interface that
|
|
|
|
|
inhibits the magic custom-state widget.
|
2010-10-16 00:16:34 +00:00
|
|
|
|
|
|
|
|
|
:sample-indent, if non-nil, is the number of columns to which to
|
|
|
|
|
indent the face sample (an integer).
|
2010-10-09 03:23:38 +00:00
|
|
|
|
|
2010-10-16 00:16:34 +00:00
|
|
|
|
:shown-value, if non-nil, is the face spec to display as the value
|
2010-10-16 20:36:20 +00:00
|
|
|
|
of the widget, instead of the current face spec."
|
2008-11-06 03:46:24 +00:00
|
|
|
|
:sample-face 'custom-face-tag
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:help-echo "Set or reset this face."
|
2000-04-26 17:12:34 +00:00
|
|
|
|
:documentation-property #'face-doc-string
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:value-create 'custom-face-value-create
|
|
|
|
|
:action 'custom-face-action
|
1997-06-01 11:58:17 +00:00
|
|
|
|
:custom-category 'face
|
2010-10-08 00:05:12 +00:00
|
|
|
|
:custom-form nil
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-set 'custom-face-set
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-save 'custom-face-mark-to-save
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-reset-current 'custom-redraw
|
|
|
|
|
:custom-reset-saved 'custom-face-reset-saved
|
1997-05-30 00:39:40 +00:00
|
|
|
|
:custom-reset-standard 'custom-face-reset-standard
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-reset-standard 'custom-face-mark-to-reset-standard
|
2002-07-16 13:37:21 +00:00
|
|
|
|
:custom-standard-value 'custom-face-standard-value
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-state-set-and-redraw 'custom-face-state-set-and-redraw
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-menu 'custom-face-menu-create)
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(define-widget 'custom-face-all 'editable-list
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"An editable list of display specifications and attributes."
|
|
|
|
|
:entry-format "%i %d %v"
|
|
|
|
|
:insert-button-args '(:help-echo "Insert new display specification here.")
|
|
|
|
|
:append-button-args '(:help-echo "Append new display specification here.")
|
|
|
|
|
:delete-button-args '(:help-echo "Delete this display specification.")
|
|
|
|
|
:args '((group :format "%v" custom-display custom-face-edit)))
|
|
|
|
|
|
|
|
|
|
(defconst custom-face-all (widget-convert 'custom-face-all)
|
|
|
|
|
"Converted version of the `custom-face-all' widget.")
|
|
|
|
|
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(defun custom-filter-face-spec (spec filter-index &optional default-filter)
|
2000-11-24 09:09:55 +00:00
|
|
|
|
"Return a canonicalized version of SPEC using.
|
|
|
|
|
FILTER-INDEX is the index in the entry for each attribute in
|
|
|
|
|
`custom-face-attributes' at which the appropriate filter function can be
|
|
|
|
|
found, and DEFAULT-FILTER is the filter to apply for attributes that
|
|
|
|
|
don't specify one."
|
|
|
|
|
(mapcar (lambda (entry)
|
|
|
|
|
;; Filter a single face-spec entry
|
|
|
|
|
(let ((tests (car entry))
|
|
|
|
|
(unfiltered-attrs
|
|
|
|
|
;; Handle both old- and new-style attribute syntax
|
|
|
|
|
(if (listp (car (cdr entry)))
|
|
|
|
|
(car (cdr entry))
|
|
|
|
|
(cdr entry)))
|
|
|
|
|
(filtered-attrs nil))
|
|
|
|
|
;; Filter each face attribute
|
|
|
|
|
(while unfiltered-attrs
|
|
|
|
|
(let* ((attr (pop unfiltered-attrs))
|
|
|
|
|
(pre-filtered-value (pop unfiltered-attrs))
|
|
|
|
|
(filter
|
|
|
|
|
(or (nth filter-index (assq attr custom-face-attributes))
|
|
|
|
|
default-filter))
|
|
|
|
|
(filtered-value
|
|
|
|
|
(if filter
|
|
|
|
|
(funcall filter pre-filtered-value)
|
|
|
|
|
pre-filtered-value)))
|
|
|
|
|
(push filtered-value filtered-attrs)
|
|
|
|
|
(push attr filtered-attrs)))
|
|
|
|
|
;;
|
|
|
|
|
(list tests filtered-attrs)))
|
|
|
|
|
spec))
|
|
|
|
|
|
|
|
|
|
(defun custom-pre-filter-face-spec (spec)
|
|
|
|
|
"Return SPEC changed as necessary for editing by the face customization widget.
|
|
|
|
|
SPEC must be a full face spec."
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(custom-filter-face-spec spec 2))
|
2000-11-24 09:09:55 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-post-filter-face-spec (spec)
|
|
|
|
|
"Return the customized SPEC in a form suitable for setting the face."
|
2001-10-05 13:03:57 +00:00
|
|
|
|
(custom-filter-face-spec spec 3))
|
2000-11-24 09:09:55 +00:00
|
|
|
|
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(defun custom-face-widget-to-spec (widget)
|
|
|
|
|
"Return a face spec corresponding to WIDGET.
|
|
|
|
|
WIDGET should be a `custom-face' widget."
|
|
|
|
|
(unless (eq (widget-type widget) 'custom-face)
|
|
|
|
|
(error "Invalid widget"))
|
|
|
|
|
(let ((child (car (widget-get widget :children))))
|
|
|
|
|
(custom-post-filter-face-spec
|
|
|
|
|
(if (eq (widget-type child) 'custom-face-edit)
|
|
|
|
|
`((t ,(widget-value child)))
|
|
|
|
|
(widget-value child)))))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-get-current-spec (face)
|
|
|
|
|
(let ((spec (or (get face 'customized-face)
|
|
|
|
|
(get face 'saved-face)
|
|
|
|
|
(get face 'face-defface-spec)
|
|
|
|
|
;; Attempt to construct it.
|
|
|
|
|
`((t ,(custom-face-attributes-get
|
|
|
|
|
face (selected-frame)))))))
|
|
|
|
|
;; If the user has changed this face in some other way,
|
|
|
|
|
;; edit it as the user has specified it.
|
|
|
|
|
(if (not (face-spec-match-p face spec (selected-frame)))
|
|
|
|
|
(setq spec `((t ,(face-attr-construct face (selected-frame))))))
|
|
|
|
|
(custom-pre-filter-face-spec spec)))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-toggle-hide-face (visibility-widget &rest _ignore)
|
2010-10-16 20:36:20 +00:00
|
|
|
|
"Toggle the visibility of a `custom-face' parent widget.
|
|
|
|
|
By default, this signals an error if the parent has unsaved
|
|
|
|
|
changes. If the parent has a `simple' :custom-style property,
|
|
|
|
|
the present value is saved to its :shown-value property instead."
|
|
|
|
|
(let ((widget (widget-get visibility-widget :parent)))
|
|
|
|
|
(unless (eq (widget-type widget) 'custom-face)
|
|
|
|
|
(error "Invalid widget type"))
|
|
|
|
|
(custom-load-widget widget)
|
|
|
|
|
(let ((state (widget-get widget :custom-state)))
|
|
|
|
|
(if (eq state 'hidden)
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
;; In normal interface, widget can't be hidden if modified.
|
|
|
|
|
(when (memq state '(invalid modified set))
|
|
|
|
|
(if (eq (widget-get widget :custom-style) 'simple)
|
|
|
|
|
(widget-put widget :shown-value
|
|
|
|
|
(custom-face-widget-to-spec widget))
|
|
|
|
|
(error "There are unsaved changes")))
|
|
|
|
|
(widget-put widget :documentation-shown nil)
|
|
|
|
|
(widget-put widget :custom-state 'hidden))
|
|
|
|
|
(custom-redraw widget)
|
|
|
|
|
(widget-setup))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-face-value-create (widget)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Create a list of the display specifications for WIDGET."
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(let* ((buttons (widget-get widget :buttons))
|
|
|
|
|
(symbol (widget-get widget :value))
|
|
|
|
|
(tag (or (widget-get widget :tag)
|
|
|
|
|
(prin1-to-string symbol)))
|
|
|
|
|
(hiddenp (eq (widget-get widget :custom-state) 'hidden))
|
2010-10-16 20:36:20 +00:00
|
|
|
|
(style (widget-get widget :custom-style))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
children)
|
|
|
|
|
|
|
|
|
|
(if (eq custom-buffer-style 'tree)
|
|
|
|
|
|
|
|
|
|
;; Draw a tree-style `custom-face' widget
|
|
|
|
|
(progn
|
|
|
|
|
(insert (widget-get widget :custom-prefix)
|
|
|
|
|
(if (widget-get widget :custom-last) " `--- " " |--- "))
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-browse-face-tag)
|
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons))
|
|
|
|
|
|
|
|
|
|
;; Draw an ordinary `custom-face' widget
|
|
|
|
|
(let ((opoint (point)))
|
|
|
|
|
;; Visibility indicator.
|
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-visibility
|
|
|
|
|
:help-echo "Hide or show this face."
|
|
|
|
|
:on "Hide" :off "Show"
|
2011-01-09 21:05:53 +00:00
|
|
|
|
:on-glyph "down" :off-glyph "right"
|
2010-10-16 20:36:20 +00:00
|
|
|
|
:action 'custom-toggle-hide-face
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(not hiddenp))
|
|
|
|
|
buttons)
|
|
|
|
|
;; Face name (tag).
|
|
|
|
|
(insert " " tag)
|
|
|
|
|
(widget-specify-sample widget opoint (point)))
|
|
|
|
|
(insert
|
|
|
|
|
(cond ((eq custom-buffer-style 'face) " ")
|
|
|
|
|
((string-match "face\\'" tag) ":")
|
|
|
|
|
(t " face: ")))
|
|
|
|
|
|
|
|
|
|
;; Face sample.
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(let ((sample-indent (widget-get widget :sample-indent))
|
|
|
|
|
(indent-tabs-mode nil))
|
|
|
|
|
(and sample-indent
|
|
|
|
|
(<= (current-column) sample-indent)
|
|
|
|
|
(indent-to-column sample-indent)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'item
|
2010-10-16 00:16:34 +00:00
|
|
|
|
:format "[%{%t%}]"
|
|
|
|
|
:sample-face (let ((spec (widget-get widget :shown-value)))
|
|
|
|
|
(if spec (face-spec-choose spec) symbol))
|
|
|
|
|
:tag "sample")
|
2010-10-08 00:05:12 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert "\n")
|
2010-10-16 00:16:34 +00:00
|
|
|
|
|
|
|
|
|
;; Magic.
|
2010-10-16 20:36:20 +00:00
|
|
|
|
(unless (eq (widget-get widget :custom-style) 'simple)
|
2010-10-16 00:16:34 +00:00
|
|
|
|
(let ((magic (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-magic nil)))
|
|
|
|
|
(widget-put widget :custom-magic magic)
|
|
|
|
|
(push magic buttons)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
|
|
|
|
|
;; Update buttons.
|
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
|
|
|
|
|
;; Insert documentation.
|
2010-10-16 20:36:20 +00:00
|
|
|
|
(unless (and hiddenp (eq style 'simple))
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(widget-put widget :documentation-indent 3)
|
|
|
|
|
(widget-add-documentation-string-button
|
|
|
|
|
widget :visibility-widget 'custom-visibility)
|
|
|
|
|
;; The comment field
|
|
|
|
|
(unless hiddenp
|
|
|
|
|
(let* ((comment (get symbol 'face-comment))
|
|
|
|
|
(comment-widget
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget 'custom-comment
|
|
|
|
|
:parent widget
|
|
|
|
|
:value (or comment ""))))
|
|
|
|
|
(widget-put widget :comment-widget comment-widget)
|
|
|
|
|
(push comment-widget children))))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
|
|
|
|
|
;; Editor.
|
|
|
|
|
(unless (eq (preceding-char) ?\n)
|
|
|
|
|
(insert "\n"))
|
|
|
|
|
(unless hiddenp
|
|
|
|
|
(custom-load-widget widget)
|
|
|
|
|
(unless (widget-get widget :custom-form)
|
|
|
|
|
(widget-put widget :custom-form custom-face-default-form))
|
|
|
|
|
|
2010-10-16 00:16:34 +00:00
|
|
|
|
(let* ((spec (or (widget-get widget :shown-value)
|
|
|
|
|
(custom-face-get-current-spec symbol)))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(form (widget-get widget :custom-form))
|
|
|
|
|
(indent (widget-get widget :indent))
|
2010-10-09 03:23:38 +00:00
|
|
|
|
face-alist face-entry spec-default spec-match editor)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
|
2010-10-09 03:23:38 +00:00
|
|
|
|
;; Find a display in SPEC matching the selected display.
|
|
|
|
|
;; This will use the usual face customization interface.
|
|
|
|
|
(setq face-alist spec)
|
|
|
|
|
(when (eq (car-safe (car-safe face-alist)) 'default)
|
|
|
|
|
(setq spec-default (pop face-alist)))
|
|
|
|
|
|
|
|
|
|
(while (and face-alist (listp face-alist) (null spec-match))
|
|
|
|
|
(setq face-entry (car face-alist))
|
|
|
|
|
(and (listp face-entry)
|
|
|
|
|
(face-spec-set-match-display (car face-entry)
|
|
|
|
|
(selected-frame))
|
|
|
|
|
(widget-apply custom-face-edit :match (cadr face-entry))
|
|
|
|
|
(setq spec-match face-entry))
|
|
|
|
|
(setq face-alist (cdr face-alist)))
|
|
|
|
|
|
|
|
|
|
;; Insert the appropriate editing widget.
|
|
|
|
|
(setq editor
|
|
|
|
|
(cond
|
|
|
|
|
((and (eq form 'selected)
|
|
|
|
|
(or spec-match spec-default))
|
|
|
|
|
(when indent (insert-char ?\s indent))
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget 'custom-face-edit
|
|
|
|
|
:value (cadr spec-match)
|
|
|
|
|
:default-face-attributes (cadr spec-default)))
|
|
|
|
|
((and (not (eq form 'lisp))
|
|
|
|
|
(widget-apply custom-face-all :match spec))
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget 'custom-face-all :value spec))
|
|
|
|
|
(t
|
|
|
|
|
(when indent
|
|
|
|
|
(insert-char ?\s indent))
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget 'sexp :value spec))))
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(custom-face-state-set widget)
|
2010-10-09 03:23:38 +00:00
|
|
|
|
(push editor children)
|
2010-10-08 00:05:12 +00:00
|
|
|
|
(widget-put widget :children children))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defvar custom-face-menu
|
2006-01-12 02:25:59 +00:00
|
|
|
|
`(("Set for Current Session" custom-face-set)
|
2007-10-12 02:56:23 +00:00
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-19 23:26:04 +00:00
|
|
|
|
'(("Save for Future Sessions" custom-face-save)))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Undo Edits" custom-redraw
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(memq (widget-get widget :custom-state) '(modified changed))))
|
|
|
|
|
("Reset to Saved" custom-face-reset-saved
|
2006-01-04 17:23:23 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(or (get (widget-value widget) 'saved-face)
|
|
|
|
|
(get (widget-value widget) 'saved-face-comment))))
|
2007-10-12 02:56:23 +00:00
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Erase Customization" custom-face-reset-standard
|
2006-01-04 15:56:08 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(get (widget-value widget) 'face-defface-spec)))))
|
2006-01-04 21:23:20 +00:00
|
|
|
|
("---" ignore ignore)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Add Comment" custom-comment-show custom-comment-invisible-p)
|
|
|
|
|
("---" ignore ignore)
|
|
|
|
|
("For Current Display" custom-face-edit-selected
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(not (eq (widget-get widget :custom-form) 'selected))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("For All Kinds of Displays" custom-face-edit-all
|
|
|
|
|
(lambda (widget)
|
|
|
|
|
(not (eq (widget-get widget :custom-form) 'all))))
|
|
|
|
|
("Show Lisp Expression" custom-face-edit-lisp
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(not (eq (widget-get widget :custom-form) 'lisp)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Alist of actions for the `custom-face' widget.
|
1997-04-24 16:53:55 +00:00
|
|
|
|
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
|
|
|
|
|
the menu entry, ACTION is the function to call on the widget when the
|
|
|
|
|
menu is selected, and FILTER is a predicate which takes a `custom-face'
|
|
|
|
|
widget as an argument, and returns non-nil if ACTION is valid on that
|
1999-11-26 19:47:26 +00:00
|
|
|
|
widget. If FILTER is nil, ACTION is always valid.")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-selected (widget)
|
|
|
|
|
"Edit selected attributes of the value of WIDGET."
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(widget-put widget :custom-form 'selected)
|
|
|
|
|
(custom-redraw widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-all (widget)
|
|
|
|
|
"Edit all attributes of the value of WIDGET."
|
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(widget-put widget :custom-form 'all)
|
|
|
|
|
(custom-redraw widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-edit-lisp (widget)
|
2000-03-12 18:50:49 +00:00
|
|
|
|
"Edit the Lisp representation of the value of WIDGET."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put widget :custom-state 'unknown)
|
|
|
|
|
(widget-put widget :custom-form 'lisp)
|
|
|
|
|
(custom-redraw widget))
|
|
|
|
|
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(defun custom-face-state (face)
|
|
|
|
|
"Return the current state of the face FACE.
|
|
|
|
|
This is one of `set', `saved', `changed', `themed', or `rogue'."
|
|
|
|
|
(let* ((comment (get face 'face-comment))
|
2003-05-28 11:12:24 +00:00
|
|
|
|
(state
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(cond
|
|
|
|
|
((or (get face 'customized-face)
|
|
|
|
|
(get face 'customized-face-comment))
|
|
|
|
|
(if (equal (get face 'customized-face-comment) comment)
|
|
|
|
|
'set
|
|
|
|
|
'changed))
|
|
|
|
|
((or (get face 'saved-face)
|
|
|
|
|
(get face 'saved-face-comment))
|
|
|
|
|
(if (equal (get face 'saved-face-comment) comment)
|
|
|
|
|
(cond
|
|
|
|
|
((eq 'user (caar (get face 'theme-face)))
|
|
|
|
|
'saved)
|
|
|
|
|
((eq 'changed (caar (get face 'theme-face)))
|
|
|
|
|
'changed)
|
|
|
|
|
(t 'themed))
|
|
|
|
|
'changed))
|
|
|
|
|
((get face 'face-defface-spec)
|
|
|
|
|
(if (equal comment nil)
|
|
|
|
|
'standard
|
|
|
|
|
'changed))
|
|
|
|
|
(t 'rogue))))
|
|
|
|
|
;; If the user called set-face-attribute to change the default for
|
|
|
|
|
;; new frames, this face is "set outside of Customize".
|
2003-05-28 11:12:24 +00:00
|
|
|
|
(if (and (not (eq state 'rogue))
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(get face 'face-modified))
|
|
|
|
|
'changed
|
|
|
|
|
state)))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-state-set (widget)
|
|
|
|
|
"Set the state of WIDGET."
|
|
|
|
|
(widget-put widget :custom-state
|
|
|
|
|
(custom-face-state (widget-value widget))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-face-action (widget &optional event)
|
|
|
|
|
"Show the menu for `custom-face' WIDGET.
|
|
|
|
|
Optional EVENT is the location for the menu."
|
|
|
|
|
(if (eq (widget-get widget :custom-state) 'hidden)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-toggle-hide widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((completion-ignore-case t)
|
|
|
|
|
(symbol (widget-get widget :value))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(answer (widget-choose (concat "Operation on "
|
|
|
|
|
(custom-unlispify-tag-name symbol))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-menu-filter custom-face-menu
|
|
|
|
|
widget)
|
|
|
|
|
event)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(if answer
|
|
|
|
|
(funcall answer widget)))))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-set (widget)
|
|
|
|
|
"Make the face attributes in WIDGET take effect."
|
|
|
|
|
(let* ((symbol (widget-value widget))
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(value (custom-face-widget-to-spec widget))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment-widget (widget-get widget :comment-widget))
|
|
|
|
|
(comment (widget-value comment-widget)))
|
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-face value)
|
2006-03-21 16:44:10 +00:00
|
|
|
|
(custom-push-theme 'theme-face symbol 'user 'set value)
|
2000-11-24 09:09:55 +00:00
|
|
|
|
(if (face-spec-choose value)
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol value t)
|
2000-11-24 09:09:55 +00:00
|
|
|
|
;; face-set-spec ignores empty attribute lists, so just give it
|
|
|
|
|
;; something harmless instead.
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol '((t :foreground unspecified)) t))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-face-comment comment)
|
|
|
|
|
(put symbol 'face-comment comment)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-face-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget)))
|
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(defun custom-face-mark-to-save (widget)
|
|
|
|
|
"Mark for saving the face edited by WIDGET."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((symbol (widget-value widget))
|
2010-10-09 21:54:20 +00:00
|
|
|
|
(value (custom-face-widget-to-spec widget))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(comment-widget (widget-get widget :comment-widget))
|
|
|
|
|
(comment (widget-value comment-widget)))
|
|
|
|
|
(when (equal comment "")
|
|
|
|
|
(setq comment nil)
|
|
|
|
|
;; Make the comment invisible by hand if it's empty
|
1999-09-28 22:09:42 +00:00
|
|
|
|
(custom-comment-hide comment-widget))
|
2006-01-04 20:16:50 +00:00
|
|
|
|
(custom-push-theme 'theme-face symbol 'user 'set value)
|
2001-01-20 01:24:15 +00:00
|
|
|
|
(if (face-spec-choose value)
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol value t)
|
2001-01-20 01:24:15 +00:00
|
|
|
|
;; face-set-spec ignores empty attribute lists, so just give it
|
|
|
|
|
;; something harmless instead.
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol '((t :foreground unspecified)) t))
|
2002-07-16 13:37:21 +00:00
|
|
|
|
(unless (eq (widget-get widget :custom-state) 'standard)
|
|
|
|
|
(put symbol 'saved-face value))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-face nil)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'face-comment comment)
|
|
|
|
|
(put symbol 'customized-face-comment nil)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(put symbol 'saved-face-comment comment)))
|
|
|
|
|
|
|
|
|
|
(defsubst custom-face-state-set-and-redraw (widget)
|
|
|
|
|
"Set state of face widget WIDGET and redraw with current settings."
|
|
|
|
|
(custom-face-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-save (widget)
|
|
|
|
|
"Save the face edited by WIDGET."
|
|
|
|
|
(custom-face-mark-to-save widget)
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
(custom-face-state-set-and-redraw widget))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2006-01-19 23:26:04 +00:00
|
|
|
|
;; For backward compatibility.
|
|
|
|
|
(define-obsolete-function-alias 'custom-face-save-command 'custom-face-save
|
|
|
|
|
"22.1")
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-face-reset-saved (widget)
|
|
|
|
|
"Restore WIDGET to the face's default attributes."
|
|
|
|
|
(let* ((symbol (widget-value widget))
|
|
|
|
|
(child (car (widget-get widget :children)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(value (get symbol 'saved-face))
|
|
|
|
|
(comment (get symbol 'saved-face-comment))
|
|
|
|
|
(comment-widget (widget-get widget :comment-widget)))
|
|
|
|
|
(unless (or value comment)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(error "No saved value for this face"))
|
|
|
|
|
(put symbol 'customized-face nil)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-face-comment nil)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-push-theme 'theme-face symbol 'user 'set value)
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol value t)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'face-comment comment)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-value-set child value)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;; This call manages the comment visibility
|
|
|
|
|
(widget-value-set comment-widget (or comment ""))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-face-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget)))
|
|
|
|
|
|
2002-07-16 13:37:21 +00:00
|
|
|
|
(defun custom-face-standard-value (widget)
|
|
|
|
|
(get (widget-value widget) 'face-defface-spec))
|
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(defun custom-face-mark-to-reset-standard (widget)
|
|
|
|
|
"Restore widget WIDGET to the face's standard attribute values.
|
|
|
|
|
If `custom-reset-standard-faces-list' is nil, save, reset and
|
|
|
|
|
redraw the widget immediately."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((symbol (widget-value widget))
|
|
|
|
|
(child (car (widget-get widget :children)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(value (get symbol 'face-defface-spec))
|
|
|
|
|
(comment-widget (widget-get widget :comment-widget)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(unless value
|
1997-05-04 03:47:13 +00:00
|
|
|
|
(error "No standard setting for this face"))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(put symbol 'customized-face nil)
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(put symbol 'customized-face-comment nil)
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(custom-push-theme 'theme-face symbol 'user 'reset)
|
2007-12-30 03:36:05 +00:00
|
|
|
|
(face-spec-set symbol value t)
|
2005-12-24 06:45:16 +00:00
|
|
|
|
(custom-theme-recalc-face symbol)
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(if (and custom-reset-standard-faces-list
|
|
|
|
|
(or (get symbol 'saved-face) (get symbol 'saved-face-comment)))
|
|
|
|
|
;; Do this later.
|
|
|
|
|
(progn
|
|
|
|
|
(put symbol 'saved-face nil)
|
|
|
|
|
(put symbol 'saved-face-comment nil)
|
|
|
|
|
;; Append this to `custom-reset-standard-faces-list' and have
|
|
|
|
|
;; `custom-reset-standard-save-and-update' save setting to the
|
|
|
|
|
;; file, update the widget's state, and redraw it.
|
|
|
|
|
(setq custom-reset-standard-faces-list
|
|
|
|
|
(cons widget custom-reset-standard-faces-list)))
|
|
|
|
|
(when (or (get symbol 'saved-face) (get symbol 'saved-face-comment))
|
|
|
|
|
(put symbol 'saved-face nil)
|
|
|
|
|
(put symbol 'saved-face-comment nil)
|
|
|
|
|
(custom-save-all))
|
|
|
|
|
(put symbol 'face-comment nil)
|
|
|
|
|
(widget-value-set child
|
|
|
|
|
(custom-pre-filter-face-spec
|
|
|
|
|
(list (list t (custom-face-attributes-get
|
|
|
|
|
symbol nil)))))
|
|
|
|
|
;; This call manages the comment visibility
|
|
|
|
|
(widget-value-set comment-widget "")
|
|
|
|
|
(custom-face-state-set widget)
|
|
|
|
|
(custom-redraw-magic widget))))
|
|
|
|
|
|
|
|
|
|
(defun custom-face-reset-standard (widget)
|
|
|
|
|
"Restore WIDGET to the face's standard attribute values.
|
|
|
|
|
This operation eliminates any saved attributes for the face,
|
|
|
|
|
restoring it to the state of a face that has never been customized."
|
|
|
|
|
(let (custom-reset-standard-faces-list)
|
|
|
|
|
(custom-face-mark-to-reset-standard widget)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
;;; The `face' Widget.
|
|
|
|
|
|
2005-02-27 10:34:05 +00:00
|
|
|
|
(defvar widget-face-prompt-value-history nil
|
|
|
|
|
"History of input to `widget-face-prompt-value'.")
|
|
|
|
|
|
2005-04-05 06:40:12 +00:00
|
|
|
|
(define-widget 'face 'symbol
|
|
|
|
|
"A Lisp face name (with sample)."
|
2005-11-16 22:15:07 +00:00
|
|
|
|
:format "%{%t%}: (%{sample%}) %v"
|
2005-04-05 06:40:12 +00:00
|
|
|
|
:tag "Face"
|
|
|
|
|
:value 'default
|
|
|
|
|
:sample-face-get 'widget-face-sample-face-get
|
|
|
|
|
:notify 'widget-face-notify
|
2011-04-19 13:44:55 +00:00
|
|
|
|
:match (lambda (_widget value) (facep value))
|
Use completion-at-point rather than completion-in-region.
* lisp/wid-edit.el: Use lexical scoping and move towards completion-at-point.
(widget-complete): Use new :completion-function property.
(widget-completions-at-point): New function.
(default): Use :completion-function instead of :complete.
(widget-default-completions): Rename from widget-default-complete, rewrite.
(widget-string-complete, widget-file-complete, widget-color-complete):
Remove functions.
(file, symbol, function, variable, coding-system, color):
* lisp/international/mule-cmds.el (default-input-method, charset)
(language-info-custom-alist):
* lisp/cus-edit.el (face): Use new property :completions.
* lisp/progmodes/pascal.el (pascal-completions-at-point): New function.
(pascal-mode): Use it.
(pascal-mode-map): Use completion-at-point.
(pascal-toggle-completions): Make obsolete.
(pascal-complete-word, pascal-show-completions):
* lisp/progmodes/octave-mod.el (octave-complete-symbol):
Redefine as obsolete alias.
* lisp/progmodes/octave-inf.el (inferior-octave-completion-at-point):
Signal absence of completion info for old Octave,
(inferior-octave-complete): Redefine as obsolete alias.
* lisp/progmodes/meta-mode.el: Use lexical-binding and completion-at-point.
(meta-completions-at-point): Rename from meta-complete-symbol and
adapt it for use on completion-at-point-functions.
(meta-common-mode): Use it.
(meta-looking-at-backward, meta-match-buffer): Remove.
(meta-complete-symbol): Redefine as obsolete alias.
(meta-common-mode-map): Use completion-at-point.
* lisp/progmodes/make-mode.el: Use lexical-binding and completion-at-point.
(makefile-mode-map): Use completion-at-point.
(makefile-completions-at-point): Rename from makefile-complete and
adapt it for use on completion-at-point-functions.
(makefile-mode): Use it.
(makefile-complete): Redefine as obsolete alias.
2011-06-20 16:02:31 +00:00
|
|
|
|
:completions (apply-partially #'completion-table-with-predicate
|
|
|
|
|
obarray #'facep 'strict)
|
2005-02-27 10:34:05 +00:00
|
|
|
|
:prompt-match 'facep
|
|
|
|
|
:prompt-history 'widget-face-prompt-value-history
|
|
|
|
|
:validate (lambda (widget)
|
|
|
|
|
(unless (facep (widget-value widget))
|
2005-04-05 06:40:12 +00:00
|
|
|
|
(widget-put widget
|
|
|
|
|
:error (format "Invalid face: %S"
|
|
|
|
|
(widget-value widget)))
|
|
|
|
|
widget)))
|
|
|
|
|
|
|
|
|
|
(defun widget-face-sample-face-get (widget)
|
|
|
|
|
(let ((value (widget-value widget)))
|
|
|
|
|
(if (facep value)
|
|
|
|
|
value
|
|
|
|
|
'default)))
|
|
|
|
|
|
|
|
|
|
(defun widget-face-notify (widget child &optional event)
|
|
|
|
|
"Update the sample, and notify the parent."
|
|
|
|
|
(overlay-put (widget-get widget :sample-overlay)
|
|
|
|
|
'face (widget-apply widget :sample-face-get))
|
|
|
|
|
(widget-default-notify widget child event))
|
2005-02-27 10:34:05 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
;;; The `hook' Widget.
|
|
|
|
|
|
|
|
|
|
(define-widget 'hook 'list
|
2006-11-06 22:37:30 +00:00
|
|
|
|
"An Emacs Lisp hook."
|
2011-04-19 13:44:55 +00:00
|
|
|
|
:value-to-internal (lambda (_widget value)
|
1997-09-12 19:43:45 +00:00
|
|
|
|
(if (and value (symbolp value))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
(list value)
|
|
|
|
|
value))
|
|
|
|
|
:match (lambda (widget value)
|
|
|
|
|
(or (symbolp value)
|
1997-10-24 19:33:49 +00:00
|
|
|
|
(widget-group-match widget value)))
|
2000-03-12 18:50:49 +00:00
|
|
|
|
;; Avoid adding undefined functions to the hook, especially for
|
|
|
|
|
;; things like `find-file-hook' or even more basic ones, to avoid
|
|
|
|
|
;; chaos.
|
|
|
|
|
:set (lambda (symbol value)
|
2000-03-26 00:12:35 +00:00
|
|
|
|
(dolist (elt value)
|
|
|
|
|
(if (fboundp elt)
|
|
|
|
|
(add-hook symbol elt))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:convert-widget 'custom-hook-convert-widget
|
|
|
|
|
:tag "Hook")
|
|
|
|
|
|
|
|
|
|
(defun custom-hook-convert-widget (widget)
|
2000-01-09 17:05:34 +00:00
|
|
|
|
;; Handle `:options'.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((options (widget-get widget :options))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(other `(editable-list :inline t
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:entry-format "%i %d%v"
|
|
|
|
|
(function :format " %v")))
|
|
|
|
|
(args (if options
|
|
|
|
|
(list `(checklist :inline t
|
|
|
|
|
,@(mapcar (lambda (entry)
|
|
|
|
|
`(function-item ,entry))
|
|
|
|
|
options))
|
|
|
|
|
other)
|
|
|
|
|
(list other))))
|
|
|
|
|
(widget-put widget :args args)
|
|
|
|
|
widget))
|
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;;; The `custom-group-link' Widget.
|
|
|
|
|
|
|
|
|
|
(define-widget 'custom-group-link 'link
|
|
|
|
|
"Show parent in other window when activated."
|
2006-01-23 01:21:24 +00:00
|
|
|
|
:button-face 'custom-link
|
|
|
|
|
:mouse-face 'highlight
|
2006-02-14 20:16:04 +00:00
|
|
|
|
:pressed-face 'highlight
|
1997-06-24 22:42:54 +00:00
|
|
|
|
:help-echo "Create customization buffer for this group."
|
2006-11-06 22:05:23 +00:00
|
|
|
|
:keymap custom-mode-link-map
|
|
|
|
|
:follow-link 'mouse-face
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:action 'custom-group-link-action)
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-group-link-action (widget &rest _ignore)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(customize-group (widget-value widget)))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The `custom-group' Widget.
|
|
|
|
|
|
1997-06-24 22:42:54 +00:00
|
|
|
|
(defcustom custom-group-tag-faces nil
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;; In XEmacs, this ought to play games with font size.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;; Fixme: make it do so in Emacs.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Face used for group tags.
|
|
|
|
|
The first member is used for level 1 groups, the second for level 2,
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
and so forth. The remaining group tags are shown with `custom-group-tag'."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:type '(repeat face)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'custom-faces)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-group-tag-1
|
2000-03-16 22:15:26 +00:00
|
|
|
|
`((((class color)
|
|
|
|
|
(background dark))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
|
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
high number of colors displays.
* textmodes/table.el (table-cell-face): Add special case for
displays supporting a high number of colors.
* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
(vhdl-font-lock-reserved-words-face)
(vhdl-speedbar-architecture-face)
(vhdl-speedbar-instantiation-face)
(vhdl-speedbar-architecture-selected-face)
(vhdl-speedbar-instantiation-selected-face): Likewise.
* progmodes/sh-script.el (sh-heredoc-face): Likewise.
* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
* progmodes/ebrowse.el (ebrowse-tree-mark-face)
(ebrowse-root-class-face, ebrowse-member-attribute-face)
(ebrowse-progress-face): Likewise.
* progmodes/compile.el (compilation-info-face): Likewise.
* progmodes/cc-fonts.el (c-invalid-face): Likewise.
* emacs-lisp/re-builder.el (reb-match-3): Likewise.
* calendar/calendar.el (diary-face): Likewise.
* woman.el (woman-italic-face, woman-bold-face)
(woman-unknown-face): Likewise.
* wid-edit.el (widget-button-pressed-face): Likewise.
* whitespace.el (whitespace-highlight-face): Likewise.
* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
* pcvs-info.el (cvs-marked-face): Likewise.
* info.el (info-xref): Likewise.
* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
* hilit-chg.el (highlight-changes-face)
(highlight-changes-delete-face): Likewise.
* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
(hi-red-b): Likewise.
* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
* font-lock.el (font-lock-keyword-face)
(font-lock-function-name-face, font-lock-warning-face): Likewise.
* cus-edit.el (custom-invalid-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-variable-tag-face)
(custom-group-tag-face-1, custom-group-tag-face): Likewise.
* comint.el (comint-highlight-prompt): Likewise.
2005-04-08 14:26:13 +00:00
|
|
|
|
(((min-colors 88) (class color)
|
|
|
|
|
(background light))
|
|
|
|
|
(:foreground "red1" :weight bold :height 1.2 :inherit variable-pitch))
|
2000-03-16 22:15:26 +00:00
|
|
|
|
(((class color)
|
|
|
|
|
(background light))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(:foreground "red" :weight bold :height 1.2 :inherit variable-pitch))
|
|
|
|
|
(t (:weight bold)))
|
2000-03-16 22:15:26 +00:00
|
|
|
|
"Face used for group tags."
|
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-group-tag-face-1 'custom-group-tag-1 "22.1")
|
2000-03-16 22:15:26 +00:00
|
|
|
|
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
(defface custom-group-tag
|
2000-03-16 22:15:26 +00:00
|
|
|
|
`((((class color)
|
|
|
|
|
(background dark))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
|
* mh-customize.el (mh-speedbar-selected-folder-face): Special case
high number of colors displays.
* textmodes/table.el (table-cell-face): Add special case for
displays supporting a high number of colors.
* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
(vhdl-font-lock-reserved-words-face)
(vhdl-speedbar-architecture-face)
(vhdl-speedbar-instantiation-face)
(vhdl-speedbar-architecture-selected-face)
(vhdl-speedbar-instantiation-selected-face): Likewise.
* progmodes/sh-script.el (sh-heredoc-face): Likewise.
* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
* progmodes/ebrowse.el (ebrowse-tree-mark-face)
(ebrowse-root-class-face, ebrowse-member-attribute-face)
(ebrowse-progress-face): Likewise.
* progmodes/compile.el (compilation-info-face): Likewise.
* progmodes/cc-fonts.el (c-invalid-face): Likewise.
* emacs-lisp/re-builder.el (reb-match-3): Likewise.
* calendar/calendar.el (diary-face): Likewise.
* woman.el (woman-italic-face, woman-bold-face)
(woman-unknown-face): Likewise.
* wid-edit.el (widget-button-pressed-face): Likewise.
* whitespace.el (whitespace-highlight-face): Likewise.
* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
* pcvs-info.el (cvs-marked-face): Likewise.
* info.el (info-xref): Likewise.
* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
* hilit-chg.el (highlight-changes-face)
(highlight-changes-delete-face): Likewise.
* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
(hi-red-b): Likewise.
* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
* font-lock.el (font-lock-keyword-face)
(font-lock-function-name-face, font-lock-warning-face): Likewise.
* cus-edit.el (custom-invalid-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-variable-tag-face)
(custom-group-tag-face-1, custom-group-tag-face): Likewise.
* comint.el (comint-highlight-prompt): Likewise.
2005-04-08 14:26:13 +00:00
|
|
|
|
(((min-colors 88) (class color)
|
|
|
|
|
(background light))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
|
2000-03-16 22:15:26 +00:00
|
|
|
|
(((class color)
|
|
|
|
|
(background light))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
|
2001-12-31 20:22:27 +00:00
|
|
|
|
(t (:weight bold)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Face used for low level group tags."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:group 'custom-faces)
|
2009-09-01 07:24:13 +00:00
|
|
|
|
(define-obsolete-face-alias 'custom-group-tag-face 'custom-group-tag "22.1")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(define-widget 'custom-group 'custom
|
|
|
|
|
"Customize group."
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:format "%v"
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:sample-face-get 'custom-group-sample-face-get
|
|
|
|
|
:documentation-property 'group-documentation
|
|
|
|
|
:help-echo "Set or reset all members of this group."
|
|
|
|
|
:value-create 'custom-group-value-create
|
|
|
|
|
:action 'custom-group-action
|
1997-06-01 11:58:17 +00:00
|
|
|
|
:custom-category 'group
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-set 'custom-group-set
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-save 'custom-group-mark-to-save
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-reset-current 'custom-group-reset-current
|
|
|
|
|
:custom-reset-saved 'custom-group-reset-saved
|
1997-05-30 00:39:40 +00:00
|
|
|
|
:custom-reset-standard 'custom-group-reset-standard
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
:custom-mark-to-reset-standard 'custom-group-mark-to-reset-standard
|
|
|
|
|
:custom-state-set-and-redraw 'custom-group-state-set-and-redraw
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:custom-menu 'custom-group-menu-create)
|
|
|
|
|
|
|
|
|
|
(defun custom-group-sample-face-get (widget)
|
|
|
|
|
;; Use :sample-face.
|
|
|
|
|
(or (nth (1- (widget-get widget :custom-level)) custom-group-tag-faces)
|
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
2005-06-10 Miles Bader <miles@gnu.org>
* lisp/cus-edit.el (custom-invalid, custom-rogue, custom-modified)
(custom-set, custom-changed, custom-saved, custom-button)
(custom-button-pressed, custom-documentation, custom-state)
(custom-comment, custom-comment-tag, custom-variable-tag)
(custom-variable-button, custom-face-tag, custom-group-tag-1)
(custom-group-tag): Remove "-face" suffix from face names.
(custom-magic-alist, custom-magic-value-create)
(custom-group-sample-face-get, custom-mode): Use renamed custom faces.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face):
New backward-compatibility aliases for renamed faces.
2005-06-10 07:16:58 +00:00
|
|
|
|
'custom-group-tag))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-06-24 03:17:58 +00:00
|
|
|
|
(define-widget 'custom-group-visibility 'visibility
|
|
|
|
|
"An indicator and manipulator for hidden group contents."
|
|
|
|
|
:create 'custom-group-visibility-create)
|
|
|
|
|
|
|
|
|
|
(defun custom-group-visibility-create (widget)
|
|
|
|
|
(let ((visible (widget-value widget)))
|
|
|
|
|
(if visible
|
|
|
|
|
(insert "--------")))
|
|
|
|
|
(widget-default-create widget))
|
|
|
|
|
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(defun custom-group-members (symbol groups-only)
|
|
|
|
|
"Return SYMBOL's custom group members.
|
|
|
|
|
If GROUPS-ONLY non-nil, return only those members that are groups."
|
|
|
|
|
(if (not groups-only)
|
|
|
|
|
(get symbol 'custom-group)
|
|
|
|
|
(let (members)
|
|
|
|
|
(dolist (entry (get symbol 'custom-group))
|
|
|
|
|
(when (eq (nth 1 entry) 'custom-group)
|
|
|
|
|
(push entry members)))
|
|
|
|
|
(nreverse members))))
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-group-value-create (widget)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
"Insert a customize group for WIDGET in the current buffer."
|
2003-01-09 22:32:48 +00:00
|
|
|
|
(unless (eq (widget-get widget :custom-state) 'hidden)
|
2003-01-18 03:19:28 +00:00
|
|
|
|
(custom-load-widget widget))
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(let* ((state (widget-get widget :custom-state))
|
|
|
|
|
(level (widget-get widget :custom-level))
|
1997-07-30 12:04:50 +00:00
|
|
|
|
;; (indent (widget-get widget :indent))
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(prefix (widget-get widget :custom-prefix))
|
|
|
|
|
(buttons (widget-get widget :buttons))
|
|
|
|
|
(tag (widget-get widget :tag))
|
|
|
|
|
(symbol (widget-value widget))
|
|
|
|
|
(members (custom-group-members symbol
|
|
|
|
|
(and (eq custom-buffer-style 'tree)
|
2009-02-18 12:55:35 +00:00
|
|
|
|
custom-browse-only-groups)))
|
|
|
|
|
(doc (widget-docstring widget)))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(cond ((and (eq custom-buffer-style 'tree)
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(eq state 'hidden)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(or members (custom-unloaded-widget-p widget)))
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-browse-insert-prefix prefix)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget 'custom-browse-visibility
|
1997-06-25 15:30:27 +00:00
|
|
|
|
;; :tag-glyph "plus"
|
1997-07-18 18:59:20 +00:00
|
|
|
|
:tag "+")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert "-- ")
|
1997-06-25 15:30:27 +00:00
|
|
|
|
;; (widget-glyph-insert nil "-- " "horizontal")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-07-02 15:35:18 +00:00
|
|
|
|
widget 'custom-browse-group-tag)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons))
|
|
|
|
|
((and (eq custom-buffer-style 'tree)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(zerop (length members)))
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-browse-insert-prefix prefix)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(insert "[ ]-- ")
|
|
|
|
|
;; (widget-glyph-insert nil "[ ]" "empty")
|
|
|
|
|
;; (widget-glyph-insert nil "-- " "horizontal")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-07-02 15:35:18 +00:00
|
|
|
|
widget 'custom-browse-group-tag)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons))
|
|
|
|
|
((eq custom-buffer-style 'tree)
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-browse-insert-prefix prefix)
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(if (zerop (length members))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(progn
|
1997-07-02 15:35:18 +00:00
|
|
|
|
(custom-browse-insert-prefix prefix)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(insert "[ ]-- ")
|
|
|
|
|
;; (widget-glyph-insert nil "[ ]" "empty")
|
|
|
|
|
;; (widget-glyph-insert nil "-- " "horizontal")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-07-02 15:35:18 +00:00
|
|
|
|
widget 'custom-browse-group-tag)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-browse-visibility
|
1997-06-25 15:30:27 +00:00
|
|
|
|
;; :tag-glyph "minus"
|
|
|
|
|
:tag "-")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(insert "-\\ ")
|
|
|
|
|
;; (widget-glyph-insert nil "-\\ " "top")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-07-02 15:35:18 +00:00
|
|
|
|
widget 'custom-browse-group-tag)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
buttons)
|
|
|
|
|
(insert " " tag "\n")
|
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
(message "Creating group...")
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(let* ((members (custom-sort-items
|
|
|
|
|
members
|
|
|
|
|
;; Never sort the top-level custom group.
|
|
|
|
|
(unless (eq symbol 'emacs)
|
|
|
|
|
custom-browse-sort-alphabetically)
|
1997-06-25 15:30:27 +00:00
|
|
|
|
custom-browse-order-groups))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(prefixes (widget-get widget :custom-prefixes))
|
|
|
|
|
(custom-prefix-list (custom-prefix-add symbol prefixes))
|
|
|
|
|
(extra-prefix (if (widget-get widget :custom-last)
|
|
|
|
|
" "
|
|
|
|
|
" | "))
|
|
|
|
|
(prefix (concat prefix extra-prefix))
|
|
|
|
|
children entry)
|
|
|
|
|
(while members
|
|
|
|
|
(setq entry (car members)
|
|
|
|
|
members (cdr members))
|
1997-07-28 15:46:57 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
|
|
|
|
widget (nth 1 entry)
|
|
|
|
|
:group widget
|
|
|
|
|
:tag (custom-unlispify-tag-name (nth 0 entry))
|
|
|
|
|
:custom-prefixes custom-prefix-list
|
|
|
|
|
:custom-level (1+ level)
|
|
|
|
|
:custom-last (null members)
|
|
|
|
|
:value (nth 0 entry)
|
|
|
|
|
:custom-prefix prefix)
|
|
|
|
|
children))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(widget-put widget :children (reverse children)))
|
|
|
|
|
(message "Creating group...done")))
|
|
|
|
|
;; Nested style.
|
|
|
|
|
((eq state 'hidden)
|
|
|
|
|
;; Create level indicator.
|
|
|
|
|
;; Create tag.
|
|
|
|
|
(if (eq custom-buffer-style 'links)
|
|
|
|
|
(push (widget-create-child-and-convert
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget 'custom-group-link
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
:tag tag
|
1997-06-21 12:48:00 +00:00
|
|
|
|
symbol)
|
|
|
|
|
buttons)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(insert-char ?\ (* custom-buffer-indent (1- level)))
|
|
|
|
|
(insert "-- ")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-10-21 03:04:39 +00:00
|
|
|
|
widget 'custom-group-visibility
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:help-echo "Show members of this group."
|
|
|
|
|
:action 'custom-toggle-parent
|
|
|
|
|
(not (eq state 'hidden)))
|
|
|
|
|
buttons))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(insert " : ")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; Create magic button.
|
|
|
|
|
(let ((magic (widget-create-child-and-convert
|
|
|
|
|
widget 'custom-magic nil)))
|
|
|
|
|
(widget-put widget :custom-magic magic)
|
|
|
|
|
(push magic buttons))
|
|
|
|
|
;; Update buttons.
|
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
;; Insert documentation.
|
1997-06-21 18:20:23 +00:00
|
|
|
|
(if (and (eq custom-buffer-style 'links) (> level 1))
|
|
|
|
|
(widget-put widget :documentation-indent 0))
|
2007-06-14 23:08:20 +00:00
|
|
|
|
(widget-add-documentation-string-button
|
|
|
|
|
widget :visibility-widget 'custom-visibility))
|
|
|
|
|
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; Nested style.
|
|
|
|
|
(t ;Visible.
|
2010-03-12 22:56:30 +00:00
|
|
|
|
;; Draw a horizontal line (this works for both graphical
|
|
|
|
|
;; and text displays):
|
|
|
|
|
(let ((p (point)))
|
|
|
|
|
(insert "\n")
|
|
|
|
|
(put-text-property p (1+ p) 'face '(:underline t))
|
|
|
|
|
(overlay-put (make-overlay p (1+ p))
|
|
|
|
|
'before-string
|
|
|
|
|
(propertize "\n" 'face '(:underline t)
|
|
|
|
|
'display '(space :align-to 999))))
|
|
|
|
|
|
1997-06-21 18:51:28 +00:00
|
|
|
|
;; Add parent groups references above the group.
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(when (eq level 1)
|
|
|
|
|
(if (custom-add-parent-links widget "Parent groups:")
|
|
|
|
|
(insert "\n")))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(insert-char ?\ (* custom-buffer-indent (1- level)))
|
|
|
|
|
;; Create tag.
|
|
|
|
|
(let ((start (point)))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(insert tag " group: ")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(widget-specify-sample widget start (point)))
|
2009-02-18 18:36:11 +00:00
|
|
|
|
(cond
|
|
|
|
|
((not doc)
|
|
|
|
|
(insert " Group definition missing. "))
|
|
|
|
|
((< (length doc) 50)
|
|
|
|
|
(insert doc)))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; Create visibility indicator.
|
|
|
|
|
(unless (eq custom-buffer-style 'links)
|
|
|
|
|
(insert "--------")
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(push (widget-create-child-and-convert
|
1997-06-21 12:48:00 +00:00
|
|
|
|
widget 'visibility
|
|
|
|
|
:help-echo "Hide members of this group."
|
|
|
|
|
:action 'custom-toggle-parent
|
|
|
|
|
(not (eq state 'hidden)))
|
|
|
|
|
buttons)
|
|
|
|
|
(insert " "))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(insert "\n")
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; Create magic button.
|
|
|
|
|
(let ((magic (widget-create-child-and-convert
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget 'custom-magic
|
1997-06-21 12:48:00 +00:00
|
|
|
|
:indent 0
|
|
|
|
|
nil)))
|
|
|
|
|
(widget-put widget :custom-magic magic)
|
|
|
|
|
(push magic buttons))
|
|
|
|
|
;; Update buttons.
|
|
|
|
|
(widget-put widget :buttons buttons)
|
|
|
|
|
;; Insert documentation.
|
2009-02-18 12:55:35 +00:00
|
|
|
|
(when (and doc (>= (length doc) 50))
|
|
|
|
|
(widget-add-documentation-string-button
|
|
|
|
|
widget :visibility-widget 'custom-visibility))
|
2007-06-14 23:08:20 +00:00
|
|
|
|
|
1997-06-21 18:51:28 +00:00
|
|
|
|
;; Parent groups.
|
|
|
|
|
(if nil ;;; This should test that the buffer
|
|
|
|
|
;;; was not made to display a group.
|
|
|
|
|
(when (eq level 1)
|
|
|
|
|
(insert-char ?\ custom-buffer-indent)
|
|
|
|
|
(custom-add-parent-links widget)))
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(custom-add-see-also widget
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(make-string (* custom-buffer-indent level)
|
|
|
|
|
?\ ))
|
|
|
|
|
;; Members.
|
|
|
|
|
(message "Creating group...")
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(let* ((members (custom-sort-items
|
|
|
|
|
members
|
|
|
|
|
;; Never sort the top-level custom group.
|
|
|
|
|
(unless (eq symbol 'emacs)
|
|
|
|
|
custom-buffer-sort-alphabetically)
|
|
|
|
|
custom-buffer-order-groups))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(prefixes (widget-get widget :custom-prefixes))
|
|
|
|
|
(custom-prefix-list (custom-prefix-add symbol prefixes))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(len (length members))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(count 0)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(reporter (make-progress-reporter
|
|
|
|
|
"Creating group entries..." 0 len))
|
|
|
|
|
children)
|
|
|
|
|
(setq children
|
|
|
|
|
(mapcar
|
|
|
|
|
(lambda (entry)
|
|
|
|
|
(widget-insert "\n")
|
|
|
|
|
(progress-reporter-update reporter (setq count (1+ count)))
|
|
|
|
|
(let ((sym (nth 0 entry))
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(type (nth 1 entry)))
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(prog1
|
|
|
|
|
(widget-create-child-and-convert
|
|
|
|
|
widget type
|
|
|
|
|
:group widget
|
|
|
|
|
:tag (custom-unlispify-tag-name sym)
|
|
|
|
|
:custom-prefixes custom-prefix-list
|
|
|
|
|
:custom-level (1+ level)
|
|
|
|
|
:value sym)
|
|
|
|
|
(unless (eq (preceding-char) ?\n)
|
|
|
|
|
(widget-insert "\n")))))
|
|
|
|
|
members))
|
2000-04-24 20:11:27 +00:00
|
|
|
|
(mapc 'custom-magic-reset children)
|
1997-06-21 12:48:00 +00:00
|
|
|
|
(widget-put widget :children children)
|
|
|
|
|
(custom-group-state-update widget)
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(progress-reporter-done reporter))
|
1997-06-21 12:48:00 +00:00
|
|
|
|
;; End line
|
2010-08-21 14:46:43 +00:00
|
|
|
|
(let ((p (1+ (point))))
|
|
|
|
|
(insert "\n\n")
|
2010-03-12 22:56:30 +00:00
|
|
|
|
(put-text-property p (1+ p) 'face '(:underline t))
|
|
|
|
|
(overlay-put (make-overlay p (1+ p))
|
|
|
|
|
'before-string
|
|
|
|
|
(propertize "\n" 'face '(:underline t)
|
|
|
|
|
'display '(space :align-to 999))))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
(defvar custom-group-menu
|
2006-01-12 02:25:59 +00:00
|
|
|
|
`(("Set for Current Session" custom-group-set
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(eq (widget-get widget :custom-state) 'modified)))
|
2007-10-12 02:56:23 +00:00
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Save for Future Sessions" custom-group-save
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(lambda (widget)
|
|
|
|
|
(memq (widget-get widget :custom-state) '(modified set))))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Undo Edits" custom-group-reset-current
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(lambda (widget)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(memq (widget-get widget :custom-state) '(modified))))
|
2006-01-12 02:25:59 +00:00
|
|
|
|
("Reset to Saved" custom-group-reset-saved
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(lambda (widget)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
(memq (widget-get widget :custom-state) '(modified set))))
|
2007-10-12 02:56:23 +00:00
|
|
|
|
,@(when (or custom-file init-file-user)
|
2006-01-12 02:25:59 +00:00
|
|
|
|
'(("Erase Customization" custom-group-reset-standard
|
2006-01-04 15:56:08 +00:00
|
|
|
|
(lambda (widget)
|
2006-01-04 21:23:20 +00:00
|
|
|
|
(memq (widget-get widget :custom-state) '(modified set saved)))))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Alist of actions for the `custom-group' widget.
|
1997-04-24 16:53:55 +00:00
|
|
|
|
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
|
|
|
|
|
the menu entry, ACTION is the function to call on the widget when the
|
|
|
|
|
menu is selected, and FILTER is a predicate which takes a `custom-group'
|
|
|
|
|
widget as an argument, and returns non-nil if ACTION is valid on that
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
widget. If FILTER is nil, ACTION is always valid.")
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-group-action (widget &optional event)
|
|
|
|
|
"Show the menu for `custom-group' WIDGET.
|
|
|
|
|
Optional EVENT is the location for the menu."
|
|
|
|
|
(if (eq (widget-get widget :custom-state) 'hidden)
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-toggle-hide widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let* ((completion-ignore-case t)
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(answer (widget-choose (concat "Operation on "
|
|
|
|
|
(custom-unlispify-tag-name
|
|
|
|
|
(widget-get widget :value)))
|
1997-04-24 16:53:55 +00:00
|
|
|
|
(custom-menu-filter custom-group-menu
|
|
|
|
|
widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
event)))
|
|
|
|
|
(if answer
|
|
|
|
|
(funcall answer widget)))))
|
|
|
|
|
|
|
|
|
|
(defun custom-group-set (widget)
|
|
|
|
|
"Set changes in all modified group members."
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(dolist (child (widget-get widget :children))
|
|
|
|
|
(when (eq (widget-get child :custom-state) 'modified)
|
|
|
|
|
(widget-apply child :custom-set))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(defun custom-group-mark-to-save (widget)
|
|
|
|
|
"Mark all modified group members for saving."
|
2007-07-30 05:33:55 +00:00
|
|
|
|
(dolist (child (widget-get widget :children))
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(when (memq (widget-get child :custom-state) '(modified set))
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(widget-apply child :custom-mark-to-save))))
|
|
|
|
|
|
|
|
|
|
(defsubst custom-group-state-set-and-redraw (widget)
|
|
|
|
|
"Set state of group widget WIDGET and redraw with current settings."
|
|
|
|
|
(dolist (child (widget-get widget :children))
|
|
|
|
|
(when (memq (widget-get child :custom-state) '(modified set))
|
|
|
|
|
(widget-apply child :custom-state-set-and-redraw))))
|
|
|
|
|
|
|
|
|
|
(defun custom-group-save (widget)
|
|
|
|
|
"Save all modified group members."
|
|
|
|
|
(custom-group-mark-to-save widget)
|
|
|
|
|
(custom-save-all)
|
|
|
|
|
(custom-group-state-set-and-redraw widget))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-group-reset-current (widget)
|
|
|
|
|
"Reset all modified group members."
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(dolist (child (widget-get widget :children))
|
|
|
|
|
(when (eq (widget-get child :custom-state) 'modified)
|
|
|
|
|
(widget-apply child :custom-reset-current))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-group-reset-saved (widget)
|
|
|
|
|
"Reset all modified or set group members."
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(dolist (child (widget-get widget :children))
|
|
|
|
|
(when (memq (widget-get child :custom-state) '(modified set))
|
|
|
|
|
(widget-apply child :custom-reset-saved))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(defun custom-group-reset-standard (widget)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Reset all modified, set, or saved group members."
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(let ((custom-reset-standard-variables-list '(t))
|
|
|
|
|
(custom-reset-standard-faces-list '(t)))
|
|
|
|
|
(custom-group-mark-to-reset-standard widget)
|
|
|
|
|
(custom-reset-standard-save-and-update)))
|
|
|
|
|
|
|
|
|
|
(defun custom-group-mark-to-reset-standard (widget)
|
|
|
|
|
"Mark to reset all modified, set, or saved group members."
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
(dolist (child (widget-get widget :children))
|
|
|
|
|
(when (memq (widget-get child :custom-state)
|
|
|
|
|
'(modified set saved))
|
(custom-reset-standard-variables-list)
(custom-reset-standard-faces-list): New variables.
(custom-reset-standard-save-and-update): New function.
(Custom-save): Apply custom-mark-to-save before and
custom-state-set-and-redraw after saving options.
(Custom-reset-standard): Apply custom-mark-to-reset-standard to
options and call custom-reset-standard-save-and-update.
(custom-variable, custom-face, custom-group): Provide new
entries for custom-mark-to-save, custom-mark-to-reset-standard,
and custom-state-set-and-redraw.
(custom-variable-mark-to-save)
(custom-variable-state-set-and-redraw)
(custom-variable-mark-to-reset-standard)
(custom-face-mark-to-save, custom-face-state-set-and-redraw)
(custom-face-mark-to-reset-standard)
(custom-group-mark-to-save, custom-group-state-set-and-redraw)
(custom-group-mark-to-reset-standard): New functions.
(custom-variable-save): Move save, state-set, and redraw
functionality to custom-variable-mark-to-save.
(custom-face-save): Move save, state-set, and redraw
functionality to custom-face-mark-to-save.
(custom-group-save): Move save, state-set, and redraw
functionality to custom-group-mark-to-save.
(custom-variable-reset-standard, custom-face-reset-standard)
(custom-group-reset-standard): Move save, state-set, and redraw
functionality to custom-reset-standard-save-and-update.
(custom-buffer-create-internal): Fix text in verbose help.
(custom-face-value-create): Indent doc-strings of faces like
those of variables.
2008-01-16 16:22:29 +00:00
|
|
|
|
(widget-apply child :custom-mark-to-reset-standard))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
|
|
|
|
(defun custom-group-state-update (widget)
|
|
|
|
|
"Update magic."
|
|
|
|
|
(unless (eq (widget-get widget :custom-state) 'hidden)
|
|
|
|
|
(let* ((children (widget-get widget :children))
|
|
|
|
|
(states (mapcar (lambda (child)
|
|
|
|
|
(widget-get child :custom-state))
|
|
|
|
|
children))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(magics custom-magic-alist)
|
|
|
|
|
(found 'standard))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(while magics
|
|
|
|
|
(let ((magic (car (car magics))))
|
|
|
|
|
(if (and (not (eq magic 'hidden))
|
|
|
|
|
(memq magic states))
|
|
|
|
|
(setq found magic
|
|
|
|
|
magics nil)
|
|
|
|
|
(setq magics (cdr magics)))))
|
|
|
|
|
(widget-put widget :custom-state found)))
|
|
|
|
|
(custom-magic-reset widget))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
|
|
|
|
|
;;; Reading and writing the custom file.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-06-19 11:30:04 +00:00
|
|
|
|
;;;###autoload
|
1997-09-08 19:17:57 +00:00
|
|
|
|
(defcustom custom-file nil
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"File used for storing customization information.
|
1997-09-08 19:17:57 +00:00
|
|
|
|
The default is nil, which means to use your init file
|
2004-12-06 14:01:19 +00:00
|
|
|
|
as specified by `user-init-file'. If the value is not nil,
|
|
|
|
|
it should be an absolute file name.
|
|
|
|
|
|
2005-01-03 23:52:47 +00:00
|
|
|
|
You can set this option through Custom, if you carefully read the
|
|
|
|
|
last paragraph below. However, usually it is simpler to write
|
|
|
|
|
something like the following in your init file:
|
|
|
|
|
|
|
|
|
|
\(setq custom-file \"~/.emacs-custom.el\")
|
|
|
|
|
\(load custom-file)
|
|
|
|
|
|
|
|
|
|
Note that both lines are necessary: the first line tells Custom to
|
|
|
|
|
save all customizations in this file, but does not load it.
|
|
|
|
|
|
|
|
|
|
When you change this variable outside Custom, look in the
|
|
|
|
|
previous custom file \(usually your init file) for the
|
|
|
|
|
forms `(custom-set-variables ...)' and `(custom-set-faces ...)',
|
|
|
|
|
and copy them (whichever ones you find) to the new custom file.
|
|
|
|
|
This will preserve your existing customizations.
|
|
|
|
|
|
|
|
|
|
If you save this option using Custom, Custom will write all
|
|
|
|
|
currently saved customizations, including the new one for this
|
|
|
|
|
option itself, into the file you specify, overwriting any
|
|
|
|
|
`custom-set-variables' and `custom-set-faces' forms already
|
|
|
|
|
present in that file. It will not delete any customizations from
|
|
|
|
|
the old custom file. You should do that manually if that is what you
|
|
|
|
|
want. You also have to put something like `\(load \"CUSTOM-FILE\")
|
|
|
|
|
in your init file, where CUSTOM-FILE is the actual name of the
|
|
|
|
|
file. Otherwise, Emacs will not load the file when it starts up,
|
|
|
|
|
and hence will not set `custom-file' to that file either."
|
|
|
|
|
:type '(choice (const :tag "Your Emacs init file" nil)
|
|
|
|
|
(file :format "%t:%v%d"
|
|
|
|
|
:doc
|
|
|
|
|
"Please read entire docstring below before setting \
|
|
|
|
|
this through Custom.
|
Fix typos in docstrings.
* cus-edit.el (customize-apropos-options, custom-comment)
(custom-comment-tag, custom-face-edit-attribute-tag):
Fix typos in docstrings.
(custom-buffer-done-kill): Remove * from defcustom docstring.
(custom-file): Fix typo in doc of defcustom choice.
* frame.el (display-visual-class): Fix typo in docstring.
(initial-frame-alist, minibuffer-frame-alist, pop-up-frame-alist)
(special-display-frame-alist, show-trailing-whitespace)
(auto-hscroll-mode, blink-cursor-delay, blink-cursor-interval)
(display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
Remove * from defcustom docstrings.
* md4.el (md4-buffer): Fix typo in docstring.
(md4, md4-64): Doc fixes.
(md4-pack-int32): Reflow docstring.
* paths.el (rmail-file-name): Remove * from defcustom docstring.
(prune-directory-list, gnus-nntp-service): Fix typos in docstrings.
* rect.el (open-rectangle): Reflow docstring.
(spaces-string): Fix docstring typo. Use "?\s" instead of "? ".
* select.el (x-get-cut-buffer): Fix typo in docstring.
* timezone.el (timezone-zone-to-minute, timezone-time-from-absolute)
(timezone-time-zone-from-absolute, timezone-leap-year-p):
Fix typos in docstrings.
* emacs-lisp/assoc.el (asort, aelement, aput, aget, amake):
Fix typos in docstrings.
2008-11-01 01:24:33 +00:00
|
|
|
|
Click on \"More\" \(or position point there and press RETURN)
|
2005-01-03 23:52:47 +00:00
|
|
|
|
if only the first line of the docstring is shown."))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
:group 'customize)
|
|
|
|
|
|
2011-07-11 20:12:07 +00:00
|
|
|
|
(defun custom-file (&optional no-error)
|
1998-02-25 22:46:28 +00:00
|
|
|
|
"Return the file name for saving customizations."
|
2011-08-02 15:46:07 +00:00
|
|
|
|
(if (null user-init-file)
|
|
|
|
|
;; Started with -q, i.e. the file containing Custom settings
|
|
|
|
|
;; hasn't been read. Saving settings there won't make much
|
|
|
|
|
;; sense.
|
|
|
|
|
(if no-error
|
|
|
|
|
nil
|
|
|
|
|
(error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
|
|
|
|
|
(file-chase-links (or custom-file user-init-file))))
|
1998-02-25 22:46:28 +00:00
|
|
|
|
|
2007-11-19 00:08:23 +00:00
|
|
|
|
;; If recentf-mode is non-nil, this is defined.
|
|
|
|
|
(declare-function recentf-expand-file-name "recentf" (name))
|
|
|
|
|
|
2005-08-30 10:35:09 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun custom-save-all ()
|
|
|
|
|
"Save all customizations in `custom-file'."
|
2006-11-05 15:17:49 +00:00
|
|
|
|
(when (and (null custom-file) init-file-had-error)
|
|
|
|
|
(error "Cannot save customizations; init file was not fully loaded"))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
(let* ((filename (custom-file))
|
2007-02-23 19:13:40 +00:00
|
|
|
|
(recentf-exclude
|
|
|
|
|
(if recentf-mode
|
|
|
|
|
(cons (concat "\\`"
|
|
|
|
|
(regexp-quote
|
|
|
|
|
(recentf-expand-file-name (custom-file)))
|
|
|
|
|
"\\'")
|
|
|
|
|
recentf-exclude)))
|
2008-08-02 21:07:20 +00:00
|
|
|
|
(old-buffer (find-buffer-visiting filename))
|
|
|
|
|
old-buffer-name)
|
|
|
|
|
|
2006-11-12 19:55:10 +00:00
|
|
|
|
(with-current-buffer (let ((find-file-visit-truename t))
|
|
|
|
|
(or old-buffer (find-file-noselect filename)))
|
2008-08-02 21:07:20 +00:00
|
|
|
|
;; We'll save using file-precious-flag, so avoid destroying
|
|
|
|
|
;; symlinks. (If we're not already visiting the buffer, this is
|
|
|
|
|
;; handled by find-file-visit-truename, above.)
|
|
|
|
|
(when old-buffer
|
|
|
|
|
(setq old-buffer-name (buffer-file-name))
|
|
|
|
|
(set-visited-file-name (file-chase-links filename)))
|
|
|
|
|
|
2006-09-29 18:31:33 +00:00
|
|
|
|
(unless (eq major-mode 'emacs-lisp-mode)
|
|
|
|
|
(emacs-lisp-mode))
|
2010-12-08 03:36:01 +00:00
|
|
|
|
(let ((inhibit-read-only t)
|
|
|
|
|
(print-length nil)
|
|
|
|
|
(print-level nil))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
(custom-save-variables)
|
|
|
|
|
(custom-save-faces))
|
|
|
|
|
(let ((file-precious-flag t))
|
|
|
|
|
(save-buffer))
|
2008-08-02 21:07:20 +00:00
|
|
|
|
(if old-buffer
|
|
|
|
|
(progn
|
|
|
|
|
(set-visited-file-name old-buffer-name)
|
|
|
|
|
(set-buffer-modified-p nil))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
(kill-buffer (current-buffer))))))
|
2005-12-30 22:44:36 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun customize-save-customized ()
|
|
|
|
|
"Save all user options which have been set in this session."
|
|
|
|
|
(interactive)
|
|
|
|
|
(mapatoms (lambda (symbol)
|
|
|
|
|
(let ((face (get symbol 'customized-face))
|
|
|
|
|
(value (get symbol 'customized-value))
|
|
|
|
|
(face-comment (get symbol 'customized-face-comment))
|
|
|
|
|
(variable-comment
|
|
|
|
|
(get symbol 'customized-variable-comment)))
|
|
|
|
|
(when face
|
|
|
|
|
(put symbol 'saved-face face)
|
|
|
|
|
(custom-push-theme 'theme-face symbol 'user 'set value)
|
|
|
|
|
(put symbol 'customized-face nil))
|
|
|
|
|
(when value
|
|
|
|
|
(put symbol 'saved-value value)
|
|
|
|
|
(custom-push-theme 'theme-value symbol 'user 'set value)
|
|
|
|
|
(put symbol 'customized-value nil))
|
|
|
|
|
(when variable-comment
|
|
|
|
|
(put symbol 'saved-variable-comment variable-comment)
|
|
|
|
|
(put symbol 'customized-variable-comment nil))
|
|
|
|
|
(when face-comment
|
|
|
|
|
(put symbol 'saved-face-comment face-comment)
|
|
|
|
|
(put symbol 'customized-face-comment nil)))))
|
|
|
|
|
;; We really should update all custom buffers here.
|
|
|
|
|
(custom-save-all))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
|
|
|
|
|
;; Editing the custom file contents in a buffer.
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-save-delete (symbol)
|
2005-08-30 10:35:09 +00:00
|
|
|
|
"Delete all calls to SYMBOL from the contents of the current buffer.
|
1999-12-10 19:59:42 +00:00
|
|
|
|
Leave point at the old location of the first such call,
|
2005-08-30 10:35:09 +00:00
|
|
|
|
or (if there were none) at the end of the buffer.
|
|
|
|
|
|
|
|
|
|
This function does not save the buffer."
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(goto-char (point-min))
|
1999-07-25 05:50:42 +00:00
|
|
|
|
;; Skip all whitespace and comments.
|
|
|
|
|
(while (forward-comment 1))
|
|
|
|
|
(or (eobp)
|
|
|
|
|
(save-excursion (forward-sexp (buffer-size)))) ; Test for scan errors.
|
1999-12-10 19:59:42 +00:00
|
|
|
|
(let (first)
|
|
|
|
|
(catch 'found
|
|
|
|
|
(while t ;; We exit this loop only via throw.
|
|
|
|
|
;; Skip all whitespace and comments.
|
|
|
|
|
(while (forward-comment 1))
|
|
|
|
|
(let ((start (point))
|
|
|
|
|
(sexp (condition-case nil
|
|
|
|
|
(read (current-buffer))
|
|
|
|
|
(end-of-file (throw 'found nil)))))
|
|
|
|
|
(when (and (listp sexp)
|
|
|
|
|
(eq (car sexp) symbol))
|
|
|
|
|
(delete-region start (point))
|
|
|
|
|
(unless first
|
|
|
|
|
(setq first (point)))))))
|
|
|
|
|
(if first
|
|
|
|
|
(goto-char first)
|
2001-03-07 15:21:35 +00:00
|
|
|
|
;; Move in front of local variables, otherwise long Custom
|
|
|
|
|
;; entries would make them ineffective.
|
|
|
|
|
(let ((pos (point-max))
|
|
|
|
|
(case-fold-search t))
|
|
|
|
|
(save-excursion
|
|
|
|
|
(goto-char (point-max))
|
|
|
|
|
(search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
|
|
|
|
|
'move)
|
|
|
|
|
(when (search-forward "Local Variables:" nil t)
|
|
|
|
|
(setq pos (line-beginning-position))))
|
|
|
|
|
(goto-char pos)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defvar sort-fold-case) ; defined in sort.el
|
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(defun custom-save-variables ()
|
|
|
|
|
"Save all customized variables in `custom-file'."
|
|
|
|
|
(save-excursion
|
|
|
|
|
(custom-save-delete 'custom-set-variables)
|
1999-07-25 14:29:22 +00:00
|
|
|
|
(let ((standard-output (current-buffer))
|
|
|
|
|
(saved-list (make-list 1 0))
|
|
|
|
|
sort-fold-case)
|
|
|
|
|
;; First create a sorted list of saved variables.
|
|
|
|
|
(mapatoms
|
|
|
|
|
(lambda (symbol)
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(if (and (get symbol 'saved-value)
|
2006-02-19 15:50:09 +00:00
|
|
|
|
;; ignore theme values
|
|
|
|
|
(or (null (get symbol 'theme-value))
|
|
|
|
|
(eq 'user (caar (get symbol 'theme-value)))))
|
1999-07-25 14:29:22 +00:00
|
|
|
|
(nconc saved-list (list symbol)))))
|
|
|
|
|
(setq saved-list (sort (cdr saved-list) 'string<))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(unless (bolp)
|
|
|
|
|
(princ "\n"))
|
1999-11-29 23:03:09 +00:00
|
|
|
|
(princ "(custom-set-variables
|
2010-08-12 08:55:20 +00:00
|
|
|
|
;; custom-set-variables was added by Custom.
|
|
|
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
|
|
|
;; Your init file should contain only one such instance.
|
|
|
|
|
;; If there is more than one, they won't work right.\n")
|
2003-02-01 00:39:58 +00:00
|
|
|
|
(dolist (symbol saved-list)
|
|
|
|
|
(let ((spec (car-safe (get symbol 'theme-value)))
|
|
|
|
|
(value (get symbol 'saved-value))
|
|
|
|
|
(requests (get symbol 'custom-requests))
|
2006-08-31 23:16:03 +00:00
|
|
|
|
(now (and (not (custom-variable-p symbol))
|
|
|
|
|
(or (boundp symbol)
|
|
|
|
|
(eq (get symbol 'force-value)
|
|
|
|
|
'rogue))))
|
2003-05-31 15:23:00 +00:00
|
|
|
|
(comment (get symbol 'saved-variable-comment)))
|
2006-11-06 22:37:30 +00:00
|
|
|
|
;; Check REQUESTS for validity.
|
2003-02-01 00:39:58 +00:00
|
|
|
|
(dolist (request requests)
|
|
|
|
|
(when (and (symbolp request) (not (featurep request)))
|
|
|
|
|
(message "Unknown requested feature: %s" request)
|
|
|
|
|
(setq requests (delq request requests))))
|
2006-08-31 23:16:03 +00:00
|
|
|
|
;; Is there anything customized about this variable?
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(when (or (and spec (eq (car spec) 'user))
|
2003-02-01 00:39:58 +00:00
|
|
|
|
comment
|
|
|
|
|
(and (null spec) (get symbol 'saved-value)))
|
2006-08-31 23:16:03 +00:00
|
|
|
|
;; Output an element for this variable.
|
|
|
|
|
;; It has the form (SYMBOL VALUE-FORM NOW REQUESTS COMMENT).
|
|
|
|
|
;; SYMBOL is the variable name.
|
|
|
|
|
;; VALUE-FORM is an expression to return the customized value.
|
|
|
|
|
;; NOW if non-nil means always set the variable immediately
|
|
|
|
|
;; when the customizations are reloaded. This is used
|
|
|
|
|
;; for rogue variables
|
|
|
|
|
;; REQUESTS is a list of packages to load before setting the
|
|
|
|
|
;; variable. Each element of it will be passed to `require'.
|
|
|
|
|
;; COMMENT is whatever comment the user has specified
|
|
|
|
|
;; with the customize facility.
|
2003-02-01 00:39:58 +00:00
|
|
|
|
(unless (bolp)
|
|
|
|
|
(princ "\n"))
|
|
|
|
|
(princ " '(")
|
|
|
|
|
(prin1 symbol)
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 (car value))
|
|
|
|
|
(when (or now requests comment)
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 now)
|
|
|
|
|
(when (or requests comment)
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 requests)
|
|
|
|
|
(when comment
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 comment))))
|
|
|
|
|
(princ ")"))))
|
1999-12-10 19:59:42 +00:00
|
|
|
|
(if (bolp)
|
|
|
|
|
(princ " "))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(princ ")")
|
|
|
|
|
(unless (looking-at "\n")
|
|
|
|
|
(princ "\n")))))
|
|
|
|
|
|
|
|
|
|
(defun custom-save-faces ()
|
|
|
|
|
"Save all customized faces in `custom-file'."
|
|
|
|
|
(save-excursion
|
2002-12-23 18:40:24 +00:00
|
|
|
|
(custom-save-delete 'custom-reset-faces)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(custom-save-delete 'custom-set-faces)
|
1999-07-25 14:29:22 +00:00
|
|
|
|
(let ((standard-output (current-buffer))
|
|
|
|
|
(saved-list (make-list 1 0))
|
|
|
|
|
sort-fold-case)
|
|
|
|
|
;; First create a sorted list of saved faces.
|
|
|
|
|
(mapatoms
|
|
|
|
|
(lambda (symbol)
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(if (and (get symbol 'saved-face)
|
|
|
|
|
(eq 'user (car (car-safe (get symbol 'theme-face)))))
|
1999-07-25 14:29:22 +00:00
|
|
|
|
(nconc saved-list (list symbol)))))
|
|
|
|
|
(setq saved-list (sort (cdr saved-list) 'string<))
|
|
|
|
|
;; The default face must be first, since it affects the others.
|
|
|
|
|
(if (memq 'default saved-list)
|
|
|
|
|
(setq saved-list (cons 'default (delq 'default saved-list))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(unless (bolp)
|
|
|
|
|
(princ "\n"))
|
1999-11-29 23:03:09 +00:00
|
|
|
|
(princ "(custom-set-faces
|
2010-08-12 08:55:20 +00:00
|
|
|
|
;; custom-set-faces was added by Custom.
|
|
|
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
|
|
|
;; Your init file should contain only one such instance.
|
|
|
|
|
;; If there is more than one, they won't work right.\n")
|
2003-02-01 00:39:58 +00:00
|
|
|
|
(dolist (symbol saved-list)
|
|
|
|
|
(let ((spec (car-safe (get symbol 'theme-face)))
|
|
|
|
|
(value (get symbol 'saved-face))
|
|
|
|
|
(now (not (or (get symbol 'face-defface-spec)
|
|
|
|
|
(and (not (custom-facep symbol))
|
|
|
|
|
(not (get symbol 'force-face))))))
|
|
|
|
|
(comment (get symbol 'saved-face-comment)))
|
2006-01-02 15:11:14 +00:00
|
|
|
|
(when (or (and spec (eq (nth 0 spec) 'user))
|
2003-02-01 00:39:58 +00:00
|
|
|
|
comment
|
|
|
|
|
(and (null spec) (get symbol 'saved-face)))
|
|
|
|
|
;; Don't print default face here.
|
|
|
|
|
(unless (bolp)
|
|
|
|
|
(princ "\n"))
|
|
|
|
|
(princ " '(")
|
|
|
|
|
(prin1 symbol)
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 value)
|
|
|
|
|
(when (or now comment)
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 now)
|
|
|
|
|
(when comment
|
|
|
|
|
(princ " ")
|
|
|
|
|
(prin1 comment)))
|
|
|
|
|
(princ ")"))))
|
1999-12-10 19:59:42 +00:00
|
|
|
|
(if (bolp)
|
|
|
|
|
(princ " "))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(princ ")")
|
|
|
|
|
(unless (looking-at "\n")
|
2002-12-25 21:12:01 +00:00
|
|
|
|
(princ "\n")))))
|
2005-08-30 10:35:09 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The Customize Menu.
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;; Menu support
|
|
|
|
|
|
1997-05-30 00:39:40 +00:00
|
|
|
|
(defcustom custom-menu-nesting 2
|
|
|
|
|
"Maximum nesting in custom menus."
|
|
|
|
|
:type 'integer
|
1997-06-14 10:21:01 +00:00
|
|
|
|
:group 'custom-menu)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-face-menu-create (_widget symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Ignoring WIDGET, create a menu entry for customization face SYMBOL."
|
|
|
|
|
(vector (custom-unlispify-menu-entry symbol)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
`(customize-face ',symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
t))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-variable-menu-create (_widget symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Ignoring WIDGET, create a menu entry for customization variable SYMBOL."
|
|
|
|
|
(let ((type (get symbol 'custom-type)))
|
|
|
|
|
(unless (listp type)
|
|
|
|
|
(setq type (list type)))
|
|
|
|
|
(if (and type (widget-get type :custom-menu))
|
|
|
|
|
(widget-apply type :custom-menu symbol)
|
|
|
|
|
(vector (custom-unlispify-menu-entry symbol)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
`(customize-variable ',symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
t))))
|
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;; Add checkboxes to boolean variable entries.
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(widget-put (get 'boolean 'widget-type)
|
2011-04-19 13:44:55 +00:00
|
|
|
|
:custom-menu (lambda (_widget symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(vector (custom-unlispify-menu-entry symbol)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
`(customize-variable ',symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
':style 'toggle
|
|
|
|
|
':selected symbol)))
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun custom-group-menu-create (_widget symbol)
|
2000-07-13 17:06:15 +00:00
|
|
|
|
"Ignoring WIDGET, create a menu entry for customization group SYMBOL."
|
|
|
|
|
`( ,(custom-unlispify-menu-entry symbol t)
|
|
|
|
|
:filter (lambda (&rest junk)
|
2006-09-08 11:57:05 +00:00
|
|
|
|
(let* ((menu (custom-menu-create ',symbol)))
|
2002-08-30 21:52:10 +00:00
|
|
|
|
(if (consp menu) (cdr menu) menu)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun custom-menu-create (symbol)
|
1997-04-07 13:42:59 +00:00
|
|
|
|
"Create menu for customization group SYMBOL.
|
|
|
|
|
The menu is in a format applicable to `easy-menu-define'."
|
2006-09-08 11:57:05 +00:00
|
|
|
|
(let* ((deactivate-mark nil)
|
|
|
|
|
(item (vector (custom-unlispify-menu-entry symbol)
|
1997-05-14 17:22:46 +00:00
|
|
|
|
`(customize-group ',symbol)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
t)))
|
|
|
|
|
(if (and (or (not (boundp 'custom-menu-nesting))
|
|
|
|
|
(>= custom-menu-nesting 0))
|
2003-01-09 22:32:48 +00:00
|
|
|
|
(progn
|
|
|
|
|
(custom-load-symbol symbol)
|
|
|
|
|
(< (length (get symbol 'custom-group)) widget-menu-max-size)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
(let ((custom-prefix-list (custom-prefix-add symbol
|
1997-05-30 00:39:40 +00:00
|
|
|
|
custom-prefix-list))
|
1997-06-25 15:30:27 +00:00
|
|
|
|
(members (custom-sort-items (get symbol 'custom-group)
|
|
|
|
|
custom-menu-sort-alphabetically
|
|
|
|
|
custom-menu-order-groups)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
`(,(custom-unlispify-menu-entry symbol t)
|
|
|
|
|
,item
|
|
|
|
|
"--"
|
|
|
|
|
,@(mapcar (lambda (entry)
|
|
|
|
|
(widget-apply (if (listp (nth 1 entry))
|
|
|
|
|
(nth 1 entry)
|
|
|
|
|
(list (nth 1 entry)))
|
|
|
|
|
:custom-menu (nth 0 entry)))
|
1997-05-30 00:39:40 +00:00
|
|
|
|
members)))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
item)))
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(defun customize-menu-create (symbol &optional name)
|
|
|
|
|
"Return a customize menu for customization group SYMBOL.
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
If optional NAME is given, use that as the name of the menu.
|
1997-04-12 17:51:31 +00:00
|
|
|
|
Otherwise the menu will be named `Customize'.
|
|
|
|
|
The format is suitable for use with `easy-menu-define'."
|
|
|
|
|
(unless name
|
|
|
|
|
(setq name "Customize"))
|
2000-07-13 17:06:15 +00:00
|
|
|
|
`(,name
|
|
|
|
|
:filter (lambda (&rest junk)
|
2002-08-30 21:52:10 +00:00
|
|
|
|
(let ((menu (custom-menu-create ',symbol)))
|
|
|
|
|
(if (consp menu) (cdr menu) menu)))))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
;;; Toolbar and menubar support
|
|
|
|
|
|
|
|
|
|
(easy-menu-define
|
2007-11-19 07:52:07 +00:00
|
|
|
|
Custom-mode-menu (list custom-mode-map custom-field-keymap)
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
"Menu used in customization buffers."
|
|
|
|
|
(nconc (list "Custom"
|
|
|
|
|
(customize-menu-create 'customize))
|
|
|
|
|
(mapcar (lambda (arg)
|
|
|
|
|
(let ((tag (nth 0 arg))
|
|
|
|
|
(command (nth 1 arg))
|
|
|
|
|
(active (nth 2 arg))
|
|
|
|
|
(help (nth 3 arg)))
|
|
|
|
|
(vector tag command :active (eval active) :help help)))
|
|
|
|
|
custom-commands)))
|
|
|
|
|
|
|
|
|
|
(defvar tool-bar-map)
|
2008-01-06 09:49:16 +00:00
|
|
|
|
|
|
|
|
|
;;; `custom-tool-bar-map' used to be set up here. This will fail to
|
|
|
|
|
;;; DTRT when `display-graphic-p' returns nil during compilation. Hence
|
2008-02-28 20:45:37 +00:00
|
|
|
|
;;; we set this up lazily in `Custom-mode'.
|
2008-01-06 09:49:16 +00:00
|
|
|
|
(defvar custom-tool-bar-map nil
|
|
|
|
|
"Keymap for toolbar in Custom mode.")
|
(custom-commands): New variable.
(custom-tool-bar-map): New variable. Initialize using
`custom-commands'.
(custom-mode): Use `custom-tool-bar-map'.
(custom-buffer-create-internal): Insert action buttons only if
tool bar is not used. Use `custom-commands'.
(Custom-help, custom-command-apply): New function.
(custom-command-apply, Custom-set, Custom-save)
(Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
Use `custom-command-apply' instead of duplicating code.
(customize-group-other-window): Call `customize-group' instead of
duplicating code.
(customize-face-other-window): Call `customize-face' instead of
duplicating code.
(customize-group, customize-face): Add optional args for opening
in another window.
(custom-variable-tag): Don't inherit `variable-pitch' face.
(custom-group-tag): Inherit `variable-pitch' face.
(custom-variable-value-create): Set documentation indentation.
(custom-group-value-create): Make group name a link, instead of
using an extra "go to group" button.
(custom-prompt-variable, custom-group-set, custom-group-save)
(custom-group-reset-current, custom-group-reset-saved)
(custom-group-reset-standard): Minor cleanup.
2007-07-05 18:37:29 +00:00
|
|
|
|
|
1997-04-12 17:51:31 +00:00
|
|
|
|
;;; The Custom Mode.
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun Custom-no-edit (_pos &optional _event)
|
2006-07-28 03:31:44 +00:00
|
|
|
|
"Invoke button at POS, or refuse to allow editing of Custom buffer."
|
|
|
|
|
(interactive "@d")
|
2006-07-28 18:08:11 +00:00
|
|
|
|
(error "You can't edit this part of the Custom buffer"))
|
2006-07-12 15:56:33 +00:00
|
|
|
|
|
2006-08-31 23:16:03 +00:00
|
|
|
|
(defun Custom-newline (pos &optional event)
|
2006-08-16 05:05:08 +00:00
|
|
|
|
"Invoke button at POS, or refuse to allow editing of Custom buffer."
|
|
|
|
|
(interactive "@d")
|
|
|
|
|
(let ((button (get-char-property pos 'button)))
|
2011-03-10 03:44:33 +00:00
|
|
|
|
;; If there is no button at point, then use the one at the start
|
|
|
|
|
;; of the line, if it is a custom-group-link (bug#2298).
|
|
|
|
|
(or button
|
|
|
|
|
(if (setq button (get-char-property (line-beginning-position) 'button))
|
|
|
|
|
(or (eq (widget-type button) 'custom-group-link)
|
|
|
|
|
(setq button nil))))
|
2006-08-16 05:05:08 +00:00
|
|
|
|
(if button
|
|
|
|
|
(widget-apply-action button event)
|
|
|
|
|
(error "You can't edit this part of the Custom buffer"))))
|
|
|
|
|
|
1997-06-24 22:42:54 +00:00
|
|
|
|
(defun Custom-goto-parent ()
|
|
|
|
|
"Go to the parent group listed at the top of this buffer.
|
|
|
|
|
If several parents are listed, go to the first of them."
|
|
|
|
|
(interactive)
|
|
|
|
|
(save-excursion
|
|
|
|
|
(goto-char (point-min))
|
2007-08-01 01:17:51 +00:00
|
|
|
|
(if (search-forward "\nParent groups: " nil t)
|
1997-06-24 22:42:54 +00:00
|
|
|
|
(let* ((button (get-char-property (point) 'button))
|
|
|
|
|
(parent (downcase (widget-get button :tag))))
|
|
|
|
|
(customize-group parent)))))
|
|
|
|
|
|
2008-02-28 20:45:37 +00:00
|
|
|
|
(defcustom Custom-mode-hook nil
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
"Hook called when entering Custom mode."
|
1997-04-12 17:51:31 +00:00
|
|
|
|
:type 'hook
|
2008-02-28 20:45:37 +00:00
|
|
|
|
:group 'custom-buffer)
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
1997-06-24 22:42:54 +00:00
|
|
|
|
(defun custom-state-buffer-message (widget)
|
|
|
|
|
(if (eq (widget-get (widget-get widget :parent) :custom-state) 'modified)
|
|
|
|
|
(message "To install your edits, invoke [State] and choose the Set operation")))
|
1997-06-24 03:17:58 +00:00
|
|
|
|
|
2010-10-12 03:10:21 +00:00
|
|
|
|
(defun custom--initialize-widget-variables ()
|
|
|
|
|
(set (make-local-variable 'widget-documentation-face) 'custom-documentation)
|
|
|
|
|
(set (make-local-variable 'widget-button-face) custom-button)
|
|
|
|
|
(set (make-local-variable 'widget-button-pressed-face) custom-button-pressed)
|
|
|
|
|
(set (make-local-variable 'widget-mouse-face) custom-button-mouse)
|
|
|
|
|
;; We need this because of the "More" button on docstrings.
|
|
|
|
|
;; Otherwise clicking on "More" can push point offscreen, which
|
|
|
|
|
;; causes the window to recenter on point, which pushes the
|
|
|
|
|
;; newly-revealed docstring offscreen; which is annoying. -- cyd.
|
|
|
|
|
(set (make-local-variable 'widget-button-click-moves-point) t)
|
|
|
|
|
;; When possible, use relief for buttons, not bracketing. This test
|
|
|
|
|
;; may not be optimal.
|
|
|
|
|
(when custom-raised-buttons
|
|
|
|
|
(set (make-local-variable 'widget-push-button-prefix) "")
|
|
|
|
|
(set (make-local-variable 'widget-push-button-suffix) "")
|
|
|
|
|
(set (make-local-variable 'widget-link-prefix) "")
|
|
|
|
|
(set (make-local-variable 'widget-link-suffix) ""))
|
|
|
|
|
(setq show-trailing-whitespace nil))
|
|
|
|
|
|
2008-02-28 20:45:37 +00:00
|
|
|
|
(define-derived-mode Custom-mode nil "Custom"
|
1997-04-12 17:51:31 +00:00
|
|
|
|
"Major mode for editing customization buffers.
|
|
|
|
|
|
|
|
|
|
The following commands are available:
|
|
|
|
|
|
2006-01-23 01:21:24 +00:00
|
|
|
|
\\<widget-keymap>\
|
|
|
|
|
Move to next button, link or editable field. \\[widget-forward]
|
2009-09-12 19:05:49 +00:00
|
|
|
|
Move to previous button, link or editable field. \\[widget-backward]
|
2006-01-23 01:21:24 +00:00
|
|
|
|
\\<custom-field-keymap>\
|
1997-07-28 15:46:57 +00:00
|
|
|
|
Complete content of editable text field. \\[widget-complete]
|
|
|
|
|
\\<custom-mode-map>\
|
2006-02-15 02:43:55 +00:00
|
|
|
|
Invoke button under the mouse pointer. \\[widget-button-click]
|
2006-01-23 01:21:24 +00:00
|
|
|
|
Invoke button under point. \\[widget-button-press]
|
2006-01-02 03:38:43 +00:00
|
|
|
|
Set all options from current text. \\[Custom-set]
|
|
|
|
|
Make values in current text permanent. \\[Custom-save]
|
2006-01-23 01:21:24 +00:00
|
|
|
|
Make text match actual option values. \\[Custom-reset-current]
|
|
|
|
|
Reset options to permanent settings. \\[Custom-reset-saved]
|
2006-01-02 03:38:43 +00:00
|
|
|
|
Erase customizations; set options
|
|
|
|
|
and buffer text to the standard values. \\[Custom-reset-standard]
|
1997-04-12 17:51:31 +00:00
|
|
|
|
|
2008-02-28 20:45:37 +00:00
|
|
|
|
Entry to this mode calls the value of `Custom-mode-hook'
|
1997-04-12 17:51:31 +00:00
|
|
|
|
if that value is non-nil."
|
|
|
|
|
(use-local-map custom-mode-map)
|
1997-06-24 20:07:51 +00:00
|
|
|
|
(easy-menu-add Custom-mode-menu)
|
2008-11-11 00:28:10 +00:00
|
|
|
|
(set (make-local-variable 'tool-bar-map)
|
|
|
|
|
(or custom-tool-bar-map
|
|
|
|
|
;; Set up `custom-tool-bar-map'.
|
|
|
|
|
(let ((map (make-sparse-keymap)))
|
|
|
|
|
(mapc
|
|
|
|
|
(lambda (arg)
|
|
|
|
|
(tool-bar-local-item-from-menu
|
Gtk tool bars can be text, icons with text or just icons.
* xsettings.c: Qmonospace_font_name, Qtool_bar_style and
current_tool_bar_style are new.
(store_config_changed_event): Rename from store_font_changed_event.
(XSETTINGS_TOOL_BAR_STYLE): New define.
(SEEN_FONT, SEEN_TB_STYLE): New enum values.
(struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
HAVE_XFT.
(something_changedCB): store_font_changed_event is now
store_config_changed_event
(parse_settings): Rename from parse_xft_settings. Read
non-xft xsettings outside #ifdef HAVE_XFT.
(read_settings): Renamed from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT. Call
read_and_apply_settings if there are settings to be read.
(init_xsettings): Renamed from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
(syms_of_xsettings): Define Qmonospace_font_name and
Qtool_bar_style. Initialize current_tool_bar_style to nil.
defsubr Stool_bar_get_system_style. Fprovide on
dynamic-setting.
* xsettings.h (Ftool_bar_get_system_style): Declare.
* xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
Qtext, Qboth, Qboth_horiz are new.
(syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
Vtool_bar_style, tool_bar_max_label_size.
* lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
* keyboard.c: QClabel is new.
(parse_tool_bar_item): Take out QClabel from tool bar items.
Try to construct a label if ther is no QClabel.
(syms_of_keyboard): Intern :label as QClabel.
* dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
(Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
New.
* Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
dynamic-setting.el.
* gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
(xg_make_tool_item, xg_show_toolbar_item): New function.
(update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
Call xg_make_tool_item to make a tool bar item.
Call xg_show_toolbar_item. Use wtoolbar instead of x->toolbar_widget.
* xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
into account for toolbars.
* vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
* tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
* loadup.el: Load dynamic-setting.el if feature dynamic-setting
is present.
* info.el (info-tool-bar-map): Add labels.
* cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
* cus-edit.el (custom-commands): Add labels for tool bar.
(custom-buffer-create-internal, Custom-mode): Adjust for
labels in custom-commands.
* dynamic-setting.el: Renamed from font-setting.el.
2010-04-20 18:52:07 +00:00
|
|
|
|
(nth 1 arg) (nth 4 arg) map custom-mode-map
|
|
|
|
|
:label (nth 5 arg)))
|
2008-11-11 00:28:10 +00:00
|
|
|
|
custom-commands)
|
|
|
|
|
(setq custom-tool-bar-map map))))
|
1997-04-12 17:51:31 +00:00
|
|
|
|
(make-local-variable 'custom-options)
|
2003-03-24 01:46:29 +00:00
|
|
|
|
(make-local-variable 'custom-local-buffer)
|
2010-10-12 03:10:21 +00:00
|
|
|
|
(custom--initialize-widget-variables)
|
2007-11-22 16:50:11 +00:00
|
|
|
|
(add-hook 'widget-edit-functions 'custom-state-buffer-message nil t))
|
1997-04-07 13:42:59 +00:00
|
|
|
|
|
2008-02-28 20:45:37 +00:00
|
|
|
|
(put 'Custom-mode 'mode-class 'special)
|
|
|
|
|
|
|
|
|
|
;; backward-compatibility
|
|
|
|
|
(defun custom-mode ()
|
|
|
|
|
"Non-interactive variant of `Custom-mode'."
|
|
|
|
|
(Custom-mode))
|
2008-02-28 23:42:48 +00:00
|
|
|
|
(make-obsolete 'custom-mode 'Custom-mode "23.1")
|
2000-10-26 09:32:19 +00:00
|
|
|
|
(put 'custom-mode 'mode-class 'special)
|
2008-02-28 23:42:48 +00:00
|
|
|
|
(define-obsolete-variable-alias 'custom-mode-hook 'Custom-mode-hook "23.1")
|
2000-10-26 09:32:19 +00:00
|
|
|
|
|
2006-06-23 13:17:44 +00:00
|
|
|
|
(dolist (regexp
|
|
|
|
|
'("^No user option defaults have been changed since Emacs "
|
|
|
|
|
"^Invalid face:? "
|
|
|
|
|
"^No \\(?:customized\\|rogue\\|saved\\) user options"
|
|
|
|
|
"^No customizable items matching "
|
|
|
|
|
"^There are unset changes"
|
|
|
|
|
"^Cannot set hidden variable"
|
|
|
|
|
"^No \\(?:saved\\|backup\\) value for "
|
|
|
|
|
"^No standard setting known for "
|
|
|
|
|
"^No standard setting for this face"
|
|
|
|
|
"^Saving settings from \"emacs -q\" would overwrite existing customizations"))
|
|
|
|
|
(add-to-list 'debug-ignored-errors regexp))
|
2000-03-12 18:50:49 +00:00
|
|
|
|
|
1997-04-07 13:42:59 +00:00
|
|
|
|
;;; The End.
|
|
|
|
|
|
|
|
|
|
(provide 'cus-edit)
|
|
|
|
|
|
Don't define-widget-keywords.
(multimedia): New group.
(custom-last): Function removed.
(custom-quote): Add vectorp case, comment out characterp case.
(custom-buffer-done-function, custom-raised-buttons): New option.
(Custom-buffer-done): New function.
(custom-buffer-create-internal): Obey custom-raised-buttons,
Custom-buffer-done.
(custom-button-face): Make it `released-button'.
(custom-button-pressed-face): Make it `pressed-button'
(custom-mode-map): Bind "q" to Custom-buffer-done.
(custom-mode): Deal with raised/pressed buttons.
Changes from Didier Verna:
(custom-prompt-variable): Optional third arg makes prompt for a comment
string.
(customize-set-value, customize-set-variable, customize-save-variable):
Optional prefix makes function handle variable comments.
(customize-customized, customize-saved, custom-variable-state-set)
(custom-variable-set, custom-variable-save, custom-face-state-set)
(custom-variable-reset-saved, custom-variable-reset-standard)
(custom-face-set, custom-face-save, custom-face-reset-saved)
(custom-face-reset-standard, customize-save-customized): Handle custom
comments.
(custom-comment-face, custom-comment-tag-face): New face.
(custom-comment): New widget.
(custom-comment-create, custom-comment-delete)
(custom-comment-value-set, custom-comment-show)
()custom-comment-invisible-p): New functions.
(custom-variable-value-create, custom-face-value-create): Create a
comment field widget.
(custom-variable-menu, custom-face-menu): New entry for custom comment.
(custom-face-value-create): Remove compatibility code.
(custom-save-variables, custom-save-faces): Possibly save custom comments.
1999-09-13 13:44:41 +00:00
|
|
|
|
;;; cus-edit.el ends here
|