summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/elp.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-05-31 08:17:00 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-05-31 08:17:00 +0200
commitd51e6af9a70fac29881edf4e303d4f1ef4ec2b4a (patch)
tree940937947f3633e67f3d5ae6669c7262c6f90681 /lisp/emacs-lisp/elp.el
parent2009832a8229ac90c255bdb0f2dd333e8a2a48be (diff)
downloademacs-d51e6af9a70fac29881edf4e303d4f1ef4ec2b4a.tar.gz
Put ELP results in a special-mode buffer
* lisp/emacs-lisp/elp.el (elp-results): Make `q' work in ELP results buffer (bug#14104). (elp-results-mode): Define as an empty special mode derivation.
Diffstat (limited to 'lisp/emacs-lisp/elp.el')
-rw-r--r--lisp/emacs-lisp/elp.el18
1 files changed, 10 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index 2ee19a35b23..7c7961c4d5a 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -483,6 +483,10 @@ original definition, use \\[elp-restore-function] or \\[elp-restore-all]."
'face 'link
'help-echo "mouse-2 or RET jumps to definition")))
+(define-derived-mode elp-results-mode special-mode "ELP"
+ "Mode for ELP results"
+ :interactive nil)
+
;;;###autoload
(defun elp-results ()
"Display current profiling results.
@@ -490,11 +494,12 @@ If `elp-reset-after-results' is non-nil, then current profiling
information for all instrumented functions is reset after results are
displayed."
(interactive)
- (let ((curbuf (current-buffer))
- (resultsbuf (if elp-recycle-buffers-p
- (get-buffer-create elp-results-buffer)
- (generate-new-buffer elp-results-buffer))))
- (set-buffer resultsbuf)
+ (pop-to-buffer
+ (if elp-recycle-buffers-p
+ (get-buffer-create elp-results-buffer)
+ (generate-new-buffer elp-results-buffer)))
+ (elp-results-mode)
+ (let ((inhibit-read-only t))
(erase-buffer)
;; get the length of the longest function name being profiled
(let* ((longest 0)
@@ -565,9 +570,6 @@ displayed."
(if elp-sort-by-function
(setq resvec (sort resvec elp-sort-by-function)))
(mapc 'elp-output-result resvec))
- ;; now pop up results buffer
- (set-buffer curbuf)
- (pop-to-buffer resultsbuf)
;; copy results to standard-output?
(if (or elp-use-standard-output noninteractive)
(princ (buffer-substring (point-min) (point-max)))