From 531d92e504644af6736a69dbf4bb290bee0abe89 Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Sun, 18 Nov 2012 20:18:40 +0100 Subject: [PATCH] [PATCH 2/4] Make tags in header-line clickable --- e0/6ea47efa69498acdbbf47a2c2e223b4e140e8f | 139 ++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 e0/6ea47efa69498acdbbf47a2c2e223b4e140e8f diff --git a/e0/6ea47efa69498acdbbf47a2c2e223b4e140e8f b/e0/6ea47efa69498acdbbf47a2c2e223b4e140e8f new file mode 100644 index 000000000..8d51d54ef --- /dev/null +++ b/e0/6ea47efa69498acdbbf47a2c2e223b4e140e8f @@ -0,0 +1,139 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id D526B431FDB + for ; Sun, 18 Nov 2012 11:19:18 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: -0.799 +X-Spam-Level: +X-Spam-Status: No, score=-0.799 tagged_above=-999 required=5 + tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, + FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 64WyLN0d5IW6 for ; + Sun, 18 Nov 2012 11:19:17 -0800 (PST) +Received: from mail-wi0-f179.google.com (mail-wi0-f179.google.com + [209.85.212.179]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id 39EF6431FDA + for ; Sun, 18 Nov 2012 11:19:17 -0800 (PST) +Received: by mail-wi0-f179.google.com with SMTP id hj6so2267709wib.2 + for ; Sun, 18 Nov 2012 11:19:16 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; + h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; + bh=PWzkjjB+enal92bxkGbFa7NYoXWIh9AkSENoyivGXjU=; + b=jX6YvbNzjrB+aCBW8NgZHTjI06PiDadpcTQPzx2m7UWg1v1ZoYgFP4/mhqK5iSKfLQ + uXngvw+ur9yMbuvBW4pVE8K9h50bV9TUOC+TwuYq6FboeRy18TPa4fKXBtMeZjvoZqI2 + ZKvdYCxjKG6UINjYK/c40rC4zScl4ShBVSqQaoejmEX5XlLaCqxucHP0ft/Gyvg8CPM9 + mbuPLSIQJPY4xiw9bJ/eyOmQ7z4P6kIdgR6CeoFKodQlY7hfh8pHcVLd2Q1H7SDXdgMJ + Jq7APq/jczy5dm5GyUxqU0sji9AW2qh+b6vMJH11bvhtAoGZFitdAaJdxx3soYH1ANT8 + 90Uw== +Received: by 10.180.19.197 with SMTP id h5mr6008285wie.22.1353266356026; + Sun, 18 Nov 2012 11:19:16 -0800 (PST) +Received: from localhost.localdomain (ble59-4-82-228-190-150.fbx.proxad.net. + [82.228.190.150]) + by mx.google.com with ESMTPS id i2sm10290063wiw.3.2012.11.18.11.19.14 + (version=TLSv1/SSLv3 cipher=OTHER); + Sun, 18 Nov 2012 11:19:15 -0800 (PST) +From: Damien Cassou +To: notmuch mailing list +Subject: [PATCH 2/4] Make tags in header-line clickable +Date: Sun, 18 Nov 2012 20:18:40 +0100 +Message-Id: <1353266322-20318-3-git-send-email-damien.cassou@gmail.com> +X-Mailer: git-send-email 1.7.10.4 +In-Reply-To: <1353266322-20318-1-git-send-email-damien.cassou@gmail.com> +References: <1353266322-20318-1-git-send-email-damien.cassou@gmail.com> +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sun, 18 Nov 2012 19:19:19 -0000 + +Signed-off-by: Damien Cassou +--- + emacs/notmuch-tagger.el | 54 ++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 53 insertions(+), 1 deletion(-) + +diff --git a/emacs/notmuch-tagger.el b/emacs/notmuch-tagger.el +index 5ca190e..19a6c7e 100644 +--- a/emacs/notmuch-tagger.el ++++ b/emacs/notmuch-tagger.el +@@ -32,11 +32,63 @@ + (setq first nil) + (push elt res)))) + ++(defun notmuch-tagger-header-button-present-p () ++ "Check if `header-button' can be loaded or is already loaded. ++ ++`header-button' is a third-party library which facilitates the ++creation of links in emacs header-line. This function tries to ++`require' `header-button' and returns nil if and only if this ++fails." ++ (require 'header-button nil t)) ++ ++(defun notmuch-tagger-goto-target (tag) ++ "Show a `notmuch-search' buffer for the TAG." ++ (notmuch-search (concat "tag:" tag))) ++ ++(defun notmuch-tagger-header-button-action (button) ++ "Open `notmuch-search' for the tag referenced by BUTTON. ++This function depends on the presence of the `header-button' ++library. Please call `notmuch-tagger-header-button-present-p' to ++test if the library is present before calling this function." ++ (let ((tag (header-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)) ++ ++(defun notmuch-tagger-really-make-header-link (tag) ++ "Return a property list that presents a link to TAG. ++ ++The returned property list will only work in the header-line. ++Additionally, this function depends on the presence of the ++`header-button' library. Please call ++`notmuch-tagger-header-button-present-p' to test if library is ++present before calling this function." ++ (header-button-format ++ tag ++ :type 'notmuch-tagger-header-button-type ++ 'notmuch-tagger-tag tag ++ 'help-echo (format "%s: Search other messages like this" tag))) ++ ++(defun notmuch-tagger-make-header-link (tag) ++ "Return a property list to present TAG as a link to search. ++ ++This only works if `header-button' is loaded. Simply returns tag ++if not." ++ (if (notmuch-tagger-header-button-present-p) ++ (notmuch-tagger-really-make-header-link tag) ++ tag)) ++ + (defun notmuch-tagger-present-tags-header-line (tags) + "Return a property list to present TAGS in emacs header-line." + (list + "(" +- (notmuch-tagger-separate-elems tags " ") ++ (notmuch-tagger-separate-elems ++ (mapcar #'notmuch-tagger-make-header-link tags) ++ " ") + ")")) + + +-- +1.7.10.4 + -- 2.26.2