unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH v3 0/3] Allow functions in notmuch-*-result-format
@ 2021-02-21 15:18 David Edmondson
  2021-02-21 15:19 ` [PATCH v3 1/3] emacs: Use pcase in notmuch-search-insert-field David Edmondson
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: David Edmondson @ 2021-02-21 15:18 UTC (permalink / raw)
  To: notmuch; +Cc: David Edmondson

As well as allowing headers to be specified in the various result
format lists, allow functions that can be used to implement per-user
logic when generating the results.

v3:
- Push the function test into the pcase (bremner).
- Rebase to master (bremner).

David Edmondson (3):
  emacs: Use pcase in notmuch-search-insert-field
  emacs: Allow functions in notmuch-search-result-format
  emacs: Allow functions in notmuch-{tree,unthreaded}-result-format

 emacs/notmuch-tree.el |  3 +++
 emacs/notmuch.el      | 42 ++++++++++++++++++++++--------------------
 2 files changed, 25 insertions(+), 20 deletions(-)

-- 
2.30.0

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 1/3] emacs: Use pcase in notmuch-search-insert-field
  2021-02-21 15:18 [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Edmondson
@ 2021-02-21 15:19 ` David Edmondson
  2021-02-21 15:19 ` [PATCH v3 2/3] emacs: Allow functions in notmuch-search-result-format David Edmondson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: David Edmondson @ 2021-02-21 15:19 UTC (permalink / raw)
  To: notmuch; +Cc: David Edmondson

Rather than lots of string-equal calls, use the pcase macro.
---
 emacs/notmuch.el | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 6d37c623..b9cee19c 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -830,26 +830,26 @@ non-authors is found, assume that all of the authors match."
       (insert padding))))
 
 (defun notmuch-search-insert-field (field format-string result)
-  (cond
-   ((string-equal field "date")
-    (insert (propertize (format format-string (plist-get result :date_relative))
-			'face 'notmuch-search-date)))
-   ((string-equal field "count")
-    (insert (propertize (format format-string
-				(format "[%s/%s]" (plist-get result :matched)
-					(plist-get result :total)))
-			'face 'notmuch-search-count)))
-   ((string-equal field "subject")
-    (insert (propertize (format format-string
-				(notmuch-sanitize (plist-get result :subject)))
-			'face 'notmuch-search-subject)))
-   ((string-equal field "authors")
-    (notmuch-search-insert-authors
-     format-string (notmuch-sanitize (plist-get result :authors))))
-   ((string-equal field "tags")
-    (let ((tags (plist-get result :tags))
-	  (orig-tags (plist-get result :orig-tags)))
-      (insert (format format-string (notmuch-tag-format-tags tags orig-tags)))))))
+  (pcase field
+    ("date"
+     (insert (propertize (format format-string (plist-get result :date_relative))
+			 'face 'notmuch-search-date)))
+    ("count"
+     (insert (propertize (format format-string
+				 (format "[%s/%s]" (plist-get result :matched)
+					 (plist-get result :total)))
+			 'face 'notmuch-search-count)))
+    ("subject"
+     (insert (propertize (format format-string
+				 (notmuch-sanitize (plist-get result :subject)))
+			 'face 'notmuch-search-subject)))
+    ("authors"
+     (notmuch-search-insert-authors format-string
+				    (notmuch-sanitize (plist-get result :authors))))
+    ("tags"
+     (let ((tags (plist-get result :tags))
+	   (orig-tags (plist-get result :orig-tags)))
+       (insert (format format-string (notmuch-tag-format-tags tags orig-tags)))))))
 
 (defun notmuch-search-show-result (result pos)
   "Insert RESULT at POS."
-- 
2.30.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 2/3] emacs: Allow functions in notmuch-search-result-format
  2021-02-21 15:18 [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Edmondson
  2021-02-21 15:19 ` [PATCH v3 1/3] emacs: Use pcase in notmuch-search-insert-field David Edmondson
@ 2021-02-21 15:19 ` David Edmondson
  2021-02-22 11:21   ` [PATCH] test/emacs: test for " David Bremner
  2021-02-21 15:19 ` [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format David Edmondson
  2021-09-09  2:03 ` [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Bremner
  3 siblings, 1 reply; 9+ messages in thread
From: David Edmondson @ 2021-02-21 15:19 UTC (permalink / raw)
  To: notmuch; +Cc: David Edmondson

If the car of an element in notmuch-search-result-format is a
function, insert the result of calling the function into the buffer.

This allows a user to generate custom fields in the output of a search
result. For example, with:

(defun -notmuch-result-flags (format-string result)
  (let ((tags-to-letters '(("flagged" . "!")
			   ("unread" . "u")
			   ("mine" . "m")
			   ("sent" . "s")
			   ("replied" . "r")))
	(tags (plist-get result :tags)))

    (format format-string
	    (mapconcat (lambda (t2l)
			 (if (member (car t2l) tags)
			     (cdr t2l)
			   " "))
		       tags-to-letters ""))))

(setq notmuch-search-result-format '((-notmuch-result-flags . "%s ")
				     ("date" . "%12s ")
				     ("count" . "%9s ")
				     ("authors" . "%-30s ")
				     ("subject" . "%s ")
				     ("tags" . "(%s)")))

The first few characters on each line of the search result are used to
show information about some significant tags associated with the
thread.
---
 emacs/notmuch.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index b9cee19c..6ba535d1 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -831,6 +831,8 @@ non-authors is found, assume that all of the authors match."
 
 (defun notmuch-search-insert-field (field format-string result)
   (pcase field
+    ((pred functionp)
+     (insert (funcall field format-string result)))
     ("date"
      (insert (propertize (format format-string (plist-get result :date_relative))
 			 'face 'notmuch-search-date)))
-- 
2.30.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format
  2021-02-21 15:18 [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Edmondson
  2021-02-21 15:19 ` [PATCH v3 1/3] emacs: Use pcase in notmuch-search-insert-field David Edmondson
  2021-02-21 15:19 ` [PATCH v3 2/3] emacs: Allow functions in notmuch-search-result-format David Edmondson
@ 2021-02-21 15:19 ` David Edmondson
  2021-06-12 15:44   ` Andrew Tropin
  2021-09-09  2:03 ` [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Bremner
  3 siblings, 1 reply; 9+ messages in thread
From: David Edmondson @ 2021-02-21 15:19 UTC (permalink / raw)
  To: notmuch; +Cc: David Edmondson

If the car of an element in notmuch-tree-result-format or
notmuch-unthreaded-result-format is a function, insert the result of
calling the function into the buffer.
---
 emacs/notmuch-tree.el | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el
index 13007a13..ffb21496 100644
--- a/emacs/notmuch-tree.el
+++ b/emacs/notmuch-tree.el
@@ -866,6 +866,9 @@ unchanged ADDRESS if parsing fails."
      ((listp field)
       (format format-string (notmuch-tree-format-field-list field msg)))
 
+     ((functionp field)
+      (funcall field format-string msg))
+
      ((string-equal field "date")
       (let ((face (if match
 		      'notmuch-tree-match-date-face
-- 
2.30.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH] test/emacs: test for functions in notmuch-search-result-format.
  2021-02-21 15:19 ` [PATCH v3 2/3] emacs: Allow functions in notmuch-search-result-format David Edmondson
@ 2021-02-22 11:21   ` David Bremner
  2021-08-30 19:49     ` [PATCH v2] " David Bremner
  0 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2021-02-22 11:21 UTC (permalink / raw)
  To: David Edmondson, notmuch; +Cc: David Bremner

Based on the commit message in id:20210221151902.2301690-3-dme@dme.org
---

I didn't have time so far to write tests for the other two cases, but
maybe this is a start.

 test/T310-emacs.sh                            | 27 +++++++++++++++++++
 .../notmuch-search-header-function            | 25 +++++++++++++++++
 2 files changed, 52 insertions(+)
 create mode 100644 test/emacs.expected-output/notmuch-search-header-function

diff --git a/test/T310-emacs.sh b/test/T310-emacs.sh
index 78ac19a8..647c6491 100755
--- a/test/T310-emacs.sh
+++ b/test/T310-emacs.sh
@@ -39,6 +39,33 @@ test_emacs '(notmuch-search "tag:inbox")
 	    (test-output)'
 test_expect_equal_file $EXPECTED/notmuch-search-tag-inbox OUTPUT
 
+test_begin_subtest "Functions in search-result-format"
+test_emacs '(defun -notmuch-result-flags (format-string result)
+	      (let ((tags-to-letters (quote (("attachment" . "&")
+					     ("signed" . "=")
+					     ("unread" . "u")
+					     ("inbox" . "i"))))
+		    (tags (plist-get result :tags)))
+		(format format-string
+			(mapconcat (lambda (t2l)
+				     (if (member (car t2l) tags)
+					 (cdr t2l)
+				       " "))
+				   tags-to-letters ""))))
+	    (setq test-search-format
+		  (quote ((-notmuch-result-flags . "%s ")
+			  ("date" . "%12s ")
+			  ("count" . "%9s ")
+			  ("authors" . "%-30s ")
+			  ("subject" . "%s ")
+			  ("tags" . "(%s)"))))
+	    (let
+		((notmuch-search-result-format test-search-format))
+	      (notmuch-search "tag:inbox")
+	      (notmuch-test-wait))
+	    (test-output)'
+test_expect_equal_file $EXPECTED/notmuch-search-header-function OUTPUT
+
 test_begin_subtest "Incremental parsing of search results"
 test_emacs "(cl-letf* (((symbol-function 'orig)
 			(symbol-function 'notmuch-search-process-filter))
diff --git a/test/emacs.expected-output/notmuch-search-header-function b/test/emacs.expected-output/notmuch-search-header-function
new file mode 100644
index 00000000..08b4bee7
--- /dev/null
+++ b/test/emacs.expected-output/notmuch-search-header-function
@@ -0,0 +1,25 @@
+  ui   2010-12-29     [1/1] François Boulogne              [aur-general] Guidelines: cp, mkdir vs install (inbox unread)
+  ui   2010-12-16     [1/1] Olivier Berger                 Essai accentué (inbox unread)
+  ui   2009-11-18     [1/1] Chris Wilson                   [notmuch] [PATCH 1/2] Makefile: evaluate pkg-config once (inbox unread)
+& ui   2009-11-18     [2/2] Alex Botero-Lowry, Carl Worth  [notmuch] [PATCH] Error out if no query is supplied to search instead of going into an infinite loop (attachment inbox unread)
+  ui   2009-11-18     [2/2] Ingmar Vanhassel, Carl Worth   [notmuch] [PATCH] Typsos (inbox unread)
+ =ui   2009-11-18     [3/3] Adrian Perez de Castro, Keith Packard, Carl Worth     [notmuch] Introducing myself (inbox signed unread)
+  ui   2009-11-18     [3/3] Israel Herraiz, Keith Packard, Carl Worth             [notmuch] New to the list (inbox unread)
+  ui   2009-11-18     [3/3] Jan Janak, Carl Worth          [notmuch] What a great idea! (inbox unread)
+  ui   2009-11-18     [2/2] Jan Janak, Carl Worth          [notmuch] [PATCH] Older versions of install do not support -C. (inbox unread)
+  ui   2009-11-18     [3/3] Aron Griffis, Keith Packard, Carl Worth               [notmuch] archive (inbox unread)
+  ui   2009-11-18     [2/2] Keith Packard, Carl Worth      [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove inbox (and unread) tags (inbox unread)
+ =ui   2009-11-18     [7/7] Lars Kellogg-Stedman, Mikhail Gusarov, Keith Packard, Carl Worth       [notmuch] Working with Maildir storage? (inbox signed unread)
+  ui   2009-11-18     [5/5] Mikhail Gusarov, Carl Worth, Keith Packard            [notmuch] [PATCH 1/2] Close message file after parsing message headers (inbox unread)
+  ui   2009-11-18     [2/2] Keith Packard, Alexander Botero-Lowry              [notmuch] [PATCH] Create a default notmuch-show-hook that highlights URLs and uses word-wrap (inbox unread)
+  ui   2009-11-18     [1/1] Alexander Botero-Lowry         [notmuch] request for pull (inbox unread)
+  ui   2009-11-18     [4/4] Jjgod Jiang, Alexander Botero-Lowry                [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)
+  ui   2009-11-18     [1/1] Rolland Santimano              [notmuch] Link to mailing list archives ? (inbox unread)
+  ui   2009-11-18     [1/1] Jan Janak                      [notmuch] [PATCH] notmuch new: Support for conversion of spool subdirectories into tags (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH] count_files: sort directory in inode order before statting (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH 2/2] Read mail directory in inode number order (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++ libs. (inbox unread)
+&=ui   2009-11-18     [2/2] Lars Kellogg-Stedman           [notmuch] "notmuch help" outputs to stderr? (attachment inbox signed unread)
+  ui   2009-11-17     [1/1] Mikhail Gusarov                [notmuch] [PATCH] Handle rename of message file (inbox unread)
+& ui   2009-11-17     [2/2] Alex Botero-Lowry, Carl Worth  [notmuch] preliminary FreeBSD support (attachment inbox unread)
+End of search results.
-- 
2.30.0\r

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format
  2021-02-21 15:19 ` [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format David Edmondson
@ 2021-06-12 15:44   ` Andrew Tropin
  2021-08-02 15:39     ` David Bremner
  0 siblings, 1 reply; 9+ messages in thread
From: Andrew Tropin @ 2021-06-12 15:44 UTC (permalink / raw)
  To: dme, notmuch

Hi!  Is this patch already applied?  Can't find it in the repo.

Would be really cool to have an ability to use custom function for
formating mail tree.  For now I have to use and advice and override
notmuch-tree-insert-tree.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format
  2021-06-12 15:44   ` Andrew Tropin
@ 2021-08-02 15:39     ` David Bremner
  0 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2021-08-02 15:39 UTC (permalink / raw)
  To: Andrew Tropin, dme, notmuch

Andrew Tropin <andrew@trop.in> writes:

> Hi!  Is this patch already applied?  Can't find it in the repo.
>
> Would be really cool to have an ability to use custom function for
> formating mail tree.  For now I have to use and advice and override
> notmuch-tree-insert-tree.

Hi Andrew;

I think we are waiting for someone(TM) to find the time to write more
test cases.

d

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2] test/emacs: test for functions in notmuch-search-result-format.
  2021-02-22 11:21   ` [PATCH] test/emacs: test for " David Bremner
@ 2021-08-30 19:49     ` David Bremner
  0 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2021-08-30 19:49 UTC (permalink / raw)
  To: David Bremner, David Edmondson, notmuch

Based on the commit message in id:20210221151902.2301690-3-dme@dme.org

Add the function notmuch-test-result-flags to test-lib.el to avoid
repeating it in 3 T*.sh files.
---
 test/T310-emacs.sh                            | 14 +++++
 test/T460-emacs-tree.sh                       | 15 ++++++
 test/T465-emacs-unthreaded.sh                 | 17 ++++++
 .../result-format-function                    | 53 +++++++++++++++++++
 .../result-format-function                    | 53 +++++++++++++++++++
 .../search-result-format-function             | 25 +++++++++
 test/test-lib.el                              | 15 ++++++
 7 files changed, 192 insertions(+)
 create mode 100644 test/emacs-tree.expected-output/result-format-function
 create mode 100644 test/emacs-unthreaded.expected-output/result-format-function
 create mode 100644 test/emacs.expected-output/search-result-format-function

diff --git a/test/T310-emacs.sh b/test/T310-emacs.sh
index d69d94a3..6c1e8979 100755
--- a/test/T310-emacs.sh
+++ b/test/T310-emacs.sh
@@ -41,6 +41,20 @@ test_emacs '(notmuch-search "tag:inbox")
 	    (test-output)'
 test_expect_equal_file $EXPECTED/notmuch-search-tag-inbox OUTPUT
 
+test_begin_subtest "Functions in search-result-format"
+test_emacs '(let
+		((notmuch-search-result-format
+		  (quote ((notmuch-test-result-flags . "%s ")
+			  ("date" . "%12s ")
+			  ("count" . "%9s ")
+			  ("authors" . "%-30s ")
+			  ("subject" . "%s ")
+			  ("tags" . "(%s)")))))
+	      (notmuch-search "tag:inbox")
+	      (notmuch-test-wait)
+	      (test-output))'
+test_expect_equal_file $EXPECTED/search-result-format-function OUTPUT
+
 test_begin_subtest "Incremental parsing of search results"
 test_emacs "(cl-letf* (((symbol-function 'orig)
 			(symbol-function 'notmuch-search-process-filter))
diff --git a/test/T460-emacs-tree.sh b/test/T460-emacs-tree.sh
index 405d7ee7..946583d9 100755
--- a/test/T460-emacs-tree.sh
+++ b/test/T460-emacs-tree.sh
@@ -179,4 +179,19 @@ output=$(test_emacs '(notmuch-tree "tag:inbox")
 		     (notmuch-show-stash-message-id)')
 test_expect_equal "$output" "\"Stashed: id:1258493565-13508-1-git-send-email-keithp@keithp.com\""
 
+test_begin_subtest "Functions in tree-result-format"
+test_emacs '
+(let
+    ((notmuch-tree-result-format
+     (quote (("date" . "%12s  ")
+	     ("authors" . "%-20s")
+	     ((("tree" . "%s")
+	       ("subject" . "%s")) . " %-54s ")
+	     (notmuch-test-result-flags . "(%s)")))))
+  (notmuch-tree "tag:inbox")
+  (notmuch-test-wait)
+  (test-output))
+'
+test_expect_equal_file $EXPECTED/result-format-function OUTPUT
+
 test_done
diff --git a/test/T465-emacs-unthreaded.sh b/test/T465-emacs-unthreaded.sh
index f9a09426..1f386bf3 100755
--- a/test/T465-emacs-unthreaded.sh
+++ b/test/T465-emacs-unthreaded.sh
@@ -6,6 +6,8 @@ test_description="emacs unthreaded interface"
 
 test_require_emacs
 
+EXPECTED=$NOTMUCH_SRCDIR/test/emacs-unthreaded.expected-output
+
 generate_message "[id]=large-thread-1" '[subject]="large thread"'
 printf "  2001-01-05  Notmuch Test Suite   large thread%43s(inbox unread)\n" >> EXPECTED.unthreaded
 
@@ -34,4 +36,19 @@ output=$(test_emacs '(let ((max-lisp-eval-depth 10))
 		       "SUCCESS")' )
 test_expect_equal "$output" '"SUCCESS"'
 
+add_email_corpus
+test_begin_subtest "Functions in unthreaded-result-format"
+test_emacs '
+(let
+    ((notmuch-unthreaded-result-format
+     (quote (("date" . "%12s  ")
+	     ("authors" . "%-20s")
+	     ("subject" . "%-54s")
+	     (notmuch-test-result-flags . "(%s)")))))
+  (notmuch-unthreaded "tag:inbox")
+  (notmuch-test-wait)
+  (test-output))
+'
+test_expect_equal_file $EXPECTED/result-format-function OUTPUT
+
 test_done
diff --git a/test/emacs-tree.expected-output/result-format-function b/test/emacs-tree.expected-output/result-format-function
new file mode 100644
index 00000000..7eb24696
--- /dev/null
+++ b/test/emacs-tree.expected-output/result-format-function
@@ -0,0 +1,53 @@
+  2010-12-29  François Boulogne     ─►[aur-general] Guidelines: cp, mkdir vs install      (  ui)
+  2010-12-16  Olivier Berger        ─►Essai accentué                                      (  ui)
+  2009-11-18  Chris Wilson          ─►[notmuch] [PATCH 1/2] Makefile: evaluate pkg-config once (  ui)
+  2009-11-18  Alex Botero-Lowry     ┬►[notmuch] [PATCH] Error out if no query is supplied to search	instead of going into an infinite loop (& ui)
+  2009-11-18  Carl Worth            ╰─►[notmuch] [PATCH] Error out if no query is supplied to search instead of going into an infinite loop (  ui)
+  2009-11-17  Ingmar Vanhassel      ┬►[notmuch] [PATCH] Typsos                            (  ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Adrian Perez de Cast  ┬►[notmuch] Introducing myself                        ( =ui)
+  2009-11-18  Keith Packard         ├─► ...                                               (  ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Israel Herraiz        ┬►[notmuch] New to the list                           (  ui)
+  2009-11-18  Keith Packard         ├─► ...                                               (  ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Jan Janak             ┬►[notmuch] What a great idea!                        (  ui)
+  2009-11-17  Jan Janak             ├─► ...                                               (  ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Jan Janak             ┬►[notmuch] [PATCH] Older versions of install do not support -C. (  ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Aron Griffis          ┬►[notmuch] archive                                   (  ui)
+  2009-11-18  Keith Packard         ╰┬► ...                                               (  ui)
+  2009-11-18  Carl Worth             ╰─► ...                                              (  ui)
+  2009-11-17  Keith Packard         ┬►[notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove	inbox (and unread) tags (  ui)
+  2009-11-18  Carl Worth            ╰─►[notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove inbox (and unread) tags (  ui)
+  2009-11-17  Lars Kellogg-Stedman  ┬►[notmuch] Working with Maildir storage?             ( = i)
+  2009-11-17  Mikhail Gusarov       ├┬► ...                                               ( =ui)
+  2009-11-17  Lars Kellogg-Stedman  │╰┬► ...                                              ( =ui)
+  2009-11-17  Mikhail Gusarov       │ ├─► ...                                             (  ui)
+  2009-11-17  Keith Packard         │ ╰┬► ...                                             (  ui)
+  2009-11-18  Lars Kellogg-Stedman  │  ╰─► ...                                            ( =ui)
+  2009-11-18  Carl Worth            ╰─► ...                                               (  ui)
+  2009-11-17  Mikhail Gusarov       ┬►[notmuch] [PATCH 1/2] Close message file after parsing message	headers (   i)
+  2009-11-17  Mikhail Gusarov       ├─►[notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++	file with gcc 4.4 (  ui)
+  2009-11-17  Carl Worth            ╰┬►[notmuch] [PATCH 1/2] Close message file after parsing message headers (  ui)
+  2009-11-17  Keith Packard          ╰┬► ...                                              (  ui)
+  2009-11-18  Carl Worth              ╰─► ...                                             (  ui)
+  2009-11-18  Keith Packard         ┬►[notmuch] [PATCH] Create a default notmuch-show-hook that	highlights URLs and uses word-wrap (  ui)
+  2009-11-18  Alexander Botero-Low  ╰─►[notmuch] [PATCH] Create a default notmuch-show-hook that highlights URLs and uses word-wrap (  ui)
+  2009-11-18  Alexander Botero-Low  ─►[notmuch] request for pull                          (  ui)
+  2009-11-18  Jjgod Jiang           ┬►[notmuch] Mac OS X/Darwin compatibility issues      (  ui)
+  2009-11-18  Alexander Botero-Low  ╰┬► ...                                               (  ui)
+  2009-11-18  Jjgod Jiang            ╰┬► ...                                              (  ui)
+  2009-11-18  Alexander Botero-Low    ╰─► ...                                             (  ui)
+  2009-11-18  Rolland Santimano     ─►[notmuch] Link to mailing list archives ?           (  ui)
+  2009-11-18  Jan Janak             ─►[notmuch] [PATCH] notmuch new: Support for conversion of spool	subdirectories into tags (  ui)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH] count_files: sort directory in inode order before	statting (  ui)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH 2/2] Read mail directory in inode number order (  ui)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++	libs. (  ui)
+  2009-11-18  Lars Kellogg-Stedman  ┬►[notmuch] "notmuch help" outputs to stderr?         (&=ui)
+  2009-11-18  Lars Kellogg-Stedman  ╰─► ...                                               (&=ui)
+  2009-11-17  Mikhail Gusarov       ─►[notmuch] [PATCH] Handle rename of message file     (  ui)
+  2009-11-17  Alex Botero-Lowry     ┬►[notmuch] preliminary FreeBSD support               (& ui)
+  2009-11-17  Carl Worth            ╰─► ...                                               (  ui)
+End of search results.
diff --git a/test/emacs-unthreaded.expected-output/result-format-function b/test/emacs-unthreaded.expected-output/result-format-function
new file mode 100644
index 00000000..bcb10b96
--- /dev/null
+++ b/test/emacs-unthreaded.expected-output/result-format-function
@@ -0,0 +1,53 @@
+  2010-12-29  François Boulogne   [aur-general] Guidelines: cp, mkdir vs install        (  ui)
+  2010-12-16  Olivier Berger      Essai accentué                                        (  ui)
+  2009-11-18  Chris Wilson        [notmuch] [PATCH 1/2] Makefile: evaluate pkg-config once(  ui)
+  2009-11-18  Carl Worth          [notmuch] [PATCH] Error out if no query is supplied to search instead of going into an infinite loop(  ui)
+  2009-11-18  Carl Worth          [notmuch] [PATCH] Typsos                              (  ui)
+  2009-11-18  Carl Worth          [notmuch] Introducing myself                          (  ui)
+  2009-11-18  Carl Worth          [notmuch] New to the list                             (  ui)
+  2009-11-18  Carl Worth          [notmuch] What a great idea!                          (  ui)
+  2009-11-18  Carl Worth          [notmuch] [PATCH] Older versions of install do not support -C.(  ui)
+  2009-11-18  Carl Worth          [notmuch] archive                                     (  ui)
+  2009-11-18  Carl Worth          [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove inbox (and unread) tags(  ui)
+  2009-11-18  Carl Worth          [notmuch] Working with Maildir storage?               (  ui)
+  2009-11-18  Carl Worth          [notmuch] [PATCH 1/2] Close message file after parsing message headers(  ui)
+  2009-11-18  Alexander Botero-Low[notmuch] [PATCH] Create a default notmuch-show-hook that highlights URLs and uses word-wrap(  ui)
+  2009-11-18  Keith Packard       [notmuch] [PATCH] Create a default notmuch-show-hook that	highlights URLs and uses word-wrap(  ui)
+  2009-11-18  Alexander Botero-Low[notmuch] request for pull                            (  ui)
+  2009-11-18  Alexander Botero-Low[notmuch] Mac OS X/Darwin compatibility issues        (  ui)
+  2009-11-18  Jjgod Jiang         [notmuch] Mac OS X/Darwin compatibility issues        (  ui)
+  2009-11-18  Alexander Botero-Low[notmuch] Mac OS X/Darwin compatibility issues        (  ui)
+  2009-11-18  Rolland Santimano   [notmuch] Link to mailing list archives ?             (  ui)
+  2009-11-18  Jan Janak           [notmuch] [PATCH] notmuch new: Support for conversion of spool	subdirectories into tags(  ui)
+  2009-11-18  Jjgod Jiang         [notmuch] Mac OS X/Darwin compatibility issues        (  ui)
+  2009-11-18  Stewart Smith       [notmuch] [PATCH] count_files: sort directory in inode order before	statting(  ui)
+  2009-11-18  Keith Packard       [notmuch] archive                                     (  ui)
+  2009-11-18  Keith Packard       [notmuch] Introducing myself                          (  ui)
+  2009-11-18  Keith Packard       [notmuch] New to the list                             (  ui)
+  2009-11-18  Stewart Smith       [notmuch] [PATCH 2/2] Read mail directory in inode number order(  ui)
+  2009-11-18  Stewart Smith       [notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++	libs.(  ui)
+  2009-11-18  Lars Kellogg-Stedman[notmuch] "notmuch help" outputs to stderr?           (&=ui)
+  2009-11-18  Lars Kellogg-Stedman[notmuch] "notmuch help" outputs to stderr?           (&=ui)
+  2009-11-18  Lars Kellogg-Stedman[notmuch] Working with Maildir storage?               ( =ui)
+  2009-11-18  Alex Botero-Lowry   [notmuch] [PATCH] Error out if no query is supplied to search	instead of going into an infinite loop(& ui)
+  2009-11-17  Ingmar Vanhassel    [notmuch] [PATCH] Typsos                              (  ui)
+  2009-11-17  Aron Griffis        [notmuch] archive                                     (  ui)
+  2009-11-17  Adrian Perez de Cast[notmuch] Introducing myself                          ( =ui)
+  2009-11-17  Israel Herraiz      [notmuch] New to the list                             (  ui)
+  2009-11-17  Jan Janak           [notmuch] What a great idea!                          (  ui)
+  2009-11-17  Jan Janak           [notmuch] What a great idea!                          (  ui)
+  2009-11-17  Jan Janak           [notmuch] [PATCH] Older versions of install do not support -C.(  ui)
+  2009-11-17  Keith Packard       [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove	inbox (and unread) tags(  ui)
+  2009-11-17  Keith Packard       [notmuch] Working with Maildir storage?               (  ui)
+  2009-11-17  Keith Packard       [notmuch] [PATCH 1/2] Close message file after parsing message headers(  ui)
+  2009-11-17  Mikhail Gusarov     [notmuch] [PATCH] Handle rename of message file       (  ui)
+  2009-11-17  Mikhail Gusarov     [notmuch] Working with Maildir storage?               (  ui)
+  2009-11-17  Lars Kellogg-Stedman[notmuch] Working with Maildir storage?               ( =ui)
+  2009-11-17  Carl Worth          [notmuch] preliminary FreeBSD support                 (  ui)
+  2009-11-17  Alex Botero-Lowry   [notmuch] preliminary FreeBSD support                 (& ui)
+  2009-11-17  Mikhail Gusarov     [notmuch] Working with Maildir storage?               ( =ui)
+  2009-11-17  Lars Kellogg-Stedman[notmuch] Working with Maildir storage?               ( =ui)
+  2009-11-17  Carl Worth          [notmuch] [PATCH 1/2] Close message file after parsing message headers(  ui)
+  2009-11-17  Mikhail Gusarov     [notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++	file with gcc 4.4(  ui)
+  2009-11-17  Mikhail Gusarov     [notmuch] [PATCH 1/2] Close message file after parsing message	headers(  ui)
+End of search results.
diff --git a/test/emacs.expected-output/search-result-format-function b/test/emacs.expected-output/search-result-format-function
new file mode 100644
index 00000000..08b4bee7
--- /dev/null
+++ b/test/emacs.expected-output/search-result-format-function
@@ -0,0 +1,25 @@
+  ui   2010-12-29     [1/1] François Boulogne              [aur-general] Guidelines: cp, mkdir vs install (inbox unread)
+  ui   2010-12-16     [1/1] Olivier Berger                 Essai accentué (inbox unread)
+  ui   2009-11-18     [1/1] Chris Wilson                   [notmuch] [PATCH 1/2] Makefile: evaluate pkg-config once (inbox unread)
+& ui   2009-11-18     [2/2] Alex Botero-Lowry, Carl Worth  [notmuch] [PATCH] Error out if no query is supplied to search instead of going into an infinite loop (attachment inbox unread)
+  ui   2009-11-18     [2/2] Ingmar Vanhassel, Carl Worth   [notmuch] [PATCH] Typsos (inbox unread)
+ =ui   2009-11-18     [3/3] Adrian Perez de Castro, Keith Packard, Carl Worth     [notmuch] Introducing myself (inbox signed unread)
+  ui   2009-11-18     [3/3] Israel Herraiz, Keith Packard, Carl Worth             [notmuch] New to the list (inbox unread)
+  ui   2009-11-18     [3/3] Jan Janak, Carl Worth          [notmuch] What a great idea! (inbox unread)
+  ui   2009-11-18     [2/2] Jan Janak, Carl Worth          [notmuch] [PATCH] Older versions of install do not support -C. (inbox unread)
+  ui   2009-11-18     [3/3] Aron Griffis, Keith Packard, Carl Worth               [notmuch] archive (inbox unread)
+  ui   2009-11-18     [2/2] Keith Packard, Carl Worth      [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove inbox (and unread) tags (inbox unread)
+ =ui   2009-11-18     [7/7] Lars Kellogg-Stedman, Mikhail Gusarov, Keith Packard, Carl Worth       [notmuch] Working with Maildir storage? (inbox signed unread)
+  ui   2009-11-18     [5/5] Mikhail Gusarov, Carl Worth, Keith Packard            [notmuch] [PATCH 1/2] Close message file after parsing message headers (inbox unread)
+  ui   2009-11-18     [2/2] Keith Packard, Alexander Botero-Lowry              [notmuch] [PATCH] Create a default notmuch-show-hook that highlights URLs and uses word-wrap (inbox unread)
+  ui   2009-11-18     [1/1] Alexander Botero-Lowry         [notmuch] request for pull (inbox unread)
+  ui   2009-11-18     [4/4] Jjgod Jiang, Alexander Botero-Lowry                [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)
+  ui   2009-11-18     [1/1] Rolland Santimano              [notmuch] Link to mailing list archives ? (inbox unread)
+  ui   2009-11-18     [1/1] Jan Janak                      [notmuch] [PATCH] notmuch new: Support for conversion of spool subdirectories into tags (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH] count_files: sort directory in inode order before statting (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH 2/2] Read mail directory in inode number order (inbox unread)
+  ui   2009-11-18     [1/1] Stewart Smith                  [notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++ libs. (inbox unread)
+&=ui   2009-11-18     [2/2] Lars Kellogg-Stedman           [notmuch] "notmuch help" outputs to stderr? (attachment inbox signed unread)
+  ui   2009-11-17     [1/1] Mikhail Gusarov                [notmuch] [PATCH] Handle rename of message file (inbox unread)
+& ui   2009-11-17     [2/2] Alex Botero-Lowry, Carl Worth  [notmuch] preliminary FreeBSD support (attachment inbox unread)
+End of search results.
diff --git a/test/test-lib.el b/test/test-lib.el
index 32d53736..c840bc98 100644
--- a/test/test-lib.el
+++ b/test/test-lib.el
@@ -159,6 +159,21 @@ running, quit if it terminated."
 	 (lambda (x) `(prog1 ,x (notmuch-post-command)))
 	 body)))
 
+;; For testing functions in
+;; notmuch-{search,tree,unsorted}-result-format
+(defun notmuch-test-result-flags (format-string result)
+  (let ((tags-to-letters (quote (("attachment" . "&")
+				 ("signed" . "=")
+				 ("unread" . "u")
+				 ("inbox" . "i"))))
+	(tags (plist-get result :tags)))
+    (format format-string
+	    (mapconcat (lambda (t2l)
+			 (if (member (car t2l) tags)
+			     (cdr t2l)
+			   " "))
+		       tags-to-letters ""))))
+
 ;; For historical reasons, we hide deleted tags by default in the test
 ;; suite
 (setq notmuch-tag-deleted-formats
-- 
2.33.0\r

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/3] Allow functions in notmuch-*-result-format
  2021-02-21 15:18 [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Edmondson
                   ` (2 preceding siblings ...)
  2021-02-21 15:19 ` [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format David Edmondson
@ 2021-09-09  2:03 ` David Bremner
  3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2021-09-09  2:03 UTC (permalink / raw)
  To: David Edmondson, notmuch; +Cc: David Edmondson

David Edmondson <dme@dme.org> writes:

> As well as allowing headers to be specified in the various result
> format lists, allow functions that can be used to implement per-user
> logic when generating the results.

applied to master, along with my followup patch with tests.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-09-09  2:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-21 15:18 [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Edmondson
2021-02-21 15:19 ` [PATCH v3 1/3] emacs: Use pcase in notmuch-search-insert-field David Edmondson
2021-02-21 15:19 ` [PATCH v3 2/3] emacs: Allow functions in notmuch-search-result-format David Edmondson
2021-02-22 11:21   ` [PATCH] test/emacs: test for " David Bremner
2021-08-30 19:49     ` [PATCH v2] " David Bremner
2021-02-21 15:19 ` [PATCH v3 3/3] emacs: Allow functions in notmuch-{tree,unthreaded}-result-format David Edmondson
2021-06-12 15:44   ` Andrew Tropin
2021-08-02 15:39     ` David Bremner
2021-09-09  2:03 ` [PATCH v3 0/3] Allow functions in notmuch-*-result-format David Bremner

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).