From: "John Wiegley" <johnw@newartisans.com>
To: ding@gnus.org
Subject: Beginning to use async.el to help Gnus' interactivity
Date: Sun, 08 Jul 2012 00:31:31 -0500 [thread overview]
Message-ID: <m2r4sm95u4.fsf@newartisans.com> (raw)
Here is a function I'm now using to help out spam.el. Reporting SPAM to the
Internet takes about 5 seconds per messages, so this *really* helps after
leaving a busy spam group:
(require 'spam)
(require 'async)
(defun spam-spamassassin-register-with-sa-learn (articles spam
&optional unregister)
"Register articles with spamassassin's sa-learn as spam or non-spam."
(if articles
(let ((action (if unregister spam-sa-learn-unregister-switch
(if spam spam-sa-learn-spam-switch
spam-sa-learn-ham-switch)))
(summary-buffer-name (buffer-name)))
(with-temp-buffer
;; group the articles into mbox format
(dolist (article articles)
(let (article-string)
(with-current-buffer summary-buffer-name
(setq article-string (spam-get-article-as-string article)))
(when (stringp article-string)
;; mbox separator
(insert (concat "From nobody " (current-time-string) "\n"))
(insert article-string)
(insert "\n"))))
;; call sa-learn on all messages at the same time, and also report
;; them as SPAM to the Internet
(async-start
`(lambda ()
(with-temp-buffer
(insert ,(buffer-substring-no-properties
(point-min) (point-max)))
(call-process-region (point-min) (point-max)
,spam-sa-learn-program
nil nil nil "--mbox"
,@(if spam-sa-learn-rebuild
(list action)
(list "--no-rebuild" action)))
(if ,spam
(call-process-region (point-min) (point-max)
,(executable-find "spamassassin-5.12")
nil nil nil "--mbox" "-r"))))
`(lambda (&optional ignore)
(message "Finished learning messsages as %s"
,(if spam "spam" "ham"))))))))
John
next reply other threads:[~2012-07-08 5:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-08 5:31 John Wiegley [this message]
2012-07-09 5:22 ` Carson Chittom
2012-07-18 14:03 ` Ted Zlatanov
2012-07-18 18:58 ` John Wiegley
2012-07-18 19:23 ` Ted Zlatanov
2012-07-18 21:27 ` Steinar Bang
2012-07-19 13:36 ` Ted Zlatanov
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=m2r4sm95u4.fsf@newartisans.com \
--to=johnw@newartisans.com \
--cc=ding@gnus.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).