[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r103321: Merge chagnes made in Gnus t
From: |
Katsumi Yamaoka |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r103321: Merge chagnes made in Gnus trunk. |
Date: |
Thu, 17 Feb 2011 23:46:18 +0000 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 103321
author: Gnus developers <address@hidden>
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Thu 2011-02-17 23:46:18 +0000
message:
Merge chagnes made in Gnus trunk.
auth.texi (GnuPG and EasyPG Assistant Configuration): Mention the default now
is to have two files in `auth-sources'.
nnimap.el (nnimap-open-connection-1): Delete duplicate server names when
getting credentials.
gnus-util.el (gnus-delete-duplicates): New function.
nnimap.el (nnimap-credentials): Instead of picking the first port as a
creation default, pass the whole port list down. It will be completed.
auth-source.el (auth-source-search): Updated docs to talk about multiple
creation choices.
(auth-source-netrc-create): Accept a list as a value (from the search
parameters) and do completion on that list. Keep a separate netrc line with
the password obscured for showing the user.
nnimap.el (nnimap-open-connection-1): Make the `nnimap-address' the first
choice to `auth-source-search' so it will be used for entry creation instead of
the server's Gnus-specific name.
(nnimap-credentials): Rely on the auth-source library to select which port
is actually wanted in the new netrc entry, so don't override
`auth-source-creation-defaults'.
modified:
doc/misc/ChangeLog
doc/misc/auth.texi
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el
lisp/gnus/gnus-util.el
lisp/gnus/nnimap.el
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog 2011-02-17 12:08:48 +0000
+++ b/doc/misc/ChangeLog 2011-02-17 23:46:18 +0000
@@ -2,6 +2,8 @@
* auth.texi (Help for users): Use :port instead of :protocol for all
auth-source docs.
+ (GnuPG and EasyPG Assistant Configuration): Mention the default now is
+ to have two files in `auth-sources'.
2011-02-16 Glenn Morris <address@hidden>
=== modified file 'doc/misc/auth.texi'
--- a/doc/misc/auth.texi 2011-02-17 12:08:48 +0000
+++ b/doc/misc/auth.texi 2011-02-17 23:46:18 +0000
@@ -262,7 +262,9 @@
@appendix GnuPG and EasyPG Assistant Configuration
If you don't customize @code{auth-sources}, the auth-source library
-reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file.
+reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file. Then
+it will check @code{~/.authinfo} but it's not recommended to use such
+an unencrypted file.
In Emacs 23 or later there is an option @code{auto-encryption-mode} to
automatically decrypt @code{*.gpg} files. It is enabled by default.
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog 2011-02-17 12:50:01 +0000
+++ b/lisp/gnus/ChangeLog 2011-02-17 23:46:18 +0000
@@ -1,5 +1,29 @@
+2011-02-17 Lars Ingebrigtsen <address@hidden>
+
+ * nnimap.el (nnimap-open-connection-1): Delete duplicate server names
+ when getting credentials.
+
+ * gnus-util.el (gnus-delete-duplicates): New function.
+
2011-02-17 Teodor Zlatanov <address@hidden>
+ * nnimap.el (nnimap-credentials): Instead of picking the first port as
+ a creation default, pass the whole port list down. It will be
+ completed.
+
+ * auth-source.el (auth-source-search): Updated docs to talk about
+ multiple creation choices.
+ (auth-source-netrc-create): Accept a list as a value (from the search
+ parameters) and do completion on that list. Keep a separate netrc line
+ with the password obscured for showing the user.
+
+ * nnimap.el (nnimap-open-connection-1): Make the `nnimap-address' the
+ first choice to `auth-source-search' so it will be used for entry
+ creation instead of the server's Gnus-specific name.
+ (nnimap-credentials): Rely on the auth-source library to select which
+ port is actually wanted in the new netrc entry, so don't override
+ `auth-source-creation-defaults'.
+
* auth-source.el (auth-source-netrc-parse): Use :port instead of
:protocol and accept a missing user, host, or port as a wildcard match.
(auth-source-debug): Default to off.
=== modified file 'lisp/gnus/auth-source.el'
--- a/lisp/gnus/auth-source.el 2011-02-17 12:50:01 +0000
+++ b/lisp/gnus/auth-source.el 2011-02-17 23:46:18 +0000
@@ -453,8 +453,8 @@
search to find only entries that have P set to 'pppp'.\"
When multiple values are specified in the search parameter, the
-first one is used for creation. So :host (X Y Z) would create a
-token for host X, for instance.
+user is prompted for which one. So :host (X Y Z) would ask the
+user to choose between X, Y, and Z.
This creation can fail if the search was not specific enough to
create a new token (it's up to the backend to decide that). You
@@ -851,6 +851,7 @@
(required (append base-required create-extra))
(file (oref backend source))
(add "")
+ (show "")
;; `valist' is an alist
valist
;; `artificial' will be returned if no creation is needed
@@ -858,12 +859,16 @@
;; only for base required elements (defined as function parameters):
;; fill in the valist with whatever data we may have from the search
- ;; we take the first value if it's a list, the whole value otherwise
+ ;; we complete the first value if it's a list and use the value otherwise
(dolist (br base-required)
(when (symbol-value br)
- (aput 'valist br (if (listp (symbol-value br))
- (nth 0 (symbol-value br))
- (symbol-value br)))))
+ (let ((br-choice (cond
+ ;; all-accepting choice (predicate is t)
+ ((eq t (symbol-value br)) nil)
+ ;; just the value otherwise
+ (t (symbol-value br)))))
+ (when br-choice
+ (aput 'valist br br-choice)))))
;; for extra required elements, see if the spec includes a value for them
(dolist (er create-extra)
@@ -894,6 +899,8 @@
(user-value (aget valist 'user))
(host-value (aget valist 'host))
(port-value (aget valist 'port))
+ ;; note this handles lists by just printing them
+ ;; later we allow the user to use completing-read to pick
(info-so-far (concat (if user-value
(format "%s@" user-value)
"[USER?]")
@@ -921,6 +928,16 @@
(format "Enter %s for %s%s: "
r info-so-far default-string)
nil nil default))
+ ((listp data)
+ (completing-read
+ (format "Enter %s for %s (TAB to see the choices): "
+ r info-so-far)
+ data
+ nil ; no predicate
+ t ; require a match
+ ;; note the default is nil, but if the user
+ ;; hits RET we'll get "", which is handled OK later
+ nil))
(t data))))
(when data
@@ -934,20 +951,25 @@
;; when r is not an empty string...
(when (and (stringp data)
(< 0 (length data)))
- ;; append the key (the symbol name of r) and the value in r
- (setq add (concat add
- (format "%s%s %S"
- ;; prepend a space
- (if (zerop (length add)) "" " ")
- ;; remap auth-source tokens to netrc
- (case r
+ (let ((printer (lambda (hide)
+ ;; append the key (the symbol name of r)
+ ;; and the value in r
+ (format "%s%s %S"
+ ;; prepend a space
+ (if (zerop (length add)) "" " ")
+ ;; remap auth-source tokens to netrc
+ (case r
('user "login")
('host "machine")
('secret "password")
('port "port") ; redundant but clearer
(t (symbol-name r)))
- ;; the value will be printed in %S format
- data))))))
+ ;; the value will be printed in %S format
+ (if (and hide (eq r 'secret))
+ "HIDDEN_SECRET"
+ data)))))
+ (setq add (concat add (funcall printer nil)))
+ (setq show (concat show (funcall printer t)))))))
(with-temp-buffer
(when (file-exists-p file)
@@ -964,7 +986,7 @@
(goto-char (point-max))
;; ask AFTER we've successfully opened the file
- (if (y-or-n-p (format "Add to file %s: line [%s]" file add))
+ (if (y-or-n-p (format "Add to file %s: line [%s]" file show))
(progn
(unless (bolp)
(insert "\n"))
=== modified file 'lisp/gnus/gnus-util.el'
--- a/lisp/gnus/gnus-util.el 2011-02-03 23:43:22 +0000
+++ b/lisp/gnus/gnus-util.el 2011-02-17 23:46:18 +0000
@@ -871,6 +871,15 @@
(when (file-exists-p file)
(delete-file file)))
+(defun gnus-delete-duplicates (list)
+ "Remove duplicate entries from LIST."
+ (let ((result nil))
+ (while list
+ (unless (member (car list) result)
+ (push (car list) result))
+ (pop list))
+ (nreverse result)))
+
(defun gnus-delete-directory (directory)
"Delete files in DIRECTORY. Subdirectories remain.
If there's no subdirectory, delete DIRECTORY as well."
=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el 2011-02-17 12:08:48 +0000
+++ b/lisp/gnus/nnimap.el 2011-02-17 23:46:18 +0000
@@ -277,8 +277,7 @@
(current-buffer)))
(defun nnimap-credentials (address ports)
- (let* ((auth-source-creation-defaults `((port . ,(nth 0 ports))))
- (found (nth 0 (auth-source-search :max 1
+ (let* ((found (nth 0 (auth-source-search :max 1
:host address
:port ports
:create t)))
@@ -385,9 +384,10 @@
;; Look for the credentials based on
;; the virtual server name and the address
(nnimap-credentials
- (list
- (nnoo-current-server 'nnimap)
- nnimap-address)
+ (gnus-delete-duplicates
+ (list
+ nnimap-address
+ (nnoo-current-server 'nnimap)))
ports))))
(setq nnimap-object nil)
(let ((nnimap-inhibit-logging t))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r103321: Merge chagnes made in Gnus trunk.,
Katsumi Yamaoka <=