(customize-read-group): New fun.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 28 Jul 2007 20:03:40 +0000 (20:03 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 28 Jul 2007 20:03:40 +0000 (20:03 +0000)
(customize-group-other-window, customize-face-other-window):
Prompt before delegating to customize-(group|face).
Bind pop-up-windows rather than use the other-window argument.
(customize-group, customize-face): Prompt from the interactive spec.
Remove args `prompt-for-group' and `other-window'.

lisp/ChangeLog
lisp/cus-edit.el

index eb4f244..0a55d2a 100644 (file)
@@ -1,5 +1,12 @@
 2007-07-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * cus-edit.el (customize-read-group): New fun.
+       (customize-group-other-window, customize-face-other-window):
+       Prompt before delegating to customize-(group|face).
+       Bind pop-up-windows rather than use the other-window argument.
+       (customize-group, customize-face): Prompt from the interactive spec.
+       Remove args `prompt-for-group' and `other-window'.
+
        * emacs-lisp/advice.el (ad-interactive-form): Re-introduce.
        (ad-body-forms, ad-advised-interactive-form): Revert this part of
        last change.
index 203129b..200f173 100644 (file)
 
 (require 'cus-face)
 (require 'wid-edit)
-(eval-when-compile
-  (defvar custom-versions-load-alist)  ; from cus-load
-  (defvar recentf-exclude))            ; from recentf.el
+
+(defvar custom-versions-load-alist)    ; from cus-load
+(defvar recentf-exclude)               ; from recentf.el
 
 (condition-case nil
     (require 'cus-load)
@@ -1032,22 +1032,20 @@ then prompt for the MODE to customize."
                          t nil nil (if group (symbol-name major-mode))))))))
   (customize-group (custom-group-of-mode mode)))
 
+(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)))
 
 ;;;###autoload
-(defun customize-group (&optional group prompt-for-group other-window)
+(defun customize-group (&optional group)
   "Customize GROUP, which must be a customization group."
-  (interactive)
-  (and (null group)
-       (or prompt-for-group (called-interactively-p))
-       (let ((completion-ignore-case t))
-        (setq group
-              (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))))
+  (interactive (list (customize-read-group)))
   (when (stringp group)
     (if (string-equal "" group)
        (setq group 'emacs)
@@ -1055,25 +1053,21 @@ then prompt for the MODE to customize."
   (let ((name (format "*Customize Group: %s*"
                      (custom-unlispify-tag-name group))))
     (if (get-buffer name)
-       (if other-window
-           (let ((pop-up-windows t)
-                 (same-window-buffer-names nil)
-                 (same-window-regexps nil))
-             (pop-to-buffer name))
-         (pop-to-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))))))
+        (pop-to-buffer name)
+      (custom-buffer-create
+       (list (list group 'custom-group))
+       name
+       (concat " for group "
+               (custom-unlispify-tag-name group))))))
 
 ;;;###autoload
 (defun customize-group-other-window (&optional group)
   "Customize GROUP, which must be a customization group, in another window."
-  (interactive)
-  (customize-group group t t))
+  (interactive (list (customize-read-group)))
+  (let ((pop-up-windows t)
+        (same-window-buffer-names nil)
+        (same-window-regexps nil))
+    (customize-group group)))
 
 ;;;###autoload
 (defalias 'customize-variable 'customize-option)
@@ -1254,41 +1248,33 @@ Emacs that is associated with version VERSION of PACKAGE."
             (< minor1 minor2)))))
 
 ;;;###autoload
-(defun customize-face (&optional face prompt-for-face other-window)
+(defun customize-face (&optional face)
   "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.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
-  (interactive)
-  (and (null face)
-       (or prompt-for-face (called-interactively-p))
-       (setq face (read-face-name "Customize face" "all faces" t)))
+  (interactive (list (read-face-name "Customize face" "all faces" t)))
   (if (member face '(nil ""))
       (setq face (face-list)))
   (if (and (listp face) (null (cdr face)))
       (setq face (car face)))
-  (let ((create-buffer-fn (if other-window
-                             'custom-buffer-create-other-window
-                           'custom-buffer-create)))
-    (if (listp face)
-       (funcall create-buffer-fn
-                (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 create-buffer-fn
-              (list (list face 'custom-face))
-              (format "*Customize Face: %s*"
-                      (custom-unlispify-tag-name 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)))))
 
 ;;;###autoload
 (defun customize-face-other-window (&optional face)
@@ -1297,8 +1283,11 @@ If FACE is actually a face-alias, customize the face it is aliased to.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
-  (interactive)
-  (customize-face face t t))
+  (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)))
 
 (defalias 'customize-customized 'customize-unsaved)