[PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-04 Thread David Bremner
Jani Nikula  writes:

> Some archives may use a more complicated scheme for referring to
> messages than just concatenated url and message-id. In particular,
> patchwork requires a query to translate message-id to a patchwork
> patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
> to facilitate this.
>

pushed to master.

d


Re: [PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-04 Thread David Bremner
Jani Nikula j...@nikula.org writes:

 Some archives may use a more complicated scheme for referring to
 messages than just concatenated url and message-id. In particular,
 patchwork requires a query to translate message-id to a patchwork
 patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
 to facilitate this.


pushed to master.

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


[PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-02 Thread Mark Walters

This version LGTM +1.

Best wishes

Mark

On Thu, 01 May 2014, Jani Nikula  wrote:
> Some archives may use a more complicated scheme for referring to
> messages than just concatenated url and message-id. In particular,
> patchwork requires a query to translate message-id to a patchwork
> patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
> to facilitate this.
>
> For example, one could use something like this for patchwork.
>
> (lambda (message-id)
>   (concat
>"http://patchwork.example.com/patch/;
>(nth 0
>   (split-string
>(car (last (process-lines "pwclient" "search" "-n" "1"
>  "-m" (concat "<" message-id ">"
> ---
>  emacs/notmuch-show.el | 40 +++-
>  1 file changed, 27 insertions(+), 13 deletions(-)
>
> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
> index df10d4bad93b..10fc872141dc 100644
> --- a/emacs/notmuch-show.el
> +++ b/emacs/notmuch-show.el
> @@ -180,10 +180,21 @@ each attachment handler is logged in buffers with names 
> beginning
>  )
>"List of Mailing List Archives to use when stashing links.
>  
> -These URIs are concatenated with the current message's
> -Message-Id in `notmuch-show-stash-mlarchive-link'."
> +This list is used for generating a Mailing List Archive reference
> +URI with the current message's Message-Id in
> +`notmuch-show-stash-mlarchive-link'.
> +
> +If the cdr of the alist element is not a function, the cdr is
> +expected to contain a URI that is concatenated with the current
> +message's Message-Id to create a ML archive reference URI.
> +
> +If the cdr is a function, the function is called with the
> +Message-Id as the argument, and the function is expected to
> +return the ML archive reference URI."
>:type '(alist :key-type (string :tag "Name")
> - :value-type (string :tag "URL"))
> + :value-type (choice
> +  (string :tag "URL")
> +  (function :tag "Function returning the URL")))
>:group 'notmuch-show)
>  
>  (defcustom notmuch-show-stash-mlarchive-link-default "Gmane"
> @@ -2055,16 +2066,19 @@ This presumes that the message is available at the 
> selected Mailing List Archive
>  If optional argument MLA is non-nil, use the provided key instead of 
> prompting
>  the user (see `notmuch-show-stash-mlarchive-link-alist')."
>(interactive)
> -  (notmuch-common-do-stash
> -   (concat (cdr (assoc
> -  (or mla
> -  (let ((completion-ignore-case t))
> -(completing-read
> - "Mailing List Archive: "
> - notmuch-show-stash-mlarchive-link-alist
> - nil t nil nil 
> notmuch-show-stash-mlarchive-link-default)))
> -  notmuch-show-stash-mlarchive-link-alist))
> -(notmuch-show-get-message-id t
> +  (let ((url (cdr (assoc
> +(or mla
> +(let ((completion-ignore-case t))
> +  (completing-read
> +   "Mailing List Archive: "
> +   notmuch-show-stash-mlarchive-link-alist
> +   nil t nil nil
> +   notmuch-show-stash-mlarchive-link-default)))
> +notmuch-show-stash-mlarchive-link-alist
> +(notmuch-common-do-stash
> + (if (functionp url)
> +  (funcall url (notmuch-show-get-message-id t))
> +   (concat url (notmuch-show-get-message-id t))
>  
>  (defun notmuch-show-stash-mlarchive-link-and-go ( mla)
>"Copy an ML Archive URI for the current message to the kill-ring and visit 
> it.
> -- 
> 1.9.2


Re: [PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-02 Thread Mark Walters

This version LGTM +1.

Best wishes

Mark

On Thu, 01 May 2014, Jani Nikula j...@nikula.org wrote:
 Some archives may use a more complicated scheme for referring to
 messages than just concatenated url and message-id. In particular,
 patchwork requires a query to translate message-id to a patchwork
 patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
 to facilitate this.

 For example, one could use something like this for patchwork.

 (lambda (message-id)
   (concat
http://patchwork.example.com/patch/;
(nth 0
   (split-string
(car (last (process-lines pwclient search -n 1
  -m (concat  message-id 
 ---
  emacs/notmuch-show.el | 40 +++-
  1 file changed, 27 insertions(+), 13 deletions(-)

 diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
 index df10d4bad93b..10fc872141dc 100644
 --- a/emacs/notmuch-show.el
 +++ b/emacs/notmuch-show.el
 @@ -180,10 +180,21 @@ each attachment handler is logged in buffers with names 
 beginning
  )
List of Mailing List Archives to use when stashing links.
  
 -These URIs are concatenated with the current message's
 -Message-Id in `notmuch-show-stash-mlarchive-link'.
 +This list is used for generating a Mailing List Archive reference
 +URI with the current message's Message-Id in
 +`notmuch-show-stash-mlarchive-link'.
 +
 +If the cdr of the alist element is not a function, the cdr is
 +expected to contain a URI that is concatenated with the current
 +message's Message-Id to create a ML archive reference URI.
 +
 +If the cdr is a function, the function is called with the
 +Message-Id as the argument, and the function is expected to
 +return the ML archive reference URI.
:type '(alist :key-type (string :tag Name)
 - :value-type (string :tag URL))
 + :value-type (choice
 +  (string :tag URL)
 +  (function :tag Function returning the URL)))
:group 'notmuch-show)
  
  (defcustom notmuch-show-stash-mlarchive-link-default Gmane
 @@ -2055,16 +2066,19 @@ This presumes that the message is available at the 
 selected Mailing List Archive
  If optional argument MLA is non-nil, use the provided key instead of 
 prompting
  the user (see `notmuch-show-stash-mlarchive-link-alist').
(interactive)
 -  (notmuch-common-do-stash
 -   (concat (cdr (assoc
 -  (or mla
 -  (let ((completion-ignore-case t))
 -(completing-read
 - Mailing List Archive: 
 - notmuch-show-stash-mlarchive-link-alist
 - nil t nil nil 
 notmuch-show-stash-mlarchive-link-default)))
 -  notmuch-show-stash-mlarchive-link-alist))
 -(notmuch-show-get-message-id t
 +  (let ((url (cdr (assoc
 +(or mla
 +(let ((completion-ignore-case t))
 +  (completing-read
 +   Mailing List Archive: 
 +   notmuch-show-stash-mlarchive-link-alist
 +   nil t nil nil
 +   notmuch-show-stash-mlarchive-link-default)))
 +notmuch-show-stash-mlarchive-link-alist
 +(notmuch-common-do-stash
 + (if (functionp url)
 +  (funcall url (notmuch-show-get-message-id t))
 +   (concat url (notmuch-show-get-message-id t))
  
  (defun notmuch-show-stash-mlarchive-link-and-go (optional mla)
Copy an ML Archive URI for the current message to the kill-ring and visit 
 it.
 -- 
 1.9.2
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-01 Thread Jani Nikula
Some archives may use a more complicated scheme for referring to
messages than just concatenated url and message-id. In particular,
patchwork requires a query to translate message-id to a patchwork
patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
to facilitate this.

For example, one could use something like this for patchwork.

(lambda (message-id)
  (concat
   "http://patchwork.example.com/patch/;
   (nth 0
(split-string
 (car (last (process-lines "pwclient" "search" "-n" "1"
   "-m" (concat "<" message-id ">"
---
 emacs/notmuch-show.el | 40 +++-
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index df10d4bad93b..10fc872141dc 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -180,10 +180,21 @@ each attachment handler is logged in buffers with names 
beginning
 )
   "List of Mailing List Archives to use when stashing links.

-These URIs are concatenated with the current message's
-Message-Id in `notmuch-show-stash-mlarchive-link'."
+This list is used for generating a Mailing List Archive reference
+URI with the current message's Message-Id in
+`notmuch-show-stash-mlarchive-link'.
+
+If the cdr of the alist element is not a function, the cdr is
+expected to contain a URI that is concatenated with the current
+message's Message-Id to create a ML archive reference URI.
+
+If the cdr is a function, the function is called with the
+Message-Id as the argument, and the function is expected to
+return the ML archive reference URI."
   :type '(alist :key-type (string :tag "Name")
-   :value-type (string :tag "URL"))
+   :value-type (choice
+(string :tag "URL")
+(function :tag "Function returning the URL")))
   :group 'notmuch-show)

 (defcustom notmuch-show-stash-mlarchive-link-default "Gmane"
@@ -2055,16 +2066,19 @@ This presumes that the message is available at the 
selected Mailing List Archive
 If optional argument MLA is non-nil, use the provided key instead of prompting
 the user (see `notmuch-show-stash-mlarchive-link-alist')."
   (interactive)
-  (notmuch-common-do-stash
-   (concat (cdr (assoc
-(or mla
-(let ((completion-ignore-case t))
-  (completing-read
-   "Mailing List Archive: "
-   notmuch-show-stash-mlarchive-link-alist
-   nil t nil nil 
notmuch-show-stash-mlarchive-link-default)))
-notmuch-show-stash-mlarchive-link-alist))
-  (notmuch-show-get-message-id t
+  (let ((url (cdr (assoc
+  (or mla
+  (let ((completion-ignore-case t))
+(completing-read
+ "Mailing List Archive: "
+ notmuch-show-stash-mlarchive-link-alist
+ nil t nil nil
+ notmuch-show-stash-mlarchive-link-default)))
+  notmuch-show-stash-mlarchive-link-alist
+(notmuch-common-do-stash
+ (if (functionp url)
+(funcall url (notmuch-show-get-message-id t))
+   (concat url (notmuch-show-get-message-id t))

 (defun notmuch-show-stash-mlarchive-link-and-go ( mla)
   "Copy an ML Archive URI for the current message to the kill-ring and visit 
it.
-- 
1.9.2



[PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist

2014-05-01 Thread Jani Nikula
Some archives may use a more complicated scheme for referring to
messages than just concatenated url and message-id. In particular,
patchwork requires a query to translate message-id to a patchwork
patch id. Allow functions in notmuch-show-stash-mlarchive-link-alist
to facilitate this.

For example, one could use something like this for patchwork.

(lambda (message-id)
  (concat
   http://patchwork.example.com/patch/;
   (nth 0
(split-string
 (car (last (process-lines pwclient search -n 1
   -m (concat  message-id 
---
 emacs/notmuch-show.el | 40 +++-
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index df10d4bad93b..10fc872141dc 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -180,10 +180,21 @@ each attachment handler is logged in buffers with names 
beginning
 )
   List of Mailing List Archives to use when stashing links.
 
-These URIs are concatenated with the current message's
-Message-Id in `notmuch-show-stash-mlarchive-link'.
+This list is used for generating a Mailing List Archive reference
+URI with the current message's Message-Id in
+`notmuch-show-stash-mlarchive-link'.
+
+If the cdr of the alist element is not a function, the cdr is
+expected to contain a URI that is concatenated with the current
+message's Message-Id to create a ML archive reference URI.
+
+If the cdr is a function, the function is called with the
+Message-Id as the argument, and the function is expected to
+return the ML archive reference URI.
   :type '(alist :key-type (string :tag Name)
-   :value-type (string :tag URL))
+   :value-type (choice
+(string :tag URL)
+(function :tag Function returning the URL)))
   :group 'notmuch-show)
 
 (defcustom notmuch-show-stash-mlarchive-link-default Gmane
@@ -2055,16 +2066,19 @@ This presumes that the message is available at the 
selected Mailing List Archive
 If optional argument MLA is non-nil, use the provided key instead of prompting
 the user (see `notmuch-show-stash-mlarchive-link-alist').
   (interactive)
-  (notmuch-common-do-stash
-   (concat (cdr (assoc
-(or mla
-(let ((completion-ignore-case t))
-  (completing-read
-   Mailing List Archive: 
-   notmuch-show-stash-mlarchive-link-alist
-   nil t nil nil 
notmuch-show-stash-mlarchive-link-default)))
-notmuch-show-stash-mlarchive-link-alist))
-  (notmuch-show-get-message-id t
+  (let ((url (cdr (assoc
+  (or mla
+  (let ((completion-ignore-case t))
+(completing-read
+ Mailing List Archive: 
+ notmuch-show-stash-mlarchive-link-alist
+ nil t nil nil
+ notmuch-show-stash-mlarchive-link-default)))
+  notmuch-show-stash-mlarchive-link-alist
+(notmuch-common-do-stash
+ (if (functionp url)
+(funcall url (notmuch-show-get-message-id t))
+   (concat url (notmuch-show-get-message-id t))
 
 (defun notmuch-show-stash-mlarchive-link-and-go (optional mla)
   Copy an ML Archive URI for the current message to the kill-ring and visit 
it.
-- 
1.9.2

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