[PATCH 1/2] notmuch.el: Allow citation suffixes to be shown as well as prefixes.

Subject: [PATCH 1/2] notmuch.el: Allow citation suffixes to be shown as well as prefixes.

Date: Tue, 6 Apr 2010 09:39:19 +0200

To: notmuch@notmuchmail.org

Cc:

From: Sebastian Spaeth


From: David Edmondson <dme@dme.org>

In many conversations the last few lines of a citation are more
interesting than the first few lines, hence allow those to be shown if
desired.

Modify the face used for the citation button to distinguish it from
the surrounding citation.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
---
 emacs/notmuch-show.el |   36 +++++++++++++++++++++++++-----------
 1 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index cc1f905..f172f6b 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -111,10 +111,20 @@ Can use up to one integer format parameter, i.e. %d")
   "Maximum length of signature that will be hidden by default.")
 
 (defvar notmuch-show-citation-lines-prefix 4
-  "Always show at least this many lines of a citation.
+  "Always show at least this many lines at the start of a citation.
 
-If there is one more line, show that, otherwise collapse
-remaining lines into a button.")
+If there is one more line than the sum of
+`notmuch-show-citation-lines-prefix' and
+`notmuch-show-citation-lines-suffix', show that, otherwise
+collapse remaining lines into a button.")
+
+(defvar notmuch-show-citation-lines-suffix 0
+  "Always show at least this many lines at the end of a citation.
+
+If there is one more line than the sum of
+`notmuch-show-citation-lines-prefix' and
+`notmuch-show-citation-lines-suffix', show that, otherwise
+collapse remaining lines into a button.")
 
 (defvar notmuch-show-message-begin-regexp    "\fmessage{")
 (defvar notmuch-show-message-end-regexp      "\fmessage}")
@@ -679,16 +689,20 @@ is what to put on the button."
       (let* ((cite-start (match-beginning 0))
 	     (cite-end 	(match-end 0))
 	     (cite-lines (count-lines cite-start cite-end)))
-	(when (> cite-lines (1+ notmuch-show-citation-lines-prefix))
+	(overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text-face)
+	(when (> cite-lines (1+ (+ notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix)))
 	  (goto-char cite-start)
 	  (forward-line notmuch-show-citation-lines-prefix)
-	  (notmuch-show-region-to-button
-	   (point) cite-end
-	   "citation"
-	   indent
-	   (format notmuch-show-citation-button-format
-		   (- cite-lines notmuch-show-citation-lines-prefix))
-	   ))))
+	  (let ((hidden-start (point)))
+	    (goto-char cite-end)
+	    (forward-line (- notmuch-show-citation-lines-suffix))
+	    (notmuch-show-region-to-button
+	     hidden-start (point)
+	     "citation"
+	     indent
+	     (format notmuch-show-citation-button-format
+		     (- cite-lines notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix))
+	     )))))
     (if (and (< (point) end)
 	     (re-search-forward signature-regexp end t))
 	(let* ((sig-start (match-beginning 0))
-- 
1.6.3.3


Thread: