]> code.delx.au - gnu-emacs-elpa/commitdiff
Add timing information to async commands
authorOleh Krehel <ohwoeowho@gmail.com>
Mon, 11 Apr 2016 12:03:00 +0000 (14:03 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Mon, 11 Apr 2016 12:03:00 +0000 (14:03 +0200)
* counsel.el (counsel--async-start):
(counsel--async-duration): New defvar.
(counsel--async-command): (re) set `counsel--async-start'.
(counsel--async-sentinel): recompute `counsel--async-duration'.

Useful to see how long last query took to process.

counsel.el

index 6a657b7f48abd40a7e9eb0b42d1817ec67e29a0f..b5506a070b097753761b524e9d7af48d9894f7c0 100644 (file)
   "Store the time when a new process was started.
 Or the time of the last minibuffer update.")
 
+(defvar counsel--async-start nil
+  "Store the time when a new process was started.
+Or the time of the last minibuffer update.")
+
+(defvar counsel--async-duration nil
+  "Store the time in seconds between starting a process and
+  receiving all candidates.")
+
 (defvar counsel--async-exit-code-plist nil
   "Associates exit codes with reasons.")
 
@@ -108,7 +116,8 @@ Or the time of the last minibuffer update.")
                 counsel--process
                 counsel--process
                 cmd))
-    (setq counsel--async-time (current-time))
+    (setq counsel--async-start
+          (setq counsel--async-time (current-time)))
     (set-process-sentinel proc (or process-sentinel #'counsel--async-sentinel))
     (set-process-filter proc (or process-filter #'counsel--async-filter))))
 
@@ -132,6 +141,8 @@ Or the time of the last minibuffer update.")
            (ivy--set-candidates
             (ivy--sort-maybe
              cands))
+           (setq counsel--async-duration
+                 (time-to-seconds (time-since counsel--async-start)))
            (let ((re (funcall ivy--regex-function ivy-text)))
              (unless (stringp re)
                (setq re (caar re)))