From: Tassilo Horn <tsdh@gnu.org>
To: info-gnus-english@gnu.org
Subject: Re: Some Gnus Registry questions
Date: Wed, 03 Jul 2013 10:07:09 +0200 [thread overview]
Message-ID: <87obakvzgy.fsf@thinkpad.tsdh.de> (raw)
In-Reply-To: <m27ghutnwz.fsf@lifelogs.com>
Ted Zlatanov <tzz@lifelogs.com> writes:
> On Thu, 13 Jun 2013 08:08:40 +0200 Tassilo Horn <tsdh@gnu.org> wrote:
>
> TH> Ok, so now I've set gnus-registry-track-extra to nil in order to make
> TH> the registry only track message ids. That works fine for new articles,
> TH> but is there a way to remove the sender, recipients, and subjects from
> TH> old articles that are already contained in the registry?
>
> TH> `gnus-registry-remake-db' looks like it will erase all information, so
> TH> I've not tried that so far.
>
> I have definitely not needed this so far :)
>
> You can probably write it starting with `gnus-registry-remove-ignored'
> for the iteration across all articles and for each article, do something
> like this (untested):
>
> (defun gnus-registry-remove-id-key (id key)
> (let ((db gnus-registry-db)
> (entry (gnus-registry-get-or-make-entry id)))
> (registry-delete db (list id) nil)
> (setq entry (assq-delete-all key entry))
> (gnus-registry-insert db id entry)
> entry))
>
> where `key' is 'subject for example. If that works for you, I can add
> both a more generic iteration and the remove function above.
Thanks. I've come up with this, and it seems to work:
--8<---------------cut here---------------start------------->8---
(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
if 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 (cl-remove-if #'(lambda (entry)
(member (car entry) extra))
v)))
(registry-delete db (list k) nil)
(gnus-registry-insert db k newv)))
(registry-reindex db))))
--8<---------------cut here---------------end--------------->8---
However, it didn't shrink the size of the registry that much (reduced
the size by about one fourth).
Anyway, I think it's useful. Should I add it to gnus-registry.el? (I
guess I'll have to remove the `cl-remove-if' to stay compatible with
older emacsen...)
Bye,
Tassilo
next prev parent reply other threads:[~2013-07-03 8:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.23938.1365663121.855.info-gnus-english@gnu.org>
2013-06-10 4:21 ` Ted Zlatanov
2013-06-10 6:55 ` Tassilo Horn
2013-06-13 6:08 ` Tassilo Horn
[not found] ` <mailman.1516.1371103738.22516.info-gnus-english@gnu.org>
2013-06-16 9:17 ` Ted Zlatanov
2013-07-03 8:07 ` Tassilo Horn [this message]
[not found] ` <mailman.116.1372838844.12400.info-gnus-english@gnu.org>
2013-07-08 12:15 ` Ted Zlatanov
2013-04-11 6:51 Tassilo Horn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87obakvzgy.fsf@thinkpad.tsdh.de \
--to=tsdh@gnu.org \
--cc=info-gnus-english@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).