From 8105b1db4328f212608998bf71187ba196e2205b Mon Sep 17 00:00:00 2001 From: Ralph Schleicher 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 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