GNU bug report logs -
#50383
28.0.50; [PATCH] Feature suggestion, gnus-article-toggle-fonts to toggle fonts for HTML articles
Previous Next
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.
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):
[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):
[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):
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):
[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):
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):
[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):
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):
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.