From 9dda75adcd4e7e3961349e52a9e82c66dda968d6 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 28 Feb 2014 10:10:55 +0100 Subject: [PATCH] Revert recent with-temp-buffer-window change (Bug#16816, Bug#16882). * window.el (with-temp-buffer-window): Revert change from 2014-02-21. Suggested by Thierry Volpiatto . Fix doc-string based on a suggestion by Nicolas Richard . * help.el (with-help-window): Fix doc-string. --- lisp/ChangeLog | 16 +++++++++++--- lisp/help.el | 11 +++++++--- lisp/window.el | 57 +++++++++++++++++++++++++------------------------- 3 files changed, 49 insertions(+), 35 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6c645e750d..68f7ebd6fb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,16 @@ +2014-02-28 Martin Rudalics + + Revert recent with-temp-buffer-window change (Bug#16816, Bug#16882). + * window.el (with-temp-buffer-window): Revert change from + 2014-02-21. Suggested by Thierry Volpiatto + . Fix doc-string based on a + suggestion by Nicolas Richard . + * help.el (with-help-window): Fix doc-string. + 2014-02-28 Ivan Kanis - * net/shr.el (shr-put-image): add custom variable - `shr-image-animate' to turn off image animation. It is so slow it + * net/shr.el (shr-put-image): Add custom variable + `shr-image-animate' to turn off image animation. It is so slow it will render emacs unusable. 2014-02-28 Michael Albinus @@ -3304,7 +3313,8 @@ * emacs-lisp/debug.el (debug): Use window-total-height instead of window-total-size. * frame.el (tool-bar-lines-needed): Defalias to tool-bar-height. - * help.el (describe-bindings-internal): Call help-buffer + * help.el (describe-bindings-internal): Use help-buffer as + argument for with-help-window. (temp-buffer-max-width): New option. (resize-temp-buffer-window, help-window-setup) (with-help-window): Rewrite. diff --git a/lisp/help.el b/lisp/help.el index f00accc370..1e3d41eb88 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1194,9 +1194,14 @@ Return VALUE." ;; Note: It's usually always wrong to use `help-print-return-message' in ;; the body of `with-help-window'. (defmacro with-help-window (buffer-name &rest body) - "Display buffer with name BUFFER-NAME in a help window evaluating BODY. -Select help window if the current value of the user option -`help-window-select' says so. Return last value in BODY." + "Display buffer with name BUFFER-NAME in a help window. +Evaluate the forms in BODY with the buffer specified by +BUFFER-NAME current, put that buffer in `help-mode', display the +buffer in a window (see `with-temp-buffer-window' for details) +and issue a message how to deal with that \"help\" window when +it's no more needed. Select the help window if the current value +of the user option `help-window-select' says so. Return last +value in BODY." (declare (indent 1) (debug t)) `(progn ;; Make `help-window-point-marker' point nowhere. The only place diff --git a/lisp/window.el b/lisp/window.el index 72b3138fd7..e51c54012a 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -142,28 +142,27 @@ to `display-buffer'." ;; Return the window. window)))) -;; Doc is very similar to with-output-to-temp-buffer. (defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body) - "Bind `standard-output' to BUFFER-OR-NAME, eval BODY, show the buffer. -BUFFER-OR-NAME must specify either a live buffer, or the name of a -buffer (if it does not exist, this macro creates it). - -This construct makes buffer BUFFER-OR-NAME empty before running BODY. -It does not make the buffer current for BODY. -Instead it binds `standard-output' to that buffer, so that output -generated with `prin1' and similar functions in BODY goes into -the buffer. - -At the end of BODY, this marks the specified buffer unmodified and -read-only, and displays it in a window (but does not select it, or make -the buffer current). The display happens by calling `display-buffer' -with the ACTION argument. If `temp-buffer-resize-mode' is enabled, -the relevant window shrinks automatically. - -This returns the value returned by BODY, unless QUIT-FUNCTION specifies -a function. In that case, it runs the function with two arguments - + "Evaluate BODY in a buffer BUFFER-OR-NAME and show that buffer. +BUFFER-OR-NAME must specify either a live buffer, or the name of +a buffer (if it does not exist, this macro creates it). + +Make the buffer specified by BUFFER-OR-NAME empty before running +BODY and make that buffer current for running the forms in BODY. +In addition, bind `standard-output' to that buffer, so that +output generated with `prin1' and similar functions in BODY goes +into that buffer. + +At the end of BODY, mark the specified buffer unmodified and +read-only, and display it in a window (but do not select it). +The display happens by calling `display-buffer' passing it the +ACTION argument. If `temp-buffer-resize-mode' is enabled, the +corresponding window may shrink automatically. + +Return the value returned by BODY, unless QUIT-FUNCTION specifies +a function. In that case, run that function with two arguments - the window showing the specified buffer and the value returned by -BODY - and returns the value returned by that function. +BODY - and return the value returned by that function. If the buffer is displayed on a new frame, the window manager may decide to select that frame. In that case, it's usually a good @@ -172,16 +171,16 @@ before reading any value from the minibuffer; for example, when asking a `yes-or-no-p' question. This runs the hook `temp-buffer-window-setup-hook' before BODY, -with the specified buffer temporarily current. It runs the -hook `temp-buffer-window-show-hook' after displaying the buffer, -with that buffer temporarily current, and the window that was used to +with the specified buffer temporarily current. It runs the hook +`temp-buffer-window-show-hook' after displaying the buffer, with +that buffer temporarily current, and the window that was used to display it temporarily selected. -This construct is similar to `with-output-to-temp-buffer', but -runs different hooks. In particular, it does not run -`temp-buffer-setup-hook', which usually puts the buffer in Help mode. -Also, it does not call `temp-buffer-show-function' (the ACTION -argument replaces this)." +This construct is similar to `with-output-to-temp-buffer' but, +unlike that, makes BUFFER-OR-NAME current when running BODY. +Also, it neither runs `temp-buffer-setup-hook' which usually puts +the buffer in Help mode, nor `temp-buffer-show-function' (the +ACTION argument replaces this)." (declare (debug t)) (let ((buffer (make-symbol "buffer")) (window (make-symbol "window")) @@ -189,8 +188,8 @@ argument replaces this)." `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) (standard-output ,buffer) ,window ,value) - (setq ,value (progn ,@body)) (with-current-buffer ,buffer + (setq ,value (progn ,@body)) (setq ,window (temp-buffer-window-show ,buffer ,action))) (if (functionp ,quit-function) -- 2.20.1