make headers locally expandable/collapsable
authorAlexander Botero-Lowry <alex.boterolowry@gmail.com>
Tue, 24 Nov 2009 06:25:33 +0000 (22:25 -0800)
committerAlexander Botero-Lowry <alexbl@fortitudo.(none)>
Tue, 24 Nov 2009 18:37:40 +0000 (10:37 -0800)
This is the same as with citations and signatures.
I used an ellipsis here for the invisible region, which
I think make it more obvious that there are extra headers.
MH-e used this for extra long To/CC headers.

notmuch.el

index fa6e7de4068a2598eb9997efaa1776a0c45a8f7a..8aee2864047ef455ff3e7eb1e83693ee9e557829 100644 (file)
@@ -605,7 +605,8 @@ which this thread was originally shown."
     (end-of-line)
     ; Inverse video for subject
     (overlay-put (make-overlay beg (point)) 'face '(:inverse-video t))
-    (forward-line 2)
+    (forward-line 1)
+    (end-of-line)
     (let ((beg-hidden (point-marker)))
       (re-search-forward notmuch-show-header-end-regexp)
       (beginning-of-line)
@@ -619,8 +620,19 @@ which this thread was originally shown."
           (forward-line)
           )
        (indent-rigidly beg end depth)
-       (overlay-put (make-overlay beg-hidden end)
-                    'invisible 'notmuch-show-header)
+        (let ((invis-spec (make-symbol "notmuch-show-header")))
+          (add-to-invisibility-spec (cons invis-spec t))
+          (overlay-put (make-overlay beg-hidden end)
+                       'invisible invis-spec)
+          (goto-char beg)
+          (forward-line)
+          (let ((header-button (make-button (line-beginning-position) (line-end-position))))
+            (button-put header-button 'invisibility-spec (cons invis-spec t))
+            (button-put header-button 'action 'notmuch-toggle-invisible-action)
+            (button-put header-button 'follow-link t)
+            (button-put header-button 'help-echo
+                        "mouse-1, RET: Show headers")
+          ))
         (goto-char end)
         (insert "\n")
        (set-marker beg nil)