unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Mark Walters <markwalters1009@gmail.com>
To: notmuch@notmuchmail.org
Subject: [PATCH 3/4] contrib: pick: allow recursive message field formats
Date: Mon,  2 Sep 2013 04:28:07 +0100	[thread overview]
Message-ID: <1378092488-32050-4-git-send-email-markwalters1009@gmail.com> (raw)
In-Reply-To: <1378092488-32050-1-git-send-email-markwalters1009@gmail.com>

Previously, the message format was fixed: each part had to be a
certain width and either left or right justified. This allows the user
to specify that two parts can be variable width but that combined they
should be some fixed width. We do this by allowing the user to set as
a "field" a list of the normal result-format form which is formatted
and then itself inserted according to the format string specified.

This means all existing formats work but allows more general things
too. This will be used in the next patch to allow the user to specify
where the tree box graphics are drawn but allow, e.g., the total width
of the tree box graphics and subject to be specified.
---
 contrib/notmuch-pick/notmuch-pick.el |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/contrib/notmuch-pick/notmuch-pick.el b/contrib/notmuch-pick/notmuch-pick.el
index f01be94..5dfcef3 100644
--- a/contrib/notmuch-pick/notmuch-pick.el
+++ b/contrib/notmuch-pick/notmuch-pick.el
@@ -616,6 +616,10 @@ unchanged ADDRESS if parsing fails."
 	(match (plist-get msg :match))
 	formatted-field)
     (cond
+     ((listp field)
+      (setq formatted-field
+	    (format format-string (notmuch-pick-format-field-list field msg))))
+
      ((string-equal field "date")
       (let ((face (if match
 		      'notmuch-pick-match-date-face
@@ -663,13 +667,19 @@ unchanged ADDRESS if parsing fails."
 			  'face face)))))
     formatted-field))
 
+(defun notmuch-pick-format-field-list (field-list msg)
+  "Format fields of MSG according to FIELD-LIST and return string"
+  (let (result-string)
+    (dolist (spec field-list result-string)
+      (let ((field-string (notmuch-pick-format-field (car spec) (cdr spec) msg)))
+	(setq result-string (concat result-string field-string))))))
+
 (defun notmuch-pick-insert-msg (msg)
   "Insert the message MSG according to notmuch-pick-result-format"
   ;; We need to save the previous subject as it will get overwritten
   ;; by the insert-field calls.
   (let ((previous-subject notmuch-pick-previous-subject))
-    (dolist (spec notmuch-pick-result-format)
-      (insert (notmuch-pick-format-field (car spec) (cdr spec) msg)))
+    (insert (notmuch-pick-format-field-list notmuch-pick-result-format msg))
     (notmuch-pick-set-message-properties msg)
     (notmuch-pick-set-prop :previous-subject previous-subject)
     (insert "\n")))
-- 
1.7.9.1

  parent reply	other threads:[~2013-09-02  3:28 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02  3:28 [PATCH 0/4] contrib: pick: allow more general format lines Mark Walters
2013-09-02  3:28 ` [PATCH 1/4] contrib: pick: print () for a message with no tags Mark Walters
2013-09-02  3:28 ` [PATCH 2/4] contrib: pick: move the insertion of fields up a level Mark Walters
2013-09-02  3:28 ` Mark Walters [this message]
2013-09-02  3:28 ` [PATCH 4/4] contrib: pick: make the tree graphics a proper part of the format Mark Walters
2013-09-02  3:36 ` [PATCH 0/4] contrib: pick: allow more general format lines Mark Walters
2013-09-14  9:54 ` Tomi Ollila
2013-09-15 12:06 ` David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1378092488-32050-4-git-send-email-markwalters1009@gmail.com \
    --to=markwalters1009@gmail.com \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).