Alex Murray <alex.mur...@canonical.com> writes: > Hi folks, > > I have noticed that inline image display doesn't work anymore in > emacs-29 / git master and have tracked it down to a change to the way > mm-inline-image inserts an image into the buffer. > > In > https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=d2186160a9e978960c0f96bc3b4fc65b5affc170 > mm-inline-image was changed to use insert-image instead of > put-image. This inserts the image into the buffer using a single space > as the string contents with a display property set as the image contents > so that the single space is not shown itself but instead the image is > shown in its place. > > I had thought the culprit then was the use of > notmuch-wash-elide-blank-lines within the default value of > notmuch-show-insert-text/plain-hook - assuming that since the line > containing the image is now just a single space, it then gets deleted > from the buffer and the image is never shown. However, even after > setting notmuch-show-insert-text/plain-hook to nil, images are still not > shown inline by notmuch. > > However, if I locally redefine mm-inline-image to use say a period "." > as the string argument to insert-image then the image appears as > expected. > > Any thoughts on what may be happening here and how best to resolve this? >
The problem seems to be the call to indent-rigidly in notmuch-show-lazy-part. The image is actually inserted OK, but then apparently deleted by indent-rigidly (probably because it looks like whitespace). I tried replacing indent-rigidly with a simplified version the and that leaves the image inserted, but unfortunately doesn't indent it properly. If you want to play with it, my half working patch is attached.
>From 484f78e11d7f520b76b30b7d92aec15ff71f215f Mon Sep 17 00:00:00 2001 From: David Bremner <da...@tethera.net> Date: Sat, 25 Feb 2023 09:12:57 -0400 Subject: [PATCH] WIP: replace use of indent-rigidly in notmuch-show-lazy --- emacs/notmuch-show.el | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 36cce619..522ba1fd 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -324,6 +324,25 @@ position of the message in the thread." ;;; Utilities +;; force all indentation to be spaces at BOL +;; Based on apply-on-rectangle, from rect.el +(defun notmuch--indent-rigidly (start end count) + (cond + ((zerop count) t) + ((< count 0) (indent-rigidly start end count)) + (t + (save-excursion + (let ((startpt (progn (goto-char start) (line-beginning-position))) + (endpt (progn (goto-char end) (line-end-position))) + (spaces (spaces-string count))) + (goto-char startpt) + (while + (progn + (insert spaces) + (cl-incf endpt count) + (and (zerop (forward-line 1)) (bolp) + (<= (point) endpt))))))))) + (defmacro with-current-notmuch-show-message (&rest body) "Evaluate body with current buffer set to the text of current message." `(save-excursion @@ -1024,7 +1043,7 @@ will return nil if the CID is unknown or cannot be retrieved." (narrow-to-region part-beg part-end) (delete-region part-beg part-end) (apply #'notmuch-show-insert-bodypart-internal part-args) - (indent-rigidly part-beg + (notmuch--indent-rigidly part-beg part-end (* notmuch-show-indent-messages-width depth))) (goto-char part-end) -- 2.39.1
_______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org