diff options
| author | Eric Abrahamsen <eric@ericabrahamsen.net> | 2019-06-16 19:14:25 -0700 |
|---|---|---|
| committer | Eric Abrahamsen <eric@ericabrahamsen.net> | 2019-06-16 19:14:25 -0700 |
| commit | 2815174f100798c6c84f4098dc6eb28336aa951e (patch) | |
| tree | 29ed9ce129f992a98f42aa6b5df6b0dbcce3280d | |
| parent | 8c56eb0525c22acee713434840c2ef0a1a3811cc (diff) | |
| download | emacs-2815174f100798c6c84f4098dc6eb28336aa951e.tar.gz | |
Prevent the Gnus registry from being loaded twice at startup
* lisp/gnus/gnus-registry.el (gnus-registry-load): Check if the
registry is already loaded, and don't load again unless new optional
FORCE argument is non-nil.
(gnus-registry-clear): New function to clear the registry, added as
a Gnus shutdown. Now that loading doesn't unilaterally reset the
registry, we need to make sure it is reloaded when Gnus is.
| -rw-r--r-- | lisp/gnus/gnus-registry.el | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index 6e549cf246d..e488858ebe0 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -307,33 +307,40 @@ This is not required after changing `gnus-registry-cache-file'." (gnus-message 4 "Remaking the Gnus registry") (setq gnus-registry-db (gnus-registry-make-db)))) -(defun gnus-registry-load () - "Load the registry from the cache file." +(defun gnus-registry-load (&optional force) + "Load the registry from the cache file. +If the registry is already loaded, don't reload unless FORCE is +non-nil." (interactive) - (let ((file gnus-registry-cache-file)) - (condition-case nil - (gnus-registry-read file) - (file-error - ;; Fix previous mis-naming of the registry file. - (let ((old-file-name - (concat (file-name-sans-extension - gnus-registry-cache-file) - ".eioio"))) - (if (and (file-exists-p old-file-name) - (yes-or-no-p - (format "Rename registry file from %s to %s? " - old-file-name file))) - (progn - (gnus-registry-read old-file-name) - (setf (oref gnus-registry-db file) file) - (gnus-message 1 "Registry filename changed to %s" file)) - (gnus-registry-remake-db t)))) - (error - (gnus-message - 1 - "The Gnus registry could not be loaded from %s, creating a new one" - file) - (gnus-registry-remake-db t))))) + (when (or force + ;; The registry is loaded by both + ;; `gnus-registry-initialize' and the read-newsrc hook. + ;; Don't load twice. + (null (eieio-object-p gnus-registry-db))) + (let ((file gnus-registry-cache-file)) + (condition-case nil + (gnus-registry-read file) + (file-error + ;; Fix previous mis-naming of the registry file. + (let ((old-file-name + (concat (file-name-sans-extension + gnus-registry-cache-file) + ".eioio"))) + (if (and (file-exists-p old-file-name) + (yes-or-no-p + (format "Rename registry file from %s to %s? " + old-file-name file))) + (progn + (gnus-registry-read old-file-name) + (setf (oref gnus-registry-db file) file) + (gnus-message 1 "Registry filename changed to %s" file)) + (gnus-registry-remake-db t)))) + (error + (gnus-message + 1 + "The Gnus registry could not be loaded from %s, creating a new one" + file) + (gnus-registry-remake-db t)))))) (defun gnus-registry-read (file) "Do the actual reading of the registry persistence file." @@ -1102,6 +1109,12 @@ only the last one's marks are returned." (gnus-registry-set-id-key id key val)))) (message "Import done, collected %d entries" count)))) +(defun gnus-registry-clear () + "Clear the registry." + (setq gnus-registry-db nil)) + +(gnus-add-shutdown 'gnus-registry-clear 'gnus) + ;;;###autoload (defun gnus-registry-initialize () "Initialize the Gnus registry." |
