;;; gnus-int.el --- backend interface functions for Gnus
-;; Copyright (C) 1996-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2015 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
(setq gnus-nntp-server
(gnus-completing-read "NNTP server"
(cons gnus-nntp-server
- gnus-secondary-servers)
+ (if (boundp 'gnus-secondary-servers)
+ gnus-secondary-servers))
nil gnus-nntp-server)))
(when (and gnus-nntp-server
(gnus-open-server gnus-select-method)
gnus-batch-mode
(gnus-y-or-n-p
- (format
- "%s (%s) open error: '%s'. Continue? "
+ (gnus-format-message
+ "%s (%s) open error: `%s'. Continue? "
(car gnus-select-method) (cadr gnus-select-method)
(gnus-status-message gnus-select-method)))
(gnus-error 1 "Couldn't open server on %s"
'denied))
(defvar gnus-backend-trace nil)
+(defvar gnus-backend-trace-elapsed nil)
(defun gnus-backend-trace (type form)
- (with-current-buffer (get-buffer-create "*gnus trace*")
- (buffer-disable-undo)
- (goto-char (point-max))
- (insert (format-time-string "%H:%M:%S")
- (format " %.2fs %s %S\n"
- (if (numberp gnus-backend-trace)
- (- (float-time) gnus-backend-trace)
- 0)
- type form))
- (setq gnus-backend-trace (float-time))))
+ (when gnus-backend-trace
+ (with-current-buffer (get-buffer-create "*gnus trace*")
+ (buffer-disable-undo)
+ (goto-char (point-max))
+ (insert (format-time-string "%H:%M:%S")
+ (format " %.2fs %s %S\n"
+ (if (numberp gnus-backend-trace-elapsed)
+ (- (float-time) gnus-backend-trace-elapsed)
+ 0)
+ type form))
+ (setq gnus-backend-trace-elapsed (float-time)))))
(defun gnus-open-server (gnus-command-method)
"Open a connection to GNUS-COMMAND-METHOD."
(setcar
(cdr elem)
(cond (result
- (if (eq open-server-function #'nnagent-open-server)
+ (if (eq open-server-function 'nnagent-open-server)
;; The agent's backend has a "special" status
'offline
'ok))
(funcall (gnus-get-function gnus-command-method func)
(gnus-group-real-name group) (nth 1 gnus-command-method)))))
+(defun gnus-request-group-scan (group info)
+ "Request that GROUP get a complete rescan."
+ (let ((gnus-command-method (gnus-find-method-for-group group))
+ (func 'request-group-scan))
+ (when (gnus-check-backend-function func group)
+ (funcall (gnus-get-function gnus-command-method func)
+ (gnus-group-real-name group) (nth 1 gnus-command-method) info))))
+
(defun gnus-close-group (group)
"Request the GROUP be closed."
(let ((gnus-command-method (inline (gnus-find-method-for-group group))))
(let ((saved-display
(gnus-group-get-parameter group 'display :allow-list)))
- ;; Tell gnus we really don't want any articles
+ ;; Tell gnus we really don't want any articles
(gnus-group-set-parameter group 'display 0)
(unwind-protect
;; Create it now and insert the message
(let ((group-is-new (gnus-summary-setup-buffer group)))
(condition-case err
- (let ((article-number
+ (let ((article-number
(gnus-summary-insert-subject message-id)))
(unless article-number
(signal 'error "message-id not in group"))
(gnus-group-method group)))
(defun gnus-warp-to-article ()
- "Warps from an article in a virtual group to the article in its
-real group. Does nothing on a real group."
+ "Look up the current article in the group where it originated.
+This command only makes sense for groups shows articles gathered
+from other groups -- for instance, search results and the like."
(interactive)
- (when (gnus-virtual-group-p gnus-newsgroup-name)
- (let ((gnus-command-method
- (gnus-find-method-for-group gnus-newsgroup-name)))
- (or
- (when (gnus-check-backend-function
- 'warp-to-article (car gnus-command-method))
- (funcall (gnus-get-function gnus-command-method 'warp-to-article)))
- (and (bound-and-true-p gnus-registry-enabled)
- (gnus-try-warping-via-registry))))))
+ (let ((gnus-command-method
+ (gnus-find-method-for-group gnus-newsgroup-name)))
+ (or
+ (when (gnus-check-backend-function
+ 'warp-to-article (car gnus-command-method))
+ (funcall (gnus-get-function gnus-command-method 'warp-to-article)))
+ (and (bound-and-true-p gnus-registry-enabled)
+ (gnus-try-warping-via-registry)))))
(defun gnus-request-head (article group)
"Request the head of ARTICLE in GROUP."
(defun gnus-request-accept-article (group &optional gnus-command-method last
no-encode)
- ;; Make sure there's a newline at the end of the article.
(when (stringp gnus-command-method)
(setq gnus-command-method (gnus-server-to-method gnus-command-method)))
(when (and (not gnus-command-method)
(setq gnus-command-method (or (gnus-find-method-for-group group)
(gnus-group-name-to-method group))))
(goto-char (point-max))
+ ;; Make sure there's a newline at the end of the article.
(unless (bolp)
(insert "\n"))
(unless no-encode