X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus-int.el;h=c7b8c8b030abbffa7b5c9342d10f5749bf844de4;hb=8a8cda10c8426092f3f1bf113a06169dbca0a634;hp=4ba7f404649f7aeeeb19c0e74075af0d4ccf26dd;hpb=f9268fd0f1ccb795f165b849afc6c31871319faa;p=elisp%2Fgnus.git- diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 4ba7f40..c7b8c8b 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -1,7 +1,9 @@ ;;; gnus-int.el --- backend interface functions for Gnus -;; Copyright (C) 1996,97,98 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen +;; MORIOKA Tomohiko ;; Keywords: news ;; This file is part of GNU Emacs. @@ -219,10 +221,12 @@ If it is down, start it up (again)." (defun gnus-server-opened (gnus-command-method) "Check whether a connection to GNUS-COMMAND-METHOD has been opened." - (when (stringp gnus-command-method) - (setq gnus-command-method (gnus-server-to-method gnus-command-method))) - (funcall (inline (gnus-get-function gnus-command-method 'server-opened)) - (nth 1 gnus-command-method))) + (unless (eq (gnus-server-status gnus-command-method) + 'denied) + (when (stringp gnus-command-method) + (setq gnus-command-method (gnus-server-to-method gnus-command-method))) + (funcall (inline (gnus-get-function gnus-command-method 'server-opened)) + (nth 1 gnus-command-method)))) (defun gnus-status-message (gnus-command-method) "Return the status message from GNUS-COMMAND-METHOD. @@ -293,6 +297,43 @@ If FETCH-OLD, retrieve all headers (or some subset thereof) in the group." articles (gnus-group-real-name group) (nth 1 gnus-command-method) fetch-old)))) +(defun gnus-retrieve-parsed-headers (articles group &optional fetch-old + dependencies force-new) + "Request parsed-headers for ARTICLES in GROUP. +If FETCH-OLD, retrieve all headers (or some subset thereof) in the group." + (unless dependencies + (setq dependencies + (save-excursion + (set-buffer gnus-summary-buffer) + gnus-newsgroup-dependencies))) + (let ((gnus-command-method (gnus-find-method-for-group group)) + headers) + (if (and gnus-use-cache (numberp (car articles))) + (setq headers + (gnus-cache-retrieve-parsed-headers articles group fetch-old + dependencies force-new)) + (let ((func (gnus-get-function gnus-command-method + 'retrieve-parsed-headers 'no-error))) + (if func + (setq headers (funcall func articles dependencies + (gnus-group-real-name group) + (nth 1 gnus-command-method) fetch-old + force-new) + gnus-headers-retrieved-by (car headers) + headers (cdr headers)) + (setq gnus-headers-retrieved-by + (funcall + (gnus-get-function gnus-command-method 'retrieve-headers) + articles (gnus-group-real-name group) + (nth 1 gnus-command-method) fetch-old)) + ))) + (or headers + (if (eq gnus-headers-retrieved-by 'nov) + (gnus-get-newsgroup-headers-xover + articles nil dependencies gnus-newsgroup-name t) + (gnus-get-newsgroup-headers dependencies))) + )) + (defun gnus-retrieve-articles (articles group) "Request ARTICLES in GROUP." (let ((gnus-command-method (gnus-find-method-for-group group))) @@ -320,11 +361,11 @@ If FETCH-OLD, retrieve all headers (or some subset thereof) in the group." "Set marks on articles in the backend." (let ((gnus-command-method (gnus-find-method-for-group group))) (if (not (gnus-check-backend-function - 'request-set-mark (car gnus-command-method))) - action + 'request-set-mark (car gnus-command-method))) + action (funcall (gnus-get-function gnus-command-method 'request-set-mark) - (gnus-group-real-name group) action - (nth 1 gnus-command-method))))) + (gnus-group-real-name group) action + (nth 1 gnus-command-method))))) (defun gnus-request-update-mark (group article mark) "Allow the backend to change the mark the user tries to put on an article." @@ -411,13 +452,14 @@ If BUFFER, insert the article in that group." (defun gnus-request-scan (group gnus-command-method) "Request a SCAN being performed in GROUP from GNUS-COMMAND-METHOD. If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." - (when gnus-plugged - (let ((gnus-command-method - (if group (gnus-find-method-for-group group) gnus-command-method)) - (gnus-inhibit-demon t)) - (funcall (gnus-get-function gnus-command-method 'request-scan) - (and group (gnus-group-real-name group)) - (nth 1 gnus-command-method))))) + (let ((gnus-command-method + (if group (gnus-find-method-for-group group) gnus-command-method)) + (gnus-inhibit-demon t) + (mail-source-plugged gnus-plugged)) + (if (or gnus-plugged (not (gnus-agent-method-p gnus-command-method))) + (funcall (gnus-get-function gnus-command-method 'request-scan) + (and group (gnus-group-real-name group)) + (nth 1 gnus-command-method))))) (defsubst gnus-request-update-info (info gnus-command-method) "Request that GNUS-COMMAND-METHOD update INFO." @@ -453,11 +495,6 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (goto-char (point-max)) (unless (bolp) (insert "\n")) - (unless no-encode - (save-restriction - (message-narrow-to-head) - (mail-encode-encoded-word-buffer)) - (message-encode-message-body)) (let ((func (car (or gnus-command-method (gnus-find-method-for-group group))))) (funcall (intern (format "%s-request-accept-article" func)) @@ -466,11 +503,6 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." last))) (defun gnus-request-replace-article (article group buffer &optional no-encode) - (unless no-encode - (save-restriction - (message-narrow-to-head) - (mail-encode-encoded-word-buffer)) - (message-encode-message-body)) (let ((func (car (gnus-group-name-to-method group)))) (funcall (intern (format "%s-request-replace-article" func)) article (gnus-group-real-name group) buffer)))