]> git.eshelyaron.com Git - emacs.git/commitdiff
Put ELP results in a special-mode buffer
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 31 May 2021 06:17:00 +0000 (08:17 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 31 May 2021 06:17:00 +0000 (08:17 +0200)
* 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.

lisp/emacs-lisp/elp.el

index 2ee19a35b2348bdd626616b8c82c3a7223f0ee3d..7c7961c4d5a0bcf76cda4d139b323e96d4ee9005 100644 (file)
@@ -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)))