* lisp/emacs-lisp/trace.el (trace--display-buffer): New function.

(trace-make-advice): Use it.
This commit is contained in:
Stefan Monnier 2013-05-06 18:33:24 -04:00
parent 32985194f2
commit ee6cff9923
2 changed files with 19 additions and 10 deletions

View file

@ -1,3 +1,8 @@
2013-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/trace.el (trace--display-buffer): New function.
(trace-make-advice): Use it.
2013-05-06 Juri Linkov <juri@jurta.org>
* emacs-lisp/lisp-mode.el (eval-defun-2): Doc fix. (Bug#14344)

View file

@ -200,6 +200,18 @@ some global variables)."
(defvar trace--timer nil)
(defun trace--display-buffer (buf)
(unless (or trace--timer
(get-buffer-window buf 'visible))
(setq trace--timer
;; Postpone the display to some later time, in case we
;; can't actually do it now.
(run-with-timer 0 nil
(lambda ()
(setq trace--timer nil)
(display-buffer buf nil 0))))))
(defun trace-make-advice (function buffer background context)
"Build the piece of advice to be added to trace FUNCTION.
FUNCTION is the name of the traced function.
@ -214,15 +226,7 @@ be printed along with the arguments in the trace."
(unless inhibit-trace
(with-current-buffer trace-buffer
(set (make-local-variable 'window-point-insertion-type) t)
(unless (or background trace--timer
(get-buffer-window trace-buffer 'visible))
(setq trace--timer
;; Postpone the display to some later time, in case we
;; can't actually do it now.
(run-with-timer 0 nil
(lambda ()
(setq trace--timer nil)
(display-buffer trace-buffer)))))
(unless background (trace--display-buffer trace-buffer))
(goto-char (point-max))
;; Insert a separator from previous trace output:
(if (= trace-level 1) (insert trace-separator))
@ -235,7 +239,7 @@ be printed along with the arguments in the trace."
(unless inhibit-trace
(let ((ctx (funcall context)))
(with-current-buffer trace-buffer
(unless background (display-buffer trace-buffer))
(unless background (trace--display-buffer trace-buffer))
(goto-char (point-max))
(insert
(trace-exit-message