value."
(interactive "xPp-eval: ")
(setq values (cons (eval expression) values))
- (let* ((old-show-hook
- (or (let ((sym (if (> (string-to-int emacs-version) 18)
- 'temp-buffer-show-function
- 'temp-buffer-show-hook)))
- (and (boundp 'sym) (symbol-value sym)))
- 'display-buffer))
- (temp-buffer-show-hook
+ (let* ((old-show-function temp-buffer-show-function)
+ ;; Use this function to display the buffer.
+ ;; This function either decides not to display it at all
+ ;; or displays it in the usual way.
+ (temp-buffer-show-function
(function
(lambda (buf)
(save-excursion
(end-of-line 1)
(if (or (< (1+ (point)) (point-max))
(>= (- (point) (point-min)) (screen-width)))
- (progn
+ (let ((temp-buffer-show-function old-show-function)
+ (old-selected (selected-window))
+ (window (display-buffer buf)))
(goto-char (point-min)) ; expected by some hooks ...
- (funcall old-show-hook buf))
+ (make-frame-visible (window-frame window))
+ (unwind-protect
+ (progn
+ (select-window window)
+ (run-hooks 'temp-buffer-show-hook))
+ (select-window old-selected)))
(message "%s" (buffer-substring (point-min) (point)))
- (delete-windows-on buf) ; no need to kill it
- )))))
- (temp-buffer-show-function temp-buffer-show-hook)) ; emacs19 name
+ ))))))
(with-output-to-temp-buffer "*Pp Eval Output*"
(pp (car values)))
(save-excursion