Commit b5c575e6 authored by Gnus developers's avatar Gnus developers Committed by Katsumi Yamaoka
Browse files

Merge changes made in Gnus trunk.

message.el (message-default-headers): Fix type.
nnimap.el (nnimap-request-head, nnimap-request-move-article): Make internal nnimap moving slightly faster.
nnimap.el (nnimap-transform-headers): Don't bug out on bodiless articles.
nnimap.el (nnimap-send-command): Have no outstanding messages if the IMAP server doesn't support streaming.
nnimap.el (nnimap-transform-headers): Fold {quoted} strings more sloppily.
parent 709228c0
......@@ -1450,8 +1450,10 @@ Allegedly.
@item message-default-headers
@vindex message-default-headers
This string is inserted at the end of the headers in all message
buffers. If set to a function, the returned results is inserted.
Header lines to be inserted in outgoing messages before you edit the
message, so you can edit or delete their lines. If set to a string, it
is directly inserted. If set to a function, it is called and its
result is inserted.
@item message-subject-re-regexp
@vindex message-subject-re-regexp
......
2010-10-24 Lars Magne Ingebrigtsen <larsi@gnus.org>
* nnimap.el (nnimap-request-head): New function.
(nnimap-request-move-article): Try to be slighly faster by not
requesting the entire message when moving.
(nnimap-transform-headers): Don't bug out on bodiless articles.
(nnimap-send-command): Have no outstanding messages if the IMAP server
doesn't support streaming.
(nnimap-transform-headers): Fold {quoted} strings more sloppily.
2010-10-24 Julien Danjou <julien@danjou.info>
* message.el (message-default-headers): Fix type.
2010-10-24 Lars Magne Ingebrigtsen <larsi@gnus.org>
 
* gnus-html.el (gnus-html-prefetch-images): Decode entities before
......
......@@ -655,7 +655,8 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(result (funcall (gnus-get-function gnus-command-method
'request-move-article)
article (gnus-group-real-name group)
(nth 1 gnus-command-method) accept-function last move-is-internal)))
(nth 1 gnus-command-method) accept-function
last move-is-internal)))
(when (and result gnus-agent
(gnus-agent-method-p gnus-command-method))
(gnus-agent-unfetch-articles group (list article)))
......
......@@ -1139,14 +1139,17 @@ It is a vector of the following headers:
:error "All header lines must be newline terminated")
(defcustom message-default-headers ""
"A string containing header lines to be inserted in outgoing messages.
It is inserted before you edit the message, so you can edit or
delete these lines. If set to a function, it is called and its
result is inserted."
"Header lines to be inserted in outgoing messages.
This can be set to a string containing or a function returning
header lines to be inserted before you edit the message, so you
can edit or delete these lines. If set to a function, it is
called and its result is inserted."
:version "23.2"
:group 'message-headers
:link '(custom-manual "(message)Message Headers")
:type 'message-header-lines)
:type '(choice
(message-header-lines :tag "String")
(function :tag "Function")))
(defcustom message-default-mail-headers
;; Ease the transition from mail-mode to message-mode. See bugs#4431, 5555.
......
......@@ -136,6 +136,16 @@ textual parts.")
(defun nnimap-buffer ()
(nnimap-find-process-buffer nntp-server-buffer))
(defun nnimap-header-parameters ()
(format "(UID RFC822.SIZE BODYSTRUCTURE %s)"
(format
(if (nnimap-ver4-p)
"BODY.PEEK[HEADER.FIELDS %s]"
"RFC822.HEADER.LINES %s")
(append '(Subject From Date Message-Id
References In-Reply-To Xref)
nnmail-extra-headers))))
(deffoo nnimap-retrieve-headers (articles &optional group server fetch-old)
(with-current-buffer nntp-server-buffer
(erase-buffer)
......@@ -146,14 +156,7 @@ textual parts.")
(nnimap-send-command
"UID FETCH %s %s"
(nnimap-article-ranges (gnus-compress-sequence articles))
(format "(UID RFC822.SIZE BODYSTRUCTURE %s)"
(format
(if (nnimap-ver4-p)
"BODY.PEEK[HEADER.FIELDS %s]"
"RFC822.HEADER.LINES %s")
(append '(Subject From Date Message-Id
References In-Reply-To Xref)
nnmail-extra-headers))))
(nnimap-header-parameters))
t)
(nnimap-transform-headers))
(insert-buffer-substring
......@@ -171,7 +174,7 @@ textual parts.")
(return)))
(setq article (match-string 1))
;; Unfold quoted {number} strings.
(while (re-search-forward "[^]] {\\([0-9]+\\)}\r\n"
(while (re-search-forward "[^]][ (]{\\([0-9]+\\)}\r\n"
(1+ (line-end-position)) t)
(setq size (string-to-number (match-string 1)))
(delete-region (+ (match-beginning 0) 2) (point))
......@@ -200,7 +203,8 @@ textual parts.")
(insert (format "Chars: %s\n" size)))
(when lines
(insert (format "Lines: %s\n" lines)))
(re-search-forward "^\r$")
(unless (re-search-forward "^\r$" nil t)
(goto-char (point-max)))
(delete-region (line-beginning-position) (line-end-position))
(insert ".")
(forward-line 1)))))
......@@ -490,12 +494,28 @@ textual parts.")
(nnheader-ms-strip-cr)
(cons group article)))))))))
(defun nnimap-get-whole-article (article)
(deffoo nnimap-request-head (article &optional group server to-buffer)
(when (nnimap-possibly-change-group group server)
(with-current-buffer (nnimap-buffer)
(when (stringp article)
(setq article (nnimap-find-article-by-message-id group article)))
(nnimap-get-whole-article
article (format "UID FETCH %%d %s"
(nnimap-header-parameters)))
(let ((buffer (current-buffer)))
(with-current-buffer (or to-buffer nntp-server-buffer)
(erase-buffer)
(insert-buffer-substring buffer)
(nnheader-ms-strip-cr)
(cons group article))))))
(defun nnimap-get-whole-article (article &optional command)
(let ((result
(nnimap-command
(if (nnimap-ver4-p)
"UID FETCH %d BODY.PEEK[]"
"UID FETCH %d RFC822.PEEK")
(or command
(if (nnimap-ver4-p)
"UID FETCH %d BODY.PEEK[]"
"UID FETCH %d RFC822.PEEK"))
article)))
;; Check that we really got an article.
(goto-char (point-min))
......@@ -715,7 +735,10 @@ textual parts.")
&optional last internal-move-group)
(with-temp-buffer
(mm-disable-multibyte)
(when (nnimap-request-article article group server (current-buffer))
(when (funcall (if internal-move-group
'nnimap-request-head
'nnimap-request-article)
article group server (current-buffer))
;; If the move is internal (on the same server), just do it the easy
;; way.
(let ((message-id (message-field-value "message-id")))
......@@ -1025,12 +1048,7 @@ textual parts.")
(utf7-encode group t))
(nnimap-send-command "UID FETCH %d:* FLAGS" start)
start group command)
sequences)))
;; Some servers apparently can't have many outstanding
;; commands, so throttle them.
(when (and (not nnimap-streaming)
(car sequences))
(nnimap-wait-for-response (caar sequences))))
sequences))))
sequences))))
(deffoo nnimap-finish-retrieve-group-infos (server infos sequences)
......@@ -1408,6 +1426,10 @@ textual parts.")
(if (nnimap-newlinep nnimap-object)
""
"\r"))))
;; Some servers apparently can't have many outstanding
;; commands, so throttle them.
(unless nnimap-streaming
(nnimap-wait-for-response nnimap-sequence))
nnimap-sequence)
(defun nnimap-log-command (command)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment