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.
This commit is contained in:
parent
c5ca3aa008
commit
5415d0766d
10 changed files with 111 additions and 77 deletions
|
@ -3,6 +3,10 @@
|
|||
Merge from gnulib.
|
||||
* texinfo.tex: Update to version 2011-02-14.11.
|
||||
|
||||
2011-02-14 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* auth.texi (Help for users): Login collection is "Login" and not "login".
|
||||
|
||||
2011-02-13 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (History): Remove IMAP support.
|
||||
|
@ -21,7 +25,7 @@
|
|||
|
||||
* sc.texi (Getting Connected): Remove old index entries.
|
||||
|
||||
2011-02-12 Ulrich Mueller <ulm@gentoo.org>
|
||||
2011-02-12 Ulrich Mueller <ulm@gentoo.org>
|
||||
|
||||
* url.texi: Remove duplicate @dircategory (Bug#7942).
|
||||
|
||||
|
|
|
@ -161,8 +161,8 @@ and simplest configuration is:
|
|||
(setq auth-sources '((:source "~/.authinfo.gpg")))
|
||||
;;; even shorter and the @emph{default}:
|
||||
(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo"))
|
||||
;;; use the Secrets API @var{login} collection (@pxref{Secret Service API})
|
||||
(setq auth-sources '("secrets:login"))
|
||||
;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API})
|
||||
(setq auth-sources '("secrets:Login"))
|
||||
@end lisp
|
||||
|
||||
By adding multiple entries to @code{auth-sources} with a particular
|
||||
|
|
|
@ -1,11 +1,39 @@
|
|||
2011-02-14 Lars Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* 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.
|
||||
|
||||
2011-02-14 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* auth-source.el (auth-source-backend-parse-parameters): Don't rely on
|
||||
`plist-get' to accept non-list parameters (XEmacs issue). Fix
|
||||
docstring.
|
||||
(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".
|
||||
|
||||
2011-02-14 Lars Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* gnus-art.el (article-update-date-lapsed): Don't bug out when updating
|
||||
multiple headers.
|
||||
|
||||
* nnimap.el (nnimap-inhibit-logging): New variable.
|
||||
(nnimap-log-command): Don't log login commands.
|
||||
|
||||
|
|
|
@ -173,7 +173,7 @@ can get pretty complex."
|
|||
(choice
|
||||
(string :tag "Just a file")
|
||||
(const :tag "Default Secrets API Collection" 'default)
|
||||
(const :tag "Login Secrets API Collection" "secrets:login")
|
||||
(const :tag "Login Secrets API Collection" "secrets:Login")
|
||||
(const :tag "Temp Secrets API Collection" "secrets:session")
|
||||
(list :tag "Source definition"
|
||||
(const :format "" :value :source)
|
||||
|
@ -185,7 +185,7 @@ can get pretty complex."
|
|||
(choice :tag "Collection to use"
|
||||
(string :tag "Collection name")
|
||||
(const :tag "Default" 'default)
|
||||
(const :tag "Login" "login")
|
||||
(const :tag "Login" "Login")
|
||||
(const
|
||||
:tag "Temporary" "session"))))
|
||||
(repeat :tag "Extra Parameters" :inline t
|
||||
|
@ -252,19 +252,19 @@ If the value is not a list, symmetric encryption will be used."
|
|||
;; (auth-source-pick t :host "any" :protocol 'imap :user "joe")
|
||||
;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe")
|
||||
;; (:source (:secrets "session") :host t :protocol t :user "joe")
|
||||
;; (:source (:secrets "login") :host t :protocol t)
|
||||
;; (:source (:secrets "Login") :host t :protocol t)
|
||||
;; (:source "~/.authinfo.gpg" :host t :protocol t)))
|
||||
|
||||
;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe")
|
||||
;; (:source (:secrets "session") :host t :protocol t :user "joe")
|
||||
;; (:source (:secrets "login") :host t :protocol t)
|
||||
;; (:source (:secrets "Login") :host t :protocol t)
|
||||
;; ))
|
||||
|
||||
;; (setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
|
||||
|
||||
;; (auth-source-backend-parse "myfile.gpg")
|
||||
;; (auth-source-backend-parse 'default)
|
||||
;; (auth-source-backend-parse "secrets:login")
|
||||
;; (auth-source-backend-parse "secrets:Login")
|
||||
|
||||
(defun auth-source-backend-parse (entry)
|
||||
"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."
|
|||
"session")))
|
||||
|
||||
;; if the source is a symbol, we look for the alias named so,
|
||||
;; and if that alias is missing, we use "login"
|
||||
;; and if that alias is missing, we use "Login"
|
||||
(when (symbolp source)
|
||||
(setq source (or (secrets-get-alias (symbol-name source))
|
||||
"login")))
|
||||
"Login")))
|
||||
|
||||
(auth-source-backend
|
||||
(format "Secrets API (%s)" source)
|
||||
|
@ -938,8 +938,8 @@ See `auth-source-search' for details on SPEC."
|
|||
;;; (let ((auth-sources '(default))) (auth-source-search :max 1 :delete t))
|
||||
;;; (let ((auth-sources '(default))) (auth-source-search :max 1))
|
||||
;;; (let ((auth-sources '(default))) (auth-source-search))
|
||||
;;; (let ((auth-sources '("secrets:login"))) (auth-source-search :max 1))
|
||||
;;; (let ((auth-sources '("secrets:login"))) (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git"))
|
||||
;;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1))
|
||||
;;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git"))
|
||||
|
||||
(defun* auth-source-secrets-search (&rest
|
||||
spec
|
||||
|
@ -957,23 +957,23 @@ matching, do a wider search and narrow it down yourself.
|
|||
|
||||
You'll get back all the properties of the token as a plist.
|
||||
|
||||
Here's an example that looks for the first item in the 'login'
|
||||
Here's an example that looks for the first item in the 'Login'
|
||||
Secrets collection:
|
||||
|
||||
\(let ((auth-sources '(\"secrets:login\")))
|
||||
\(let ((auth-sources '(\"secrets:Login\")))
|
||||
(auth-source-search :max 1)
|
||||
|
||||
Here's another that looks for the first item in the 'login'
|
||||
Here's another that looks for the first item in the 'Login'
|
||||
Secrets collection whose label contains 'gnus':
|
||||
|
||||
\(let ((auth-sources '(\"secrets:login\")))
|
||||
\(let ((auth-sources '(\"secrets:Login\")))
|
||||
(auth-source-search :max 1 :label \"gnus\")
|
||||
|
||||
And this one looks for the first item in the 'login' Secrets
|
||||
And this one looks for the first item in the 'Login' Secrets
|
||||
collection that's a Google Chrome entry for the git.gnus.org site
|
||||
login:
|
||||
authentication tokens:
|
||||
|
||||
\(let ((auth-sources '(\"secrets:login\")))
|
||||
\(let ((auth-sources '(\"secrets:Login\")))
|
||||
(auth-source-search :max 1 :signon_realm \"https://git.gnus.org/Git\"))
|
||||
"
|
||||
|
||||
|
@ -993,21 +993,23 @@ login:
|
|||
collect (nth i spec)))
|
||||
;; build a search spec without the ignored keys
|
||||
;; if a search key is nil or t (match anything), we skip it
|
||||
(search-spec (mapcan (lambda (k) (if (or (null (plist-get spec k))
|
||||
(eq t (plist-get spec k)))
|
||||
nil
|
||||
(list k (plist-get spec k))))
|
||||
search-keys))
|
||||
(search-spec (apply 'append (mapcar
|
||||
(lambda (k)
|
||||
(if (or (null (plist-get spec k))
|
||||
(eq t (plist-get spec k)))
|
||||
nil
|
||||
(list k (plist-get spec k))))
|
||||
search-keys)))
|
||||
;; needed keys (always including host, login, protocol, and secret)
|
||||
(returned-keys (remove-duplicates (append
|
||||
'(:host :login :protocol :secret)
|
||||
search-keys)))
|
||||
(returned-keys (delete-dups (append
|
||||
'(:host :login :protocol :secret)
|
||||
search-keys)))
|
||||
(items (loop for item in (apply 'secrets-search-items coll search-spec)
|
||||
unless (and (stringp label)
|
||||
(not (string-match label item)))
|
||||
collect item))
|
||||
;; TODO: respect max in `secrets-search-items', not after the fact
|
||||
(items (subseq items 0 (min (length items) max)))
|
||||
(items (butlast items (- (length items) max)))
|
||||
;; convert the item name to a full plist
|
||||
(items (mapcar (lambda (item)
|
||||
(append
|
||||
|
@ -1017,18 +1019,20 @@ login:
|
|||
(lexical-let ((v (secrets-get-secret coll item)))
|
||||
(lambda () v)))
|
||||
;; rewrite the entry from ((k1 v1) (k2 v2)) to plist
|
||||
(mapcan (lambda (entry)
|
||||
(list (car entry) (cdr entry)))
|
||||
(secrets-get-attributes coll item))))
|
||||
(apply 'append
|
||||
(mapcar (lambda (entry)
|
||||
(list (car entry) (cdr entry)))
|
||||
(secrets-get-attributes coll item)))))
|
||||
items))
|
||||
;; ensure each item has each key in `returned-keys'
|
||||
(items (mapcar (lambda (plist)
|
||||
(append
|
||||
(mapcan (lambda (req)
|
||||
(if (plist-get plist req)
|
||||
nil
|
||||
(list req nil)))
|
||||
returned-keys)
|
||||
(apply 'append
|
||||
(mapcar (lambda (req)
|
||||
(if (plist-get plist req)
|
||||
nil
|
||||
(list req nil)))
|
||||
returned-keys))
|
||||
plist))
|
||||
items)))
|
||||
items))
|
||||
|
|
|
@ -3641,10 +3641,11 @@ function and want to see what the date was before converting."
|
|||
(let ((type (get-text-property (match-beginning 0)
|
||||
'gnus-date-type)))
|
||||
(when (memq type '(lapsed combined-lapsed user-format))
|
||||
(unless (= window-start
|
||||
(save-excursion
|
||||
(forward-line 1)
|
||||
(point)))
|
||||
(when (and window-start
|
||||
(not (= window-start
|
||||
(save-excursion
|
||||
(forward-line 1)
|
||||
(point)))))
|
||||
(setq window-start nil))
|
||||
(save-excursion
|
||||
(article-date-ut type t (match-beginning 0)))
|
||||
|
|
|
@ -1081,14 +1081,14 @@ If VERY-WIDE, make a very wide reply."
|
|||
(gnus-summary-work-articles 1))))
|
||||
;; Allow user to require confirmation before replying by mail to the
|
||||
;; author of a news article (or mail message).
|
||||
(when (or
|
||||
(not (or (gnus-news-group-p gnus-newsgroup-name)
|
||||
(when (or (not (or (gnus-news-group-p gnus-newsgroup-name)
|
||||
gnus-confirm-treat-mail-like-news))
|
||||
(not (cond ((stringp gnus-confirm-mail-reply-to-news)
|
||||
(string-match gnus-confirm-mail-reply-to-news
|
||||
gnus-newsgroup-name))
|
||||
((functionp gnus-confirm-mail-reply-to-news)
|
||||
(funcall gnus-confirm-mail-reply-to-news gnus-newsgroup-name))
|
||||
(funcall gnus-confirm-mail-reply-to-news
|
||||
gnus-newsgroup-name))
|
||||
(t gnus-confirm-mail-reply-to-news)))
|
||||
(if (or wide very-wide)
|
||||
t ;; Ignore gnus-confirm-mail-reply-to-news for wide and very
|
||||
|
@ -1123,7 +1123,7 @@ If VERY-WIDE, make a very wide reply."
|
|||
(insert headers))
|
||||
(goto-char (point-max)))
|
||||
(mml-quote-region (point) (point-max))
|
||||
(message-reply nil wide)
|
||||
(message-reply nil wide 'switch-to-buffer)
|
||||
(when yank
|
||||
(gnus-inews-yank-articles yank))
|
||||
(gnus-summary-handle-replysign)))))
|
||||
|
|
|
@ -380,13 +380,6 @@ disc."
|
|||
:group 'gnus-newsrc
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom gnus-use-backend-marks nil
|
||||
"If non-nil, Gnus will store and retrieve marks from the backends.
|
||||
This means that marks will be stored both in .newsrc.eld and in
|
||||
the backend, and will slow operation down somewhat."
|
||||
:group 'gnus-newsrc
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom gnus-check-bogus-groups-hook nil
|
||||
"A hook run after removing bogus groups."
|
||||
:group 'gnus-start-server
|
||||
|
@ -1509,7 +1502,7 @@ If SCAN, request a scan of that group as well."
|
|||
(gnus-activate-group (gnus-info-group info) nil t))
|
||||
|
||||
;; Allow backends to update marks,
|
||||
(when gnus-use-backend-marks
|
||||
(when gnus-propagate-marks
|
||||
(let ((method (inline (gnus-find-method-for-group
|
||||
(gnus-info-group info)))))
|
||||
(when (gnus-check-backend-function 'request-marks (car method))
|
||||
|
|
|
@ -1234,9 +1234,11 @@ For example: ((1 . cn-gb-2312) (2 . big5))."
|
|||
:type 'boolean
|
||||
:group 'gnus-summary-marks)
|
||||
|
||||
(defcustom gnus-propagate-marks t
|
||||
"If non-nil, do not propagate marks to the backends."
|
||||
:version "23.1" ;; No Gnus
|
||||
(defcustom gnus-propagate-marks nil
|
||||
"If non-nil, Gnus will store and retrieve marks from the backends.
|
||||
This means that marks will be stored both in .newsrc.eld and in
|
||||
the backend, and will slow operation down somewhat."
|
||||
:version "24.1"
|
||||
:type 'boolean
|
||||
:group 'gnus-summary-marks)
|
||||
|
||||
|
@ -4067,6 +4069,7 @@ If NO-DISPLAY, don't generate a summary buffer."
|
|||
;; gnus-summary-prepare-hook since kill processing may not
|
||||
;; work with hidden articles.
|
||||
(gnus-summary-maybe-hide-threads)
|
||||
(gnus-configure-windows 'summary)
|
||||
(when kill-buffer
|
||||
(gnus-kill-or-deaden-summary kill-buffer))
|
||||
(gnus-summary-auto-select-subject)
|
||||
|
@ -4076,7 +4079,6 @@ If NO-DISPLAY, don't generate a summary buffer."
|
|||
gnus-newsgroup-unreads
|
||||
gnus-auto-select-first)
|
||||
(progn
|
||||
(gnus-configure-windows 'summary)
|
||||
(let ((art (gnus-summary-article-number)))
|
||||
(unless (and (not gnus-plugged)
|
||||
(or (memq art gnus-newsgroup-undownloaded)
|
||||
|
@ -7168,6 +7170,7 @@ If FORCE (the prefix), also save the .newsrc file(s)."
|
|||
(let* ((group gnus-newsgroup-name)
|
||||
(quit-config (gnus-group-quit-config gnus-newsgroup-name))
|
||||
(gnus-group-is-exiting-p t)
|
||||
(article-buffer gnus-article-buffer)
|
||||
(mode major-mode)
|
||||
(group-point nil)
|
||||
(buf (current-buffer)))
|
||||
|
@ -7220,16 +7223,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
|
|||
(when (eq mode 'gnus-summary-mode)
|
||||
(gnus-kill-buffer buf)))
|
||||
|
||||
;; If we have several article buffers, we kill them at exit.
|
||||
(unless gnus-single-article-buffer
|
||||
(when (gnus-buffer-live-p gnus-article-buffer)
|
||||
(with-current-buffer gnus-article-buffer
|
||||
;; Don't kill sticky article buffers
|
||||
(unless (eq major-mode 'gnus-sticky-article-mode)
|
||||
(gnus-kill-buffer gnus-article-buffer)
|
||||
(setq gnus-article-current nil))))
|
||||
(gnus-kill-buffer gnus-original-article-buffer))
|
||||
|
||||
(setq gnus-current-select-method gnus-select-method)
|
||||
(set-buffer gnus-group-buffer)
|
||||
(if quit-config
|
||||
|
@ -7241,6 +7234,17 @@ If FORCE (the prefix), also save the .newsrc file(s)."
|
|||
(if win (set-window-point win (point))))
|
||||
(unless leave-hidden
|
||||
(gnus-configure-windows 'group 'force)))
|
||||
|
||||
;; If we have several article buffers, we kill them at exit.
|
||||
(unless gnus-single-article-buffer
|
||||
(when (gnus-buffer-live-p article-buffer)
|
||||
(with-current-buffer article-buffer
|
||||
;; Don't kill sticky article buffers
|
||||
(unless (eq major-mode 'gnus-sticky-article-mode)
|
||||
(gnus-kill-buffer article-buffer)
|
||||
(setq gnus-article-current nil))))
|
||||
(gnus-kill-buffer gnus-original-article-buffer))
|
||||
|
||||
;; Clear the current group name.
|
||||
(unless quit-config
|
||||
(setq gnus-newsgroup-name nil)))))
|
||||
|
@ -7269,6 +7273,8 @@ If FORCE (the prefix), also save the .newsrc file(s)."
|
|||
(gnus-kill-buffer gnus-article-buffer)
|
||||
(gnus-kill-buffer gnus-original-article-buffer)
|
||||
(setq gnus-article-current nil))
|
||||
;; Return to the group buffer.
|
||||
(gnus-configure-windows 'group 'force)
|
||||
(if (not gnus-kill-summary-on-exit)
|
||||
(gnus-deaden-summary)
|
||||
(gnus-close-group group)
|
||||
|
@ -7280,8 +7286,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
|
|||
(gnus-async-prefetch-remove-group group)
|
||||
(when (get-buffer gnus-article-buffer)
|
||||
(bury-buffer gnus-article-buffer))
|
||||
;; Return to the group buffer.
|
||||
(gnus-configure-windows 'group 'force)
|
||||
;; Clear the current group name.
|
||||
(setq gnus-newsgroup-name nil)
|
||||
(unless (gnus-ephemeral-group-p group)
|
||||
|
|
|
@ -6779,7 +6779,7 @@ Useful functions to put in this list include:
|
|||
subject)
|
||||
|
||||
;;;###autoload
|
||||
(defun message-reply (&optional to-address wide)
|
||||
(defun message-reply (&optional to-address wide switch-function)
|
||||
"Start editing a reply to the article in the current buffer."
|
||||
(interactive)
|
||||
(require 'gnus-sum) ; for gnus-list-identifiers
|
||||
|
@ -6822,7 +6822,8 @@ Useful functions to put in this list include:
|
|||
(message-pop-to-buffer
|
||||
(message-buffer-name
|
||||
(if wide "wide reply" "reply") from
|
||||
(if wide to-address nil))))
|
||||
(if wide to-address nil))
|
||||
switch-function))
|
||||
|
||||
(setq message-reply-headers
|
||||
(vector 0 subject from date message-id references 0 0 ""))
|
||||
|
|
|
@ -774,7 +774,7 @@ command whose response triggered the error."
|
|||
(nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
|
||||
'headers)))))
|
||||
|
||||
(deffoo nntp-retrieve-group-data-early-disabled (server infos)
|
||||
(deffoo nntp-retrieve-group-data-early (server infos)
|
||||
"Retrieve group info on INFOS."
|
||||
(nntp-with-open-group nil server
|
||||
(when (nntp-find-connection-buffer nntp-server-buffer)
|
||||
|
@ -793,7 +793,7 @@ command whose response triggered the error."
|
|||
nil command (gnus-group-real-name (gnus-info-group info)))))
|
||||
(length infos)))))
|
||||
|
||||
(deffoo nntp-finish-retrieve-group-infos-disabled (server infos count)
|
||||
(deffoo nntp-finish-retrieve-group-infos (server infos count)
|
||||
(nntp-with-open-group nil server
|
||||
(let ((buf (nntp-find-connection-buffer nntp-server-buffer))
|
||||
(method (gnus-find-method-for-group
|
||||
|
@ -814,10 +814,7 @@ command whose response triggered the error."
|
|||
(< received count)))
|
||||
(nntp-accept-response))
|
||||
;; We now have all the entries. Remove CRs.
|
||||
(goto-char (point-min))
|
||||
(while (search-forward "\r" nil t)
|
||||
(replace-match "" t t))
|
||||
|
||||
(nnheader-strip-cr)
|
||||
(if (not nntp-server-list-active-group)
|
||||
(progn
|
||||
(nntp-copy-to-buffer nntp-server-buffer
|
||||
|
@ -830,7 +827,9 @@ command whose response triggered the error."
|
|||
(delete-region (match-beginning 0)
|
||||
(progn (forward-line 1) (point))))
|
||||
(nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
|
||||
(gnus-active-to-gnus-format method gnus-active-hashtb nil t)))))))
|
||||
(with-current-buffer nntp-server-buffer
|
||||
(gnus-active-to-gnus-format method gnus-active-hashtb
|
||||
nil t))))))))
|
||||
|
||||
(deffoo nntp-retrieve-groups (groups &optional server)
|
||||
"Retrieve group info on GROUPS."
|
||||
|
|
Loading…
Add table
Reference in a new issue