From 97b5f8153399d57bb9db643e778b06e23387110c Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth@cworth.org>
Date: Wed, 4 Nov 2009 15:42:12 -0800
Subject: [PATCH] notmuch.el: Don't hide long signatures.

Chances are, a signature above a certain threshold isn't just a
signature, (for example, it could be an encrypted messages tacked onto
the end of the file, or could be any sort of PS.)

We add a new variable, notmuch-show-signature-lines-max that can be
used to configure the threshold, (set to 6 by default for now).
---
 notmuch.el | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 0599af5f..20436f83 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -46,6 +46,9 @@
   "Keymap for \"notmuch show\" buffers.")
 (fset 'notmuch-show-mode-map notmuch-show-mode-map)
 
+(defvar notmuch-show-signature-lines-max 6
+  "Maximum length of signature that will be hidden by default.")
+
 (defvar notmuch-show-message-begin-regexp    "message{")
 (defvar notmuch-show-message-end-regexp      "message}")
 (defvar notmuch-show-header-begin-regexp     "header{")
@@ -297,20 +300,24 @@ which this thread was originally shown."
       (if (looking-at ">")
 	  (progn
 	    (while (looking-at ">")
-	      (next-line))
+	      (forward-line))
 	    (let ((overlay (make-overlay beg-sub (point))))
 	      (overlay-put overlay 'invisible 'notmuch-show-citation)
 	      (overlay-put overlay 'before-string
 			   (concat "[" (number-to-string (count-lines beg-sub (point)))
-				   " quoted lines.]")))))
+				   " quoted lines.]\n")))))
       (if (looking-at "--[ ]?$")
-	  (let ((overlay (make-overlay beg-sub end)))
-	    (overlay-put overlay 'invisible 'notmuch-show-signature)
-	    (overlay-put overlay 'before-string
-			 (concat "[" (number-to-string (count-lines beg-sub end))
-				 "-line signature.]"))
-	    (goto-char end)))
-      (next-line))))
+	  (let ((sig-lines (count-lines beg-sub end)))
+	    (if (<= sig-lines notmuch-show-signature-lines-max)
+		(progn
+		  (overlay-put (make-overlay beg-sub (+ beg-sub 1))
+			       'before-string
+			       (concat "[" (number-to-string sig-lines)
+				       "-line signature.]"))
+		  (overlay-put (make-overlay (+ beg-sub 2) end)
+			       'invisible 'notmuch-show-signature)
+		  (goto-char end)))))
+      (forward-line))))
 
 (defun notmuch-show-markup-body ()
   (re-search-forward notmuch-show-body-begin-regexp)
-- 
2.45.2