From: Katsumi Yamaoka Date: Fri, 1 Jun 2007 08:12:45 +0000 (+0000) Subject: * gnus.el (gnus-update-message-archive-method): New variable. X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=0779559e5111910244cb32817bb671d8a2d25174 * gnus.el (gnus-update-message-archive-method): New variable. * gnus-start.el (gnus-setup-news): Update saved "archive" method according to gnus-message-archive-method if gnus-update-message-archive-method is non-nil. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 133ab2b2e..5afdf4586 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2007-06-01 Katsumi Yamaoka + + * gnus.el (gnus-update-message-archive-method): New variable. + + * gnus-start.el (gnus-setup-news): Update saved "archive" method + according to gnus-message-archive-method if + gnus-update-message-archive-method is non-nil. + 2007-05-29 Katsumi Yamaoka * gnus-sum.el (gnus-summary-limit-to-address): New function. Suggested diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 248e418c8..69ecae3eb 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -963,30 +963,34 @@ If LEVEL is non-nil, the news will be set up at level LEVEL." (gnus-read-newsrc-file rawfile)) ;; Make sure the archive server is available to all and sundry. - (when gnus-message-archive-method - (unless (assoc "archive" gnus-server-alist) - (let ((method (or (and (stringp gnus-message-archive-method) - (gnus-server-to-method - gnus-message-archive-method)) - gnus-message-archive-method))) - ;; Check whether the archive method is writable. - (unless (or (stringp method) - (memq 'respool (assoc (format "%s" (car method)) - gnus-valid-select-methods))) - (setq method "archive")) ;; The default. - (push (if (stringp method) - `("archive" - nnfolder - ,method - (nnfolder-directory - ,(nnheader-concat message-directory method)) - (nnfolder-active-file - ,(nnheader-concat message-directory - (concat method "/active"))) - (nnfolder-get-new-mail nil) - (nnfolder-inhibit-expiry t)) - (cons "archive" method)) - gnus-server-alist)))) + (let ((method (or (and (stringp gnus-message-archive-method) + (gnus-server-to-method + gnus-message-archive-method)) + gnus-message-archive-method))) + ;; Check whether the archive method is writable. + (unless (or (not method) + (stringp method) + (memq 'respool (assoc (format "%s" (car method)) + gnus-valid-select-methods))) + (setq method "archive")) ;; The default. + (when (stringp method) + (setq method `(nnfolder + ,method + (nnfolder-directory + ,(nnheader-concat message-directory method)) + (nnfolder-active-file + ,(nnheader-concat message-directory + (concat method "/active"))) + (nnfolder-get-new-mail nil) + (nnfolder-inhibit-expiry t)))) + (if (assoc "archive" gnus-server-alist) + (when gnus-update-message-archive-method + (if method + (setcdr (assoc "archive" gnus-server-alist) method) + (setq gnus-server-alist (delq (assoc "archive" gnus-server-alist) + gnus-server-alist)))) + (when method + (push (cons "archive" method) gnus-server-alist)))) ;; If we don't read the complete active file, we fill in the ;; hashtb here. diff --git a/lisp/gnus.el b/lisp/gnus.el index d52df815d..0a922c9b7 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -1290,12 +1290,29 @@ see the manual for details." (defcustom gnus-message-archive-method "archive" "*Method used for archiving messages you've sent. -This should be a mail method." +This should be a mail method. + +See also `gnus-update-message-archive-method'." :group 'gnus-server :group 'gnus-message :type '(choice (const :tag "Default archive method" "archive") gnus-select-method)) +(defcustom gnus-update-message-archive-method nil + "Non-nil means always update the saved \"archive\" method. + +The archive method is initially set according to the value of +`gnus-message-archive-method' and is saved in the \"~/.newsrc.eld\" file +so that it may be used as a real method of the server which is named +\"archive\" ever since. If it once has been saved, it will never be +updated if the value of this variable is nil, even if you change the +value of `gnus-message-archive-method' afterward. If you want the +saved \"archive\" method to be updated whenever you change the value of +`gnus-message-archive-method', set this variable to a non-nil value." + :group 'gnus-server + :group 'gnus-message + :type 'boolean) + (defcustom 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