emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/detached 8b224c78b8 1/5: Speed up initialization of ses


From: ELPA Syncer
Subject: [elpa] externals/detached 8b224c78b8 1/5: Speed up initialization of sessions
Date: Fri, 23 Sep 2022 05:57:29 -0400 (EDT)

branch: externals/detached
commit 8b224c78b8ef6cce02c06af1f7a3e7e23dbf2ccd
Author: Niklas Eklund <niklas.eklund@posteo.net>
Commit: Niklas Eklund <niklas.eklund@posteo.net>

    Speed up initialization of sessions
    
    Change detached--initialize-session to not update the database each
    time its called. When the user has many sessions this creates a lot of
    overhead.
    
    The new approach is instead to add a call to
    detached--db-update-sessions after all the individual sessions has
    been initialized which should then only be called once per session
    directory initialization.
---
 detached.el | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/detached.el b/detached.el
index 0f3bcca887..82c64d7195 100644
--- a/detached.el
+++ b/detached.el
@@ -738,7 +738,8 @@ Optionally SUPPRESS-OUTPUT."
       (detached--update-detached-emacsen)
       (thread-last (detached--db-get-sessions)
                    (seq-filter #'detached--session-accessible-p)
-                   (seq-do #'detached--initialize-session)))))
+                   (seq-do #'detached--initialize-session))
+      (detached--db-update-sessions))))
 
 (defun detached-valid-session (session)
   "Ensure that SESSION is valid.
@@ -801,9 +802,11 @@ This function uses the `notifications' library."
 (defun detached-get-sessions ()
   "Return as initialized sessions as possible."
   ;; Try to initialize unknown sessions
-  (thread-last (detached--uninitialized-sessions)
-               (seq-filter #'detached--session-accessible-p)
-               (seq-do #'detached--initialize-session))
+  (when-let ((initialized-sessions
+              (thread-last (detached--uninitialized-sessions)
+                           (seq-filter #'detached--session-accessible-p)
+                           (seq-do #'detached--initialize-session))))
+    (detached--db-update-sessions))
   (detached--db-get-sessions))
 
 (defun detached-shell-command-attach-session (session)
@@ -1294,6 +1297,7 @@ Optionally make the path LOCAL to host."
   (if (detached--uninitialized-session-p session)
       (progn
         (detached--initialize-session session)
+        (detached--db-update-sessions)
         (detached--db-get-session (detached--session-id session)))
     session))
 
@@ -1485,11 +1489,11 @@ session and trigger a state transition."
   (if (detached--active-session-p session)
       (if (detached--state-transition-p session)
           (detached--session-state-transition-update session)
-        (detached--db-update-entry session t)
+        (detached--db-update-entry session)
         (detached--watch-session-directory (detached--session-directory 
session)))
     (if (detached--session-missing-p session)
         (detached--db-remove-entry session)
-      (detached--db-update-entry session t))))
+      (detached--db-update-entry session))))
 
 (defun detached--uninitialized-sessions ()
   "Return a list of uninitialized sessions."
@@ -1519,7 +1523,8 @@ If event is cased by an update to the `detached' 
database, re-initialize
                 (unless (gethash (detached--session-id session) 
detached--hashed-sessions)
                   (if (not (detached--session-accessible-p session))
                       (puthash (detached--session-id session) 'uninitialized 
detached--hashed-sessions)
-                    (detached--initialize-session session))))
+                    (detached--initialize-session session)
+                    (detached--db-update-sessions))))
               (detached--db-get-sessions)))))
 
 (defun detached--annotation-widths (sessions annotation-format)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]