GNU bug report logs - #47705
[PATCH] EWW: Customize display of images

Previous Next

Package: emacs;

Reported by: Ralph Schleicher <rs <at> ralph-schleicher.de>

Date: Sun, 11 Apr 2021 10:16:01 UTC

Severity: normal

Tags: fixed, patch

Fixed in version 28.1

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

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Ralph Schleicher <rs <at> ralph-schleicher.de>
To: 47705 <at> debbugs.gnu.org
Subject: bug#47705: [PATCH] EWW: Customize display of images
Date: Sun, 11 Apr 2021 12:15:37 +0200
[Message part 1 (text/plain, inline)]
EWW already supports displaying web pages with ALT texts instead of
images but this feature is not visible to the user.  Additionally,
images or ALT texts are always displayed on a line by itself.  This
may waste a lot of vertical space, e.g. when displaying the Common
Lisp HyperSpec.  The attached patch fixes these issues.

[0001-EWW-Customize-display-of-images.patch (text/x-diff, inline)]
From 8105b1db4328f212608998bf71187ba196e2205b Mon Sep 17 00:00:00 2001
From: Ralph Schleicher <rs <at> ralph-schleicher.de>
Date: Sat, 10 Apr 2021 23:08:27 +0200
Subject: [PATCH] EWW: Customize display of images

* lisp/net/eww.el (eww-toggle-images): New function.
(eww-mode-map): Add key binding and menu entry.
* lisp/net/shr.el (shr-inhibit-images): Make it customizable.
(shr-image-newline): New customization variable.
(shr-tag-img, shr-insert): Use shr-image-newline.
* doc/misc/eww.texi (Basics): Document eww-toggle-images.
Fix index entries for shr-use-fonts and shr-use-colors.
(Advanced): Document shr-inhibit-images and shr-image-newline.
---
 doc/misc/eww.texi | 22 +++++++++++++++++++---
 lisp/net/eww.el   | 10 ++++++++++
 lisp/net/shr.el   | 15 +++++++++++----
 3 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index 6e82a97030..0ec3b4bf6e 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -124,17 +124,25 @@ Basics
 only display this part.  This usually gets rid of menus and the like.
 
 @findex eww-toggle-fonts
-@findex shr-use-fonts
+@vindex shr-use-fonts
 @kindex F
   The @kbd{F} command (@code{eww-toggle-fonts}) toggles whether to use
 variable-pitch fonts or not.  This sets the @code{shr-use-fonts} variable.
 
 @findex eww-toggle-colors
-@findex shr-use-colors
-@kindex F
+@vindex shr-use-colors
+@kindex M-C
   The @kbd{M-C} command (@code{eww-toggle-colors}) toggles whether to use
 HTML-specified colors or not.  This sets the @code{shr-use-colors} variable.
 
+@findex eww-toggle-images
+@vindex shr-inhibit-images
+@kindex M-I
+@cindex Image Display
+  The @kbd{M-I} command (@code{eww-toggle-images}, capital letter i)
+toggles whether to display images or not.  This sets the
+@code{shr-inhibit-images} variable.
+
 @findex eww-download
 @vindex eww-download-directory
 @kindex d
@@ -305,6 +313,14 @@ Advanced
 support required) then larger images are scaled down.  You can block
 specific images completely by customizing @code{shr-blocked-images}.
 
+@vindex shr-inhibit-images
+@vindex shr-image-newline
+  You can control image display by customizing
+@code{shr-inhibit-images}.  If this variable is nil, always display
+the ALT text of images.  Images or ALT texts are displayed on a
+separate line by default.  You can preserve the normal text flow by
+setting the variable @code{shr-image-newline} to nil.
+
 @vindex shr-color-visible-distance-min
 @vindex shr-color-visible-luminance-min
 @cindex Contrast
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 32fe857e65..eec3ec7ba8 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -987,6 +987,7 @@ eww-mode-map
     (define-key map "F" 'eww-toggle-fonts)
     (define-key map "D" 'eww-toggle-paragraph-direction)
     (define-key map [(meta C)] 'eww-toggle-colors)
+    (define-key map [(meta I)] 'eww-toggle-images)
 
     (define-key map "b" 'eww-add-bookmark)
     (define-key map "B" 'eww-list-bookmarks)
@@ -1015,6 +1016,7 @@ eww-mode-map
 	["List cookies" url-cookie-list t]
 	["Toggle fonts" eww-toggle-fonts t]
 	["Toggle colors" eww-toggle-colors t]
+	["Toggle images" eww-toggle-images t]
         ["Character Encoding" eww-set-character-encoding]
         ["Toggle Paragraph Direction" eww-toggle-paragraph-direction]))
     map))
@@ -1893,6 +1895,14 @@ eww-toggle-colors
 	     "off"))
   (eww-reload))
 
+(defun eww-toggle-images ()
+  "Toggle whether or not to display images."
+  (interactive nil eww-mode)
+  (setq shr-inhibit-images (not shr-inhibit-images))
+  (eww-reload)
+  (message "Images are now %s"
+           (if shr-inhibit-images "off" "on")))
+
 ;;; Bookmarks code
 
 (defvar eww-bookmarks nil)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index c122a19e90..4332a1ef15 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -183,8 +183,13 @@ shr-abbreviation
   "Face for <abbr> elements."
   :version "27.1")
 
-(defvar shr-inhibit-images nil
-  "If non-nil, inhibit loading images.")
+(defcustom shr-inhibit-images nil
+  "If non-nil, inhibit loading images."
+  :type 'boolean)
+
+(defcustom shr-image-newline t
+  "If non-nil, display images on a separate line."
+  :type 'boolean)
 
 (defvar shr-external-rendering-functions nil
   "Alist of tag/function pairs used to alter how shr renders certain tags.
@@ -664,7 +669,8 @@ shr--translate-insertion-chars
 
 (defun shr-insert (text)
   (when (and (not (bolp))
-	     (get-text-property (1- (point)) 'image-url))
+	     (get-text-property (1- (point)) 'image-url)
+             shr-image-newline)
     (insert "\n"))
   (cond
    ((eq shr-folding-mode 'none)
@@ -1654,7 +1660,8 @@ shr-tag-img
 	    (and dom
 		 (or (> (length (dom-attr dom 'src)) 0)
                      (> (length (dom-attr dom 'srcset)) 0))))
-    (when (> (current-column) 0)
+    (when (and (> (current-column) 0)
+               shr-image-newline)
       (insert "\n"))
     (let ((alt (dom-attr dom 'alt))
           (width (shr-string-number (dom-attr dom 'width)))
-- 
2.20.1

[Message part 3 (text/plain, inline)]
-- 
Ralph

This bug report was last modified 4 years and 34 days ago.

Previous Next


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