diff lisp/gnus/gnus-registry.el @ 87454:0cbc451989a7

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-967
author Miles Bader <miles@gnu.org>
date Fri, 28 Dec 2007 22:26:31 +0000
parents 1cdfc94602cb
children 107ccd98fa12
line wrap: on
line diff
--- a/lisp/gnus/gnus-registry.el	Fri Dec 28 22:26:14 2007 +0000
+++ b/lisp/gnus/gnus-registry.el	Fri Dec 28 22:26:31 2007 +0000
@@ -586,6 +586,54 @@
 		     (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.