1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-04 08:47:11 +00:00

registry.el (registry-full): Add convenience method. Fix logic.

(registry-insert): Use it.  Fix logic here too.
gnus-registry.el (gnus-registry-insert): Add wrapper that calls `registry-prune' if `registry-full' returns t.
 (gnus-registry-handle-action, gnus-registry-get-or-make-entry, gnus-registry-set-id-key, gnus-registry-usage-test): Use it.
This commit is contained in:
Teodor Zlatanov 2011-05-09 22:27:17 +00:00 committed by Katsumi Yamaoka
parent 9bedd73a50
commit 81d7704c97
3 changed files with 30 additions and 7 deletions

View File

@ -2,6 +2,17 @@
* nntp.el (nntp-open-connection): Set TCP keepalive option.
2011-05-09 Teodor Zlatanov <tzz@lifelogs.com>
* registry.el (registry-full): Add convenience method. Fix logic.
(registry-insert): Use it. Fix logic here too.
* gnus-registry.el (gnus-registry-insert): Add wrapper that calls
`registry-prune' if `registry-full' returns t.
(gnus-registry-handle-action)
(gnus-registry-get-or-make-entry, gnus-registry-set-id-key)
(gnus-registry-usage-test): Use it.
2011-05-07 Julien Danjou <julien@danjou.info>
* shr.el (shr-link): Make shr-link inherit from link by default.

View File

@ -383,7 +383,7 @@ This is not required after changing `gnus-registry-cache-file'."
(gnus-message 10 "Gnus registry: new entry for %s is %S"
id
entry)
(registry-insert db id entry)))
(gnus-registry-insert db id entry)))
;; Function for nn{mail|imap}-split-fancy: look up all references in
;; the cache and if a match is found, return that group.
@ -962,8 +962,8 @@ only the last one's marks are returned."
(entries (registry-lookup db (list id))))
(when (null entries)
(registry-insert db id (list (list 'creation-time (current-time))
'(group) '(sender) '(subject)))
(gnus-registry-insert db id (list (list 'creation-time (current-time))
'(group) '(sender) '(subject)))
(setq entries (registry-lookup db (list id))))
(nth 1 (assoc id entries))))
@ -979,9 +979,17 @@ only the last one's marks are returned."
(entry (gnus-registry-get-or-make-entry id)))
(registry-delete db (list id) nil)
(setq entry (cons (cons key vals) (assq-delete-all key entry)))
(registry-insert db id entry)
(gnus-registry-insert db id entry)
entry))
(defun gnus-registry-insert (db id entry)
"Just like `registry-insert' but tries to prune on error."
(when (registry-full db)
(message "Trying to prune the registry because it's full")
(registry-prune db))
(registry-insert db id entry)
entry)
(defun gnus-registry-import-eld (file)
(interactive "fOld registry file to import? ")
;; example content:
@ -1075,7 +1083,7 @@ only the last one's marks are returned."
(should (equal (gnus-registry-get-id-key "34" 'group) '("togroup")))
(should (equal (gnus-registry-get-id-key "34" 'subject) '("subject 4")))
(message "Trying to insert a duplicate key")
(should-error (registry-insert db "55" '()))
(should-error (gnus-registry-insert db "55" '()))
(message "Looking up individual keys (gnus-registry-get-or-make-entry)")
(should (gnus-registry-get-or-make-entry "22"))
(message "Saving the Gnus registry to %s" tempfile)

View File

@ -261,6 +261,11 @@ With assert non-nil, errors out if the key does not exist already."
(remhash key data)))
keys))
(defmethod registry-full ((db registry-db))
"Checks if registry-db THIS is full."
(>= (registry-size db)
(oref db :max-hard)))
(defmethod registry-insert ((db registry-db) key entry)
"Insert ENTRY under KEY into the registry-db THIS.
Updates the secondary ('tracked') indices as well.
@ -269,8 +274,7 @@ Errors out if the key exists already."
(assert (not (gethash key (oref db :data))) nil
"Key already exists in database")
(assert (< (registry-size db)
(oref db :max-hard))
(assert (not (registry-full db))
nil
"registry max-hard size limit reached")