[PATCH v2] emacs: allow functions in notmuch-show-stash-mlarchive-link-alist
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
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
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
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
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
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