GNU bug report logs -
#16204
eww does not respect shr-width customization
Previous Next
Reported by: Ivan Shmakov <ivan <at> siamics.net>
Date: Fri, 20 Dec 2013 17:02:02 UTC
Severity: wishlist
Tags: fixed
Fixed in version 25.1
Done: Lars Magne Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #37 received at 16204 <at> debbugs.gnu.org (full text, mbox):
August, 06 at 22:14 Ivan wrote:
> August, 06 at 19:34 Ivan wrote:
>
>> August, 05 at 19:31 Lars Magne Ingebrigtsen wrote:
>>
>>> Ivan Kanis <ivan <at> kanis.fr> writes:
>>>
>>>> I can commit it if everyone is OK with this.
>>>
>>> Yes, looks good to me. Please apply.
>>
>> Things have drastically changed. I can't even apply my patch by hand. I
>> am compiling the latest emacs-24 and let you know how it behaves.
Hi Lars,
I could not apply my patch because it was already applied. Duh.
Since I wrote the patch shr-width is used throughout the code. If it is
set to nil it will fail with comparison < <=.
I think the easiest way to work around this is to create a new variable
shr-internal-width that holds the internal value of the web page without
changing the user's customized shr-width.
I have attached the patch below.
I can think of three other ways to fix it:
1) create a function
2) create a macro
3) use (let ((shr-internal-width everywhere shr-width is used
They all seem overkill.
Let me know what you think.
Ivan
=== modified file 'lisp/net/eww.el'
--- lisp/net/eww.el 2014-06-27 00:48:34 +0000
+++ lisp/net/eww.el 2014-08-06 17:22:14 +0000
@@ -264,7 +264,6 @@
(setq eww-current-dom document)
(let ((inhibit-read-only t)
(after-change-functions nil)
- (shr-width nil)
(shr-target-id (url-target (url-generic-parse-url url)))
(shr-external-rendering-functions
'((title . eww-tag-title)
=== modified file 'lisp/net/shr.el'
--- lisp/net/shr.el 2014-04-14 22:01:54 +0000
+++ lisp/net/shr.el 2014-08-07 14:10:57 +0000
@@ -130,6 +130,7 @@
(defvar shr-start nil)
(defvar shr-indentation 0)
(defvar shr-inhibit-images nil)
+(defvar shr-internal-width (or shr-width (1- (window-width))))
(defvar shr-list-mode nil)
(defvar shr-content-cache nil)
(defvar shr-kinsoku-shorten nil)
@@ -197,7 +198,7 @@
(shr-state nil)
(shr-start nil)
(shr-base nil)
- (shr-width (or shr-width (1- (window-width)))))
+ (shr-internal-width (or shr-width (1- (window-width)))))
(shr-descend (shr-transform-dom dom))
(shr-remove-trailing-whitespace start (point))))
@@ -467,8 +468,8 @@
(insert elem)
(setq shr-state nil)
(let (found)
- (while (and (> (current-column) shr-width)
- (> shr-width 0)
+ (while (and (> (current-column) shr-internal-width)
+ (> shr-internal-width 0)
(progn
(setq found (shr-find-fill-point))
(not (eolp))))
@@ -482,10 +483,10 @@
(when (> shr-indentation 0)
(shr-indent))
(end-of-line))
- (if (<= (current-column) shr-width)
+ (if (<= (current-column) shr-internal-width)
(insert " ")
;; In case we couldn't get a valid break point (because of a
- ;; word that's longer than `shr-width'), just break anyway.
+ ;; word that's longer than `shr-internal-width'), just break anyway.
(insert "\n")
(when (> shr-indentation 0)
(shr-indent)))))
@@ -493,7 +494,7 @@
(delete-char -1)))))
(defun shr-find-fill-point ()
- (when (> (move-to-column shr-width) shr-width)
+ (when (> (move-to-column shr-internal-width) shr-internal-width)
(backward-char 1))
(let ((bp (point))
failed)
@@ -533,7 +534,7 @@
;; so we look for the second best position.
(while (and (progn
(forward-char 1)
- (<= (current-column) shr-width))
+ (<= (current-column) shr-internal-width))
(progn
(setq bp (point))
(shr-char-kinsoku-eol-p (following-char)))))
@@ -1336,7 +1337,7 @@
(defun shr-tag-hr (_cont)
(shr-ensure-newline)
- (insert (make-string shr-width shr-hr-line) "\n"))
+ (insert (make-string shr-internal-width shr-hr-line) "\n"))
(defun shr-tag-title (cont)
(shr-heading cont 'bold 'underline))
@@ -1629,7 +1630,7 @@
(setq style (nconc (list (cons 'color fgcolor)) style)))
(when style
(setq shr-stylesheet (append style shr-stylesheet)))
- (let ((shr-width width)
+ (let ((shr-internal-width width)
(shr-indentation 0))
(shr-descend (cons 'td cont)))
;; Delete padding at the bottom of the TDs.
@@ -1701,7 +1702,8 @@
(dotimes (i (length columns))
(aset widths i (max (truncate (* (aref columns i)
total-percentage
- (- shr-width (1+ (length columns)))))
+ (- shr-internal-width
+ (1+ (length columns)))))
10)))
widths))
--
No race can prosper till it learns that there is as much dignity in
tilling a field as in writing a poem.
-- Booker T. Washington
This bug report was last modified 10 years and 217 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.