Re: [PATCH 3/4] emacs: Make tags that appear in `notmuch-show' clickable

Subject: Re: [PATCH 3/4] emacs: Make tags that appear in `notmuch-show' clickable

Date: Sun, 18 Nov 2012 23:06:50 +0000

To: Damien Cassou, notmuch mailing list

Cc:

From: Mark Walters


Hi

This patch adds buttons for every tag in show mode which means that
tabbing down to an attachment (or other button) is rather slower. As
someone who is not going to use the tag buttons (at least not very
often) Is it possible to avoid this? perhaps by making the button
optional or making the button only mouse clickable? (Since the buttons
in the headerline are not tabbable to then the latter might be
reasonable.)

Best wishes

Mark


On Sun, 18 Nov 2012, Damien Cassou <damien.cassou@gmail.com> wrote:
> Signed-off-by: Damien Cassou <damien.cassou@gmail.com>
> ---
>  emacs/notmuch-show.el   |    9 +++++----
>  emacs/notmuch-tagger.el |   33 +++++++++++++++++++++++++++++++++
>  2 files changed, 38 insertions(+), 4 deletions(-)
>
> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
> index 988e27c..379c8cd 100644
> --- a/emacs/notmuch-show.el
> +++ b/emacs/notmuch-show.el
> @@ -431,10 +431,11 @@ message at DEPTH in the current thread."
>  	    (notmuch-show-clean-address (plist-get headers :From))
>  	    " ("
>  	    date
> -	    ") ("
> -	    (propertize (mapconcat 'identity tags " ")
> -			'face 'notmuch-tag-face)
> -	    ")\n")
> +	    ") "
> +	    (propertize
> +	     (format-mode-line (notmuch-tagger-present-tags tags))
> +	     'face 'notmuch-tag-face)
> +	    "\n")
>      (overlay-put (make-overlay start (point)) 'face 'notmuch-message-summary-face)))
>  
>  (defun notmuch-show-insert-header (header header-value)
> diff --git a/emacs/notmuch-tagger.el b/emacs/notmuch-tagger.el
> index 19a6c7e..379a905 100644
> --- a/emacs/notmuch-tagger.el
> +++ b/emacs/notmuch-tagger.el
> @@ -53,12 +53,21 @@ test if the library is present before calling this function."
>    (let ((tag (header-button-get button 'notmuch-tagger-tag)))
>      (notmuch-tagger-goto-target tag)))
>  
> +(defun notmuch-tagger-body-button-action (button)
> +  "Open `notmuch-search' for the tag referenced by BUTTON."
> +  (let ((tag (button-get button 'notmuch-tagger-tag)))
> +    (notmuch-tagger-goto-target tag)))
> +
>  (eval-after-load "header-button"
>    '(define-button-type 'notmuch-tagger-header-button-type
>       'supertype 'header
>       'action    #'notmuch-tagger-header-button-action
>       'follow-link t))
>  
> +(define-button-type 'notmuch-tagger-body-button-type
> +  'action    #'notmuch-tagger-body-button-action
> +  'follow-link t)
> +
>  (defun notmuch-tagger-really-make-header-link (tag)
>     "Return a property list that presents a link to TAG.
>  
> @@ -82,6 +91,19 @@ if not."
>        (notmuch-tagger-really-make-header-link tag)
>      tag))
>  
> +(defun notmuch-tagger-make-body-link (tag)
> +  "Return a property list that presents a link to TAG.
> +The returned property list will work everywhere except in the
> +header-line. For a link that works on the header-line, prefer
> +`notmuch-tagger-make-header-link'."
> +  (let ((button (copy-sequence tag)))
> +    (make-text-button
> +     button nil
> +     'type 'notmuch-tagger-body-button-type
> +     'notmuch-tagger-tag tag
> +     'help-echo (format "%s: Search other messages like this" tag))
> +    button))
> +
>  (defun notmuch-tagger-present-tags-header-line (tags)
>    "Return a property list to present TAGS in emacs header-line."
>    (list
> @@ -91,6 +113,17 @@ if not."
>              " ")
>     ")"))
>  
> +(defun notmuch-tagger-present-tags (tags)
> +  "Return a property list to present TAGS in emacs.
> +If tags the result of this function is to be used within the
> +header-line, prefer `notmuch-tagger-present-tags-header-line'
> +instead of this function."
> +  (list
> +   "("
> +   (notmuch-tagger-separate-elems
> +    (mapcar #'notmuch-tagger-make-body-link tags)
> +            " ")
> +   ")"))
>  
>  (provide 'notmuch-tagger)
>  ;;; notmuch-tagger.el ends here
> -- 
> 1.7.10.4
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

Thread: