From 57d49df6cce483f9ee5820e192616ed100013bb0 Mon Sep 17 00:00:00 2001 From: Teodor Zlatanov Date: Wed, 19 Dec 2007 01:13:30 +0000 Subject: [PATCH] (gnus-registry-mark-article) (gnus-registry-article-marks): Add functionality to mark articles through the Gnus registry. --- lisp/ChangeLog | 6 ++++-- lisp/gnus-registry.el | 48 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index caa7485cc..feaeece1d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2007-12-19 Teodor Zlatanov + * gnus-registry.el (gnus-registry-mark-article) + (gnus-registry-article-marks): Add functionality to mark articles + through the Gnus registry. + * encrypt.el: Clarify documentation for the new pgg method. (encrypt-file-alist): Add PGG option. (encrypt-insert-file-contents, encrypt-write-file-contents): Use PGG @@ -9,8 +13,6 @@ (encrypt-pgg-encode-buffer, encrypt-pgg-decode-buffer) (encrypt-pgg-process-buffer): Add PGG functionality glue. -2007-12-19 Teodor Zlatanov - * netrc.el: Autoload encrypt when encrypt-file-alist is set. (netrc-parse): Use encrypt-file-alist to determine if encrypt-find-model or encrypt-insert-file-contents should be used. diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index d45cc6c5d..bbc69ea34 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -586,6 +586,54 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (string-match word x)) list))))) +(defun gnus-registry-mark-article (article &optional mark remove) + "Mark ARTICLE with MARK in the Gnus registry or remove MARK. +MARK can be any symbol. If ARTICLE is nil, then the +`gnus-current-article' will be marked. If MARK is nil, +`gnus-registry-flag-default' will be used." + (interactive "nArticle number: ") + (let ((article (or article gnus-current-article)) + (mark (or mark 'gnus-registry-flag-default)) + article-id) + (unless article + (error "No article on current line")) + (setq article-id + (gnus-registry-fetch-message-id-fast gnus-current-article)) + (unless article-id + (error "No article ID could be retrieved")) + (let* ( + ;; all the marks for this article + (marks (gnus-registry-fetch-extra-flags article-id)) + ;; the marks without the mark of interest + (cleaned-marks (delq mark marks)) + ;; the new marks we want to use + (new-marks (if remove + cleaned-marks + (cons mark cleaned-marks)))) + (apply 'gnus-registry-store-extra-flags ; set the extra flags + article-id ; for the message ID + new-marks) + (gnus-registry-fetch-extra-flags article-id)))) + +(defun gnus-registry-article-marks (article) + "Get the Gnus registry marks for ARTICLE. +If ARTICLE is nil, then the `gnus-current-article' will be +used." + (interactive "nArticle number: ") + (let ((article (or article gnus-current-article)) + article-id) + (unless article + (error "No article on current line")) + (setq article-id + (gnus-registry-fetch-message-id-fast gnus-current-article)) + (unless article-id + (error "No article ID could be retrieved")) + (gnus-message 1 + "Message ID %s, Registry flags: %s" + article-id + (concat (gnus-registry-fetch-extra-flags article-id))))) + + ;;; if this extends to more than 'flags, it should be improved to be more generic. (defun gnus-registry-fetch-extra-flags (id) "Get the flags of a message, based on the message ID. -- 2.25.1