]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.el
instead of trying to cause a redisplay, actually do a redisplay
[notmuch] / notmuch.el
index 93f3914fb7ded43b8913a6b7cfcae036e7778102..ef2a72a82e6f874a90a1836099db090817927624 100644 (file)
@@ -477,6 +477,15 @@ which this thread was originally shown."
        (if last
            (notmuch-show-archive-thread))))))
 
+(defun notmuch-toggle-invisible-action (cite-button)
+  (let ((invis-spec (button-get button 'invisibility-spec)))
+        (if (invisible-p invis-spec)
+            (remove-from-invisibility-spec invis-spec)
+          (add-to-invisibility-spec invis-spec)
+          ))
+  (force-window-update)
+  (redisplay t))
+
 (defun notmuch-show-markup-citations-region (beg end depth)
   (goto-char beg)
   (beginning-of-line)
@@ -488,16 +497,25 @@ which this thread was originally shown."
          (progn
            (while (looking-at citation)
              (forward-line))
-           (let ((overlay (make-overlay beg-sub (point))))
-             (overlay-put overlay 'invisible 'notmuch-show-citation)
+           (let ((overlay (make-overlay beg-sub (point)))
+                  (invis-spec (make-symbol "notmuch-citation-region")))
+              (add-to-invisibility-spec invis-spec)
+             (overlay-put overlay 'invisible invis-spec)
               (let (
                     (p (point))
-                    (cite-button-text (concat "[" (number-to-string (count-lines beg-sub (point)))
-                                              "-line citation. Press 'c' to show.]"))
+                    (cite-button-text
+                     (concat "["  (number-to-string (count-lines beg-sub (point)))
+                             "-line citation.]"))
                     )
                 (goto-char (- beg-sub 1))
                 (insert (concat "\n" indent))
-                (insert-button cite-button-text)
+                (let ((cite-button (insert-button cite-button-text)))
+                  (button-put cite-button 'invisibility-spec invis-spec)
+                  (button-put cite-button 'action 'notmuch-toggle-invisible-action)
+                  (button-put cite-button 'help-echo
+                              "mouse-2, RET: Show citation")
+
+                  )
                 (insert "\n")
                 (goto-char (+ (length cite-button-text) p))
               ))))
@@ -506,14 +524,24 @@ which this thread was originally shown."
          (let ((sig-lines (- (count-lines beg-sub end) 1)))
            (if (<= sig-lines notmuch-show-signature-lines-max)
                (progn
-                 (overlay-put (make-overlay beg-sub end)
-                              'invisible 'notmuch-show-signature)
-                  (goto-char (- beg-sub 1))
-                  (insert (concat "\n" indent))
-                  (insert-button (concat "[" (number-to-string sig-lines)
-                                         "-line signature. Press 's' to show.]"))
-                  (insert "\n")
-                 (goto-char end)))))
+                  (let ((invis-spec (make-symbol "notmuch-signature-region")))
+                    (add-to-invisibility-spec invis-spec)
+                    (overlay-put (make-overlay beg-sub end)
+                                 'invisible invis-spec)
+                  
+                    (goto-char (- beg-sub 1))
+                    (insert (concat "\n" indent))
+                    (let ((sig-button (insert-button 
+                                       (concat "[" (number-to-string sig-lines)
+                                         "-line signature.]"))))
+                      (button-put sig-button 'invisibility-spec invis-spec)
+                      (button-put sig-button 'action
+                                  'notmuch-toggle-invisible-action)
+                      (button-put sig-button 'help-echo
+                                  "mouse-2, RET: Show signature")
+                      )
+                    (insert "\n")
+                    (goto-char end))))))
       (forward-line))))
 
 (defun notmuch-show-markup-part (beg end depth)
@@ -566,9 +594,19 @@ which this thread was originally shown."
       (re-search-forward notmuch-show-header-end-regexp)
       (beginning-of-line)
       (let ((end (point-marker)))
+        (goto-char beg)
+        (forward-line)
+        (while (looking-at "[A-Za-z][-A-Za-z0-9]*:")
+          (beginning-of-line)
+          (overlay-put (make-overlay (point) (re-search-forward ":"))
+                       'face 'bold)
+          (forward-line)
+          )
        (indent-rigidly beg end depth)
        (overlay-put (make-overlay beg-hidden end)
                     'invisible 'notmuch-show-header)
+        (goto-char end)
+        (insert "\n")
        (set-marker beg nil)
        (set-marker beg-hidden nil)
        (set-marker end nil)