GNU bug report logs - #50383
28.0.50; [PATCH] Feature suggestion, gnus-article-toggle-fonts to toggle fonts for HTML articles

Previous Next

Package: emacs;

Reported by: Alex Bochannek <alex <at> bochannek.com>

Date: Sat, 4 Sep 2021 20:55:01 UTC

Severity: normal

Tags: patch

Found in version 28.0.50

Fixed in version 28.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 50383 in the body.
You can then email your comments to 50383 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Sat, 04 Sep 2021 20:55:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Alex Bochannek <alex <at> bochannek.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 04 Sep 2021 20:55:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Alex Bochannek <alex <at> bochannek.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.0.50; [PATCH] Feature suggestion, gnus-article-toggle-fonts to
 toggle fonts for HTML articles
Date: Sat, 04 Sep 2021 13:54:16 -0700
[Message part 1 (text/plain, inline)]
Hello!

A while back I turned off `shr-use-fonts' for my HTML email but found
that occasionally proportional fonts are useful when reading my
messages.

I am proposing the below `gnus-article-toggle-fonts' function with a
keybinding of `W D F'.

	New Gnus article washing option to toggle HTML fonts

	* lisp/gnus/gnus-sum.el (gnus-summary-wash-display-map): 
	(gnus-summary-make-menu-bar): Add mode mapping and menu item for
	article HTML font toggle.

	* lisp/gnus/gnus-art.el (gnus-article-toggle-fonts): Toggle
	shr-use-fonts and redisplay message.

	* doc/misc/gnus.texi (Article Washing): Document new HTML font
	toggle function.
[Message part 2 (text/x-patch, inline)]
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 5f3fba00df..c8aec4eea1 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -9374,6 +9374,12 @@ Article Washing
 
 @end table
 
+@item W D F
+@kindex W D F @r{(Summary)}
+@findex gnus-article-toggle-fonts
+Toggle proportional fonts for @acronym{HTML} articles.  This temporarily
+changes the @code{shr-use-fonts} variable in the current buffer.
+
 @item W b
 @kindex W b @r{(Summary)}
 @findex gnus-article-add-buttons
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 3c1403e155..7f48191085 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2243,6 +2243,19 @@ gnus-article-show-images
 	    (funcall function (get-text-property start 'image-url)
 		     start end)))))))
 
+(defun gnus-article-toggle-fonts ()
+  "Toggle the use of proportional fonts for HTML articles."
+  (interactive nil gnus-article-mode gnus-summary-mode)
+  (gnus-with-article-buffer
+    (if (eq mm-text-html-renderer 'shr)
+        (progn
+          (if (not (local-variable-p 'gnus-article-shr-use-fonts))
+              (setq-local gnus-article-shr-use-fonts shr-use-fonts))
+          (setq-local gnus-article-shr-use-fonts
+                      (not gnus-article-shr-use-fonts))
+          (let ((shr-use-fonts gnus-article-shr-use-fonts))
+            (gnus-summary-show-article))))))
+
 (defun gnus-article-treat-fold-newsgroups ()
   "Fold the Newsgroups and Followup-To message headers."
   (interactive nil gnus-article-mode gnus-summary-mode)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 856e95c0ba..c28e38e315 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -2252,6 +2252,7 @@ gnus-summary-mode-map
   "s" gnus-treat-smiley
   "D" gnus-article-remove-images
   "W" gnus-article-show-images
+  "F" gnus-article-toggle-fonts
   "f" gnus-treat-from-picon
   "m" gnus-treat-mail-picon
   "n" gnus-treat-newsgroups-picon
@@ -2561,6 +2562,7 @@ gnus-summary-make-menu-bar
 	      ["Unfold headers" gnus-article-treat-unfold-headers t]
 	      ["Fold newsgroups" gnus-article-treat-fold-newsgroups t]
 	      ["Html" gnus-article-wash-html t]
+	      ["Toggle HTML fonts" gnus-article-toggle-fonts t]
 	      ["Unsplit URLs" gnus-article-unsplit-urls t]
 	      ["Verify X-PGP-Sig" gnus-article-verify-x-pgp-sig t]
 	      ["Decode HZ" gnus-article-decode-HZ t]
[Message part 3 (text/plain, inline)]
-- 
Alex.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Sun, 05 Sep 2021 01:20:01 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Alex Bochannek <alex <at> bochannek.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: 28.0.50; [PATCH] Feature suggestion, gnus-article-toggle-fonts
 to toggle fonts for HTML articles
Date: Sat, 04 Sep 2021 18:18:25 -0700
[Message part 1 (text/plain, inline)]
Alex Bochannek <alex <at> bochannek.com> writes:

> Hello!
>
> A while back I turned off `shr-use-fonts' for my HTML email but found
> that occasionally proportional fonts are useful when reading my
> messages.
>
> I am proposing the below `gnus-article-toggle-fonts' function with a
> keybinding of `W D F'.

The patch did not keep the fonts toggled when selecting the next message
or reloading the current one. I am proposing the below change. I am not
sure how you feel about buffer-local Gnus variables in `mm-decode.el',
so please let me know if an alternative approach would be better.

Thanks!
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 82d1de25f3..5c5896446e 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1843,6 +1843,9 @@ mm-shr
 				      (buffer-string))))))
 	(shr-inhibit-images mm-html-inhibit-images)
 	(shr-blocked-images mm-html-blocked-images)
+	(shr-use-fonts (if (local-variable-p 'gnus-article-shr-use-fonts)
+                           gnus-article-shr-use-fonts
+                         shr-use-fonts))
 	charset coding char document)
     (mm-with-part (or handle (setq handle (mm-dissect-buffer t)))
       (setq case-fold-search t)
[Message part 3 (text/plain, inline)]
-- 
Alex.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Sun, 05 Sep 2021 10:07:02 GMT) Full text and rfc822 format available.

Message #11 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Alex Bochannek <alex <at> bochannek.com>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Sun, 05 Sep 2021 12:06:19 +0200
Alex Bochannek <alex <at> bochannek.com> writes:

> I am proposing the below `gnus-article-toggle-fonts' function with a
> keybinding of `W D F'.

Sounds good to me.


[...]

> +          (setq-local gnus-article-shr-use-fonts
> +                      (not gnus-article-shr-use-fonts))

[...]

> The patch did not keep the fonts toggled when selecting the next message
> or reloading the current one. I am proposing the below change. I am not
> sure how you feel about buffer-local Gnus variables in `mm-decode.el',
> so please let me know if an alternative approach would be better.

Yeah, it would be best to avoid doing that.  How about changing the
patch to have a buffer-local `shr-use-fonts' in the Gnus article buffer
and use that instead?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Mon, 06 Sep 2021 05:23:01 GMT) Full text and rfc822 format available.

Message #14 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Alex Bochannek <alex <at> bochannek.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Sun, 05 Sep 2021 22:22:35 -0700
[Message part 1 (text/plain, inline)]
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> Alex Bochannek <alex <at> bochannek.com> writes:
>
>> I am proposing the below `gnus-article-toggle-fonts' function with a
>> keybinding of `W D F'.
>
> Sounds good to me.
>
>
> [...]
>
>> +          (setq-local gnus-article-shr-use-fonts
>> +                      (not gnus-article-shr-use-fonts))
>
> [...]
>
>> The patch did not keep the fonts toggled when selecting the next message
>> or reloading the current one. I am proposing the below change. I am not
>> sure how you feel about buffer-local Gnus variables in `mm-decode.el',
>> so please let me know if an alternative approach would be better.
>
> Yeah, it would be best to avoid doing that.  How about changing the
> patch to have a buffer-local `shr-use-fonts' in the Gnus article buffer
> and use that instead?

Just like this then?
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 3c1403e155..05d0be8ca2 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2243,6 +2243,15 @@ gnus-article-show-images
 	    (funcall function (get-text-property start 'image-url)
 		     start end)))))))
 
+(defun gnus-article-toggle-fonts ()
+  "Toggle the use of proportional fonts for HTML articles."
+  (interactive nil gnus-article-mode gnus-summary-mode)
+  (gnus-with-article-buffer
+    (if (eq mm-text-html-renderer 'shr)
+        (progn
+          (setq-local shr-use-fonts (not shr-use-fonts))
+          (gnus-summary-show-article)))))
+
 (defun gnus-article-treat-fold-newsgroups ()
   "Fold the Newsgroups and Followup-To message headers."
   (interactive nil gnus-article-mode gnus-summary-mode)
@@ -4494,6 +4503,8 @@ gnus-article-mode
   (setq-local nobreak-char-display nil)
   ;; Enable `gnus-article-remove-images' to delete images shr.el renders.
   (setq-local shr-put-image-function #'gnus-shr-put-image)
+  ;; Shadow global shr-use-fonts to support font toggling.
+  (setq-local shr-use-fonts shr-use-fonts)
   (unless gnus-article-show-cursor
     (setq cursor-in-non-selected-windows nil))
   (gnus-set-default-directory)
[Message part 3 (text/plain, inline)]
-- 
Alex.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Mon, 06 Sep 2021 08:36:02 GMT) Full text and rfc822 format available.

Message #17 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Alex Bochannek <alex <at> bochannek.com>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Mon, 06 Sep 2021 10:35:05 +0200
Alex Bochannek <alex <at> bochannek.com> writes:

> Just like this then?

Yup, if that does indeed work.  :-)

> +  ;; Shadow global shr-use-fonts to support font toggling.
> +  (setq-local shr-use-fonts shr-use-fonts)

But perhaps this should be set only if the user uses this command.  Can
you respin the entire patch and we'll get it applied...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Mon, 06 Sep 2021 22:42:02 GMT) Full text and rfc822 format available.

Message #20 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Alex Bochannek <alex <at> bochannek.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Mon, 06 Sep 2021 15:41:25 -0700
[Message part 1 (text/plain, inline)]
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> Alex Bochannek <alex <at> bochannek.com> writes:
>
>> Just like this then?
>
> Yup, if that does indeed work.  :-)
>
>> +  ;; Shadow global shr-use-fonts to support font toggling.
>> +  (setq-local shr-use-fonts shr-use-fonts)
>
> But perhaps this should be set only if the user uses this command.  Can
> you respin the entire patch and we'll get it applied...

I thought about it some more and I don't think it's necessary at all to
initialize the local variable, because it will happen automatically the
first time the command is used. The below should be enough. I tested it
a bit and it works for me.

	New Gnus article washing function to toggle HTML fonts

	* lisp/gnus/gnus-sum.el (gnus-summary-wash-display-map),
	(gnus-summary-make-menu-bar): Add mode mapping and menu item for
	article HTML font toggle.

	* lisp/gnus/gnus-art.el (gnus-article-toggle-fonts): Toggle
	shr-use-fonts and redisplay message.

	* doc/misc/gnus.texi (Article Washing): Document new HTML font
	toggle function.

Thanks!
[Message part 2 (text/x-patch, inline)]
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 5f3fba00df..c8aec4eea1 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -9374,6 +9374,12 @@ Article Washing
 
 @end table
 
+@item W D F
+@kindex W D F @r{(Summary)}
+@findex gnus-article-toggle-fonts
+Toggle proportional fonts for @acronym{HTML} articles.  This temporarily
+changes the @code{shr-use-fonts} variable in the current buffer.
+
 @item W b
 @kindex W b @r{(Summary)}
 @findex gnus-article-add-buttons
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 3c1403e155..a962b06372 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2243,6 +2243,15 @@ gnus-article-show-images
 	    (funcall function (get-text-property start 'image-url)
 		     start end)))))))
 
+(defun gnus-article-toggle-fonts ()
+  "Toggle the use of proportional fonts for HTML articles."
+  (interactive nil gnus-article-mode gnus-summary-mode)
+  (gnus-with-article-buffer
+    (if (eq mm-text-html-renderer 'shr)
+        (progn
+          (setq-local shr-use-fonts (not shr-use-fonts))
+          (gnus-summary-show-article)))))
+
 (defun gnus-article-treat-fold-newsgroups ()
   "Fold the Newsgroups and Followup-To message headers."
   (interactive nil gnus-article-mode gnus-summary-mode)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 856e95c0ba..c28e38e315 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -2252,6 +2252,7 @@ gnus-summary-mode-map
   "s" gnus-treat-smiley
   "D" gnus-article-remove-images
   "W" gnus-article-show-images
+  "F" gnus-article-toggle-fonts
   "f" gnus-treat-from-picon
   "m" gnus-treat-mail-picon
   "n" gnus-treat-newsgroups-picon
@@ -2561,6 +2562,7 @@ gnus-summary-make-menu-bar
 	      ["Unfold headers" gnus-article-treat-unfold-headers t]
 	      ["Fold newsgroups" gnus-article-treat-fold-newsgroups t]
 	      ["Html" gnus-article-wash-html t]
+	      ["Toggle HTML fonts" gnus-article-toggle-fonts t]
 	      ["Unsplit URLs" gnus-article-unsplit-urls t]
 	      ["Verify X-PGP-Sig" gnus-article-verify-x-pgp-sig t]
 	      ["Decode HZ" gnus-article-decode-HZ t]
[Message part 3 (text/plain, inline)]
-- 
Alex.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Tue, 07 Sep 2021 15:14:02 GMT) Full text and rfc822 format available.

Message #23 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Alex Bochannek <alex <at> bochannek.com>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Tue, 07 Sep 2021 17:13:35 +0200
Alex Bochannek <alex <at> bochannek.com> writes:

> I thought about it some more and I don't think it's necessary at all to
> initialize the local variable, because it will happen automatically the
> first time the command is used. The below should be enough. I tested it
> a bit and it works for me.

Thanks, looks good to me, so I've pushed it to Emacs 28 (with a trivial
change -- I morphed the `(if ..  (progn' into a `when').

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug marked as fixed in version 28.1, send any further explanations to 50383 <at> debbugs.gnu.org and Alex Bochannek <alex <at> bochannek.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Tue, 07 Sep 2021 15:14:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50383; Package emacs. (Tue, 07 Sep 2021 17:17:01 GMT) Full text and rfc822 format available.

Message #28 received at 50383 <at> debbugs.gnu.org (full text, mbox):

From: Alex Bochannek <alex <at> bochannek.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 50383 <at> debbugs.gnu.org
Subject: Re: bug#50383: 28.0.50; [PATCH] Feature suggestion,
 gnus-article-toggle-fonts to toggle fonts for HTML articles
Date: Tue, 07 Sep 2021 10:15:57 -0700
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> Alex Bochannek <alex <at> bochannek.com> writes:
>
>> I thought about it some more and I don't think it's necessary at all to
>> initialize the local variable, because it will happen automatically the
>> first time the command is used. The below should be enough. I tested it
>> a bit and it works for me.
>
> Thanks, looks good to me, so I've pushed it to Emacs 28 (with a trivial
> change -- I morphed the `(if ..  (progn' into a `when').

Thanks! I keep forgetting that the `when' macro has an implicit `progn',
which also reads nicer.

-- 
Alex.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 06 Oct 2021 11:24:12 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 201 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.