("-function\\'" function)
("-functions\\'" (repeat function))
("-list\\'" (repeat sexp))
- ("-alist\\'" (repeat (cons sexp sexp))))
+ ("-alist\\'" (alist :key-type sexp :value-type sexp)))
"Alist of (MATCH TYPE).
MATCH should be a regexp matching the name of a symbol, and TYPE should
(const :tag "none" nil))
:group 'custom-menu)
-;;;###autoload (add-hook 'same-window-regexps (purecopy "\\`\\*Customiz.*\\*\\'"))
-
(defun custom-sort-items (items sort-alphabetically order-groups)
"Return a sorted copy of ITEMS.
ITEMS should be a `custom-group' property.
(put variable 'saved-variable-comment comment)))
(put variable 'customized-value nil)
(put variable 'customized-variable-comment nil)
- (custom-save-all)
+ (if (custom-file t)
+ (custom-save-all)
+ (message "Setting `%s' temporarily since \"emacs -q\" would overwrite customizations"
+ variable)
+ (set variable value))
value)
;; Some parts of Emacs might prompt the user to save customizations,
t)))
;;;###autoload
-(defun customize-group (&optional group)
- "Customize GROUP, which must be a customization group."
+(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."
(interactive (list (customize-read-group)))
(when (stringp group)
(if (string-equal "" group)
(setq group (intern group))))
(let ((name (format "*Customize Group: %s*"
(custom-unlispify-tag-name group))))
- (if (get-buffer name)
- (pop-to-buffer name)
- (custom-buffer-create
- (list (list group 'custom-group))
- name
- (concat " for group "
- (custom-unlispify-tag-name group))))))
+ (cond
+ ((null (get-buffer name))
+ (funcall (if other-window
+ 'custom-buffer-create-other-window
+ 'custom-buffer-create)
+ (list (list group 'custom-group))
+ name
+ (concat " for group "
+ (custom-unlispify-tag-name group))))
+ (other-window
+ (switch-to-buffer-other-window name))
+ (t
+ (pop-to-buffer-same-window name)))))
;;;###autoload
(defun customize-group-other-window (&optional group)
"Customize GROUP, which must be a customization group, in another window."
(interactive (list (customize-read-group)))
- (let ((pop-up-windows t)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (customize-group group)))
+ (customize-group group t))
;;;###autoload
(defalias 'customize-variable 'customize-option)
(< minor1 minor2)))))
;;;###autoload
-(defun customize-face (&optional face)
+(defun customize-face (&optional face other-window)
"Customize FACE, which should be a face name or nil.
If FACE is nil, customize all faces. If FACE is actually a
face-alias, customize the face it is aliased to.
+If OTHER-WINDOW is non-nil, display in another window.
+
Interactively, when point is on text which has a face specified,
suggest to customize that face, if it's customizable."
(interactive (list (read-face-name "Customize face" "all faces" t)))
(setq face (face-list)))
(if (and (listp face) (null (cdr face)))
(setq face (car face)))
- (if (listp face)
- (custom-buffer-create
- (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))
- (custom-buffer-create
- (list (list face 'custom-face))
- (format "*Customize Face: %s*"
- (custom-unlispify-tag-name face)))))
+ (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))))))
;;;###autoload
(defun customize-face-other-window (&optional face)
Interactively, when point is on text which has a face specified,
suggest to customize that face, if it's customizable."
(interactive (list (read-face-name "Customize face" "all faces" t)))
- (let ((pop-up-windows t)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (customize-face face)))
+ (customize-face face t))
(defalias 'customize-customized 'customize-unsaved)
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."
- (pop-to-buffer (custom-get-fresh-buffer (or name "*Customization*")))
+ (pop-to-buffer-same-window (custom-get-fresh-buffer (or name "*Customization*")))
(custom-buffer-create-internal options description))
;;;###autoload
SYMBOL is a customization option, and WIDGET is a widget for editing
that option."
(unless name (setq name "*Customization*"))
- (let ((pop-up-windows t)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (pop-to-buffer (custom-get-fresh-buffer name))
- (custom-buffer-create-internal options description)))
+ (switch-to-buffer-other-window (custom-get-fresh-buffer name))
+ (custom-buffer-create-internal options description))
(defcustom custom-reset-button-menu nil
"If non-nil, only show a single reset button in customize buffers.
(unless group
(setq group 'emacs))
(let ((name "*Customize Browser*"))
- (pop-to-buffer (custom-get-fresh-buffer name)))
+ (pop-to-buffer-same-window (custom-get-fresh-buffer name)))
(Custom-mode)
(widget-insert (format "\
%s buttons; type RET or click mouse-1
;; We want simple widgets to be displayed by default, but complex
;; widgets to be hidden.
+;; This widget type is obsolete as of Emacs 24.1.
(widget-put (get 'item 'widget-type) :custom-show t)
(widget-put (get 'editable-field 'widget-type)
:custom-show (lambda (_widget value)
(setq widget nil)))))
(widget-setup))
+(make-obsolete 'custom-show "this widget type is no longer supported." "24.1")
(defun custom-show (widget value)
"Non-nil if WIDGET should be shown with VALUE by default."
(let ((show (widget-get widget :custom-show)))
if only the first line of the docstring is shown."))
:group 'customize)
-(defun custom-file ()
+(defun custom-file (&optional no-error)
"Return the file name for saving customizations."
- (file-chase-links
- (or custom-file
- (let ((user-init-file user-init-file)
- (default-init-file
- (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
- (when (null user-init-file)
- (if (or (file-exists-p default-init-file)
- (and (eq system-type 'windows-nt)
- (file-exists-p "~/_emacs")))
- ;; Started with -q, i.e. the file containing
- ;; Custom settings hasn't been read. Saving
- ;; settings there would overwrite other settings.
- (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
- (setq user-init-file default-init-file))
- user-init-file))))
+ (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))))
;; If recentf-mode is non-nil, this is defined.
(declare-function recentf-expand-file-name "recentf" (name))