branch: elpa/magit
commit f637dd1877c76e89a1d423657425cdcde2e4d723
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-toggle-profiling: New command
---
docs/magit.org | 5 +++++
docs/magit.texi | 5 +++++
lisp/magit-mode.el | 17 +++++++++++++++++
3 files changed, 27 insertions(+)
diff --git a/docs/magit.org b/docs/magit.org
index 675ba9e358a..72a4cac0317 100644
--- a/docs/magit.org
+++ b/docs/magit.org
@@ -9370,6 +9370,11 @@ issue.
This command profiles refreshing the current Magit buffer and then
displays the results.
+- Key: M-x magit-toggle-profiling ::
+
+ This command starts profiling Magit and Forge, or if profiling is
+ already in progress, it instead stops that and displays the results.
+
- Key: M-x with-editor-debug ::
This command displays a buffer containing information about the
diff --git a/docs/magit.texi b/docs/magit.texi
index 74f15c1be55..e9bd7ec3422 100644
--- a/docs/magit.texi
+++ b/docs/magit.texi
@@ -11456,6 +11456,11 @@ Also see @ref{Git Executable}.
This command profiles refreshing the current Magit buffer and then
displays the results.
+@item @kbd{M-x magit-toggle-profiling}
+@findex magit-toggle-profiling
+This command starts profiling Magit and Forge, or if profiling is
+already in progress, it instead stops that and displays the results.
+
@item @kbd{M-x with-editor-debug}
@findex with-editor-debug
This command displays a buffer containing information about the
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index 617bf87a662..2a7b79fe1a2 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -1109,6 +1109,23 @@ Run hooks `magit-pre-refresh-hook' and
`magit-post-refresh-hook'."
(elp-results)
(elp-reset-all))
+(defun magit-toggle-profiling ()
+ "Start profiling Magit, or if in progress, stop and display the results."
+ (interactive)
+ (require (quote elp))
+ (cond ((catch 'in-progress
+ (mapatoms (lambda (symbol)
+ (and (get symbol elp-timer-info-property)
+ (throw 'in-progress t)))))
+ (message "Stop profiling and display results...")
+ (elp-results)
+ (elp-restore-all))
+ (t
+ (message "Start profiling Magit and Forge...")
+ (elp-reset-all)
+ (elp-instrument-package "magit-")
+ (elp-instrument-package "forge-"))))
+
;;; Save File-Visiting Buffers
(defvar magit--disable-save-buffers nil)