From 584376ed60bab46579d52434749da73c1580b600 Mon Sep 17 00:00:00 2001 From: Tassilo Horn Date: Mon, 8 Jul 2013 15:37:26 +0200 Subject: [PATCH] Add function to remove extra data from the registry. * gnus-registry.el (gnus-registry-remove-extra-data): New function. * gnus.texi (lines): Correct description of `gnus-registry-track-extra's default value. Mention `gnus-registry-remove-extra-data'. --- lisp/ChangeLog | 4 ++++ lisp/gnus-registry.el | 23 +++++++++++++++++++++++ texi/ChangeLog | 6 ++++++ texi/gnus.texi | 10 +++++++--- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5859e4b98..d11974f45 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2013-07-08 Tassilo Horn + + * gnus-registry.el (gnus-registry-remove-extra-data): New function. + 2013-07-06 Lars Ingebrigtsen * gnus-art.el (gnus-block-private-groups): Allow `global' methods to diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index 5a7dfd82d..6f2fe78c3 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -1186,6 +1186,29 @@ data stored in the registry." (gnus-select-group-with-message-id group message-id) t) (throw 'found t)))))))) +(defun gnus-registry-remove-extra-data (extra) + "Remove tracked EXTRA data from the gnus registry. +EXTRA is a list of symbols. Valid symbols are those contained in +the docs of `gnus-registry-track-extra'. This command is useful +when you stop tracking some extra data and now want to purge it +from your existing entries." + (interactive (list (mapcar 'intern + (completing-read-multiple + "Extra data: " + '("subject" "sender" "recipient"))))) + (when extra + (let ((db gnus-registry-db)) + (registry-reindex db) + (loop for k being the hash-keys of (oref db :data) + using (hash-value v) + do (let ((newv (delq nil (mapcar #'(lambda (entry) + (unless (member (car entry) extra) + entry)) + v)))) + (registry-delete db (list k) nil) + (gnus-registry-insert db k newv))) + (registry-reindex db)))) + ;; TODO: a few things (provide 'gnus-registry) diff --git a/texi/ChangeLog b/texi/ChangeLog index a4537e147..370d09abe 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,9 @@ +2013-07-08 Tassilo Horn + + * gnus.texi (lines): Correct description of + `gnus-registry-track-extra's default value. Mention + `gnus-registry-remove-extra-data'. + 2013-07-06 Lars Ingebrigtsen * gnus.texi (Group Parameters): Mention regexp diff --git a/texi/gnus.texi b/texi/gnus.texi index 0501bf7c1..7e6802de2 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -26006,9 +26006,13 @@ following variables. @defvar gnus-registry-track-extra This is a list of symbols, so it's best to change it from the -Customize interface. By default it's @code{(subject sender)}, which -may work for you. It can be annoying if your mail flow is large and -people don't stick to the same groups. +Customize interface. By default it's @code{(subject sender recipient)}, +which may work for you. It can be annoying if your mail flow is large +and people don't stick to the same groups. + +When you decide to stop tracking any of those extra data, you can use +the command @code{gnus-registry-remove-extra-data} to purge it from +the existing registry entries. @end defvar @defvar gnus-registry-split-strategy -- 2.25.1