diff options
| author | Gnus developers | 2011-02-15 11:24:37 +0000 |
|---|---|---|
| committer | Katsumi Yamaoka | 2011-02-15 11:24:37 +0000 |
| commit | 5415d0766d91aa8ab4dcedc6f7dd0b85edc915a3 (patch) | |
| tree | 603a3a33dbbff9e2fb8d2145e94957f1a08a7bd4 | |
| parent | c5ca3aa00840c5dfa0aa7eeb8483ea077e5577bc (diff) | |
| download | emacs-5415d0766d91aa8ab4dcedc6f7dd0b85edc915a3.tar.gz emacs-5415d0766d91aa8ab4dcedc6f7dd0b85edc915a3.zip | |
Merge changes made in Gnus trunk.
auth.texi (Help for users): Login collection is "Login" and not "login".
gnus-sum.el (gnus-propagate-marks): Default to nil.
(gnus-summary-exit): Kill the correct article buffer on exit from a `C-d' group.
gnus-start.el (gnus-use-backend-marks): Removed, since it duplicates gnus-propagate-marks.
gnus-sum.el (gnus-summary-exit-no-update): Restore the group conf before killing the buffers so that a non-full window conf gets handled correctly.
(gnus-summary-exit): Ditto.
(gnus-summary-read-group-1): Ditto.
nntp.el (nntp-retrieve-group-data-early): Reinstate the two-part async code again so that we can debug it properly.
message.el (message-reply): Take an optional switch-buffer parameter so that Gnus window confs are respected better.
auth-source.el (auth-source-secrets-search): Use `delete-dups', `append mapcar', and `butlast' instead of `remove-duplicates', `mapcan', and `subseq'.
(auth-sources, auth-source-backend-parse, auth-source-secrets-search): Login collection is "Login" and not "login".
gnus-art.el (article-update-date-lapsed): Don't bug out when updating multiple headers.
| -rw-r--r-- | doc/misc/ChangeLog | 6 | ||||
| -rw-r--r-- | doc/misc/auth.texi | 4 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 28 | ||||
| -rw-r--r-- | lisp/gnus/auth-source.el | 70 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 9 | ||||
| -rw-r--r-- | lisp/gnus/gnus-msg.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/gnus-start.el | 9 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 36 | ||||
| -rw-r--r-- | lisp/gnus/message.el | 5 | ||||
| -rw-r--r-- | lisp/gnus/nntp.el | 13 |
10 files changed, 111 insertions, 77 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 20463724c79..34096144066 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -3,6 +3,10 @@ | |||
| 3 | Merge from gnulib. | 3 | Merge from gnulib. |
| 4 | * texinfo.tex: Update to version 2011-02-14.11. | 4 | * texinfo.tex: Update to version 2011-02-14.11. |
| 5 | 5 | ||
| 6 | 2011-02-14 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 7 | |||
| 8 | * auth.texi (Help for users): Login collection is "Login" and not "login". | ||
| 9 | |||
| 6 | 2011-02-13 Michael Albinus <michael.albinus@gmx.de> | 10 | 2011-02-13 Michael Albinus <michael.albinus@gmx.de> |
| 7 | 11 | ||
| 8 | * tramp.texi (History): Remove IMAP support. | 12 | * tramp.texi (History): Remove IMAP support. |
| @@ -21,7 +25,7 @@ | |||
| 21 | 25 | ||
| 22 | * sc.texi (Getting Connected): Remove old index entries. | 26 | * sc.texi (Getting Connected): Remove old index entries. |
| 23 | 27 | ||
| 24 | 2011-02-12 Ulrich Mueller <ulm@gentoo.org> | 28 | 2011-02-12 Ulrich Mueller <ulm@gentoo.org> |
| 25 | 29 | ||
| 26 | * url.texi: Remove duplicate @dircategory (Bug#7942). | 30 | * url.texi: Remove duplicate @dircategory (Bug#7942). |
| 27 | 31 | ||
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 2541dba9873..020c582305c 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi | |||
| @@ -161,8 +161,8 @@ and simplest configuration is: | |||
| 161 | (setq auth-sources '((:source "~/.authinfo.gpg"))) | 161 | (setq auth-sources '((:source "~/.authinfo.gpg"))) |
| 162 | ;;; even shorter and the @emph{default}: | 162 | ;;; even shorter and the @emph{default}: |
| 163 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo")) | 163 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo")) |
| 164 | ;;; use the Secrets API @var{login} collection (@pxref{Secret Service API}) | 164 | ;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API}) |
| 165 | (setq auth-sources '("secrets:login")) | 165 | (setq auth-sources '("secrets:Login")) |
| 166 | @end lisp | 166 | @end lisp |
| 167 | 167 | ||
| 168 | By adding multiple entries to @code{auth-sources} with a particular | 168 | By adding multiple entries to @code{auth-sources} with a particular |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 747f71f835a..71034376133 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,11 +1,39 @@ | |||
| 1 | 2011-02-14 Lars Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * gnus-sum.el (gnus-propagate-marks): Default to nil. | ||
| 4 | (gnus-summary-exit): Kill the correct article buffer on exit from a | ||
| 5 | `C-d' group. | ||
| 6 | |||
| 7 | * gnus-start.el (gnus-use-backend-marks): Removed, since it duplicates | ||
| 8 | gnus-propagate-marks. | ||
| 9 | |||
| 10 | * gnus-sum.el (gnus-summary-exit-no-update): Restore the group conf | ||
| 11 | before killing the buffers so that a non-full window conf gets handled | ||
| 12 | correctly. | ||
| 13 | (gnus-summary-exit): Ditto. | ||
| 14 | (gnus-summary-read-group-1): Ditto. | ||
| 15 | |||
| 16 | * nntp.el (nntp-retrieve-group-data-early): Reinstate the two-part | ||
| 17 | async code again so that we can debug it properly. | ||
| 18 | |||
| 19 | * message.el (message-reply): Take an optional switch-buffer parameter | ||
| 20 | so that Gnus window confs are respected better. | ||
| 21 | |||
| 1 | 2011-02-14 Teodor Zlatanov <tzz@lifelogs.com> | 22 | 2011-02-14 Teodor Zlatanov <tzz@lifelogs.com> |
| 2 | 23 | ||
| 3 | * auth-source.el (auth-source-backend-parse-parameters): Don't rely on | 24 | * auth-source.el (auth-source-backend-parse-parameters): Don't rely on |
| 4 | `plist-get' to accept non-list parameters (XEmacs issue). Fix | 25 | `plist-get' to accept non-list parameters (XEmacs issue). Fix |
| 5 | docstring. | 26 | docstring. |
| 27 | (auth-source-secrets-search): Use `delete-dups', `append mapcar', and | ||
| 28 | `butlast' instead of `remove-duplicates', `mapcan', and `subseq'. | ||
| 29 | (auth-sources, auth-source-backend-parse, auth-source-secrets-search): | ||
| 30 | Login collection is "Login" and not "login". | ||
| 6 | 31 | ||
| 7 | 2011-02-14 Lars Ingebrigtsen <larsi@gnus.org> | 32 | 2011-02-14 Lars Ingebrigtsen <larsi@gnus.org> |
| 8 | 33 | ||
| 34 | * gnus-art.el (article-update-date-lapsed): Don't bug out when updating | ||
| 35 | multiple headers. | ||
| 36 | |||
| 9 | * nnimap.el (nnimap-inhibit-logging): New variable. | 37 | * nnimap.el (nnimap-inhibit-logging): New variable. |
| 10 | (nnimap-log-command): Don't log login commands. | 38 | (nnimap-log-command): Don't log login commands. |
| 11 | 39 | ||
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index be698ad35d0..0692dbb538b 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el | |||
| @@ -173,7 +173,7 @@ can get pretty complex." | |||
| 173 | (choice | 173 | (choice |
| 174 | (string :tag "Just a file") | 174 | (string :tag "Just a file") |
| 175 | (const :tag "Default Secrets API Collection" 'default) | 175 | (const :tag "Default Secrets API Collection" 'default) |
| 176 | (const :tag "Login Secrets API Collection" "secrets:login") | 176 | (const :tag "Login Secrets API Collection" "secrets:Login") |
| 177 | (const :tag "Temp Secrets API Collection" "secrets:session") | 177 | (const :tag "Temp Secrets API Collection" "secrets:session") |
| 178 | (list :tag "Source definition" | 178 | (list :tag "Source definition" |
| 179 | (const :format "" :value :source) | 179 | (const :format "" :value :source) |
| @@ -185,7 +185,7 @@ can get pretty complex." | |||
| 185 | (choice :tag "Collection to use" | 185 | (choice :tag "Collection to use" |
| 186 | (string :tag "Collection name") | 186 | (string :tag "Collection name") |
| 187 | (const :tag "Default" 'default) | 187 | (const :tag "Default" 'default) |
| 188 | (const :tag "Login" "login") | 188 | (const :tag "Login" "Login") |
| 189 | (const | 189 | (const |
| 190 | :tag "Temporary" "session")))) | 190 | :tag "Temporary" "session")))) |
| 191 | (repeat :tag "Extra Parameters" :inline t | 191 | (repeat :tag "Extra Parameters" :inline t |
| @@ -252,19 +252,19 @@ If the value is not a list, symmetric encryption will be used." | |||
| 252 | ;; (auth-source-pick t :host "any" :protocol 'imap :user "joe") | 252 | ;; (auth-source-pick t :host "any" :protocol 'imap :user "joe") |
| 253 | ;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe") | 253 | ;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe") |
| 254 | ;; (:source (:secrets "session") :host t :protocol t :user "joe") | 254 | ;; (:source (:secrets "session") :host t :protocol t :user "joe") |
| 255 | ;; (:source (:secrets "login") :host t :protocol t) | 255 | ;; (:source (:secrets "Login") :host t :protocol t) |
| 256 | ;; (:source "~/.authinfo.gpg" :host t :protocol t))) | 256 | ;; (:source "~/.authinfo.gpg" :host t :protocol t))) |
| 257 | 257 | ||
| 258 | ;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe") | 258 | ;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe") |
| 259 | ;; (:source (:secrets "session") :host t :protocol t :user "joe") | 259 | ;; (:source (:secrets "session") :host t :protocol t :user "joe") |
| 260 | ;; (:source (:secrets "login") :host t :protocol t) | 260 | ;; (:source (:secrets "Login") :host t :protocol t) |
| 261 | ;; )) | 261 | ;; )) |
| 262 | 262 | ||
| 263 | ;; (setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t))) | 263 | ;; (setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t))) |
| 264 | 264 | ||
| 265 | ;; (auth-source-backend-parse "myfile.gpg") | 265 | ;; (auth-source-backend-parse "myfile.gpg") |
| 266 | ;; (auth-source-backend-parse 'default) | 266 | ;; (auth-source-backend-parse 'default) |
| 267 | ;; (auth-source-backend-parse "secrets:login") | 267 | ;; (auth-source-backend-parse "secrets:Login") |
| 268 | 268 | ||
| 269 | (defun auth-source-backend-parse (entry) | 269 | (defun auth-source-backend-parse (entry) |
| 270 | "Creates an auth-source-backend from an ENTRY in `auth-sources'." | 270 | "Creates an auth-source-backend from an ENTRY in `auth-sources'." |
| @@ -307,10 +307,10 @@ If the value is not a list, symmetric encryption will be used." | |||
| 307 | "session"))) | 307 | "session"))) |
| 308 | 308 | ||
| 309 | ;; if the source is a symbol, we look for the alias named so, | 309 | ;; if the source is a symbol, we look for the alias named so, |
| 310 | ;; and if that alias is missing, we use "login" | 310 | ;; and if that alias is missing, we use "Login" |
| 311 | (when (symbolp source) | 311 | (when (symbolp source) |
| 312 | (setq source (or (secrets-get-alias (symbol-name source)) | 312 | (setq source (or (secrets-get-alias (symbol-name source)) |
| 313 | "login"))) | 313 | "Login"))) |
| 314 | 314 | ||
| 315 | (auth-source-backend | 315 | (auth-source-backend |
| 316 | (format "Secrets API (%s)" source) | 316 | (format "Secrets API (%s)" source) |
| @@ -938,8 +938,8 @@ See `auth-source-search' for details on SPEC." | |||
| 938 | ;;; (let ((auth-sources '(default))) (auth-source-search :max 1 :delete t)) | 938 | ;;; (let ((auth-sources '(default))) (auth-source-search :max 1 :delete t)) |
| 939 | ;;; (let ((auth-sources '(default))) (auth-source-search :max 1)) | 939 | ;;; (let ((auth-sources '(default))) (auth-source-search :max 1)) |
| 940 | ;;; (let ((auth-sources '(default))) (auth-source-search)) | 940 | ;;; (let ((auth-sources '(default))) (auth-source-search)) |
| 941 | ;;; (let ((auth-sources '("secrets:login"))) (auth-source-search :max 1)) | 941 | ;;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1)) |
| 942 | ;;; (let ((auth-sources '("secrets:login"))) (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git")) | 942 | ;;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git")) |
| 943 | 943 | ||
| 944 | (defun* auth-source-secrets-search (&rest | 944 | (defun* auth-source-secrets-search (&rest |
| 945 | spec | 945 | spec |
| @@ -957,23 +957,23 @@ matching, do a wider search and narrow it down yourself. | |||
| 957 | 957 | ||
| 958 | You'll get back all the properties of the token as a plist. | 958 | You'll get back all the properties of the token as a plist. |
| 959 | 959 | ||
| 960 | Here's an example that looks for the first item in the 'login' | 960 | Here's an example that looks for the first item in the 'Login' |
| 961 | Secrets collection: | 961 | Secrets collection: |
| 962 | 962 | ||
| 963 | \(let ((auth-sources '(\"secrets:login\"))) | 963 | \(let ((auth-sources '(\"secrets:Login\"))) |
| 964 | (auth-source-search :max 1) | 964 | (auth-source-search :max 1) |
| 965 | 965 | ||
| 966 | Here's another that looks for the first item in the 'login' | 966 | Here's another that looks for the first item in the 'Login' |
| 967 | Secrets collection whose label contains 'gnus': | 967 | Secrets collection whose label contains 'gnus': |
| 968 | 968 | ||
| 969 | \(let ((auth-sources '(\"secrets:login\"))) | 969 | \(let ((auth-sources '(\"secrets:Login\"))) |
| 970 | (auth-source-search :max 1 :label \"gnus\") | 970 | (auth-source-search :max 1 :label \"gnus\") |
| 971 | 971 | ||
| 972 | And this one looks for the first item in the 'login' Secrets | 972 | And this one looks for the first item in the 'Login' Secrets |
| 973 | collection that's a Google Chrome entry for the git.gnus.org site | 973 | collection that's a Google Chrome entry for the git.gnus.org site |
| 974 | login: | 974 | authentication tokens: |
| 975 | 975 | ||
| 976 | \(let ((auth-sources '(\"secrets:login\"))) | 976 | \(let ((auth-sources '(\"secrets:Login\"))) |
| 977 | (auth-source-search :max 1 :signon_realm \"https://git.gnus.org/Git\")) | 977 | (auth-source-search :max 1 :signon_realm \"https://git.gnus.org/Git\")) |
| 978 | " | 978 | " |
| 979 | 979 | ||
| @@ -993,21 +993,23 @@ login: | |||
| 993 | collect (nth i spec))) | 993 | collect (nth i spec))) |
| 994 | ;; build a search spec without the ignored keys | 994 | ;; build a search spec without the ignored keys |
| 995 | ;; if a search key is nil or t (match anything), we skip it | 995 | ;; if a search key is nil or t (match anything), we skip it |
| 996 | (search-spec (mapcan (lambda (k) (if (or (null (plist-get spec k)) | 996 | (search-spec (apply 'append (mapcar |
| 997 | (eq t (plist-get spec k))) | 997 | (lambda (k) |
| 998 | nil | 998 | (if (or (null (plist-get spec k)) |
| 999 | (list k (plist-get spec k)))) | 999 | (eq t (plist-get spec k))) |
| 1000 | search-keys)) | 1000 | nil |
| 1001 | (list k (plist-get spec k)))) | ||
| 1002 | search-keys))) | ||
| 1001 | ;; needed keys (always including host, login, protocol, and secret) | 1003 | ;; needed keys (always including host, login, protocol, and secret) |
| 1002 | (returned-keys (remove-duplicates (append | 1004 | (returned-keys (delete-dups (append |
| 1003 | '(:host :login :protocol :secret) | 1005 | '(:host :login :protocol :secret) |
| 1004 | search-keys))) | 1006 | search-keys))) |
| 1005 | (items (loop for item in (apply 'secrets-search-items coll search-spec) | 1007 | (items (loop for item in (apply 'secrets-search-items coll search-spec) |
| 1006 | unless (and (stringp label) | 1008 | unless (and (stringp label) |
| 1007 | (not (string-match label item))) | 1009 | (not (string-match label item))) |
| 1008 | collect item)) | 1010 | collect item)) |
| 1009 | ;; TODO: respect max in `secrets-search-items', not after the fact | 1011 | ;; TODO: respect max in `secrets-search-items', not after the fact |
| 1010 | (items (subseq items 0 (min (length items) max))) | 1012 | (items (butlast items (- (length items) max))) |
| 1011 | ;; convert the item name to a full plist | 1013 | ;; convert the item name to a full plist |
| 1012 | (items (mapcar (lambda (item) | 1014 | (items (mapcar (lambda (item) |
| 1013 | (append | 1015 | (append |
| @@ -1017,18 +1019,20 @@ login: | |||
| 1017 | (lexical-let ((v (secrets-get-secret coll item))) | 1019 | (lexical-let ((v (secrets-get-secret coll item))) |
| 1018 | (lambda () v))) | 1020 | (lambda () v))) |
| 1019 | ;; rewrite the entry from ((k1 v1) (k2 v2)) to plist | 1021 | ;; rewrite the entry from ((k1 v1) (k2 v2)) to plist |
| 1020 | (mapcan (lambda (entry) | 1022 | (apply 'append |
| 1021 | (list (car entry) (cdr entry))) | 1023 | (mapcar (lambda (entry) |
| 1022 | (secrets-get-attributes coll item)))) | 1024 | (list (car entry) (cdr entry))) |
| 1025 | (secrets-get-attributes coll item))))) | ||
| 1023 | items)) | 1026 | items)) |
| 1024 | ;; ensure each item has each key in `returned-keys' | 1027 | ;; ensure each item has each key in `returned-keys' |
| 1025 | (items (mapcar (lambda (plist) | 1028 | (items (mapcar (lambda (plist) |
| 1026 | (append | 1029 | (append |
| 1027 | (mapcan (lambda (req) | 1030 | (apply 'append |
| 1028 | (if (plist-get plist req) | 1031 | (mapcar (lambda (req) |
| 1029 | nil | 1032 | (if (plist-get plist req) |
| 1030 | (list req nil))) | 1033 | nil |
| 1031 | returned-keys) | 1034 | (list req nil))) |
| 1035 | returned-keys)) | ||
| 1032 | plist)) | 1036 | plist)) |
| 1033 | items))) | 1037 | items))) |
| 1034 | items)) | 1038 | items)) |
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 3e1630804f7..82ad4974fd4 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -3641,10 +3641,11 @@ function and want to see what the date was before converting." | |||
| 3641 | (let ((type (get-text-property (match-beginning 0) | 3641 | (let ((type (get-text-property (match-beginning 0) |
| 3642 | 'gnus-date-type))) | 3642 | 'gnus-date-type))) |
| 3643 | (when (memq type '(lapsed combined-lapsed user-format)) | 3643 | (when (memq type '(lapsed combined-lapsed user-format)) |
| 3644 | (unless (= window-start | 3644 | (when (and window-start |
| 3645 | (save-excursion | 3645 | (not (= window-start |
| 3646 | (forward-line 1) | 3646 | (save-excursion |
| 3647 | (point))) | 3647 | (forward-line 1) |
| 3648 | (point))))) | ||
| 3648 | (setq window-start nil)) | 3649 | (setq window-start nil)) |
| 3649 | (save-excursion | 3650 | (save-excursion |
| 3650 | (article-date-ut type t (match-beginning 0))) | 3651 | (article-date-ut type t (match-beginning 0))) |
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el index 08fef2327ad..b199dcc572c 100644 --- a/lisp/gnus/gnus-msg.el +++ b/lisp/gnus/gnus-msg.el | |||
| @@ -1081,14 +1081,14 @@ If VERY-WIDE, make a very wide reply." | |||
| 1081 | (gnus-summary-work-articles 1)))) | 1081 | (gnus-summary-work-articles 1)))) |
| 1082 | ;; Allow user to require confirmation before replying by mail to the | 1082 | ;; Allow user to require confirmation before replying by mail to the |
| 1083 | ;; author of a news article (or mail message). | 1083 | ;; author of a news article (or mail message). |
| 1084 | (when (or | 1084 | (when (or (not (or (gnus-news-group-p gnus-newsgroup-name) |
| 1085 | (not (or (gnus-news-group-p gnus-newsgroup-name) | ||
| 1086 | gnus-confirm-treat-mail-like-news)) | 1085 | gnus-confirm-treat-mail-like-news)) |
| 1087 | (not (cond ((stringp gnus-confirm-mail-reply-to-news) | 1086 | (not (cond ((stringp gnus-confirm-mail-reply-to-news) |
| 1088 | (string-match gnus-confirm-mail-reply-to-news | 1087 | (string-match gnus-confirm-mail-reply-to-news |
| 1089 | gnus-newsgroup-name)) | 1088 | gnus-newsgroup-name)) |
| 1090 | ((functionp gnus-confirm-mail-reply-to-news) | 1089 | ((functionp gnus-confirm-mail-reply-to-news) |
| 1091 | (funcall gnus-confirm-mail-reply-to-news gnus-newsgroup-name)) | 1090 | (funcall gnus-confirm-mail-reply-to-news |
| 1091 | gnus-newsgroup-name)) | ||
| 1092 | (t gnus-confirm-mail-reply-to-news))) | 1092 | (t gnus-confirm-mail-reply-to-news))) |
| 1093 | (if (or wide very-wide) | 1093 | (if (or wide very-wide) |
| 1094 | t ;; Ignore gnus-confirm-mail-reply-to-news for wide and very | 1094 | t ;; Ignore gnus-confirm-mail-reply-to-news for wide and very |
| @@ -1123,7 +1123,7 @@ If VERY-WIDE, make a very wide reply." | |||
| 1123 | (insert headers)) | 1123 | (insert headers)) |
| 1124 | (goto-char (point-max))) | 1124 | (goto-char (point-max))) |
| 1125 | (mml-quote-region (point) (point-max)) | 1125 | (mml-quote-region (point) (point-max)) |
| 1126 | (message-reply nil wide) | 1126 | (message-reply nil wide 'switch-to-buffer) |
| 1127 | (when yank | 1127 | (when yank |
| 1128 | (gnus-inews-yank-articles yank)) | 1128 | (gnus-inews-yank-articles yank)) |
| 1129 | (gnus-summary-handle-replysign))))) | 1129 | (gnus-summary-handle-replysign))))) |
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index b8a6be8702e..b493a93d40c 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el | |||
| @@ -380,13 +380,6 @@ disc." | |||
| 380 | :group 'gnus-newsrc | 380 | :group 'gnus-newsrc |
| 381 | :type 'boolean) | 381 | :type 'boolean) |
| 382 | 382 | ||
| 383 | (defcustom gnus-use-backend-marks nil | ||
| 384 | "If non-nil, Gnus will store and retrieve marks from the backends. | ||
| 385 | This means that marks will be stored both in .newsrc.eld and in | ||
| 386 | the backend, and will slow operation down somewhat." | ||
| 387 | :group 'gnus-newsrc | ||
| 388 | :type 'boolean) | ||
| 389 | |||
| 390 | (defcustom gnus-check-bogus-groups-hook nil | 383 | (defcustom gnus-check-bogus-groups-hook nil |
| 391 | "A hook run after removing bogus groups." | 384 | "A hook run after removing bogus groups." |
| 392 | :group 'gnus-start-server | 385 | :group 'gnus-start-server |
| @@ -1509,7 +1502,7 @@ If SCAN, request a scan of that group as well." | |||
| 1509 | (gnus-activate-group (gnus-info-group info) nil t)) | 1502 | (gnus-activate-group (gnus-info-group info) nil t)) |
| 1510 | 1503 | ||
| 1511 | ;; Allow backends to update marks, | 1504 | ;; Allow backends to update marks, |
| 1512 | (when gnus-use-backend-marks | 1505 | (when gnus-propagate-marks |
| 1513 | (let ((method (inline (gnus-find-method-for-group | 1506 | (let ((method (inline (gnus-find-method-for-group |
| 1514 | (gnus-info-group info))))) | 1507 | (gnus-info-group info))))) |
| 1515 | (when (gnus-check-backend-function 'request-marks (car method)) | 1508 | (when (gnus-check-backend-function 'request-marks (car method)) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 8fac5021df3..4dfc79a8883 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -1234,9 +1234,11 @@ For example: ((1 . cn-gb-2312) (2 . big5))." | |||
| 1234 | :type 'boolean | 1234 | :type 'boolean |
| 1235 | :group 'gnus-summary-marks) | 1235 | :group 'gnus-summary-marks) |
| 1236 | 1236 | ||
| 1237 | (defcustom gnus-propagate-marks t | 1237 | (defcustom gnus-propagate-marks nil |
| 1238 | "If non-nil, do not propagate marks to the backends." | 1238 | "If non-nil, Gnus will store and retrieve marks from the backends. |
| 1239 | :version "23.1" ;; No Gnus | 1239 | This means that marks will be stored both in .newsrc.eld and in |
| 1240 | the backend, and will slow operation down somewhat." | ||
| 1241 | :version "24.1" | ||
| 1240 | :type 'boolean | 1242 | :type 'boolean |
| 1241 | :group 'gnus-summary-marks) | 1243 | :group 'gnus-summary-marks) |
| 1242 | 1244 | ||
| @@ -4067,6 +4069,7 @@ If NO-DISPLAY, don't generate a summary buffer." | |||
| 4067 | ;; gnus-summary-prepare-hook since kill processing may not | 4069 | ;; gnus-summary-prepare-hook since kill processing may not |
| 4068 | ;; work with hidden articles. | 4070 | ;; work with hidden articles. |
| 4069 | (gnus-summary-maybe-hide-threads) | 4071 | (gnus-summary-maybe-hide-threads) |
| 4072 | (gnus-configure-windows 'summary) | ||
| 4070 | (when kill-buffer | 4073 | (when kill-buffer |
| 4071 | (gnus-kill-or-deaden-summary kill-buffer)) | 4074 | (gnus-kill-or-deaden-summary kill-buffer)) |
| 4072 | (gnus-summary-auto-select-subject) | 4075 | (gnus-summary-auto-select-subject) |
| @@ -4076,7 +4079,6 @@ If NO-DISPLAY, don't generate a summary buffer." | |||
| 4076 | gnus-newsgroup-unreads | 4079 | gnus-newsgroup-unreads |
| 4077 | gnus-auto-select-first) | 4080 | gnus-auto-select-first) |
| 4078 | (progn | 4081 | (progn |
| 4079 | (gnus-configure-windows 'summary) | ||
| 4080 | (let ((art (gnus-summary-article-number))) | 4082 | (let ((art (gnus-summary-article-number))) |
| 4081 | (unless (and (not gnus-plugged) | 4083 | (unless (and (not gnus-plugged) |
| 4082 | (or (memq art gnus-newsgroup-undownloaded) | 4084 | (or (memq art gnus-newsgroup-undownloaded) |
| @@ -7168,6 +7170,7 @@ If FORCE (the prefix), also save the .newsrc file(s)." | |||
| 7168 | (let* ((group gnus-newsgroup-name) | 7170 | (let* ((group gnus-newsgroup-name) |
| 7169 | (quit-config (gnus-group-quit-config gnus-newsgroup-name)) | 7171 | (quit-config (gnus-group-quit-config gnus-newsgroup-name)) |
| 7170 | (gnus-group-is-exiting-p t) | 7172 | (gnus-group-is-exiting-p t) |
| 7173 | (article-buffer gnus-article-buffer) | ||
| 7171 | (mode major-mode) | 7174 | (mode major-mode) |
| 7172 | (group-point nil) | 7175 | (group-point nil) |
| 7173 | (buf (current-buffer))) | 7176 | (buf (current-buffer))) |
| @@ -7220,16 +7223,6 @@ If FORCE (the prefix), also save the .newsrc file(s)." | |||
| 7220 | (when (eq mode 'gnus-summary-mode) | 7223 | (when (eq mode 'gnus-summary-mode) |
| 7221 | (gnus-kill-buffer buf))) | 7224 | (gnus-kill-buffer buf))) |
| 7222 | 7225 | ||
| 7223 | ;; If we have several article buffers, we kill them at exit. | ||
| 7224 | (unless gnus-single-article-buffer | ||
| 7225 | (when (gnus-buffer-live-p gnus-article-buffer) | ||
| 7226 | (with-current-buffer gnus-article-buffer | ||
| 7227 | ;; Don't kill sticky article buffers | ||
| 7228 | (unless (eq major-mode 'gnus-sticky-article-mode) | ||
| 7229 | (gnus-kill-buffer gnus-article-buffer) | ||
| 7230 | (setq gnus-article-current nil)))) | ||
| 7231 | (gnus-kill-buffer gnus-original-article-buffer)) | ||
| 7232 | |||
| 7233 | (setq gnus-current-select-method gnus-select-method) | 7226 | (setq gnus-current-select-method gnus-select-method) |
| 7234 | (set-buffer gnus-group-buffer) | 7227 | (set-buffer gnus-group-buffer) |
| 7235 | (if quit-config | 7228 | (if quit-config |
| @@ -7241,6 +7234,17 @@ If FORCE (the prefix), also save the .newsrc file(s)." | |||
| 7241 | (if win (set-window-point win (point)))) | 7234 | (if win (set-window-point win (point)))) |
| 7242 | (unless leave-hidden | 7235 | (unless leave-hidden |
| 7243 | (gnus-configure-windows 'group 'force))) | 7236 | (gnus-configure-windows 'group 'force))) |
| 7237 | |||
| 7238 | ;; If we have several article buffers, we kill them at exit. | ||
| 7239 | (unless gnus-single-article-buffer | ||
| 7240 | (when (gnus-buffer-live-p article-buffer) | ||
| 7241 | (with-current-buffer article-buffer | ||
| 7242 | ;; Don't kill sticky article buffers | ||
| 7243 | (unless (eq major-mode 'gnus-sticky-article-mode) | ||
| 7244 | (gnus-kill-buffer article-buffer) | ||
| 7245 | (setq gnus-article-current nil)))) | ||
| 7246 | (gnus-kill-buffer gnus-original-article-buffer)) | ||
| 7247 | |||
| 7244 | ;; Clear the current group name. | 7248 | ;; Clear the current group name. |
| 7245 | (unless quit-config | 7249 | (unless quit-config |
| 7246 | (setq gnus-newsgroup-name nil))))) | 7250 | (setq gnus-newsgroup-name nil))))) |
| @@ -7269,6 +7273,8 @@ If FORCE (the prefix), also save the .newsrc file(s)." | |||
| 7269 | (gnus-kill-buffer gnus-article-buffer) | 7273 | (gnus-kill-buffer gnus-article-buffer) |
| 7270 | (gnus-kill-buffer gnus-original-article-buffer) | 7274 | (gnus-kill-buffer gnus-original-article-buffer) |
| 7271 | (setq gnus-article-current nil)) | 7275 | (setq gnus-article-current nil)) |
| 7276 | ;; Return to the group buffer. | ||
| 7277 | (gnus-configure-windows 'group 'force) | ||
| 7272 | (if (not gnus-kill-summary-on-exit) | 7278 | (if (not gnus-kill-summary-on-exit) |
| 7273 | (gnus-deaden-summary) | 7279 | (gnus-deaden-summary) |
| 7274 | (gnus-close-group group) | 7280 | (gnus-close-group group) |
| @@ -7280,8 +7286,6 @@ If FORCE (the prefix), also save the .newsrc file(s)." | |||
| 7280 | (gnus-async-prefetch-remove-group group) | 7286 | (gnus-async-prefetch-remove-group group) |
| 7281 | (when (get-buffer gnus-article-buffer) | 7287 | (when (get-buffer gnus-article-buffer) |
| 7282 | (bury-buffer gnus-article-buffer)) | 7288 | (bury-buffer gnus-article-buffer)) |
| 7283 | ;; Return to the group buffer. | ||
| 7284 | (gnus-configure-windows 'group 'force) | ||
| 7285 | ;; Clear the current group name. | 7289 | ;; Clear the current group name. |
| 7286 | (setq gnus-newsgroup-name nil) | 7290 | (setq gnus-newsgroup-name nil) |
| 7287 | (unless (gnus-ephemeral-group-p group) | 7291 | (unless (gnus-ephemeral-group-p group) |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 42b61950986..58daf1baf94 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -6779,7 +6779,7 @@ Useful functions to put in this list include: | |||
| 6779 | subject) | 6779 | subject) |
| 6780 | 6780 | ||
| 6781 | ;;;###autoload | 6781 | ;;;###autoload |
| 6782 | (defun message-reply (&optional to-address wide) | 6782 | (defun message-reply (&optional to-address wide switch-function) |
| 6783 | "Start editing a reply to the article in the current buffer." | 6783 | "Start editing a reply to the article in the current buffer." |
| 6784 | (interactive) | 6784 | (interactive) |
| 6785 | (require 'gnus-sum) ; for gnus-list-identifiers | 6785 | (require 'gnus-sum) ; for gnus-list-identifiers |
| @@ -6822,7 +6822,8 @@ Useful functions to put in this list include: | |||
| 6822 | (message-pop-to-buffer | 6822 | (message-pop-to-buffer |
| 6823 | (message-buffer-name | 6823 | (message-buffer-name |
| 6824 | (if wide "wide reply" "reply") from | 6824 | (if wide "wide reply" "reply") from |
| 6825 | (if wide to-address nil)))) | 6825 | (if wide to-address nil)) |
| 6826 | switch-function)) | ||
| 6826 | 6827 | ||
| 6827 | (setq message-reply-headers | 6828 | (setq message-reply-headers |
| 6828 | (vector 0 subject from date message-id references 0 0 "")) | 6829 | (vector 0 subject from date message-id references 0 0 "")) |
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el index 4b42637978e..0fc38553c29 100644 --- a/lisp/gnus/nntp.el +++ b/lisp/gnus/nntp.el | |||
| @@ -774,7 +774,7 @@ command whose response triggered the error." | |||
| 774 | (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max)) | 774 | (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max)) |
| 775 | 'headers))))) | 775 | 'headers))))) |
| 776 | 776 | ||
| 777 | (deffoo nntp-retrieve-group-data-early-disabled (server infos) | 777 | (deffoo nntp-retrieve-group-data-early (server infos) |
| 778 | "Retrieve group info on INFOS." | 778 | "Retrieve group info on INFOS." |
| 779 | (nntp-with-open-group nil server | 779 | (nntp-with-open-group nil server |
| 780 | (when (nntp-find-connection-buffer nntp-server-buffer) | 780 | (when (nntp-find-connection-buffer nntp-server-buffer) |
| @@ -793,7 +793,7 @@ command whose response triggered the error." | |||
| 793 | nil command (gnus-group-real-name (gnus-info-group info))))) | 793 | nil command (gnus-group-real-name (gnus-info-group info))))) |
| 794 | (length infos))))) | 794 | (length infos))))) |
| 795 | 795 | ||
| 796 | (deffoo nntp-finish-retrieve-group-infos-disabled (server infos count) | 796 | (deffoo nntp-finish-retrieve-group-infos (server infos count) |
| 797 | (nntp-with-open-group nil server | 797 | (nntp-with-open-group nil server |
| 798 | (let ((buf (nntp-find-connection-buffer nntp-server-buffer)) | 798 | (let ((buf (nntp-find-connection-buffer nntp-server-buffer)) |
| 799 | (method (gnus-find-method-for-group | 799 | (method (gnus-find-method-for-group |
| @@ -814,10 +814,7 @@ command whose response triggered the error." | |||
| 814 | (< received count))) | 814 | (< received count))) |
| 815 | (nntp-accept-response)) | 815 | (nntp-accept-response)) |
| 816 | ;; We now have all the entries. Remove CRs. | 816 | ;; We now have all the entries. Remove CRs. |
| 817 | (goto-char (point-min)) | 817 | (nnheader-strip-cr) |
| 818 | (while (search-forward "\r" nil t) | ||
| 819 | (replace-match "" t t)) | ||
| 820 | |||
| 821 | (if (not nntp-server-list-active-group) | 818 | (if (not nntp-server-list-active-group) |
| 822 | (progn | 819 | (progn |
| 823 | (nntp-copy-to-buffer nntp-server-buffer | 820 | (nntp-copy-to-buffer nntp-server-buffer |
| @@ -830,7 +827,9 @@ command whose response triggered the error." | |||
| 830 | (delete-region (match-beginning 0) | 827 | (delete-region (match-beginning 0) |
| 831 | (progn (forward-line 1) (point)))) | 828 | (progn (forward-line 1) (point)))) |
| 832 | (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max)) | 829 | (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max)) |
| 833 | (gnus-active-to-gnus-format method gnus-active-hashtb nil t))))))) | 830 | (with-current-buffer nntp-server-buffer |
| 831 | (gnus-active-to-gnus-format method gnus-active-hashtb | ||
| 832 | nil t)))))))) | ||
| 834 | 833 | ||
| 835 | (deffoo nntp-retrieve-groups (groups &optional server) | 834 | (deffoo nntp-retrieve-groups (groups &optional server) |
| 836 | "Retrieve group info on GROUPS." | 835 | "Retrieve group info on GROUPS." |