[PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-03-04 Thread David Bremner
Austin Clements  writes:
>
> Mark, is this better?
>

hopefully so, because I pushed it.

d


Re: [PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-03-04 Thread David Bremner
Austin Clements amdra...@mit.edu writes:

 Mark, is this better?


hopefully so, because I pushed it.

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-03-01 Thread Mark Walters

This version is fine (thanks!). And the patch looks good to me too +1.

Best wishes

Mark


On Thu, 27 Feb 2014, Austin Clements  wrote:
> `notmuch-mua-prompt-for-sender' is over-engineered and often wrong.
> It attempts to detect when all identities have the same name and
> specialize the prompt to just the email address part.  However, to do
> this it uses `mail-extract-address-components', which is meant for
> displaying email addresses, not general-purpose parsing, and hence
> performs many canonicalizations that can interfere with this use.  For
> example, configuring notmuch-identities to ("Austin
> "), will cause `notmuch-mua-prompt-for-sender' to
> lose the name part entirely and return " ".
>
> This patch rewrites `notmuch-mua-prompt-for-sender' to simply prompt
> for a full identity when notmuch-identities is configured, or to
> prompt for a sender address when it isn't.
>
> The original code also did several strange things, like using `eval'
> and specifying that this function was interactive.  As a side-effect,
> this patch fixes these problems.  And it adds a docstring.
> ---
>
> Mark, is this better?
>
> emacs/notmuch-mua.el | 37 +
>  1 file changed, 13 insertions(+), 24 deletions(-)
>
> diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
> index f2df770..b16a10e 100644
> --- a/emacs/notmuch-mua.el
> +++ b/emacs/notmuch-mua.el
> @@ -286,30 +286,19 @@ the From: header is already filled in by notmuch."
>(ad-activate 'ido-completing-read)))
>  
>  (defun notmuch-mua-prompt-for-sender ()
> -  (interactive)
> -  (let (name addresses one-name-only)
> -;; If notmuch-identities is non-nil, check if there is a fixed user name.
> -(if notmuch-identities
> - (let ((components (mapcar 'mail-extract-address-components 
> notmuch-identities)))
> -   (setq name  (caar components)
> - addresses (mapcar 'cadr components)
> - one-name-only (eval
> -(cons 'and
> -  (mapcar (lambda (identity)
> -(string-equal name (car 
> identity)))
> -  components)
> -  ;; If notmuch-identities is nil, use values from the notmuch 
> configuration file.
> -  (setq name  (notmuch-user-name)
> - addresses (cons (notmuch-user-primary-email) 
> (notmuch-user-other-email))
> - one-name-only t))
> -;; Now prompt the user, either for an email address only or for a full 
> identity.
> -(if one-name-only
> - (let ((address
> -(ido-completing-read (concat "Sender address for " name ": ") 
> addresses
> - nil nil nil 'notmuch-mua-sender-history 
> (car addresses
> -   (concat name " <" address ">"))
> -  (ido-completing-read "Send mail From: " notmuch-identities
> -nil nil nil 'notmuch-mua-sender-history (car 
> notmuch-identities)
> +  "Prompt for a sender from the user's configured identities."
> +  (if notmuch-identities
> +  (ido-completing-read "Send mail from: " notmuch-identities
> +nil nil nil 'notmuch-mua-sender-history
> +(car notmuch-identities))
> +(let* ((name (notmuch-user-name))
> +(addrs (cons (notmuch-user-primary-email)
> + (notmuch-user-other-email)))
> +(address
> + (ido-completing-read (concat "Sender address for " name ": ") addrs
> +  nil nil nil 'notmuch-mua-sender-history
> +  (car addrs
> +  (concat name " <" address ">"
>  
>  (put 'notmuch-mua-new-mail 'notmuch-prefix-doc "... and prompt for sender")
>  (defun notmuch-mua-new-mail ( prompt-for-sender)
> -- 
> 1.8.4.rc3


Re: [PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-03-01 Thread Mark Walters

This version is fine (thanks!). And the patch looks good to me too +1.

Best wishes

Mark


On Thu, 27 Feb 2014, Austin Clements amdra...@mit.edu wrote:
 `notmuch-mua-prompt-for-sender' is over-engineered and often wrong.
 It attempts to detect when all identities have the same name and
 specialize the prompt to just the email address part.  However, to do
 this it uses `mail-extract-address-components', which is meant for
 displaying email addresses, not general-purpose parsing, and hence
 performs many canonicalizations that can interfere with this use.  For
 example, configuring notmuch-identities to (Austin
 aus...@example.com), will cause `notmuch-mua-prompt-for-sender' to
 lose the name part entirely and return  aus...@example.com.

 This patch rewrites `notmuch-mua-prompt-for-sender' to simply prompt
 for a full identity when notmuch-identities is configured, or to
 prompt for a sender address when it isn't.

 The original code also did several strange things, like using `eval'
 and specifying that this function was interactive.  As a side-effect,
 this patch fixes these problems.  And it adds a docstring.
 ---

 Mark, is this better?

 emacs/notmuch-mua.el | 37 +
  1 file changed, 13 insertions(+), 24 deletions(-)

 diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
 index f2df770..b16a10e 100644
 --- a/emacs/notmuch-mua.el
 +++ b/emacs/notmuch-mua.el
 @@ -286,30 +286,19 @@ the From: header is already filled in by notmuch.
(ad-activate 'ido-completing-read)))
  
  (defun notmuch-mua-prompt-for-sender ()
 -  (interactive)
 -  (let (name addresses one-name-only)
 -;; If notmuch-identities is non-nil, check if there is a fixed user name.
 -(if notmuch-identities
 - (let ((components (mapcar 'mail-extract-address-components 
 notmuch-identities)))
 -   (setq name  (caar components)
 - addresses (mapcar 'cadr components)
 - one-name-only (eval
 -(cons 'and
 -  (mapcar (lambda (identity)
 -(string-equal name (car 
 identity)))
 -  components)
 -  ;; If notmuch-identities is nil, use values from the notmuch 
 configuration file.
 -  (setq name  (notmuch-user-name)
 - addresses (cons (notmuch-user-primary-email) 
 (notmuch-user-other-email))
 - one-name-only t))
 -;; Now prompt the user, either for an email address only or for a full 
 identity.
 -(if one-name-only
 - (let ((address
 -(ido-completing-read (concat Sender address for  name : ) 
 addresses
 - nil nil nil 'notmuch-mua-sender-history 
 (car addresses
 -   (concat name   address ))
 -  (ido-completing-read Send mail From:  notmuch-identities
 -nil nil nil 'notmuch-mua-sender-history (car 
 notmuch-identities)
 +  Prompt for a sender from the user's configured identities.
 +  (if notmuch-identities
 +  (ido-completing-read Send mail from:  notmuch-identities
 +nil nil nil 'notmuch-mua-sender-history
 +(car notmuch-identities))
 +(let* ((name (notmuch-user-name))
 +(addrs (cons (notmuch-user-primary-email)
 + (notmuch-user-other-email)))
 +(address
 + (ido-completing-read (concat Sender address for  name : ) addrs
 +  nil nil nil 'notmuch-mua-sender-history
 +  (car addrs
 +  (concat name   address 
  
  (put 'notmuch-mua-new-mail 'notmuch-prefix-doc ... and prompt for sender)
  (defun notmuch-mua-new-mail (optional prompt-for-sender)
 -- 
 1.8.4.rc3
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-02-27 Thread Austin Clements
`notmuch-mua-prompt-for-sender' is over-engineered and often wrong.
It attempts to detect when all identities have the same name and
specialize the prompt to just the email address part.  However, to do
this it uses `mail-extract-address-components', which is meant for
displaying email addresses, not general-purpose parsing, and hence
performs many canonicalizations that can interfere with this use.  For
example, configuring notmuch-identities to ("Austin
"), will cause `notmuch-mua-prompt-for-sender' to
lose the name part entirely and return " ".

This patch rewrites `notmuch-mua-prompt-for-sender' to simply prompt
for a full identity when notmuch-identities is configured, or to
prompt for a sender address when it isn't.

The original code also did several strange things, like using `eval'
and specifying that this function was interactive.  As a side-effect,
this patch fixes these problems.  And it adds a docstring.
---

Mark, is this better?

emacs/notmuch-mua.el | 37 +
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index f2df770..b16a10e 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -286,30 +286,19 @@ the From: header is already filled in by notmuch."
   (ad-activate 'ido-completing-read)))

 (defun notmuch-mua-prompt-for-sender ()
-  (interactive)
-  (let (name addresses one-name-only)
-;; If notmuch-identities is non-nil, check if there is a fixed user name.
-(if notmuch-identities
-   (let ((components (mapcar 'mail-extract-address-components 
notmuch-identities)))
- (setq name  (caar components)
-   addresses (mapcar 'cadr components)
-   one-name-only (eval
-  (cons 'and
-(mapcar (lambda (identity)
-  (string-equal name (car 
identity)))
-components)
-  ;; If notmuch-identities is nil, use values from the notmuch 
configuration file.
-  (setq name  (notmuch-user-name)
-   addresses (cons (notmuch-user-primary-email) 
(notmuch-user-other-email))
-   one-name-only t))
-;; Now prompt the user, either for an email address only or for a full 
identity.
-(if one-name-only
-   (let ((address
-  (ido-completing-read (concat "Sender address for " name ": ") 
addresses
-   nil nil nil 'notmuch-mua-sender-history 
(car addresses
- (concat name " <" address ">"))
-  (ido-completing-read "Send mail From: " notmuch-identities
-  nil nil nil 'notmuch-mua-sender-history (car 
notmuch-identities)
+  "Prompt for a sender from the user's configured identities."
+  (if notmuch-identities
+  (ido-completing-read "Send mail from: " notmuch-identities
+  nil nil nil 'notmuch-mua-sender-history
+  (car notmuch-identities))
+(let* ((name (notmuch-user-name))
+  (addrs (cons (notmuch-user-primary-email)
+   (notmuch-user-other-email)))
+  (address
+   (ido-completing-read (concat "Sender address for " name ": ") addrs
+nil nil nil 'notmuch-mua-sender-history
+(car addrs
+  (concat name " <" address ">"

 (put 'notmuch-mua-new-mail 'notmuch-prefix-doc "... and prompt for sender")
 (defun notmuch-mua-new-mail ( prompt-for-sender)
-- 
1.8.4.rc3



[PATCH v2] emacs: Simplify and fix `notmuch-mua-prompt-for-sender'

2014-02-27 Thread Austin Clements
`notmuch-mua-prompt-for-sender' is over-engineered and often wrong.
It attempts to detect when all identities have the same name and
specialize the prompt to just the email address part.  However, to do
this it uses `mail-extract-address-components', which is meant for
displaying email addresses, not general-purpose parsing, and hence
performs many canonicalizations that can interfere with this use.  For
example, configuring notmuch-identities to (Austin
aus...@example.com), will cause `notmuch-mua-prompt-for-sender' to
lose the name part entirely and return  aus...@example.com.

This patch rewrites `notmuch-mua-prompt-for-sender' to simply prompt
for a full identity when notmuch-identities is configured, or to
prompt for a sender address when it isn't.

The original code also did several strange things, like using `eval'
and specifying that this function was interactive.  As a side-effect,
this patch fixes these problems.  And it adds a docstring.
---

Mark, is this better?

emacs/notmuch-mua.el | 37 +
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index f2df770..b16a10e 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -286,30 +286,19 @@ the From: header is already filled in by notmuch.
   (ad-activate 'ido-completing-read)))
 
 (defun notmuch-mua-prompt-for-sender ()
-  (interactive)
-  (let (name addresses one-name-only)
-;; If notmuch-identities is non-nil, check if there is a fixed user name.
-(if notmuch-identities
-   (let ((components (mapcar 'mail-extract-address-components 
notmuch-identities)))
- (setq name  (caar components)
-   addresses (mapcar 'cadr components)
-   one-name-only (eval
-  (cons 'and
-(mapcar (lambda (identity)
-  (string-equal name (car 
identity)))
-components)
-  ;; If notmuch-identities is nil, use values from the notmuch 
configuration file.
-  (setq name  (notmuch-user-name)
-   addresses (cons (notmuch-user-primary-email) 
(notmuch-user-other-email))
-   one-name-only t))
-;; Now prompt the user, either for an email address only or for a full 
identity.
-(if one-name-only
-   (let ((address
-  (ido-completing-read (concat Sender address for  name : ) 
addresses
-   nil nil nil 'notmuch-mua-sender-history 
(car addresses
- (concat name   address ))
-  (ido-completing-read Send mail From:  notmuch-identities
-  nil nil nil 'notmuch-mua-sender-history (car 
notmuch-identities)
+  Prompt for a sender from the user's configured identities.
+  (if notmuch-identities
+  (ido-completing-read Send mail from:  notmuch-identities
+  nil nil nil 'notmuch-mua-sender-history
+  (car notmuch-identities))
+(let* ((name (notmuch-user-name))
+  (addrs (cons (notmuch-user-primary-email)
+   (notmuch-user-other-email)))
+  (address
+   (ido-completing-read (concat Sender address for  name : ) addrs
+nil nil nil 'notmuch-mua-sender-history
+(car addrs
+  (concat name   address 
 
 (put 'notmuch-mua-new-mail 'notmuch-prefix-doc ... and prompt for sender)
 (defun notmuch-mua-new-mail (optional prompt-for-sender)
-- 
1.8.4.rc3

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch