From f1f010ff99c07eb8f1f0ae5d4753e70feaae035e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 11 Mar 2023 13:03:20 -0500 Subject: [PATCH] perf(rss): defer db compaction Compacting elfeed's DB when killing the search buffer can incur a long delay (which blocks Emacs). Doing so isn't really critical, so I've moved it to kill-emacs-hook instead. Close: #7127 Co-authored-by: merrickluo --- modules/app/rss/autoload.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/app/rss/autoload.el b/modules/app/rss/autoload.el index 175a60504..0a651b68c 100644 --- a/modules/app/rss/autoload.el +++ b/modules/app/rss/autoload.el @@ -81,14 +81,18 @@ (setq-local shr-width 85) (set-buffer-modified-p nil))) +(defun +rss--cleanup-on-kill-h () + "Run `elfeed-db-compact'. See `+rss-cleanup-h'." + ;; `delete-file-projectile-remove-from-cache' slows down `elfeed-db-compact' + ;; tremendously, so we disable the projectile cache: + (let (projectile-enable-caching) + (elfeed-db-compact))) + ;;;###autoload (defun +rss-cleanup-h () "Clean up after an elfeed session. Kills all elfeed and elfeed-org files." (interactive) - ;; `delete-file-projectile-remove-from-cache' slows down `elfeed-db-compact' - ;; tremendously, so we disable the projectile cache: - (let (projectile-enable-caching) - (elfeed-db-compact)) + (add-hook 'kill-emacs-hook #'+rss--cleanup-on-kill-h) (let ((buf (previous-buffer))) (when (or (null buf) (not (doom-real-buffer-p buf))) (switch-to-buffer (doom-fallback-buffer))))