From fecdc73a715dae291759b71a2ed3b3f588e5b307 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Thu, 12 Dec 2024 22:38:30 +0100 Subject: emacs: Generate the project list asyncronously --- .config/emacs/modules/mm-projects.el | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to '.config') diff --git a/.config/emacs/modules/mm-projects.el b/.config/emacs/modules/mm-projects.el index f3a8710..be80789 100644 --- a/.config/emacs/modules/mm-projects.el +++ b/.config/emacs/modules/mm-projects.el @@ -20,18 +20,23 @@ This is intended to be called interactively via (mm-projects-project-magit-status "Git Status" ?s))) :config (unless mm-darwin-p - (if-let ((repo-directory (getenv "REPODIR")) - (directories - (cl-loop - for author in (directory-files repo-directory :full "\\`[^.]") - append (cl-loop - for path in (directory-files author :full "\\`[^.]") - collect (list (concat path "/")))))) - (progn - (with-temp-buffer - (prin1 directories (current-buffer)) - (write-file project-list-file)) - (project--read-project-list)) + (if-let ((repo-directory (getenv "REPODIR"))) + (with-eval-after-load 'async + (async-start + (lambda () + (require 'project) + (let* ((list-dir + (lambda (path) + (directory-files path :full "\\`[^.]"))) + (directories + (cl-loop for author in (funcall list-dir (getenv "REPODIR")) + append (cl-loop for path in (funcall list-dir author) + collect (list (concat path "/")))))) + (with-temp-buffer + (prin1 directories (current-buffer)) + (write-file project-list-file)))) + (lambda (_proc) + (project--read-project-list)))) (warn "The REPODIR environment variable is not set.")))) -- cgit v1.2.3