notmuch.el: show some of citation even when hiding.
authorDavid Bremner <bremner@unb.ca>
Fri, 25 Dec 2009 20:09:08 +0000 (16:09 -0400)
committerCarl Worth <cworth@cworth.org>
Mon, 8 Feb 2010 22:24:34 +0000 (14:24 -0800)
- rename notmuch-show-citation-lines-min to n-s-c-l-prefix
- call forward-line with the appropriate parameter to adjust
  region to be hidden.
- change citation button text so that it makes (some) sense when citation is shown

Reviewed-by: Kan-Ru Chen <kanru@kanru.info>
notmuch.el

index d41e6daf5e5a1351a88966327986bd1e117d2271..478a69380698cf4e73ee3b484ee42dfb09ce6881 100644 (file)
@@ -95,13 +95,13 @@ move past the indentation when testing this pattern, (so that the
 pattern can still test against the entire line).")
 
 (defvar notmuch-show-signature-button-format
-  "[ %d-line hidden signature. Click/Enter to show ]"
+  "[ %d-line signature. Click/Enter to toggle visibility. ]"
   "String used to construct button text for hidden signatures
 
 Can use up to one integer format parameter, i.e. %d")
 
 (defvar notmuch-show-citation-button-format
-  "[ %d-line hidden citation. Click/Enter to show ]"
+  "[ %d more citation lines. Click/Enter to toggle visibility. ]"
   "String used to construct button text for hidden citations.
 
 Can use up to one integer format parameter, i.e. %d")
@@ -109,8 +109,11 @@ Can use up to one integer format parameter, i.e. %d")
 (defvar notmuch-show-signature-lines-max 12
   "Maximum length of signature that will be hidden by default.")
 
-(defvar notmuch-show-citation-lines-min 4
-  "Minimum length of citation that will be hidden.")
+(defvar notmuch-show-citation-lines-prefix 4
+  "Always show at least this many lines of a citation.
+
+If there is one more line, show that, otherwise collapse
+remaining lines into a button.")
 
 (defvar notmuch-command "notmuch"
   "Command to run the notmuch binary.")
@@ -683,13 +686,16 @@ 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)))
-       (if (>= cite-lines notmuch-show-citation-lines-min)
-           (notmuch-show-region-to-button
-            cite-start cite-end
-            "citation"
-            indent
-            (format notmuch-show-citation-button-format cite-lines)
-            ))))
+       (when (> cite-lines (1+ notmuch-show-citation-lines-prefix))
+         (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))
+          ))))
     (if (and (< (point) end)
             (re-search-forward signature-regexp end t))
        (let* ((sig-start (match-beginning 0))