]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-show.el
test: add another known broken test for uncaught DatabaseModifiedError
[notmuch] / emacs / notmuch-show.el
index 107ce1b8bd2716a815216d50e649cdd4cac3b9dc..19b517539255005928f290311272c1cf4bcb4c56 100644 (file)
@@ -104,7 +104,7 @@ notmuch-show functions such as
 
 Finally, if this variable is set to nil, no header is
 displayed."
-  :type '(choice (const :tag "No header" ni)
+  :type '(choice (const :tag "No header" nil)
                  (const :tag "Subject" t)
                  (string :tag "Format")
                 (function :tag "Function"))
@@ -644,8 +644,24 @@ message at DEPTH in the current thread."
                (when show
                  (button-put button :notmuch-lazy-part nil)
                  (notmuch-show-lazy-part lazy-part button))
-             ;; else there must be an overlay.
-             (overlay-put overlay 'invisible (not show))
+             (let* ((part (plist-get properties :notmuch-part))
+                    (undisplayer (plist-get part :undisplayer))
+                    (mime-type (plist-get part :computed-type))
+                    (redisplay-data (button-get button
+                                                :notmuch-redisplay-data))
+                    (imagep (string-match "^image/" mime-type)))
+               (cond
+                ((and imagep (not show) undisplayer)
+                 ;; call undisplayer thunk created by gnus.
+                 (funcall undisplayer)
+                 ;; there is an extra newline left
+                 (delete-region
+                  (+ 1 (button-end button))
+                  (+ 2 (button-end button))))
+                ((and imagep show redisplay-data)
+                 (notmuch-show-lazy-part redisplay-data button))
+                (t
+                 (overlay-put overlay 'invisible (not show)))))
              t)))))))
 
 ;;; Part content ID handling
@@ -848,7 +864,7 @@ will return nil if the CID is unknown or cannot be retrieved."
                    (unless (icalendar-import-buffer file t)
                      (error "Icalendar import error. %s"
                             "See *icalendar-errors* for more information"))
-                   (set-buffer (get-file-buffer file))
+                   (set-buffer (find-buffer-visiting file))
                    (setq result (buffer-substring (point-min) (point-max)))
                    (set-buffer-modified-p nil)
                    (kill-buffer (current-buffer)))
@@ -1109,14 +1125,18 @@ is t, hide the part initially and show the button."
                             (and deep button)
                             (and high button)
                             (and long button))))
-        (content-beg (point)))
+        (content-beg (point))
+        (part-data (list msg part mime-type nth depth button)))
     ;; Store the computed mime-type for later use (e.g. by attachment handlers).
     (plist-put part :computed-type mime-type)
-    (if show-part
-       (notmuch-show-insert-bodypart-internal msg part mime-type nth depth button)
+    (cond
+     (show-part
+      (apply #'notmuch-show-insert-bodypart-internal part-data)
+      (when (and button (string-match "^image/" mime-type))
+       (button-put button :notmuch-redisplay-data part-data)))
+     (t
       (when button
-       (button-put button :notmuch-lazy-part
-                   (list msg part mime-type nth depth button))))
+       (button-put button :notmuch-lazy-part part-data))))
     ;; Some of the body part handlers leave point somewhere up in the
     ;; part, so we make sure that we're down at the end.
     (goto-char (point-max))
@@ -1676,6 +1696,8 @@ All currently available key bindings:
   (setq notmuch-buffer-refresh-function #'notmuch-show-refresh-view)
   (setq buffer-read-only t)
   (setq truncate-lines t)
+  (when (boundp 'untrusted-content)
+    (setq untrusted-content t))
   (setq imenu-prev-index-position-function
        #'notmuch-show-imenu-prev-index-position-function)
   (setq imenu-extract-index-name-function
@@ -2487,10 +2509,12 @@ kill-ring."
 (defun notmuch-show-stash-mlarchive-link (&optional mla)
   "Copy an ML Archive URI for the current message to the kill-ring.
 
-This presumes that the message is available at the selected Mailing List Archive.
+This presumes that the message is available at the selected
+Mailing List Archive.
 
-If optional argument MLA is non-nil, use the provided key instead of prompting
-the user (see `notmuch-show-stash-mlarchive-link-alist')."
+If optional argument MLA is non-nil, use the provided key instead
+of prompting the user (see
+`notmuch-show-stash-mlarchive-link-alist')."
   (interactive)
   (let ((url (cdr (assoc
                   (or mla
@@ -2507,12 +2531,15 @@ the user (see `notmuch-show-stash-mlarchive-link-alist')."
        (concat url (notmuch-show-get-message-id t))))))
 
 (defun notmuch-show-stash-mlarchive-link-and-go (&optional mla)
-  "Copy an ML Archive URI for the current message to the kill-ring and visit it.
+  "Copy an ML Archive URI for the current message to the
+ kill-ring and visit it.
 
-This presumes that the message is available at the selected Mailing List Archive.
+This presumes that the message is available at the selected
+Mailing List Archive.
 
-If optional argument MLA is non-nil, use the provided key instead of prompting
-the user (see `notmuch-show-stash-mlarchive-link-alist')."
+If optional argument MLA is non-nil, use the provided key instead
+of prompting the user (see
+`notmuch-show-stash-mlarchive-link-alist')."
   (interactive)
   (notmuch-show-stash-mlarchive-link mla)
   (browse-url (current-kill 0 t)))
@@ -2661,7 +2688,9 @@ This function is used as a value for
 `imenu-prev-index-position-function'."
   (if (bobp)
       nil
-    (notmuch-show-previous-message)
+    (if (eobp)
+       (notmuch-show-move-to-message-top)
+      (notmuch-show-goto-message-previous))
     t))
 
 (defun notmuch-show-imenu-extract-index-name-function ()