diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 02866c80152..1a997152194 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -22,8 +22,16 @@ (display-buffer--maybe-same-window): Renamed from display-buffer-maybe-same-window. - * cus-edit.el: - * info.el: + * info.el: Don't set same-window-regexps. + (info-setup): New function. + (info-other-window, info): Call it. + + * cus-edit.el: Don't set same-window-regexps. + (customize-group): New argument. + (customize-group-other-window): Use it. + (customize-face, customize-face-other-window): Likewise. + (custom-buffer-create-other-window): Use pop-to-buffer directly. + * net/rlogin.el: * net/telnet.el: * progmodes/gud.el: Don't set same-window-regexps. diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index c09b84cbc38..4411fb42508 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1101,8 +1101,9 @@ then prompt for the MODE to customize." 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) @@ -1111,21 +1112,20 @@ then prompt for the MODE to customize." (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)))))) + (pop-to-buffer name other-window) + (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)))))) ;;;###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) @@ -1306,11 +1306,13 @@ Emacs that is associated with version VERSION of PACKAGE." (< 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))) @@ -1318,21 +1320,24 @@ suggest to customize that face, if it's customizable." (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) @@ -1342,10 +1347,7 @@ 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 (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) @@ -1543,11 +1545,8 @@ 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." (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))) + (pop-to-buffer (custom-get-fresh-buffer name) t) + (custom-buffer-create-internal options description)) (defcustom custom-reset-button-menu nil "If non-nil, only show a single reset button in customize buffers. diff --git a/lisp/info.el b/lisp/info.el index f6afeafc446..e5aa5714c72 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -610,8 +610,7 @@ in `Info-file-supports-index-cookies-list'." "Like `info' but show the Info buffer in another window." (interactive (if current-prefix-arg (list (read-file-name "Info file name: " nil nil t)))) - (let (same-window-buffer-names same-window-regexps) - (info file-or-node))) + (info-setup file-or-node (pop-to-buffer "*info*" t))) ;;;###autoload (put 'info 'info-file (purecopy "emacs")) ;;;###autoload @@ -641,7 +640,10 @@ See a list of available Info commands in `Info-mode'." (read-file-name "Info file name: " nil nil t)) (if (numberp current-prefix-arg) (format "*info*<%s>" current-prefix-arg)))) - (pop-to-buffer (or buffer "*info*")) + (info-setup file-or-node (pop-to-buffer (or buffer "*info*")))) + +(defun info-setup (file-or-node buffer) + "Display Info node FILE-OR-NODE in BUFFER." (if (and buffer (not (eq major-mode 'Info-mode))) (Info-mode)) (if file-or-node