aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorGnus developers2011-03-30 14:59:42 +0000
committerKatsumi Yamaoka2011-03-30 14:59:42 +0000
commita5954fa5c84101c99857ea65196ef9050138119f (patch)
tree269698f118526c4bdcd123d379cc31ab03a111b4 /lisp
parent888adce96c1a551c975718bd8ad540525b1f408c (diff)
downloademacs-a5954fa5c84101c99857ea65196ef9050138119f.tar.gz
emacs-a5954fa5c84101c99857ea65196ef9050138119f.zip
Merge Gnus' changes.
gnus.texi (Listing Groups): Document gnus-group-list-ticked. gssapi.el (open-gssapi-stream): Remove the last mentions of the IMAP stuff. gnus-score.el (gnus-score-string): Fix calling convention of `gnus-simplify-buffer-fuzzy' after last patches. gnus-sum.el (gnus-update-marks): Don't send any marks updates to the server for articles we didn't get any headers for. This is a sanity check. nnimap.el (nnimap-open-connection-1): Is the login responds with a new CAPABILITY, use it. gnus-agent.el (gnus-agent-fetch-headers): Don't message if we're not downloading anything. gnus.el (gnus-splash-svg-color-symbols): Removed superfluous `and'. gnus.el (gnus-group-startup-message): Prefer svg file and replace colors. (gnus-splash-svg-color-symbols): New function. gnus-sum.el (gnus-simplify-buffer-fuzzy): Take the regexp explicitly instead of using the global gnus-simplify-subject-fuzzy-regexp. (gnus-simplify-subject-fuzzy): Use the local gnus-simplify-subject-fuzzy-regex instead of the global one. This makes using this variable in group parameters work. gnus-registry.el (gnus-registry-unfollowed-groups): Add "archive:sent" to the unfollowed group regex (for the recent Gnus archive:sent-YYYY-MM-DD groups). (gnus-registry-split-fancy-with-parent): Bail out early in sender tracking if there are more than `gnus-registry-max-track-groups' matches. message.el (message--yank-original-internal): New function to do the insertion cleanly inside eval in `message-yank-original'. (message-yank-original): Use it.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gnus/ChangeLog53
-rw-r--r--lisp/gnus/gnus-agent.el7
-rw-r--r--lisp/gnus/gnus-registry.el40
-rw-r--r--lisp/gnus/gnus-score.el2
-rw-r--r--lisp/gnus/gnus-sum.el49
-rw-r--r--lisp/gnus/gnus.el25
-rw-r--r--lisp/gnus/gssapi.el14
-rw-r--r--lisp/gnus/message.el33
-rw-r--r--lisp/gnus/nnimap.el15
9 files changed, 165 insertions, 73 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index f6b7db61d96..51169f7b9df 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -15,6 +15,59 @@
15 nntp-open-plain-stream value. 15 nntp-open-plain-stream value.
16 (nntp-open-connection): Recognize that value. 16 (nntp-open-connection): Recognize that value.
17 17
182011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
19
20 * gssapi.el (open-gssapi-stream): Remove the last mentions of the IMAP
21 stuff.
22
23 * gnus-score.el (gnus-score-string): Fix calling convention of
24 `gnus-simplify-buffer-fuzzy' after last patches.
25
26 * gnus-sum.el (gnus-update-marks): Don't send any marks updates to the
27 server for articles we didn't get any headers for. This is a sanity
28 check.
29
302011-03-29 Michael Welsh Duggan <md5i@md5i.com>
31
32 * nnimap.el (nnimap-open-connection-1): Is the login responds with a
33 new CAPABILITY, use it.
34
352011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
36
37 * gnus-agent.el (gnus-agent-fetch-headers): Don't message if we're not
38 downloading anything.
39
40 * gnus.el (gnus-splash-svg-color-symbols): Removed superfluous `and'.
41
422011-03-29 Adam Sjøgren <asjo@koldfront.dk>
43
44 * gnus.el (gnus-group-startup-message): Prefer svg file and replace
45 colors.
46 (gnus-splash-svg-color-symbols): New function.
47
482011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
49
50 * gnus-sum.el (gnus-simplify-buffer-fuzzy): Take the regexp explicitly
51 instead of using the global gnus-simplify-subject-fuzzy-regexp.
52 (gnus-simplify-subject-fuzzy): Use the local
53 gnus-simplify-subject-fuzzy-regex instead of the global one. This
54 makes using this variable in group parameters work.
55
562011-03-29 Teodor Zlatanov <tzz@lifelogs.com>
57
58 * gnus-registry.el (gnus-registry-unfollowed-groups): Add
59 "archive:sent" to the unfollowed group regex (for the recent Gnus
60 archive:sent-YYYY-MM-DD groups).
61 (gnus-registry-split-fancy-with-parent): Bail out early in sender
62 tracking if there are more than `gnus-registry-max-track-groups'
63 matches.
64
652011-03-29 Stefan Monnier <monnier@iro.umontreal.ca>
66
67 * message.el (message--yank-original-internal): New function to do the
68 insertion cleanly inside eval in `message-yank-original'.
69 (message-yank-original): Use it.
70
182011-03-29 Julien Danjou <julien@danjou.info> 712011-03-29 Julien Danjou <julien@danjou.info>
19 72
20 * mm-view.el (mm-display-inline-fontify): Use `set-normal-mode' with 73 * mm-view.el (mm-display-inline-fontify): Use `set-normal-mode' with
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 989488c0995..52fbe9da11f 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -1925,9 +1925,10 @@ article numbers will be returned."
1925 (setq articles (gnus-list-range-intersection 1925 (setq articles (gnus-list-range-intersection
1926 articles (list (cons low high))))))) 1926 articles (list (cons low high)))))))
1927 1927
1928 (gnus-message 1928 (when articles
1929 10 "gnus-agent-fetch-headers: undownloaded articles are '%s'" 1929 (gnus-message
1930 (gnus-compress-sequence articles t)) 1930 10 "gnus-agent-fetch-headers: undownloaded articles are '%s'"
1931 (gnus-compress-sequence articles t)))
1931 1932
1932 (with-current-buffer nntp-server-buffer 1933 (with-current-buffer nntp-server-buffer
1933 (if articles 1934 (if articles
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index cef173ce1ec..db3cc06e9aa 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -124,7 +124,7 @@ display."
124 :type 'symbol) 124 :type 'symbol)
125 125
126(defcustom gnus-registry-unfollowed-groups 126(defcustom gnus-registry-unfollowed-groups
127 '("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:") 127 '("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:" "archive")
128 "List of groups that gnus-registry-split-fancy-with-parent won't return. 128 "List of groups that gnus-registry-split-fancy-with-parent won't return.
129The group names are matched, they don't have to be fully 129The group names are matched, they don't have to be fully
130qualified. This parameter tells the Registry 'never split a 130qualified. This parameter tells the Registry 'never split a
@@ -541,24 +541,26 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
541 user-mail-address))) 541 user-mail-address)))
542 (maphash 542 (maphash
543 (lambda (key value) 543 (lambda (key value)
544 (let ((this-sender (cdr 544 ;; don't use more than gnus-registry-max-track-groups
545 (gnus-registry-fetch-extra key 'sender))) 545 (when (< (length found-full) gnus-registry-max-track-groups)
546 matches) 546 (let ((this-sender
547 (when (and this-sender 547 (cdr (gnus-registry-fetch-extra key 'sender)))
548 (equal sender this-sender)) 548 matches)
549 (let ((groups (gnus-registry-fetch-groups 549 (when (and this-sender
550 key 550 (equal sender this-sender))
551 gnus-registry-max-track-groups))) 551 (let ((groups (gnus-registry-fetch-groups
552 (dolist (group groups) 552 key
553 (when (and group (gnus-registry-follow-group-p group)) 553 gnus-registry-max-track-groups)))
554 (push group found-full) 554 (dolist (group groups)
555 (setq found (append (list group) (delete group found)))))) 555 (when (and group (gnus-registry-follow-group-p group))
556 (push key matches) 556 (push group found-full)
557 (gnus-message 557 (setq found (append (list group) (delete group found))))))
558 ;; raise level of messaging if gnus-registry-track-extra 558 (push key matches)
559 (if gnus-registry-track-extra 7 9) 559 (gnus-message
560 "%s (extra tracking) traced sender %s to groups %s (keys %s)" 560 ;; raise level of messaging if gnus-registry-track-extra
561 log-agent sender found matches)))) 561 (if gnus-registry-track-extra 7 9)
562 "%s (extra tracking) traced sender %s to groups %s (keys %s)"
563 log-agent sender found matches)))))
562 gnus-registry-hashtb) 564 gnus-registry-hashtb)
563 ;; filter the found groups and return them 565 ;; filter the found groups and return them
564 ;; the found groups are NOT the full groups 566 ;; the found groups are NOT the full groups
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index e376b7a7b6e..9bbfbfb057e 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -2151,7 +2151,7 @@ score in `gnus-newsgroup-scored' by SCORE."
2151 ;; Find fuzzy matches. 2151 ;; Find fuzzy matches.
2152 (when fuzzies 2152 (when fuzzies
2153 ;; Simplify the entire buffer for easy matching. 2153 ;; Simplify the entire buffer for easy matching.
2154 (gnus-simplify-buffer-fuzzy) 2154 (gnus-simplify-buffer-fuzzy gnus-simplify-subject-fuzzy-regexp)
2155 (while (setq kill (cadaar fuzzies)) 2155 (while (setq kill (cadaar fuzzies))
2156 (let* ((match (nth 0 kill)) 2156 (let* ((match (nth 0 kill))
2157 (type (nth 3 kill)) 2157 (type (nth 3 kill))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 9b22bbe39da..91dc6fb9595 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1734,7 +1734,7 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
1734 (while (re-search-forward regexp nil t) 1734 (while (re-search-forward regexp nil t)
1735 (replace-match (or newtext "")))) 1735 (replace-match (or newtext ""))))
1736 1736
1737(defun gnus-simplify-buffer-fuzzy () 1737(defun gnus-simplify-buffer-fuzzy (regexp)
1738 "Simplify string in the buffer fuzzily. 1738 "Simplify string in the buffer fuzzily.
1739The string in the accessible portion of the current buffer is simplified. 1739The string in the accessible portion of the current buffer is simplified.
1740It is assumed to be a single-line subject. 1740It is assumed to be a single-line subject.
@@ -1748,11 +1748,10 @@ matter is removed. Additional things can be deleted by setting
1748 (while (not (eq modified-tick (buffer-modified-tick))) 1748 (while (not (eq modified-tick (buffer-modified-tick)))
1749 (setq modified-tick (buffer-modified-tick)) 1749 (setq modified-tick (buffer-modified-tick))
1750 (cond 1750 (cond
1751 ((listp gnus-simplify-subject-fuzzy-regexp) 1751 ((listp regexp)
1752 (mapc 'gnus-simplify-buffer-fuzzy-step 1752 (mapc 'gnus-simplify-buffer-fuzzy-step regexp))
1753 gnus-simplify-subject-fuzzy-regexp)) 1753 (regexp
1754 (gnus-simplify-subject-fuzzy-regexp 1754 (gnus-simplify-buffer-fuzzy-step regexp)))
1755 (gnus-simplify-buffer-fuzzy-step gnus-simplify-subject-fuzzy-regexp)))
1756 (gnus-simplify-buffer-fuzzy-step "^ *\\[[-+?*!][-+?*!]\\] *") 1755 (gnus-simplify-buffer-fuzzy-step "^ *\\[[-+?*!][-+?*!]\\] *")
1757 (gnus-simplify-buffer-fuzzy-step 1756 (gnus-simplify-buffer-fuzzy-step
1758 "^ *\\(re\\|fw\\|fwd\\)[[{(^0-9]*[])}]?[:;] *") 1757 "^ *\\(re\\|fw\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
@@ -1767,15 +1766,16 @@ matter is removed. Additional things can be deleted by setting
1767 "Simplify a subject string fuzzily. 1766 "Simplify a subject string fuzzily.
1768See `gnus-simplify-buffer-fuzzy' for details." 1767See `gnus-simplify-buffer-fuzzy' for details."
1769 (save-excursion 1768 (save-excursion
1770 (gnus-set-work-buffer) 1769 (let ((regexp gnus-simplify-subject-fuzzy-regexp))
1771 (let ((case-fold-search t)) 1770 (gnus-set-work-buffer)
1772 ;; Remove uninteresting prefixes. 1771 (let ((case-fold-search t))
1773 (when (and gnus-simplify-ignored-prefixes 1772 ;; Remove uninteresting prefixes.
1774 (string-match gnus-simplify-ignored-prefixes subject)) 1773 (when (and gnus-simplify-ignored-prefixes
1775 (setq subject (substring subject (match-end 0)))) 1774 (string-match gnus-simplify-ignored-prefixes subject))
1776 (insert subject) 1775 (setq subject (substring subject (match-end 0))))
1777 (inline (gnus-simplify-buffer-fuzzy)) 1776 (insert subject)
1778 (buffer-string)))) 1777 (inline (gnus-simplify-buffer-fuzzy regexp))
1778 (buffer-string)))))
1779 1779
1780(defsubst gnus-simplify-subject-fully (subject) 1780(defsubst gnus-simplify-subject-fully (subject)
1781 "Simplify a subject string according to `gnus-summary-gather-subject-limit'." 1781 "Simplify a subject string according to `gnus-summary-gather-subject-limit'."
@@ -6068,14 +6068,23 @@ If SELECT-ARTICLES, only select those articles from GROUP."
6068 'request-set-mark gnus-newsgroup-name) 6068 'request-set-mark gnus-newsgroup-name)
6069 (not (gnus-article-unpropagatable-p (cdr type)))) 6069 (not (gnus-article-unpropagatable-p (cdr type))))
6070 (let* ((old (cdr (assq (cdr type) (gnus-info-marks info)))) 6070 (let* ((old (cdr (assq (cdr type) (gnus-info-marks info))))
6071 (del (gnus-remove-from-range (gnus-copy-sequence old) list)) 6071 ;; Don't do anything about marks for articles we
6072 (add (gnus-remove-from-range 6072 ;; didn't actually get any headers for.
6073 (gnus-copy-sequence list) old))) 6073 (existing (gnus-compress-sequence gnus-newsgroup-articles))
6074 (del
6075 (gnus-sorted-range-intersection
6076 existing
6077 (gnus-remove-from-range (gnus-copy-sequence old) list)))
6078 (add
6079 (gnus-sorted-range-intersection
6080 existing
6081 (gnus-remove-from-range
6082 (gnus-copy-sequence list) old))))
6074 (when add 6083 (when add
6075 (push (list add 'add (list (cdr type))) delta-marks)) 6084 (push (list add 'add (list (cdr type))) delta-marks))
6076 (when del 6085 (when del
6077 ;; Don't delete marks from outside the active range. This 6086 ;; Don't delete marks from outside the active range.
6078 ;; shouldn't happen, but is a sanity check. 6087 ;; This shouldn't happen, but is a sanity check.
6079 (setq del (gnus-sorted-range-intersection 6088 (setq del (gnus-sorted-range-intersection
6080 (gnus-active gnus-newsgroup-name) del)) 6089 (gnus-active gnus-newsgroup-name) del))
6081 (push (list del 'del (list (cdr type))) delta-marks)))) 6090 (push (list del 'del (list (cdr type))) delta-marks))))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 57d085a0380..d4ecd89db92 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1043,12 +1043,15 @@ be set in `.emacs' instead."
1043 ((boundp 'image-load-path) 1043 ((boundp 'image-load-path)
1044 (symbol-value 'image-load-path)) 1044 (symbol-value 'image-load-path))
1045 (t load-path))) 1045 (t load-path)))
1046 (image (find-image 1046 (image (gnus-splash-svg-color-symbols (find-image
1047 `((:type xpm :file "gnus.xpm" 1047 `((:type svg :file "gnus.svg"
1048 :color-symbols
1049 (("#bf9900" . ,(car gnus-logo-colors))
1050 ("#ffcc00" . ,(cadr gnus-logo-colors))))
1051 (:type xpm :file "gnus.xpm"
1048 :color-symbols 1052 :color-symbols
1049 (("thing" . ,(car gnus-logo-colors)) 1053 (("thing" . ,(car gnus-logo-colors))
1050 ("shadow" . ,(cadr gnus-logo-colors)))) 1054 ("shadow" . ,(cadr gnus-logo-colors))))
1051 (:type svg :file "gnus.svg")
1052 (:type png :file "gnus.png") 1055 (:type png :file "gnus.png")
1053 (:type pbm :file "gnus.pbm" 1056 (:type pbm :file "gnus.pbm"
1054 ;; Account for the pbm's background. 1057 ;; Account for the pbm's background.
@@ -1057,7 +1060,7 @@ be set in `.emacs' instead."
1057 (:type xbm :file "gnus.xbm" 1060 (:type xbm :file "gnus.xbm"
1058 ;; Account for the xbm's background. 1061 ;; Account for the xbm's background.
1059 :background ,(face-foreground 'gnus-splash) 1062 :background ,(face-foreground 'gnus-splash)
1060 :foreground ,(face-background 'default)))))) 1063 :foreground ,(face-background 'default)))))))
1061 (when image 1064 (when image
1062 (let ((size (image-size image))) 1065 (let ((size (image-size image)))
1063 (insert-char ?\n (max 0 (round (- (window-height) 1066 (insert-char ?\n (max 0 (round (- (window-height)
@@ -1103,6 +1106,20 @@ be set in `.emacs' instead."
1103 (setq mode-line-buffer-identification (concat " " gnus-version)) 1106 (setq mode-line-buffer-identification (concat " " gnus-version))
1104 (set-buffer-modified-p t))) 1107 (set-buffer-modified-p t)))
1105 1108
1109(defun gnus-splash-svg-color-symbols (list)
1110 "Do color-symbol search-and-replace in svg file"
1111 (let ((type (plist-get (cdr list) :type))
1112 (file (plist-get (cdr list) :file))
1113 (color-symbols (plist-get (cdr list) :color-symbols)))
1114 (if (string= type "svg")
1115 (let ((data (with-temp-buffer (insert-file file) (buffer-string))))
1116 (mapc (lambda (rule)
1117 (setq data (replace-regexp-in-string
1118 (concat "fill:" (car rule))
1119 (concat "fill:" (cdr rule)) data))) color-symbols)
1120 (cons (car list) (list :type type :data data)))
1121 list)))
1122
1106(eval-when (load) 1123(eval-when (load)
1107 (let ((command (format "%s" this-command))) 1124 (let ((command (format "%s" this-command)))
1108 (when (string-match "gnus" command) 1125 (when (string-match "gnus" command)
diff --git a/lisp/gnus/gssapi.el b/lisp/gnus/gssapi.el
index 3765fb84ee8..e96c23b14ac 100644
--- a/lisp/gnus/gssapi.el
+++ b/lisp/gnus/gssapi.el
@@ -33,14 +33,14 @@
33 "--authentication-id %l") 33 "--authentication-id %l")
34 "imtest -m gssapi -u %l -p %p %s") 34 "imtest -m gssapi -u %l -p %p %s")
35 "List of strings containing commands for GSSAPI (krb5) authentication. 35 "List of strings containing commands for GSSAPI (krb5) authentication.
36%s is replaced with server hostname, %p with port to connect to, and 36%s is replaced with server hostname, %p with port to connect to,
37%l with the value of `imap-default-user'. The program should accept 37and %l with the user name. The program should accept commands on
38IMAP commands on stdin and return responses to stdout. Each entry in 38stdin and return responses to stdout. Each entry in the list is
39the list is tried until a successful connection is made." 39tried until a successful connection is made."
40 :group 'network 40 :group 'network
41 :type '(repeat string)) 41 :type '(repeat string))
42 42
43(defun open-gssapi-stream (name buffer server port) 43(defun open-gssapi-stream (name buffer server port user)
44 (let ((cmds gssapi-program) 44 (let ((cmds gssapi-program)
45 cmd done) 45 cmd done)
46 (with-current-buffer buffer 46 (with-current-buffer buffer
@@ -57,7 +57,7 @@ the list is tried until a successful connection is made."
57 (format-spec-make 57 (format-spec-make
58 ?s server 58 ?s server
59 ?p (number-to-string port) 59 ?p (number-to-string port)
60 ?l imap-default-user)))) 60 ?l user))))
61 response) 61 response)
62 (when process 62 (when process
63 (while (and (memq (process-status process) '(open run)) 63 (while (and (memq (process-status process) '(open run))
@@ -92,7 +92,7 @@ the list is tried until a successful connection is made."
92 (accept-process-output process 1) 92 (accept-process-output process 1)
93 (sit-for 1)) 93 (sit-for 1))
94 (erase-buffer) 94 (erase-buffer)
95 (message "GSSAPI IMAP connection: %s" (or response "failed")) 95 (message "GSSAPI connection: %s" (or response "failed"))
96 (if (and response (let ((case-fold-search nil)) 96 (if (and response (let ((case-fold-search nil))
97 (not (string-match "failed" response)))) 97 (not (string-match "failed" response))))
98 (setq done process) 98 (setq done process)
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index bb9215aca7c..6d9fd712c33 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3712,22 +3712,9 @@ To use this automatically, you may add this function to
3712 (while (re-search-forward citexp nil t) 3712 (while (re-search-forward citexp nil t)
3713 (replace-match (if remove "" "\n")))))) 3713 (replace-match (if remove "" "\n"))))))
3714 3714
3715(defun message-yank-original (&optional arg) 3715(defun message--yank-original-internal (arg)
3716 "Insert the message being replied to, if any.
3717Puts point before the text and mark after.
3718Normally indents each nonblank line ARG spaces (default 3). However,
3719if `message-yank-prefix' is non-nil, insert that prefix on each line.
3720
3721This function uses `message-cite-function' to do the actual citing.
3722
3723Just \\[universal-argument] as argument means don't indent, insert no
3724prefix, and don't delete any headers."
3725 (interactive "P")
3726 (let ((modified (buffer-modified-p)) 3716 (let ((modified (buffer-modified-p))
3727 body-text) 3717 body-text)
3728 ;; eval the let forms contained in message-cite-style
3729 (eval
3730 `(let ,message-cite-style
3731 (when (and message-reply-buffer 3718 (when (and message-reply-buffer
3732 message-cite-function) 3719 message-cite-function)
3733 (when (equal message-cite-reply-position 'above) 3720 (when (equal message-cite-reply-position 'above)
@@ -3767,7 +3754,23 @@ prefix, and don't delete any headers."
3767 ;; Add a `message-setup-very-last-hook' here? 3754 ;; Add a `message-setup-very-last-hook' here?
3768 ;; Add `gnus-article-highlight-citation' here? 3755 ;; Add `gnus-article-highlight-citation' here?
3769 (unless modified 3756 (unless modified
3770 (setq message-checksum (message-checksum)))))))) 3757 (setq message-checksum (message-checksum))))))
3758
3759(defun message-yank-original (&optional arg)
3760 "Insert the message being replied to, if any.
3761Puts point before the text and mark after.
3762Normally indents each nonblank line ARG spaces (default 3). However,
3763if `message-yank-prefix' is non-nil, insert that prefix on each line.
3764
3765This function uses `message-cite-function' to do the actual citing.
3766
3767Just \\[universal-argument] as argument means don't indent, insert no
3768prefix, and don't delete any headers."
3769 (interactive "P")
3770 ;; eval the let forms contained in message-cite-style
3771 (eval
3772 `(let ,message-cite-style
3773 (message--yank-original-internal ',arg))))
3771 3774
3772(defun message-yank-buffer (buffer) 3775(defun message-yank-buffer (buffer)
3773 "Insert BUFFER into the current buffer and quote it." 3776 "Insert BUFFER into the current buffer and quote it."
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index ccb082d6c71..fa09c7ff165 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -410,11 +410,18 @@ textual parts.")
410 (setq login-result 410 (setq login-result
411 (nnimap-login (car credentials) (cadr credentials)))) 411 (nnimap-login (car credentials) (cadr credentials))))
412 (if (car login-result) 412 (if (car login-result)
413 ;; save the credentials if a save function exists 413 (progn
414 ;; Save the credentials if a save function exists
414 ;; (such a function will only be passed if a new 415 ;; (such a function will only be passed if a new
415 ;; token was created) 416 ;; token was created).
416 (when (functionp (nth 2 credentials)) 417 (when (functionp (nth 2 credentials))
417 (funcall (nth 2 credentials))) 418 (funcall (nth 2 credentials)))
419 ;; See if CAPABILITY is set as part of login
420 ;; response.
421 (dolist (response (cddr login-result))
422 (when (string= "CAPABILITY" (upcase (car response)))
423 (setf (nnimap-capabilities nnimap-object)
424 (mapcar #'upcase (cdr response))))))
418 ;; If the login failed, then forget the credentials 425 ;; If the login failed, then forget the credentials
419 ;; that are now possibly cached. 426 ;; that are now possibly cached.
420 (dolist (host (list (nnoo-current-server 'nnimap) 427 (dolist (host (list (nnoo-current-server 'nnimap)