X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-group.el;h=aaeef4d9e267af00c7b0e547a3ed05235599986d;hp=682706fd3ecd538eb61a17b222bbd5e72464f610;hb=992509a3574f9add376cc480db9bb5656285bd5b;hpb=9f93f37d163bd50a270afdd1162099c74784ded6 diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 682706fd3..aaeef4d9e 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -2290,15 +2290,23 @@ Return the name of the group if selection was successful." ;; (gnus-read-group "Group name: ") (gnus-group-completing-read) (gnus-read-method "From method"))) - ;; Transform the select method into a unique server. (unless (gnus-alive-p) - (gnus-no-server)) + (nnheader-init-server-buffer) + ;; Necessary because of funky inlining. + (require 'gnus-cache) + (setq gnus-newsrc-hashtb (gnus-make-hashtable))) + ;; Transform the select method into a unique server. (when (stringp method) (setq method (gnus-server-to-method method))) - (setq method - `(,(car method) ,(concat (cadr method) "-ephemeral") - (,(intern (format "%s-address" (car method))) ,(cadr method)) - ,@(cddr method))) + (let ((address-slot + (intern (format "%s-address" (car method))))) + (setq method + (if (assq address-slot (cddr method)) + `(,(car method) ,(concat (cadr method) "-ephemeral") + ,@(cddr method)) + `(,(car method) ,(concat (cadr method) "-ephemeral") + (,address-slot ,(cadr method)) + ,@(cddr method))))) (let ((group (if (gnus-group-foreign-p group) group (gnus-group-prefixed-name (gnus-group-real-name group) method)))) @@ -2307,18 +2315,22 @@ Return the name of the group if selection was successful." `(-1 nil (,group ,gnus-level-default-subscribed nil nil ,method ,(cons - (cond - (quit-config - (cons 'quit-config quit-config)) - ((assq gnus-current-window-configuration - gnus-buffer-configuration) - (cons 'quit-config + (cons 'quit-config + (cond + (quit-config + quit-config) + ((assq gnus-current-window-configuration + gnus-buffer-configuration) (cons gnus-summary-buffer - gnus-current-window-configuration)))) + gnus-current-window-configuration)) + (t + (cons (current-buffer) + (current-window-configuration))))) parameters))) gnus-newsrc-hashtb) (push method gnus-ephemeral-servers) - (set-buffer gnus-group-buffer) + (when (gnus-buffer-live-p gnus-group-buffer) + (set-buffer gnus-group-buffer)) (unless (gnus-check-server method) (error "Unable to contact server: %s" (gnus-status-message method))) (when activate @@ -3638,6 +3650,10 @@ Uses the process/prefix convention." (expirable (if (gnus-group-total-expirable-p group) (cons nil (gnus-list-of-read-articles group)) (assq 'expire (gnus-info-marks info)))) + (articles-to-expire + (gnus-list-range-difference + (gnus-uncompress-sequence (cdr expirable)) + (cdr (assq 'unexist (gnus-info-marks info))))) (expiry-wait (gnus-group-find-parameter group 'expiry-wait)) (nnmail-expiry-target (or (gnus-group-find-parameter group 'expiry-target) @@ -3652,11 +3668,9 @@ Uses the process/prefix convention." ;; parameter. (let ((nnmail-expiry-wait-function nil) (nnmail-expiry-wait expiry-wait)) - (gnus-request-expire-articles - (gnus-uncompress-sequence (cdr expirable)) group)) + (gnus-request-expire-articles articles-to-expire group)) ;; Just expire using the normal expiry values. - (gnus-request-expire-articles - (gnus-uncompress-sequence (cdr expirable)) group)))) + (gnus-request-expire-articles articles-to-expire group)))) (gnus-close-group group)) (gnus-message 6 "Expiring articles in %s...done" (gnus-group-decoded-name group)) @@ -4029,7 +4043,8 @@ otherwise all levels below ARG will be scanned too." (unless gnus-slave (gnus-master-read-slave-newsrc)) - (gnus-get-unread-articles arg nil one-level) + (gnus-get-unread-articles (gnus-group-default-level arg t) + nil one-level) ;; If the user wants it, we scan for new groups. (when (eq gnus-check-new-newsgroups 'always) @@ -4072,10 +4087,7 @@ If DONT-SCAN is non-nil, scan non-activated groups as well." (gnus-agent-save-group-info method (gnus-group-real-name group) active)) (gnus-group-update-group group nil t)) - (if (eq (gnus-server-status (gnus-find-method-for-group group)) - 'denied) - (gnus-error 3 "Server previously determined to be down; not retrying") - (gnus-error 3 "%s error: %s" group (gnus-status-message group))))) + (gnus-error 3 "%s error: %s" group (gnus-status-message group)))) (when beg (goto-char beg)) (when gnus-goto-next-group-when-activating @@ -4440,12 +4452,6 @@ and the second element is the address." (gnus-list-of-unread-articles (car info)))))) (error "No such group: %s" (gnus-info-group info)))))) -(defun gnus-group-set-method-info (group select-method) - (gnus-group-set-info select-method group 'method)) - -(defun gnus-group-set-params-info (group params) - (gnus-group-set-info params group 'params)) - ;; Ad-hoc function for inserting data from a different newsrc.eld ;; file. Use with caution, if at all. (defun gnus-import-other-newsrc-file (file)