[notmuch] [PATCH] Refactor notmuch-folder-add to avoid recursion. Allow notmuch-folders to contain folders with empty search criteria.

James Vasile james at hackervisions.org
Wed Feb 24 19:43:04 PST 2010


Refactor notmuch-folder-add to avoid recursion.  Allow notmuch-folders
to contain folders with empty search criteria.

Setting a folder's search criteria to "" in notmuch-folders causes a
label to be printed in notmuch-folder view.  This is good for helping
organizing folders, e.g. by using ("Mailing lists" . "").

The old, recursive version ran the risk of exceeding
max-lisp-eval-depth.
---
 notmuch.el |   36 +++++++++++++++++++++---------------
 1 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6482170..5eb6bd1 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -1699,21 +1699,27 @@ Currently available key bindings:
   (notmuch-folder))
 
 (defun notmuch-folder-add (folders)
-  (if folders
-      (let* ((name (car (car folders)))
-	    (inhibit-read-only t)
-	    (search (cdr (car folders)))
-	    (count (notmuch-folder-count search)))
-	(if (or notmuch-folder-show-empty
-		(not (equal count "0")))
-	    (progn
-	      (insert name)
-	      (indent-to 16 1)
-	      (insert count)
-	      (insert "\n")
-	      )
-	  )
-	(notmuch-folder-add (cdr folders)))))
+  (mapc
+   (lambda (folder)
+     (let ((name (car folder)))
+       (if (not (string= "" (cdr folder)))
+	   (let* ((inhibit-read-only t)
+		  (search (cdr folder))
+		  (count (notmuch-folder-count search)))
+	     (if (or notmuch-folder-show-empty
+		     (not (equal count "0")))
+		 (progn
+		   (insert name)
+		   (indent-to 16 1)
+		   (insert (notmuch-folder-count (format "(%s) and tag:unread" search)))
+		   (insert "/")
+		   (insert count)
+		   (insert "\n"))))
+	   (progn
+	     (insert "\n")
+	     (insert name)
+	     (insert "\n")))))
+   folders))
 
 (defun notmuch-folder-find-name ()
   (save-excursion
-- 
1.6.3.3



More information about the notmuch mailing list