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

Mark Walters markwalters1009 at gmail.com
Fri May 2 07:11:59 PDT 2014


This version LGTM +1.

Best wishes

Mark

On Thu, 01 May 2014, Jani Nikula <jani at 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


More information about the notmuch mailing list