(require 'mail-utils)
(require 'timezone)
(require 'nnheader)
-(require 'message)
(require 'nnmail)
(require 'backquote)
+(require 'nnoo)
(eval-when-compile (require 'cl))
run Gnus once. After doing that, you must edit this server from the
server buffer.")
+(defvar gnus-message-archive-group nil
+ "*Name of the group in which to save the messages you've written.
+This can either be a string, a list of strings; or an alist
+of regexps/functions/forms to be evaluated to return a string (or a list
+of strings). The functions are called with the name of the current
+group (or nil) as a parameter.
+
+Normally the group names returned by this variable should be
+unprefixed -- which implictly means \"store on the archive server\".
+However, you may wish to store the message on some other server. In
+that case, just return a fully prefixed name of the group --
+\"nnml+private:mail.misc\", for instance.")
+
(defvar gnus-refer-article-method nil
"*Preferred method for fetching an article by Message-ID.
If you are reading news from the local spool (with nnspool), fetching
'(vertical 1.0
(summary 0.25 point)
(if gnus-carpal '(summary-carpal 4))
- (if gnus-use-trees '(tree 0.25))
(article 1.0)))))
(server
(vertical 1.0
"^nnml\\|^nnfolder\\|^nnmbox\\|^nnmh\\|^nnbabyl"
"*All new groups that match this regexp will be subscribed automatically.
Note that this variable only deals with new groups. It has no effect
-whatsoever on old groups.")
+whatsoever on old groups.
+
+New groups that match this regexp will not be handled by
+`gnus-subscribe-newsgroup-method'. Instead, they will
+be subscribed using `gnus-subscribe-options-newsgroup-method'.")
(defvar gnus-options-subscribe nil
"*All new groups matching this regexp will be subscribed unconditionally.
Note that this variable deals only with new newsgroups. This variable
-does not affect old newsgroups.")
+does not affect old newsgroups.
+
+New groups that match this regexp will not be handled by
+`gnus-subscribe-newsgroup-method'. Instead, they will
+be subscribed using `gnus-subscribe-options-newsgroup-method'.")
(defvar gnus-options-not-subscribe nil
"*All new groups matching this regexp will be ignored.
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version-number "5.2.24"
+(defconst gnus-version-number "5.2.28"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
gnus-summary-mail-forward gnus-summary-mail-other-window
gnus-bug)
("gnus-picon" :interactive t gnus-article-display-picons
- gnus-group-display-picons gnus-picons-article-display-x-face)
+ gnus-group-display-picons gnus-picons-article-display-x-face
+ gnus-picons-display-x-face)
("gnus-gl" bbb-login bbb-logout bbb-grouplens-group-p
gnus-grouplens-mode)
("smiley" :interactive t gnus-smiley-display)
gnus-server-alist nil
gnus-group-list-mode nil
gnus-opened-servers nil
+ gnus-group-mark-positions nil
+ gnus-newsgroup-data nil
+ gnus-newsgroup-unreads nil
+ nnoo-state-alist nil
gnus-current-select-method nil)
(gnus-shutdown 'gnus)
;; Kill the startup file.
(apply 'format args)))
(defun gnus-error (level &rest args)
- "Beep an error if `gnus-verbose' is on LEVEL or less."
+ "Beep an error if LEVEL is equal to or less than `gnus-verbose'."
(when (<= (floor level) gnus-verbose)
(apply 'message args)
(ding)
"V" gnus-version
"s" gnus-group-save-newsrc
"z" gnus-group-suspend
- "Z" gnus-group-clear-dribble
+; "Z" gnus-group-clear-dribble
"q" gnus-group-exit
"Q" gnus-group-quit
"?" gnus-group-describe-briefly
(pop opened))
out))
+(defun gnus-archive-server-wanted-p ()
+ "Say whether the user wants to use the archive server."
+ (cond
+ ((or (not gnus-message-archive-method)
+ (not gnus-message-archive-group))
+ nil)
+ ((and gnus-message-archive-method gnus-message-archive-group)
+ t)
+ (t
+ (let ((active (cadr (assq 'nnfolder-active-file
+ gnus-message-archive-method))))
+ (and active
+ (file-exists-p active))))))
+
(defun gnus-group-prefixed-name (group method)
"Return the whole name from GROUP and METHOD."
(and (stringp method) (setq method (gnus-server-to-method method)))
(let* ((prev gnus-newsrc-alist)
(alist (cdr prev)))
(while alist
- (if (= (gnus-info-level level) level)
+ (if (= (gnus-info-level (car alist)) level)
(setcdr prev (cdr alist))
(setq prev alist))
(setq alist (cdr alist)))
(unless (gnus-virtual-group-p group)
(gnus-close-group group))
(gnus-group-update-group group))
- (gnus-error 3 "%s error: %s" group (gnus-status-message group))))
+ (if (eq (gnus-server-status (gnus-find-method-for-group group))
+ 'denied)
+ (gnus-error "Server denied access")
+ (gnus-error 3 "%s error: %s" group (gnus-status-message group)))))
(when beg (goto-char beg))
(when gnus-goto-next-group-when-activating
(gnus-group-next-unread-group 1 t))
(gnus-thread-total-score-1 (list thread)))))
(defun gnus-thread-total-score-1 (root)
- ;; This function finds the total score of the thread below ROOT.
+ ;; This function find the total score of the thread below ROOT.
(setq root (car root))
- (let ((number (mail-header-number root)))
- (if (and (not (memq number gnus-newsgroup-limit))
- (not (memq number gnus-newsgroup-sparse)))
- ;; This article shouldn't be counted.
- (apply gnus-thread-score-function
- (mapcar 'gnus-thread-total-score
- (cdr (gnus-gethash (mail-header-id root)
- gnus-newsgroup-dependencies))))
- ;; This article should be counted.
- (apply gnus-thread-score-function
- (or (cdr (assq number gnus-newsgroup-scored))
- gnus-summary-default-score 0)
- (mapcar 'gnus-thread-total-score
- (cdr (gnus-gethash (mail-header-id root)
- gnus-newsgroup-dependencies)))))))
+ (apply gnus-thread-score-function
+ (or (append
+ (mapcar 'gnus-thread-total-score
+ (cdr (gnus-gethash (mail-header-id root)
+ gnus-newsgroup-dependencies)))
+ (if (> (mail-header-number root) 0)
+ (list (or (cdr (assq (mail-header-number root)
+ gnus-newsgroup-scored))
+ gnus-summary-default-score 0))))
+ (list gnus-summary-default-score)
+ '(0))))
;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
(defvar gnus-tmp-prev-subject nil)
;; Adjust assocs.
((memq mark '(score bookmark))
(while articles
- (when (or (< (car (setq article (pop articles))) min)
+ (when (or (not (consp (setq article (pop articles))))
+ (< (car article) min)
(> (car article) max))
(set var (delq article (symbol-value var))))))))))
(interactive)
(if (gnus-group-read-only-p)
(progn
- (gnus-summary-edit-article-postpone)
- (gnus-error
- 1 "The current newsgroup does not support article editing."))
+ (let ((beep (not (eq major-mode 'text-mode))))
+ (gnus-summary-edit-article-postpone)
+ (when beep
+ (gnus-error
+ 3 "The current newsgroup does not support article editing."))))
(let ((buf (format "%s" (buffer-string))))
(erase-buffer)
(insert buf)
(t (gnus-read-save-file-name
"Save body in file:" default-name))))
(gnus-make-directory (file-name-directory filename))
- (gnus-eval-in-buffer-window gnus-article-buffer
+ (gnus-eval-in-buffer-window gnus-original-article-buffer
(save-excursion
(save-restriction
(widen)
(set-buffer gnus-dribble-buffer)
(insert string "\n")
(set-window-point (get-buffer-window (current-buffer)) (point-max))
+ (bury-buffer)
(set-buffer obuf))))
(defun gnus-dribble-read-file ()
(setcar (cdr entry) (concat (nth 1 entry) "+" group))
(nconc entry (cdr method))))
+(defun gnus-server-status (method)
+ "Return the status of METHOD."
+ (nth 1 (assoc method gnus-opened-servers)))
+
(defun gnus-group-name-to-method (group)
"Return a select method suitable for GROUP."
(if (string-match ":" group)
(gnus-read-newsrc-file rawfile))
(when (and (not (assoc "archive" gnus-server-alist))
- gnus-message-archive-method)
+ (gnus-archive-server-wanted-p))
(push (cons "archive" gnus-message-archive-method)
gnus-server-alist))
(let* ((date (or gnus-newsrc-last-checked-date (current-time-string)))
(methods (cons gnus-select-method
(nconc
- (when gnus-message-archive-method
+ (when (gnus-archive-server-wanted-p)
(list "archive"))
(append
(and (consp gnus-check-new-newsgroups)
;; secondary ones.
gnus-secondary-select-methods)
;; Also read from the archive server.
- (when gnus-message-archive-method
+ (when (gnus-archive-server-wanted-p)
(list "archive"))))
list-type)
(setq gnus-have-read-active-file nil)
(defun gnus-read-all-descriptions-files ()
(let ((methods (cons gnus-select-method
(nconc
- (when gnus-message-archive-method
+ (when (gnus-archive-server-wanted-p)
(list "archive"))
gnus-secondary-select-methods))))
(while methods