notmuch.el: Don't hide long signatures.
authorCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 23:42:12 +0000 (15:42 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 23:44:11 +0000 (15:44 -0800)
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

index 0599af5f0139b76846efa60b27eedabdfc0a269c..20436f83a5ca5a89f3b4c3e4cdee4f82a7af4bc5 100644 (file)
@@ -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    "\fmessage{")
 (defvar notmuch-show-message-end-regexp      "\fmessage}")
 (defvar notmuch-show-header-begin-regexp     "\fheader{")
@@ -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)