(defun pfm-run-command-on-article (command &optional replace) (interactive "sCommand: \nP") (let ((n (gnus-summary-article-number)) (g gnus-newsgroup-name)) (with-temp-buffer (gnus-request-article n g (current-buffer)) (shell-command-on-region (point-min) (point-max) command) (if replace (gnus-request-replace-article n g (current-buffer))) ))) (define-key gnus-summary-mode-map (read-kbd-macro "C-c R s") '(lambda () (interactive) (pfm-run-command-on-article "sa-learn --spam" )) ) (define-key gnus-summary-mode-map (read-kbd-macro "C-c R h") '(lambda () (interactive) (pfm-run-command-on-article "sa-learn --ham"))