Subject: bug#77961: 31.0.50; Rendering HTML email is very slow since commit #eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5

From: Ihor Radchenko <[email-masked]>
Date: Wed, 23 Apr 2025 15:44:03 +0000

Eli Zaretskii <[email-masked]> writes:

>>    BEWARE: Most uses of this macro introduce bugs.
>> 
>> is much too mild in my opinion.  AFAICT the first two calls in shr.el
>> could be avoided by using 'buffer-text-pixel-size'.  The one in
>> 'shr-render-td-1' looks worse - since it calls 'shr-pixel-buffer-width'
>> it nests one 'save-window-excursion' call into another which is simply
>> evil.
>
> Thanks.  Patches welcome to avoid using save-window-excursion in
> shr.el.

It is difficult until there is a clear picture why

(save-window-excursion
          ;; Avoid errors if the selected window is a dedicated one,
          ;; and they just want to insert a document into it.
          (set-window-dedicated-p nil nil)
	  (set-window-buffer nil (current-buffer))
	  (car (window-text-pixel-size nil (line-beginning-position) (point))))

dance is even necessary.
For example, `string-pixel-width' somehow does not need it.

-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>