# HG changeset patch # User Katsumi Yamaoka # Date 1284893151 0 # Node ID 6060b86fc5514a4f27c1be62d783b86072390aa0 # Parent 1d2cc4dc816fb2ef1e746796b2b7641094d61d99 Merge changes made in Gnus trunk. nnimap.el (nnimap-finish-retrieve-group-infos): Return data in the nntp buffer so the agent can save it. nnimap.el (nnimap-open-shell-stream): Bind `process-connection-type' to nil, so that CRLF doesn't get translated to \n; (nnimap-open-connection): Don't make 'shell commands only send \n. nnimap.el (nnimap-request-group): Don't make `M-g' bug out on group with no marks. gnus-agent.el (gnus-agent-load-alist): Nix out the alist if the file doesn't exist. nnimap.el (nnimap-finish-retrieve-group-infos): Protect against groups that have no articles. nnimap.el (nnimap-request-article): Check that we really got an article when we requested one. gnus-html.el (gnus-html-schedule-image-fetching): Ignore all errors from url-retrieve, for instance about invalid URLs. gnus-agent.el: Change default of gnus-agent-auto-agentize-methods to nil. diff -r 1d2cc4dc816f -r 6060b86fc551 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Sun Sep 19 11:53:28 2010 +0200 +++ b/lisp/gnus/ChangeLog Sun Sep 19 10:45:51 2010 +0000 @@ -1,3 +1,26 @@ +2010-09-19 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-auto-agentize-methods): Switch the default + to nil, so that no methods are automatically agentized. I think this + is probably what most users want. + + * gnus-html.el (gnus-html-schedule-image-fetching): Ignore all errors + from url-retrieve, for instance about invalid URLs. + + * nnimap.el (nnimap-finish-retrieve-group-infos): Protect against + groups that have no articles. + (nnimap-request-article): Check that we really got an article when we + requested one. + + * gnus-agent.el (gnus-agent-load-alist): Nix out the alist if the file + doesn't exist. + + * nnimap.el (nnimap-finish-retrieve-group-infos): Return data in the + nntp buffer so the agent can save it. + (nnimap-open-shell-stream): Bind `process-connection-type' to nil, so + that CRLF doesn't get translated to \n. + (nnimap-open-connection): Don't make 'shell commands only send \n. + 2010-09-19 Stefan Monnier * nnml.el (nnml-files): Add prefix to dynamic var `files'. diff -r 1d2cc4dc816f -r 6060b86fc551 lisp/gnus/gnus-agent.el --- a/lisp/gnus/gnus-agent.el Sun Sep 19 11:53:28 2010 +0200 +++ b/lisp/gnus/gnus-agent.el Sun Sep 19 10:45:51 2010 +0000 @@ -184,7 +184,7 @@ :type 'boolean :group 'gnus-agent) -(defcustom gnus-agent-auto-agentize-methods '(nntp) +(defcustom gnus-agent-auto-agentize-methods nil "Initially, all servers from these methods are agentized. The user may remove or add servers using the Server buffer. See Info node `(gnus)Server Buffer'." @@ -2104,12 +2104,12 @@ (let* ((gnus-agent-read-agentview group) (file-name-coding-system nnmail-pathname-coding-system) (agentview (gnus-agent-article-name ".agentview" group))) - (when (file-exists-p agentview) - (setq gnus-agent-article-alist - (gnus-cache-file-contents - agentview - 'gnus-agent-file-loading-cache - 'gnus-agent-read-agentview))))) + (setq gnus-agent-article-alist + (and (file-exists-p agentview) + (gnus-cache-file-contents + agentview + 'gnus-agent-file-loading-cache + 'gnus-agent-read-agentview))))) (defun gnus-agent-read-agentview (file) "Load FILE and do a `read' there." @@ -2353,7 +2353,6 @@ (local (or local (gnus-agent-load-local))) (symb (intern gmane local)) (minmax (and (boundp symb) (symbol-value symb)))) - (if (cond ((and minmax (or (not (eq min (car minmax))) (not (eq max (cdr minmax)))) diff -r 1d2cc4dc816f -r 6060b86fc551 lisp/gnus/gnus-html.el --- a/lisp/gnus/gnus-html.el Sun Sep 19 11:53:28 2010 +0200 +++ b/lisp/gnus/gnus-html.el Sun Sep 19 10:45:51 2010 +0000 @@ -298,9 +298,10 @@ (gnus-message 8 "gnus-html-schedule-image-fetching: buffer %s, images %s" buffer images) (dolist (image images) - (url-retrieve (car image) - 'gnus-html-image-fetched - (list buffer image)))) + (ignore-errors + (url-retrieve (car image) + 'gnus-html-image-fetched + (list buffer image))))) (defun gnus-html-image-id (url) (expand-file-name (sha1 url) gnus-html-cache-directory)) diff -r 1d2cc4dc816f -r 6060b86fc551 lisp/gnus/gnus-start.el --- a/lisp/gnus/gnus-start.el Sun Sep 19 11:53:28 2010 +0200 +++ b/lisp/gnus/gnus-start.el Sun Sep 19 10:45:51 2010 +0000 @@ -1808,7 +1808,8 @@ (gnus-check-backend-function 'finish-retrieve-group-infos (car method)) (or (not (gnus-agent-method-p method)) (gnus-online method))) - (gnus-finish-retrieve-group-infos method infos early-data)) + (gnus-finish-retrieve-group-infos method infos early-data) + (gnus-agent-save-active method)) ((gnus-check-backend-function 'retrieve-groups (car method)) (when (gnus-check-backend-function 'request-scan (car method)) (dolist (info infos) diff -r 1d2cc4dc816f -r 6060b86fc551 lisp/gnus/nnimap.el --- a/lisp/gnus/nnimap.el Sun Sep 19 11:53:28 2010 +0200 +++ b/lisp/gnus/nnimap.el Sun Sep 19 10:45:51 2010 +0000 @@ -197,14 +197,14 @@ (current-buffer))) (defun nnimap-open-shell-stream (name buffer host port) - (let ((process (start-process name buffer shell-file-name - shell-command-switch - (format-spec - nnimap-shell-program - (format-spec-make - ?s host - ?p port))))) - process)) + (let ((process-connection-type nil)) + (start-process name buffer shell-file-name + shell-command-switch + (format-spec + nnimap-shell-program + (format-spec-make + ?s host + ?p port))))) (defun nnimap-credentials (address ports) (let (port credentials) @@ -263,8 +263,6 @@ (delete-process (nnimap-process nnimap-object)) (setq nnimap-object nil)))) (when nnimap-object - (when (eq nnimap-stream 'shell) - (setf (nnimap-newlinep nnimap-object) t)) (setf (nnimap-capabilities nnimap-object) (mapcar #'upcase @@ -317,10 +315,14 @@ (if (member "IMAP4REV1" (nnimap-capabilities nnimap-object)) "UID FETCH %d BODY.PEEK[]" "UID FETCH %d RFC822.PEEK") - article))) + article)) + ;; Check that we really got an article. + (goto-char (point-min)) + (unless (looking-at "\\* [0-9]+ FETCH") + (setq result nil))) (let ((buffer (nnimap-find-process-buffer (current-buffer)))) (when (car result) - (with-current-buffer to-buffer + (with-current-buffer (or to-buffer nntp-server-buffer) (insert-buffer-substring buffer) (goto-char (point-min)) (let ((bytes (nnimap-get-length))) @@ -611,7 +613,19 @@ (nnimap-update-infos (nnimap-flags-to-marks (nnimap-parse-flags (nreverse sequences))) - infos)))) + infos) + ;; Finally, just return something resembling an active file in + ;; the nntp buffer, so that the agent can save the info, too. + (with-current-buffer nntp-server-buffer + (erase-buffer) + (dolist (info infos) + (let* ((group (gnus-info-group info)) + (active (gnus-active group))) + (when active + (insert (format "%S %d %d y\n" + (gnus-group-real-name group) + (cdr active) + (car active)))))))))) (defun nnimap-update-infos (flags infos) (dolist (info infos)