From affb61b481035b41c7c37b1acb2267a610605aa2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sat, 2 Oct 2010 10:35:45 +0000 Subject: [PATCH] Add lisp/gnus/nnregistry.el. --- lisp/gnus/nnregistry.el | 65 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 lisp/gnus/nnregistry.el diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el new file mode 100644 index 00000000000..b2d80503479 --- /dev/null +++ b/lisp/gnus/nnregistry.el @@ -0,0 +1,65 @@ +;;; nnregistry.el --- access to articles via Gnus' message-id registry +;;; -*- coding: utf-8 -*- + +;; Copyright (C) 2010 Free Software Foundation, Inc. + +;; Authors: Ludovic Courtès +;; Keywords: news, mail + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; This file provides the `nnregistry' Gnus back-end. It can be used +;; in `gnus-refer-article-method' to quickly search for a message by +;; id, regardless of the back-end that stores it. + +;;; Code: + +(require 'nnoo) +(require 'gnus-registry) +(require 'gnus-int) + +(nnoo-declare nnregistry) + +(deffoo nnregistry-server-opened (server) + (eq gnus-registry-install t)) + +(deffoo nnregistry-close-server (server) + t) + +(deffoo nnregistry-status-message (server) + nil) + +(deffoo nnregistry-open-server (server &optional defs) + (eq gnus-registry-install t)) + +(defvar nnregistry-within-nnregistry nil) + +(deffoo nnregistry-request-article (id &optional group server buffer) + (and (not nnregistry-within-nnregistry) + (let* ((nnregistry-within-nnregistry t) + (group (gnus-registry-fetch-group id)) + (gnus-override-method nil)) + (message "nnregistry: requesting article `%s' in group `%s'" + id group) + (and group + (gnus-check-group group) + (gnus-request-article id group buffer))))) + +(provide 'nnregistry) + +;;; nnregistry.el ends here -- 2.39.2