aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <[email protected]>2010-09-19 10:45:51 +0000
committerKatsumi Yamaoka <[email protected]>2010-09-19 10:45:51 +0000
commite8861cd2e44567ee08ffe0933e961eda16918c59 (patch)
tree86ef54f207471ea471ba92b0d5d1af495227b6ec /lisp
parente2c3f530ff6fff5f5276ebc4db1e93a967eca351 (diff)
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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gnus/ChangeLog23
-rw-r--r--lisp/gnus/gnus-agent.el15
-rw-r--r--lisp/gnus/gnus-html.el7
-rw-r--r--lisp/gnus/gnus-start.el3
-rw-r--r--lisp/gnus/nnimap.el40
5 files changed, 63 insertions, 25 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index e82b213747..e652d5462a 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,26 @@
+2010-09-19 Lars Magne Ingebrigtsen <[email protected]>
+
+ * 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 <[email protected]>
* nnml.el (nnml-files): Add prefix to dynamic var `files'.
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 6dcc77cdfb..781ea3b1a5 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -184,7 +184,7 @@ When found, offer to remove them."
: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 @@ doesn't exist, to valid the overview buffer."
(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 @@ modified) original contents, they are first saved to their own file."
(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 --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index b2ecb5cdf6..d3e8c48f44 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -298,9 +298,10 @@ fit these criteria."
(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 --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index b421ceed6e..18553071bf 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1808,7 +1808,8 @@ If SCAN, request a scan of that group as well."
(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 --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 601683e594..c27b3ec776 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -197,14 +197,14 @@ not done by default on servers that doesn't support that command.")
(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 @@ not done by default on servers that doesn't support that command.")
(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 @@ not done by default on servers that doesn't support that command.")
(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 @@ not done by default on servers that doesn't support that command.")
(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)